1、 本科毕业论文(设计)模板本科毕业论文(设计)论文题目: 在线考试系统的设计与实现 学生姓名: 罗 伟 学 号: 1205290203 专 业: 软 件 工 程 班 级: 软 件 1202 指导教师: 王 命 宇 完成日期: 2016年 5 月 30 日在线考试系统的设计与实现内 容 摘 要学生在线考试系统旨在提高考试的质量和效率,充分发挥网上考试的灵活性,不局限于考生所在地理位置,同时,在大规模考生同时线上考试的环境和压力下,以提升考试系统的高并发连接、大数据处理的性能。这也是顺应国内O2O线上线下服务的潮流,如阿里巴巴的淘宝、京东商城、1号店、蘑菇街等几大线上线下巨头,促进社会经济的快速发
2、展。为了适应在大规模考生同时在线参与考试的压力下,既保证后端服务器的性能和效率,又能良好地处理大量客户连接来保证高并发。系统采用C+编写在Linux环境下运行的后端服务器,使用轻量级的nginx反向代理服务器,nginx相对于Apache的好处在近几年O2O概念下应运而生并取得压倒性的优势取代用Apache作为web反向代理服务器。nginx的高性能、高并发、大数据处理方面表现极佳。采用f-cgi框架来支撑动态网站的开发,比jsp开发动态网站有更加充分的依据,比如服务器可以更高效地与客户端浏览器交互,而不需要安装JVM(java虚拟机)。另外,对于一些html web文档,不需要开发者大量手动
3、的编辑,而使用模板引擎在cgi程序中就可以帮我们完成,大大提高了开发效率。此外,任何项目没有绝对的好坏优劣之分,系统的大部分功能都可以在现有技术下完成。一些其他功能也可以通过日后的需求而完善。总之,系统的可扩展性也是值得肯定的。关键词:C+ nginx f-cgi框架 模板引擎 O2ODesign and Implementation of Online Examination SystemAbstract Students online examination system aimed at improving the quality and efficiency of the examin
4、ation, give full play to the flexibility of the online exam, the candidates are not limited to geographical location, while at the same time a large-scale environment and pressure candidates online exam to improve examination system high concurrent connections, the performance of large data processi
5、ng. This is the tide domestic O2O online and offline services, such as Taobao, Jingdong Mall, Shop No. 1, Street giant mushrooms at several major online and offline Alibaba, promote the rapid development of social economy.In order to meet the candidates at the same time under the pressure of large-s
6、cale participation in the online exam, both to ensure the performance and efficiency of the back-end servers, and can handle a large number of customers with good connections to ensure high concurrency. System written in C + back-end servers running the Linux environment, the use of lightweight ngin
7、x reverse proxy server, nginx Apache with respect to benefits in recent years, O2O concept came into being and made an overwhelming advantage substituted with Apache as a web reverse proxy server. nginx high-performance, high concurrency, high data processing performance is excellent. Using f-cgi fr
8、amework to support the development of dynamic websites, there are more than sufficient basis jsp development of dynamic Web sites, such as server more efficiently interact with the client browser, without the need to install the JVM (java virtual machine).In addition, for some html web documents, th
9、e developer does not need a lot of manual editing, and using a template engine cgi program can help us to complete, greatly improving the efficiency of development. In addition, any project there is no absolute good or bad points, most of the functions of the system can be done in the prior art unde
10、r. Some other features can also improve future needs. In short, the systems scalability is also worthy of recognition.Key words: CPlusPlus Nginx Framework-of-fcgi Template-Engine OTOII目 录绪 论1(一)系统开发的目的1(二)系统开发的意义1一、系统简介2(一)环境简介2(二)nginx简介3(三)cgi与f-cgi原理简介4(四)memcached简介4(五)mysql数据库简介5二、可行性研究6(一)经济可行
11、性6(二)技术可行性6(三)法律可行性6(四)系统流程图7(五)数据流图DFD7(六)数据字典DD9三、需求分析12(一)功能需求12(二)性能需求12(三)ER图13四、总体设计(概要设计)14(一)系统概要设计141.WBS图142.系统功能模块与界面设计14(二)数据库概要设计151.ER模型152.关系模型设计15五、详细设计17(一)功能设计171.学生功能模块(StudentModule)172.网站管理员模块(AdminModule)21(二)数据库表详细设计26六、编码与单元测试29(一)单元编码29(二)界面展示30(三)单元测试33七、系统测试35八、系统维护37(一)项目
12、部署与网站发布37(二)性能调优和运维37结 论38参 考 文 献39绪 论(一)系统开发的目的随着C+、java、C#等面向对象编程语言的出现。OOP的编程模式深入软件工程师们的内心。但是在大多数网站应用似乎被java structs框架、jsp框架、.net框架所垄断,尽管如此,这些框架在一些领域因为其执行效率的低下而被用户诟病。比如,java需要在JVM环境下运行,对大量内置数据类型进行过度封装,其在效率、性能方面的不足也体现出来。C/C+一直在效率方面表现出色,被广泛应用于系统、驱动、服务器和游戏行业软件的开发。C+同样也适合于开发网站,并因其效率方面的优点,本系统就是为了在这方面做进
13、一步尝试。C+对开发者的技术要求高、难度大,所以在开发web应用方面,应用极少。通过本系统介绍用C+进行开发web应用,期望可以推广C+在web领域得到程序员们的青睐,激发广大编程初学者对C+的热爱,敢于迎难而上,攻克难关,推动我国乃至世界软件业的发展。除了为了推广C+在不同的领域、业务中的应用外。开发此系统是为那些打算开发出高并发、高性能、稳定健壮网站的程序员们提供一个示例和样本。改善大量用户同时在线访问时,出现的服务器崩溃、宕机、响应延时高、不稳定、产生错误的瓶颈。(二)系统开发的意义本系统开发的意义不仅仅在其对C+语言的推广,鼓励更过的后来者勇于登上计算机科学的高峰,解决一个接一个的难题
14、,最终推动计算机科学的发展的学术性意义。更重要的是,它也具有很大的商业价值和实际意义。相对于传统的线下考试,在线考试不需要安排实际的物理考场。安排大量的考场,设置过多的考点、密切关注对考场秩序的调度。这会带来大量的人力资源成本,并且效率低下,不符合信息时代对效率的要求。在线考试也不局限于地理位置的分布而呈现出任何差异,所有参加考试的考生只需登录到系统就可以进行答题。这方便了考生合理安排自己的答题环境。对教师而言,减轻了大量手工批阅试卷的负担,客观题部分完全自动化阅卷。主观题则只需和管理员沟通制定相应的评分细则,系统采用类似于标准答案关键词匹配比例的算法即可比较公正地批改试卷。非常轻松简捷,方便
15、,降低了人工阅卷的难度。41一、系统简介随着大数据、云存储、云计算、高并发、集群与分布式计算这些新技术的出现,使得人们对效率和性能的关注度也急剧升温。本系统是拟为学生参加在线编程技术考试而开发的。系统采用B/S架构,nginx反向代理服务器部署在Linux后端服务器集群系统中,使用memcached高性能分布式缓存技术,在大量考生同时参与考试时,使得服务器正常工作的同时,还保证了效率和性能。这相比线下考试具有更大的灵活性和稳定性。另外,在日常生活中中我们访问的大量的web应用程序都是使用java structs、jsp、asp、.net等框架开发架构的。而本系统则是使用C+语言开发web后端服
16、务器程序。C+因其面向对象编程特性(OOP)及向前兼容C面向过程式编程,这使得C+在程序执行效率上与C语言处于同一水平。众所周知,C语言主要用于开发系统级别的应用或驱动程序,而C+语言则用在服务器、部分系统级别的底层开发(尤其是游戏服务器)。之所以使用C+语言是因为C不适合大型项目或具有通用性和代码可高度可重用性的开发。国内外的web网站几乎都会用到程序连接访问数据库,而大量地访问数据库,会给应用程序带来很多负担,解决方案是除了使用memcached高性能的分布式缓存服务器外,可以在语言上做出选择。大部分数据库对于C/C+语言都提供了源码级别的支持,再加上C/C+程序执行效率高,这对于频繁访问
17、数据库的web应用是一个不错的选择。和前文提到的类似,由于web应用需要大量地访问数据库,可以考虑在服务器端部署memcached分布式缓存服务器以减少应用程序对数据库的访问次数,从而提高web动态应用的响应速度和可扩展性。本文主要是为了在C/C+开发高并发响应的web应用方面做出一些尝试。(一)环境简介整个考试系统涉及的开发语言、开发平台、运行平台、运行环境要求及限制、使用的技术手段的详细信息参见表1-1。表1-1系统环境汇总表开发语言 C+开发平台 Linux(Centos 6.6 64 bits)Web反向代理服务器 nginx数据库 mysqlWeb文档 Html 2.0 (=)缓存服
18、务器 memcached其他辅助开发工具 模板引擎、js/css fcgi后端服务器运行环境 任何unix-like的操作系统。本系统使用的是Centos 6.6。Web客户端运行环境 操作系统平台: Win all/Linux/Unix-like/Mac-OS浏览器: Google(推荐)、IE 、firefox 等主流浏览器。 (二)nginx简介Nginx (“engine x”) 最早是由俄国软件工程师Igor.Sysoev 采用C语言、Linux系统平台的epoll IO多路复用技术、kqueue网络IO模型编写的http web反向代理服务器。在高并发大数据量连接的场景下,ngin
19、x是Apache 非常好的不二选择。并且具有效率高、稳定性好、高并发、负载均衡、内存、CPU等硬件资源消耗低的优点,以至于Nginx 在国内外众多的互联网门户网站的应用已经呈现出锐不可当之势。比如Facebook、腾讯3G下载、网易新闻、迅雷安全中心、新浪博客播客、酷六、豆瓣、六间房、水木社区、新华网RSS订阅频道等国内外知名的门户网站。Nginx在http代理和反向代理服务器方面的应用几乎会取代Apache(本文并没有任何诋毁和轻蔑Apache在行业中的地位,仅仅是个人的预测)。同其他的http服务器和反向代理服务器一样,Nginx既可以响应静态页面请求(即http服务器),又可以响应动态页
20、面请求(通过与后端服务器fcgi或cgi交互,把数据返回给客户端浏览器)。下面归纳总结了使用nginx相对于其他老牌服务器(Apache为例)的优缺点对比,参见表3-2。表1-2 各服务器优缺点对比nginxApache是否轻量级是(线程级别) 否,重量级(进程级别)静态页面处理能力约平均是Apache的3倍性能高并发性能nginx 处理请求是异步非阻塞的,因此支持高并发。Apache则是阻塞型的,高并发连接下会出现大量错误或拒绝客服端访问。资源消耗内存,CPU消耗低高并发下,资源消耗非常大是否支持负载均衡是否是否支持热部署是否Rewrite模块逊于Apacherewrite,比nginx 的
21、rewrite 强大对动态页面的响应不太好非常好因为,两者都支持http服务和反向代理、正向代理。又基于两者各自的优缺点,在一些应用场景下,已经考虑让nginx和Apache共存,以提供给客户端更优质的响应。在性能方面,Nginx是专门为性能优化而开发的,在实现上非常注重效率。Nginx在高并发连接和大量静态页面请求下,性能出众,稳定性好。基于效率优先的前提,本系统采用nginx作为http服务器和反向代理服务器。(三)cgi与f-cgi原理简介在说明FastCGI之前,先说说CGI的前世今生。CGI 即Common Gateway Interface公共网关接口。CGI后端服务器程序的原理是
22、:每次当客户请求到来时(即请求CGI),http服务器或反向代理服务器就会fork+exec生成替换一个新的CGI进程处理客户请求。当CGI执行完毕后,该CGI子进程将会被服务器进程kill掉。也就是说由服务器管理着处理客户请求的CGI子进程。显而易见,当高并发连接环境下,这样的工作模式是很受程序员诟病的。因为频繁地创建和销毁子进程将加大系统的开销和负担。FastCGI(即fcgi,后文将用fcgi简言之),本质上是对CGI的改进。其工作原理是将用于处理客户连接请求的子进程,即CGI解释器进程长期驻留于内存中并因此获得在性能上的提高。fcgi克服了CGI的弊病,CGI解释器的反复加载是CGI性
23、能低下的主要原因,相反,用fcgi进程管理器调度管理常驻在内存中的CGI解释器会明显提高服务器的性能。fcgi完整的工作过程如下所述:首先,fcgi进程管理器( nginx 下 fcgi 与反向代理服务器是分离的)在http服务器或反向代理服务器启动时即载入内存。接着,fcgi进程管理器进行初始化,随后同时启动多个CGI解释器进程,等待来自客户端的连接。紧接着,当客户端连接请求到达Http服务器或反向代理服务器时,fcgi进程管理器选择并连接到一个CGI解释器进程。由我们的Http服务器或反向代理服务器将CGI环境变量和标准输入重定向到fcgi子进程。fcgi子进程执行完处理后将标准输出和错误
24、信息重定位到客户端浏览器。这就是本系统客户端和服务器交互通信的原理。当fcgi子进程关闭连接时,请求便告处理完成。fcgi子进程接着等待并处理来自fcgi进程管理器(运行在Http服务器或反向代理服务器中)的下一个连接,而不急着退出系统,换出到磁盘。而CGI进程在传统的CGI模式中,执行完后就不存在了。显而易见的是,CGI相对于fcgi相当慢。每一个Web请求到来都要生成一个子进程去处理请求,完成请求时又被主进程析构掉。使用fcgi,所有这些都只在nginx主进程启动时发生一次。一个额外的好处是,持续数据库连接可以工作并运行良好。简单地说,fcgi服务器优于cgi服务器。因为每次有新的客户链接
25、请求到来时,fcgi使用的是多线程处理方式去处理请求,而cgi则是fork+exec复制替换一个进程去处理请求,存在多进程的开销和负担。(四)memcached简介Memcached 是一款分布式内存对象缓存软件,主要用途是动态Web应用中,减轻数据库负载。它通过将已经访问过的数据和对象缓存于内存中,减少对数据库的读访问次数,提高访问数据库的速度。Memcached内部数据结构使用一个存储键值对的哈希表(HashMap),用C语言编写的守护进程(daemon ),而客户端可以采用任何语言编写只需要遵循memcached约定的应用层协议即可与memcached服务器端守护进程通信。因此,memc
26、ached具有极强的分布式缓存的能力。memcached的存储机制是,其API使用循环冗余校验计算出存储键值,基于处理哈希冲突的方式寻找出合理的存储数据的服务器,当内部HashMap表格满后,采用LRU(最近未使用的算法)替换出那些不太重要的数据存放在内存中。大多数web应用架构都是将服务器端的重要数据存储在数据库中,把客户端用户请求的数据从数据库中读取并显示在客户端浏览器界面。但对于那些对数据集中访问的大量客户端请求,服务器端从数据库取数据的速度和性能会非常糟糕,最终导致服务器端和客户端响应时延加长,网站访问速度极慢。memcached就可以非常好的解决这个问题。从前文的介绍中不难得出,me
27、mcached是一款性能极高的分布式缓存服务器,其主要用途是:通过缓存数据库查询结果,减少对数据库访问次数,提高动态Web应用的响应速度。本文只是引进对memcached的使用,并非是一个对memcached的历史、发展、使用目的、用途、通信机制和原理、存储算法和优化、安装配置使用的完全指南。更过这方面的细节,可以关注网上或图书中关于memcached的详细介绍。总而言之,与memcached通信是十分简单可行的,因为他们遵循的是应用层的协议,只要遵循这种协议通信机制,任何语言都可以和memcached服务器端通信。比如:Perl、 PHP、Python、Ruby、 C#、C/C+、 Lua。
28、这就是本系统选择memcached作为缓存机制的最好诠释。(五)mysql数据库简介Mysql数据库是一种开源关系型数据库(RDBMS)软件,后被oracle公司收购。mysql广泛使用于应用程序的后台数据库或企业管理日常数据。对于其社区版本(免费版)提供的功能完全足够用于本系统的开发。Mysql在windows、Linux、类unix操作系统下都有对应版本可供安装使用。二、可行性研究可行性研究是软件进行之前必须做的工作,可行性分析的结果最终决定了是否继续开发这个项目。本系统主要研究了在经济、技术、法律方面的可行性以及在可行性研究阶段,以概括的形式表达对现有系统的认识的工具:系统流程图、数据流
29、图、数据字典。(一)经济可行性本系统一定是具有很好的经济效益的,并且所获得的经济效益并不会少于或略高于其开发成本。随着线上线下O2O概念的流行,越来越多的企业或个人经营者都愿意出资将自身的服务挂牌在网上,使之得到良好的宣传、推广、盈利。假设开发系统的周期为21工作日,各个团队的每日平均工资如表2-1统计所示。表2-1 工程团队的资金流预算 单位:人数/人 工资/元 天数/天 人数 日工资工作天数开发团队 5 300 20需求分析团队 10 240 6测试团队 10 180 8系统设计团队 8 300 10根据以上预算,项目总支出为:8.28w。一旦上线,则按每日代理的企业和学校等其他需要在线考
30、试的单位所获得的平均报酬为1600/d,那么预估两年后将会获得116.8w的收入,净利润为108.52w。很显然这在两年内的价值已经是一个相当可观的收入了。(二)技术可行性当今现有的技术水平以及开发团队的素质对于实现学生在线登录、注册、答题、查询考试成绩以及管理员管理试题、发布试题、批阅试题、发布成绩等功能具有高度可行性。系统拟采用c+编写后端服务器逻辑处理(即功能),使用nginx作为反向代理服务器以支持高并发大数据处理,获得性能和效率上的可行性。另外,memcached这种高级的缓存技术,在国内外应用早就变得十分成熟。因此,系统在技术上的可行性也就非常明显。(三)法律可行性系统在开发过程中
31、完全遵循独立自主的开发流程,开发过程中使用到的一部分技术也是FSF(自由软件基金会)范围的开源软件或工具,不存在知识产权和产品最终解释权的纠纷。项目中的各部分合同也经过法律程序反复校验,所以,系统在法律方面的可行性是顺理成章的。(四)系统流程图在可行性分析阶段,主要的图表是系统流程图。该图表是概括的描绘物理系统的传统工具。其基本思想是用图形符号以黑盒子形式描绘组成系统的各个部件(程序、文件、数据库、人工过程、表格等)。系统流程图是描绘数据在系统各个部件之间的流动情况,不是对数据进行加工处理的控制过程。如图2-1。图2-1 系统流程图(五)数据流图DFD数据流图是指信息流和数据从数据源点输入开始
32、,经系统各个程序模块之间经变换处理输出到终点的过程中的流动状态的一种图形化技术。数据流图只关心系统做什么,而不关心如何做的问题。不同于系统流程图,在数据流图中的数据和信息流不能经过任何的物理部件。是一种逻辑模型,其很好地描述了系统的各个逻辑功能。这对于计算机专业人员和非专业人员的用户来说,非常便于沟通和反馈。同时,这将在日后的实际开发中起到非常重要的作用,实际的开发必须立足于此。下面是系统的顶层和分层的数据流图展示。图 2-2 顶层数据流图图 2-3 学生模块数据流图图 2-4 管理员模块数据流图(六)数据字典DD数据字典也是一种逻辑模型。数据字典服务器数据流图,其用于描述数据流图中涉及到的所
33、有元素,包括数据源点/终点、信息流、变换处理、数据存储等。尽管数据字典如前所述定义了数据流、数据流分量、数据存储、数据处理。一般可以把数据流图中的数据处理用别的形式加以描述(如IPO图或PDL图)。需要注意的是数据元素允许别名,对别名的使用与直接使用该数据元素的名字具有等价意义。如何定义数据流图中存在的元素,标准是什么,是本节关心的重点。一般而言,定义一个事物,通常是定义组成改事物的成分的组合。但是这些组成事物的成分可能还是一个需要分解的事物。因此,数据定义是一个自顶向下的逐步分解过程。当分解的元素并不需要重新去定义时,这个分解过程就完成了。基于此,下面图表给出了上文数据流图的数据字典。表2-
34、2 IO处理进程数据字典标识符DFD_top01名字用户浏览器终端IO处理进程别名fcgi程序的标准IO描述接受来自用户的输入或把web文档显示在终端显示屏定义用户浏览器终端IO处理进程 = fcgi标准输入|fcgi标准输出位置顶层数据流图表2-3 http请求数据字典标识符DFD_top02名字Http请求别名描述一切以客户端浏览器形式向服务器端发送请求的基于http协议的字节流定义Http请求 = http请求报文头 +( http数据部分 )位置顶层数据流图表2-4 http应答数据字典标识符DFD_top03名字http应答别名描述服务器返回基于http协议的字节流给客户端浏览器定义
35、Http请求 = http应答报文头 +( http数据部分 )位置顶层数据流图表2-5 后台数据数据字典标识符DFD_top04名字后台数据描述Fcgi程序逻辑处理的一切中间结果或某些重要数据的备份定义后台数据 = 学生数据 + 试题数据 + 题目数据位置顶层数据流图表2-6 数据字典之查询结果集标识符DFD_top05名字查询结果集描述Fcgi程序逻辑处理过程中需要的某些存放在本地数据库中的数据集合定义查询结果集 = 0 学生数据 | 试题数据 | 题目数据 3位置顶层数据流图标识符DFD_stu01名字学生事务描述和学生有关的操作。比如注册、登录、答题、查询成绩。定义学生事务 = 注册
36、| 登录 | 答题 | 查询成绩位置学生模块数据流图表2-7 数据字典之网页数据标识符DFD_stu02名字网页数据描述将相应事务的处理结果以web文档的形式返回给客户端定义网页数据 = 处理结果的html文档位置学生模块数据流图、管理员模块数据流图表2-8 数据字典之学生事务处理结果标识符DFD_stu03名字学生事务处理结果描述通过fcgi逻辑处理程序把相应事务的处理结果反馈给客户端定义学生事务处理结果 = 网页数据位置学生模块数据流图表2-9 数据字典之管理员事务标识符DFD_admin01名字管理员事务描述与管理员有关的操作。比如管理试题、发布试题、批阅试卷、发布成绩定义管理员事务 =
37、 管理试题 | 发布试题 | 批阅试卷 | 发布成绩位置管理员模块表2-10 数据字典之管理员事务处理结果标识符DFD_admin02名字管理员事务处理结果描述通过fcgi逻辑处理程序把相应事务的处理结果反馈给客户端定义管理员事务处理结果 = 网页数据位置管理员模块三、需求分析需求分析的主要任务是提炼出客户的所有需求,需求分析人员必须对客户的每一点需求明确无误。在需求分析阶段会使用SA(结构化)分析的思想对系统进行“自顶向下,逐步细化”的求精分析。所以该过程主要会产生实体联系图(ER图)。以下章节将逐步详解。(一)功能需求功能需求主要描述用户对于系统需要完成哪些功能做的约束。通过用例图则可以很
38、好地描述。用例图如图3-1所示。图3-1 系统用例图(二)性能需求1)大量考生同时在线,系统不能因为大数据量连接而中断考生的请求;2)系统对于任意考生的响应速度控制在2秒内;3)经常访问的数据提供缓存机制;4)服务器工作的稳定性必须良好,不能再考试过程中出现故障;5)大量考生相同的请求,不能以加重对数据库的访问代价而实现;6)必须确保后端服务器集群的稳定工作;(三)ER图 实体联系图是一种概念性的数据模型。其描述了实体、实体的属性以及实体之间的关系。实体联系图ER图如图3-2。图3-2 系统ER图四、总体设计(概要设计)(一)系统概要设计系统概要设计主要是系统功能和后台数据库的概要设计。1.W
39、BS图系统概要设计就是得出系统由哪些功能模块组成。用WBS图则可以很好地描述系统功能模块的组成和模块之间的关系。图4-1 系统WBS2.系统功能模块与界面设计学生模块最核心的功能就是:注册,登录,答题,查询成绩。管理员是本系统的最高权限者,操持着对学生、试题、企业、图片、音乐等各方面资源的生杀大权。其界面的设计可以稍微简约。比如以命令行的方式来管理系统中的资源,因为省去了太多的资源加载和响应时间,当涉及到大量用户动态地企图修改服务器端资源的请求时,如果因为加载时延太大,会大大影响服务器的实时响应效率。Linux系统就是这种哲学,因此,许多服务器部署在Linux上会获得更大的稳定性和效率。而管理
40、员模块则可以以控制台命令行的方式来管理试题、发布试卷、阅卷、发布成绩等操作。因此界面设计主要是考生用户的界面设计。学生注册(RegisterForStudent):任何学生最终可能会被管理员和用人单位联系到。所以需要有个唯一标识用户存在的帐号,供学生登录,使用系统。但是在登录注册之前,需要为考生提供一个使用系统前的前台索引页面,此索引界面有两个入口,学生登录入口和注册入口。考生点击点击相应入口即可跳转到具体页面。学生登录(LoginForStudent):为了保证登陆的安全性,建议使用考试帐号登录和注册。此考号可以唯一地标识学生在本系统中的身份。因为,当用户名和密码重复时,不一定保证学生正确登
41、陆系统。也可以使用邮箱登陆,因为邮箱帐号是唯一的。学生必须填写正确的帐号和密码的表单,点击登录,方可登陆系统,然后,系统会匹配数据库中的学生,判断是否让其登陆。为提高容错性:系统必须提供检测帐号或密码是否任一为空,是否有任一不正确,以错误信息提示给学生。登录成功的学生可以进入网站首页main.html,否则,系统再次输出登录页给学生。个人主页界面:个人主页功能可以展示考生的基本信息和详细信息,个人在必要的时候还可以修改保存个人的资料。网站主界面:这是学生登录系统后的第一个界面main.html,所有的功能请求都将通过此界面跳转,直接或间接地得到实现。考生可以通过此页面获取近期的考试安排,考试进
42、度,考试结束后的成绩查询,访问个人主页,联系管理员等。(二)数据库概要设计数据库概要设计主要工作是得出该数据库的ER模型和相关数据库表。1.ER模型本系统涉及的实体主要有:考生、考试、试题、管理员。以及实体间的关系,考生需要在考试开考前提前预约自己期望的考试场次,学生在预约指定场次的在线考试时,还需答题,在成绩放榜后,学生需要查询成绩。管理员需要管理试题、发布试题、发布考试成绩等。因此,系统涉及的所有用户实体和实体间关系,详细见下表3-1。ER模型图在需求分析就已经给出。参见需求分析中的图3-2。2.关系模型设计关系模型请参见表4-1。表 4-1 实体间关系汇总表关系名称参与双方关系类型描述可
43、省补充考生、考生资料(1,1)作为考生的详细说明管理考生考生、管理员(m,n)管理员管理考生信息预约考试考生、试卷(m,n)考生预约考试考试考生、题目(m,n)考生答题管理试题管理员、题目(m,n)管理试题集管理考试管理员、试卷(m,n)管理员管理试卷包含隶属试卷、题目(1,n)若干试题只能出现在一套试卷中五、详细设计详细设计的主要任务是确定如何具体的设计系统,但不是具体的编码。但是在这个过程中设计的好坏直接关乎到软件实现的质量。而详细设计主要是系统的人机交互界面设计和数据库的详细设计。(一)功能设计系统分为两大模块:学生功能模块和网站管理员模块。以下是各个模块在其身份范围内所具有的功能。使用
44、程序流程图来描述每个模块的逻辑处理过程。1.学生功能模块(StudentModule)1) 学生注册 (RegisterForStudent):不是所有用户都可以使用系统,因为那样的话,就失去了系统的意义。系统旨在为学生提供一个网上考试平台供学生检测掌握知识的程度,以及用人单位企业甚至管理员可以联系到考生,所以需要审核用户是否是合法的学生身份。故而需要填写关于个人资料的表单,完成注册,提交给服务器。如图5-1。2) 登录 (LoginForStudent): 考生所有的操作都应该在登录到系统才能完成。如图5-2。3) 答题 (AnswerExamPaper):提供考生在规定时间内答题,提交前提
45、醒考生是否真的确定提交,且支持边做边保存功能。如图5-3。4) 查询成绩 (QuerExamGrades):在成绩放榜后学生可以登录系统查询。支持在线查看成绩和导出生成成绩单。成绩由各大题的分值组成、参与考试的学生排名。还支持纠错功能。如果考生有疑问可以点击“对成绩,我有疑问”,对比自己的答案和标准答案进行求证。若有考生认为标准答案有错误,可以尝试联系管理员以更正标准答案和所有学生的成绩、排名。如图5-4。图 5-1 学生注册逻辑流程图图 5-2 学生登录逻辑流程图图5-3 学生答题逻辑流程图图5-4 学生查询成绩逻辑流程图2.网站管理员模块(AdminModule)1)发布试题 (ReleaseExamination): 在首页点击发布试题,跳到试题管理页面,完成增删改试题后,点击发布,生成试题html,供后续考试使用,并返回首页。当管理本次试题(增删改试题列表)、涉及到页面和数据库题号的变动。经过管理员确认最终的试题集之后,点击发布,相关题就被写入题目ht
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100