季志江,庞晓枫,周广汉
(浙江邮电职业技术学院,浙江 绍兴 312016)
随着计算机和网络技术的蓬勃发展,基于Web的信息系统应用越来越广泛。而在高职院校中,作为检验学生知识和技能掌握情况的主要考核方式之一的纸质考试,由于其过程复杂、效率低下并且较易出错,渐渐地不能适应高职院校发展的需要,而基于Web的网络考试系统具有方便、灵活、节省成本、高效率等优势,使其在高职院校的应用中显得越来越普遍。
目前,考试系统的开发主要有基于C/S结构模式[1]和基于 B/S结构模式[2]或两者相结合。基于C/S结构模式的考试系统虽然可以将很多事务让客户端去处理,以减轻服务器的压力,但是由于需要为每个客户机安装一个客户端程序,并且在日后的维护和升级中,还将重新安装这个客户端程序,因此,采用C/S结构模式的考试系统无疑将带来超额的工作量及人工成本。从方便、灵活和减少升级维护的工作量角度看,这种模式在考试系统的开发中显得有点不太适合。
从开发环境层面上讲,在高职院校中,或多或少都建有计算机机房,而计算机上采用的操作系统又以Windows XP居多,并且,随着信息化技术的不断发展,学院一般都建有高效、稳定的校园网;从工作量层面讲,教师需要授课、科研及社会服务,其工作量是比较大的。因此,基于高职院校的实际情况,考试系统开发采用B/S结构模式较为适宜,在该模式下,不用为每个客户机安装客户端软件,而是通过浏览器来访问,学生考试只需通过Windows XP自带的浏览器就能进行相应的考试操作,而后续的维护和升级工作也只需在一台服务器上进行就可以了,所以它不仅提高了工作效率,还可以减少教师一部分的工作量,降低人工成本。
考试系统的功能模块主要包括登录模块、管理员模块、教师模块和学生模块。登录模块是用于管理员、教师和学生3类用户登录考试系统的模块,根据用户输入的账号信息,系统自动与后台数据库进行账号和密码的比对,自动判断用户类别,比对成功后,直接登入该类用户的模块中。管理员模块主要用于对用户、班级、部门和课程进行管理,包括查询、增加、更新和删除等子功能。教师模块主要包括试题库管理、组卷(自动组卷和手动组卷)管理、试卷管理和阅卷(采用客观题的自动阅卷与主观题的后台人工阅卷相结合的方式)管理、成绩查询等。学生模块主要包括网络考试功能和成绩查询功能,而网络考试功能是该模块的核心。网络考试系统功能结构图如图1所示。
图1 网络考试系统功能结构图
存储过程是一个SQL语句集合,用于完成特定的功能[3],并可通过应用程序调用执行。存储过程执行速度较一般SQL语句快,只需在创建的时候编译一次[4],后续的执行均无需重新编译;存储过程与程序设计语言中的函数比较类似,可以被多次重复地调用,这样将使得开发工作量得到相应的减少。鉴于上述优点,网络考试系统在数据库中设计了相关的数据表(如表1填空题表)。
表1 填空题表
在对这些数据表进行读写操作的过程中,主要运用了存储过程,如添加填空题的存储过程如下所示:
该存储过程的作用是通过参数传递直接在填空题表“FillQuestion”中插入一条记录,随着填空题数量的增加,该存储过程经常会被调用,而且可以被重复任意次地调用而无需再次编译,因此,使用存储过程不仅相当方便,而且还可以提高工作效率。
考试系统的后台数据库,根据学院试题库信息量的规模及需求,采用SQL Server 2005企业版。ADO.NET技术提供了与.NET框架的无缝集成[5],通过该技术,可以比较方便地与数据库建立连接,并进行相应的查询、插入、修改、删除数据操作[6]。本系统在操作数据库之前,首先运用.NET Framework的SQL Server数据提供程序 System.Data.SqlClient.SqlConnection连接到SQL Server 2005,并将数据库连接字符串保存于web.config中,在实际运用时,就可以在程序中通过 ConfigurationManager.AppSettings["ConnectionString"]来调用。在操作数据库时,则采用Command对象之一的SqlCommand对象进行相应的操作,而数据库中涉及的查询操作主要运用ADO.NET的对象DataSet,它是较独立的数据集合,更可以在关闭数据库的情况下使用,并通过另一对象SqlDataAdapter来填充和更新相关的数据[7]。
AJAX是一种创建交互式网页应用的网页开发技术[8]。在传统的Web应用中,与服务器的交互通常是客户端网页先发送请求,然后等待服务器的响应,再由服务器返回一个新的网页至客户端[9]。但是,在这个与服务器交互的过程中,旧客户端页面与返回的新页面之间通常有很多代码是一样的,这样就对网络资源造成了一定程度的浪费,从而导致用户界面的响应时间也将有所延长,最终影响了用户体验。采用AJAX技术,在与服务器的交互中,服务器端无需取回和发送整个客户端页面的所有数据,而只需要取部分有用的数据即可[10],这样,与服务器之间的通信数据将会显著地减少。在考试系统中,主要通过AJAX技术对登录模块和部分操作页面进行优化,采用UpdatePanel控件来实现页面局部刷新[11],而通过与服务器的异步数据交互,服务器数据一有更新,将动态地更新这部分数据至客户端页面。配合Script-Manager控件和UpdatePanel控件即可实现页面异步局部刷新,其主要代码如下所示:
网络考试系统中的主要模块有出卷模块、阅卷模块、网络在线考试模块等,在此主要讨论网络在线考试模块的设计,其工作流程如图2所示。
图2 网络考试流程图
网络考试是由学生通过浏览器进行考试操作,在整个考试过程中,学生的交卷时间将会不一致,或提前手动通过提交按钮交卷,或等考试时间结束由系统自动交卷。其工作流程由以下步骤组成:
第1步 学生在考试系统登录界面输入本人的账号和密码,输入正确则转到学生功能子系统,否则根据系统的提示信息重新输入;
第2步 选择试卷,准备考试;
第3步 点击“开始”按钮后开始考试,同时,考试倒计时自动启动;
第4步 如果学生通过“提交”按钮提交试卷,则结束考试,否则继续考试;
第5步 如果考试倒计时归零,系统自动交卷,则结束考试,否则返回到第4步。
在设计网络考试模块时,系统根据先前生成的试卷将各个类型的试题展示在学生的浏览器上,因为每份试卷的题型可能会不一致,所以在取试题的时候要进行相应的判断,以下是取论述题时的主要代码:
安全性对于一个应用程序来讲相当重要,当前五花八门的计算机病毒与黑客的威胁[12],使得考试系统本身的设计及运行环境须具有比较高的安全性。网络考试系统的设计与运行,需要考虑的安全性因素主要有:操作系统环境的安全性、数据库连接字符串的安全性及防范SQL注入攻击等。
网络考试系统同其它应用软件一样,同样运行在操作系统环境中,而操作系统的安全将是网络考试系统安全、稳定运行的前提和保证。因此,在操作系统环境安全性上,可以选择安装一款杀毒软件,并开启防火墙,进行相应的设置,还要定时检查和更新操作系统的所有安全漏洞补丁,以避免或减少黑客、病毒的侵害。
在网络考试系统的实际使用中,经常需要操作数据库,如添加班级、修改密码或者删除过时或不需要的数据等,在进行各种操作之前,首先需要和数据库进行连接,其连接字符串是存放在web.config文件中,而该文件的内容是直接可以用肉眼看到的,这就为网络考试系统的安全带来了一定程度的威胁,因此,通过Aspnet_regiis.exe注册工具并配合相应的参数来加密文件中的数据库连接字符串所在的配置节,将可以有效地提高其安全性。
数据库连接字符串加密前代码如下所示:
数据库连接字符串加密后的代码效果如图3所示:
图3 数据库连接字符串加密后的效果
SQL注入攻击是一种非法将SQL代码添加到用户输入或页面查询中,从而篡改或破坏数据库的攻击[13],其攻击手段多种多样,但通常采用的攻击方法是通过SQL代码插入到用户的输入中,如 SQL语句:"SELECT*FROM Users WHERE username='"+name+"';"[14],在正常的情况下,其作用是查询某个用户的数据信息,但如果用户名“name”被改成nam'or'e'='e',这样语句中的条件'e'='e'永远成立,就失去了条件判断的意义,从而也得不到预期的结果了。因此,防范SQL注入攻击,具有实质性的意义。在程序设计和使用过程中,应尽量使用参数化语句或使用存储过程,还应定期检查用户提交的数据是否有异常等。
基于B/S结构模式的高职院校网络考试系统不仅可以为教师和学生提供考试的便利,而且也切实减少了教师的部分工作量,从而提高了工作的效率。本系统在开发时,根据实际需要采用合适的开发技术,同时还植入系统后续运行和维护的安全性理念。本系统在某些功能上还不够完善,如网络考试界面的可视化效果不够完美、自动出卷功能还不够智能化,需要再逐步扩展,以切实适应高职院校的发展需要。
[1]百度百科.C/S[EB/OL].http://baike.baidu.com/view/45170.htm,2006-04-29.
[2]百度百科.B/S[EB/OL].http://baike.baidu.com/view/679018.htm?=ala0_1,2006-06-09.
[3]Buck Woody.Administrator’s Guide to SQL Server 2005[M].Pearsona Education,Inc.,2006.
[4]李琼汉.浅谈存储过程在科研管理系统中的应用[J].电脑知识与技术,2012,8(2):464-466,468.
[5]谢新屋,彭新导.基于ADO.NET的数据库访问技术研究[J].信息与电脑:理论版,2012(7):89-90.
[6]钟红春,房大伟,管小清,等.ASP.NET2.0程序设计教程[M].北京:人民邮电出版社,2009.
[7]刘宝娥.利用ADO.NET技术开发SQL Server数据库的相关研究[J].赤峰学院学报:自然科学版,2012(3):46-47.
[8]王杰瑞,宾晟,张琴.最新 ASP.NET+SQL Server项目开发全程实录[M].北京:科学出版社,2009:376-377.
[9]严杰.浅析浏览器端开发技术Ajax[J].浙江旅游职业学院学报,2007(2):40-44,53.
[10]仇明.基于Ajax的在线考试系统的研究与实现[J].长沙大学学报,2010,24(5):73-74.
[11]俸学文,付强.基于.NET的Ajax技术研究及应用[J].计算机与信息技术,2012(3):50-52.
[12]李广润.浅析计算机系统安全[J].吉林省教育学院学报:下旬,2012(6):153-154.
[13]陈志辉,吴敏敏.基于ASP.NET网站防范SQL注入的网络安全技术分析[J].赤峰学院学报:自然科学版,2012,28(13):17-19.
[14]明日科技,张跃廷,房大伟,等.ASP.NET范例完全自学手册[M].北京:人民邮电出版社,2009.