ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:465.42KB ,
资源ID:10478294      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-10478294.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(最新在线考试系统课程设计1.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

最新在线考试系统课程设计1.docx

1、最新在线考试系统课程设计1一、需求分析 计算机技术没有应用到考试上时,组织一次考试只是要经过五步:人工出题,考生考试,人工阅卷,成绩评估和试卷分析,这是一项十分繁琐和容易出错的工作,教师的工作量非常的大。很明显,传统的考试方式已经不再适应现代考试的需要。如今,信息技术的迅猛发展,应用不断扩大,教学和虚拟大学等相继出现,这些应用正逐步深入到千家万户,人们迫切要求利用这些技术来进行在线考试,以减少教师的工作负担并提高工作效率,同时提高考试的质量,从而使考试更趋于公正,客观,更加激发学生的兴趣。例如,目前许多国际著名的计算机公司所举办的各种认证考试绝大部分是采用这种形式。二、数据库设计1, 概念模型

2、设计(ER图) 2、E-R图转为逻辑模型的方法及过程在sql中创建一个新的数据库CET6,以ER图中的实体的名称创建表。设计表时,以该ER图中的属性为列名,根据实际情况确定其数据类型和长度,在必须唯一的列名处设计主键。在sql中一共建立七个表来实现CET6模拟考试系统应用程序数据的连接。其中,UserType表示数据类型,0表示学生,1表示管理员。UserId表示用户账号,UserName表示用户姓名,UserPsw表示用户密码。HaveIn,HaveTest分别表示用户是否登录和参加考试。TypeId,TypeName分别表示试题类型和试题类型名。XZT_BL,XZT_FZ分别表示选择题的分

3、值和比例。判断题和填空题类推。StudentId表示考生考号,TopicId、PaperTopId分别表示试题在题库和试卷中的编号。TopicName、TopicAnswer表示试题题目和答案。3、逻辑模型TB_User(用户信息表)TB_TestType(试题类型表)TB_Param(系统参数表)TB_StuTest(学生考试试卷表)TB_Grade(学生分数表)TB_Test(试题安排)TB_StuTest(学生考试试卷表)4、数据库评价 首先,用sql设计数据库比较稳定,对数据的要求也比较严格。这样在编码阶段数据这一块就基本没有不合理的数据出现在应用程序上。减少了运行会出现的错误。但是s

4、ql与应用程序的链接有时比较繁琐而且不易成功。三、编码实现1, 登录模块1) 用户的不同类型进入到不同的界面,主要有一个combox控件,用于选择用户类型。两个TextBox控件,Txt_id用于输入账号,Txt_Pse用于输入密码。三个commandButton控件:cmd_In用于登录系统,Cmd_Again用于清空用户信息重新输入,Cmd_Quit用于退出系统。2) 程序流程图3) 登录模块代码Option ExplicitPublic B As Boolean 用户的登录信息是否正确Private Sub PD()判断用户登录信息是否正确,正确B=true,否则B=falseDim r

5、s As New ADODB.Recordset 声明rs为记录集对象If Trim(Txt_Id.Text) = Then 如果没有输入帐号MsgBox 没有输入用户账号,请您正确填写!, vbOKCancel + vbCritical Txt_Id.SetFocus 设置焦点在问本框Txt_Id上ElseIf Trim(Txt_Psw.Text) = Then 如果密码为空 MsgBox 没有输入密码,请您正确填写!, vbOKCancel + vbCritical Txt_Psw.SetFocus 设置焦点在问本框Txt_Psw上Else Cmd_In.Default = True 设置

6、Cmd_In按Enter键触发Click事件Sql = select * from TB_User where UserId= & Trim(Txt_Id.Text) & & _and UserType= & Cbx_UserType.ListIndex & & _and UserPsw= & Trim(Txt_Psw.Text) & 把查询用户信息的SQL语句赋给变量Sql rs.Open Sql, cnn, adOpenStatic, adLockReadOnly 以只读的方式静态的打开Sql执行的结果的记录集 If Not rs.RecordCount 0 Then 如果记录集为空 Se

