学生在线考试系统的设计与实现毕业论文.docx

上传人:h**** 文档编号:132635 上传时间:2018-07-09 格式:DOCX 页数:44 大小:3.16MB
下载 相关 举报
学生在线考试系统的设计与实现毕业论文.docx_第1页
第1页 / 共44页
学生在线考试系统的设计与实现毕业论文.docx_第2页
第2页 / 共44页
学生在线考试系统的设计与实现毕业论文.docx_第3页
第3页 / 共44页
学生在线考试系统的设计与实现毕业论文.docx_第4页
第4页 / 共44页
学生在线考试系统的设计与实现毕业论文.docx_第5页
第5页 / 共44页
点击查看更多>>
资源描述

1、 本科毕业论文(设计)模板 本科毕业论文 (设计 ) 论文题目 : 在线考试系统的设计与实现 学生姓名 : 罗 伟 学 号 : 1205290203 专 业 : 软 件 工 程 班 级 : 软 件 1202 指导教师 : 王 命 宇 完成日期 : 2016 年 5 月 30 日 I 在线考试系统的设计与实现 内 容 摘要 学生在线考试系统旨在提高考试的质量和效率,充分发挥网上考试的灵活性,不局限于考生所在地理位置,同时,在大规模考生同时线上考试的环境和压力下,以提升考试系统的高并发连接、大数据处理的性能。这也是顺应国内 O2O 线上线下服务的潮流,如阿里巴巴的淘宝、京东商城、 1号店、蘑菇街等

2、几大线上线下巨头,促进社会经济的快速发展。 为了适应在大规模考生同时在线参与考试的压力下,既保证后端服务器的性能和效率,又能良好地处理大量 客户连接来保证高并发。系统采用 C+编写在 Linux 环境下运行的后端服务器,使用轻量级的 nginx 反向代理服务器, nginx 相对于 Apache 的好处在近几年 O2O 概念下应运而生并取得压倒性的优势取代用 Apache 作为 web 反向代理服务器。 nginx 的高性能、高并发、大数据处理方面表现极佳。采用 f-cgi 框架来支撑动态网站的开发,比 jsp 开发动态网站有更加充分的依据,比如服务器可以更高效地与客户端浏览器交互,而不需要安

3、装 JVM(java 虚拟机)。 另外,对于一些 html web 文档,不需要开发者大量手动的编辑 ,而使用模板引擎在 cgi 程序中就可以帮我们完成,大大提高了开发效率。此外,任何项目没有绝对的好坏优劣之分,系统的大部分功能都可以在现有技术下完成。一些其他功能也可以通过日后的需求而完善。总之,系统的可扩展性也是值得肯定的。 关键词: C+nginxf-cgi框架模板引擎 O2O II Design and Implementation of Online Examination System Abstract Students online examination system aimed

4、 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 concurre

5、nt 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 ca

6、ndidates 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 run

7、ning 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 d

8、ata 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 virtua

9、l 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 f

10、unctions of the system can be done in the prior art under. Some other features can also improve future needs. In short, the systems scalability is also worthy of recognition. Key words: CPlusPlusNginxFramework-of-fcgiTemplate-EngineOTO 目 录 绪 论 .1 (一)系统开发的目的 .1 (二)系统开发的意义 .1 一、系统简介 .2 (一)环境简介 .2 (二)

11、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.关

12、系模型设计 .15 五、详细设计 .17 (一)功能设计 .17 1.学生功能模块 (StudentModule).17 2.网站管理员模块 (AdminModule).21 (二)数据库表详细设计 .26 六、编码与单元测试 .29 (一)单元编码 .29 (二)界面展示 .30 (三)单元测试 .33 七、系统测试 .35 八、系统维护 .37 (一)项目部署与网站发布 .37 (二)性能调优和运维 .37 结 论 .38 参 考 文 献 .39 1 绪 论 (一)系统开发的目的 随着 C+、 java、 C#等面向对象编程语言的出现。 OOP 的编程模式深入软件工程师们的内心。但是在大多

