要做个在线考试系统,关于数据库结构的设置,请教一下大家
第一次做这个,而且是个比较复杂的,这几天一直在考虑数据库怎么设置比较好。
关于科目、管理、考生一类的信息表,就不管了,这个比较简单。
关于题型方面,准备设置选择题(单选、多选、判断)一个表,填空题一个表,问答题一个表。
选择题,字段设置为编号、科目ID、题目、选项(不管有三个还是四个五个选项,全放一个字段,用,分开,取的时候分解成数组显示成ABCDE一类的,这样就不用限制选项的个数了),答案。
填空题,字段设置为编号、科目ID、题目、答案(不管这个填空题有几个空,答案都放在一个字段,用,隔开)
问答题,字段是编号、科目ID、题目、参考答案(问答题手动评分,所以正确答案可为空)
这些题目倒比较简单。就是组卷判卷比较麻烦。
准备设置一个表,放置组卷的记录,字段设编号、单选题、多选题、判断题、填空题、问答题(都是放编号)。组卷是随机组卷,根据系统设置选择题有几道,填空题有几道一类的……
比如考生点击考试,会给这科目按默认题数组成一张试题,比如选择题五个,随机选了3/8/9/20/22五题,会放在单选题的字段里面,值为3,8,9,20,22,显示的时候根据这个数组取出单选题表中的相应五条记录。其他题型一样(没有这个题型的题该字段就为空)
组成一张试卷以后,考生答完后加入答卷表。答卷表字段是编号(和组卷表的编号一样)、单选答案(如A,C,E,A,D)、多选答案(如ABCD,CD,BD)、判断答案、填空答案、问答题答案、报表题答案(这个后面说明)
这样放有不少问题,比如填空题、问答题的答案就不好放。填空题如果一题里面有几个空,这样分配起来会比较麻烦,如果有一空没填,取出来的值会乱的。就算是单选题,如果某一题没做,中间空一个,那又乱套了……
而问答题就是真正的问题了,如果有两三个问答题,答案放在同一个字段,都是大段大段的文字,也不确定里面会有些什么东西(如果有公式一类的,肯定一类乱七八糟的符号都有),这样几题放同一字段也不好分(如果按,分隔,万一人家答案里面有,那就乱套了)……
然后在判分的时候就更加混乱了,因为每种题型都要关联三个表。题目表、组题表和答案表,来判断分数(得出的分数还得有个表,晕)。组题表和答案表的一条记录要去关联该题型表的几条记录,貌似做不到,那只有把题目表取出来,再根据该题型的记录字段来查题型表……不知道得查多少遍,黑线。
另外,题型里面还有一个报表型,这个是固定的几张报表,某几个科目会调用这个题型,报表我打算排成web页面,到时候有这个题型就调用这个页面,这个可能也没有正确答案的,我没有打算为这个题型建表,但是考生填了这个报表的答案还是得记录起来然后给老师手动来判分。那么这个报表里面填的有日期名字备注一类的,大概几十个空,放一个字段也太杂了,如果专为报表建个表放考生填的东西……可也有几张不同的表,字段也不同,实在无法解决。
这样想的话设置起来肯定会有问题,不过俺想了几天,已经走进这个死胡同了,根本没办法从别的方面去考虑,所以想请大家帮忙想一下怎么建表才好操作。谢谢。
PS:想过组卷以后就生成一个asp文件,提交以后修改这个asp文件并删除组卷表里面的该记录,把考生答案强行填入asp文件里面,判卷以后干脆生成html,而数据库里面只记录这次考试的编号、asp文件名、考试时间、考生编号、考试成绩一类的。这样就省了数据库里面的麻烦操作。
不知道说清楚没有,自己满脑子都是乱的………………
------解决方案--------------------网上去下个相关的东西,打开他的数据库看看就知道了.
------解决方案--------------------你只能通过参考这些简单的东西慢慢来,估计要把这个问题说清楚,可不是一天两天的事情
------解决方案--------------------
我给个我们买无忧公司的access表.你看下。
下载地址:58.51.89.208/exam_data.rar
有问题联系我。
------解决方案--------------------多看看其他数据库的设计
------解决方案--------------------
可以按照业务分模块,比如试题模块,策略模块,试卷模块,考试模块,评阅模块
试题部分负责各种类型试题的录入,问答题可限制长度,限制#或其他分隔符等,一般1000个汉字足够了
策略部分负责定制生成试卷的策略,比如有多少道填空题,多少道选择题
试卷模块根据策略抽取试题,生成试卷
考试模块记录考试的考试记录,包括每个考试每道题目的答题记录,这样就不会出现楼主说的,有空题没答的时候....
评阅模块分为主观题和客观题评阅,匹配试题表和考试记录表即可,将考试记录表中增加得分项,评阅直接update,最好再做一张表对每道题目的得分统计
....
希望对你有所帮助
------解决方案--------------------能不能说具体点啊
什么地方的
数据库设置
不会?
------解决方案--------------------帮顶下