题目6 题目3 C Empty
:
: :
: :
: Empty
题目n 题目n A Empty
2.4 如何避免系统蹦溃后考生信息及题目信息丢失?
可在考生登获得考试信息并生成考题后把考生信息,服务器地址,考试题目信息,存入备份文件Exambak.bak中.每次异常退出后在运行时读文件的信息到程序中.
2.5 如何计算总分?
考生在提交试卷前,对所有题目进行检索发现考生为做的题目并给予提示.可将考生选择的题目和正确答案放入两个数组中.然后对两个数组中的元素进行比较相同则总分+该题的分值
A
循
环
比
较 D
Empty A
B B
D D
A C
:
: :
:
C D
D D
2.6 如何防止考生作弊?
通过随机出题目加强系统防作弊功能,锁定系统桌面.
2.7 数据如何隐蔽?
方案1:
禁止考生访问浏览计算机内容。
方案2:
更改数据库扩展名,把所有后缀为MDB(aCCESS数据库文件)改成dll。让想有侥幸心理查找数据库的考生无从下手
方案3:
即使找到数据库并打开了数据库,系统对数据库里的内容正确答案进行了加密。即使找到正确答案也是乱码看不懂内容的含义。
2.8 如何解决服务器文件传输多线程问题?
考场很多考生需要对考题进行下载,而主进程只能对1个请求进行文件传输,因此只要有一个考生在下载考题,则其他考生则必须等待,因此需要实现多线程的操作,而要用VB实现多线程,是件比较繁琐困难的事情,而且调试经常使得VB崩溃。因此可将此部分拆分另一个工程。此工程是专门传输文件的工作。通过主工程调用传参数(服务地址+端口号+要传输的文件名)。因此解决了文件传输的1对多同步进行的问题
2.9 如何实现加密算法?
通过VB中的XOR(位操作-异或)操作,明文对密钥的AscII码异或操作后得到密文。如果密钥和明文相同异或后则二进制为000….所以为了避免,则遇到相同的用Chr(128)
如明文“ABCD”密钥 “ZC”
A Z 密文
B C
C
D
三 主要模块说明
3.1 考试平台
3.1.1 ExamManageSystem.FrmMain 程序主窗口
文件名:FrmMain.frm
本块功能说明:是考试平台的主要界面。
窗口界面
模块名:Init
参数: 无
功能:窗口初始化
设计构思:
考试平台运行时初始化,通过查找ExamBak.bak文件来判断程序运行时是否要读取备份文件如果则说明考生有异常退出发生,已经登录过则UserLogin = True在读取备份文件
模块名: LockPC
参数: (locked As Boolean)
功能:锁定系统桌面
设计构思:
通过访问API函数FindWindow找到任务栏上的开始按钮,任务拦等句柄,并同过ShowWindow来隐藏显示窗口. 通过SystemParametersInfo禁用CTRL+ALT+Del ALT+F4 等系统键
模块名: BakStudentInfo
参数: 无
功能:备份学生信息
设计构思:
通过WinAPI函数WritePrivateProfileString 将学生信息以INI文件格式写入ExamBak.bak文件中.
模块名: ResumeStudentInfo
参数: 无
功能:还原学生信息
设计构思:
通过WinAPI函数GetPrivateProfileString 将学生信息以INI文件格式从ExamBak.bak文件中读取出来给系统变量
模块名: Winsock1_DataArrival(Winsock事件
参数: (ByVal bytesTotal As Long)系统给定
功能:获得服务器传送来的信息
设计构思:
服务器发送过来的信息是以 命令+内容 发送过来,此模块先读取命令部分 在依据是先约定好的命令决定做哪步操作,命令详解如下:
命令名 含义
|StudenEr| 考生验证失败
|StudenOk| 考生验证成功
|GetExamI| 获得考试信息 由模块GetExamInfo获得内容
|SendMsgs| 提示信息
|EXOverOK| 考试正常结束(服务器已将成绩保存)
|EXOverEr| 考试结束异常(服务器未将成绩保存)
|CheatMsg| 作弊处理
模块名: Winsock1_ Error (Winsock事件)
参数: (ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)系统给定
功能:捕捉与服务器连接的错误
设计构思:
此事件的得到出发是从FrmLogon(登录窗口)中输入IP地址及准考证后连接服务器。TryHost是FrmMain中的全局变量是连接服务器次数的关键字.只要未连接到服务器并TryHost未满6次则不停的连接服务器
3.1.2 ExamManageSystem.FrmLogin 考试登录
文件名:FrmLogin.frm
本块功能说明:对考生进行验证。如果已经进入考试状态服务器监考老师可公布服务器的IP地址给考生考生输入服务器地址和准考证号进行登录考试。
窗口界面
模块名: CmdLogin_Click (CommandButton事件)
参数: 无
功能:登录服务器
设计构思:
通过主窗口的WINSOCK控件连接服务器,如果未连接到服务器则尝试连接7次
3.1.3 ExamManageSystem.FrmDownLoad 下载考题窗口
文件名:FrmDownLoad.fr