13、数网站应用似乎被 java structs 框架、 jsp 框架、 .net 框架所垄断,尽管如此,这些框架在一些领域因为其执行效率的低下而被用户诟病。比如, java 需要在 JVM 环境下运行,对大量内置数据类型进行过度封装,其在效率、性能方面的不足也体现出来。 C/C+一直在效率方面表现出色,被广泛应用于系统、驱动、服务器和游戏行业软件的开发。 C+同样也适合于开发网站,并因其 效率方面的优点,本系统就是为了在这方面做进一步尝试。 C+对开发者的技术要求高、难度大,所以在开发 web 应用方面,应用极少。通过本系统介绍用 C+进行开发 web 应用,期望可以推广C+在 web 领域得到程

14、序员们的青睐,激发广大编程初学者对 C+的热爱,敢于迎难而上,攻克难关,推动我国乃至世界软件业的发展。 除了为了推广 C+在不同的领域、业务中的应用外。开发此系统是为那些打算开发出高并发、高性能、稳定健壮网站的程序员们提供一个示例和样本。改善大量用户同时在线访问时,出现的服务器崩溃、宕机、响应延时高、不稳定、 产生错误的瓶颈。 (二) 系统开发的意义 本系统开发的意义不仅仅在其对 C+语言的推广,鼓励更过的后来者勇于登上计算机科学的高峰,解决一个接一个的难题,最终推动计算机科学的发展的学术性意义。更重要的是,它也具有很大的商业价值和实际意义。 相对于传统的线下考试,在线考试不需要安排实际的 物

15、理考场 。 安排大量的考场,设置过多的考点、密切关注对考场秩序的调度。这会带来大量的人力资源成本,并且效率低下,不符合信息时代对效率的要求。在线考试也不局限于地理位置的分布而呈现出任何差异,所有参加考试的考生只需登录到系统就可以进行答题。这方便了考生合理安排自己的答题环境。对教师而言,减轻了大量手工批阅试卷的负担,客观题部分完全自动化阅卷。主观题则只需和管理员沟通制定相应的评分细则,系统采用类似于标准答案关键词匹配比例的算法即可比较公正地批改试卷。非常轻松简捷,方便,降低了人工阅卷的难度。2 一、系统简介 随着大数据、云 存储、云计算、高并发、集群与分布式计算这些新技术的出现,使得人们对效率和

16、性能的关注度也急剧升温。本系统是拟为学生参加在线编程技术考试而开发的。系统采用 B/S架构, nginx 反向代理服务器部署在 Linux 后端服务器集群系统中,使用 memcached 高性能分布式缓存技术,在大量考生同时参与考试时,使得服务器正常工作的同时,还保证了效率和性能。这相比线下考试具有更大的灵活性和稳定性。 另外,在日常生活中中我们访问的大量的 web 应用程序都是使用 java structs、 jsp、 asp、 .net等框架开发架构的。而本 系统则是使用 C+语言开发 web 后端服务器程序。 C+因其面向对象编程特性( OOP)及向前兼容 C 面向过程式编程,这使得 C

17、+在程序执行效率上与 C 语言处于同一水平。众所周知, C 语言主要用于开发系统级别的应用或驱动程序,而 C+语言则用在服务器、部分系统级别的底层开发(尤其是游戏服务器)。之所以使用 C+语言是因为 C 不适合大型项目或具有通用性和代码可高度可重用性的开发。国内外的 web 网站几乎都会用到程序连接 访问 数据库,而大量地访问数据库,会给应用程序带来很多负担,解决方案是除了使用 memcached 高性能的分布 式缓存服务器外,可以在语言上做出选择。大部分数据库对于 C/C+语言都提供了源码级别的支持,再加上 C/C+程序执行效率高,这对于频繁访问数据库的 web 应用是一个不错的选择。 和前