7、lect Case MsgBox(用户账号或密码不正确,请您正确填写!, vbOKCancel + vbCritical) 显示提示信息 Case vbOK 如果选择了是 B = False Txt_Id.Text = 帐号清空 Txt_Psw.Text = 密码清空 Txt_Id.SetFocus 是输入帐号的文本框获得焦点 Case Else 选择了取消 End 结束程序 End Select Cmd_In.Default = False 设置Cmd_In不是Enter的默认按钮ElseIf rs.Fields(HaveIn) = 0 Then 如果记录集不为空且此帐号没被其他用户使用 B

8、 = True 用户的登录信息正确 cnn.Execute update TB_User set HaveIn=1 & _where UserId= & Trim(Txt_Id.Text) & & _and UserType= & Cbx_UserType.ListIndex & 设置HaveIn字段为1,限制其他用户用此帐户登录 UsId = Trim(Txt_Id.Text) 记录用户的帐号 Else 如果记录集不为空但此帐号正在被其他用户使用 MsgBox 用户已经登录!, vbOKOnly + vbCritical 显示提示信息 B = False 用户的登录信息错误 Txt_Id.T

9、ext = 帐号清空 Txt_Psw.Text = 密码清空 Txt_Id.SetFocus 是输入帐号的文本框获得焦点 Cmd_In.Default = False 设置Cmd_In不是Enter的默认按钮 End If rs.Close 关闭记录集End IfEnd SubPrivate Sub Cbx_UserType_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then 如果输入的字符是Enter键 Txt_Id.SetFocus 设置输入帐号的文本框获得焦点 Else 如果输入的是其它字符 KeyAscii = 0 返回值为空即不输入

10、任何字符 End IfEnd SubPrivate Sub Cmd_Again_Click() 用户信息输入错误,选择了“重输”按钮,开始重新输入。 Call Form_LoadEnd SubPrivate Sub Cmd_In_Click() 用户填写信息完毕,单击“确定”按钮,开始登录On Error GoTo Err1 出现错误转向错误处理 Dim rs As New ADODB.Recordset 声明rs为记录集对象 Select Case Cbx_UserType.ListIndex Select语句的条件是Cbx_UserType的ListIndex属性 Case 0 如果选中的

11、是第一条记录即考生 Call PD 判断考生的帐号和密码是否正确 If B = True Then 如果考生的帐号和密码正确 Sql = select HaveTest from TB_User where UserType=0 & _ and UserId= & Trim(Txt_Id.Text) & 判断考生是否参加过考试 rs.Open Sql, cnn, adOpenStatic, adLockReadOnly 执行SQL语句 If rs.Fields(HaveTest) = False Then 如果考生没有参加过考试 Sql = delete from TB_Grade where

12、 StuId= & _ & Trim(Txt_Id.Text) & 删除成绩表中考生原有的记录 cnn.Execute Sql 执行SQL语句 Sql = insert into TB_Grade(StuId) values & _ ( & Trim(Txt_Id.Text) & ) 把考生的帐号插入到成绩表中 cnn.Execute Sql 执行SQL语句 End If frm_Stu.Show 显示考生窗口 Unload Me 卸载本窗体 End If Case 1 If Txt_Id.Text = admin And Txt_Psw = admin Then 设置超级用户 Unload

13、Me 卸载本窗体 frm_Manager.Show 显示管理员窗体 Else 如果不是超级用户 Call PD 判断管理员的帐号和密码是否正确 If B = True Then 如果帐号和密码正确 Unload Me 卸载本窗体 frm_Manager.Show 显示管理员窗体 End If End If Case Else 不过没有选择用户的身份 MsgBox 您没有选择身份,请选择!, vbOKCancel + vbCritical 提示选择身份 Cbx_UserType.SetFocus 组合框Cbx_UserType获得焦点 End Select Exit Sub 跳出Sub过程Err

