PB课程设计网上考试系统.docx
- 文档编号:3875686
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:20
- 大小:1.34MB
PB课程设计网上考试系统.docx
《PB课程设计网上考试系统.docx》由会员分享,可在线阅读,更多相关《PB课程设计网上考试系统.docx(20页珍藏版)》请在冰豆网上搜索。
PB课程设计网上考试系统
网上选课系统
一、本组设计的功能描述
功能说明如下:
1.登录:
管理员、教师、学生分不同页面
2.考生的录入删除
3.试卷录入
4.查询学生成绩的信息
(1)学号查询
(2)姓名查询
5.导出数据到各种格式中,另存标准答案
6.学生答题与提交
7.学生成绩录入
8.老师对学生答案的研究与评分
9.标准答案查询
10.教师菜单
(1)试卷录入
(2)成绩录入
(3)试卷查询
(4)标准答案查询
11.帮助——对程序功能的说明
2、本组设计的主要特色
目前随着校园网的健全与普及为在各个学校内举行无纸化的网上考试系统的建立提供了必要的条件。
网上无纸化考试系统可以充分的发挥考试题库的作用,方便管理员对试题库的综合管理:
方便教师及时、全面、均衡的组织试卷、批阅试卷以及分析考生考试的具体情况,方便考生参加考试和查阅分数,省去了试卷的打印、印刷、装订和批阅等一系列过程,大大的减轻了教师的工作量并可以避免在出卷印刷装订等过程中的不安全性,并且可以灵活的安排考试时间,方便了管理部门及参加考试的学生,对于客观题可以自动阅卷,客观题的考试成绩在考试后就能够立即输出,并自动送到数据服务器的成绩数据表中,增强了阅卷的公正性以及成绩的准确性,可以随时产生相应的成绩统计等。
随着技术的进一步的发展与完善,网上无纸化考试系统正在成为网上教学系统和网络办公系统的不可或缺的重要组成部分,成为大多数科目组织考试的一种手段。
我做的程序:
1.考试试卷应该是随机的,即不同学科考生的试卷是不同的,但是总体的试卷难度应该是均等的;
2.每位考生每个课程只能考一次,并且考试需要得到老师的授权,否则不得考试;
3.考试结果必须严格保存,以便学生教师等再次查询,并且防止泄密;
4.系统应该站在学生的角度,考虑学生考试时候的心情,充分做到简单操作,较少不必要的因为紧张造成的误操作。
三、系统分析与设计
●系统总体设计--确定程序功能模块;
●系统详细设计--在总体设计基础上设计系统总体框架、数据结构(类)、关键算法的流程;
●最后编制源程序。
1.系统功能模块划分及说明
2.总体框架,数据文件等
3.系统关键算法流程图
4.源程序关键性代码
本系统以三种角色进入即管理员、老师、学生。
管理员各参与系统的各个功能实现,例如学生信息的录入删除,成绩查询,试卷答案查询,试卷查询但是不能改动学生试卷。
也可以进行系统维护,还有帮助来解释程序功能。
老师登陆时,有试卷录入,成绩录入,还可以查询学生作答情况、学生评分等功能,可以在一菜单中实现。
学生登陆时只可以答题、查询成绩、查询标准答案。
程序中有帮助一项具体说明。
一、各张表的逻辑结构如下:
列名
数据类型
长度
是否为空
姓名
char
10
0
密码
char
10
0
表一管理员表的逻辑结构
列名
数据类型
长度
是否为空
学号
char
10
0
姓名
char
10
1
性别
char
10
0
密码
char
10
0
考试科目
char
10
0
考试标记
int
4
1
表二学生表逻辑结构
列名
数据类型
长度
是否为空
教师姓名
char
10
0
密码
char
10
0
表三教师表逻辑结构
列名
数据类型
长度
是否为空
学科
char
10
1
题号
int
4
1
题目内容
char
50
1
选项A
char
50
1
选项B
char
50
1
选项C
char
50
1
答案
int
4
1
表四试卷表逻辑结构
列名
数据类型
长度
是否为空
学科
char
10
1
题号
int
4
1
题目内容
char
50
1
答案
int
4
1
备注
char
50
1
表五试题答案表逻辑结构
列名
数据类型
长度
是否为空
学科
char
50
1
学号
char
10
1
题1
int
4
1
题2
int
4
1
题3
int
4
1
题4
int
4
1
题5
int
4
1
得分
int
4
1
表六学生作答表逻辑结构
由于对框架的完善,加入了员工培训的内容。
2、数据库关系图
该关系图体现了数据库中表的格局与内容。
但是另外的课程信息表并没有涉及,而是另外的两个表。
三、各部分功能简要说明
1、w_denglu登录窗口
”确定“按钮代码
stringll_password,ll_username
ll_username=trim(sle_1.text)
ll_password=trim(sle_2.text)
ifrb_1.checked=truethen
SELECT管理员表.name,管理员表.password
INTO
:
ll_username,
:
ll_password
FROM管理员表
WHERE管理员表.name=:
ll_usernameand管理员表.password=:
ll_password;
ifsqlca.sqlcode=0then
open(w_guanli)
else
messagebox("错误!
","用户名或密码不正确!
",exclamation!
ok!
2)
endif
//else
endif
ifrb_2.checked=truethen
SELECT教师表.name,教师表.password
INTO
:
ll_username,
:
ll_password
FROM教师表
WHERE教师表.name=:
ll_usernameand教师表.password=:
ll_password;
ifsqlca.sqlcode=0then
open(w_jiaoshidenglu)
endif
endif
//else
ifrb_3.checked=truethen
SELECT学生表.姓名,学生表.学号
INTO
:
ll_username,
:
ll_password
FROM学生表
WHERE学生表.姓名=:
ll_usernameand学生表.学号=:
ll_password;
ifsqlca.sqlcode=0then
open(w_xueshengdenglu)
endif
endif
当以管理员身份进入时,进入该页面
确认录入的按钮代码
if(sle_1.text=""orsle_2.text=""orsle_3.text=""orsle_4.text=""orsle_5.text="")then
messagebox("提示信息","信息未填完整")
else
ifmessagebox("提示信息","是否添加此学生?
",Question!
YesNo!
1)=1then
insertinto学生表(学生表.姓名,学生表.密码,学生表.考试科目,学生表.性别,学生表.考试标记)
values(:
sle_1.text,:
sle_2.text,:
sle_3.text,:
sle_4.text,:
sle_5.text);
//insertinto员工婚姻情况表(员工婚姻情况表.姓名,员工婚姻情况表.性别,员工婚姻情况表.配偶)
//values(:
sle_2.text,:
sle_8.text,:
sle_16.text);
//insertinto员工学历情况表(员工学历情况表.姓名,员工学历情况表.学历,员工学历情况表.专业,员工学历情况表.学校,员工学历情况表.外语水平,员工学历情况表.毕业时间)
//values(:
sle_2.text,:
sle_9.text,:
sle_10.text,:
sle_11.text,:
sle_12.text,:
sle_13.text);
insertinto学生表(姓名,学号,考试科目,性别,考试标记)
values(:
sle_1.text,:
sle_2.text,:
sle_3.text,:
sle_4.text,:
sle_5.text);
ifsqlca.sqlcode=0then
commit;
endif
messagebox("提示信息","添加完成")
else
messagebox("提示信息","添加失败")
endif
endif
系统维护是进入主菜单
W_right
主菜单
教师登陆时
确认录入代码
longll_i
stringls_str[]
ls_str[1]=sle_1.text
ls_str[2]=sle_2.text
ls_str[3]=sle_3.text
ls_str[4]=sle_4.text
if(sle_1.text=""orsle_2.text=""orsle_3.text=""orsle_4.text=""orsle_5.text="")then
messagebox("提示信息","试卷未填完整")
else
ifmessagebox("提示信息","是否添加?
",Question!
YesNo!
1)=1then
forll_i=1to4
insertinto试卷表(试卷表.题目内容,试卷表.学科,题号)
values(:
ls_str[ll_i],:
sle_5.text,:
ll_i);
//insertinto员工婚姻情况表(员工婚姻情况表.姓名,员工婚姻情况表.性别,员工婚姻情况表.配偶)
//values(:
sle_2.text,:
sle_8.text,:
sle_16.text);
//insertinto员工学历情况表(员工学历情况表.姓名,员工学历情况表.学历,员工学历情况表.专业,员工学历情况表.学校,员工学历情况表.外语水平,员工学历情况表.毕业时间)
//values(:
sle_2.text,:
sle_9.text,:
sle_10.text,:
sle_11.text,:
sle_12.text,:
sle_13.text);
next
ifsqlca.sqlcode=0then
messagebox("提示信息","录入完成")
else
messagebox("提示信息","录入失败")
endif
endif
endif
点击功能菜单进入及教师菜单
教师功能菜单
学生登陆时进入
输入考试科目和考试标记时进入试卷:
大学英语、数学分析、高等代数。
进行答题
2、管理员增加和删除学生时的窗口为
3、学生成绩查询,输入学号或姓名时可以查询,不能都为空
1)、按学号查询
2)、按姓名查询
查询代码
stringls_xuehao,ls_name
ls_xuehao=trim(sle_5.text)
ls_name=trim(sle_6.text)
ifls_xuehao=''andls_name=''then
messagebox("警告!
","学号和姓名至少填入一个!
")
elseifls_xuehao<>''andls_name=''then
select成绩.姓名,成绩.学号,成绩.考试科目,成绩.考生成绩
//,成绩表.学号,成绩表.姓名
into:
sle_1.text,:
sle_2.text,:
sle_3.text,:
sle_4.text
//,:
sle_5,:
sle_6
from成绩
where成绩.学号=:
sle_5.text;
sle_5.text=""
elseifls_xuehao=''andls_name<>''then
select成绩.姓名,成绩.学号,成绩.考试科目,成绩.考生成绩
//,成绩表.学号,成绩表.姓名
into:
sle_1.text,:
sle_2.text,:
sle_3.text,:
sle_4.text
//,:
sle_5,:
sle_6
from成绩
where成绩.姓名=:
sle_6.text;
sle_6.text=""
endif
4、学生作答
提交代码
longll_i
stringls_str[]
ls_str[1]=sle_1.text
ls_str[2]=sle_2.text
ls_str[3]=sle_3.text
ls_str[4]=sle_4.text
if(sle_1.text=""orsle_2.text=""orsle_3.text=""orsle_4.text=""orsle_5.text="")then
messagebox("提示信息","试卷未填完整")
else
ifmessagebox("提示信息","是否提交?
",Question!
YesNo!
1)=1then
forll_i=1to4
insertinto学生答案表(试卷表.题1,试卷表.学科,题2)
values(:
ls_str[ll_i],:
sle_5.text,:
ll_i);
next
ifsqlca.sqlcode=0then
messagebox("提示信息","提交完成")
else
messagebox("提示信息","提交失败")
endif
endif
endif
5.学生答案查询
查询代码
Stringll_name
ll_name=Trim(sle_1.text)
IfNOTll_name=""then
dw_1.Retrieve(ll_name)
Else
MessageBox("数据不全","请输入待查询学科")
EndIf
sle_1.SetFocus()
评分进入评分窗口
6、标准答案的关键字查询
查询的代码
Stringll_name,ls_name
ll_name=Trim(sle_1.text)
ls_name='%'+ll_name+'%'
ifll_name=''orisnull(ll_name)then
messagebox("提示信息","科目不能为空!
")
else
dw_1.settransobject(sqlca)
dw_1.retrieve()
dw_1.setfilter("学科like'"+ls_name+"'")
dw_1.filter()
endif
该窗口连接的数据窗口
7.帮助
四、系统调试出现的问题及解决情况
(编译语法错误及修改,重点是运行逻辑问题修改和调整)
1、在数据库与窗口的连接中出现了连接不上的问题。
但通过窗口的测试解决了该问题。
2、编辑过程中员工的添加中单行编辑框的名字与代码中的名字不对应,造成了很多的问题。
通过每个名字的对照进行修改该问题已解决。
3、建立数据窗口之后没有与数据窗口表格连接。
4、管理员录入学生信息之后没有正确进入数据库,窗口未与数据库连接,通过适当调试解决了该问题。
5、教师登录时只能先进入试卷的录入再进入主菜单。
6、管理员登陆时进行系统维护,可以改任意方面,对数据真实性影响。
五、系统运行报告(测试的结果)
1、能实现的功能:
整个系统可有三种身份登录即管理员、老师、学生。
管理员各参与系统的各个功能实现,例如学生信息的录入删除,成绩查询,试卷答案查询,试卷查询但是不能改动学生试卷。
也可以进行系统维护,还有帮助来解释程序功能。
老师登陆时,有试卷录入,成绩录入,还可以查询学生作答情况、学生评分等功能,可以在一菜单中实现。
学生登陆时只可以答题、查询成绩、查询标准答案。
查看帮助。
2、不能实现的功能:
试卷的重组不能实现,只能手动输入试卷
六、总结
(包括设计的总结、还需改进的内容及心得体会)
本系统是采用Powerbuilder10.5为开发工具,开发环境Windows7。
数据库采用微软公司旗下产品SQL2005。
演示版本数据库连接采用MS环境下数据源OBDC,数据源名称<员工信息管理系统>,在PB10.5中连接时名为<员工管理(员工信息管理系统)>。
该系统是我在PB课程设计期间完成,编写耗时一周。
由于是PB的初作品,难免有些不近人意之处,由于我们以前从事程序编写工作不多并且由于水平和时间有限,所以很多更人性化工作没有做到。
菜单是在窗口中与用户直接接触的一个重要对象,菜单必须依附于窗口,除了子窗口和响应窗口外,其他类型的窗口都可以带有菜单。
窗口是应用程序的图形用户界面的基本元素,其他的应用程序组件往往是通过窗口联系起来的,所以对于一个应用程序来说,创建窗口对象是极其基本的一步工作。
继承是面向对象编程的一个重要概念,它是自动共享各个类、子类中的方法和数据的有效机制。
作为过程式系统所没有的一个有力机制,继承使得我们可以通过从父类中继承公共方法和数据,进而通过添加新的数据和方法定义一个新的类。
在此程序设计中,设计了一些窗口和数据窗口,还有一个菜单对象。
数据窗口的显示风格有Grid、Freeform、GrossTab和N_Up;数据源类型有QuickSelect,SQLSelect等。
在生成数据窗口是,还定义了String型检索参数变量来分别表示其中的内容,在数据窗口中还改变了一些控件的编辑风格和属性并在其中添加了计算域控件和文本控件。
在设计窗口时,用到了窗口继承的方法,那样既方便又快捷,还节约了工作量。
其中还有不能实现的内容及程序运行于期望不同的内容,并且也有不能正确运行的程序,由此我觉得编程工作要保持严谨性与较强硬的专业知识。
而且我本次编写的程序本身难免可能存在一些功能不足,语法不够严谨等小问题,希望老师能够谅解!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PB 课程设计 网上 考试 系统