JAVA语言上机考试系统的设计与实现.docx
《JAVA语言上机考试系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《JAVA语言上机考试系统的设计与实现.docx(20页珍藏版)》请在冰豆网上搜索。
JAVA语言上机考试系统的设计与实现
5.1.1MVC模式简介18
5.1.2Struts简介19
5.1.3Hibernate简介20
5.1.4Spring简介21
JAVA语言上机考试系统
的设计与实现
摘要:
在线考试技术在日常的工作学习中的大量运用,使得教学形式逐渐摆脱了传统单一的模式,大大提高了学生的学习效率和教师的办公效率。
在线考试系统实现了学生通过网络参加考试和教师通过在线考试系统了解学生学习情况,使用计算机进行学生成绩的查询,试题的录入等功能。
本文详细描述了毕业设计题目的背景及在线考试系统的需求分析、系统设计过程。
在此基础上,设计出了该系统的数据库逻辑结构,并对系统的功能模块进行了描述。
最后,对系统开发过程中出现的问题及解决方法予以说明。
本文介绍的系统采用Dreamweaver,Myeclipse作为前端开发工具,mysql作为后台数据库管理系统。
运行结果表明,系统具有界面简洁、性能稳定及便于操作等优点,达到了设计要求。
关键词:
在线考试jspstruts;框架mysql
TheDesignandImplementationofOn-line
ExaminationSysteminJAVA
Abstract:
Thewideuseofon-lineexaminationsystemindailyworkhasmadeeducationmoreandmoredifferentfromthetraditionalwayitwas,whichpromotetheefficiencyoflearningandworkingvastly.Throughthesystem,studentscouldattendexaminationsonline,theexaminationquestionswouldberandomlygeneratedandthescorewouldbegivenbyteachersthroughthesystem,too.
Thearticledescribedthebackgroundoftitle,requirementanalysisofsystemandtheprocessofdesign.Basedonthese,logicalconstructionofDBwascreated,thedescriptionofeachfunctionwasgiven,too.Intheend,thearticleexplainedtheproblemshappenedwhendesigning.
ThesystemusedDreamweaver,MyEclipseforforegroundandmysqlforbackground.Theresultshowedthatthesystemhasagoodinterface,ahighperformanceandconvenientoperationandsoon,forthese,thesystemisuptodesigningstantard.
Keywords:
On-lineexaminationJspstruts;FrameworkMysql
1引言
在线考试系统的主要特征是:
实现人与计算机相结合过程中的自动化。
将考试与Web技术相结合,具有很大的灵活性和适应性。
在线考试系统使用户能通过浏览器透明地应用于不同机型、不同运行平台组成的计算资源与信息资源,借助信息共享的分布式计算技术完成一系列考试。
1.1选题的目的和意义
该考试系统采用开放、动态的系统架构,将传统的考试模式与先进的网络应用相结合;它可以是专门用于试题录入、查询、修改、删除、组卷以及参加在线考试。
该系统应该操作简单方便、界面简洁,被授权的考试用户不管身处何地,通过网络浏览器即可登录网络考试系统。
系统提供考试时间倒计时功能,使考生随时了解考试剩余时间;实现自动提交试卷的功能,系统可自动交卷,保证考试严肃、公正地进行。
通过这种新的考试模式,可以为学校创造一种新的考试环境,使考务管理突破时空限制,提高考试工作效率和标准化水平,进而使教师和学生可以随时、随地通过网络完成考试,真正体现了教学中高效、科学、现代化的考试特点。
2系统分析
2.1需求分析
首先,考试是面向特定的某些对象(学生,教师)的,所以用户进入系统应该进行身份验证。
学生进入考试系统后,应该能根据自己的需要进行个人信息的修改、考试系统的进入、考试成绩的查看等。
系统还应该对考试时间进行控制,时间到了会要求考生交卷。
考生选择答案提交后,应该由计算机自动判卷,得到成绩后显示出来。
考试完毕后,可以返回继续考试或退出系统。
此外,应该能够方便、快捷的对在线考试系统管理。
教师登陆系统后,可以实现录入试题或删除试题,生成试卷、发布试卷、删除试卷信息、添加或删除学生和教师信息,编写并发布公告和新闻等功能。
2.2系统可行性分析
2.2.1经济可行性分析
近年来,随着计算机技术的发展和互联网时代的到来,我们已经进入信息时代,在这数字化的时代里,Internet技术持续迅猛的发展,也给传统的考试模式提出了新的要求。
随着信息时代的到来,各类计算机考试也应运而生,这类考试多为上机考试,因此,考试的环境,即考试系统的设计和实现非常重要。
在某些时候可以通过网络的便利来解决传统考试模式中的一些缺陷。
特别在高等学院中,把网络考试系统与传统的考试相结合将是一趋势。
所以使用在线考试,让使用者不需要高额的经济费用,这样的话,在经济可行性分析中是可行的。
2.2.2技术可行性分析
随着java网络编程的不断发展,使用java开发网络版管理系统已经变的越来越普及,在技术可行性上完全成立。
综上所述,此系统开发目标已明确,在技术和经济等方面都可行。
2.3系统开发工具
本系统的开发使用java编程方面常用的MyEclipse工具,数据库使用MySQL,数据库可视化界面使用MySQL-Front,页面布局使用Dreamweaver,图片处理使用Photoshop。
3功能模块
本系统应该具有学生登录、学生考试、教师登录、试题管理、用户管理等功能,根据这些功能可以画出系统的功能模块图,如图3-1所示。
图3-1系统功能模块图
学生模块如图3-2所示。
学生模块包括学生登录、修改密码、参加考试、退出系统四个模块。
图3-2学生模块
教师模块如图3-3所示。
教师模块包括教师登录、修改密码、成绩查询、试题管理、用户管理、试题管理、公告管理、退出系统。
图3-3教师模块
试题管理模块如图3-4所示。
包括录入试题、生成试卷、查看试卷发布试卷。
图3-4试题管理模块
用户管理模块如图3-5所示,包括增删学生用户、查看学生名单、增删教师用户、查名教师单看。
图3-5用户管理模块
4数据库设计
4.1数据字典
表4-1t_user(用户信息表)
字段名
描述
类型
主键否
Id
自动编号
Int
是
trueName
真实姓名
Varchar
否
Age
年龄
Int
否
Sexuality
性别
Varchar
否
idCard
身份证
Varchar
否
Duty
职务
Varchar
否
Phone
联系电话
Varchar
否
t_user(用户信息表)用于存放教师的详细信息,包括编号、姓名、年龄、性别、身份证号、所担任的职务及联系电话。
表4-2t_login(用户登录表)
字段名
描述
类型
主键否
Id
自动编号
Int
是
Username
登录名
Varchar
否
Password
登录密码
Varchar
否
t_login(用户登录表)用于存放教师的信息,只有符合该表信息的学生才可以登录考试系统参加考试。
表4-3t_stu(学生信息表)
字段名
描述
类型
主键否
Id
自动编号
Int
是
trueName
真实姓名
Varchar
否
No
学号
Varchar
否
Sexuality
性别
Varchar
否
Grade
年级
Varchar
否
Classesid
班级编号
Int
外键
t_stu(学生信息表)用于存放学生的详细信息,包括编号、姓名、学号、性别、年级、班级编号。
表4-4t_stulogin(学生登录表)
字段名
描述
类型
主键否
Id
自动编号
Int
是
Username
登录名
Varchar
否
Password
登录密码
Varhar
否
t_stulogin(学生登录表)用于存放学生的登录信息,只有符合该表信息的学生才可以登录考试系统参加考试。
该表与t_stu(学生信息表)是一一对应的关系,只有两个表中都有且正确的情况下,才能够登录成功。
表4-5t_classes(班级表)
字段名
描述
类型
主键否
Id
自动编号
Int
是
Name
名称
Varchar
否
t_classes(班级表)存放的是为每一个班级的编号。
表4-6t_tiku(题库信息表)
字段名
描述
类型
是否主键
Id
自动编号
Int
是
Kind
种类
Varchar
否
Fenzhi
分值
Int
否
t_tiku(题库信息表)存放的是题库中所有JAVA语言考试题目的信息,有题目的编号,题目所占的分值,题目分类等信息。
表4-7t_answer(标准答案表)
字段名
描述
类型
是否主键
Id
自动编号
Int
是
answer
选项
Varchar
否
Value
答案
Varchar
否
Isright
是否正确答案
Int
否
Tiku_id
题目编号
Int
外键
t_answer(标准答案表)中存放的是题库中所有JAVA语言考试试题的选项、选项的内容、是否正确选项及所对应的题目的编号。
表4-8t_jzinfo(试卷信息表)
字段名
描述
类型
是否主键
Id
自动编号
Int
是
Title
标题
Varchar
否
createName
编题人
Varchar
否
t_jzinfo(试卷信息表)存放的是JAVA语言试题信息,包括标题和编题人等信息。
表4-9t_juanzi(试卷详细信息表)
字段名
描述
类型
是否主键
Id
自动编号
Int
是
shijuanid
试卷编号
Int
外键
Tiku_id
题目编号
Int
外键
Class_Id
班级编号
Int
外键
t_juanzi(试卷详细信息表)中存放的是教师发布的JAVA语言考试试卷的编号、试卷上的题目的编号及参加该试卷考试的学生所属班级编号。
表4-10t_news(新闻信息表)
字段名
描述
类型
是否主键
Id
自动编号
Int
是
Title
标题
Varchar
否
Value
内容
Varchar
否
t_news(新闻信息表)中存放的是新闻栏刊登过的信息的编号,标题及内容。
5系统详细设计
本系统遵照MVC开发模式,使用JAVA的SSH三层结构,利用Ajax的异步刷新做数据的验证,即用户注册页面的用户名是否存在,主要利用Ajax中的jquery来实现,它是javascript的封装,能将我们从繁琐的javascript代码中解放出来。
数据库操作方面使用Hibernate,在面向对象的开发过程中,由于现在的数据库都是关系数据库,Hibernate很好的完成了对象和关系数据库的映射,其中的每个实体通过一个唯一的.hbm的Hibernate配置文件,本程序中用到的关系映射主要有:
双向一对一关联,,主要表现在t_user和t_login,t_stu和t_stulogin等具有一对一关联的数据表。
其次使用了较多的多对对的关系映射。
本系统使用Struts,这样将MVC表现的更清楚,在页面中只是调用需要的数据,并没有做大量的业务逻辑的算法,使页面都是表示层的代码,成功的将View层从系统中区分出来,有利于系统的二次开发。
使用Action做控制层,由它来调用业务逻辑层的算法,实现系统的需求。
由于Hibernate本身是针对事务处理的,在单独的Hibernate开发中经常要得到一个SessionFactory和得到一个事务gettrancation,开启一个事务beginTrancation,和事务提交commit,这样没一个业务逻辑中都有相同的代码,非常繁琐,另外手动的开启事务,会造成Session中有的事务没有开启,有的没有关闭,所以我选用Spring,主要是实现两个功能,动态代理和注入。
所谓的动态代理就是将所有的Hibernate和struts服务中需要手动做的东西都通过applicationContext-*.xml文件配置起来,用Spring框架来代理,像本程序中的试卷和题库中的题目是一对多的关系,即:
每张试卷可以有多个题,每个题也可以对应多张试卷,但是在Hiberate中经常将多对多的映射关系分开了表述,表述成两个多对一的映射关系。
。
本程序最主要的是搭建SSH(Struts+Spring+Hibernate)框架,主要是web.xml,applicationContext-*.xml和struts-config.xml文件的配置。
我将Spring对struts和Hibernate的集成配置在applicationContext-common.xml文件中
applicationContext-beans.xml文件主要配置的是Dao文件,实现的是Spring的注入功能,这样我们在Action中将不再使用newDao()这样的做法,只需要申明一个对象,给他定义一个Set方法,Spirng框架会自动根据applcationContext-beans.xml中的配置将申明的对象注入到程序中。
applicationContext-action.xml文件重要实现的是Spring对action的动态代理:
在传统的struts独立的使用过程中我们需要在struts-congfig.xml文件中配置其中的type需要配置具体的action累,而在Spring集成后,我们需要将原来struts-config.xml中的type配成固定的org.springframework.web.struts.DelegatingActionProxy,该类为Spring对struts集成的代理类。
本系统中的学生答题界面中的时间设置,运用Ajax计算,ajax中的jquery主要是封装了javascript,在开始答题按钮的onclick事件中调用ajax代码,需要注意的是使用ajax时,必须首先引入jquery.js,否则的话,ajax代码是不会实现的。
5.1系统开发技术
本系统采用B/S模式开发,个人选择的编程语言为java网络编程,采用常见的MVC开发模式,将业务逻辑和代码分开,便于程序的二次开发及修改,前台页面使用JSP(JAVASERVERPAGE)和EL表达式(expressionlanguage,即表达语言),实现页面的显示,服务器使用Tomcat开源服务器,系统以Spring框架为核心,向下整合Hibernate进行持久层访问,向上整合Strusts按照清晰的MVC模式控制,可以清晰划分应用的层次,提高系统灵活性,提供代码的可扩展、可维护及可服用性等,本系统示范了一种非常优秀的J2EE应用框架,并涉及到如下开源框架:
Hibernate、Spring、Struts等,数据库采用MySql,数据库可视化界面使用MySQL-Front。
在实现页面中的倒计时,使用Ajax脚本语言。
把从数据库中读出的时间赋值给javascript变量,然后用javascript实现倒计时。
<%@pagelanguage="java"import="java.util.*"pageEncoding="utf-8"%>
<%
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+":
//"+request.getServerName()+":
"+request.getServerPort()+path+"/";
%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
">
MyJSP'B.jsp'startingpage
--
-->
ThisismyJSPpage.
vartime=<%=考试时长%>;
vart=setInterval("f1()",1000);
functionf1()
{
document.all("time").innerHTML="剩余"+time+"秒";
time--;
if(time<0)
{
clearInterval(t);
}
}
MVC(Model-View-Controller,即模型层-视图层-控制层)是一种设计模式,MVC模式的目的就是实现Web系统的职能分工,它强制性地把应用程序的输入、处理和输出分开。
首先,控制层接受用户的请求,并决定应该调用哪个模型来进行处理;其次,模型根据用户请求进行相应的业务逻辑处理,并返回数据;最后控制层调用相应的视图来格式化模型返回的数据,并通过视图呈现给用户。
对于采用Struts框架的WEB应用,在WEB应用启动时就会加载并初始化ACTIONSERVLET,ACTIONSERVLET从Struts-config.xml文件中读取配置信息,把它们存放到各种配置对象中,例如ACTION的映射信息存放在ACTIONMAPPING对象中。
④如果ACTIONFORM的VALIDATE方法返回NULL或返回一个不包含ACTIONMESSAGE的ACTIONERRORS对象,就表示表单验证成功;如果ACTIONFORM的VALIDATE方法返回一个包含一个或多个ACTIONMESSAGE的ACTIONERRORS对象,就表示表单验证失败,此时,ACTIONSERVLET将直接把请求转发给包含用户提交表单的JSP组件,在这种情况下,不会再创建ACTION对象并调用ACTION的EXECUTE方法。
⑤ACTIONSERVLET根据ACTIONMAPPING实例包含的映射信息决定将请求转发给哪个ACTION,如果相应的ACTION实例不存在,就先创建这个实例,然后调用ACTION的EXECUTE方法。
⑥ACTION的EXECUTE方法返回一个ACTIONFORWARD对象,ACTIONSERVET再把客户请求转发给ACTIONFORWARD对象指向的JSP组件。
Hibernate框架是JAVA应用和关系数据库之间的桥梁,它负责JAVA对象和关系数据库之间的映射,在Hibernate内部封装了通过JDBC访问数据库的操作,向上层应用提供了面向对象的数据库访问API,它的主要特点有以下几方面: