在线考试系统的设计与实现的本科毕业论文
在线考试系统的设计与实现的本科毕业论文
绪论 (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框架、框架所垄断,尽管如此,这些框架在一些领域因为其执行效率的低下而被用户诟病。比如,java需要在JVM环境下运行,对大量置数据类型进行过度封装,其在效率、性能方面的不足也体现出来。C/C++一直在效率方面表现出,被广泛应用于系统、驱动、服务器和游戏行业软件的开发。C++同样也适合于开发,并因其效率方面的优点,本系统就是为了在这方面做进一步尝试。C++对开发者的技术要求高、难度大,所以在开发web应用方面,应用极少。通过本系统介绍用C++进行开发web应用,期望可以推广C++在web 领域得到程序员们的青睐,激发广大编程初学者对C++的热爱,敢于迎难而上,攻克难关,推动我国乃至世界软件业的发展。
除了为了推广C++在不同的领域、业务中的应用外。开发此系统是为那些打算开发出高并发、高性能、稳定健壮的程序员们提供一个示例和样本。改善大量用户同时在线访问时,出现的服务器崩溃、宕机、响应延时高、不稳定、产生错误的瓶颈。
(二)系统开发的意义
本系统开发的意义不仅仅在其对C++语言的推广,鼓励更过的后来者勇于登上计算机科学的高峰,解决一个接一个的难题,最终推动计算机科学的发展的学术性意义。更重要的是,它也具有很大的商业价值和实际意义。
相对于传统的线下考试,在线考试不需要安排实际的‘物理考场’。安排大量的考场,设置过多的考点、密切关注对考场秩序的调度。这会带来大量的人力资源成本,并且效率低下,不符合信息时代对效率的要求。在线考试也不局限于地理位置的分布而呈现出任何差异,所有参加考试的考生只需登录到系统就可以进行答题。这方便了考生合理安排自己的答题环境。对教师而言,减轻了大量手工批阅试卷的负担,客观题部分完全自动化阅卷。主观题则只需和管理员沟通制定相应的评分细则,系统采用类似于标准答案关键词匹配比例的算法即可比较公正地批改试卷。非常轻松简捷,方便,降低了人工阅卷的难度。
一、系统简介
随着大数据、云存储、云计算、高并发、集与分布式计算这些新技术的出现,使得人们对
效率和性能的关注度也急剧升温。本系统是拟为学生参加在线编程技术考试而开发的。系统采用B/S 架构,nginx反向代理服务器部署在Linux后端服务器集系统中,使用memcached高性能分布式缓存技术,在大量考生同时参与考试时,使得服务器正常工作的同时,还保证了效率和性能。这相比线下考试具有更大的灵活性和稳定性。
另外,在日常生活中中我们访问的大量的web应用程序都是使用java structs、jsp、asp、 等框架开发架构的。而本系统则是使用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 系统环境汇总表
(二)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 各服务器优缺点对比
因为,两者都支持http服务和反向代理、正向代理。又基于两者各自的优缺点,在一些应用场景下,已经考虑让nginx和Apache共存,以提供给客户端更优质的响应。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。