在线考试系统的设计与实现软件工程.doc
《在线考试系统的设计与实现软件工程.doc》由会员分享,可在线阅读,更多相关《在线考试系统的设计与实现软件工程.doc(46页珍藏版)》请在咨信网上搜索。
本科毕业论文(设计)模板 本科毕业论文(设计) 论文题目: 在线考试系统的设计与实现 学生姓名: 罗 伟 学 号: 1205290203 专 业: 软 件 工 程 班 级: 软 件 1202 指导教师: 王 命 宇 完成日期: 2016年 5 月 30 日 在线考试系统的设计与实现 内 容 摘 要 学生在线考试系统旨在提高考试的质量和效率,充分发挥网上考试的灵活性,不局限于考生所在地理位置,同时,在大规模考生同时线上考试的环境和压力下,以提升考试系统的高并发连接、大数据处理的性能。这也是顺应国内O2O线上线下服务的潮流,如阿里巴巴的淘宝、京东商城、1号店、蘑菇街等几大线上线下巨头,促进社会经济的快速发展。 为了适应在大规模考生同时在线参与考试的压力下,既保证后端服务器的性能和效率,又能良好地处理大量客户连接来保证高并发。系统采用C++编写在Linux环境下运行的后端服务器,使用轻量级的nginx反向代理服务器,nginx相对于Apache的好处在近几年O2O概念下应运而生并取得压倒性的优势取代用Apache作为web反向代理服务器。nginx的高性能、高并发、大数据处理方面表现极佳。采用f-cgi框架来支撑动态网站的开发,比jsp开发动态网站有更加充分的依据,比如服务器可以更高效地与客户端浏览器交互,而不需要安装JVM(java虚拟机)。 另外,对于一些html web文档,不需要开发者大量手动的编辑,而使用模板引擎在cgi程序中就可以帮我们完成,大大提高了开发效率。此外,任何项目没有绝对的好坏优劣之分,系统的大部分功能都可以在现有技术下完成。一些其他功能也可以通过日后的需求而完善。总之,系统的可扩展性也是值得肯定的。 关键词:C++ nginx f-cgi框架 模板引擎 O2O Design and Implementation of Online Examination System Abstract Students online examination system aimed at improving the quality and efficiency of the examination, 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 processing. 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-scale 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 nginx 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 framework 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, the 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 under. Some other features can also improve future needs. In short, the system's scalability is also worthy of recognition. Key words: CPlusPlus Nginx Framework-of-fcgi Template-Engine OTO II 目 录 绪 论 1 (一)系统开发的目的 1 (二)系统开发的意义 1 一、系统简介 2 (一)环境简介 2 (二)nginx简介 3 (三)cgi与f-cgi原理简介 4 (四)memcached简介 4 (五)mysql数据库简介 5 二、可行性研究 6 (一)经济可行性 6 (二)技术可行性 6 (三)法律可行性 6 (四)系统流程图 7 (五)数据流图DFD 7 (六)数据字典DD 9 三、需求分析 12 (一)功能需求 12 (二)性能需求 12 (三)ER图 13 四、总体设计(概要设计) 14 (一)系统概要设计 14 1.WBS图 14 2.系统功能模块与界面设计 14 (二)数据库概要设计 15 1.ER模型 15 2.关系模型设计 15 五、详细设计 17 (一)功能设计 17 1.学生功能模块(StudentModule) 17 2.网站管理员模块(AdminModule) 21 (二)数据库表详细设计 26 六、编码与单元测试 29 (一)单元编码 29 (二)界面展示 30 (三)单元测试 33 七、系统测试 35 八、系统维护 37 (一)项目部署与网站发布 37 (二)性能调优和运维 37 结 论 38 参 考 文 献 39 绪 论 (一)系统开发的目的 随着C++、java、C#等面向对象编程语言的出现。OOP的编程模式深入软件工程师们的内心。但是在大多数网站应用似乎被java structs框架、jsp框架、.net框架所垄断,尽管如此,这些框架在一些领域因为其执行效率的低下而被用户诟病。比如,java需要在JVM环境下运行,对大量内置数据类型进行过度封装,其在效率、性能方面的不足也体现出来。C/C++一直在效率方面表现出色,被广泛应用于系统、驱动、服务器和游戏行业软件的开发。C++同样也适合于开发网站,并因其效率方面的优点,本系统就是为了在这方面做进一步尝试。C++对开发者的技术要求高、难度大,所以在开发web应用方面,应用极少。通过本系统介绍用C++进行开发web应用,期望可以推广C++在web领域得到程序员们的青睐,激发广大编程初学者对C++的热爱,敢于迎难而上,攻克难关,推动我国乃至世界软件业的发展。 除了为了推广C++在不同的领域、业务中的应用外。开发此系统是为那些打算开发出高并发、高性能、稳定健壮网站的程序员们提供一个示例和样本。改善大量用户同时在线访问时,出现的服务器崩溃、宕机、响应延时高、不稳定、产生错误的瓶颈。 (二)系统开发的意义 本系统开发的意义不仅仅在其对C++语言的推广,鼓励更过的后来者勇于登上计算机科学的高峰,解决一个接一个的难题,最终推动计算机科学的发展的学术性意义。更重要的是,它也具有很大的商业价值和实际意义。 相对于传统的线下考试,在线考试不需要安排实际的‘物理考场’。安排大量的考场,设置过多的考点、密切关注对考场秩序的调度。这会带来大量的人力资源成本,并且效率低下,不符合信息时代对效率的要求。在线考试也不局限于地理位置的分布而呈现出任何差异,所有参加考试的考生只需登录到系统就可以进行答题。这方便了考生合理安排自己的答题环境。对教师而言,减轻了大量手工批阅试卷的负担,客观题部分完全自动化阅卷。主观题则只需和管理员沟通制定相应的评分细则,系统采用类似于标准答案关键词匹配比例的算法即可比较公正地批改试卷。非常轻松简捷,方便,降低了人工阅卷的难度。 41 一、系统简介 随着大数据、云存储、云计算、高并发、集群与分布式计算这些新技术的出现,使得人们对效率和性能的关注度也急剧升温。本系统是拟为学生参加在线编程技术考试而开发的。系统采用B/S架构,nginx反向代理服务器部署在Linux后端服务器集群系统中,使用memcached高性能分布式缓存技术,在大量考生同时参与考试时,使得服务器正常工作的同时,还保证了效率和性能。这相比线下考试具有更大的灵活性和稳定性。 另外,在日常生活中中我们访问的大量的web应用程序都是使用java structs、jsp、asp、.net等框架开发架构的。而本系统则是使用C++语言开发web后端服务器程序。C++因其面向对象编程特性(OOP)及向前兼容C面向过程式编程,这使得C++在程序执行效率上与C语言处于同一水平。众所周知,C语言主要用于开发系统级别的应用或驱动程序,而C++语言则用在服务器、部分系统级别的底层开发(尤其是游戏服务器)。之所以使用C++语言是因为C不适合大型项目或具有通用性和代码可高度可重用性的开发。国内外的web网站几乎都会用到程序连接访问数据库,而大量地访问数据库,会给应用程序带来很多负担,解决方案是除了使用memcached高性能的分布式缓存服务器外,可以在语言上做出选择。大部分数据库对于C/C++语言都提供了源码级别的支持,再加上C/C++程序执行效率高,这对于频繁访问数据库的web应用是一个不错的选择。 和前文提到的类似,由于web应用需要大量地访问数据库,可以考虑在服务器端部署memcached分布式缓存服务器以减少应用程序对数据库的访问次数,从而提高web动态应用的响应速度和可扩展性。 本文主要是为了在C/C++开发高并发响应的web应用方面做出一些尝试。 (一)环境简介 整个考试系统涉及的开发语言、开发平台、运行平台、运行环境要求及限制、使用的技术手段的详细信息参见表1-1。 表1-1 系统环境汇总表 开发语言 C++ 开发平台 Linux(Centos 6.6 64 bits) Web反向代理服务器 nginx 数据库 mysql Web文档 Html 2.0 (>=) 缓存服务器 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反向代理服务器。在高并发大数据量连接的场景下,nginx是Apache 非常好的不二选择。并且具有效率高、稳定性好、高并发、负载均衡、内存、CPU等硬件资源消耗低的优点,以至于Nginx 在国内外众多的互联网门户网站的应用已经呈现出锐不可当之势。比如Facebook、腾讯3G下载、网易新闻、迅雷安全中心、新浪博客播客、酷六、豆瓣、六间房、水木社区、新华网RSS订阅频道等国内外知名的门户网站。Nginx在http代理和反向代理服务器方面的应用几乎会取代Apache(本文并没有任何诋毁和轻蔑Apache在行业中的地位,仅仅是个人的预测)。同其他的http服务器和反向代理服务器一样,Nginx既可以响应静态页面请求(即http服务器),又可以响应动态页面请求(通过与后端服务器fcgi或cgi交互,把数据返回给客户端浏览器)。下面归纳总结了使用nginx相对于其他老牌服务器(Apache为例)的优缺点对比,参见表3-2。 表1-2 各服务器优缺点对比 nginx Apache 是否轻量级 是(线程级别) 否,重量级(进程级别) 静态页面处理能力 约平均是Apache的3倍性能 高并发性能 nginx 处理请求是异步非阻塞的,因此支持高并发。 Apache则是阻塞型的,高并发连接下会出现大量错误或拒绝客服端访问。 资源消耗 内存,CPU消耗低 高并发下,资源消耗非常大 是否支持负载均衡 是 否 是否支持热部署 是 否 Rewrite模块 逊于Apache rewrite,比nginx 的rewrite 强大 对动态页面的响应 不太好 非常好 因为,两者都支持http服务和反向代理、正向代理。又基于两者各自的优缺点,在一些应用场景下,已经考虑让nginx和Apache共存,以提供给客户端更优质的响应。 在性能方面,Nginx是专门为性能优化而开发的,在实现上非常注重效率。Nginx在高并发连接和大量静态页面请求下,性能出众,稳定性好。基于效率优先的前提,本系统采用nginx作为http服务器和反向代理服务器。 (三)cgi与f-cgi原理简介 在说明FastCGI之前,先说说CGI的前世今生。CGI 即Common Gateway Interface公共网关接口。CGI后端服务器程序的原理是:每次当客户请求到来时(即请求CGI),http服务器或反向代理服务器就会fork+exec生成替换一个新的CGI进程处理客户请求。当CGI执行完毕后,该CGI子进程将会被服务器进程kill掉。也就是说由服务器管理着处理客户请求的CGI子进程。显而易见,当高并发连接环境下,这样的工作模式是很受程序员诟病的。因为频繁地创建和销毁子进程将加大系统的开销和负担。 FastCGI(即fcgi,后文将用fcgi简言之),本质上是对CGI的改进。其工作原理是将用于处理客户连接请求的子进程,即CGI解释器进程长期驻留于内存中并因此获得在性能上的提高。fcgi克服了CGI的弊病,CGI解释器的反复加载是CGI性能低下的主要原因,相反,用fcgi进程管理器调度管理常驻在内存中的CGI解释器会明显提高服务器的性能。 fcgi完整的工作过程如下所述: 首先,fcgi进程管理器( nginx 下 fcgi 与反向代理服务器是分离的)在http服务器或反向代理服务器启动时即载入内存。 接着,fcgi进程管理器进行初始化,随后同时启动多个CGI解释器进程,等待来自客户端的连接。 紧接着,当客户端连接请求到达Http服务器或反向代理服务器时,fcgi进程管理器选择并连接到一个CGI解释器进程。由我们的Http服务器或反向代理服务器将CGI环境变量和标准输入重定向到fcgi子进程。fcgi子进程执行完处理后将标准输出和错误信息重定位到客户端浏览器。这就是本系统客户端和服务器交互通信的原理。 当fcgi子进程关闭连接时,请求便告处理完成。fcgi子进程接着等待并处理来自fcgi进程管理器(运行在Http服务器或反向代理服务器中)的下一个连接,而不急着退出系统,换出到磁盘。而CGI进程在传统的CGI模式中,执行完后就不存在了。 显而易见的是,CGI相对于fcgi相当慢。每一个Web请求到来都要生成一个子进程去处理请求,完成请求时又被主进程析构掉。使用fcgi,所有这些都只在nginx主进程启动时发生一次。一个额外的好处是,持续数据库连接可以工作并运行良好。 简单地说,fcgi服务器优于cgi服务器。因为每次有新的客户链接请求到来时,fcgi使用的是多线程处理方式去处理请求,而cgi则是fork+exec复制替换一个进程去处理请求,存在多进程的开销和负担。 (四)memcached简介 Memcached 是一款分布式内存对象缓存软件,主要用途是动态Web应用中,减轻数据库负载。它通过将已经访问过的数据和对象缓存于内存中,减少对数据库的读访问次数,提高访问数据库的速度。Memcached内部数据结构使用一个存储键值对的哈希表(HashMap),用C语言编写的守护进程(daemon ),而客户端可以采用任何语言编写只需要遵循memcached约定的应用层协议即可与memcached服务器端守护进程通信。因此,memcached具有极强的分布式缓存的能力。memcached的存储机制是,其API使用循环冗余校验计算出存储键值,基于处理哈希冲突的方式寻找出合理的存储数据的服务器,当内部HashMap表格满后,采用LRU(最近未使用的算法)替换出那些不太重要的数据存放在内存中。大多数web应用架构都是将服务器端的重要数据存储在数据库中,把客户端用户请求的数据从数据库中读取并显示在客户端浏览器界面。但对于那些对数据集中访问的大量客户端请求,服务器端从数据库取数据的速度和性能会非常糟糕,最终导致服务器端和客户端响应时延加长,网站访问速度极慢。memcached就可以非常好的解决这个问题。从前文的介绍中不难得出,memcached是一款性能极高的分布式缓存服务器,其主要用途是:通过缓存数据库查询结果,减少对数据库访问次数,提高动态Web应用的响应速度。 本文只是引进对memcached的使用,并非是一个对memcached的历史、发展、使用目的、用途、通信机制和原理、存储算法和优化、安装配置使用的完全指南。更过这方面的细节,可以关注网上或图书中关于memcached的详细介绍。 总而言之,与memcached通信是十分简单可行的,因为他们遵循的是应用层的协议,只要遵循这种协议通信机制,任何语言都可以和memcached服务器端通信。比如:Perl、 PHP、Python、Ruby、 C#、C/C++、 Lua。 这就是本系统选择memcached作为缓存机制的最好诠释。 (五)mysql数据库简介 Mysql数据库是一种开源关系型数据库(RDBMS)软件,后被oracle公司收购。mysql广泛使用于应用程序的后台数据库或企业管理日常数据。对于其社区版本(免费版)提供的功能完全足够用于本系统的开发。Mysql在windows、Linux、类unix操作系统下都有对应版本可供安装使用。 二、可行性研究 可行性研究是软件进行之前必须做的工作,可行性分析的结果最终决定了是否继续开发这个项目。本系统主要研究了在经济、技术、法律方面的可行性以及在可行性研究阶段,以概括的形式表达对现有系统的认识的工具:系统流程图、数据流图、数据字典。 (一)经济可行性 本系统一定是具有很好的经济效益的,并且所获得的经济效益并不会少于或略高于其开发成本。随着线上线下O2O概念的流行,越来越多的企业或个人经营者都愿意出资将自身的服务挂牌在网上,使之得到良好的宣传、推广、盈利。假设开发系统的周期为21工作日,各个团队的每日平均工资如表2-1统计所示。 表2-1 工程团队的资金流预算 单位:人数/人 工资/元 天数/天 人数 日工资 工作天数 开发团队 5 300 20 需求分析团队 10 240 6 测试团队 10 180 8 系统设计团队 8 300 10 根据以上预算,项目总支出为:8.28w。 一旦上线,则按每日代理的企业和学校等其他需要在线考试的单位所获得的平均报酬为1600/d,那么预估两年后将会获得116.8w的收入,净利润为108.52w。很显然这在两年内的价值已经是一个相当可观的收入了。 (二)技术可行性 当今现有的技术水平以及开发团队的素质对于实现学生在线登录、注册、答题、查询考试成绩以及管理员管理试题、发布试题、批阅试题、发布成绩等功能具有高度可行性。系统 拟采用c++编写后端服务器逻辑处理(即功能),使用nginx作为反向代理服务器以支持高并发大数据处理,获得性能和效率上的可行性。另外,memcached这种高级的缓存技术,在国内外应用早就变得十分成熟。因此,系统在技术上的可行性也就非常明显。 (三)法律可行性 系统在开发过程中完全遵循独立自主的开发流程,开发过程中使用到的一部分技术也是FSF(自由软件基金会)范围的开源软件或工具,不存在知识产权和产品最终解释权的纠纷。项目中的各部分合同也经过法律程序反复校验,所以,系统在法律方面的可行性是顺理成章的。 (四)系统流程图 在可行性分析阶段,主要的图表是系统流程图。该图表是概括的描绘物理系统的传统工具。其基本思想是用图形符号以黑盒子形式描绘组成系统的各个部件(程序、文件、数据库、人工过程、表格等)。系统流程图是描绘数据在系统各个部件之间的流动情况,不是对数据进行加工处理的控制过程。如图2-1。 图2-1 系统流程图 (五)数据流图DFD 数据流图是指信息流和数据从数据源点输入开始,经系统各个程序模块之间经变换处理输出到终点的过程中的流动状态的一种图形化技术。数据流图只关心系统做什么,而不关心如何做的问题。不同于系统流程图,在数据流图中的数据和信息流不能经过任何的物理部件。是一种逻辑模型,其很好地描述了系统的各个逻辑功能。这对于计算机专业人员和非专业人员的用户来说,非常便于沟通和反馈。同时,这将在日后的实际开发中起到非常重要的作用,实际的开发必须立足于此。下面是系统的顶层和分层的数据流图展示。 图 2-2 顶层数据流图 图 2-3 学生模块数据流图 图 2-4 管理员模块数据流图 (六)数据字典DD 数据字典也是一种逻辑模型。数据字典服务器数据流图,其用于描述数据流图中涉及到的所有元素,包括数据源点/终点、信息流、变换处理、数据存储等。尽管数据字典如前所述定义了数据流、数据流分量、数据存储、数据处理。一般可以把数据流图中的数据处理用别的形式加以描述(如IPO图或PDL图)。需要注意的是数据元素允许别名,对别名的使用与直接使用该数据元素的名字具有等价意义。 如何定义数据流图中存在的元素,标准是什么,是本节关心的重点。 一般而言,定义一个事物,通常是定义组成改事物的成分的组合。但是这些组成事物的成分可能还是一个需要分解的事物。因此,数据定义是一个自顶向下的逐步分解过程。当分解的元素并不需要重新去定义时,这个分解过程就完成了。基于此,下面图表给出了上文数据流图的数据字典。 表2-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协议的字节流给客户端浏览器 定义 Http请求 = http应答报文头 +( http数据部分 ) 位置 顶层数据流图 表2-5 后台数据数据字典 标识符 DFD_top04 名字 后台数据 描述 Fcgi程序逻辑处理的一切中间结果或某些重要数据的备份 定义 后台数据 = 学生数据 + 试题数据 + 题目数据 位置 顶层数据流图 表2-6 数据字典之查询结果集 标识符 DFD_top05 名字 查询结果集 描述 Fcgi程序逻辑处理过程中需要的某些存放在本地数据库中的数据集合 定义 查询结果集 = 0{ [学生数据 | 试题数据 | 题目数据 ] }3 位置 顶层数据流图 标识符 DFD_stu01 名字 学生事务 描述 和学生有关的操作。比如注册、登录、答题、查询成绩。 定义 学生事务 = [ 注册 | 登录 | 答题 | 查询成绩] 位置 学生模块数据流图 表2-7 数据字典之网页数据 标识符 DFD_stu02 名字 网页数据 描述 将相应事务的处理结果以web文档的形式返回给客户端 定义 网页数据 = 处理结果的html文档 位置 学生模块数据流图、管理员模块数据流图 表2-8 数据字典之学生事务处理结果 标识符 DFD_stu03 名字 学生事务处理结果 描述 通过fcgi逻辑处理程序把相应事务的处理结果反馈给客户端 定义 学生事务处理结果 = 网页数据 位置 学生模块数据流图 表2-9 数据字典之管理员事务 标识符 DFD_admin01 名字 管理员事务 描述 与管理员有关的操作。比如管理试题、发布试题、批阅试卷、发布成绩 定义 管理员事务 = [管理试题 | 发布试题 | 批阅试卷 | 发布成绩] 位置 管理员模块 表2-10 数据字典之管理员事务处理结果 标识符 DFD_admin02 名字 管理员事务处理结果 描述 通过fcgi逻辑处理程序把相应事务的处理结果反馈给客户端 定义 管理员事务处理结果 = 网页数据 位置 管理员模块 三、需求分析 需求分析的主要任务是提炼出客户的所有需求,需求分析人员必须对客户的每一点需求明确无误。在需求分析阶段会使用SA(结构化)分析的思想对系统进行“自顶向下,逐步细化”的求精分析。所以该过程主要会产生实体联系图(ER图)。以下章节将逐步详解。 (一)功能需求 功能需求主要描述用户对于系统需要完成哪些功能做的约束。通过用例图则可以很好地描述。用例图如图3-1所示。 图3-1 系统用例图 (二)性能需求 1)大量考生同时在线,系统不能因为大数据量连接而中断考生的请求; 2)系统对于任意考生的响应速度控制在2秒内; 3)经常访问的数据提供缓存机制; 4)服务器工作的稳定性必须良好,不能再考试过程中出现故障; 5)大量考生相同的请求,不能以加重对数据库的访问代价而实现; 6)必须确保后端服务器集群的稳定工作; (三)ER图 实体联系图是一种概念性的数据模型。其描述了实体、实体的属性以及实体之间的关系。实体联系图ER图如图3-2。 图3-2 系统ER图 四、总体设计(概要设计) (一)系统概要设计 系统概要设计主要是系统功能和后台数据库的概要设计。 1.WBS图 系统概要设计就是得出系统由哪些功能模块组成。用WBS图则可以很好地描述系统功能模块的组成和模块之间的关系。 图4-1 系统WBS 2.系统功能模块与界面设计 学生模块最核心的功能就是:注册,登录,答题,查询成绩。管理员是本系统的最高权限者,操持着对学生、试题、企业、图片、音乐等各方面资源的生杀大权。其界面的设计可以稍微简约。比如以命令行的方式来管理系统中的资源,因为省去了太多的资源加载和响应时间,当涉及到大量用户动态地企图修改服务器端资源的请求时,如果因为加载时延太大,会大大影响服务器的实时响应效率。Linux系统就是这种哲学,因此,许多服务器部署在Linux上会获得更大的稳定性和效率。 而管理员模块则可以以控制台命令行的方式来管理试题、发布试卷、阅卷、发布成绩等操作。因此界面设计主要是考生用户的界面设计。 学生注册(RegisterForStudent):任何学生最终可能会被管理员和用人单位联系到。所以需要有个唯一标识用户存在的帐号,供学生登录,使用系统。但是在登录注册之前,需要为考生提供一个使用系统前的前台索引页面,此索引界面有两个入口,学生登录入口和注册入口。考生点击点击相应入口即可跳转到具体页面。 学生登录(LoginForStudent):为了保证登陆的安全性,建议使用考试帐号登录和注册。此考号可以唯一地标识学生在本系统中的身份。因为,当用户名和密码重复时,不一定保证学生正确登陆系统。也可以使用邮箱登陆,因为邮箱帐号是唯一的。 学生必须填写正确的帐号和密码的表单,点击登录,方可登陆系统,然后,系统会匹配数据库中的学生,判断是否让其登陆。 为提高容错性:系统必须提供检测帐号或密码是否任一为空,是否有任一不正确,以错误信息提示给学生。 登录成功的学生可以进入网站首页main.html,否则,系统再次输出登录页给学生。 个人主页界面:个人主页功能可以展示考生的基本信息和详细信息,个人在必要的时候还可以修改保存个人的资料。 网站主界面:这是学生登录系统后的第一个界面main.html,所有的功能请求都将通过此界面跳转,直接或间接地得到实现。考生可以通过此页面获取近期的考试安排,考试进度,考试结束后的成绩查询,访问个人主页,联系管理员等。 (二)数据库概要设计 数据库概要设计主要工作是得出该数据库的ER模型和相关数据库表。 1.ER模型 本系统涉及的实体主要有:考生、考试、试题、管理员。以及实体间的关系,考生需要在考试开考前提前预约自己期望的考试场次,学生在预约指定场次的在线考试时,还需答题,在成绩放榜后,学生需要查询成绩。管理员需要管理试题、发布试题、发布考试成绩等。因此,系统涉及的所有用户实体和实体间关系,详细见下表3-1。ER模型图在需求分析就已经给出。参见需求分析中的图3-2。 2.关系模型设计 关系模型请参见表4-1。 表 4-1 实体间关系汇总表 关系名称 参与双方 关系类型 描述 可省补充 考生、考生资料 (1,1) 作为考生的详细说明 管理考生 考生、管理员 (m,n) 管理员管理考生信息 预约考试 考生、试卷 (m,n) 考生预约考试 考试 考生、题目 (m,n) 考生答题 管理试题 管理员、题目 (m,n) 管理试题集 管理考试 管理员、试卷 (m,n) 管理员管理试卷 包含隶属 试卷、题目 (1,n) 若干试题只能出现在一套试卷中 五、详细设计 详细设计的主要任务是确定如何具体的设计系统,但不是具体的编码。但是在这个过程中设计的好坏直接关乎到软件实现的质量。而详细设计主要是系统的人机交互界面设计和数据库的详细设计。 (一)功能设计 系统分为两大模块:学生功能模块和网站管理员模块。以下是各个模块在其身份范围内所具有的功能。使用程序流程图来描述每个模块的逻辑处理过程。 1.学生功能模块(StudentModule) 1) 学生注册 (RegisterForStudent):不是所有用户都可以使用系统,因为那样的话,就失去了系统的意义。系统旨在为学生提供一个网上考试平台供学生检测掌握知识的程度,以及用人单位企业甚至管理员可以联系到考生,所以需要审核用户是否是合法的学生身份。故而需要填写关于个人资料的表单,完成注册,提交给服务器。如图5-1。 2) 登录 (LoginForStudent): 考生所有的操作都应该在登录到系统才能完成。如图5-2。 3) 答题 (AnswerExamPaper):提供考生在规定时间内答题,提交前提醒考生是否真的确定提交,且支持边做边保存功能。如图5-3。 4) 查询成绩 (QuerExamGrades):在成绩放榜后学生可以登录系统查询。支持在线查看成绩和导出生成成绩单。成绩由各大题的分值组成、参与考试的学生排名。 还支持纠错功能。如果考生有疑问可以点击“对成绩,我有疑问”,对比自己的答案和标准答案进行求证。若有考生认为标准答案有错误,可以尝试联系管理员以更正标准答案和所有学生的成绩、排名。如图5-4。 图 5-1 学生注册逻辑流程图 图 5-2 学生登录逻辑流程图 图5-3 学生答题逻辑流程图 图5-4 学生查询成绩逻辑流程图 2.网站管理员模块(AdminModule) 1)发布试题 (ReleaseExamination): 在首页点击发布试题,跳到试题管理页面,完成增删改试题后,点击发布,生成试题html,供后续考试使用,并返回首页。当管理本次试题(增删改试题列表)、涉及到页面和数据库题号的变动。经过管理员确认最终的试题集之后,点击发布,相关题就被写入题目ht- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 在线 考试 系统 设计 实现 软件工程
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文