# ProgrammingElf **Repository Path**: zerokirby/tcb-hackthon-ProgrammingElf ## Basic Information - **Project Name**: ProgrammingElf - **Description**: 腾讯云云开发校园布道师活动-云编程小精灵 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://cloud.tencent.com/developer/article/1609652 - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2020-04-02 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 编程小精灵 ProgrammingElf 传统的线上作业提交平台,只能简单的保存学生的答案,并不能对答案的正确性进行核对,尤其是针对像**编程**这种代码不唯一但运行结果唯一的科目。因此“**云编程小精灵**”是一个面向校园与课堂的云编程工具,主要适用于《C语言程序设计》和《数据结构》等科目的教学。支持教师在云编程小精灵中添加编程题目,学生可作答并即时得到运行结果与答案正误,并可自由进行编程练习。 ## 小程序码 ![小程序码](https://s1.ax1x.com/2020/04/06/G6MJPK.jpg) ## 设计思路 “云编程小精灵”基于**小程序**和**云开发**搭建。 小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验。 而云开发为开发者提供完整的原生云端支持和微信服务支持,弱化后端和运维概念,无需搭建服务器,使用平台提供的 API 进行核心业务开发,即可实现快速上线和迭代,同时这一能力,同开发者已经使用的云服务相互兼容,并不互斥。 “云编程小精灵”使用小程序中的页面作为前端,负责展示用户数据以及进行必要的交互;使用云开发作为后端,其中云函数负责发送HTTP请求、获取用户ID等,而云数据库负责保存本小程序应用到的各种数据。 ## 技术架构 ### 前端 基于小程序中的**pages**,目前使用了8个页面。 - about:介绍本人的信息 - detail:基于exercise页面,增加了保存答案与核对答案的功能,如果是进入已完成的题目还能显示之前提交的代码和运行结果 - exercise:给学生提供自由练习编程的功能 - home:小程序主界面,显示尚未完成的编程作业,如果用户尚未设置个人信息会给予提示 - list:显示已完成的编程作业 - login:提示用户需要授权才能使用 - me:展示用户微信个人信息,并提供其他功能的入口 - user:修改用户个人信息 ### 后端 基于云开发,目前使用了2个**云函数**与**云数据库**。 #### 云函数 - glot:调用glot API对学生的代码进行运行,并将结果返回给小程序 - login:获取用户的openid #### 云数据库 - users:保存用户基本信息 - answers:保存学生的完成情况 - questions:保存教师布置的编程题 ## 截图 ![用户登录](https://s1.ax1x.com/2020/04/06/G69i7j.jpg) ![待完成](https://s1.ax1x.com/2020/04/06/G69pjS.jpg) ![已完成](https://s1.ax1x.com/2020/04/06/G69Cng.jpg) ![做作业](https://s1.ax1x.com/2020/04/06/G69kAs.jpg) ## 如何使用 因为极限编程的开发时间所限,因此本小程序目前只完成了学生端,教师端功能后期有待完善,只能使用内置的题库,所以需要使用**提供的个人信息**进行题库的读取与写入。 点击下方Tab栏中的”**我**“,然后**点击上方的用户头像**进行个人信息的设置,否则会出现找不到编程题的情况。其中**最后四列**必须如下设置,可参考结果展示用的”**编辑个人信息**“: - 学校:腾讯云学院 - 学院:犀牛鸟学院 - 班级:校园技术布道师养成1班 _**或者填写**_ :校园技术布道师养成2班 - 课程:极限编程 ## 更新日志 见[CHANGELOG](CHANGELOG.md) ## 部署教程 见[DEPLOYMENT](DEPLOYMENT.md) ## 行为准则 见[CODE_OF_CONDUCT](CODE_OF_CONDUCT.md) ## 如何贡献 见[CONTRIBUTING](CONTRIBUTING.md) ## 许可证 [Apache-2.0](LICENSE)