18、文提到的类似,由于 web 应用需要大量地访问数据库,可以考虑在服务器端部署memcached 分布式缓存服务器以减少应用程序对数据库的访问次数,从而提高 web 动态应用的响应速度和可扩展性。 本文主要是为了在 C/C+开发高并发响应的 web 应用方面做出 一些 尝试。 (一)环境简介 整个考试系统涉及的开发语言、开发平台、运行平台、运行环境要求及限制、使用的技术手段的详细信息参见表 1-1。 表 1-1 系统环境汇总表 开发语言 C+ 开发平台 Linux(Centos 6.6 64 bits) Web 反向代理服务器 nginx 数据库 mysql Web 文档 Html 2.0 (=

19、) 缓存服务器 memcached 其他辅助开发工具 模板引擎、 js/css 3 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 模型编写的 ht

20、tp web 反向代理服务器。在高并发大数据量连接的场景下, nginx 是 Apache 非常好的 不二选择 。并且具有效率高、稳定性好、高并发、负载均衡、内存、 CPU 等硬件资源消耗低的优点,以至于 Nginx 在国内外众多的互联网门户网站的应用已经呈现出锐不可当之势。比如 Facebook、腾讯 3G 下载、网易新闻、迅雷安全中心、新浪博客播客、酷六、豆瓣、六间房、水木社区、新华网 RSS 订阅频道等国内外知名的门户网站。 Nginx 在 http代理和反向代理服务器方面的应用几乎会取代 Apache(本文并没有任何诋毁和轻蔑 Apache 在行业中的地位,仅仅是个人的预测)。同其他的

21、 http 服务器和反向代理服务器一样, Nginx 既可以响应静态页面请求(即 http 服务器),又可以响应动态页面请求(通过与后端服务器 fcgi 或 cgi 交互,把数据返回给客户端浏览器)。下面归纳总结了使用 nginx 相对于其他老牌服务器( Apache 为例)的优缺点对比,参见表 3-2。 表 1-2 各服务器优缺点对比 因为,两者都支持 http 服务和反向代理、正向代理。又基于两者各自的优缺点,在一些应用场景下,已经考虑让 nginx 和 Apache 共存,以提供给客户端更优质的响应。 在性能方面, Nginx 是专门为性能优化而开发的,在实现上非常注重效率。 Nginx

22、 在高并发连接和大量静态页面请求下,性能出众,稳定性好。基于效率优先的前提,本系统采用 nginx 作为 http服务器和反向代理服务器。 nginx Apache 是否轻量级 是(线程级别) 否,重量级(进程级别) 静态页面处理能力 约平均是 Apache 的 3 倍性能 高并发性能 nginx 处理请求是异步非阻塞的,因此支持高并发。 Apache 则是阻塞型的,高并发连接下会出现大量错误或拒绝客服端访问。 资源消耗 内存, CPU 消耗低 高并发下,资源消耗非常大 是否支持负载均衡 是 否 是否支持热部署 是 否 Rewrite 模块 逊于 Apache rewrite,比 nginx

23、的 rewrite 强大 对动态页面的响应 不太好 非常好 4 (三) cgi 与 f-cgi 原理简介 在说明 FastCGI 之前,先说说 CGI 的前世今生。 CGI 即 Common Gateway Interface 公共网关接口。 CGI 后端服务器程序的原理是:每次当客户请求到来时(即请求 CGI), http 服务器或反向代理服务器就会 fork+exec 生成替换一个新的 CGI 进程处理客户请求。当 CGI 执行完毕后,该 CGI子进程将会被服务器进程 kill 掉。也就是说由服务器管理着处理客户请求的 CGI 子进程。显而易见,当高并发连接环境下,这样的工作模式是很受程序

24、员诟病的。因为频繁地创建和销毁子进程将加大系统的开销和负担。 FastCGI(即 fcgi,后文将用 fcgi 简言之),本质上是对 CGI 的改进。其工作原理是将用于处理客户连接请求的子进程,即 CGI 解释器进程长期驻留于内存中并因此获得在性能上的提高。 fcgi克服了 CGI 的弊病, CGI 解释器的反 复加载是 CGI 性能低下的主要原因,相反,用 fcgi 进程管理器调度管理常驻在内存中的 CGI 解释器会明显提高服务器的性能。 fcgi 完整的工作过程如下所述: 首先, fcgi 进程管理器( nginx 下 fcgi 与反向代理服务器是分离的)在 http 服务器或反向代理服务

