最新在线考试系统课程设计文档格式.docx
《最新在线考试系统课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《最新在线考试系统课程设计文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
TopicName、TopicAnswer表示试题题目和答案。
3、逻辑模型
TB_User(用户信息表)
TB_TestType(试题类型表)
TB_Param(系统参数表)
TB_StuTest(学生考试试卷表)
TB_Grade(学生分数表)
TB_Test(试题安排)
4、数据库评价
首先,用sql设计数据库比较稳定,对数据的要求也比较严格。
这样在编码阶段数据这一块就基本没有不合理的数据出现在应用程序上。
减少了运行会出现的错误。
但是sql与应用程序的链接有时比较繁琐而且不易成功。
三、编码实现
1,登录模块
1)用户的不同类型进入到不同的界面,主要有一个combox控件,用于选择用户类型。
两个TextBox控件,Txt_id用于输入账号,Txt_Pse用于输入密码。
三个commandButton控件:
cmd_In用于登录系统,Cmd_Again用于清空用户信息重新输入,Cmd_Quit用于退出系统。
2)程序流程图
3)登录模块代码
OptionExplicit
PublicBAsBoolean'
用户的登录信息是否正确
PrivateSubPD()'
判断用户登录信息是否正确,正确B=true,否则B=false
DimrsAsNewADODB.Recordset'
声明rs为记录集对象
IfTrim(Txt_Id.Text)="
"
Then'
如果没有输入帐号
MsgBox"
没有输入用户账号,请您正确填写!
vbOKCancel+vbCriticalTxt_Id.SetFocus'
设置焦点在问本框Txt_Id上
ElseIfTrim(Txt_Psw.Text)="
如果密码为空
MsgBox"
没有输入密码,请您正确填写!
vbOKCancel+vbCritical
Txt_Psw.SetFocus'
设置焦点在问本框Txt_Psw上
Else'
Cmd_In.Default=True'
设置Cmd_In按Enter键触发Click事件
Sql="
select*fromTB_UserwhereUserId='
&
Trim(Txt_Id.Text)&
"
'
_"
andUserType='
Cbx_UserType.ListIndex&
andUserPsw='
Trim(Txt_Psw.Text)&
'
把查询用户信息的SQL语句赋给变量Sql
rs.OpenSql,cnn,adOpenStatic,adLockReadOnly'
以只读的方式静态的打开Sql执行的结果的记录集
IfNotrs.RecordCount>
0Then'
如果记录集为空
SelectCaseMsgBox("
用户账号或密码不正确,请您正确填写!
vbOKCancel+vbCritical)'
显示提示信息
CasevbOK'
如果选择了是
B=False
Txt_Id.Text="
帐号清空
Txt_Psw.Text="
密码清空
Txt_Id.SetFocus'
是输入帐号的文本框获得焦点
CaseElse'
选择了取消
End'
结束程序
EndSelect
Cmd_In.Default=False'
设置Cmd_In不是Enter的默认按钮
ElseIfrs.Fields("
HaveIn"
)=0Then
如果记录集不为空且此帐号没被其他用户使用
B=True'
用户的登录信息正确
cnn.Execute"
updateTB_UsersetHaveIn=1"
whereUserId='
设置HaveIn字段为1,限制其他用户用此帐户登录
UsId=Trim(Txt_Id.Text)'
记录用户的帐号
Else'
如果记录集不为空但此帐号正在被其他用户使用
用户已经登录!
vbOKOnly+vbCritical'
B=False'
用户的登录信息错误
Txt_Id.Text="
EndIf
rs.Close'
关闭记录集
EndIf
EndSub
PrivateSubCbx_UserType_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=13Then'
如果输入的字符是Enter键
设置输入帐号的文本框获得焦点
如果输入的是其它字符
KeyAscii=0'
返回值为空即不输入任何字符
PrivateSubCmd_Again_Click()'
用户信息输入错误,选择了“重输”按钮,开始重新输入。
CallForm_Load
PrivateSubCmd_In_Click()'
用户填写信息完毕,单击“确定”按钮,开始登录
OnErrorGoToErr1'
出现错误转向错误处理
DimrsAsNewADODB.Recordset'
SelectCaseCbx_UserType.ListIndex'
Select语句的条件是Cbx_UserType的ListIndex属性
Case0'
如果选中的是第一条记录即考生
CallPD'
判断考生的帐号和密码是否正确
IfB=TrueThen'
如果考生的帐号和密码正确
Sql="
selectHaveTestfromTB_UserwhereUserType=0"
_
andUserId='
判断考生是否参加过考试
执行SQL语句
Ifrs.Fields("
HaveTest"
)=FalseThen'
如果考生没有参加过考试
deletefromTB_GradewhereStuId="
删除成绩表中考生原有的记录
cnn.ExecuteSql'
insertintoTB_Grade(StuId)values"
('
)"
把考生的帐号插入到成绩表中
frm_Stu.Show'
显示考生窗口
UnloadMe'
卸载本窗体
Case1
IfTxt_Id.Text="
admin"
AndTxt_Psw="
设置超级用户
frm_Manager.Show'
显示管理员窗体
如果不是超级用户
判断管理员的帐号和密码是否正确
如果帐号和密码正确
不过没有选择用户的身份
您没有选择身份,请选择!
vbOKCancel+vbCritical'
提示选择身份
Cbx_UserType.SetFocus'
组合框Cbx_UserType获得焦点
ExitSub'
跳出Sub过程
Err1:
ErrMessageBox"
打开窗口失败"
显示出错信息
frm_Login.Show'
显示登录窗体
PrivateSubCmd_Quit_Click()
IfMsgBox("
真的要退出"
Me.Caption&
吗?
vbYesNo+vbInformation)=vbNoThen
ExitSub
EndIf'
弹出对话框询问是否退出系统
退出系统
PrivateSubForm_Load()
Cbx_UserType.Text="
请选择身份"
PrivateSubTxt_Id_KeyPress(KeyAsciiAsInteger)
判断如果用户输入的是Enter键
Txt_Psw.SetFocus'
设置Txt_Psw获得焦点
PrivateSubTxt_Psw_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=13Then
CallCmd_In_Click
2、管理员模块
1)在窗体上添加一个SSTab控件,上面添加三个commandButton控件,分别为选择题,填空题,判断