vb考试管理系统源代码代码参考_第1页
vb考试管理系统源代码代码参考_第2页
vb考试管理系统源代码代码参考_第3页
vb考试管理系统源代码代码参考_第4页
vb考试管理系统源代码代码参考_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、引言与的关系是非常密切的,的出题一直是一个比较麻烦,要花费大量的时间和精力;传统的用的考卷,需要大量人工和来印制试卷, 而对与计算机上的主要形式。基于以上这几点,机传统的根本行不通,无纸化必将是以后为了解决的。试题的多样性、随机性和上述一些问题,编写一套管理系统来是很有必要目录第一章 系统简介-第二章 总体设计构思-2.1 数据库如何设计-2.1.1 考题数据库-2.1.2 考生信息数据库-2.1.3 用户信息数据库-2.2 如何通讯-2.3 如何生成考题-2.4 如何避免系统蹦溃后考生信息及题目信息丢失-2.5 如何计算总分-2.6 如何防止考生-2.7 数据如何隐蔽-2.8 如何解决服务器

2、传输文件多线程问题-2.9 如何实现加密算法-第三章 主要模块说明-3.13.2 服务器-第四章 总结-4.1 系统-4.2 心得体会-一简 介课题名:管理系统开发工具: Visual Basic 6.0 中文版数据库:Acs运行环境:Windows98/2000/XP/ME,机房需连成局域网安装:在机设一台机器为服务器将服务器程序安装到此机器中运行即可.将程序分别安装到其他用机中运行即可.功能说明:所编写的管理,系统分为两部分一部分是管管理系统是针对学校上机理考生,考题,类型,时间等信息,这部分由管理员(教师)进行管理.另一部分是,是考生完成试卷的主要接口.考生登录到后,则系统则对该考生输入

3、的准考证号发送到服务器进行验证.验证成功则发送考题库文件至端.并通过考题库文件随机生成考题(考题分为填空题,单项选择题,多项选择题,操作题.)考生答卷后提交试卷,并提示考生未做的题目.如果无误则系统算出总分发送到服务器进行.二 总体设计构思2.1 数据库如何设计?2.1.1 考题数据库(文件:examktl.dll)FillSubject 表单(填空题)字段名宽度类型说明SubjectMemo题目内容Filltion2Text填空位置标记FillResultMemo正确FillSelectedMemo当前选择的FillNum2eger需要填充的数量Key10Text密钥ChoiceExerci

4、se 表单(单选题)MultiChoice 表单(多选题)OperationSubject 表单(操作题)字段名长度类型说明SubjectMemo题目内容字段名宽度类型说明SubjectMemo题目内容ChoiceAMemoAChoiceBMemoBChoiceCMemoCChoiceDMemoDChoiceEMemoEChoiceFMemoFChoiceResult10Text当前选择的( 如:”DEF”) 说明你选择了 DEFRightResult10Text正确Key10Text密钥字段名宽度类型说明SubjectMemo题目内容ChoiceAMemoAChoiceBMemoBChoic

5、eCMemoCChoiceDMemoDChoiceResult2Text当前选择的RightResult2Text正确Key10Text密钥2.1.2 考生信息数据库(文件:examext.dll)Student 表单(考生信息)2.1.3 用户信息数据库(文件:examyh.dll)UserInfo 表单(用户信息)2.2 如何通讯?可通过 Winsock 控件可实现通讯功能.服务器开放两个端口来与客户机进行通讯,端口”10088”考生信息通道,”10087”文件传输通道,请求文件传输,服务器为该请求分配一个进程对其进行文件传输操作(这里的进程其实就是将工程拆分成两个工程,主工程调用专门对文

6、件传输的工程操作)2.3 如何生成考题?首先验证通过后获得的信息(如填空题 10 题-每题 1 分,单选 30 题-每题 1 分,多选 5 题-每题 2 分,操作题目 5 题-每题 10 分),分别存入变量中,通过做随机抽取题目(此部分功能请参考模块详细说明)过来的数据库,及题目信息的变量字段名长度类型说明UserName20TEXT用户名Usassword16TEXT用户UserType8TEXT用户类型字段名长度类型说明ID20TEXT准考证号Name16TEXT考生Class20TEXT考生班级PhotoBinary考生PoDouble考生分数Examed1TEXT数据库题目索引数组正确