14、1: ErrMessageBox 打开窗口失败 显示出错信息 frm_Login.Show 显示登录窗体End SubPrivate Sub Cmd_Quit_Click() If MsgBox(真的要退出 & Me.Caption & 吗?, vbYesNo + vbInformation) = vbNo Then Exit Sub End If 弹出对话框询问是否退出系统 End 退出系统End SubPrivate Sub Form_Load() Cbx_UserType.Text = 请选择身份 Txt_Id.Text = Txt_Psw.Text = End SubPrivate S

15、ub Txt_Id_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then 判断如果用户输入的是Enter键 Txt_Psw.SetFocus 设置Txt_Psw获得焦点 End IfEnd SubPrivate Sub Txt_Psw_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Call Cmd_In_Click End IfEnd Sub2、管理员模块1)在窗体上添加一个SSTab控件,上面添加三个commandButton控件,分别为选择题,填空题,判断题。添加一个DataGrid

16、控件显示试题,添加一个Ado控件链接数据库。编写菜单实现各种管理的功能。2)3) 代码Option ExplicitDim Sql As String 声明模块级变量Private Declare Function ShellExecute Lib shell32.dll Alias ShellExecuteA (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As Long, ByVal lpDirectory As Long, ByVal nShowCmd

17、 As Long) As LongPrivate Function FunAdo(ByVal str As String) 构造连接ADO的函数On Error GoTo Err1 执行过程中如果发生错误转向错误处理 With Ado1 使用With结构 .Visible = False Ado不可见 .ConnectionString = cnn.ConnectionString 设置Ado的连接字符串 .CommandType = adCmdText 设置Ado的命令类型 .RecordSource = str 设置Ado的记录源 .Refresh 刷新Ado的记录集 End With 结

18、束With结构 Exit Function 结束函数Err1: ErrMessageBox 与数据库连接失败! 显示错误信息 Me.Show 显示窗口End FunctionPrivate Sub Cmd_Cancel_Click() Call Form_Unload(1)End SubPrivate Sub Cmd_PDT_Click() Sql = select 类型号=tb_testtype.Typeid,题号=(tb_topicstor.topicid), & _ 题目名称=topicname,答案=topicanswer & _ from tb_topicstor,tb_testty

19、pe where tb_testtype.typeid=tb_topicstor.typeid and typename=判断题 Call FunAdo(Sql) DG.Columns(0).Width = 700 DG.Columns(1).Width = 500 DG.Columns(2).Width = 4000 DG.Columns(3).Width = 500End SubPrivate Sub Cmd_TKT_Click() Sql = select 类型号=tb_testtype.Typeid,题号=(tb_topicstor.topicid), & _ 题目名称=topicna

20、me,答案=topicanswer & _ from tb_topicstor,tb_testtype where tb_testtype.typeid=tb_topicstor.typeid and typename=填空题 Call FunAdo(Sql) DG.Columns(0).Width = 700 DG.Columns(1).Width = 500 DG.Columns(2).Width = 4000End SubPrivate Sub Cmd_XZT_Click() Sql = select 类型号=tb_testtype.Typeid,题号=(tb_topicstor.top

21、icid), & _ 题目名称=topicname,答案=topicanswer,A,B,C,D,E,F & _ from tb_topicstor,tb_testtype where tb_testtype.typeid=tb_topicstor.typeid & _ and typename= & Cmd_XZT.Caption & 把查看选择题的SQL语句赋给变量Sql Call FunAdo(Sql) 调用函数执行SQL语句 DG.Columns(0).Width = 700 设置DataGrid的第1列列宽 DG.Columns(1).Width = 500 设置DataGrid的第

22、2列列宽 DG.Columns(2).Width = 4000 设置DataGrid的第3列列宽 DG.Columns(3).Width = 500 设置DataGrid的第4列列宽End SubPrivate Sub DG_DblClick() If frm_Manager.Ado1.Recordset.Fields(题号) = Then 如果试题不存在 MsgBox 不存在记录,请您先添加记录, vbOKOnly 提示没有记录 Exit Sub 跳出Sub过程 Else 如果题库中有试题 Me.Enabled = False 管理窗体不可以用 Bkm = Ado1.Recordset.Bo

