上级部门组织一次考试,需要写一个考试系统。今天考试已经完了,考试数据也已经导出来了,现在总结一下这个考试系统开发的关键点。
功能分析
前台
前台需要提供用户登录、随机抽题、用户答题、提交试卷自动统分的基本功能。难点:假设用户考试过程突然刷新浏览器或者关闭了浏览器,再次登陆应该保存用户之前已经作答的题目;倒计时设置,到了时间自动交卷。用户交卷后,清除缓存数据中所有作答记录(否则下一个用户同一台电脑同一个浏览器登录会发现自己还没做题但是题目大部分都已经做了)。
后台
后台需要提供统计考试概况、导出考试数据(Excel格式)、关闭或则开启考试、设置某个用户单独再次考试、导入所有用户信息的功能。
总体分析:难点在前台,也即是前端。数据库包括后台的程序设计其实都并不难。
实际操作中,系统的模板基本上用的是phpems的,程序包括数据库自己设计实现。前端的难点phpems其实基本处理了(需要修改才能符合自己的需要),剩下的问题就是设计数据库,编写程序。
数据库设计
系统关键的2张表:用户表和题库表。
题库表存储所有的题目数据。用户表的字段有id,name,pwd,dep(单位),atime(开始答题时间),stime(提交试卷时间),questions(抽中题目编号),answers(用户提交的答案),score(成绩),is_submit(是否答题)。
也就是所有的题目都存在题库表中,用户登录时从题库表中随机抽取固定数量的题目,抽中的题目编号,用户考试过程中所选的选项分别存储在字段questions、answers中。提交时,计算成绩并且将成绩保存在score中,同时将is_submit的值更改表示其已经答题了。
理清楚了此思路,解决了前端的难点,一个考试系统的雏形就基本出来了。