《软件工程》课程设计范例_第1页
《软件工程》课程设计范例_第2页
《软件工程》课程设计范例_第3页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

《软件工程》课程设计题目C语言在线考试系统的设计与实现学生姓名 学号 院系计算机与软件学院专业指导教师 文学志 二0年月日绪论 相关技术介绍 系统的需求分析 系统的功能需求 32系统的模块划分 系统的设计 系统的概要设计 42系统主要模块的详细设计 系统主要模块的实现 创建项目 5.2.试题管理模块的实现 Struts相关类 考试管理模块的实现 在线考试模块的实现 答卷自动评分模块的实现 系统的测试 系统的测试环境 62系统的测试用例设计 63系统的测试结果 6.4.系统的测试分析 结束语 参考文献 致谢 C语言在线考试系统的设计与实现张三南京信息工程大学计算机与软件学院,南京210044摘要:随着计算机技术、Internet技术的迅猛发展,在线考试模式以其跨地域性、随时性和用户广泛性的特点,成为推动教育现代化的重要手段,已经成为对学生练习、考试、评价和分析教学效果的重要工具。本文研究利用三层浏览器(B/S/S)体系结构,即Web浏览器/Web服务器/数据库服务器结构来实现C语言科目的在线考试系统。该系统实现了试题库的管理、自动组卷和答卷的自动评分等功能,满足了广大教师和考生的需求。该系统的实现以Java语言及其相关技术为基础,构建于MySQL数据库系统以及TomcatWeb服务器之上。该系统的实现表明,在线考试系统能够提高试题库管理、考试组织和阅卷的效率,并同时保证考试的公正和公平。因此,其他科目的考试也可以开发相应的在线考试系统。关键词:在线考试系统;B/S/S体系结构;Java;MySQL;自动组卷绪论本章对C语言在线考试系统进行了概要性的介绍,并在经济、技术、社会三个方面对该系统开发的可行性进行了分析,以说明该系统的开发是可行的,可以立即开始研制工作。1.1.C语言在线考试系统概述随着计算机技术、Internet技术的迅猛发展,绝大部分高校都已接入互联网并建成了校园网,硬件设施也日趋完善。以互联网为基础的在线考试模式,以其跨地域性、随时性和用户广泛性的特点,成为推动教育现代化的重要手段,已经成为对学生练习、考试、评价和分析教学效果的重要工具[1]。C语言在线考试系统利用开放、动态的系统架构,将传统的考试模式与先进的网络应用相结合,实现了C语言科目考试的无纸化、自动化、网络化。第一,本系统能够帮助教师方便地实现试题的管理,包括试题的录入、查询、修改、删除。第二,本系统实现了自动组卷功能,能够根据出题要求自动生成C语言考试试卷,供考生在线作答。第三,考生在使用本系统进行在线考试时,系统将提供倒计时功能,使考生能够随时了解考试的剩余时间。第四,本系统在考试时间截止之后将自动完成交卷,以保证考试严肃公正地进行。第五,在答卷提交之后,本系统将对答卷进行自动评分并保存结果,以便考生查询考试成绩。1.2.C语言在线考试系统的可行性分析项目的可行性一般从三个方面进行分析,即经济可行性、技术可行性、社会可行性。经济可行性分析即进行开发成本的估算以及效益的评估,确定开发的项目是否值得投资开发;技术可行性分析是指对要开发的项目的功能、性能和限制条件进行分析,确定现有的资源条件下,技术风险有多大,项目是否能实现;社会可行性分析是指研究要开发的项目是否存在侵犯、妨碍等责任问题,要开发的项目的运行方式在用户组织内是否行得通,现有管理制度、人员素质和操作方式是否可行 [2]。本节从这三个方面对C语言在线考试系统的可行性进行分析,以便后续工作的展开。经济可行性C语言在线考试系统的开发成本包括开发该系统的人力的费用以及用于购买部署该系统并充当服务器的计算机的费用。开发该系统估计需要四个开发人员一周的工作量,如果每人每月的工资为2000元,则开发该系统的人力费用约为2000元。为了部署该系统,需要购买一台带有较大容量磁盘的高性能计算机,费用估计在1万元。因此,开发该系统的成本总计为1.2万元。在未使用该系统之前,为了进行C语言考试,必须支出相应的人力费用进行出卷、组织考试和批阅试卷,这部分费用约为每年4000元。此外,由于传统考试模式需要用纸,每年需要约3500元的纸张费用。因此,若维护系统每年需花费500元,使用C语言在线考试系统每年可节省约 0.7万元。根据以上的估计幵发费用和节省的费用,在假设年利率 i等于12%的前提下,可以计算得到投资的回收期为2.03年(如表1-1所示),即在使用C语言在线考试系统2.03年以后用户可以收回全部投资。因此,幵发 C语言在线考试系统在经济上是可行的。表1-1c语言在线考试系统的成本/效益分析购买设备1.0万元人力(四人、一周、2000元/月)0.2万元幵发成本总计1.2万元系统的维护费500元/年每年节省人力费用0.4万元每年节省纸的费用0.35万元每年节省的总费用0.7万元年节省(元)(1+i)的n次现在值(元)累计的现在值方(元)10.7万1.120.625万0.625万20.7万1.140.558万1.183万30.7万1.400.498万1.681万第三年后纯收入0.481万投资回收期2.03年技术可行性1)对所建议的系统的简要描述C语言在线考试系统利用数据库对试题信息进行高效、便捷的管理,实现试题的录入、查询、修改和删除。同时,系统提供了自动组卷功能、倒计时功能、试卷提交功能、试卷评分功能,实现了考试的无纸化、自动化、网络化,并体现了考试的公正、严肃。(2)与现有系统比较的优越性C语言在线考试系统利用数据库对试题进行管理,使得对大量试题的管理高效、方便地进行,而传统考试模式下的试题管理低效耗时,在试题达到一定数量之后,管理起来十分不便,需要耗费大量的时间和精力。由于试题存放于计算机硬盘中,并采用在线考试这种无纸化的考试模式,与传统考试模式相比,不仅节省了试题的存放空间,更是节约了大量的纸张(试卷和答题册),更加环保、节约。同时,该系统的自动组卷和评分功能使得出卷和评分过程自动化,与传统的手工出卷评分相比,节省了大量的劳力,使得广大教师可以从繁重的出卷、评分工作中解脱出来,从而把更多的时间和精力用于教学和科研。此外,系统的试卷提交功能在考试时间截止时,自动完成试卷的提交,阻止考生继续答题,使得考试的公正性和严肃性较传统考试更好得体现。最后,该系统提供的倒计时功能,使得考生在考试过程中更合理地安排时间,有助于考生取得好成绩。(3)采用建议系统可能带来的影响采用C语言在线考试系统之后,试题的管理效率,组织考试和评卷的效率将大为提高,有利于在短时间内实现对考生的C语言学习情况的检验。同时,本系统将节约大量的纸资源,节省组织考试的开支。教师将从繁重的出题、组织监督考试、评分的工作中解脱出来,把更多的时间和精力用于教学和科研。采用C语言在线考试系统之后,要求教师适应新型的试题管理模式,需要教师掌握该系统的使用。对考生而言,要求他们适应新型考试模式,同样,也需要他们熟悉系统的使用。(4)所建议技术可行性分析C语言在线考试系统是一个基于B/S/S体系结构的网络应用系统,开发这类系统的技术已经比较成熟,比如JSP技术、ASP技术等等。同时,考虑到开发人员对这类系统以及相关的技术比较熟悉且开发期较为充裕,预计可以再规定期限内完成开发。社会可行性(1)法律方面的可行性C语言在线考试系统的研制和开发的过程,将在严格遵守国家各项法律法规的基础上进行,将不会侵犯他人、集体和国家的利益。同时,在系统的开发过程中,将严格遵守与客户签订的合同的各项条款。(2)使用方面的可行性C语言在线考试系统的研制和开发将充分考虑到用户的业务往来、管理流程和人员素质等,从而能满足使用要求。相关技术介绍C语言在线考试系统的幵发采用了三层浏览器(B/S/S)体系结构,即Web浏览器/Web服务器/数据库服务器结构⑺。本文中采用了Java语言及相关技术JSP、Struts和Hibernate实现该系统,并以Tomcat作为Web服务器,以MySQL作为数据库服务器。本章是对这些技术和服务器的介绍2.1.B/S/S体系结构将Web技术的B/S结构与数据库系统的三层C/S/S体系结构结合,产生了 Web浏览器/Web服务器/数据库服务器结构,如图2-1所示。B/S/S体系结构是指在TCP/IP的支持下,以HTTP为传输协议,客户通过浏览器访问 Web服务器和与Web服务器相连的后台数据库的体系结构,它由 Web浏览器、Web服务器、中间件和数据库服务器组成。在B/S/S结构中,各组成部分之间通过 Internet(或Intranet)相连,遵守HTTP协议,浏览器通过发送请求和服务器端建立连接,从而实现以整个 Internet为背景的数据存储和访问。图2-1Web数据库系统的三层B/S/S体系结构B/S/S结构中的表示层有Web浏览器,它向网络上的Web服务器提出服务请求,接收Web服务器返回的页面并显示给用户;事务逻辑层有 Web服务器,它接受用户的请求并判断请求的类型。如果请求的是一般静态页面,就直接在Web服务器的文件系统中找到页面并返回;否则执行相应的应用程序,比如对数据库进行更新、查询等,随后获得数据库操作的结果,将结果动态生成页面,返回给表示层的客户端;数据层则有数据库服务器,实现数据的存储、维护、访问和更新,它接受 Web服务器的数据操作请求,并把运行结果返回给Web服务器。B/S/S结构具有以下特点:第一,基于TCP/IP开放式网络标准协议,完全实现了跨平台访问计算机及其网络上的各种资源,具有很强的系统独立性和平台无关性。第二,软件维护开销大大降低,只需开发维护服务器应用程序,无需开发客户端程序,规范和统一了客户端程序的标准——Web浏览器,从而统一了用户界面。第三,充分发挥了数据库管理系统(DBMS)高效的数据存储和数据管理能力,实现了更大程度和更大范围的数据库资源共享。B/S/S结构代表了当前数据库应用软件技术发展的趋势,是目前幵发 Web数据库应用系统普遍采用的数据库系统体系结构。 它的优点使它成为构建高效安全Web数据库应用系统首选的体系结构[7]。2.2.JavaServerPagesJavaServerPageS简称JSP12],是由SunMicrosystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。用JSP幵发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。与前一代Internet/Intranet幵发语言(ASP、PHP)相比,JSP在以下几个方面有了重大突破:第一,通过JSP的扩展标签库和JavaBeans功能,网站逻辑和网站界面可以完美地分离。第二,使用EnterpriseJavaBeans可以轻松地在JSP幵发的Web中实现事务、安全、会话等等企业级应用所需要的功能。第三,JDBC2.0提供了不同的数据库产品无关的数据库连接方式,更重要的是,数据库连接池提供了一种比普通的数据库连接方式效率高得多的连接方式。 Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户。程序片段可以操作数据库、重新定向网页以及发送 email等等,这就是建立动态网站所需要的功能。所有程序操作都是在服务器端进行,网络上传送给客户端仅是得到的结果,对客户浏览器的要求最低,可以实现无 plugin,无ActiveX,无JavaApplet,甚至无Frame。JSP具有以下的优点⑹:第一,将内容的生成和显示进行分离。使用 JSP技术,Web页面幵发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用 JSP标识或者小脚本来生成页面上的动态内容。生成内容的逻辑被封装标识在 JavaBeans组件中,并且捆绑在小脚本中,所有的脚本在服务器端运行。 Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响动态内容的生成。在服务器端, JSP引擎JSP标识和小脚本,生成所请求的动态内容并且将结果以HTML(或XML)页面的形式发送回浏览器。这有助于作者保护自己的代码,而又保证任何基于 HTML的Web浏览器的完全可用性。第二,可重用的组件。绝大多数JSP页面依赖于可重用的,跨平台的组件(JavaBeans或者EJB组件)来执行应用程序所要求的更为复杂的处理。 开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者或者客户团体所使用。基于组件的方法加速了总体开发过程,并且使得各种组织在他们现有的技能和优化结果的开发努力中得到平衡。第三,用标识简化页面开发。Web页面开发人员不会都是熟悉脚本语言的编程人员。JSP技术封装了许多功能,这些功能是在易用的、与JSP相关的XML标识中进行动态内容生成所需要的。标准的JSP标识能够访问和实例化JavaBeans组件,设置或者检索组件属性,下载Applet,以及执行用其他方法更难于编码和耗时的功能。StrutsStruts是Apache软件基金组织Jakarta项目的一个子项目,Struts的前身是CraigR.McClanahan编写的JSPModel2架构。Struts在英文中是"支架、支撑"的意思,这表明了Struts在Web应用开发中的巨大作用,采用Struts可以更好地遵循MVC模式。此外,Struts提供了一套完备的规范,以及基础类库,可以充分利用JSP/Servlet的优点,减轻程序员的工作量,具有很强的可扩展性。Struts的作者CraigR.McClanahan参与了JSP规范制定以及Tomcat4的幵发,同时还领导制定了J2EE平台的Web层架构的规范。受此影响,Struts框架一经推出,立即引起了Java开发者的广泛兴趣,并在全世界推广开来,最终成为世界上应用最广泛的MVC框架[9]。Hibernate当前的软件开发语言已经全面转向面向对象,而数据库系统仍停留在关系数据库阶段。面对复杂的企业环境,同时使用面向对象语言和关系数据库是相当麻烦的,不但中间的过渡难以理解,而且其开发周期也相当长。Hibernate是一个面向Java环境的对象/关系数据库映射工具。对象/关系数据库映射(Object/RelationalMapping)表示一种技术,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去[10]。Hibernate的目标是:释放开发者通常的数据持久化相关的编程任务的95%。对Hibernate于以数据为中心的程序而言,往往在数据库中使用存储过程来实现商业逻辑,可能不是最好的解决方案。但对于那些基于Java的中间件应用中,设计采用面向对象的业务模型和商业逻辑时,Hibernate是最有用的。不管怎样,Hibernate能消除那些针对特定数据库厂商的SQL代码,并且把结果集由表格式的形式转换成值对象的形式。Hibernate不仅管理Java类到数据库表的映射(包括Java数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度地减少在开发时人工使用SQL和JDBC处理数据的时间。HibernateMySQLMySQL是最流行的幵放源码SQL数据库管理系统,它是由MySQLAB公司幵发、发布并支持的。MySQLAB是由多名MySQL开发人创办的一家商业公司。它是一家第二代开放源码公司,结合了开放源码价值取向、方法和成功的商业模型。MySQL是一种关联数据库管理系统。关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大的仓库内。这样就增加了速度并提高了灵活性。 MySQL的SQL指得是结构化查询语言。SQL是用于访问数据库的最常用标准化语言,它是由ANSI/ISOSQL标准定义的。SQL标准自1986年以来不断演化发展,有数种版本。MySQL软件是一种开放源码软件。开放源码意味着任何人都能使用和改变软件。任何人都能从Internet下载MySQL软件,而无需支付任何费用。如果愿意,你可以研究源码并进行恰当的更改,以满足你自己的需求。MySQL数据库服务器具有快速、可靠和易于使用的特点。MySQL服务器还有一套实用的特性集合,这些特性是通过与用户的密切合作而开发的。在 MySQL的基准测试主页上,给出了MySQL服务器和其他数据库管理器。MySQL服务器最初是为处理大型数据库而开发的,与已有的解决方案相比,它的速度更快,多年以来,它已成功用于众多要求很高的生产环境。尽管MySQL始终在不断发展,但目前MySQL服务器已能提供丰富和有用的功能。它具有良好的连通性、速度和安全性,这使得MySQL十分适合于访问Internet上的数据库。MySQL服务器工作在客户端/服务器模式下,或嵌入式系统中。MySQL数据库软件是一种客户端/服务器系统,由支持不同后端的 1个多线程SQL服务器,数种不同的客户端程序和库,众多管理工具和广泛的应用编程接口API组成。还能以嵌入式多线程库的形式提供MySQL服务器,你可以将其链接到你的应用程序,从而获得更小、更快、和更易管理的产品[4]。TomcatWeb服务器Tomcat服务器是一个免费的幵放源代码的 Web应用服务器。它是Apache软件基金会(ApacheSoftwareFoundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成[11]。由于有了Sun的参与和支持,最新的Servlet和JSP规范总是能在Tomcat中得到体现,Tomcat5支持最新的Servlet2.4和JSP2.0规范。因为Tomcat技术先进、性能稳定,而且免费,因而深受 Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。Tomcat很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。Tomcat是一个小型的轻量级应用服务器, 在中小型系统和并发访问用户不是很多的场合下被普遍使用,是幵发和调试 JSP程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应对HTML页面的访问请求。实际上Tomcat部分是Apache服务器的扩展,但它是独立运行的,所以当你运行Tomcat时,它实际上作为一个与Apache独立的进程单独运行的。这里的诀窍是,当配置正确时,Apache为HTML页面服务,而Tomcat实际上运行JSP页面和Servlet。另外,Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。系统的需求分析在系统的可行性分析完成以后,并确定系统可以立即投入设计和研制时,下一步要做的工作便是系统的需求分析,即通过各种途径(访谈、调查问卷、实地考察等)了解并明确用户对所要开发的系统各方面的需求,包括功能上的要求、性能上的要求、操作方便性的要求等等。本章对C语言在线考试系统进行了需求分析,主要是根据用户对系统功能方面的要求,明确了系统所要实现的各个功能的相关细节,并在此基础上对系统进行了模块划分,为后续的系统的设计打下基础。3.1.系统的功能需求根据用户对系统功能方面的实际要求,C语言在线考试系统的主要功能包括:用户登录验证功能、用户管理功能、试题管理功能(试题的录入、查询、修改、删除)、考试管理功能、自动组卷功能、倒计时功能、试卷提交功能、故障延时功能和答卷自动评分功能。本节详细地说明了用户对这些功能的需求。(1)用户登录验证功能用户在登录C语言在线考试系统时必须进行身份验证,只有通过了身份验证,才能进入并使用该系统。系统的用户应分成三大类,即管理员、教师和考生。用户在登录时,系统应提供用户类别的选择,以区别不同用户的登录;用户在选择好登录身份之后,系统应该要求用户提供用户名和密码,以进行登录验证。系统应该为管理员(有若干位)预置登录的用户名和密码,并允许管理员修改用户名和密码。在系统提供给教师和考生使用前,管理员负责向系统中提前录入教师和考生的一些相关信息,比如教师的编号、考生的学号以及各自的身份证号等等,这些信息可用来作为这两类用户首次登录时的验证信息。用户首次登录之后,系统应该要求用户修改登录信息,特别是登录密码,以防止他人冒用。此外,为了防止恶意软件进行系统攻击,每个用户登录之前都要以图片的形式产生一组随机验证码[8],用户必须输入正确的验证码才能进入系统。(2)用户管理功能C语言在线考试系统应该对用户进行有效的管理。系统的用户分成了三类,即管理员、教师和考生。管理员具有系统操作的最高权限,负责添加教师和考生用户,并查看其用户信息(不包括密码)。管理员的初始用户名和密码是内置的,管理员可以修改自己的用户名和密码,并添加和修改其他相关信息。对于教师用户来说,用户信息应至少包括登录的用户名和密码,初始时可以选择教师的教师编号作为用户名,身份证号作为密码,之后可以修改。教师可以添加和修改自身相关的其他信息,并查看考试结果(包括相关分析)。对于考生来说,用户信息应至少包括用户名、密码,初始时,用户名为考生的学号,密码为考生的身份证号,之后可以修改。考生可以添加和修改自身的相关其他信息,并查看考试成绩。(3)试题管理功能C语言在线考试系统需要实现试题的管理功能,即组建一个试题库,以便对大量的C语言试题进行高效、便捷的管理。该功能包括:试题的录入,即使得教师能够方便地将C语言试题及其参考答案录入系统的试题库。试题录入子功能应该根据教师录入的试题的类型(选择题、填空题、程序设计题)对试题进行分类管理;试题的查询,即使得教师能够根据试题的某些关键字方便地查询试题,以便检查和修改试题。试题的查询子功能同样应该对不同的题型进行分类查询,以提高查询的效率;试题的修改,即使教师能够对已经录入系统的试题及其参考答案进行不限次数的修改,以便提高试题本身或参考答案的准确性;试题的删除,即使教师能够删除已经录入系统的试题(连同参考答案),以便更新试题库。(4)考试管理功能考试管理功能,即系统提供管理员对考试信息以及考试公告的管理功能。具体来说,系统管理员用户可以安排考试、编辑考试信息、利用自动组卷功能生成试卷投入考试使用;系统管理员可以发布、编辑考试公告。而教师和考生用户则只能浏览考试公告。(5)自动组卷功能自动组卷功能,即系统能够自动生成C语言试卷,供考生作答。自动组卷功能应该根据管理员的要求组卷,即管理员可以设置试卷所包括的题型,各类题型的分值和题数,各类型的试题在试卷上的先后顺序以及考试的时间限制。自动组卷功能应该按照管理员设置的出卷要求按照某种算法从试题库中选择相应的试题,保证每个试题都有机会出现在试卷上,并且每次组卷试卷相同的概率尽可能小。(6)倒计时功能倒计时功能,即在考生进行测试的界面上提供倒计时,以便考生随时了解考试的剩余时间。倒计时功能应该根据教师设置的考试的时间限制准确地进行,保证考试的公平性。倒计时功能应该在考试结束前10分钟时给出相应的提示,提醒考生抓紧时间作答。此外,该功能出现在界面上的位置应该合理,显示的大小适中,不至于分散考生的注意力,产生负面效果。(7)试卷提交功能试卷提交功能包括两种情况,一种情况是考生在考试时间截止之前就已经完成答题,应允许考生提交试卷;另一种情况是考生在规定的考试时间内没能完成答题,此时,系统将自动完试卷的提交,以避免考生继续答题,破坏考试的公平性。对于提前完成考试并欲提交试卷的考生,试卷提交功能在正式提交试卷之前,应该给出确认提示,保证考生不是由于误操作而提交试卷。自动提交试卷的情况则应该与倒计时功能相一致,确保倒计时到零时自动提交试卷并切换主界面到考试结束界面。(8)故障延时功能故障延时功能,即当某个考生的电脑发生故障,例如死机时,监考人员可以暂停该考生的答题倒计时。当故障排除之后,考生可重新登录系统,进入考试,此时考生的考试剩余时间同故障发生时相同,即考生的考试时间被延迟。(9)答卷自动评分功能答卷自动评分功能完成考生答卷的批阅和评分工作,得出考生的成绩。由于C语言考试试题一般包括选择题、填空题和程序设计题,所以系统应能够自动完成这三类试题的批阅和评分。对于程序设计题,应能将考生的程序保存下来,批量编译、运行,得出结果以判断程序是否正确。3.2.系统的模块划分根据系统的功能需求,将C语言在线考试系统分成六大模块进行设计:(1)用户登录验证模块;(2)用户管理模块;(3)试题管理模块;(4)考试管理模块;(5)在线考试模块;(6)答卷自动评分模块。各个模块及子模块的划分和功能说明如表 3-1所示:

表3-1C语言在线考试系统的模块划分编号模块名称子模块名称功能说明1用户登录模实现用户登录时的身份选择、验证。块2用户管理模管理员信息管理添加、删除教师和考生用户;修改和查看教块模块师和考生的部分信息;修改和查看管理员个人信息。教师信息管理模修改和查看教师个人信息;查看考生的部分块信息。考生信息管理模修改和查看考生个人信息、查询考试相关信块息。续表3-1编号模块名称子模块名称功能说明3试题管理模块试题录入模块允许教师录入试题及参考答案。试题编辑模块允许教师对试题库中的试题进行查询、修改、删除。4考试管理模块自动组卷模块自动组卷;保存、查看、删除试卷。考试信息管理模块发布考试;保存、修改、删除考试信息。考试公告管理模对考试公告进行添加、修改、删除。

块5在线考试模块倒计时模块给出考试剩余时间和相应的提示信息。试卷提交模块允许考试提前交卷;考试时间截止时自动交卷。试题显示及作答模块显示试题,供考生在线作答。故障延时模块故障发生时,暂停考生的答题倒计时。6答卷自动评分模块客观题评分模块对选择题、填空题进行自动评分,并保存得分。程序设计题评分模块对程序设计题自动评分,并保存得分。系统的设计在C语言在线考试系统的需求分析和模块划分完成的基础上,本章论述了该系统的概要设计和主要模块的详细设计。系统的概要设计本节对C语言在线考试系统进行概要设计,给出了系统的总体结构图和数据库的设计。系统的总体结构根据上一章需求分析中的系统模块划分,对 C语言在线考试系统进行总体设计,4.12系统数据库设计本节根据系统各模块的功能和模块间的相互关系, 对系统的数据库设计进行论述,包括了数据库的需求分析、概念结构设计、逻辑设计和表设计。数据库的需求分析C语言在线考试系统实现了用户管理、试题管理、在线考试、试卷评分等功能,这些功能所涉及到的数据库的需求说明如下:为实现用户的管理,必须在数据库中保存用户的信息,由于用户分成管理员、教师和考生三类,数据库中应建立对应的管理员表、教师表和考生表。此外,为了方便管理同一考场的考生,数据库中应建立考生组表。为实现试题的管理,数据库中应建立试题表以保存试题信息。为实现考试的管理,数据库中应建立试卷表保存自动组卷功能生成的试卷;应建立考试信息表和考试公告表,保存考试信息和考试公告。为实现在线考试和试卷评分,数据库中应建立答题表存放考生的答题结果。 此外,应建立考生的成绩表用于保存考生的成绩和相关的考试信息。对于系统E-R图中的m:n关系(即多对多关系),也应建立相应的表。(2)数据库的概念结构设计根据C语言在线考试系统的数据库需求分析进行概念结构设计,画出系统的实体-联系图,即E-R图⑻(图4-2)以及实体图(图4-3〜图4-18)。

描述编号考试日期总分考场试卷编号监考人编号考生组编号考试时长考试图描述编号考试日期总分考场试卷编号监考人编号考生组编号考试时长考试图4-7考试实体图图4-10考生组实体图图4-11答题卡实体图图4-12考生成绩单实体图图4-14考生组管理实体图图4-17考试管理实体图(3)数据库的逻辑设计及表设计根据系统的总体概念设计模型、E-R图向关系模式的转化规则和数据库的范式理论,得到系统优化后的逻辑模型[5],如表4-1〜表4-17所示:表4-1管理员表 (admin表)字段名称类型默认值是否主键是否为空说明AdminIDInt自增YesNo管理员编号RealNamevarChar(20)NoNo真实姓名续表4-1字段名称类型默认值是否主键是否为空说明PasswordvarChar(20)NoNo密码UsernamevarChar(20)NoNo用户名表4-2教师表(teacher表)字段名称类型默认值是否主键是否为空说明TeacherIDInt自增YesNo教师编号RealNamevarChar(20)NoNo真实姓名

PasswordvarChar(20)NoNo密码UsernamevarChar(20)NoNo用户名AcademyvarChar(20)NoNo所在院系表4-3考生表(student表)字段名称类型默认值是否主键是否为空说明StudentIDInt自增YesNo考生编号UsernamevarChar(20)NoNo用户名PasswordvarChar(20)NoNo密码RealNamevarChar(20)NoNo真实姓名GroupIDIntNoNo考生组编号,外键AcademyvarChar(20)NoNo所在院系表4-4试题表(question表)字段名称类型默认值是否主键是否为空说明QuestionIDInt自增YesNo试题编号TypeChar(10)NoNo试题类型DescriptionNvarchar(500)NoNo试题描述DifficultyChar(10)NoNo难度ScoreOfQuestionNvarchar(200)NoNo该题分值AnswerNvarchar(200)NoNo参考答案

表4-5考试表(exam表)字段名称类型默认值是否主键是否为空说明ExamIDInt自增YesNo考试编号GroupIDIntNoNo考生组编号,外键续表4-5字段名称类型默认值是否主键是否为空说明PaperIDIntNoNo试卷编号,外键Supervisor^varChar(20)NoNo监考人编号(管理员监考)ExamRoomvarChar(20)NoNo考场DescriptionNvarchar(500)NoNo考试描述ExamDateDateTimeNoNo考试日期DurationIntNoNo考试时长(分钟)TotalScoreIntNoNo考试总分表4-6考试公告表(notice表)字段名称类型默认值是否主键是否为空说明NoticeIDInt自增YesNo公告编号NoticeTitleNvarchar(30)NoNo公告标题ReadCntInt0NoNo浏览次数

ContentNvarchar(500)NoNo公告内容AuthorChar(30)NoNo发布人表4-7试卷表(exam_paper表)字段名称类型默认值是否主键是否为空说明PaperIDInt自增YesNo试卷编号AdminIDIntNoNo管理员编号,外键AddTimeDateTimeNoNo试卷生成时间IsUsedInt0NoNo是否使用表4-8考生组表(stu_group表)字段名称类型默认值是否主键是否为空说明GroupIDInt自增YesNo考生组编号GroupNameNvarchar(20)NoNo考生组名TeacherIDIntNoNo指导教师编号,外键MemoNvarchar(100)NoNo备注表4-9答题卡(answer_sheet表)字段名称类型默认值是否主键是否为空说明SheetIDInt自增YesNo答题卡编号字段名称类型默认值是否主键是否为空说明ExamIDIntNoNo考试编号,外键StudentIDIntNoNo考生编号,外键QuestionIDIntNoNo试题编号,外键TypeChar⑴NoNo试题类型IsCheckedBit⑴0NoNo是否批阅AnswerVarchar(300)NoNo考生答案ScoreIntNoNo该题得分表4-10考生成绩单表(mark_sheet表)字段名称类型默认值是否主键是否为空说明SheetIDInt自增YesNo成绩单编号ExamIDIntNoNo考试编号,外键StudentIDIntNoNo考生学号,外键IsPaperSubmittedBit(1)NoNo试卷是否提交IsExamPausedBit(1)NoNo考试是否暂停RemainMinuteIntNoNo考试剩余时间ScoreOfStudentIntNoNo考生总分表4-11公告管理表(notice_org表)字段名称类型默认值是否主键是否为空说明NoticeOrgIDInt自增YesNo编号AdminIDIntNoNo管理员编号,外键NoticeIDIntNoNo公告编号,外键OperationChar(10)NoNo操作(修改信息等)OperationDateDateTimeNoNo操作日期表4-12考生组管理表(stu_group_org表)字段名称类型默认是否主是否为说明值键空GroupOrgIDInt自增YesNo编号AdminIDIntNoNo管理员编号,外键GroupIDIntNoNo考生组编号,外键OperationChar(10)NoNo操作(修改信息等)OperationDateDateTimeNoNo操作日期表4-13教师管理表(teacher_org表)字段名称类型默认是否主是否为说明

值键空TeacherOrgIDInt自增YesNo编号AdminIDIntNoNo管理员编号,外键TeacherIDIntNoNo教师编号,外键OperationChar(10)NoNo操作(修改等)OperationDateDateTimeNoNo操作日期表4-14试题管理表(question_org表)字段名称类型默认值是否主键是否为空说明QuestionOrgIDInt自增YesNo编号TeacherIDIntNoNo教师编号,外键QuestionIDIntNoNo试题编号,外键OperationNvarchar(200)NoNo操作(添加、修改等)OperationDateDateTimeNoNo操作日期表4-15考试管理表(exam_org表)字段名称类型默认值是否主键是否为空说明ExamOrgIDInt自增YesNo编号AdminIDIntNoNo管理员编号,外键ExamIDIntNoNo考试编号,外键OperationNvarchar(200)NoNo操作(修改信息等)OperationDateDateTimeNoNo操作日期表4-16组卷表(paper_composition表)字段名称类型默认值是否主键是否为空说明PaperCreationIDInt自增YesNo编号QuestionIDIntNoNo试题编号,外键PaperIDIntNoNo试卷编号,外键42系统主要模块的详细设计本节在上一节系统概要设计的基础上,对系统的主要模块进行详细设计。系统的主要模块包括试题管理、考试管理、在线考试和自动评分模块。本文通过这些模块(子模块)的功能流程图来说明它们的详细设计。4.2.1.试题管理模块设计试题管理模块下分成了两个子模块,包括试题的录入子模块、试题编辑子模块,该模块只提供给教师用户使用。(1)试题录入试题录入子模块为教师用户提供试题(包括参考答案、难度和其他试题参数)的录入功能,以组建试题库,是自动组卷的基础。该子模块的功能流程图如图4-19所示:

图4-19试题录入子模块功能流程图(2)试题编辑试题编辑子模块为教师用户提供按关键字查询试题、修改和删除试题(包括参考答案)的功能。该子模块的功能流程图如图 4-20所示:图4-20试题编辑子模块功能流程图4.2.2.考试管理模块设计

考试管理模块下分成三个子模块,即自动组卷子模块、考试信息管理子模块和考试公告管理子模块。本小节重点论述自动组卷子模块的详细设计。本文中自动组卷采用的是遗传算法,遗传算法的概念由 Holland和他的同事在二十世纪六七十年代提出。遗传算法的来源于解释物种起源的进化理论。在自然界中,不适应环境的弱者将被自然选择所淘汰。强者有更多的机会通过繁殖将基因传递给后代。长远来说,带有正确基因组合的物种在种群中占据主导地位。有时,在缓慢的进化中,基因可能发生突变。如果这些突变能够在物种面对生存挑战时带来好处,旧物种就进化为新物种了。而不成功的突变则被自然选择所消灭 [13]o本文中自动组卷子模块根据试卷所要求的各题型的题量、难度,通过遗传算法从4-21所示,其中4-21所示,其中适应值低表示试卷更符合组卷要求:否图4-21否图4-21自动组卷子模块功能流程图4.2.3.在线考试模块设计在线考试模块下分成了四个子模块,本小节主要详细论述倒计时子模块、故障延时子模块的设计。(1)倒计时倒计时子模块在考生进行在线考试时在界面上给出考试的剩余时间,并在距离考4-22试结束10分钟的时候在界面上给出相应提示,以提醒考生。其功能流程图如图所示:4-22开始是剩余时间否否否剩余10分钟否是结束倒计时倒计时给出提示是剩余时间否否否剩余10分钟否是结束倒计时倒计时给出提示图4-22倒计时子模块功能流程图(2)故障延时故障延时子模块主要实现监考人员(由管理员担当)暂停某个考生考试的功能该子模块的功能流程图如图4-23所示:

开始图4-23故障延时子模块功能流程图4.2.4.答卷自动评分模块设计试卷评分模块下分成了两个子模块,包括客观题评分子模块和程序设计题评分子模块。(1)客观题评分客观题评分子模块实现对选择题、填空题进行自动评分(通过对比考生答案和参考答案)并保存得分。其功能流程图如图 4-24所示:

(2)程序设计题评分C语言C语言源程序(*.c),并进行编译、运行得出结果。通过对比考生程序的运行结果和试题的参考答案来确定考生是否得分。若考生的程序无法通过编译则不进行运行操作,其功能流程图如图4-25所示:系统主要模块的实现本章在上一章系统主要模块详细设计的基础上,给出了C语言在线考试系统的主系统主要模块的实现本章在上一章系统主要模块详细设计的基础上,给出了C语言在线考试系统的主要模块的具体实现过程,包括项目创建过程和这些模块的主要实现代码。创建项目在本文中,系统的实现用到了经典MVC框架Struts(1.x)和经典ORM框架Hibernate。系统的数据库管理软件为MySql(5.1),Web服务器为TOMCAT(6)。在系统幵发工作开始之前,必须下载、安装和配置这些开发工具和软件。本节介绍开发环境的搭建和项目的整体结构。开发环境的搭建本系统的开发环境的搭建步骤如下:a)编辑系统环境变量a)编辑系统环境变量Path,使其包含JDK安装目录下的bin目录;b)编辑系统环境变量Classpath,b)编辑系统环境变量Classpath,使其包含JDK安装目录下的lib目录中的dt.jar和tools.jar;c)添加系统环境变量c)添加系统环境变量JAVA_HOME,其值为JDK所在目录;d)添加系统环境变量CATALINA_HOME,其值为Tomcatd)添加系统环境变量(作为编译工具)压缩包,解压后置于任意目录下;添加系统环境变量ANT_HOME,其值为ANT所在目录;;在Tomcat目录下的webapps目录中新建目录CExamSystem作为本项目的目录,在该目录下创建项目的文件结构,如下所示:CExamSystem|—WEB-INF| |—classes该目录下存放src中Java源程序编译后生成的.class文件和相关的配置文件| | |—kent

