junolym / classhelper Goto Github PK
View Code? Open in Web Editor NEW包含课堂签到、随堂测试功能的课堂助手。(express应用)
Home Page: https://classhelper.ml
包含课堂签到、随堂测试功能的课堂助手。(express应用)
Home Page: https://classhelper.ml
修改课程信息时,会删除全部学生名单再插入新的学生名单。
课程表有课程学生人数字段,使用触发器维护,使得修改课程信息时会频繁触发。
该课程学生人数字段使用范围大,不适合使用遍历课程-学生关系表得到。
考虑到修改课程信息是个低频功能,影响不大,记录待优化。
联想到可以在签到表和试卷表分别记录签到人数、答题人数,这样就不用联表查询了,待优化
@CleaverLi
新建课程没有填写学生人数选项。学生人数的数据来自导入的学生名单。
需要增加一个导入学生名单的功能,可以在线编辑,也可以excel导入。使用excel导入后应该显出出来,以便核对。dao/xlsx.js是一个使用js-xlsx处理excel的代码,可以借鉴
实现功能如下:
本任务里程碑:试卷成功加入系统,并可在列表中显示。
@zuozhuanz 实现试卷在数据库的存取接口
@ChenxRin 服务端代码,需要注意创建测验成功后用load的方式加载exam页,而不是redirect,这里不需要直接显示二维码。
@CleaverLi
@CleaverLi
@ChenxRin 注:课程信息包括了学生名单,而数据库接口是分开的,因此一个操作要多次访问数据库,取到所有数据后再一并返回。
/home/coursedetail?id={{course_id}}
从数据库读出某课程的课程信息,传入模板/home/addcourse
从表单读入课程信息,检查账号后添加课程/home/editcourse?id={{course_id}}
从表单读入课程信息,检查账号和课程后修改课程/home/deletecourse?id={{course_id}}
检查账号和课程后删除课程项目部署网址: https://classhelper.ml/ (测试用教师账号/密码:stsluy/luyong)
在线版本已配置自动更新,代码push到仓库后一分钟内可以看到更新后效果。(ctrl+f5彻底刷新)
开发全过程的详细任务发布到issues,不同类型贴上相应的label,open的document就是当前要做的事情。
任何问题在issue下直接讨论,开发过程中的讨论将成为宝贵的经验。
请自行抽空查看issues,不严格限定任务完成时间。
完成每个细分的任务后,在前面的复选框打钩。
初次迭代按内容分为为三个阶段。完成初次迭代即完成项目制品,多余的时间用于专注于优化的二次迭代。
目标:实现签到(不含统计、导出导入)
时间:2周 (第10、11周)
进度:40%
目标:随堂测试(不含统计、导出导入)
时间:2周(第12、13周)
进度:70%
目标:统计、导出导入。(前端)
进度:100%
【教师】在《控制面板(主页)》点击 ”发起签到“ , get请求 /createsignin
【服务端】收到请求后,生成签到id(暂定为8位16进制 假设为12345678),跳转页面到 /qrcode?id=12345678
,【前端】显示一个二维码,指向 /signin?id=12345678
注意:此处必须检验教师身份
【学生】扫描二维码,get请求 /signin?id=12345678
【服务端】收到请求后,设置cookie signin=12345678
,并跳转页面到 /signin
,签到页面 此处必须是跳转而不是返回页面
【学生】在签到页面输入《学号》《姓名》,post提交到 /signin
【服务端】根据cookie,提取出签到id,检查学号和姓名匹配且属于该课程后,保存签到。跳转到 /signinresult?success
《签到结果页面》。没有签到id,或者学号、姓名有问题,跳转到/signinresult?error=<why>
【服务端】收到get /signinresult的请求,从get信息提取是否error以及error的原因,将信息用来render页面。
@ChenxRin 实现 5个get
/createsignin
/qrcode?id=12345678
/signin?id=12345678
/signin
/signinresult
/signin
@zuozhuanz 提供以下功能所需的数据库接口,包括但不限于
@chentyu 两个页面
/qrcode?id=12345678
), 生成二维码,二维码内容为将当前页的url的qrcode
替换成signin
。生成二维码可用jquery.qrcode.js完成测验结果的统计图表。
数据获取 https://classhelper.ml/home/statistics?cid=6&eid=28
实例:
{"questions":[{"right":1,"wrong":0,"count":[1,0,0]},{"right":1,"wrong":0,"count":[0,1]}],"
answernum":1,"maxscore":100,"minscore":0,"avescore":100,"sumscore":100}
answernum交卷人数
maxscore最高分
minscore最低分
avescore平均分
sumscore总分,计算最平均分用,不需要显示出来
questions数组内每个元素为一道题的统计,不包括简答题。
right、wrong分别表示对和错的人数,count内存储各答案回答人数,其中选择题时ABCD对应0123,判断题True对应1,False对应0。
classhelper/routes/createsignin.js:13
)对于每个已创建的测验,点击“开始测验”,显示二维码。学生扫描二维码,显示试卷,试卷作答完毕,提交。
@CleverLove8 页面包括:
deleteexam?cid=..&eid=..
/home/showqrcode
,传入有sid时,保持原来的逻辑,作为签到,否则判断是否传入eid,是则作为测验,否则错误。测验跳转方式类似签到,实例:/qrcode#/e?k=key
,(签到是s,测验是e)get /exam
,处理和签到很类似。post /exam
,提交成功后跳转到 result
,参考签到成功的写法。get /home/deleteexam?cid=..&eid=..
@zuozhuanz
检查以上逻辑需要使用到的数据库操作接口是否已存在。
简要流程
点击某个测试,显示这个测试的提交情况,未来将包括统计的图表(完成率,平均分,多错题……)
目前仅需包括提交的列表,每个学生一行。行内包括学号、姓名、交卷时间、得分。
点击列表的某一行,显示这个学生的答卷情况。包括试题和他的答案。(扩展:标记出选择题和判断题的对或错,错的显示正确答案)
我继续完成exam-manager,完成改分和统计。
@zuozhuanz 增加接口
/home/submitlist.hbs
@ChenxRin
本部分后台没有需要处理的,都是简单的get,而结果由examManager提供,所以我写好了。
@zuozhuanz @ChenxRin 这些遗留的或者未来的问题你们挑着做。
@zuozhuanz 已完成
本文档不再更新,详细接口见./dao/out/index.html
本任务包括:
@zuozhuanz 提供数据库访问接口:
@ChenxRin 从数据库获取以上信息,以合适的顺序交给前端。
@ChenxRin @chentyu 协商确定前后端通信方式
已确定:后端将数据整理成JS object,传入render函数,前端使用handlebarjs的循环语句,列出条目。
@chentyu 完成上述3个页面的设计。选择一种实现SPA的方式。提供一种个人觉得很符合我们现有结构的方式:(此方式前端代码少,不需要引入框架,和模板兼容)
$('#content').html(result)
的方式填入空白处。【代码质量】
route里面的代码专注于后台交互和操作数据库,数据的检查,格式化等以模块形式独立出来
查缺补漏,不断优化
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.