软件工程课程设计范例样本_第1页
软件工程课程设计范例样本_第2页
软件工程课程设计范例样本_第3页
软件工程课程设计范例样本_第4页
软件工程课程设计范例样本_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

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

文档简介

资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。《软件工程》课程设计题目C语言在线考试系统的设计与实现学生姓名 学号 院系计算机与软件学院 专业 指导教师 文学志二O年月日目录1.绪论 11.1.C语言在线考试系统概述 11.2.C语言在线考试系统的可行性分析 11.2.1.经济可行性 21.2.2.技术可行性 21.2.3.社会可行性 32.相关技术介绍 32.1.B/S/S体系结构 42.2.JavaServerPages 42.3.Struts 52.4.Hibernate 62.5.MySQL 62.6.TomcatWeb服务器 73. 系统的需求分析 73.1.系统的功能需求 73.2.系统的模块划分 94. 系统的设计 104.1.系统的概要设计 104.1.1.系统的总体结构 104.1.2.系统数据库设计 114.2.系统主要模块的详细设计 194.2.1.试题管理模块设计 194.2.2.考试管理模块设计 214.2.3.在线考试模块设计 214.2.4.答卷自动评分模块设计 225.系统主要模块的实现 245.1.创立项目 245.1.1.开发环境的搭建 255.1.2.系统的整体框架 265.2.试题管理模块的实现 275.2.1.创立持久化类和数据库访问相关类 275.2.2.创立Struts相关类 295.2.3.创立表示层JSP文件 305.3.考试管理模块的实现 325.3.1.初始种群的生成 325.3.2.适应度值的计算 335.3.3.选择(Select) 345.3.4.交叉(Crossover) 355.3.5.变异(Mutation) 365.4.在线考试模块的实现 375.4.1.倒计时子模块的实现 375.4.2.故障延时子模块的实现 385.5.答卷自动评分模块的实现 406. 系统的测试 426.1.系统的测试环境 426.2.系统的测试用例设计 436.3.系统的测试结果 456.4.系统的测试分析 46结束语 46参考文献 46致谢 47C语言在线考试系统的设计与实现张三南京信息工程大学计算机与软件学院,南京210044摘要:随着计算机技术、Internet技术的迅猛发展,在线考试模式以其跨地域性、随时性和用户广泛性的特点,成为推动教育现代化的重要手段,已经成为对学生练习、考试、评价和分析教学效果的重要工具。本文研究利用三层浏览器(B/S/S)体系结构,即Web浏览器/Web服务器/数据库服务器结构来实现C语言科目的在线考试系统。该系统实现了试题库的管理、自动组卷和答卷的自动评分等功能,满足了广大教师和考生的需求。该系统的实现以Java语言及其相关技术为基础,构建于MySQL数据库系统以及TomcatWeb服务器之上。该系统的实现表明,在线考试系统能够提高试题库管理、考试组织和阅卷的效率,并同时保证考试的公正和公平。因此,其它科目的考试也能够开发相应的在线考试系统。关键词:在线考试系统;B/S/S体系结构;Java;MySQL;自动组卷绪论本章对C语言在线考试系统进行了概要性的介绍,并在经济、技术、社会三个方面对该系统开发的可行性进行了分析,以说明该系统的开发是可行的,能够立即开始研制工作。C语言在线考试系统概述随着计算机技术、Internet技术的迅猛发展,绝大部分高校都已接入互联网并建成了校园网,硬件设施也日趋完善。以互联网为基础的在线考试模式,以其跨地域性、随时性和用户广泛性的特点,成为推动教育现代化的重要手段,已经成为对学生练习、考试、评价和分析教学效果的重要工具[1]。C语言在线考试系统利用开放、动态的系统架构,将传统的考试模式与先进的网络应用相结合,实现了C语言科目考试的无纸化、自动化、网络化。第一,本系统能够帮助教师方便地实现试题的管理,包括试题的录入、查询、修改、删除。第二,本系统实现了自动组卷功能,能够根据出题要求自动生成C语言考试试卷,供考生在线作答。第三,考生在使用本系统进行在线考试时,系统将提供倒计时功能,使考生能够随时了解考试的剩余时间。第四,本系统在考试时间截止之后将自动完成交卷,以保证考试严肃公正地进行。第五,在答卷提交之后,本系统将对答卷进行自动评分并保存结果,以便考生查询考试成绩。C语言在线考试系统的可行性分析项目的可行性一般从三个方面进行分析,即经济可行性、技术可行性、社会可行性。经济可行性分析即进行开发成本的估算以及效益的评估,确定开发的项目是否值得投资开发;技术可行性分析是指对要开发的项目的功能、性能和限制条件进行分析,确定现有的资源条件下,技术风险有多大,项目是否能实现;社会可行性分析是指研究要开发的项目是否存在侵犯、妨碍等责任问题,要开发的项目的运行方式在用户组织内是否行得通,现有管理制度、人员素质和操作方式是否可行[2]。本节从这三个方面对C语言在线考试系统的可行性进行分析,以便后续工作的展开。经济可行性C语言在线考试系统的开发成本包括开发该系统的人力的费用以及用于购买部署该系统并充当服务器的计算机的费用。开发该系统估计需要四个开发人员一周的工作量,如果每人每月的工资为元,则开发该系统的人力费用约为元。为了部署该系统,需要购买一台带有较大容量磁盘的高性能计算机,费用估计在1万元。因此,开发该系统的成本总计为1.2万元。在未使用该系统之前,为了进行C语言考试,必须支出相应的人力费用进行出卷、组织考试和批阅试卷,这部分费用约为每年4000元。另外,由于传统考试模式需要用纸,每年需要约3500元的纸张费用。因此,若维护系统每年需花费500元,使用C语言在线考试系统每年可节省约0.7万元。根据以上的估计开发费用和节省的费用,在假设年利率i等于12%的前提下,能够计算得到投资的回收期为2.(如表1-1所示),即在使用C语言在线考试系统2.以后用户能够收回全部投资。因此,开发C语言在线考试系统在经济上是可行的。表1-1C购买设备1.0万元人力(四人、一周、元/月)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.技术可行性(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服务器/数据库服务器结构[7]。本文中采用了Java语言及相关技术JSP、Struts和Hibernate实现该系统,并以Tomcat作为Web服务器,以MySQL作为数据库服务器。本章是对这些技术和服务器的介绍。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为背景的数据存储和访问。Web浏览器Web浏览器Web服务器中间件(应用程序)数据库服务器数据库Http请求Html页面SQL请求结果图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]。JavaServerPagesJavaServerPages简称JSP[12],是由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具有以下的优点[6]:第一,将内容的生成和显示进行分离。使用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处理数据的时间。MySQLMySQL是最流行的开放源码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语言在线考试系统进行了需求分析,主要是根据用户对系统功能方面的要求,明确了系统所要实现的各个功能的相关细节,并在此基础上对系统进行了模块划分,为后续的系统的设计打下基础。系统的功能需求根据用户对系统功能方面的实际要求,C语言在线考试系统的主要功能包括:用户登录验证功能、用户管理功能、试题管理功能(试题的录入、查询、修改、删除)、考试管理功能、自动组卷功能、倒计时功能、试卷提交功能、故障延时功能和答卷自动评分功能。本节详细地说明了用户对这些功能的需求。(1)用户登录验证功能用户在登录C语言在线考试系统时必须进行身份验证,只有经过了身份验证,才能进入并使用该系统。系统的用户应分成三大类,即管理员、教师和考生。用户在登录时,系统应提供用户类别的选择,以区别不同用户的登录;用户在选择好登录身份之后,系统应该要求用户提供用户名和密码,以进行登录验证。系统应该为管理员(有若干位)预置登录的用户名和密码,并允许管理员修改用户名和密码。在系统提供给教师和考生使用前,管理员负责向系统中提前录入教师和考生的一些相关信息,比如教师的编号、考生的学号以及各自的身份证号等等,这些信息可用来作为这两类用户首次登录时的验证信息。用户首次登录之后,系统应该要求用户修改登录信息,特别是登录密码,以防止她人冒用。另外,为了防止恶意软件进行系统攻击,每个用户登录之前都要以图片的形式产生一组随机验证码[8],用户必须输入正确的验证码才能进入系统。(2)用户管理功能C语言在线考试系统应该对用户进行有效的管理。系统的用户分成了三类,即管理员、教师和考生。管理员具有系统操作的最高权限,负责添加教师和考生用户,并查看其用户信息(不包括密码)。管理员的初始用户名和密码是内置的,管理员能够修改自己的用户名和密码,并添加和修改其它相关信息。对于教师用户来说,用户信息应至少包括登录的用户名和密码,初始时能够选择教师的教师编号作为用户名,身份证号作为密码,之后能够修改。教师能够添加和修改自身相关的其它信息,并查看考试结果(包括相关分析)。对于考生来说,用户信息应至少包括用户名、密码,初始时,用户名为考生的学号,密码为考生的身份证号,之后能够修改。考生能够添加和修改自身的相关其它信息,并查看考试成绩。(3)试题管理功能C语言在线考试系统需要实现试题的管理功能,即组建一个试题库,以便对大量的C语言试题进行高效、便捷的管理。该功能包括:试题的录入,即使得教师能够方便地将C语言试题及其参考答案录入系统的试题库。试题录入子功能应该根据教师录入的试题的类型(选择题、填空题、程序设计题)对试题进行分类管理;试题的查询,即使得教师能够根据试题的某些关键字方便地查询试题,以便检查和修改试题。试题的查询子功能同样应该对不同的题型进行分类查询,以提高查询的效率;试题的修改,即使教师能够对已经录入系统的试题及其参考答案进行不限次数的修改,以便提高试题本身或参考答案的准确性;试题的删除,即使教师能够删除已经录入系统的试题(连同参考答案),以便更新试题库。(4)考试管理功能考试管理功能,即系统提供管理员对考试信息以及考试公告的管理功能。具体来说,系统管理员用户能够安排考试、编辑考试信息、利用自动组卷功能生成试卷投入考试使用;系统管理员能够发布、编辑考试公告。而教师和考生用户则只能浏览考试公告。(5)自动组卷功能自动组卷功能,即系统能够自动生成C语言试卷,供考生作答。自动组卷功能应该根据管理员的要求组卷,即管理员能够设置试卷所包括的题型,各类题型的分值和题数,各类型的试题在试卷上的先后顺序以及考试的时间限制。自动组卷功能应该按照管理员设置的出卷要求按照某种算法从试题库中选择相应的试题,保证每个试题都有机会出现在试卷上,而且每次组卷试卷相同的概率尽可能小。(6)倒计时功能倒计时功能,即在考生进行测试的界面上提供倒计时,以便考生随时了解考试的剩余时间。倒计时功能应该根据教师设置的考试的时间限制准确地进行,保证考试的公平性。倒计时功能应该在考试结束前10分钟时给出相应的提示,提醒考生抓紧时间作答。另外,该功能出现在界面上的位置应该合理,显示的大小适中,不至于分散考生的注意力,产生负面效果。(7)试卷提交功能试卷提交功能包括两种情况,一种情况是考生在考试时间截止之前就已经完成答题,应允许考生提交试卷;另一种情况是考生在规定的考试时间内没能完成答题,此时,系统将自动完试卷的提交,以避免考生继续答题,破坏考试的公平性。对于提前完成考试并欲提交试卷的考生,试卷提交功能在正式提交试卷之前,应该给出确认提示,保证考生不是由于误操作而提交试卷。自动提交试卷的情况则应该与倒计时功能相一致,确保倒计时到零时自动提交试卷并切换主界面到考试结束界面。(8)故障延时功能故障延时功能,即当某个考生的电脑发生故障,例如死机时,监考人员能够暂停该考生的答题倒计时。当故障排除之后,考生可重新登录系统,进入考试,此时考生的考试剩余时间同故障发生时相同,即考生的考试时间被延迟。(9)答卷自动评分功能答卷自动评分功能完成考生答卷的批阅和评分工作,得出考生的成绩。由于C语言考试试题一般包括选择题、填空题和程序设计题,因此系统应能够自动完成这三类试题的批阅和评分。对于程序设计题,应能将考生的程序保存下来,批量编译、运行,得出结果以判断程序是否正确。系统的模块划分根据系统的功能需求,将C语言在线考试系统分成六大模块进行设计:(1)用户登录验证模块;(2)用户管理模块;(3)试题管理模块;(4)考试管理模块;(5)在线考试模块;(6)答卷自动评分模块。各个模块及子模块的划分和功能说明如表3-1所示:表3-1C编号模块名称子模块名称功能说明1用户登录模块实现用户登录时的身份选择、验证。2用户管理模块管理员信息管理模块添加、删除教师和考生用户;修改和查看教师和考生的部分信息;修改和查看管理员个人信息。教师信息管理模块修改和查看教师个人信息;查看考生的部分信息。考生信息管理模块修改和查看考生个人信息、查询考试相关信息。续表3-1编号模块名称子模块名称功能说明3试题管理模块试题录入模块允许教师录入试题及参考答案。试题编辑模块允许教师对试题库中的试题进行查询、修改、删除。4考试管理模块自动组卷模块自动组卷;保存、查看、删除试卷。考试信息管理模块发布考试;保存、修改、删除考试信息。考试公告管理模块对考试公告进行添加、修改、删除。5在线考试模块倒计时模块给出考试剩余时间和相应的提示信息。试卷提交模块允许考试提前交卷;考试时间截止时自动交卷。试题显示及作答模块显示试题,供考生在线作答。故障延时模块故障发生时,暂停考生的答题倒计时。6答卷自动评分模块客观题评分模块对选择题、填空题进行自动评分,并保存得分。程序设计题评分模块对程序设计题自动评分,并保存得分。系统的设计在C语言在线考试系统的需求分析和模块划分完成的基础上,本章论述了该系统的概要设计和主要模块的详细设计。系统的概要设计本节对C语言在线考试系统进行概要设计,给出了系统的总体结构图和数据库的设计。系统的总体结构根据上一章需求分析中的系统模块划分,对C语言在线考试系统进行总体设计,得到系统的总体结构图如图4-1所示(各模块的功能说明见上一章表3-1):用户登录用户登录验证C语言在线考试系统用户管理试题管理在线考试答卷自动评分管理员信息管理教师信息管理考生信息管理试题录入试题编辑自动组卷倒计时试卷提交客观题评分程序设计题评分试题显示及作答考试管理考试信息管理考试公告管理故障延时图4-1系统的总体结构图系统数据库设计本节根据系统各模块的功能和模块间的相互关系,对系统的数据库设计进行论述,包括了数据库的需求分析、概念结构设计、逻辑设计和表设计。(1)数据库的需求分析C语言在线考试系统实现了用户管理、试题管理、在线考试、试卷评分等功能,这些功能所涉及到的数据库的需求说明如下:为实现用户的管理,必须在数据库中保存用户的信息,由于用户分成管理员、教师和考生三类,数据库中应建立对应的管理员表、教师表和考生表。另外,为了方便管理同一考场的考生,数据库中应建立考生组表。为实现试题的管理,数据库中应建立试题表以保存试题信息。为实现考试的管理,数据库中应建立试卷表保存自动组卷功能生成的试卷;应建立考试信息表和考试公告表,保存考试信息和考试公告。为实现在线考试和试卷评分,数据库中应建立答题表存放考生的答题结果。另外,应建立考生的成绩表用于保存考生的成绩和相关的考试信息。对于系统E-R图中的m:n关系(即多对多关系),也应建立相应的表。(2)数据库的概念结构设计根据C语言在线考试系统的数据库需求分析进行概念结构设计,画出系统的实体-联系图,即E-R图[3](图4-2)以及实体图(图4-3~图4-18)。管理员管理员考生组教师试题答题卡成绩单试卷考试考试公告考生教师管理考生组管理考试管理、属于、答题组卷试题管理自动阅卷指导查看1mpmmqn1m1mnnnmnn1p11mn公告管理、m使用1属于包含1pm图4-2C语言在线考试系统数据库概念结构设计(E-R图)管理员管理员密码用户名编号真实姓名图4-3管理员实体图教师教师密码用户名编号真实姓名院系图4-4教师实体图考生考生密码用户名编号真实姓名考生组编号所在院系图4-5考生实体图试题试题分值难度试题描述参考答案类型编号图4-6试题实体图考试考试编号监考人编号考场描述考试日期考生组编号试卷编号总分考试时长图4-7考试实体图考试公告考试公告编号公告内容浏览次数公告标题作者图4-8考试公告实体图试卷试卷编号是否使用生成时间管理员编号图4-9试卷实体图考生组考生组编号组名教师编号备注图4-10考生组实体图答题卡答题卡编号考生答案考试编号得分考生编号试题类型试题编号是否批阅图4-11答题卡实体图考生成绩单考生成绩单考生编号考生成绩考试编号是否暂停考试考试剩余时间编号是否交卷图4-12考生成绩单实体图管理员编号管理员编号操作日期操作公告编号公告管理编号图4-13公告管理实体图管理员编号管理员编号操作日期操作考生组编号考生组管理编号图4-14考生组管理实体图管理员编号管理员编号操作日期操作教师编号教师管理编号图4-15教师管理实体图教师编号教师编号操作日期操作试题编号试题管理编号图4-16试题管理实体图管理员编号管理员编号操作日期操作考试编号考试管理编号图4-17考试管理实体图试卷编号试卷编号组卷编号试题编号图4-18组卷实体图(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试卷编号,外键SupervisorIdvarChar(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答题卡编号续表4-9字段名称类型默认值是否主键是否为空说明ExamIDIntNoNo考试编号,外键StudentIDIntNoNo考生编号,外键QuestionIDIntNoNo试题编号,外键TypeChar(1)NoNo试题类型IsCheckedBit(1)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试卷编号,外键系统主要模块的详细设计本节在上一节系统概要设计的基础上,对系统的主要模块进行详细设计。系统的主要模块包括试题管理、考试管理、在线考试和自动评分模块。本文经过这些模块(子模块)的功能流程图来说明它们的详细设计。试题管理模块设计试题管理模块下分成了两个子模块,包括试题的录入子模块、试题编辑子模块,该模块只提供给教师用户使用。(1)试题录入试题录入子模块为教师用户提供试题(包括参考答案、难度和其它试题参数)的录入功能,以组建试题库,是自动组卷的基础。该子模块的功能流程图如图4-19所示:选择录入题型选择录入题型开始操作成功否结束录入试题(及参考答案)返回操作成功提示返回操作失败提示否是图4-19试题录入子模块功能流程图(2)试题编辑试题编辑子模块为教师用户提供按关键字查询试题、修改和删除试题(包括参考答案)的功能。该子模块的功能流程图如图4-20所示:查询试题查询试题开始操作成功否结束返回操作成功提示返回操作失败提示修改试题删除试题选择操作类型试题存在否否返回试题不存在提示是否是图4-20试题编辑子模块功能流程图考试管理模块设计考试管理模块下分成三个子模块,即自动组卷子模块、考试信息管理子模块和考试公告管理子模块。本小节重点论述自动组卷子模块的详细设计。本文中自动组卷采用的是遗传算法,遗传算法的概念由Holland和她的同事在二十世纪六七十年代提出。遗传算法的来源于解释物种起源的进化理论。在自然界中,不适应环境的弱者将被自然选择所淘汰。强者有更多的机会经过繁殖将基因传递给后代。长远来说,带有正确基因组合的物种在种群中占据主导地位。有时,在缓慢的进化中,基因可能发生突变。如果这些突变能够在物种面对生存挑战时带来好处,旧物种就进化为新物种了。而不成功的突变则被自然选择所消灭[13]。本文中自动组卷子模块根据试卷所要求的各题型的题量、难度,经过遗传算法从试题库中选取相关的试题,自动生成试卷,并保存。算法的流程如图4-21所示,其中适应值低表示试卷更符合组卷要求:生成初试种群(试卷集)生成初试种群(试卷集)结束计算群体中每个个体(试卷)的适应值将适应值低的个体两两配对进行交叉运算将适应值高的个体淘汰对两两配对交叉后生成的个体进行变异保存适应值最低的个体(试卷)开始是否达到最大代数否是图4-21自动组卷子模块功能流程图在线考试模块设计在线考试模块下分成了四个子模块,本小节主要详细论述倒计时子模块、故障延时子模块的设计。(1)倒计时倒计时子模块在考生进行在线考试时在界面上给出考试的剩余时间,并在距离考试结束10分钟的时候在界面上给出相应提示,以提醒考生。其功能流程图如图4-22所示:倒计时倒计时开始结束剩余10分钟否否是给出提示倒计时剩余时间否否是图4-22倒计时子模块功能流程图(2)故障延时故障延时子模块主要实现监考人员(由管理员担当)暂停某个考生考试的功能。该子模块的功能流程图如图4-23所示:保存考试剩余时间于该考生成绩表保存考试剩余时间于该考生成绩表考生请求暂停答题置该考生成绩表考试暂停为真是否已经暂停是否返回错误信息开始结束 图4-23故障延时子模块功能流程图答卷自动评分模块设计试卷评分模块下分成了两个子模块,包括客观题评分子模块和程序设计题评分子模块。(1)客观题评分客观题评分子模块实现对选择题、填空题进行自动评分(经过对比考生答案和参考答案)并保存得分。其功能流程图如图4-24所示:从答题卡获取试题编号从答题卡获取试题编号开始获取试题参考答案比较考生答案和参考答案回答正确否累加客观题得分保存客观题总分否否是否结束是否选择填空题是是否还有答题卡是图4-24客观题评分子模块功能流程图(2)程序设计题评分程序设计题评分子模块从考生答题卡中获取考生编写的程序,将其保存为C语言源程序(*.c),并进行编译、运行得出结果。经过对比考生程序的运行结果和试题的参考答案来确定考生是否得分。若考生的程序无法经过编译则不进行运行操作,其功能流程图如图4-25所示:从答题卡中获取试题编号从答题卡中获取试题编号开始获取考生程序代码是否程序设计题将考生代码保存为C语言源文件(*.c)运行程序编译是否经过编译源文件将程序运行结果同参考答案进行对比是否相同累加程序设计题得分结束保存考生得分否否是是否是是是否还有答题卡否图4-25程序设计题评分子模块功能流程图系统主要模块的实现本章在上一章系统主要模块详细设计的基础上,给出了C语言在线考试系统的主要模块的具体实现过程,包括项目创立过程和这些模块的主要实现代码。创立项目在本文中,系统的实现用到了经典MVC框架Struts(1.x)和经典ORM框架Hibernate(3)。系统的数据库管理软件为MySql(5.1),Web服务器为TOMCAT(6)。在系统开发工作开始之前,必须下载、安装和配置这些开发工具和软件。本节介绍开发环境的搭建和项目的整体结构。开发环境的搭建本系统的开发环境的搭建步骤如下:从Sun公司的官方网站(.com)上下载适合所使用操作系统的JDK和JRE并安装;编辑系统环境变量Path,使其包含JDK安装目录下的bin目录;编辑系统环境变量Classpath,使其包含JDK安装目录下的lib目录中的dt.jar和tools.jar;从网站下载Tomcat6的压缩包,解压后置于任意目录下;添加系统环境变量JAVA_HOME,其值为JDK所在目录;添加系统环境变量CATALINA_HOME,其值为Tomcat所在目录;从网站下载Ant(作为编译工具)压缩包,解压后置于任意目录下;添加系统环境变量ANT_HOME,其值为ANT所在目录;从网站下载Struts压缩包,解压后备用;从网站.org下载Hibernate压缩包,解压后备用;在Tomcat目录下的webapps目录中新建目录CExamSystem作为本项目的目录,在该目录下创立项目的文件结构,如下所示:CExamSystem|—WEB-INF||—classes该目录下存放src中Java源程序编译后生成的.class文件和相关的配置文件|||—kent||||—struts|||||—action|||||—form||||—DAO||||—po||||—tools|||—perties系统的国际化配置文件|||—hibernate.cfg.xml系统的Hibernate配置文件||—lib存放系统所需的jar包||—src该目录下存放系统的Java源程序和相关的配置文件|||—kent||||—strutsStruts相关的Java源程序所在目录|||||—action存放action类|||||—form存放form类||||—DAO存放与访问数据库相关的类||||—po存放Hibernate持久化类||||—tools存放工具类|||—perties系统的国际化配置文件|||—hibernate.cfg.xml系统的Hibernate配置文件||—web.xml系统的Web配置文件||—struts-config.xml系统的Struts配置文件||—build.xml系统的build配置文件,以便使用Ant进行源程序的编译||—struts-bean.tldStruts的bean标签库||—struts-html.tldStruts的html标签库||—struts-logic.tldStruts的logic标签库|—css存放样式列表||—style.css系统的样式列表文件|—images存放系统所需的图片文件|—inc存放JSP页面中公用的inc文件|—admin存放与admin用户相关的JSP页面|—teacher存放与teacher用户相关的JSP页面|—student存放与student用户相关的JSP页面|—checkcode.jsp为登录页面随机生成验证码|—login.jsp登录页面系统的整体框架系统的整体框架结构可由图5-1所示:登录页面登录页面管理员主页教师主页考生主页个人信息管理页面教师管理页面考生组管理页面考试管理页面考试公告管理页面个人信息管理页面试题管理页面在线阅卷页面考生信息查看页面成绩查询页面个人信息管理页面考试页面在线监考页面图5-1系统的整体框架结构试题管理模块的实现试题管理模块用于完成试题的录入、查看、修改和删除。本节根据4.2.1节中该模块的设计,对该模块进行实现。创立持久化类和数据库访问相关类试题管理模块所需的持久化类主要包括:Question和QuestionOrg,为它们创立相应的Hibernate配置文件Question.hbm.xml以及QuestionOrg.hbm.xml,并在hibernate.cfg.xml添加相应配置内容。同时,创立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,shortIn

温馨提示

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

评论

0/150

提交评论