自动择题及试卷生成系统-Read
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
自动择题及试卷生成系统
《PB》课程设计报告
----自动择题及试卷生成系统
专业:计算机科学与技术(师范)
班级:2005级(5)班
姓名:张艳(06050512)
指导教师:殷红先
2008年2月21日
一、设计内容
题目:自动择题及试卷生成系统
要求:能根据一定规则从自动题库中生成试卷,具备查询、删除、修改、预览、打印等基本功能。以英语考试为范例。
二、算法思想描述
1、登录界面
在界面中输入指定的用户名和密码(本系统中用户名为dba,密码为sql),为保证密码的安全性,密码采用“*”号形式显示,按“确定”键之后,如果用户名和密码均正确,则安全登录本系统,如果不正确,则提示用户密码或者用户名不正确,要求重新输入。
2、主界面
主界面采用一种简单直观的形式,设置一选单,点击各选单项出现相应的应用模块。
3、自动择题
自动择题模块分为两个小模块,一种是输入各项要求之后自己从数据库中选择题目以生成试卷,另一种则是输入各项要求之后系统本身随机选择题目。
三、程序结构
本系统的结构如下图1所示:
图1
具体分析:
1、程序保存运行之后,打开登录页面(如图2所示),这里用户名为dba,密码为sql,其中密码用“***”显示,使其更加安全。
图2 图3
2、登录不成功,则跳出一“messagebox”(如图3),提示用户密码或者用户名不正确,同时自动清空刚才用户所输入的数据。
3、登录成功,则进入主界面(图4),主界面只有一排选单,使得各
操作模块化,简洁明了。
图4 图5
4、第一个选单“系统帮助”中分为“系统注册”和“帮助信息”两个模块,其中“系统注册”(图5)为用户提供注册功能,而“帮助信息”则为使用者提供适当的帮助。
5、第二个选单“试卷生成”也分为“自动生成”和“手工出题”两个模块,“手工出题”模块中,用户输入各项要求之后自己从数据库中选择题目以生成试卷(图6),用户需双击数据库中自己所需要的题目,同时为用户提供预览功能(图7)
图6 图7
附:双击数据窗口中的题目在多行编辑框中自动显示的代码
在dw_1的doubleclicked()事件中:
int rw1,rw2
if ddlb_1.text="单项选择题" then
rw1=dw_1.getrow()
string str1,str2
str1=dw_1.getitemstring(rw1,2)
str2=dw_1.getitemstring(rw1,3)
mle_1.text=mle_1.text+str1+"~r~n"+str2+"~r~n"
else
rw2=dw_1.getrow()
string str3
str3=dw_1.getitemstring(rw2,2)
mle_1.text=mle_1.text+str3+"~r~n"+"~r~n"+"~r~n"+"~r~n"
end if
在“自动生成”模块中,用户输入各项要求之后,系统自动为用户随机生成试卷,如图8所示,用户在输入各项数据之后点“确定”按钮,系统自动在右边的多行编辑框中生成随机选择的题目,同时该窗口和“手工出题”窗口一样,为用户提供“预览、修改、保存、打印、关闭”等功能。
图8
附:能实现随机选题的代码
在“确定”按钮的clicked()事件中:
dw_1.settransobject(sqlca)
dw_1.retrieve()
int a,b,c
for a=1 to dec(sle_1.text) step 1
int lrw
lrw=rand(w_autochoose.dw_1.rowcount())
string str1,str2
str1=w_autochoose.dw_1.getitemstring(lrw,2)
str2=w_autochoose.dw_1.getitemstring(lrw,3)
mle_1.text=mle_1.text+str1+"~r~n"+str2+"~r~n"
next
for b=1 to dec(sle_3.text) step 1
int lrw2
lrw2=rand(w_autochoose.dw_1.rowcount())
string str3
str3=w_autochoose.dw_1.getitemstring(lrw2,4)
mle_1.text=mle_1.text+str3+"~r~n"
next
for c=1 to dec(sle_5.text) step 1
int lrw3
lrw3=rand(w_autochoose.dw_1.rowcount())
string str4
str4=w_autochoose.dw_1.getitemstring(lrw,5)
mle_1.text=mle_1.text+str4+"~r~n"+"~r~n"
next
6、系统中的“退出”或者“关闭”按钮都为用户提供关闭当前窗口的功能。
四、收获与体会
这次的课程设计作业是从暑假就着手写起的,写过了很多的版本,最后在开学以后经过老师的提点,得出了现在的版本。
在整个“设计”的过程中,我不断地体会着“程序=数据结构+算法”这句话,以前的我,总是觉得算法好难,写程序更难,可能缘着这种紧张又不自信的心理,《数据结构》这门课我学得很一般,为了不至于落后班上的高手太多,我在暑假里就开始了数据结构的设计。但是由于整个暑假学了一个半月的第二外语,就没有很多的时间放在课程设计上了。
我要做的题目是“链表的维护与文件形式的转换”,初看起来,是很简单的一个题目,因为无论是C语言课还是数据结构课,我们都有上过有关“链表”的知识,而且有关“链表”的作业题也做过,所以一开始这道题目给我的印象就是简单。
当我编写好第一个版本(这个版本纯粹是链表的插入啊,删除啊之类的)的时候,我拿给我的父亲看,告诉他这是一个模拟“超市库存”的小软件,我父亲看了一下,告诉我这个