C++在线考试系统设计.docx
《C++在线考试系统设计.docx》由会员分享,可在线阅读,更多相关《C++在线考试系统设计.docx(32页珍藏版)》请在冰豆网上搜索。
C++在线考试系统设计
摘要
互联网核心优势在于信息化,智能化,数据化。
无纸办公、在线学习、在线考试、终身学习已经成为共识。
在互联网技术应用成熟的环境下,在线考试已经成为教育行业必备的基础配套设施。
在线教育、在线考试的需求已经覆盖K12及高等教育范畴,充分实现“互联网+教育”全领域应用。
在5G通信基础设施的逐步完善,以智能硬件、VR、在线直播、短视频等教育形式的普遍应用,在线教育领域将成为当下的朝阳产业。
C++在线考试主要针对高等院校C++科目在线考试系统。
满足在校大学生选修C++课程,并进行模拟测试,期末考试,通过后获取学分设计理念,优化大学教学流程,充分做到理论与实践相结合,同时逐步强化教学内容,让网络充分赋能高等教育。
关键字:
互联网;在线教育;在线考试;C++课程
Abstract
ThecoreadvantageofInternetliesininformation,intelligenceanddata.Paperlessoffice,onlinelearning,onlineexaminationandlifelonglearninghavebecomeaconsensus.UnderthematureenvironmentofInternettechnologyapplication,onlineexaminationhasbecomethenecessaryinfrastructureofeducationindustry.ThedemandforonlineeducationandonlineexaminationhascoveredK12andhighereducation,andfullyrealizedtheapplicationof"Internet+education"inallfields.Withthegradualimprovementof5gcommunicationinfrastructureandtheuniversalapplicationofintelligenthardware,VR,onlinelivebroadcast,shortvideoandothereducationforms,onlineeducationwillbecomeasunriseindustry.
C++onlineexaminationmainlyaimsattheonlineexaminationsystemofC++subjectsinCollegesanduniversities.TomeettheneedsofcollegestudentstotakeC++courses,carryoutsimulationtestsandfinalexaminations,obtaincreditdesignconceptafterpassing,optimizeuniversityteachingprocess,fullyintegratetheoryandpractice,andgraduallystrengthenteachingcontent,sothatthenetworkcanfullyempowerhighereducation.
Keywords:
Internet;onlineeducation;onlineexamination;C++Course
第1章前言
1.1课题设计目的
1、1、1技术能力考察
(1)扎实掌握Java开发语言、JSP、JavaScript脚本语言、Ajax等网站开发应用技术;
(2)掌握面向对象的设计思想,应用MVC网站设计模式对网站项目进行研发;
(3)集合在线考试实际应用需求,进行项目业务流程设计,完成C++在线考试系统。
1、1、2核心功能设计
运用面向对象的设计思想、M—V—C设计模式,Struts+Hibernate+Spring进行网站产品开发。
其要实现的主要功能包括:
(1)系统登录(教师管理员、学员登录两个角色);
(2)课程管理;
(3)试卷管理;
(4)学员(在校考生)管理;
(5)考试题库管理;
(6)系统设置(账号信息管理)。
1、1、3系统研究问题
(1)基于JSP、JS、XML技术的数据加载;
(2)基于Myeclipse10平台的系统集成;
(3)WEB项目工程实际运用;
(4)针对在线考试系统进行逻辑处理。
1、1、4主要需求获取方法
(1)结合现有在线教育系统的需求分析,实地调研,查阅资料,竞品分析;
(2)根据现有在校考生实际学习需求,进行业务流程分析,进行数据库设计;
(3)根据业务规则,进行整个代码设计与编写。
1、1、5系统设计成果展示
(1)完成《C++在线考试系统》论文的撰写;
(2)实现C++在线考试系统的各项功设计及应用;
1.2项目可行性分析
1.2.1技术评估
1、2、1、1Java开发语言
Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言[1]。
1、2、1、2JavaServerPages(JSP)
Jsp技术使用Java编程语言编写类Xml的Tags和Scriptlets,来封装产生动态网页的处理逻辑[14]。
JSP开发的WEB应用可以跨平台使用,既可以运行在Linux上也能运行在Windows上。
1、2、1、3Struts+Hibernate+Spring三大框架
struts是开源软件。
使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。
如果我们想混合使用Servlets和JSP的优点来建立可扩展的应用,struts是一个不错的选择。
Spring是一个解决了许多在J2EE开发中常见的的问题的强大框架。
Springle提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类变成的好习惯。
Spring的架构基础是基于使用JavaBean属性的InversionofControl 容器。
然而Spring在使用IoC容器作为构建玩关注所有架构层层的完整解决方案方面是独一无二的。
Spring提供了唯一的数据管理抽象包括简单和有效率的JDBC框架,极大的改进了效率并且减少了可能的错误。
Spring的数据访问架构还集成了Hibernate和其他O/Rmapping 解决方案。
Hibernate 是一个开源代码的对象关系映射框架,对JDBC惊醒了费城轻量级的的对象封装,使得Java程序员可以随心所欲的使用对象变成思维来操作数据库。
Struts+Hibernate+Spring三大框架主要应用与网站及WEB应用的建设。
1.2.2需求分析
1、2、2、1系统角色
在线考试系统涉及三类角色:
学员、教师、管理员;
1、2、2、1、1学员
主要解决在线考试模拟、在线考试2个核心功能;学员可以修改自己登陆密码;账号为学号,不允许修改;
考试模拟:
正式考试前进行考试模拟,主要掌握核心考点,提高考试通过率,获取学分;
在线考试:
进行期末考试,本次考试为正式考试;
1、2、2、1、2教师
教师需要进行课程管理、题库管理、试卷管理、学员管理、成绩管理;教师可以修改自己登录密码;
课程管理:
对平台课程进行管理;目前课程只有C++;
题库管理:
对C++考试题进行管理;
试卷管理:
对在线考试试卷进行管理;试卷分为两种类型:
模拟试卷、正式试卷;模拟试卷用于日常训练;正式试卷用户毕业考试;
学员管理:
根据学生选课信息进行课程分配;
1、2、2、1、3管理员
管理员主要对系统进行初始化管理:
教师初始化、学员信息初始化;
教师初始化:
教师信息创建、审核、授权等操作;
学员初始化:
学员信息创建、审核、授权等操作;
第2章系统解决方案
2.1系统架构解决方案
2.1.1Browser/Server结构
B/S(Browser/Server)结构即浏览器和服务器结构。
它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。
在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。
相对于C/S结构属于“胖”客户端,需要在使用者电脑上安装相应的操作软件来说,B/S结构是属于一种“瘦”客户端,大多数或主要的业务逻辑都存在服务器端,因此,B/S结构的系统不需要安装客户端软件,它运行在客户端的浏览器之上,系统升级或维护时只需更新服务器端软件即可,这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。
B/S结构系统的产生为系统面对无限未知用户提供了可能。
当然,与C/S结构相比,B/S结构也存在着系统运行速度较慢,访问系统的用户不可控的弱点。
以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。
它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN,WAN,Internet/Intranet等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全。
特别是在JAVA这样的跨平台语言出现之后,B/S架构管理软件更是方便、快捷、高效。
基于B/S架构的这些优势,本系统采用了B/S架构。
2.1.2MVC设计模式
MVC架构是"Model-View-Controller"的缩写,中文翻译为"模型-视图-控制器"。
MVC应用程序总是由这三个部分组成。
事件(Event)导致Controller改变Model或View,或者同时改变两者。
只要Controller改变了Models的数据或者属性,所有依赖的View都会自动更新。
类似的,只要Controller改变了View,View会从潜在的Model中获取数据来刷新自己。
MVC英文即Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层——模型层、视图层、控制层。
视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML和Applet。
随着应用的复杂性和规模性,界面的处理也变得具有挑战性。
一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。
业务流程的处理交予模型(Model)处理。
比如一个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型。
模型(Model):
就是业务流程/状态的处理以及业务规则的制定。
业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。
业务模型的设计可以说是MVC最主要的核心。
目前流行的EJB模型就是一个典型的应用例子,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件,但它不能作为应用设计模型的框架。
它仅仅告诉你按这种模型设计就可以利用某些技术组件,从而减少了技术上的困难。
对一个开发者来说,就可以专注于业务模型的设计。
MVC设计模式告诉我们,把应用的模型按一定的规则抽取出来,抽取的层次很重要,这也是判断开发人员是否优秀的设计依据。
抽象与具体不能隔得太远,也不能太近。
MVC并没有提供模型的设计方法,而只告诉你应该组织管理这些模型,以便于模型的重构和提高重用性。
我们可以用对象编程来做比喻,MVC定义了一个顶级类,告诉它的子类你只能做这些,但没法限制你能做这些。
这点对编程的开发人员非常重要。
业务模型还有一个很重要的模型那就是数据模型。
数据模型主要指实体对象的数据保存(持续化)。
比如将一张订单保存到数据库,从数据库获取订单。
我们可以将这个模型单独列出,所有有关数据库的操作只限制在该模型中。
控制(Controller)可以理解为从用户接收请求,将模型与视图匹配在一起,共同完成用户的请求。
划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。
控制层并不做任何的数据处理。
例如,用户点击一个连接,控制层接受请求后,并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。
因此,一个模型可能对应多个视图,一个视图可能对应多个模型。
2.2系统运行环境
2.2.1MyEclipse10.0
MyEclipse企业级工作平台(MyEclipseEnterpriseWorkbench,简称MyEclipse),利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。
它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持Html,Struts,Jsp,Css,Javascript,Sql和Hibernate。
Eclipse[3]是一个开放源代码的、基于Java[4]的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
Eclipse还附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentTools,JDT)。
2.2.2Java开发语言
(1)Java语言是简单的。
Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。
Java丢弃了C++中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。
特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧[2]。
(2)Java语言是一个面向对象的。
Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为Implements)。
Java语言全面支持动态绑定,而C++语言只对虚函数使用动态绑定。
总之,Java语言是一个纯的面向对象程序设计语言。
(3)Java语言是分布式的。
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(JavaNet),它提供了用于网络应用编程的类库,包括Url、UrlConnection、Socket、ServerSocket等。
Java的Rmi(远程方法激活)机制也是开发分布式应用的重要手段。
(4)Java语言是健壮的。
Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。
对指针的丢弃是Java的明智选择。
Java的安全检查机制使得Java更具健壮性。
2.2.3Tomcat
Tomcat是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。
对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应对HTML页面的访问请求。
实际上Tomcat部分是Apache服务器的扩展,但它是独立运行的,所以当运行tomcat时,它实际上作为一个与Apache独立的进程单独运行的。
2.2.3Oracle11g
Oracle数据库是一种大型数据库系统,一般应用于商业,政府部门,它的功能很强大,能够处理大批量的数据,在网络方面也用的非常多。
在众多关系型数据库中,Oracle在数据安全性与数据完整性控制方面的优越性能,以及跨操作系统、跨硬件平台的数据互操作能力。
具有以下特点:
1.开放性
能在所有主流平台上运行(包括Windows),完全支持所有的工业标准,采用完全开放策略,可以使客户选择最适合的解决方案,对开发商全力支持。
2.客户端支持及应用模式
多层次网络计算,支持多种工业标准,可以用Odbc,Jdbc,Oci等网络客户连接。
2.3系统功能结构图
图2-1系统功能结构图
2.4业务流程设计方案
2、4、1系统登录流程
系统登录流程一致:
管理员(教师)、考生登录系统。
系统根据账号信息,判断用户角色,显示对应业务菜单。
其登录流程图如图2-2所示。
图2-2用户登录流程
2、4、2新增信息公共流程
管理员需要进行信息初始化及新增,主要针对课程信息、题库信息添加。
数据添加流程图如图2-3所示。
图2-3添加信息流程图
2、4、3试题初始化管理
管理员、教师需要对系统题库进行维护。
核心功能有3点:
添加试题,试题管理(修改删除),试题初始化导入。
图2-4试题管理模块图
2、4、4系统账户管理
系统账户有两种类型:
管理员、学生、管理员由教师担任。
系统账户管理模块有三部分:
添加账户、修改账户、删除账户。
图2-5账户管理模块图
第3章数据库设计
3.1系统E-R图
在线考试系统E-R图在管理的层面上,有学员、试卷、考试成绩、账号信息几个类别。
如图3-1。
图3-1系统E-R图
3.2系统实体图
3.2.1系统管理员的实体图
管理员信息有三个核心属性,用户编号(唯一),用户名和用户密码为必填项。
如图3-2
图3-2管理员信息实体图及属性
3.2.2在线试卷信息的实体图
试题信息有四个核心属性:
试题编号,试题名称,试题发布时间及删除状态。
试题删除为状态删除。
可以进行试题还原,后期增加回收站功能,所有删除状态的试题均可进行还原;清空回收站,试题数据信息物理删除。
如图3-3;
图3-3试题信息的实体图及属性
3.2.3系统用户信息信息的实体图
系统用户信息有七个属性,分别是用户编号(序号),用户登录账号,用户登录密码,姓名,性别,电话以及删除状态。
如图3-4
图3-4用户信息的实体图及属性
3.2.4考试题目类别信息实体图
考试题目类别属性很多,主要分为:
编号、题型,试题名称,试题选项、正确答案、类别和删除状态。
图3-5题型类别信息的实体图及属性
3.2.5考试成绩信息实体图
考试成绩有四个属性:
成绩ID,试卷ID,学生ID和分数。
通过成绩ID、试卷ID、学生ID进行关联,锁定学员最终考试成绩。
图3-6成绩信息实体图及属性
3.2.6考试信息实体图
考试信息有五个属性,考试ID,学员ID,试卷ID,题目ID和学员答案。
图3-7交卷信息实体图及属性
3.3 数据字典
数据字典的作用是在软件分析和设计的过程中给人提供关于数据的描述信息。
它主要是对数据流图中的数据流、处理逻辑、外部实体、数据存储和数据项等方面进行具体的定义。
数据流程图配以数据字典,就可以从图形和文字两个方面对系统的逻辑模型进行完整的描述。
3.3.1系统管理员信息表(T_ADMIN_INFO)
字段名称
字段意义
字段类型
字段长度
是否主键
能否为空
Teacher_Id
编号
int
11
是
否
Teacher_Name
用户名
varchar
50
否
否
Teacher_Pwd
密码
varchar
50
否
否
Teacher_State
账号状态
int
1
否
否
表3-8t_admin_info管理员信息表
3.3.2系统成绩信息表(T_RESULT_INFO)
字段名称
字段意义
字段类型
字段长度
是否主键
能否为空
Result_Id
成绩ID
varchar
50
是
否
Test_Id
考卷ID
varchar
50
否
否
Student_Id
学员ID
varchar
50
否
否
Grade_Info
分数
int
50
否
否
表3-9t_result_info成绩信息表
3.3.3学员交卷信息表(T_SUBMIT_INFO)
字段名称
字段意义
字段类型
字段长度
是否主键
能否为空
Submit_id
试卷ID
varchar
50
是
否
Student_id
学员ID
varchar
50
否
否
Test_id
试卷ID
varchar
50
否
否
Object_id
题目ID
varchar
255
否
否
Student_answer
学生答案
varchar
50
否
否
表4-3t_submit_info交卷信息表
3.3.4试卷信息表(T_SUBMIT_INFO)
字段名称
字段意义
字段类型
字段长度
是否主键
能否为空
Test_id
试卷ID
varchar
50
是
否
Test_name
试卷名称
varchar
255
否
否
Test_crate_time
试卷发布时间
varchar
255
否
否
Del_state
试卷删除状态
varchar
1
否
否
表4-4t_test_info试卷信息表
3.3.5试卷信息表(T_SUBMIT_INFO)
字段名称
字段意义
字段类型
字段长度
是否主键
能否为空
Student_id
学员ID
varchar
50
是
否
Student_name
学员账号
varchar
50
否
否
Student_pwd
学员密码
varchar
50
否
否
Student_true_name
学员姓名
varchar
255
否
否
Student_sex
学员性别
varchar
255
否
否
Student_tel
联系电话
varchar
255
否
否
Student_del_state
删除状态
varchar
50
否
否
表4-5t_student_info用户信息表
3.3.6考试题目信息表(T_OBJECT_INFO)
字段名称
字段意义
字段类型
字段长度
是否主键
能否为空
Object_id
题目ID
varchar
50
是
否
Object_type
题目类型
varchar
500
否
否
Object_name
题目名称
varchar
500
否
否
Object_select_A
答案选项A
varchar
2
否
否
Object_select_B
答案选项B
varchar
2
否
否
Object_select_C
答案选项C
varchar
2
否
否
Object_select_D
答案选项D
varchar
2
否
否
Object_true_answer
正确答案
varchar
2
否
否
Object_core
分数
int
4
否
否
Type_id