7、选择数组数组2.4 如何避免系统蹦溃后考生信息及题目信息丢失?可在考生登获得信息并生成考题后把考生信息,服务器地址, Exambak.bak 中.每次异常退出后在运行时读文件的信息到程序中.题目信息,存入备份文件2.5 如何计算总分?考生在提交试卷前,对所有题目进行检索发现考生为做的题目并给予提示.可将考生选择的题目和正确放入两个数组中.然后对两个数组中的元素进行比较相同则总分+该题的分值存放选择数组存放正 确数组ZongFeng正确:累加该题分值正确?A循环比较DEmptyABBDDAC:CDDD题目 1题目 2AEmpty题目 2题目 5CEmpty题目 3题目 6DEmpty题目 4题目

8、 1AEmpty题目 5题目 4BEmpty题目 6题目 3CEmpty:Empty题目 n题目 nAEmpty随机2.6 如何防止考生?通过随机出题目加强系统防功能,锁定系统桌面.2.7 数据如何隐蔽?方案 1:考生浏览计算机内容。方案 2:更改数据库扩展名,把所有后缀为 MDB(AC幸心理查找数据库的考生无从下手方案 3:S 数据库文件)改成 DLL。让想有侥即使找到数据库并打开了数据库,系统对数据库里的内容正确进行了加密。即使找到正确也是乱码看不懂内容的含义。2.8 如何解决服务器文件传输多线程问题?,而主进程只能对 1 个请求进行文件传输,因此只要有一考场很多考生需要对考题进行个考生在

9、考题,则其他考生则必须等待,因此需要实现多线程的操作,而要用 VB 实现多线程,是件比较繁琐的事情,而且调试经常使得 VB。因此可将此部分拆分另一个工程。此工程是专门传输文件的工作。通过主工程调用传参数(服务地址+端件名)。因此解决了文件传输的 1 对多同步进行+要传输的文2.9 如何实现加密算法?通过 VB 中的 XOR(位操作-异或)操作,明文对密钥的 AscII 码异或操作后得到密文。如果密钥和明文相同异或后则二进制为 000.所以为了避免,则遇到相同的用 Chr(128)如明文“ABCD”密钥 “ZC”三 主要模块说明3.13.1.1 ExamManageSystem.FrmMain

10、程序主窗口文件名:FrmMain.frmAZ密文BCCDXor窗口界面模块名:Init参数: 无功能:窗口初始化模块名: LockPC参数: (locked As功能:锁定系统桌面)模块名: BakStudentInfo设计构思:通过 API 函数 FindWindow 找到任务栏上的开始按钮, 任务拦等句柄, 并同过 ShowWindow 来隐藏显示窗口. 通过 SystemParametersInfo 禁用 CTRL+A el ALT+F4 等系统键设计构思:运行时初始化,通过查找 ExamBak.bak 文件来判断程序运行时是否要备份文件如果则说明考生有异常退出发生,已经登录过则 Use