23、okmark 记录当前DataGrid的指针的位置 End IfEnd SubPrivate Sub Form_Load() Call Cmd_XZT_ClickEnd SubPrivate Sub Form_Unload(Cancel As Integer) If MsgBox(真的要退出 & Me.Caption & 吗?, vbYesNo + vbInformation) = vbNo Then 弹出消息对话框询问是否退出系统 Cancel = True 如果消息对话框返回值为常数vbNo,系统返回值为True Else cnn.Execute update tb_user set ha

24、vein=0 where userid= & UsId & and UserType=1 End 如果消息对话框返回值为常数vbNo,系统返回值为False,结束程序 End IfEnd SubPrivate Sub Men_About_Click() frm_About.ShowEnd SubPrivate Sub Men_Help_Click() SendKeys F1End SubPrivate Sub Men_SelGrd_Click() frm_SelGrd.Show 打开查分窗体 Me.Hide 隐藏管理员窗体End SubPrivate Sub select_Click() 设定

25、参数 On Error GoTo Endsub frm_param.Show Me.HideEndsub:End SubPrivateSub T_AddPDT_Click() On Error GoTo Endsub frm_PDT.Show Me.HideEndsub:End SubPrivateSub T_AddTKT_Click()On Error GoTo Endsub frm_TKT.Show Me.HideEndsub:End SubPrivate Sub T_AddXZT_Click()On Error GoTo Endsub frm_XZT.Show Me.HideEndsub

26、:End SubPrivate Sub T_Exit_Click() Unload MeEnd SubPrivate Sub T_Update_Click()On Error GoTo Endsub Me.Enabled = FalseEndsub:End SubPrivate Sub User_Click() On Error GoTo Endsub frm_UpdateUser.Show Me.HideEndsub:End Sub3、学生窗体1)2)3)Option ExplicitDim HaveTest As IntegerPrivate Sub Begin_Click() Call

27、CmdOk_ClickEnd SubPrivate Sub CmdOk_Click()On Error GoTo Err1 frm_Test.Show Me.Hide Exit SubErr1: ErrMessageBox 考试窗口打开出错End SubPrivate Sub CmdQuit_Click() Unload MeEnd SubPrivate Sub Form_Load() Dim rs As New ADODB.Recordset 声明认识rs为记录集对象 Sql = select havetest from tb_user where usertype=0 & _ and us

28、erid= & UsId & 把查询是否参加考试的标识字段赋给变量Sql rs.Open Sql, cnn, adOpenStatic, adLockReadOnly 执行SQL语句 HaveTest = rs.Fields(HaveTest) ShowButtonEnd SubPrivate Sub Form_Unload(Cancel As Integer) If MsgBox(真的要退出 & Me.Caption & 吗?, vbYesNo + vbInformation) = vbNo Then 弹出对话框询问是否退出系统 Cancel = 1 Else cnn.Execute upd

29、ate tb_user set havein=0 where userid= & UsId & and UserType=0 End End IfEnd SubPrivate Sub Img_PswCancel_Click() Pte_StuPsw.Visible = False ShowButtonEnd SubPrivate Sub Img_PswOk_Click()On Error GoTo Err1 如果发生错误转向错误处理 Dim rs As New ADODB.Recordset 声明认识rs为记录集对象 Sql = select * from TB_User where UserId= & UsId & & _ and UserType=0 and UserPsw= & Txt_StuPsw.Text & 把验证密码的SQL语句赋给变量Sql rs.Open Sql, cnn, adOpenStatic, adLockReadOnly 执行SQL语句 If Not rs.RecordCount 0 Then 如果密码不正确 If MsgBox(密码不正确,请您重新填写!, vbOKCancel + vbCritical) = vbCancel Then 弹出提示框 Pte_StuPsw.Visible = False

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2