基于C/S架构的通用计算机在线考试系统的实现
和管理中心的双向通信。软件系统客户端运行时的主界面如图2所示。
4.1 中间业务逻辑层设计
中间层服务器是系统设计的关键,在中间层上设计了大量的远程方法供客户端调用,这种方式称为"瘦客户机,胖服务器"模式。使用该模式,当客户功能有所变动时,只需更改中间层上的方法,而不用重新分发客户端。在Delphi7中使用DataSetProvider控件提供RPC服务,对于客户端的每一个操作,都可以通过在中间层服务器中设计相应的方法实现[5]。在中间层设计的两个主要方法如下:
(1)function ExeClientSql(const MySql: WideString): WordBool; safecall;
//执行SQL的更新、插入、删除等操作,返回是否成功;
(2)function GetClientData(const MySql: WideString): OleVariant; safecall;
//执行SQL的查询操作,返回查询结果。
4.2 软件系统的主要技术特点
(1)考试时由考生随机抽题组卷,同时确保相邻考生抽取不同的试题。实现该功能的存储过程如下:
CREATE PROCEDURE cp_Paper_Sel
@tblDL char(20),
@MyPrior int,
@MyNext int,
@MyKM char(30)
AS
exec(′select top 1 套题编号,套题名称 from tblcrecord where 套题编号 not in
(select 套题编号 from ′+@tblDL+′ where IP序号=′+@MyPrior+′or IP序号=′+@MyNext+′) and 科目名称=‘’‘+@MyKM+’‘’and 是否抽取=′′是′′ order by newid()′)
GO
(2)IP安全技术:考试系统中将考试IP限定在某一区域内,如192.168.36.1到192.168.36.200,可以防止在考场外进行替考,同时在考试时通过"禁止未登录考生参加考试"功能,在考生登录之后进一步避免了场外替考现象的发生。此外,将考生考号和考生机器IP地址进行绑定,考生在考试过程中,只能在一台计算机上答题,以防止考生之间相互换题等作弊行为。当考生登录到考试系统以后,将考生机器IP地址写入考生信息表以及登录IP表,防止一个考号在两台机器上登录。
//检查是否同一IP登录
with cds2 do
begin
Close ;
SQL.Clear ;
SQL.Add(′exec sp_Query_All:fldName,:tblName′);;
Params.ParamByName(′fldname′).Value :=′*′;
Params.ParamByName(′tblName′).Value:=
dm.tblDL+′ where登录IP='''+dm.MyIP+''';
try
Open;
if recordcount<>0 then
begin
sMessageDlg(′警告′,′无效的考试请求!′,
mtWarning ,[mbOK],0);
exit;
end ;
except
raise ;
end;
(3)考试时间限制:考生第一次取题开始计时,到规定的时间结束,考生只有在该时间内可以取题,其他时间都不能取题,计时由服务器完成,同时,若考试过程中由于意外情况导致考试终止时,监考老师可以通过输入二次答题密码的方式让考生继续答题,从而实现考生考试时间的公平性,又加强了试题的安全性。
(4)大量应用存储过程,保障系统的快速反应和高效运行。例如,将考生抽取的试题加入到考试数据库中的存储过程:
CREATE PROCEDURE cp_Paper_Add
@tblKS char(20),
@MyNo char(10),
@Mynum char(20),
@Mytbl char(10)
AS
exec(′insert into′+@tblKS+′ (学生学号,套题编号,试题序号,试题内容,试题答案,试题分数,是否答题,套题名称,考试科目,试题类型,学生分数,类别序号) select '''+@MyNo+''','''+@Mynum+''',试题序号,试题内容,试题答案,试题分数,′′否′′,套题名称,科目名称,试题类型,0,类别序号 from ′+@Mytbl+′ where 套题编号='''+@mynum+''')
GO
(5)数据加密功能。软件系统中使用了关键数据加密和数据库动态加密两种技术。对于考试系统中的重要数据使用关键数据加密技术,如试题库中的试题采用加密的方式存储,用户登录时的密码加密后保存到数据库中,以免被他人获取并泄漏。而用户每次登录数据库时,系统都会自动修改数据库密码并进行加密存储,这样使得数据库密码具有不确定性,大大增加了数据库的安全性,实现数据库动态加密[6]。
(6)试题录入功能独立于主系统。将试题录入功能与主系统分开,既保障了系统的安全性,又方便教师进行试题录入。通过设置登录账号和录入科目,限制教师只能在指定时间内根据指定的验证码录入指定科目试题,增加了题库的安全性。
采用C/S模式多层结构开发数据库应用系统,比传统的C/S模式结构有着无法比拟的优势。该软件系统主要采用了多层结构使得业务逻辑从客户端分离出来,在最为关键的中间层上,设计了大量的远程方法供客户端调用,从而形成"瘦客户机,胖服务器"模式,不但很好地实现了软件系统的各项功能,而且简化了程序设计,大大减少了网络流量,从而提高软件系统的运行效率、可维护性和整体性能。
- RedHatLinux新手入门教程(5)(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- VXWORKS内核分析(11-11)
- 嵌入式开发工具简介(11-09)
- Linux2.4内核为我们带来了什么?(11-12)
- RedHatLinux新手入门教程(11-12)