11、rLogin = True 在备份文件本块功能说明:是的主要界面。参数: 无功能:备份学生信息模块名: ResumeStudentInfo参数: 无功能:还原学生信息模块名: Winsock1_DataArrival(Winsock 事件参数: (ByVal bytesTotal As Long)系统给定功能:获得服务器传送来的信息模块名: Winsock1_ Error (Winsock 事件)参数: (ByVal Number Aseger, Description As String, ByVal Scode As Long, ByValSource As String, ByVal H

12、elpFile As String, ByVal HelpContext As Long, CancelDisplayAs)系统给定功能:捕捉与服务器连接的错误设计构思:设计构思:服务器发送过来的信息是以 命令+内容 发送过来,此模块先命令部分 在依据是先约定好令决定做哪步操作,命令详解如下:命令名含义|StudenEr|考生验证失败|StudenOk|考生验证成功|GetExamI|获得信息 由模块 GetExamInfo 获得内容|SendMsgs|提示信息|EXOverOK|正常结束(服务器已将成绩保存)|EXOverEr|结束异常(服务器未将成绩保存)|CheatMsg|处理设计构思:

13、通过 WinAPI 函数 GetPrivateProfileString 将学生信息以 INI 文件格式从 ExamBak.bak文件中出来给系统变量设计构思:通过 WinAPI 函数 WritePrivateProfileString 将学生信息以 INI 文件格式写入 ExamBak.bak 文件中.3.1.2 ExamManageSystem.FrmLogin文件名:FrmLogin.frm登录服务器的IP 地址给考生考生本块功能说明:对考生进行验证。如果已经进入状态服务器监考老师可输入服务器地址和准考证号进行登录。窗口界面模块名: CmdLogin_Click (参数: 无功能:登录服

14、务器dButton 事件)3.1.3 ExamManageSystem.FrmDownLoad文件名:FrmDownLoad.frm考题窗口本块功能说明:本块主要功能是从服务器端题库。通过向服务器发送题库请求,进行第一次握手。服务器做出应答后,获得服务器开通端口连接到服务器并进行文件传输。设计构思:通过主窗口的 WINSOCK 控件连接服务器,如果未连接到服务器则尝试连接 7 次此事件的得到出发是从FrmLogon(登录窗口)中输入 IP 地址及准考证后连接服务器。TryHost是 FrmMain 中的全局变量是连接服务器次数的关键字.只要未连接到服务器并 TryHost 未满6 次则不停的连

15、接服务器窗口界面模块名: Init参数: 无功能:初始化窗口模块名:参数: 无m_DataArrival (Winsock 事件)3.1.4 ExamManageSystem.FrmBulid 随机生成考题窗口文件名:FrmBulid.frm本块功能说明:题目初始化,根据有无备份文件来判断,是随机生成题目还是还原从备份文件中还原题目信息功能:获得服务器发来的文件流并写入文件设计构思:服务器发送文件流( 文件内容) 来时触发该事件, 由于通讯非连续性的所以要通过 CurrentFileLen 全局变量来 文件写入的当前位置,以便下次数据流来时从 CurrentFileLen 位置开始写入知道 C

16、urrentFileLen= DownFileLenCount(文件总大小)改值在考生登录时已经获得。设计构思:通过查找 Exambak.bak 来 和比较 Exambak.bak 大小来判断是否已经 过考题库,如果未 则向服务器发送 文件请求,服务器获得请求并分配端口,即发送 考题库文件请求到服务器;否则则跳过。没有备份文件时有备份文件时模块名: RndSubject参数: 无模块名: ResumeSubject参数: 无功能:还原题目设计构思:通过已经分配好大小的数组 FillSubject () 填空题 SingleChoi ubject( ) 单选题 MultiChoi ubject(

17、)多选题 OperationSubject()操作题 分别从备份文件中提取出来放入数组中形成索引。功能:随机出题设计构思:通过已经分配好大小的数组 FillSubject () 填空题 SingleChoi ubject( ) 单选题 MultiChoi ubject()多选题 OperationSubject()操作题 分别从题库中找取相应的表单随机抽取表单中的 的位置分别放入数组中形成索引。3.1.5 ExamManageSystem.FrmFillTest文件名:FrmLogin.frm填空题模块名: CheckSubject参数: (cMemo As String, Sign As S

18、tring)模块名: ViewFillResult参数: 无功能:为填空题的空位分配答题的文本框设计构思:根据题目的填空数量来分配给考生答题文本框(此功能类似许多中的与答题纸)题目与分开。方便对考生的答题内容进行。功能:将数据库里的数据转换为考题样式设计构思:如:题目 VB 中什么函数是 1 提取字符的? 1 为填空 而存入数据库中则是 VB 中什么函数是取字符的?(是填空的标记可以是自己设定的)此函数就是将数据库中的转换成现实中看的懂的题目,并且 填空的个数到变量ResultNum。本块功能说明:是考生做答填空的窗口。3.1.6 ExamManageSystem. FrmSelectTest

19、文件名:FrmSelectTest.frm单选题3.1.7 ExamManageSystem. FrmMultiSelectTest文件名:FrmMultiSelectTest.frm多选题本块功能说明:是考生做答多选题的窗口。并即时考生当前所做的(考生做一题则一题的)本块功能说明:是考生做答单选题的窗口。并即时考生当前所做的(考生做一题则一题的)窗口界面这快主要介绍主要构思(详细请参照原代码)窗口在加载时通过对SingleChoi ubject()(已经在生成题目时候已经初始化过)中 号对数据库进行访问,取出每题的当前选择 和正确 本被到 SingleSelectQuestion()和 Si

20、ngleRightQuestion()中,以便对考生答题的状态进行 ,也方便总分的计算。题目的切换是通过SingleChoi ubject()数组来进行切换,SingleChoi ubject 是 题库中 号的索 全局变量CurrentT(是 当前题目的索引)初始值为 0 则代表第一条 。切换题目其实就是对 CurrentT 进行加减操作。之后通过数据库移动到 SingleChoi ubject(CurrentT)中 的 号,在显示在窗口中。考生对当前题目做答也是按照同上的方法 到数据库中和 选择题目的变量SingleSelectQuestion() 中3.1.8 ExamManageSyst

21、em. FrmOperation 操作题文件名:FrmOperation.frm的要求,本窗口则是给出题目的要求 考生可通过特定考核的工具进行本块功能说明:是考生做答操作题的窗口。非本程序功能,针对现在上机除了基础题外还应有应用方面窗口界面这快主要介绍主要构思(详细请参照原代码)窗口在加载时通过对 MultiChoiubject()(已经在生成题目时候已经初始化过)中号对数据库进行访问,取出每题的当前选择和正确本被到 MultiSelectQuestion()和 MultiRightQuestion()中,以便对考生答题的状态进行,也方便总分的计算。题目的切换是通过 MultiChoi ubj

22、ect()数组来进行切换, MultiChoiubject 是题库中号的索全局变量 CurrentT(是当前题目的索引)初始值为 0 则代表第一条。切换题目其实就是对 CurrentT 进行加减操作。之后通过数据库移动到 MultiChoiubject(CurrentT)中的号,在显示在窗口中。考生对当前题目做答也是按照同上的方法到数据库中和选择题目的变量 MultiSelectQuestion() 中。由于多选题不同与单选题,考生可选多个,所以考生每次选择题目时候都对复选框进行检索找出考生所选的,复选框(0-5)对应A-F)如果复选框 0,5 是被选择的 则题目就是”AF”到数据库和变量中。