25、器启动时即载入内存。 接着, fcgi 进程管理器进行初始化,随后同时启动多个 CGI 解释器进程,等待来自客户端的连接。 紧接着,当客户端连接请求到达 Http 服务器或反向代理服务器时, fcgi 进程管理器选择并连接到一个 CGI 解释器进程。由我们的 Http 服 务器或反向代理服务器将 CGI 环境变量和标准输入重定向到 fcgi 子进程。 fcgi 子进程执行完处理后将标准输出和错误信息重定位到客户端浏览器。这就是本系统客户端和服务器交互通信的原理。 当 fcgi 子进程关闭连接时,请求便告处理完成。 fcgi 子进程接着等待并处理来自 fcgi 进程管理器(运行在 Http 服务

26、器或反向代理服务器中)的下一个连接,而不急着退出系统,换出到磁盘。而 CGI 进程在传统的 CGI 模式中,执行完后就不存在了。 显而易见的是, CGI 相对于 fcgi 相当慢。每一个 Web 请求到来都要生成一个子进程去处理请求, 完成请求时又被主进程析构掉。使用 fcgi,所有这些都只在 nginx 主进程启动时发生一次。一个额外的好处是,持续数据库连接可以工作并运行良好。 简单地说, fcgi 服务器优于 cgi 服务器。因为每次有新的客户链接请求到来时, fcgi 使用的是多线程处理方式去处理请求,而 cgi 则是 fork+exec 复制替换一个进程去处理请求,存在多进程的开销和负

27、担。 (四) memcached 简介 Memcached 是一款分布式内存对象缓存软件,主要用途是动态 Web 应用中,减轻数据库负载。它通过将已经访问过的数据和对象缓存于内存中, 减少对数据库的读访问次数,提高访问数据库的速度。 Memcached 内部数据结构使用一个存储键值对的哈希表( HashMap),用 C 语言编写的守5 护进程( daemon ),而客户端可以采用任何语言编写只需要遵循 memcached 约定的应用层协议即可与 memcached 服务器端守护进程通信。因此, memcached 具有极强的分布式缓存的能力。memcached 的存储机制是,其 API 使用循

28、环冗余校验计算出存储键值,基于处理哈希冲突的方式寻找出合理的存储数据的服务器,当内部 HashMap 表格满后,采用 LRU(最近未使用 的算法)替换出那些不太重要的数据存放在内存中。大多数 web 应用架构都是将服务器端的重要数据存储在数据库中,把客户端用户请求的数据从数据库中读取并显示在客户端浏览器界面。但对于那些对数据集中访问的大量客户端请求,服务器端从数据库取数据的速度和性能会非常糟糕,最终导致服务器端和客户端响应时延加长,网站访问速度极慢。 memcached 就可以非常好的解决这个问题。从前文的介绍中不难得出, memcached 是一款性能极高的分布式缓存服务器,其主要用途是:通

29、过缓存数据库查询结果,减少对数据库访问次数,提高动态 Web 应用 的响应速度。 本文只是引进对 memcached 的使用,并非是一个对 memcached 的历史、发展、使用目的、用途、通信机制和原理、存储算法和优化、安装配置使用的完全指南。更过这方面的细节,可以关注网上或图书中关于 memcached 的详细介绍。 总而言之,与 memcached 通信是十分简单可行的,因为他们遵循的是应用层的协议,只要遵循这种协议通信机制,任何语言都可以和 memcached 服务器端通信。比如: Perl、 PHP、 Python、Ruby、 C#、 C/C+、 Lua。 这就是本系统选择 memcached 作为缓存机制的最好诠释。 (五) mysql 数据库简介 Mysql 数据库是一种开源关系型数据库( RDBMS)软件,后被 oracle 公司收购。 mysql 广泛使用于应用程序的后台数据库或企业管理日常数据。对于其社区版本(免费版)提供的功能完全足够用于本系统的开发。 Mysql 在 windows、 Linux、类 unix 操作系统下都有对应版本可供安装使用。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。