• 909.74 KB
  • 2022-04-22 13:36:47 发布

基于ASP.NET的网络在线考试系统.doc

  • 41页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'基于ASP.NET的网络在线考试系统目录1绪论11.1本课题的研究意义及必要性11.2相关领域的应用发展现状及趋势12系统开发相关理论和技术的分析与研究32.1C#语言的概述32.2ASP.NET技术概述32.3UUR框架技术特点与概述42.3.1软件概要42.3.1软件主要特点43在线考试系统需求分析63.1在线考试系统概述63.1.1系统用例模型63.1.2系统流程图73.2在线考试系统需要解决的问题83.3在线考试系统需求问题描述83.3.1在线考试系统功能性需求83.3.2在线考试系统非功能性需求84在线考试系统概要设计134.1在线考试系统设计目标134.2在线考试系统可行性分析134.3在线考试系统功能架构及设计134.3.1考试模块134.3.2管理员模块145系统详细设计155.1考试维护与制定模块155.1.1考试科目管理模块155.1.2试卷制定模块155.1.3试卷维护模块185.2学生考试模块195.3试题类别维护模块225.3.1填空题模块226数据库设计26 6.1概述266.2约定266.3结构设计266.3.1概念结构设计266.3.2逻辑结构设计276.4数据字典设计297考试系统部分详细流程327.1考生实际考试界面327.2管理员操作界面33结束语35致谢36参考文献37附录部分代码38 1绪论1.1本课题的研究意义及必要性随着因特网的迅速发展,网络技术的发展使得网络开放性、分布特征和基于网络的大规模计算能力从而突破了时间和空间的限制。基于ASP.NET的网络考试系统极大地提高了教学的灵活性,与传统考试模式相比,网上考试具有无可比拟的优势,它将传统的考试试卷的过程中组织、印刷审批,申请等等每个链接到一个或两个链接,大大提高的安全测试,不仅可以节省大量的时间避免耗费人力、物力和财力,但也可以大大提高考试的随机性和公平性。随着远程教育的蓬勃发展,作为教学基本在线考试系统也值得关注,有助于提高学生知识水平以及能力进行充分的考查,网络考试系统不仅降低老师的工作压力,也能反映出相应行之有效的考试,也为了确保考试的公平性,在一定的程度里降低了对纸质的依赖,这样就大大降低对环境的压力,同时也会给学生和老师带来极大的便利。随着互联网相关技术的发展,特别是WEB网络技术的出现,将会成为一个推动远程教育快速发展的起点。尽管在线考试系统已经有了许多成功的案例,但总的来说,对考试内容、主题和不同,如更适合的流程,重新组织过程,也会做出适合不同情景下的考试系统。1.2相关领域的应用发展现状及趋势从目前的考试系统来看,主要有以下这三种:1.单机类考试系统:该系统是早期存在的在线考试系统,在单独的计算机集群里所有的计算机都要分别具备考试的整套设备。这种系统的缺点是后期进行系统的维护和升级很复杂,需要多处客户端同时进行升级;同时对于成绩信息的收集,比对也相对繁琐;优点是设计过程和开发工程相对简单,不需要复杂的配置。由于单机版不存在服务器,这样考试信息的收集需要一台一台通过人工进行,也会使工作量增大。单机版不需要连接网络,也不区分客户端和服务端。比如之前较早进行使用的全国计算机等级考试。2.基于C/S的考试系统:Client/Server(客户端/服务器端)。这类结构的考试系统需要实现对局域网的控制。通过区分局域网的服务端和客户端程序,来实现软件与服务器之间的通信。学生端部分安装客户端软件,另外服务端主要的作用是管理相关考试信息同时对客户端进行控制。该类型的缺点是需要安装客户端,后期的升级和维护也比较困难。优点也非常明显对于成绩信息的收集和查询都比较方便,这主要得益于实现了局域网通信。该类网络考试系统也比较普遍,比如职称考试系统。3.基于B/S模式的考试系统:Browser/Server (浏览器/服务器端)。这类结构的考试系统,是在WEB技术发展后的一种新的网络结构实现方式。客户端只需要安装一个浏览器,例如谷歌浏览器或者IE浏览器等等,就可以很方便的实现服务端的数据交互。客户端不需要安装额外的软件,只要有浏览器,能上网,就能实现数据交互。这种系统应用于局域网在线考试系统的同时,许多其他系统也在采用这种模式,例如像网上查询系统,选课系统等。这种结构的优点是,在后期可以说是零安装、零维护。并且扩展、升级非常简单,符合软件不断发展的需求[1]。由于在线考试系统的实用性和灵活性,在多处领域都得到了广泛运用。其中具有代表性的一个例子就是GPE(中文全称美国研究生入学考试)的在线考试,因为它的出现,使原来一年两次参加的考试,变为每个正常工作日可以随时参加GPE考试。再有ICCP推行的相关的认证考试。国内主要有全国性的计算机等级考试,以及非计算机专业的大学生计算机考试等等。但是很多的考试系统还是基于之前较早的(C/S)这类模式的软件系统。其他在线考试系统还包括万东网络考试系统和阿里巴巴在线考试系统等。从现在的需求考虑,因为考试组织过程、以及考试内容和题型等等的不同,该系统的可塑性还是很大的。综合考虑:本系统采用基于B/S模式在线考试系统,相比传统的考试模式有以下几个方面的优势:一个方面,更加灵活,既可本地进行,也能异地进行,并且设有大量题库,考试试卷随机生成,既减轻了老师出题的压力,也提高了试题的随机性,从而保证了考生考试的公平性。本在线考试系统把学科、试题,改卷,成绩查询等繁琐的流程集中到一起,实现了一个在线考试管理的平台,不同的角色进入系统可以进行不同权限的操作,更加的便捷和快速。 2系统开发相关理论和技术的分析与研究本课题旨在开发一个基于.NET平台,采用B/S三层架构模式[2],并且采用了SQLServer数据库技术以及现在比较流行的ASP.NET等技术,并且采用了部分UUR框架做前端UI界面,实现了整个系统。下面着重对以上.NET相关技术分别进行着重的讲解和分析。2.1C#语言的概述C#是一种面向对象的、基于VisualStudio.NET相关开发平台的开发设计语言。包括了封装以及继承和多态的特点。C#在结合VB、Java等语言特性的同时,在功能完善方面又结合了C语言的特点。C#不是一种繁杂的语言,它将编程的过程尽可能的简化,合理的结合了.NET框架,在实现WEB应用时也得心应手。不包含指针,没有复杂的冗余代码,使整个过程很容易接受。在C#的整个的系统里面,将每个类型都封装为对象,将全部内容封装到每个类当中,避免了命名的冲突,由单继承作为类型,避免的类型定义产生混乱。每个类是一个整体,使代码结构更加清晰,在.NET框架的基础上建立了对象模型,通过与WEB协调配合的使用,通过对C#组件的应用,能够更加便捷的服务于Web服务。C#没有多继承的概念,但是类的多继承是由接口实现的C#不支持类的多继承,但可以通过对接口的继承来支持类的多继承,如果需要,它允许将某些类或类的方法声明为非安全。C#遵守.NET公共语言规范,保证了其组件与其他语言组件间的互操作性。衡量一种语言优秀与否的重要标准是它的安全性与错误处理能力。C#的先进设计思想可以消除许多常见错误,提供完整的安全性能,当C#运行于.NET平台时,.NET运行库提供代码可访问安全特性,允许根据代码的ID配置安全等级。C#中是不能使用没有初始化的变量的,所以变量类型要求是安全的,未经过初始化的变量成员会被工具编译器重置为零,同时指向引用类型的成员变量中也不能包括整型变量。同时C#语言的各项检查机制趋于完善,就程序运行过程中的处理能力做了很大改进。2.2ASP.NET技术概述ASP.NET技术简单来说,就是微软的服务器端一项实现网页展示的Web技术。ASP.NET需要一个Web页面向对象编程方法执行。每个元素在一个ASP.NET页面被视为一个对象,并在服务器上运行。一个ASP.NET页面将会被编译成一种中间运行的语言,然后它通过Runtime-compliant共同语言编译器,然后将JIT编译器把中间代码转换成本机代码,使代码最终在处理器上运行。因为代码可以直接从处理器运行,网页加载速度远远超过经典的ASP页面,嵌入式VBScript或者JScript必须不断的进行运行和缓存。 ASP.NET常用对象有三个,包括Application对象、Response对象等,其中Request的作用是接受表单信息,侦听发给服务端的数据。Response对象的作用是发送表单信息,将消息表达到客户端。服务器控件是ASP.NET技术中另一个实用的内容。Web服务器控件位于System.Web.UI.WebControls命名空间中。所有Web服务器控件都是由WebControls进行派生出来的。很多Web服务器控件所输出的客户端代码很复杂。Web服务器控件总是以asp:开头,它们有很多共同的属性和方法。Label有一个叫AssociatedControlID的属性,用来通过控件ID将那个控件与Label关联(那个控件是文本框,就会是文本框得到焦点,是按钮的话,就会触发按钮的单击事件等等)。对于Form标签有一个DefaultButton属性,用于设置默认按钮,页面打开后,按回车就会触发该按钮事件。Panel有滚动功能,当页面的控件太多时,可以将这些控件放到Panel中,然后设置控件的ScrollBars属性为Auto,这样当控件的长或宽超过Panel的长或宽时就会出现滚动条。还可以设置样式Style="overflow:scroll;"RadioButtonList和CheckBoxList有一些而外的控制输出布局的属性。2.3UUR框架技术特点与概述2.3.1软件概要UUR的网页界面集成框架是一套完整的BS模式系统界面解决方案。提供给设计和开发WEB应用的人员使用。适合用于自动化办公、电子政务和RIA应用等系统的开发中。本框架采用模板的方式开发,本框架采用模板的方式开发,让使用者在开发系统时能够无需关心界面表现和兼容性等方面,通过简单的复制粘贴和非常小的修改量就能够方便地制作出精致美观、兼容性强的系统界面,从而把精力集中在系统功能的设计和实现上,提高开发效率,降低开发成本。2.3.1软件主要特点1.UUR框架中目前包含了14中不同导航结构的主页模板,十多种主页能够应对各种各样的BS系统需求。这其中包括纵向多级菜单导航、纵向抽屉式导航、树结构导航、portal页面等等。每种导航结构支持的菜单层级也不尽相同。开发者可以根据自己的需要选择任意一种或多种,然后基于该主页进行开发。2.UUR框架中目前已经包含了非常多的内容页面模板,并给出代码示例。开发者在制作一个页面时,可以根据自己的需要找到合适的内容页面模板,然后拷贝相关代码即可做出美观、兼容性好、用户体验良好的页面。必要时可以根据自己的需求进行微调。3.UUR框架针对网页原有的组件进行改进,一方面提高了组件的美观和扩展性,另一方面还不影响开发者的开发习惯,有助于开发效率的进一步提升。4.传统的网页组件很有限,无法满足现今WEB页面开发的需要和用户对良好体验的需求。UUR提供了更多的功能更为强大的组件和特效供使用,而且绝大多数组件使用方法非常简单。这些组件极大地提高开发效率和用户的体验度。5.简而言之,CSS库就是一些已经写好的CSS,只需要用class=“xxx”来表示页面就可以了,不必再写CSS。通过CSS库我们可以很快速的完成开发,提高我们的效率。CSS库包含控制基本布局(浮动对齐行高等)、控制表现(宽高、颜色、字号、缩进)、控制定位(上下左右的偏移量)和图标库等。以图标库为例,使用图标库可以通过一句话很方便地创建图标,应用于按钮、菜单项、工具条中。 6.UUR资源库除了框架提供的皮肤外,有非常丰富的皮肤样式,用户也可以根据教程自己轻松定制皮肤。并且还支持了动态换肤等功能。7.拥有完美的浏览器兼容性,框架在整个制作过程,通过多种兼容性技术一直确保在各主流浏览器中做到兼容。目前可以与:IE6、IE7、IE8、IE9、FireFox、Chrome、Safira等主流浏览器完美兼容。8.提供了分离版本的特效和组件,假如WEB应用只需要其中的几个特效和组件,就不必将整个框架机制都引入到项目中,每个组件都是一个独立的文件包。方便了我们对UUR框架的使用。 3在线考试系统需求分析3.1在线考试系统概述如今,很多大学开始采用在线考试的方式,一般有三种在线考试系统,包括单机版、C/S和B/S结构的结构。独立的考试制度,有必要通过机器来管理,维护和升级困难,自动化程度低,C/S(客户机/服务器)结构,只适用于一个局域网(LAN)。在特定的软件安装在客户机上,维护和管理困难。由于这些原因,我们重新设计了基于B/S结构的在线考试系统。在现阶段原有的基础上,同时具有适用范围广,无任何复杂的条件限制,在仅有浏览器和互联网时就能轻松开始考试。从而达到该系统数据更方便维护和升级简单等。3.1.1系统用例模型下图分别以考生、管理员和教师的身份描述了该考试系统的用例模型图3.1系统用例模型图 3.1.2系统流程图下图为考试系统的系统流程图,从考生的角度描述了整个系统模块的进行流程。图3.2系统流程图 3.2在线考试系统需要解决的问题该系统是以创建一个基于B/S模式框架的在线考试系统为目的的,只要网络覆盖的范围内,都可以自主进行考试。系统包括教师、管理员、考生这三类不同的用户。对于此在线考试操作的管理员可以对教师、考生和考场信息进行管理;教师一类的用户也可以管理试题库,包括对试卷类别的管理、已经完成的成绩查询等;考生一类的用户可以修改密码信息、自主考试、个人成绩查询等。整个流程实现全部的传统考试流程,提高了工作的效率和完成相关信息的正确性,打破了传统考试模式下时间和空间对考试过程的限制。彻底实现无纸化考试,从而将教师和学生从原本繁重的考试成本中脱离出来。3.3在线考试系统需求问题描述3.3.1在线考试系统功能性需求根据对网络在线考试系统的分模块进行需求的分析和相关考务要求,结合了现在实际的考试场景,列出该考试系统应该具备的相关流程的功能有以下几个模块:1.系统能够对教师和考生的基本信息、权限进行管理,在用户登录时可以进行身份的有效验证。2.题库中包括多套试题,可随机抽题,并保证IP地址相邻的考生试卷不同。3.考试答题具有严格的时间限制,系统可以倒计时,考试时间结束时可以强制交卷,考生也可以提前交卷。4.考试结束后,系统可以自动对试卷中的客观题部分进行评分、并把生成的成绩自动保存到数据库,以供后期查阅。5.教师用户可以对考试成绩进行统计、分析,对试题库做出更新、修改。总的来说,系统应该具有用户管理、题库管理、自动抽题、自动交卷、自动阅卷和成绩查询等功能。从总体上考虑,系统应该实现下列功能:管理员:包括系统维护,题库维护,用户管理和角色管理等。教师:包括题库维护,试卷制定,阅卷,查询成绩,导出成绩等。学生:可以答卷,同时还能提交试卷,并且实现查询成绩等。3.3.2在线考试系统非功能性需求1.实用性:系统是其中最重要的是实用,必须确保系统可以实现目标和操作问题,有两种类型的设计问题。2.友好:系统界面简单易用,学生和教师可以在最短的时间内迅速掌握使用方法。3.安全性:数据恢复和备份,在一些特殊的情况下,考生考试中断后,可以恢复测试,数据将被保存。4.可靠性:硬件和软件是可靠,故障率低,系统的崩溃不会发生。在发生故障时,系统备份和恢复功能不会造成数据丢失。5准确性:自动评分和倒计时功能,精度,保证公平和正义需要测试。 4在线考试系统概要设计4.1在线考试系统设计目标该考试系统的设计旨在提高教学活动中的工作效率,为教师和教育工作人员实现办公的电子化,开发一个基于B/S的在线考试系统,实现用于高节奏、大批量的规模考试,到适用范围广,可扩展,使具备浏览器和网络就可以进入考试系统,后期的维护和升级简单,把教师和学生从繁重的手工作业中解脱出来。4.2在线考试系统可行性分析在经过一系列的系统需求获取,优化和测试,在线考试系统运行顺利。现从扩展性、安全性、高效性、推广性阐述在线考试系统的可行性。1.扩展性:主要指系统的管理和后期的维护,具有可扩展性。B/S架构由于不需要安装客户端,避免了频繁的数据交换,减少了后期管理、升级、维护的工作难度。2.安全性:通过身份验证和IP地址分析,可以保证在线考试的安全性。身份验证,可以避免非法用户对系统的非法访问;对IP地址的分析和自动抽题功能,可以避免相邻考生试卷的重复,降低作弊、抄袭的可能性。3.高效性:该系统就具有自动阅卷、成绩查询、成绩分析,摆脱传统手工繁重劳动,提高工作效率,同时降低人工差错率。4.推广性:该系统运行顺利,可以把经验推广到其他科目的考试。从整体上提高考务工作效率。4.3在线考试系统功能架构及设计本课题要实现在线考试,在开始设计时要求人机界面友好,便于快速上手操作。系统具有考试模块和管理员模块两大模块。系统功能结构图见图4.1。4.3.1考试模块考试模块包括用户登录、在线考试、成绩查询、交卷和成绩查询等五个子模块,具体功能如下:1.用户登录:用户通过管理员给予的账户密码进行登录,与数据库内加密密码进行对比,密码错误会进行相应提示,密码正确会根据相应身份转入不同页面,考生进入选择考试界面,管理员和教师进入管理界面。2.在线考试:考生进入在线考试界面后,选择要考的试卷,进入答题界面,考生用户开始进行答题,系统进入倒计时。3.交卷:考生进入考试状态后,可选择手动提交试卷,若考试超时,自动提交试卷。 图4.1系统功能结构图4.阅卷:服务器依据事前保存的标准答案及评分标准,对考生传递到服务器的客观题数据进行评判,并给出阅卷分数。主观题由教师或者管理员进行评阅和给分,根据主观题参考答案酌情给分。当评阅之后,将分数提交到服务器上。5.成绩查询:此模块主要为教师和考生提供成绩查询功能。考生可以在登录后,查询本人的考试成绩。教师可以查询、统计参考学生的考生成绩。教师还可以将考生的成绩导出到Excel表中。例如,可以按照考生姓名、班级、成绩等字段。4.3.2管理员模块管理员模块包括用户登录、用户管理、试卷维护、试卷管理和试卷评阅,个人信息管理等几个相关子模块,其中用户登录的模块就不赘述了,其他子模块具体功能如下:1.用户管理:在线考试系统中的用户,从使用权限分类,主要分为三类。即管理员用户、教师用户和考生用户。管理员用户的权限覆盖整个考务系统;教师用户的权限暂时与管理员权限相同,还包括修改该用户权限下考生的登录密码;考生用户的权限,只包括登录在线考试和成绩查询。可以执行重置密码等实用的功能。2.试卷维护:本模块主要提供教师对考试题库的维护功能。主要包括,教师对题库内题目的查询、添加、修改和删除。面对不同的测试对象,教师用户还可以对题目进行一定程度的精简和扩充。3.试卷管理:本模块主要提供了对试卷制定的管理,以及对课程名称的管理维护。教师可以制定需要的试题,自动生成试卷。4.个人信息管理:本模块提供了对用户密码的修改和维护。 5系统详细设计本系统是由两个人组成的小组合作完成的,我主要负责了试卷维护与制定,考生在线考试等模块,其它模块只做简单介绍,详细介绍本人所做部分。5.1考试维护与制定模块考试的维护管理的功能模块分为三个子模块,分别是考试科目管理,试卷的制定和考后的评阅模块,这三个模块是在线考试流程中相当重要的模块,下面就分别详细讲解考试系统这部分功能的实现。5.1.1考试科目管理模块考试科目的数据结构较少,进行管理管理的实现方法比较简单,主要是对考试科目表的增删操作,在进行需求分析之后,考虑到因为修改科目并无太大实用意义,所以不会加入修改考试科目的方法,在此不做太多赘述。5.1.2试卷制定模块(1)试卷制定模块管理的要解决的主要问题l从后台进行联合查询后,取出题库数据后,添加到数据库指定的表中。l保证试卷制定数据的公平性原则。l保证试卷制定数据的安全性原则。(2)试卷制定模块管理的解决方案针对以上几个要解决的问题,提出以下解决方案,并运用实施。l设置好试卷分值等相关信息后,通过将数据库的数据查询出来,绑定到多组GridView服务控件上,通过GridView保存临时数据,管理员确认无误之后,提交到Paper表。l在查询数据时通过随机GUID进行排序,实现在题库中随机选题,从而保证随机出题,保证了每次获取的题目都不同,保证了试卷制定的公平性原则。l对相关提交进行验证,提交数据后及时将页面跳转,清空Session保存的值,避免进行重复提交,导致数据出错,保证了数据不会发生错误。(3)试卷制定模块主要方法的实现代码/protectedvoidbtnConfirm_Click(objectsender,EventArgse){#region验证模块略#endregionPanel1.Visible=true; DBHelpdb=newDBHelp();//创建DBHelp类对象stringGridView1Str="selecttop"+int.Parse(txtSingleNum.Text.Trim())+"*fromSingleProblemorderbynewid()";//根据参数设置查询单选题Sql语句DataSetds1=db.GetDataSetSql(GridView1Str);//调用DBHelp类方法GetDataSetSql方法查询数据GridView1.DataSource=ds1.Tables[0].DefaultView;//为单选题GridView控件指名数据源GridView1.DataBind();//绑定数据stringGridView2Str="selecttop"+int.Parse(txtMultiNum.Text.Trim())+"*fromMultiProblemorderbynewid()";//根据参数设置查询多选题Sql语句DataSetds2=db.GetDataSetSql(GridView2Str);//调用DBHelp类方法GetDataSetSql方法查询数据GridView2.DataSource=ds2.Tables[0].DefaultView;//为多选题GridView控件指名数据源GridView2.DataBind();//绑定数据stringGridView3Str="selecttop"+int.Parse(txtJudgeNum.Text.Trim())+"*fromJudgeProblemorderbynewid()";//根据参数设置查询判断题Sql语句DataSetds3=db.GetDataSetSql(GridView3Str);//调用DBHelp类方法GetDataSetSql方法查询数据GridView3.DataSource=ds3.Tables[0].DefaultView;//为判断题GridView控件指名数据源GridView3.DataBind();//绑定数据stringGridView4Str="selecttop"+int.Parse(txtFillNum.Text.Trim())+"*fromFillBlankProblemorderbynewid()";//根据参数设置查询填空题Sql语句DataSetds4=db.GetDataSetSql(GridView4Str);//调用DBHelp类方法GetDataSetSql方法查询数据GridView4.DataSource=ds4.Tables[0].DefaultView;//为填空题GridView控件指名数据源GridView4.DataBind();//绑定数据stringGridView5Str="selecttop"+int.Parse(txtQuestionNum.Text.Trim())+"*fromQuestionProblemorderbynewid()";//根据参数设置查询填空题Sql语句DataSetds5=db.GetDataSetSql(GridView5Str);//调用DBHelp类方法GetDataSetSql方法查询数据GridView5.DataSource=ds5.Tables[0].DefaultView;//为填空题GridView控件指名数据源GridView5.DataBind();//绑定数据}//////提交/////////protectedvoidButton1_Click(objectsender,EventArgse) {DBHelpdb=newDBHelp();stringinsertpaper="insertintoPaper(CourseID,PaperName,PaperState)values("+int.Parse(ddlCourse.SelectedValue)+",""+txtPaperName.Text+"",1)SELECT@@IDENTITYasid";intafterID=GetIDInsert(insertpaper);//保存试卷,并返回自动生成的试卷编号if(afterID>0){foreach(GridViewRowdrinGridView1.Rows)//保存试卷单选题信息{stringsingle="insertintoPaperDetail(PaperID,Type,TitleID,Mark)values("+afterID+","单选题","+int.Parse(((Label)dr.FindControl("Label3")).Text)+","+int.Parse(txtSingleFen.Text)+")";db.Insert(single);}foreach(GridViewRowdrinGridView2.Rows)//保存试卷多选题信息{stringmulti="insertintoPaperDetail(PaperID,Type,TitleID,Mark)values("+afterID+","多选题","+int.Parse(((Label)dr.FindControl("Label6")).Text)+","+int.Parse(txtMultiFen.Text)+")";db.Insert(multi);}foreach(GridViewRowdrinGridView3.Rows)//保存试卷判断题信息{stringjudge="insertintoPaperDetail(PaperID,Type,TitleID,Mark)values("+afterID+","判断题","+int.Parse(((Label)dr.FindControl("Label7")).Text)+","+int.Parse(txtJudgeFen.Text)+")";db.Insert(judge);}foreach(GridViewRowdrinGridView4.Rows)//保存试卷填空题信息{stringfill="insertintoPaperDetail(PaperID,Type,TitleID,Mark)values("+afterID+","填空题","+int.Parse(((Label)dr.FindControl("Label8")).Text)+","+int.Parse(txtFillFen.Text)+")";db.Insert(fill);}foreach(GridViewRowdrinGridView5.Rows)//保存试卷填空题信息{ stringque="insertintoPaperDetail(PaperID,Type,TitleID,Mark)values("+afterID+","问答题","+int.Parse(((Label)dr.FindControl("Label23")).Text)+","+int.Parse(txtQuestionFen.Text)+")";db.Insert(que);}Response.Write("alert("保存成功");location="PaperLists.aspx"");}5.1.3试卷维护模块(1)试卷维护模块管理的要解决的主要问题l从后台进行联合查询后,取出题库数据后,列出所有试卷列表。l可以查看试卷详情,并进行编辑。l可以实现删除试卷操作。(2)试卷维护模块管理的解决方案针对以上几个要解决的问题,提出以下解决方案,并运用实施。l设置好试卷分值等相关信息后,通过将数据库的数据查询出试卷列表,绑定到一个GridView服务控件上。l在同一Tab页面进行跳转,在GridView中绑定试卷详情,试卷编辑,删除操作,跳转到相应操作页面,其中删除在当前页实现,并弹出确认删除弹框。l试卷详情页数据展示方式跟试卷制定模块的展示方式相似。(3)试卷制定模块主要方法的实现代码举例/publicstaticDataSetGetAllPaperSing(intPapperId,stringsb)//获取全部试卷单选题{using(SqlConnectionconn=DBHelp.GetConnection()){stringsql=@"select*fromSingleProblemwhereIDin(selectTitleIDfromdbo.PaperDetailwherePaperID="{0}"andType="{1}")";SqlCommandcmd=conn.CreateCommand();sql=string.Format(sql,PapperId,sb);cmd.CommandText=sql;conn.Open();SqlDataAdapteradapter=newSqlDataAdapter(cmd);DataSetdataset=newDataSet();adapter.Fill(dataset);conn.Close(); returndataset;}}publicstaticDataSetGetAllPaperSingMark(intPapperId,stringsb)//获取全部答案{using(SqlConnectionconn=DBHelp.GetConnection()){stringsql=@"select*fromdbo.PaperDetailwherePaperID="{0}"andType="{1}"";SqlCommandcmd=conn.CreateCommand();sql=string.Format(sql,PapperId,sb);cmd.CommandText=sql;conn.Open();SqlDataAdapteradapter=newSqlDataAdapter(cmd);DataSetdataset=newDataSet();adapter.Fill(dataset);conn.Close();returndataset;}}5.2学生考试模块(1)学生考试模块的用例图学生登录后可以进行在线考试,成绩查询,以及修改登录密码的操作,用示例例图展示本模块如图5.1所示。图5.1学生考试模块用例图 (2)学生考试模块的主要功能点学生考试模块主要是对试卷展示的实现,学生登录系统后,选择要考的科目,已考过的将不能再进行考试,进入考试界面,进行答题后,可提交试卷,具体主要实现方式如下:l通过试卷内各编号,取出所有各类试题内容,通过Reapter服务控件进行展示,后将用户提交的数据存放到数据库中。l添加避免重复提交的方法,保证了数据不会出错。(3)学生考试实现的部分代码//////绑定所有试卷///privatevoidGetParperAll(){IEnumerablelist=sqlSingleMark.Select(DataSourceSelectArguments.Empty);foreach(DataRowViewoinlist){labSingle.Text=o[0].ToString();break;}IEnumerablelist1=SqlMultiMark.Select(DataSourceSelectArguments.Empty);foreach(DataRowViewoinlist1){Label3.Text=o[0].ToString();break;}IEnumerablelist2=SqlFillMark.Select(DataSourceSelectArguments.Empty);foreach(DataRowViewoinlist2){Label5.Text=o[0].ToString();break;}IEnumerablelist3=SqlJudgeMark.Select(DataSourceSelectArguments.Empty);foreach(DataRowViewoinlist3){Label4.Text=o[0].ToString();break;}IEnumerablelist4=SqlQuestionMark.Select(DataSourceSelectArguments.Empty); foreach(DataRowViewoinlist4){Label6.Text=o[0].ToString();break;}}提交试卷方法的部分代码stringlabeJ=Label4.Text;//判断分数foreach(RepeaterItemiteminRepeater3.Items){HiddenFieldtitleId=item.FindControl("titleId")asHiddenField;stringid=(string)titleId.Value;stringstr=Convert.ToString(false);if(((RadioButton)item.FindControl("rbA")).Checked){str=Convert.ToString(true);}elseif(((RadioButton)item.FindControl("rbB")).Checked){str=Convert.ToString(false);}stringJudge="insertintoUserAnswer(UserID,PaperID,Type,TitleID,Mark,UserAnswer,ExamTime)values(""+UserId+"",""+paperid+"","判断题",""+id+"",""+labeJ+"",""+str+"",""+DateTime.Now.ToString("yyyy-MM-ddhh:mm:ss")+"")";db.Insert(Judge);}stringlabeF=Label5.Text;//填空分数foreach(RepeaterItemiteminRepeater1.Items){HiddenFieldtitleId=item.FindControl("titleId")asHiddenField;stringid=(string)titleId.Value;stringstr="";str=((TextBox)item.FindControl("TextBox1")).Text.Trim();stringFill="insertintoUserAnswer(UserID,PaperID,Type,TitleID,Mark,UserAnswer,ExamTime)values(""+UserId+"",""+paperid+"","填空题",""+id+"",""+labeF+"",""+str+"",""+DateTime.Now.ToString("yyyy-MM-ddhh:mm:ss")+"")";db.Insert(Fill); }stringlabeQ=Label6.Text;//问答分数foreach(RepeaterItemiteminRepeater4.Items){HiddenFieldtitleId=item.FindControl("titleId")asHiddenField;stringid=(string)titleId.Value;stringstr="";str=((TextBox)item.FindControl("TextBox2")).Text.Trim();stringQue="insertintoUserAnswer(UserID,PaperID,Type,TitleID,Mark,UserAnswer,ExamTime)values(""+UserId+"",""+paperid+"","问答题",""+id+"",""+labeQ+"",""+str+"",""+DateTime.Now.ToString("yyyy-MM-ddhh:mm:ss")+"")";db.Insert(Que);}//Session["Test"]="eeee";Response.Write("alert("试卷提交成功!");");BtnSubmit.Visible=false;Button1.Visible=true;Response.Redirect("student.aspx");5.3试题类别维护模块试题类别管理的功能模块分为五种题型,而实现的功能模块很相似,下面就试题类别管理模块,举例详细讲解填空题模块功能的实现。5.3.1填空题模块(1)填空题模块的用例图在填空题管理模块中包括的功能点有五个小的模块:查询填空题明细、添加填空题明细、修改学科明细、删除填空题明细这几个功能点,其中查询填空题明细较修改字段等方法更加简单,用示例例图展示本模块如图5.1所示。类图如图5.2所示,这是取自填空题管理业务逻辑层的类图,从类图可以看出,本模块的实现的重点就是实现基本的增删改查模块。在实际的开发过程中,对前台表示层进行实现的时候,使用了GridView服务端控件,进行前台的展示,通过应用了GridView灵活绑定数据的特点,实现了通过GridView分页,自定义数据显示等等,并结合已有的UUR界面框架进行了一个完善的整合,让界面风格更加平易近人。并且,通过对一些验证控件的使用,以及相关数据的绑定,使得程序的逻辑结构也变得清晰可见。 图5.1填空题模块示例图图5.2填空题模块类图(2)填空题模块管理的主要功能点维护题库操作是在线考试系统,对考试科目的操作,主要包括对科目的查询,添加,修改,删除,和更新添加阶段五个功能子模块。l查询填空题明细:直接将业务逻辑层的数据加载到GridView,实现前台管理界面的显示。l添加填空题明细:当用户点击添加按钮时会弹出子Tab窗口,填写好相关信息记录后提交到服务器的数据库从而实现。l修改填空题明细: 当用户点击每条学科明细后面修改按钮时,将会弹出子Tab窗口,窗口中加载旧的数据项,用户可以根据原始数据进行修改,填空题所用编号隐藏不可见,而后台程序也会根据这个编号更改数据库里原始的数据项。l删除填空题明细:当用户点击每条学科明细后面的删除按钮时,这时系统会通过异步刷新的方式向后台提交该条明细的学科编号,根据此编号,我们把数据库里的数据存在的标志位置为不存在。(3)填空题模块管理的主要的方法实现代码//////填空题管理///publicclassFillBlankProblemManager{//////填空题更新/////////publicstaticboolFillBlankProblemUpdate(FillBlankProblemfu){if(FillBlankProblemService.FillBlankProbleUpdate(fu)){returntrue;}else{returnfalse;}}//////填空题新增/////////publicstaticboolFillBlankProblemInsert(FillBlankProblemfi){if(FillBlankProblemService.FillBlankProbleInsert(fi)){returntrue;}else {returnfalse;}}//////填空题删除/////////publicstaticboolFillBlankProblemDelete(FillBlankProblemfd){if(FillBlankProblemService.FillBlankProbleDelete(fd)){returntrue;}else{returnfalse;}}staticFillBlankProblemServiceservice=newFillBlankProblemService();publicstaticListGeFillBlankProblemList(stringselectvalue){returnservice.GeFillBlankProblemList(selectvalue);}staticFillBlankProblemServiceFill=newFillBlankProblemService();publicstaticListGetFillQuestion(stringUsersID,intPaperID){returnFill.FillQuestion(UsersID,PaperID);}} 6数据库设计6.1概述数据库设计是信息系统设计的基础,一个好的数据库设计在满足了软件需求之外,还要易维护、易扩充等等要求。当然,对专家们反复强调的数据的一致性、冗余性、访问效率等问题的解决,很大程度上取决于数据库设计者的经验和专业水平。但这不妨碍我们根据过去的经验,从实用的角度给出数据库设计所要要考虑的问题并尽可能给出相应的解决方案,从而给信息系统的数据库设计者一些有益的启示。下面就我的对数据库设计的理解进行的设计。6.2约定所有数据表第一个字段都是系统内部使用主键列,自增字段,不可空,名称为:Id。除特别说明外,为避免出现乱码所有字符串字段都采用nvarchar(50)类型,无论汉字还是英文,都算一个字符。除特别说明外,所有整型都采用int格式。除特别说明外,所有字段默认都设置为null。6.3结构设计6.3.1概念结构设计概念结构设计的任务是在需求分析阶段产生的需求说明书的基础上,按照特定的方法把它们抽象为一个不依赖于任何具体机器的数据模型,即概念模型。概念模型使设计者的注意力能够从复杂的实现细节中解脱出来,而只集中在最重要的信息的组织结构和处理模式上[7]。概念结构设计描述系统中的各个实体以及相关实体之间的关系,是系统特性和静态描述.数据字典也将是系统进一步开发的基础.在线考试系统的系统管理模块以及各表之间的关联,使得整个系统可以走通,下面列出整个系统的表结构。科目:科目编号ID,科目名称Name用户属性:用户编号ID,用户名称Name,用户密码Password,所属部门Department,所属角色编号 Role单选题:单选题编号ID ,所属课程编号CourseID,题目描述Title,答案A AnswerA,答案B AnswerB,答案C AnswerC,答案D AnswerD,参考答案 Answer判断题:判断题编号ID,所属课程编号CourseID,题目描述Title,参考答案 Answer论述题:论述题编号ID ,所属课程编号CourseID,题目描述Title,参考答案 Answer试卷:编号ID,关联编号CourseID,名称Name,状态State试卷详情:编号ID,所属试题编号PaperID,题目编号 TitleID,得分 Mark 成绩:编号ID,所属用户编号 UserID,所属试卷编号PaperID,成绩iScore,考试时间ExamTime,批阅时间JudgeTime角色:编号RoleID,角色名Name用户角色:编号ID,用户编号UserID,角色所属编号RoleID用户答案:编号ID,用户编号UserID,试卷所属编号PaperID,用户答案AnswerID,题目所属编号TitileID6.3.2逻辑结构设计数据库的逻辑结构是独立于任何一种数据模型的,在实际应用中,一般所用的数据库环境已经给定(如SQLServer)。由于目前使用的数据库基本上都是关系数据库,因此首先需要将E-R图转换为关系模型,然后根据具体DBMS的特点和限制转换为特定的DBMS支持下的数据模型,最后进行优化[8]。下面就该系统数据库进行详细列举。1.科目信息表图6.1科目信息表示例图2.试卷表图6.2试卷表示例图3.试卷详情表图6.3试卷详情表示例图4.判断题 图6.4判断题表示例图5.单选题图6.5单选题表示例图6.论述题图6.6论述题表示例图7.用户答案表图6.7用户答案表示例图8.用户表 图6.8用户表示例图9.角色表图6.9角色表表示例图6.4数据字典设计数据库系统是一个复杂的系统,其中所包含的信息除了用户数据外,还有很多非用户数据信息。例如,模式和子模式的内容、文件间的联系、数据项的长度、类型、用户标识符、口令、索引等等。其中数据字典是描述数据库中各数据属性与组成的数据集合,因此有人把它看作是关于数据库中数据的数据库。(1)科目表表名:Course,此表中保存了所有课程的基本信息,如表6.1所示。表6.1科目表序号列名数据类型长度标识主键允许空1IDint4是是否2Namevarchar200否(2)填空题表表名:FillBlankProblem,该表存储了填空题型的所有信息,如表6.2所示。表6.2填空题表序号列名数据类型长度标识主键允许空1IDint4是是否2CourseIDint4否3FrontTitlevarchar500否4BackTitlevarchar500否5Answervarchar200否(3)试卷表表名:Paper,该表存储了试卷的所有信息,如表6.3所示。 表6.3试卷表序号列名数据类型长度标识主键允许空1PaperIDint4是是否3CourseIDint4否4PaperNamevarchar200否5PaperStatebit1否(4)试卷详情表表名:PaperDetail,该表存储了试卷详情的所有信息,此表跟试卷相关联,这样就可以通过联合查询获取数据,如表6.4所示。表6.4试卷详情表序号列名数据类型长度标识主键允许空1IDint4是是否2PaperIDint4否3Typevarchar10是4TitleIDint4否5Markint4否(5)客观题表表名:QuestionProblem,该表存储了客观题目的所有信息,如表6.5所示。表6.5客观题表序号列名数据类型长度标识主键允许空1IDint4是是否2CourseIDint4否3Titlevarchar1000否4Answervarchar1000否(6)角色表表名:Role,该表存储了角色的所有基本信息内容,如表6.6所示。表6.6角色表序号列名数据类型长度标识主键允许空1RoleIdint4是是否2RoleNamevarchar50否(7)考生成绩表表名:Score,该表存储了考生的成绩相关信息,该表关联用户和试卷编号,从而用于根据用户查询所属成绩,如表6.7所示。 表6.7考生成绩表序号列名数据类型长度标识主键允许空1IDint4是是否2UserIDvarchar50否3PaperIDint4否4Scoreint4否5ExamTimedatetime8是6JudgeTimedatetime8是(8)考生答案表表名:UserAnswer,该表存储了考生关于某个试卷答案的所有信息,如表6.8所示。表6.8科目表序号列名数据类型长度标识主键允许空1IDint4是是否2UserIDvarchar50否3PaperIDint4否4Typevarchar50否5TitleIDint4否6Markint4否7UserAnswervarchar1000否8ExamTimedatetime8否 烟台大学毕业论文(设计)7考试系统部分详细流程7.1考生实际考试界面以下一组图描述了考生考试的具体步骤和流程。图7.1用户登录页面该图为用户登录的界面,输入用户名密码后验证,如果不正确则出现相应提示,如果正确则进入相应权限页面,管理员进入管理页面,考生进入考试界面。图7.2考生登录后界面该图为考生登录后选择考试的界面,通过下拉列表,选择某个试卷,进行考试,如果已考过则有提示,未考则进入考试界面。 烟台大学毕业论文(设计)图7.3考生考试界面该图为考生进入的考试界面,左上角显示考试相关信息,中部显示考试试题,考试结束后提交试卷,超时自动提交到服务器。7.2管理员操作界面图7.4试卷管理界面该图为管理员进入管理界面,左上角显示用户名称,左侧显示各个管理功能模块,图示的这个模块是管理员出题进行随机出题界面。 烟台大学毕业论文(设计)图7.5考试科目管理界面该图为管理员进入考试系统,管理考试科目的界面,通过此界面可以跳转到添加考试科目的子页面,科目不允许修改,只能进行增加和删除。图7.6添加用户界面该图为添加用户界面,用户编号用作用户登录的账号,编号的顺序是唯一的,点击添加用户时,自动生成编号,红色标识为必填项,提交表单时会产生验证信息,不会真正提交到服务器,保证了数据的严密性。 烟台大学毕业论文(设计)结束语通过长达两个月的努力和完善,我们成功实现了基于WEB的在线考试系统,其中满载着我们的心血和和汗水,对在线考试系统从陌生到熟悉再到完善,不只是单纯地实现项目的过程,也是一个合作与交流的过程,下面就来总结一下我的感悟跟收获。(一)收获本课题论文详细阐述了B/S架构下的在线考试的设计与实现,包括架构的选择、系统应该具备的功能、合理的流程结构等。在课题的进行过程中,充分运用了专业课程中学到的知识,像软件工程、计算机网络、数据库理论、数据库编程、密码学等知识,让我可以将理论知识和实践互相结合在一起,为将来的软件开发工作奠定了基础。另外,在项目的进行前,我查阅了大量关于在线考试系统的资料和需求,避免漏掉必要的功能模块,同时借鉴其它考试系统的功能特点,通过对比发现,大多数在线考试系统的界面比较简陋,因此选用了免费开源版UUR框架(UI界面),通过对它的框架方法的学习,结合ASP.NET技术的特点,大大提高了美观性和开发效率,使将很大精力放到了后端平台的开发。由于工作的原因,在项目的进行过程中,我们遇到了不少技术以及业务流程方面的问题,通过两人的协作讨论,避免有思路不清晰的地方,也使我们的项目得以平稳的推进。例如数据库的选择问题上,我们讨论选择SQLServer数据库还是MongoDB时,两人同时考虑了两种数据库的优劣,选用了现在比较流行的SQLServer数据库。(二)不足之处:由于时间和能力问题,论文内容表述、论证上存在着许多的不当之处,借此答辩机会,希望各位评委、老师和同学能够提出宝贵的意见,是这篇论文得到完善和提高。 烟台大学毕业论文(设计)致谢时间过的很快,大学四年的时光转瞬即逝。对于即将离开大学校园,走到工作岗位上的我来说,这篇论文可以当作对于我大学四年的一个总结。在这里,我真心地感谢曾经向我传教授业的老师们,是你们让我从对技术的懵懂无知,到专业技能上做到游刃有余。也感谢帮助过我的同学们,因为有你们,大学才过得更加精彩。这篇论文的完成,首先要感谢指导我的技术老师董超慧老师,毕业设计过程中遇到的困难很多,而董老师始终不畏辛苦的帮助着我,用她的耐心和丰富的开发经验,指引着开发的方向,使我的毕业设计与实际需求的功能不会有很大偏差。因为一直在公司实习的原因,上班时间跟老师的交流很不方便,老师依然很有耐心的在晚上通过聊天工具对我们的疑问进行解决。同时也感谢我的小组伙伴,在项目进行中,对我的一些帮助。 烟台大学毕业论文(设计)参考文献[1]姚向东.基于B/S结构的学校管理信息系统的研究与开发[D].成都:四川大学2004.[2]毛德样,罗荣阁.基于ASP.NET技术的Web应用程序三层设计模型.微型电脑应用与开发.2002.26-28.[3]DAVIDSceppa.ADO编程技术(石钧,葛俊)[M]北京:清华大学出版社,2001,10-13[4]谭浩强等,动态网页制作,电子工业出版社,2001[5]郭兴峰ASP.NET动态网站开发基础教程(C#篇)北京:清华大学出版社,2006[6]郝平,王万良.数据库开发与应用([M].北京:科学出版社,2005[7]概念结构设计百度词条http://baike.baidu.com/view/1638403.htm[8]逻辑结构设计百度词条http://baike.baidu.com/view/540423.htm 烟台大学毕业论文(设计)附录部分代码本系统部分代码如下,列举了对数据库增删改查的基本操作。//////新增填空题/////////publicstaticboolFillBlankProbleInsert(FillBlankProblemfi){stringsql=@"insertintoFillBlankProblem(CourseID,FrontTitle,BackTitle,Answer)values(@CourseID,@FrontTitle,@BackTitle,@Answer)";SqlParameter[]param=newSqlParameter[]{newSqlParameter("@CourseID",fi.CourseID),newSqlParameter("@FrontTitle",fi.FrontTitle),newSqlParameter("@BackTitle",fi.BackTitle),newSqlParameter("@Answer",fi.Answer)};inti=DBHelp.ExecuteCommand(sql,param);if(i>0){returntrue;}else{returnfalse;}}//////删除填空题/////////publicstaticboolFillBlankProbleDelete(FillBlankProblemfd){stringsql="DELETEFROMSingleProblemWHEREID=@ID";SqlParameter[]param=newSqlParameter[]{newSqlParameter("ID",fd.ID),}; 烟台大学毕业论文(设计)inti=DBHelp.ExecuteCommand(sql,param);if(i>0){returntrue;}else{returnfalse;}}//////查询填空题/////////publicListGeFillBlankProblemList(stringselectvalue){using(SqlConnectioncon=DBHelp.GetConnection()){stringsql="select*fromFillBlankProblemwhereCourseID=""+selectvalue+""";SqlCommandcmd=newSqlCommand(sql,con);con.Open();Listlist=newList();SqlDataReaderdr=cmd.ExecuteReader();while(dr.Read()){FillBlankProblemfill=newFillBlankProblem();fill.ID=Convert.ToInt32(dr["ID"]);fill.CourseID=Convert.ToInt32(dr["CourseID"]);fill.FrontTitle=dr["FrontTitle"].ToString();fill.BackTitle=dr["BackTitle"].ToString();fill.Answer=dr["Answer"].ToString();list.Add(fill);}returnlist;}}//////更新填空题///////// 烟台大学毕业论文(设计)publicstaticboolFillBlankProbleUpdate(FillBlankProblemfb){stringsql=@"UPDATEFillBlankProblemSETCourseID=@CourseID,FrontTitle=@FrontTitle,BackTitle=@BackTitle,Answer=@AnswerwhereID=@ID";SqlParameter[]param=newSqlParameter[]{newSqlParameter("@CourseID",fb.CourseID),newSqlParameter("@FrontTitle",fb.FrontTitle),newSqlParameter("@BackTitle",fb.BackTitle),newSqlParameter("@Answer",fb.Answer),newSqlParameter("@ID",fb.ID)};inti=DBHelp.ExecuteCommand(sql,param);if(i>0){returntrue;}else{returnfalse;}} 烟台大学毕业论文(设计)评审表(指导教师用)题目基于ASP.NET的网络在线考试系统学生姓名学号201058501450专业计算机科学与技术指导教师姓名董超慧职称系统分析师所学专业计算机科学技术与应用是否同意参加答辩:得分评语:指导教师(签字):年月日 烟台大学毕业论文(设计)评审表(评阅人用)题目基于ASP.NET的网络在线考试系统学生姓名学号201058501450专业计算机科学与技术指导教师姓名董超慧职称系统分析师所学专业计算机科学技术与应用是否同意参加答辩:得分评语:评阅人(签字):年月日 烟台大学毕业论文(设计)评审表(答辩小组用)题目基于ASP.NET的网络在线考试系统学生姓名学号201058501450指导教师姓名董超慧职称系统分析师得分评语:答辩委员会(小组)(全体成员签字):年月日烟台大学毕业论文(设计)综合评定成绩表指导教师评分评阅人评分答辩评分综合评定成绩(按2:2.5:5.5)答辩委员会负责人(签字):年月日'