23、题目的切换是通过OperationSubject ()数组来进行切换,OperationSubject 是题库中号的索全局变量CurrentT(是当前题目的索引)初始值为 0 则代表第一条。切换题目其实就是对 CurrentT进行加减操作。之后通过数据库移动到OperationSubject (CurrentT)中3.1.8 CommonModule 通用模块的号,在显示在窗口中。模块名: executeSQL参数: (ByVal SQL As String, msgstring As String)模块名: connectstring参数: 无功能:ADODB 连接参数设置功能:执行 SQL

24、 语句设计构思:执行 SQL 语句,参数SQL 是 SQL 语句,参数 msgstring 是查询信息返回值模块名: ConnectServer参数: 无模块名: CountZongFeng参数: 无功能:计算总分并发送总分到服务器 准考证+分数设计构思:通过对考生所选的和正确进行循环对比正确则加上改题所得的分数。模块名: JieMi参数: (Dstr As String, Dkey As String)功能:计算总分并发送总分到服务器准考证+分数模块名: GetExamInfo参数: (CData As String)功能:获取信息3.2服务器文件名:FrmMain.frm本块功能说明:是服

25、务器的主要界面。是系统的,该模块接受的连接请求并与其通讯。是进入系统其他模块的主要途径。3.2.1 ExamServer.FrmMain 主模块设计构思:参数 Cdata 是存放信息的文本流 格式是:填空题总数+填空题每题分数+单选题总数+每题分数+多选题总数+每题分数+操作题总数+时间+考题文件大小;将内容分别提取到变量中去。设计构思:参数 Dstr 密文,参数 Dkey 密钥 通过密文的每个字符和密钥的每个字符进行异或操作得到明文,功能:连接服务器模块名: Init参数: 无功能:初始化系统设计构思:初始化系统,初始化信息,初始化服务器状态信息。模块名: Winsock1_DataArri