|||||||||||||||||| ||—action| ||—form| |—DAO| |—po| |—tools|| |—perties系统的国际化配置文件Hibernate配置文件|—lib存放系统所需的jar包|—src该目录下存放系统的Java源程序和相关的配置文件|—kent—strutsStruts相关的Java源程序所在目录|—action存放action类|—form 存放form类|—DAO存放与访问数据库相关的类|—po 存放Hibernate持久化类|—tools存放工具类|—perties系统的国际化配置文件Hibernate配置文件| |—web.xml系统的Web配置文件| |—struts-config.xml系统的Struts配置文件| |—build.xml 系统的build配置文件,以便使用Ant进行源程序的编译| |—struts-bean.tldStruts的bean标签库| |—struts-html.tld Struts的html标签库

|—struts-logic.tld Struts的logic标签库|—css存放样式列表| |—style.css系统的样式列表文件|—images存放系统所需的图片文件|—inc存放JSP页面中公用的inc文件|—admin存放与admin用户相关的JSP页面—teacher存放与teacher用户相关的JSP页面—student存放与student用户相关的JSP页面|—checkcode.jsp为登录页面随机生成验证码|—login.jsp登录页面5.12系统的整体框架系统的整体框架结构可由图 5-1所示:个人信息管理页面教师管理页面考生组管理页面考试管理页面考试公告管理页面图5-1系统的整体框架结构个人信息管理页面教师管理页面考生组管理页面考试管理页面考试公告管理页面图5-1系统的整体框架结构5.2.试题管理模块的实现4.2.1节中该模4.2.1节中该模创建持久化类和数据库访问相关类添加相应配置内容。同时,创建QuestionDAO类用户封装对相应数据库表的操作。以下是QuestionDAO类的主要代码,完成对试题的查看、添加、修改和删除操作://获取试题publicListgetQuestion(intquestionId){Sessionsess=HibernateUtil.currentSession();Transactiontx=sess.beginTransaction();Queryq=sess.createQuery("fromQuestionwherequestionId="+questionId);Listlist=q.list();HibernateUtil.closeSession();returnlist;}//保存试题publicvoidsaveQuestion(Stringtype,Stringdifficulty,StringshortInfo,Stringdescription,Stringanswer,intteacherId){QuestionnewQuestion=newQuestion();newQuestion.setType(type);newQuestion.setDifficulty(difficulty);newQuestion.setShortInfo(shortInfo);newQuestion.setDescription(description);newQuestion.setAnswer(answer);Sessionsess=HibernateUtil.currentSession();Transactiontx=sess.beginTransaction();sess.save(newQuestion);mit();HibernateUtil.closeSession();//保存试题添加记录intquestionId=getQuestionId(shortInfo);QuestionOrgquestionOrg=newQuestionOrg();questionOrg.setTeacherId(teacherId);questionOrg.setQuestionId(questionId);questionOrg.setOperation(”发布");TimeOperationtime=newTimeOperation();questionOrg.setOperationDate(time.getNowTime());saveQuestionOrg(questionOrg);}//修改试题publicvoidmodifyQuestion(intquestionId,Stringtype,Stringdifficulty,StringshortInfo,Stringdescription,Stringanswer,intteacherId){shortInfo=StringTools.replace(shortInfo,"'","''");shortInfo=StringTools.replace(shortInfo,"\\","\\\\");description=StringTools.replace(description,"'","''");description=StringTools.replace(description,"\\","\\\\");answer=StringTools.replace(answer,"'","''");answer=StringTools.replace(answer,"\\","\\\\");Sessionsess=HibernateUtil.currentSession();Transactiontx=sess.beginTransaction();Queryquery=sess.createQuery("updateQuestionsettype='"+type+"',"+"difficulty='"+difficulty+"',"+"shortInfo='"+shortInfo+"',"+"description='"+description+"',"+"answer='"+answer+"'"+"wherequestionId="+questionId);query.executeUpdate();mit();HibernateUtil.closeSession();//保存修改记录QuestionOrgquestionOrg=newQuestionOrg();questionOrg.setTeacherId(teacherId);questionOrg.setQuestionId(questionId);questionOrg.setOperation(”修改");TimeOperationtime=newTimeOperation();questionOrg.setOperationDate(time.getNowTime());saveQuestionOrg(questionOrg);}//删除试题publicvoiddeleteQuestion(intquestionId){Sessionsess=HibernateUtil.currentSession();Transactiontx=sess.beginTransaction();Queryquery=sess.createQuery("deletefromQuestionwherequestionId="+questionId);query.executeUpdate();mit();HibernateUtil.closeSession();deleteQuestionOrg(questionId);}创建Struts相关类为该模块设计的Action类包括:QuestionDispatchAction,NewQuestionAction(带有相应的ActionForm)和ModifyQuestionAction(带有相应的ActionForm),以响应来自用户的操作请求。以下是ModifyQuestionAction类的execute方法的代码,其他类的设计与此类似:publicActionForwardexecute(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse){//从相应的ActionForm中获取用户提交的数据NewQuestionFormnqf=(NewQuestionForm)form;Stringtype=nqf.getType();Stringdifficulty=nqf.getDifficulty();StringshortInfo=nqf.getShortInfo();Stringdescription=nqf.getDescription();Stringanswer=nqf.getAnswer();StringErrMsg="";QuestionDAOqDao=newQuestionDAO();//如果试题已经存在if(qDao.isQuestionExisted(shortInfo)){ErrMsg+="该试题已经存在,请不要重复录入相同的试题!";request.setAttribute("ErrMsg",ErrMsg);returnmapping.findForward("newQuestionFa");}HttpSessionsession=request.getSession(true);intuserid=(Integer)session.getAttribute("userid");qDao.saveQuestion(type,difficulty,shortInfo,description,answer,userid);ErrMsg+="试题录入成功!您可以继续录入新的试题或者退出试题录入。";request.setAttribute("ErrMsg",ErrMsg);returnmapping.findForward("newQuestionSu");}创建表示层JSP文件在表示层(显示图形界面),该模块包括了这几个 JSP文件:problem_manage.jsp、problem_show.jsp、problem_new.jsp和problem_modify.jsp,分别显示试题列表、试题详情、添加新试题和修改试题的用户界面。以下是problem_modify.jsp的主要内容,其他JSP文件的设计与此类似:Listlist=(List)request.getAttribute("questionList");//获取试题列表Iterat

温馨提示

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

评论

0/150

提交评论