数据结构自动出题系统的设计与实现 说明书.docx
《数据结构自动出题系统的设计与实现 说明书.docx》由会员分享,可在线阅读,更多相关《数据结构自动出题系统的设计与实现 说明书.docx(33页珍藏版)》请在冰豆网上搜索。
数据结构自动出题系统的设计与实现说明书
单位代码10
学号4
分类号TP315
密级________
毕业设计说明书
数据结构自动出题管理系统
院(系)名称
专业名称
学生姓名
指导教师
2012年5月15日
数据结构自动出题管理系统的设计与实现
摘要
高新科技和计算机的飞速发展,给人们带来了更多的便利。
电脑普及时代即将到来,网络技术也在逐渐完善,人们的生活已经开始发生重要的变革。
信息时代对人才素质的结构提出了更新,更高的要求,开展自动出题系统这种方式是教育面临信息时代的必然选择。
为了实现数据结构题库管理的信息化而开发了这个数据结构自动出题系统。
本系统实现了难度管理、题库管理、学生管理、试卷管理、评分老师管理等基本功能。
同时,本系统有三种登录权限,分别是管理员,考生和评分老师。
系统采用B/S开发模式,以MyEcipse8.6作为开发平台,结合JSP、JavaScript、Html等语言,以Tomcat为服务器和SQLServer2005为后台数据库。
整个系统层次结构简单,操作容易,并具备一定的安全性。
考生借助此系统,可以随时随地的进行课程测试,同样,老师使用该系统能更高效、便捷的组织在线考试。
关键词:
JSP,MyEclipse,在线考试,题库
TheDataStructuretoBeAutomaticSettheSystemDevelopmentandImplementation
Author:
LiKun
Tutor:
ZhaoWenAn
Abstract
Anappletisamini-programthatwillrunonlyunderaWebbrowser.TheappletisdownloadedautomaticallyaspartofaWebpage(justas,forexample,agraphicisautomaticallydownloaded).Whentheappletisactivateditexecutesaprogram.Thisispartofitsbeauty—itprovidesyouwithawaytoautomaticallydistributetheclientsoftwarefromtheserveratthetimetheuserneedstheclientsoftware,andnosooner.Theusergetsthelatestversionoftheclientsoftwarewithoutfailandwithoutdifficultreinstallation.BecauseofthewayJavaisdesigned,theprogrammerneedstocreateonlyasingleprogram,andthatprogramautomaticallyworkswithallcomputersthathavebrowserswithbuilt-inJavainterpreters.(Thissafelyincludesthevastmajorityofmachines.)SinceJavaisafull-fledgedprogramminglanguage,youcandoasmuchworkaspossibleontheclientbeforeandaftermakingrequestsoftheserver.
Youwon’tneedtosendarequestformacrosstheInternettodiscoverthatyou’vegottenadateorsomeotherparameterwrong,andyourclientcomputercanquicklydotheworkofplottingdatainsteadofwaitingfortheservertomakeaplotandshipagraphicimagebacktoyou.Notonlydoyougettheimmediatewinofspeedandresponsiveness,butthegeneralnetworktrafficandloadonserverscanbereduced,preventingtheentireInternetfromslowingdown.
Keywords:
applet,Java,Internet
1.绪论
1.1.背景
近年来,随着计算机技术的发展和互联网时代的到来,我们已经进入了信息时代,也有人称为数字化时代,在这数字化的时代里,学校的教学管理都受到了极大的挑战。
Internet技术持续迅猛的发展,也给传统的教学提出了新的模式。
以现代计算技术、网络技术为基础的数字化教学主要是朝着信息化、网络化、现代化的目标迈进。
作为新型的办学模式,它们具有对于教育、教学过程来说极为宝贵的特性,可以为新型教学模式的建构提供理想的环境。
在此开发的数据结构自动出题系统,旨在探索一种以互联网为基础的教学模式。
通过这种新的模式,使学生通过自测及时的掌握学过的知识,为学校营造一种新的教学环境,从而提高工作效率和教学水平。
1.2.系统开发技术
1.2.1.JavaServerPage
JSP(JavaServerPage服务器网页)是从1998年开始出现的新技术。
由Sun公司倡导、许多公司参与一起建立的一种动态网页技术标准,是基于JavaServlet以及整个Java体系的web开发技术。
在传统的网页HTML文件(*.htm,*.html)中加入脚本片段和JSP标记(Tag),构成JSP网页(*.jsp)。
JSP技术为创建显示动态生成内容的web页面提供了简便的方法。
JSP作为Java家族的一员,承袭了Java的特点,即跨平台的特性,也即一次编译,到处运行。
[1~3]
在国外,己经大量使用JSP作为网络应用程序的开发工具,而在国内,尽管JSP还不是主流开发技术,但是由于JSP的强大优势,许多网站都已经准备转向JSP,利用JSP来开发动态网站。
1.2.2.JSP工作原理
JSP是面向服务器的,因此支持任何浏览器。
当Web服务器和JSP引擎遇到访问JSP网页的请求时,JSP引擎将请求对象发送给服务器端的相关组件,比如JavaBean组件、Servlet或EJB等,然后由服务器端组件处理这些请示,可能需要从数据库或数据存储中检索信息,然后服务器端组件再将响应对象返回JSP引擎。
JSP引擎将响应对象传递给JSP页面,根据JSP页面的HTML格式完成数据编排,最后Web服务器和JSP引擎将格式化后的JSP页面以HTML格式返回客户浏览器。
这就是当前网站构建中广泛采用的浏览器——Web服务器——后台数据库的三层架构模式。
因为JSP所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果。
1.2.3.JSP体系结构
JSP网站开发标准给出了两种使用JSP的技术,可以归纳为模式一、模式二。
模式一:
JSP+JavaBeans技术 在这种模式中,JSP页面独自响应请求并将处理结果返回给客户。
Bean处理所有数据访问,JSP实现页面的表现,以实现内容生成与显示相分离。
当处理复杂的大型应用时,页面被嵌入大量的脚本或Java代码段,当需要处理的商业逻辑复杂时,这种情况会变得非常糟糕,大量的内嵌代码使得页面程序变得复杂,对于前端界面设计人员,这是不可思议的事情。
所以模式一可用于小型应用,不能够满足大型应用的需要。
模式二:
JSP+Servlet+JavaBeans技术 Servlet技术是一种采用Java技术来实现CGI功能的一种技术,Servlet技术非常适于服务器端的处理和编程,并且Servlet会长期驻留在内存。
从开发的观点看,模式二具有更清晰的页面表现,清楚的开发者角色划分,在大规模项目开发中,模式二更被采用,模式二也更符合当前流行的MVC结构(Model/view/controller),其中Servlet对应controller,处于控制者的位置,处理HTTP请求,负责生成JSP中使用的Beans组件或对象,并判断应将请求传递给哪个JSP等,JSP对应view,负责生成最终的动态网页并返回给浏览器。
而JavaBeans对应的是Model,实现各个具体的应用逻辑与功能。
1.2.4.SQLSERVER2005数据库连接
数据库方面用Spring+HibernateDAO持久层开发,Spring用Hibernate访问数据库的方式:
1、DAO开发
需要在SpringXML配置文件中,注册Bean(实现类)来依赖注入SessionFactory.。
Spring中进行事务管理的通常方式是利用AOP(面向切片编程)的方式,为普通java类封装事务控制,它是通过动态代理实现的,由于接口是延迟实例化的,spring在这段时间内通过拦截器,加载事务切片。
原理就是这样,具体细节请参考jdk中有关动态代理的文档。
[4~6]
动态代理的一个重要特征是,它是针对接口的,所以我们的DAO要通过动态代理来让spring接管事务,就必须在DAO前面抽象出一个接口.当然如果没有这样的接口,那么spring会使用CGLIB来解决问题,但这不是spring推荐的方式。
1、直接使用HibernateAPI(不推荐使用)
publicclassDaoImpimplateDao{
privateSessionFactorysessionFactory;
privatestaticStringhql="fromUseruwhereu.username=?
";
publicvoidsetSessionFactory(SessionFactorysessionFactory){
this.sessionFactory=sessionFactory }
publicbooleanisValidUser(Stringusername){
try{ ListuserList=sessionFactory.getCurrentSession()
.creatQuery(hql).setParameter(0,username).list();
if(userList.size()>0){returntrue; }catch(HibernateExceptionex)
{ throwconverHibernaterAccessException(ex);} }}
优点:
与Spring框架完全分离。
缺点:
(1)无法使用Spring框架封装所提供的额外功能.如,直接使用HibernateAPI需用try...catch()处理HibernateException异常。
(2)需在实现类中加入setSessionFactory(SessionFactorysessionFactory)属性,接收依赖注入的SessionFactory。
2、继承Spring的HibernateDaoSupport使用HibernateTemplate(不推荐使用getSession())。
publicclassDaoImpextendHibernateDaoSupportimplatesDao{
privatestaticStringsql="fromUseruwhereu.username=?
";
publicbooleanisValidUser(Stringusername){
ListuserList=getHibernateTemplate().find(sql,username);
if(userList.size()>0){ returntrue;}
publicbooleanisValidUser(Stringusername,Stringpassword)throwDataAccessException{Sessionsession=getSession(); //不推荐使用,用完后需手动关闭
String[]userlist=newString[2];
userlist[0]=username;
userlist[1]=password;
try{
ListuserList=session.find(hql,userlist); //Hibernate语句;
session.close();
if(userList.size()>0){returntrue;}catch(HibernateExceptionex){
throwconverHibernaterAccessException(ex); } }}
特点:
对HibernateTemplate没有提供的功能,可以直接调用HibernateDaoSuppor对象的getSession()方法(极其不推荐使用)得到Session对象实例用try{HibernateAPI}catch(HibernateExceptionex)操作。
.
3、对HibernateTemplate没有提供的功能,还可以用HibernateCallback回调的方法管理数据库.(极其推荐)。
/**
*使用sql语句进行操作
*@paramsql HSQL查询语句
*@paramoffset 开始取数据的下标
*@paramlength 读取数据记录数
*@returnList 结果集*/
publicListgetListForPage(finalStringhql,finalintoffset,finalintlength){
Listlist=getHibernateTemplate().executeFind(newHibernateCallback(){
publicObjectdoInHibernate(Sessionsession)throwsHibernateException,SQLException{
Queryquery=session.createQuery(hql);
query.setFirstResult(offset);
query.setMaxResults(length);
//query.setCacheable(false);
// for (int i = 0; i < values.length; i++) {
// query.setParameter(i, values[i]);
// }
Listlist=query.list();returnlist; } }); returnlist;}
1.3.论文内容概要介绍
严格依照软件工程的思想,本软件分为可行性研究,需求分析,概要设计,详细设计,软件测试这些步骤,其中本文的第二章对本软件的可行性研究进行讨论,包括评价尺度,技术可行性和经济可行性。
第三章主要对软件进行需求分析,这一章详细就软件应该达到的功能进行说明。
第四章是本文最重要的一章,这一章是对软件的整体设计,包括概要设计和详细设计,概要设计主要对于系统中用到的数据结构和类进行说明,以及对于用户使用界面的设计,包括系统的布局。
详细设计对于需求分析中定义出的功能进行说明,具体到使用的技术和解决思想。
第五章是对系统的简要运行界面的展示和说明。
最后是对于系统软件测试的结果的过程说明,以及解决在测试中发现的软件中系统的错误的方法,分为本地测试和联机测试,最后是对于这篇论文的结语,总结了在设计和开发过程中的收获和缺憾。
2.可行性研究
可行性分析(FeasibilityAnalysis)也称为可行性研究,是在系统调查的基础上,针对新系统的开发是否具备必要性和可能性,对新系统的开发从技术、经济、社会的方面进行分析和研究,以避免投资失误,保证新系统的开发成功。
可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。
该系统的可行性分析包括以下几个方面的内容:
1、经济可行性:
主要是对项目的经济效益进行评价,本系统开发经费在经济上是可以接受的,并且本系统实施后可以显著提高工作效率,提高教学质量。
所以本系统在经济上是可行的。
2、技术上的可行性:
技术上的可行性分析主要分析技术条件能否顺利完成开发工作,硬、软件能否满足开发者的需要等。
该管理系统采用了Browser/Server模式进行开发。
Browser/Server体系结构紧密的结合了Internet/Intranet技术,是技术发展的大势所趋,它把应用系统带入了一个崭新的发展时代。
数据库服务器SQL数据库,它能够处理大量数据,同时保持数据的完整性并提供许多高级管理功能。
它的灵活性、安全性和易用性为数据库编程提供了良好的条件。
因此,系统的软件开发平台已成熟可行。
硬件方面,科技飞速发展的今天,硬件更新的速度越来越快,容量越来越大,可靠性越来越高,价格越来越低,其硬件平台完全能满足此系统的需要。
综上所述,此系统开发目标已明确,在技术和经济等方面都可行,并且投入少、见效快。
因此系统的开发是完全可行的。
2.1.项目要求
(1)由于系统登录对应的是特定的对象,所以系统需要经过有效的身份验证才可以登录。
(2)系统的权限一般分为两种:
管理员、学生和评分老师。
不同的身份使用不同的权限和功能。
(3)管理员需要对试题、考生和评分老师进行有效的管理,负责试题的录入及更新和修改,对试题的分类,每次考试前,需要对试场环境和考生状态进行考前初始化工作。
(4)系统要有良好的试卷上传和回收功能,确保信息传送的正确性。
(5)系统要有一个友善的界面,确保考生考试的顺利进行。
(6)系统提供对考生成绩的查询等管理功能。
(7)系统应具有良好的安全性管理。
2.2.系统的主要开发目标
首先,因为自动出题系统是面向特定的某些对象的,所以要将整个系统的角色分为三种,分别是管理员,评分老师和考生。
这样将不同的权限分给不同的角色。
然后,考生需要自测科目和题库的来源,所以管理者需要对考试科目和试题库进行维护,最后自测者需要选择试卷进行自测。
2.3.开发的可行性
1、经济方面的可行性
由于该软件是一个小型的数据结构自动出题系统,所以进行该软件的开发经费和投资较少,只需学校现有机房即可,系统的开发并不太复杂和繁琐,操作尽可能简单易行。
在开发过程中,由一个人独立开发,用时
个月左右,所需成本费用主要为人工费用,再加上计算机和软件等构成该系统的开发成本。
2、技术方面的可行性
由于该系统是小型的数据结构自动出题系统,采用B/S模式,开发难度适中。
通过对各种开发工具和数据库之间进行比较以及指导老师的建议,最终确定采用JSP。
数据库方面则选用了SQLServer2005进行设计。
B/S结构的最大优点是具有强大的使用和处理数据的能力,它将数据处理任务分开在客户端和数据库服务器上进行,有利于充分利用网络的计算资源,该操作还大大减少了网络的传输量,从客户发往数据库服务器的只是查询请求,从数据库传回的只是查询的结果。
以简单的两层客户机/服务器系统而言,客户端是指应用软件以图形接口显示数据并让用户进行添加、修改等并行输入输出作业的部分,也就是用户接口负责向后端的数据库索取数据,执行客户端软件的工作。
服务器所执行的后端数据库服务器,则专门执行数据的存储、检索、管理、备份等种种关键操作。
3.需求分析
需求分析就是发现、求精、建摸、规格说明和复审的过程。
为了发现用户的真正需求,首先应该从宏观角度调查、分析用户所面临的问题。
也就是说,需求分析的第一步是尽可能了解当前用户的情况和需要解决的问题。
3.1.市场需求
当前考试系统中,仍有许多是基于C/S模式的,每一次伴随着系统的升级,都要在每个客户端更新软件,耗时耗力。
可喜的是,随着技术的发展,基于B/S模式的在线考试系统越来越多,逐渐占据了主导地位。
它克服了C/S模式下的许多缺点,从传统的基于C/S模式的考试系统转变到基于B/S模式的考试系统,可以使用户在任何一台电脑上,只要可以上网,就可以使用该服务,大大简化了操作,为用户提供了方便。
另一方面,也为教师的管理和批阅工作提供了方便,提高了效率。
但是据我多方的观察和研究,发现大多数的在线考试系统都是采用基于页面的模式开发,每个页面中都包含了要用到的所有功能逻辑,导致代码重复率高,结构不够清晰,维护升级起来也很费时间和人力。
鉴于这种情况,所以我们将J2EE的概念加入到在线考试系统中来,使得该系统更易于升级和维护。
3.2.软件功能分析
根据自动出题系统的实际要求,结合现在的实际操作过程,系统应该实现以下功能:
针对管理员角色:
(1)管理员维护:
对现有管理员进行管理和添加新的管理员。
(2)难度管理:
要对课程难度进行控制。
(3)题库管理:
录入新的试题和管理现有试题。
(4)试卷管理:
录入新的试卷和管理现有试卷。
(5)考生管理:
添加新的考生和管理现有的考生。
(6)评分老师管理:
对系统的评分老师进行添加和管理。
(7)考生分数查看:
对于已经选择题目参与过自测的考试分析进行查看。
针对考生角色:
(1)在线自测:
考试选择试题进行自测。
(2)在线考试:
查自己自测的分数。
针对评分老师角色:
(1)在线评分:
学生提交试题之后老师对其评分。
除了实现上述功能以外,数据结构自动出题系统还应该具有友好、简洁的界面,安全性高,稳定性强的特点。
3.3.软件的非功能性需求
作为一种软件产品,除了在功能方面必须达到用户的基本要求以外,还必须在意一些非功能方面的因素,诸如:
软件的用户操作界面的美观和简洁,以及界面图标的标准化和规范化。
软件要有一定的兼容性,应该兼容当前的主流操作系统平台,象WINDOWS98/NT/Me/2000/XP/2003等。
硬件方面应当要求配置低一点,保证程序运行所占用的资源尽量少,像这样的小型开发软件应该适用于现大多数的计算机平台。
4.系统设计
4.1.总体设计
4.1.1.基本简介
该系统是专门用于用户注册、登录、试题查询的应用web程序。
它应该具有开放性、方便性和灵活性。
管理员可以轻松地向题库添加、修改和删除试题。
4.1.2.运行环境
为了保证系统运行的效率和可靠性,系统服务器端应具有较高的软硬件配置,客户端的要求不是很高。