26、val参数: (Index Aseger, ByVal bytesTotal As Long)功能:获得的传输的信息设计构思:是以命令类型+内容 返回或请求给服务器端的如下表单:模块名: Winsock1_ConnectionRequest参数: (Index As功能:响应eger, ByVal requestID As Long)计算机的连接请求文件名:FrmLogin.frm本块功能说明:登录界面,通过用户输入的用户名和在数据库中检索,如果正确则登录设计构思:每当获得一次请求 则会为这台请求的的计算机分配一个 Winsock 与它建立连接或找取空闲的 Winsock 与他建立连接3.2.

27、2 ExamServer.FrmLogin 登录模块命令名含义|StudenID|请求验证考生成功返回发送|StudenOk|失败|StudenEr|GetExamI|请求获得信息。并发送|GetExamI|+信息到|ExamOver|请求结束,服务器将发过来的成绩进行记录如果成功返回|EXOverOK|如果失败返回|EXOverEr|CheatMsg|收到处理的反馈信息,服务器将对改考生进行|SendFile|文件传输请求,(分配一个线程并随机开放一个临时端口等待传输文件)文件名:FrmEditPW.frm & FrmAddUser.frm本块功能说明:修改和添加模块文件名:FrmExamS

28、etup.frm本块功能说明:设置,将信息在ExamSetup.ini 文件中3.2.4 ExamServer.FrmExamSetup信息设置模块3.2.3 ExamServer.FrmEditPW & FrmAddUser 修改模块添加用户模块文件名:FrmAddFillSubject.frm本块功能说明:添加填空题目,填空位置以特殊符号代替如(1+1=),通过 CheckSubject 转换成 1+1=同时算出填空的数量,分配好存放的TextBox,管理员输入后存入数据库。(加密)密钥为当前号也一起存入数据库说明:FillSubject 对应填空题 Count 题目总数 Value 为每

29、题分值 Select 对应单选题 Count 题目总数 Value 为每题分值 MultiSelect 对应多选题 Count 题目总数 Value 为每题分值 Operation 对应操作题 Count 题目总数 Value 为每题分值 Time 对应时间 Value 时间值3.2.5 ExamServer.FrmAddFillSubject 添加填空题模块模块名: CheckSubject参数: (Sign As String)功能:转换填空分隔符,计算分割符数设计构思:填空位置以特殊符号代替如(1+1=),通过 CheckSubject 转换成 1+1=同时算出填空的数量,分配好存放的数组变量。模块名: CheckResult参数:无功能:转换填空分隔符,计算分割符数文件名:FrmEditFillSubject.frm本块功能说明:编辑填空题目,与上一节功能相似只是做编辑操作,填空分隔符不可修改设计构思:检查是否全部输入。3.2.6 ExamServer.FrmEditFillSubject 编辑填空题模块文件名:FrmAddS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论