基于jsp(java)在线考试系统的
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
和实现
毕业设计,论文,
基于jsp(java)在线考试系统的设计和实现
姓 名
系 别、 专 业
导 师 姓 名、职 称
完 成 时 间
【摘要】随着当今计算机技术的迅速发展,其应用已渗入到人类社会的各个
领域并发挥越来越重要的作用。本试卷自动生成系统使用Data数据控件连接数
据库,实现对数据库的各种操作。本系统能够自动创建试卷、修改原有试卷、浏
览已生成的试卷。实现了考试出题的自动化。
本试卷自动生成系统是采用当今流行的JSP语言开发而成。作为一种基于对
象,可视化的编程工具软件,它提供了许多内部及外部控件:ajax、structs等,
不需要编写大量代码去描述界面元素的外观和位置,而只要把预先建立的对象加
到屏幕上,一点即可。它不仅可以帮我们设计出漂亮的界面,同时它提供的数据
控件和数据访问对象可以轻松连接到各种格式的数据文件,从而实现对数据库的
各种操作。系统使用了sql作为数据库平台,它可以用最简单的方式创建各种数
据库,并且可以稳定高效的支持jsp对它的调用。
关键字:数据库;试卷生成系统;JSP语言;控件
Today,alongwith the technical and quick development in calculator,application has seeped into the human social for each other realm and has brought into play the more and more important function.This automatic creation for text paper systerm is important part of manage systerm for currency test questions.it is an importance way to realize teaching auto-mation.It can realize automation that examination make out questions,to increase work efficiency,and realizes to seperation for each and test,it can rises important function for increasing the teaching quantity.
The system was builded was designed by popular integrated development Visual Basic language.As an object-oriented visual programming software, it supports many control ,such as datbird and updown,richtextbox and so on. Doing not need the plait writes the code of large quantity to the external appearance that describe the interface chemical element with positions. But as long as click in advance of the object adds to hold the act top.It can not only design the beautiful interface for us.The data that it provide controls a data for visitting with the data object can then the relaxed chain receives every kind of format document at the same time.From but realize to every kind of operation of the database.The system used the Access conduct and actions database terrace.It can creat to set up every kind of database with the most simpile way,and can the support VB stabilizing efficient adjust to use to it.Ask for help from this system.
With this design teachers could updata the current database and complete most tasks in quicker actions.According to all above,to achieve the automatic questions generator of test paper.
Key word:database;test paper generate system;JSP;control
第1章 绪论................................................................................................................................................................ 5
1.1项目背景和意义 ................................................................................................... 5
1.2 研究目标 ............................................................................................................ 61.3 国内外考试系统解决方案 .................................................................................... 6 1.4论文结构 ............................................................................................................. 7
第2章 系统相关理论和技术.................................................................................................................................... 8
2.1 J2EE体系 ............................................................................................................ 8
2.1.1 J2EE概念 .................................................................................................. 8
2.1.2 J2EE四层模型 ......................................................................................... 9
2.1.3 J2EE的核心组件 ..................................................................................... 9 2.2 MVC设计模式................................................................................................... 10
2.2.1 MVC设计模式概念 .................................................................................. 10
2.2.2 采用MVC设计模式优势 ..........................................................................11
2.2.3 MVC设计模式原理 .................................................................................. 12 2.3 Struts框架 ......................................................................................................... 12
2.3.1 Struts框架概述 ......................................................................................... 12
2.3.2 Struts框架优点 ......................................................................................... 122.4 Hibernate框架. ................................................................................................... 13
2.4.1Hibernate框架概述 .................................................................................... 13
2.4.2Hibernate框架优点 .................................................................................... 14 2.5 AJAX技术......................................................................................................... 14
2.5.1 AJAX技术概述 ........................................................................................ 14
2.5.2 AJAX技术优点 ........................................................................................ 16 2.6数据库理论基础 ................................................................................................. 17
第3章 网络考试系统的分析与设计...................................................................................................................... 19
2.1系统总体目标和需要解决的问题 ........................................................................ 19 3.2系统总体结构 .................................................................................................... 19 3.3系统总流程图 .................................................................................................... 19 3.4系统主要数据库表设计 ...................................................................................... 20
第4章 基于J2EE的网络考试系统的实现 ........................................................................................................... 24
4.1系统的开发及测试环境 ...................................................................................... 24 4.2 系统的关键技术的实现 ..................................................................................... 24
4.2.1 Struts框架应用 ...................................................................................... 24
4.2.2 数据库连接池应用 ................................................................................... 26
4.2.3 AJAX技术应用 ..................................................................................... 27 4.3系统的主要功能模块的实现 ............................................................................... 28
4.3.1 登录子模块实现 ...................................................................................... 28
4.3.2 出卷子模块实现 ...................................................................................... 30
4.3.3评卷子模块实现 ....................................................................................... 36 4.4组卷算法研究设计 ............................................................................................. 45
4.4.1随机选取算法........................................................................................... 45
4.4.2回溯试探算法. .......................................................................................... 46
4.4.3遗传算法.................................................................................................. 47 4.5系统安全性的实现.............................................................................................................................................. 49
第5章 总结与思考.................................................................................................................. 错误~未定义书签。
5.1 研究成果总结 ....................................................................... 错误~未定义书签。
5.2 研究中存在的不足 ................................................................ 错误~未定义书签。
结束语........................................................................................................................................ 错误~未定义书签。
参考资料.................................................................................................................................... 错误~未定义书签。
致 谢........................................................................................................................................ 错误~未定义书签。
第1章 绪论
1.1项目背景和意义
Internet是世界上最大的计算机互联网络。所谓计算机网络,就是把分步在不同地理区域的计算机与专门外部设备用通信线路互连成一个规模大、功能强的网络系统,从而使计算机之间相传递信息,共享硬件、软件,数据信息等资源。它是现代通信技术与计算机技术相结合的产物。而Internet连接着世界各地数以千万计大大小小的电脑网络和主机,是世界上最开放的计算机网络。
万维网的英文全称是World Wide Web,也可以写为WWW、Web或3W。它是使用超文本探索Internet的系统,最早由位于日内瓦的欧洲粒子物理实验室CERN所创建。创建者的目的是建立一种网络系统,将分布在世界各地的 物理学家组织在一起,互相交流设计思想和研究成果。在使用WWW进行文件阅读时,屏幕上会出现许多不同于基色的词或词组,这就是“超级链接”,超级链接是指向Web页面的统一资源定位器(URL)的对象。当用户单击一个超级链接时,该用户界面就会跳转到超级链接所指向的Web页面。URL可以看作是 Web页面的地址。每个Web页面都有一个或多个URL与之相关。WWW采用与“网”状结构组织有关的资源。
长久以来,国家都很重视教育,无论是在政策还是财政上都给与很大程序的倾斜。而随着社会的不断高速发展,就业的压力越来越大,所以在学校方面,如何更有效地进行考试管理,以便腾出手来进行更重要的教育工作,是一个很大的课题。而现行的考试系统,仍然是很传统的手工操作的“笔纸操作系统”,全部信息由负责的老师进行纸页记录,然后进行传达保存工作,但这其中会涉及到各部门间的信息传达、信息查找等,由于每个人的字迹习惯都不一样,所以,在信息传达过程中会造成一定的失误,而这失误对于学校管理方面是很不好的。
由此,重组一个新的考试管理系统,是迫在眉睫。
计算机和网络技术的不断进步和提升,使人类的信息分析方式和生活方式都得到了很大的改变,而各个产业都在自己的领域中不同深度的融入了计算机及网络技术,对本行业的发展起了很大的推动作用。基于B/S模式的考试系统克服了传统交流方式时所带来的人力、物力以及时间上的浪费,同时也保证了交流过程的科学化、高效化,使管理过程方便、准确、快捷、深入人心。
网络技术的迅速发展,使得人类社会突飞猛进,数据分析共享是其中一个重
要的增进渠道。采用这种管理方式,一是无纸化管理,节约的造纸印刷资源不可计数;二是在管理方式及方法上有了多种选择,增加了信息的可读性和可管理性。
总之,伴随着个人电脑的普及和使用电脑人口的增加,网络管理在众多的管理渠道中脱颖而出,其地位及占有量一定会逐渐增加。技术革命引发教学结构变革,网络教育的产生是教育领域中的一场革命。
1.2 研究目标
本系统是为某某学校设计开发的一个在线考试系统,来研究基于B/S模式的在线教务管理的实现,采用的是JSP+SQL模式的电子管理平台。该管理系统有机的结合在线考试的现实情况,采取各种直观的手段,显示学生的实际情况,方便教师和管理者有针对性的制定培养计划,以便查漏补缺。
此系统设计上采用三层结构、Web Service技术,使之在选用平台、采用技术上具有先进性、前瞻性、扩充性,从而保证建成的系统具有良好的稳定性、可扩充性。系统设计按
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
化、
规范
编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载
化,分层设计,构件化实现。采用软件构件化的开发方式,使系统结构分层,业务与实现分离,逻辑与数据分离;以统一的服务接口规范为核心,使用开放标准。从功能上来说,系统是比较完备的,系统以Web界面与用户交互,为用户提供信息并接受其操作,同时通过数据库管理系统来存储信息数据。系统实现了对信息数据的浏览、查询、编辑和管理等基本数据库操作,采用了模块化设计方法,根据用户的需求及程序的应用与维护的易用性,将各个部分置于不同的模块当中,方便了程序的扩展与维护,同时建立了程序功能复用的基础。
1.3 国内外考试系统解决方案
我国互联网行业较国外起步晚,1994年中国获准进入互联网,并于同年完成所有中国互联网工作,次年5月,张树新创立瀛海威,这是中国第一家互联网服务供应商,自此之后,在一代代IT人才的推动下,中国互联网事业获得蓬勃发展。由此,中国课程网站的起步也较晚,但现在却无从得知谁是第一家课程网站了,只知道现在中国课程网站的发展十分迅速,几乎涵盖了所有包括中小学、大学及各种技能证书培训的所有课程,内容丰富而冗余,分类庞杂而紊乱,大多功能相似,内容相仿。
1.4论文结构
第1章引言部分,引言主要叙述课题的研究背景和意义,以及课题的研究目标。
第2章主要内容是:介绍J2EE体系、MUC设计模式、Struts框架、AJAX技术及数据库方面的基础知识。
第3章主要内容是:系统设计包括,系统总体设计;系统主要数据库表设计。
第4章主要内容是:系统详细设计包括,系统开发关键技术,系统主要功能实现,系统安全测试。
第5章主要内容是研究课题存在的问题及经验总结。
最后还有结论、致谢、参考文献等等内容的介绍。
第2章 系统相关理论和技术 2.1 J2EE体系
J2EE容器以两种方式支持基于构件的应用编程模型。第一,它们使许多需要一定编程技能的标准功能自动化,如事务管理和安全。第二,它们提供了对构件有用的API,如消息传递(Java Message Service)和数据库访问(JDBC)。容器的这些特征统一了J2EE编程模型,简化了应用开发,支持构件和应用级的可移植性。
2.1.1 J2EE概念
目前,Java 2平台有3个版本,它们是适用于小型设备和智能卡的Java 2平台Micro版(Java 2 Platform Micro Edition,J2ME)、适用于桌面系统的Java 2平台标准版(Java 2 Platform Standard Edition,J2SE)、适用于创建服务器应用程序和服务的Java 2平台企业版(Java 2 Platform Enterprise
Edition,J2EE)。
J2EE是一种利用Java 2平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。J2EE技术的基础就是核心Java平台或Java 2平
编写一次、随处运行台的标准版,J2EE不仅巩固了标准版中的许多优点,例如"
"的特性、方便存取数据库的JDBC API、CORBA技术以及能够在Internet应用中保护数据的安全模式等等,同时还提供了对 EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技术的全面支持。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构。
J2体系结构提供中间层集成框架用来满足无需太多费用而又需要高可用性、高可靠性以及可扩展性的应用的需求。通过提供统一的开发平台,J2EE降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集成强有力支持,完全支持Enterprise JavaBeans,有良好的向导支持打包和部署应用,添加目录支持,增强了安全机制,提高了性能。
2.1.2 J2EE四层模型
JSP页面包含四种类型元素,每一种元素在动态内容的表示中都扮演一个特殊的角色。(1)Text 元素是通过标准HTML或XML格式化的内容,表示页面的静态部分。(2)Directives是JSP处理器的指令。当把JSP页面编译成可执行形式时,JSP容器处理这些指令。(3)Tags调用JavaBeans以产生动态内容或执行其它计算。(4)Scripting 元素可以是declaration, scriptlet或expression. 象Tags元素一样,脚本元素可以用来执行计算以产生动态内容。当标准的Tags元素没有被定义或不适用的时候,可以使用Scripting 元素。
2.1.3 J2EE的核心组件
Servlet提供了产生动态页面内容的机制。可以把它们想象成服务器的Java applets. Servlet是用来替代和改善CGI脚本的。CGI通常是平台相关的,支持交互的能力有限。从性能上来讲,服务器每接受到一个用户请求都要装载一次CGI,消耗内存和处理周期。而Servlet是基于Java编程语言的,因此具有可移植性,灵活性,且编程较简单。Servlet在第一次初始化的时候被装载到内存中,此后就可以服务于任何用户请求,所以,Servlet比CGI具有更好的性能。
和所有的J2EE构件一样,Servlet运行在由J2EE平台提供者所实现的容器中。容器管理Servlet与客户的交互,并为Servlet访问各种基于Java技术的服务提供了丰富的环境。Servlet容器实现了J2SE的所有API. 因此,Servlet可以采用Java编程语言的各种技术,包括JDBC, JNDI(Java Naming and
Directory Interface), RMI, Java Beans等。容器也允许Servlet通过session获取特定客户的信息,解决了由于HTTP协议的无状态性而引起的客户信息的不透明性问题。
ClientWeb Tier
Servlet Container
Request
RequestServletObject
Browser
Response
Response
Object
ContextSession
ObjectObject
Application
图1 Servlet与Client的交互Object
图1是一个典型的Servlet与Client的交互。一个客户通过HTTP向一个Web服务器发出一个请求。在Web服务器处理该请求时,将它传递给Servlet容器,由Servlet容器将请求传递给合适的Servlet. Servlet有一个请求对象,它提供给Servlet关于请求的信息,包括谁调用了该Servlet, 传送了什么样的表单参数,以及关于HTTP请求的其它信息。Servlet通过一个响应对象向客户反馈数据。在请求处理期间的任何时候,Servlet能够利用一个上下文对象将发生的事件记入日志,获得资源的URL引用,设置和存储在同一上下文的其它Servlet能够使用的属性。同样,Servlet也能访问向它提供客户状态信息的一个session对象。
2.2 MVC设计模式
2.2.1 MVC设计模式概念
MVC是一种目前广泛流行的软件设计模式,早在70年代,IBM就推出了Sanfronscisico项目计划,其实就是MVC设计模式的研究。近来,随着J2EE的成熟,它正在成为在J2EE平台上推荐的一种设计模型,也是广大Java开发者非常感兴趣的设计模型。MVC模式也逐渐在PHP和ColdFusion开发者中运用,并
有增长趋势。随着网络应用的快速增加,MVC模式对于Web应用的开发无疑是一种非常先进的设计思想,无论你选择哪种语言,无论应用多复杂,它都能为你理解分析应用模型时提供最基本的分析方法,为你构造产品提供清晰的设计框架,为你的软件工程提供规范的依据。
MVC设计思想
MVC英文即Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层——模型层、视图层、控制层。
2.2.2 采用MVC设计模式优势
MVC的优点:大部分用过程语言比如ASP、PHP开发出来的Web应用,初始的开发模板就是混合层的数据编程。例如,直接向数据库发送请求并用HTML显示,开发速度往往比较快,但由于数据页面的分离不是很直接,因而很难体现出业务模型的样子或者模型的重用性。产品设计弹性力度很小,很难满足用户的变化性需求。MVC要求对应用分层,虽然要花费额外的工作,但产品的结构清晰,产品的应用通过模型可以得到更好地体现。
首先,最重要的是应该有多个视图对应一个模型的能力。在目前用户需求的快速变化下,可能有多种方式访问应用的要求。例如,订单模型可能有本系统的订单,也有网上订单,或者其他系统的订单,但对于订单的处理都是一样,也就是说订单的处理是一致的。按MVC设计模式,一个订单模型以及多个视图即可解决问题。这样减少了代码的复制,即减少了代码的维护量,一旦模型发生改变,也易于维护。
其次,由于模型返回的数据不带任何显示格式,因而这些模型也可直接应用于接口的使用。
再次,由于一个应用被分离为三层,因此有时改变其中的一层就能满足应用的改变。一个应用的业务流程或者业务规则的改变只需改动MVC的模型层。控制层的概念也很有效,由于它把不同的模型和不同的视图组合在一起完成不同的请求,因此,控制层可以说是包含了用户请求权限的概念。
最后,它还有利于软件工程化管理。由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化产生管理程序代码。
综合上述,MVC是构筑软件非常好的基本模式,至少将业务处理与显示分离,强迫将应用分为模型、视图以及控制层, 使得你会认真考虑应用的额外复杂性,把这些想法融进到架构中,增加了应用的可拓展性。如果能把握到这一点,MVC模式会使得你的应用更加强壮,更加有弹性,更加个性化。
2.2.3 MVC设计模式原理
图2-3 MVC设计模式
2.3 Struts框架
2.3.1 Struts框架概述
Struts是目前使用最广的MVC架构,它可以在Web应用程序中使用JSP和Servlet。Struts解决了用JSP或Servlet开发Web应用程序时遇到的问题。大多数情况下,可以使用Servlet生成HTML页面,并传送到客户端,但这样所有的代码都需用Servlet编写,代码比较麻烦,而且维护起来很困难;另外,使用JSP来生成HTML页面时,业务逻辑和显示逻辑混杂在一起,很多Java代码和HTML混在一起,代码维护量大,开发效率低。Struts在Java服务器端实现了MVC设计模式,在创建Web应用程序时能容易的分离表示层和业务数据层,这样就解决了JSP所带来的问题。
2.3.2 Struts框架优点
Struts框架是目前最成熟、应用最广泛的开放源代码Java Web MVC框架,该框架为Java Web应用系统的开发者提供了一个结构清晰、功能强大、成本低
廉、容易扩展及方便维护的平台。Struts基于MVC设计模式,使用servlet和JSP API建立,可以用来构建复杂的Web应用。它允许我们分解一个应用程序的业务逻辑、控制逻辑和表现逻辑的代码,使它的重用性和维护性更好。
2.4 Hibernate框架.
2.4.1Hibernate框架概述
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五个核心接口分别加以介绍。
?Session接口:Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSesion对象称为用户session。
?SessionFactory接口:SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要
一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。
?Configuration接口:Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。
?Transaction接口:Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。
?Query和Criteria接口:Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。
2.4.2Hibernate框架优点
一、Hibernate是JDBC 的轻量级的对象封装,它是一个独立的对象持久层框架,和App Server,和EJB没有什么必然的联系。Hibernate可以用在任何JDBC可以使用的场合,例如Java应用程序的数据库访问代码,DAO接口的实现类,甚至可以是BMP里面的访问数据库的代码。从这个意义上来说,Hibernate和EB不是一个范畴的东西,也不存在非此即彼的关系。
二、Hibernate是一个和JDBC密切关联的框架,所以Hibernate的兼容性和JDBC驱动,和数据库都有一定的关系,但是和使用它的Java程序,和App Server没有任何关系,也不存在兼容性问题。
三、 Hibernate不能用来直接和Entity Bean做对比,只有放在整个J2EE项目的框架中才能比较。并且即使是放在软件整体框架中来看,Hibernate也是做为JDBC的替代者出现的,而不是Entity Bean的替代者出现的。
2.5 AJAX技术
2.5.1 AJAX技术概述
AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。 国内通常的读音为“阿贾克斯”和阿贾克斯足球队读音一样。Web应用的交互如Flickr, Backpack和Google在这方面已经有质的飞跃。这个术语源自描述从基于网页的Web应用到基于数据的应用的转换。在基于数据的应用中,用户需求的数据如联系人列表,可以从独立于实际网页的服务端取得并且可以被动态地写入网页中,给缓慢的
Web应用体验着色使之像桌面应用一样。 虽然大部分开发人员在过去使用过XMLHttp或者使用Iframe来加载数据,但仅到现在我们才看到传统的开发人员和公司开始采用这些技术。就像新的编程语言或模型伴随着更多的痛苦,开发人员需要学习新的技巧及如何最好利用这些新技术。
AJAX模式
许多重要的技术和AJAX开发模式可以从现有的知识中获取。例如,在一个发送请求到服务端的应用中,必须包含请求顺序、优先级、超时响应、错误处理及回调,其中许多元素已经在Web服务中包含了,就像现在的SOA。AJAX开发人员拥有一个完整的系统架构知识。同时,随着技术的成熟还会有许多地方需要改进,特别是UI部分的易用性。
AJAX开发与传统的CS开发有很大的不同。这些不同引入了新的编程问题,最大的问题在于易用性。由于AJAX依赖浏览器的JavaScript和XML,浏览器的兼容性和支持的标准也变得和JavaScript的运行时性能一样重要了。这些问题中的大部分来源于浏览器、服务器和技术的组合,因此必须理解如何才能最好的使用这些技术。
综合各种变化的技术和强耦合的客户服务端环境,AJAX提出了一种新的开发方式。AJAX开发人员必须理解传统的MVC架构,这限制了应用层次之间的边界。同时,开发人员还需要考虑CS环境的外部和使用AJAX技术来重定型MVC边界。最重要的是,AJAX开发人员必须禁止以页面集合的方式来考虑Web应用而需要将其认为是单个页面。一旦UI设计与服务架构之间的范围被严格区分开来后,开发人员就需要更新和变化的技术集合了。
AJAX的最大机遇在于用户体验。在使应用更快响应和创新的过程中,定义Web应用的规则正在被重写;因此开发人员必须更注重用户。现在用户已经逐渐习惯如何使用Web应用了。例如用户通常希望每一次按钮点击会导致几秒的延迟和屏幕刷新,但AJAX正在打破这种长时间的状况。因此用户需要重新体验按钮点击的响应了。
可用性是AJAX令人激动的地方而且已经产生了几种新颖的技术。其中最引人注目的是一种称为“黄色隐出”的技术,他在数据更新之前时将用户界面变为黄色,更新完成后立刻恢复原来的颜色。AJAX开发人员将用户从Web应用的负载中解放出来;小心地利用AJAX提供的丰富接口,不久桌面开发人员会发现AJAX是他们的方向。
2.5.2 AJAX技术优点
传统的web应用允许用户填写表单(form),当提交表单时就向web服务器发送一个请求。服务器接收并处理传来的表单,然後返回一个新的网页。这个做法浪费了许多带宽,因为在前後两个页面中的大部分HTML代码往往是相同的。由于每次应用的交互都需要向服务器发送请求,应用的响应时间就依赖于服务器的响应时间。这导致了用户界面的响应比本地应用慢得多。
与此不同,AJAX应用可以仅向服务器发送并取回必需的数据,它使用SOAP或其它一些基于XML的web service接口,并在客户端采用JavaScript处理来自服务器的响应。因为在服务器和浏览器之间交换的数据大量减少,结果我们就能看到响应更快的应用。同时很多的处理工作可以在发出请求的客户端机器上完成,所以Web服务器的处理时间也减少了。
使用Ajax的最大优点,就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变过的信息。
Ajax不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。就像DHTML应用程序那样,Ajax应用程序必须在众多不同的浏览器和平台上经过严格的测试。随着Ajax的成熟,一些简化Ajax使用方法的程序库也相继问世。同样,也出现了另一种辅助程序设计的技术,为那些不支持JavaScript的用户提供替代功能。
对应用Ajax最主要的批评就是,它可能破坏浏览器后退按钮的正常行为。在动态更新页面的情况下,用户无法回到前一个页面状态,这是因为浏览器仅能记下历史记录中的静态页面。一个被完整读入的页面与一个已经被动态修改过的页面之间的差别非常微妙;用户通常都希望单击后退按钮,就能够取消他们的前一次操作,但是在Ajax应用程序中,却无法这样做。不过开发者已想出了种种办法来解决这个问题,当中大多数都是在用户单击后退按钮访问历史记录时,通过建立或使用一个隐藏的IFRAME来重现页面上的变更。(例如,当用户在Google Maps中单击后退时,它在一个隐藏的IFRAME中进行搜索,然后将搜索结果反映到Ajax元素上,以便将应用程序状态恢复到当时的状态。)
一个相关的观点认为,使用动态页面更新使得用户难于将某个特定的状态保存到收藏夹中。该问题的解决方案也已出现,大部分都使用URL片断标识符(通常被称为锚点,即URL中#后面的部分)来保持跟踪,允许用户回到指定的某个应用程序状态。(许多浏览器允许JavaScript动态更新锚点,这使得Ajax应用程序能够在更新显示内容的同时更新锚点。)这些解决方案也同时解决了许多关于不支持后退按钮的争论。
进行Ajax开发时,网络延迟——即用户发出请求到服务器发出响应之间的间隔——需要慎重考虑。不给予用户明确的回应 ,没有恰当的预读数据 ,或者对XMLHttpRequest的不恰当处理,都会使用户感到延迟,这是用户不欲看到的,也是他们无法理解的。通常的解决方案是,使用一个可视化的组件来告诉用户系统正在进行后台操作并且正在读取数据和内容。
2.6数据库理论基础
数据库的定义:
定义1
当人们从不同的角度来描述这一概念时就有不同的定义(当然是描述性的)。例如,称数据库是一个“记录保存系统”(该定义强调了数据库是若干记录的集合)。又如称数据库是“人们为解决特定的任务,以一定的组织方式存储在一起的相关的数据的集合”(该定义侧重于数据的组织)。更有甚者称数据库是“一个数据仓库”。当然,这种说法虽然形象,但并不严谨。
严格地说,数据库是“按照数据结构来组织、存储和管理数据的仓库”。在经济管理的日常工作中,常常需要把某些相关的数据放进这样的“仓库”,并根据管理的需要进行相应的处理。例如,企业或
事业单位
事业单位结构化面试题事业单位专业技术岗位财务人员各岗位职责公文事业单位考试事业单位管理基础知识
的人事部门常常要把本单位职工的基本情况(职工号、姓名、年龄、性别、籍贯、工资、简历等)存放在表中,这张表就可以看成是一个数据库。有了这个"数据仓库"我们就可以根据需要随时查询某职工的基本情况,也可以查询工资在某个范围内的职工人数等等。这些工作如果都能在计算机上自动进行,那我们的人事管理就可以达到极高的水平。此外,在财务管理、仓库管理、生产管理中也需要建立众多的这种"数据库",使其可以利用计算机实现财务、仓库、生产的自动化管理。
J.Martin给数据库下了一个比较完整的定义:数据库是存储在一起的相关数据的集合,这些数据是结构化的,无有害的或不必要的冗余,并为多种应用服务;数据的存储独立于使用它的程序;对数据库插入新数据,修改和检索原有数据均能按一种公用的和可控制的方式进行。当某个系统中存在结构上完全分开的若干个数据库时,则该系统包含一个“数据库集合”。
定义2
数据库是依照某种数据模型组织起来并存放二级存储器中的数据集合。这种数据集合具有如下特点:尽可能不重复,以最优方式为某个特定组织的多种应用服务,其数据结构独立于使用它的应用程序,对数据的增、删、改和检索由统一软件进行管理和控制。从发展的历史看,数据库是数据管理的高级阶段,它是由文件管理系统发展起来的。
定义3 (伯尔尼公约议定书专家委员会的观点)
所有的信息(数据事实等)的编纂物,不论其是以印刷形式,计算机存储单元形式,还是其它形式存在,都应视为“数据库”。
数字化内容选择的原因有很多,概括起来主要有:
(1)存储空间的原因。数字化的产品是通过网络被广大用户存取利用,而大家都知道数字化产品是存放在磁盘阵列上的,磁盘阵列由服务器来管理,磁盘空间是有限的,服务器的能力也是有限的,不可能无限量地存入数字资源,这就需要我们对文献资源数字化内容进行选择。
(2)解决数字化生产高成本和图书馆经费有限性之间矛盾的需要。几乎没有图书馆有充足的资源来对整个馆藏进行数字化,内容选择不可避免。
(3)数字资源管理的需要。技术的快速发展使数字化项目所生成的数字资源的生命周期越来越短,投入巨资进行数字迁移是延长数字资源生命的1个重要途径,昂贵的维护成本就必须考虑数字化的内容选择。
数据库发展史数据库技术从诞生到现在,在不到半个世纪的时间里,形成了坚实的理论基础、成熟的商业产品和广泛的应用领域,吸引越来越多的研究者加入。数据库的诞生和发展给计算机信息管理带来了一场巨大的革命。
第3章 网络考试系统的分析与设计 2.1系统总体目标和需要解决的问题
本在线考试系统的总体目标,是应用以上技术开发一个能够让教师、学生及系统管理员三种身份的人同时在一个系统中进行在线考试功能的系统,以最简便的方式尽量真实地模拟现实教学过程中的考试过程,同时又要做到操作简便信息冗余度小等要求。
本系统在开发过程中存在的问题有如下几个:
,、如何利用上一章中介绍的技术进行系统的开发,并保证系统能正常稳定地运行;
2、如何在一个系统中使得系统管理员、教师及学生三种完全不同的用户能够互不干扰地进行操作,而后台数据库不受其影响;
3、如何保证系统的安全。
3.2系统总体结构
根据系统需求分析,可得出本系统的总体结构设计图:
在线考试系统
管理员子系统 教师子系统 学生子系统
教学个个系
章试出参查师生人人统
用用节题卷资与资看用
管管管考成户户料料户
管管理理理管试管绩管 理理理理理
图,., 在线考试系统总体结构图
3.3系统总流程图
根据系统总体结构图,不难分析出其系统总体流程图:
开 始
登录窗口
判断身份
管理员 教师 学生 添加新管理员 添加新章节 参与答题 管理管理员 管理章节 查看分数 删除管理员 添加试题 修改密码 修改密码 管理试题
添加教师 手动/自动出卷
删除教师 查看是否出卷
添加学生 查看个人信息
删除学生 修改密码
结 束
图,., 在线考试系统总体流程图
3.4系统主要数据库表设计
数据库总设计的ER图如图3-2所示。
在线考试系统采用MS SQL Server作为后台的数据库。我们建立了一个名为
jspzxks的数据库用于存放放系统中的表,各表的名称和功能如表3-1所示。
工号 任教科目 名称 教师 姓名 班级 ,
密码
教授 教师 课程 用户名 , , ,
管理 用户名 产生 课程
, , 科目 学生 密码 题型 管试卷 教师 , 理班级
员 , 成绩 权限 考试时间
考试 , , 管理 , 注册时间
拥有 学生
学号
姓名 班级 联系
图,., 在线考试系统整体,-,图
表3-1 BookShopDB数据库中的表及其功能说明
表 名 功 能 说 明
allusers 管理员信息表
jiaoshi 教师信息表
xuesheng 学生信息表
kecheng 课程信息表
Shijuan 试卷信息表
chengji 成绩信息表
Zhangjie 章节信息表
下面将详细介绍我所设计模块表的数据结构。
表3-2 allusers表的结构
表3-3 chengji表的结构
表3-4 shijuan表的结构
表3-5 xuanzeti表的结构
表3-6 xuesheng表的结构
表3-7 jiaoshi表的结构
表3-8 kecheng表的结构
第4章 基于J2EE的网络考试系统的实现 4.1系统的开发及测试环境
本在线考试系统采用的技术为基于J2EE平台,使用AJAX技术搭建系统,数据库应用SQL2008系统。
4.2 系统的关键技术的实现
4.2.1 Struts框架应用
随着JSP 与Servlet 技术大量应用于以Web 为基础之应用程序,Java 开发人员群体认为应以较佳之模式以提升Web 应用程序之可维护性与重复使用性。早期JSP 规格书中曾列举两种可行之JSP 应用架构,分别为Model1 与Model 2。
struts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的web应用程序的开发。
1( Struts压缩包内容
文件夹jakarta-struts-1.0.2包含两个目录,lib和webapps。在lib目录中有使用struts创建应用程序是所需的文件:
文件 描述
jdbc2_0-stdext.jar 包含JDBC2.0 Optional Package API类。如果我们要使用struts提供的数据资源,就需要将这个文件拷贝到WEB-INF\lib下
Struts.jar 包含struts中所有的java类。同样也需要拷贝到WEB-INF\lib下
*.tld 标记库描述器文件,描述了多个struts标记库中的自定义标记。同样要拷贝到WEB-INF\lib下
在webapps目录下有如下文件:
Web应用程序 描述
Struts-blank.war 一个简单的web应用程序
Struts-documentation.war 包含struts站点上所有struts文档
Struts-example.war Struts很多特性的示范
Struts-exercisetaglib.war 主要用于对自定义标签库进行增加而使用的测试页,但也可以示范如何使用struts标记
Struts-template.war 包含struts模板标记的介绍和范例
Struts-upload.war 一个简单的例子,示范如何使用struts框架上传文件 。
2.Struts体系结构
让我们从MVC角度观察struts框架中的组件
框架中三个部分:模型,视窗和控制器。
?模型
在struts框架中,模型分为两个部分:
系统的内部状态;
可以改变状态的操作(事务逻辑)。
内部状态通常由一组ActinForm JavaBean表示。根据设计或应用程序复杂度的不同,这些Bean可以是自包含的并具有持续的状态,或只在需要时才获得数据(从某个数据库)。
大型应用程序通常在方法内部封装事务逻辑(操作),这些方法可以被拥有状态信息的bean调用。比如购物车bean,它拥有用户购买商品的信息,可能还有checkOut()方法用来检查用户的信用卡,并向仓库发定货信息。
小型程序中,操作可能会被内嵌在Action类,它是struts框架中控制器角色的一部分。当逻辑简单时这个方法很适合。
建议用户将事务逻辑(要做什么)与Action类所扮演的角色(决定做什么)分开。
?视窗
由JSP建立,struts包含扩展自定义标签库,可以简化创建完全国际化用户界面的过程。
?控制器
struts中,基本的控制器组件是ActionServlet类中的实例servelt,实际使用的servlet在配置文件中由一组映射(由ActionMapping类进行描述)进行定义。
3.Struts框架中的组件
(由于ROSE工具还未能下载,只能找来这幅图,它说明了一定问题,特别是ActionErrors,但它并没有将ActionMapping,JSP和Tag Library包含进来,有时间作完替换)
框架中所使用的组件:
ActionServlet 控制器
ActionClass 包含事务逻辑
ActionForm 显示模块数据
ActionMapping 帮助控制器将请求映射到操作
ActionForward 用来指示操作转移的对象
ActionError 用来存储和回收错误
Struts标记库 可以减轻开发显示层次的工作
4.2.2 数据库连接池应用
数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。
数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项
技术能明显提高对数据库操作的性能。
数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。数据库连接池的最小连接数和最大连接数的设置要考虑到下列几个因素:
1) 最小连接数是连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费;
2) 最大连接数是连接池能申请的最大连接数,如果数据库连接请求超过此数,后面的数据库连接请求将被加入到等待队列中,这会影响之后的数据库操作。
3) 如果最小连接数与最大连接数相差太大,那么最先的连接请求将会获利,之后超过最小连接数量的连接请求等价于建立一个新的数据库连接。不过,这些大于最小连接数的数据库连接在使用完不会马上被释放,它将被放到连接池中等待重复使用或是空闲超时后被释放。
4.2.3 AJAX技术应用
Ajax在本质上是一个浏览器端的技术,首先面临无可避免的第一个问题即是浏览器的兼容性问题。各家浏览器对于JavaScript,DOM,CSS的支持总有部分不太相同或是有Bug,甚至同一浏览器的各个版本间对于JavaScript,DOM,CSS的支持也有可能部分不一样。这导致程序员在写Ajax应用时花大部分的时间在调试浏览器的兼容性而非在应用程序本身。因此,目前大部分的Ajax链接库或开发框架大多以js链接库的形式存在,以定义更高阶的JavaScript API 、JavaScript对象(模板)、或者JavaScript Widgets来解决此问题。如prototype.js。
Ajax技术之主要目的在于局部交换客户端及服务器之间的数据。如同传统之主从架构,无可避免的会有部分的业务逻辑会实现在客户端,或部分在客户端部分在服务器。由于业务逻辑可能分散在客户端及服务器,且以不同之程序语言实现,这导致Ajax应用程序极难维护。如有用户接口或业务逻辑之更动需求,再加上前一个JavaScript/DOM/CSS之兼容性问题,Ajax应用往往变成程序员的梦魇。针对业务逻辑分散的问题,Ajax开发框架大致可分为两类:
将业务逻辑及表现层放在浏览器,数据层放在服务器:因为所有的程序以JavaScript执行在客户端,只有需要数据时才向服务器要求服务,此法又称为胖
客户端(fat client)架构。服务器在此架构下通常仅用于提供及储存数据。此法的好处在于程序员可以充分利用JavaScript搭配业务逻辑来做出特殊的用户接口,以符合终端用户的要求。但是问题也不少,主因在第一,JavaScript语言本身之能力可能不足以处理复杂的业务逻辑。第二,JavaScript的执行效能一向不好。第三,JavaScript访问服务器数据,仍需适当的服务器端程序之配合。第四,浏览器兼容性的问题又出现。有些Ajax开发框架如DWR企图以自动生成JavaScript之方式来避免兼容的问题,并开立通道使得JavaScript可以直接调用服务器端的Java程序来简化数据的访问。但是前述第一及第二两个问题仍然存在,程序员必须费相当的力气才能达到应用程序之规格要求,或可能根本无法达到要求。
将表现层[2]、业务逻辑、及数据层放在服务器,浏览器仅有用户接口引擎(User Interface engine);此法又称为瘦客户端(thin client)架构,或中心服务器(server-centric)架构。浏览器的用户接口引擎仅用于反映服务器的表现层以及传达用户的输入回到服务器的表现层。由浏览器所触发之事件亦送回服务器处理,根据业务逻辑来更新表现层,然后反映回浏览器。因为所有应用程序完全在服务器执行,数据及表现层皆可直接访问,程序员只需使用服务器端相对较成熟之程序语言(如Java语言)即可,不需再学习JavaScript/DOM/CSS,在开发应用程序时相对容易。缺点在于用户接口引擎以及表现层通常以标准组件的形式存在,如需要特殊组件(用户接口)时,往往须待原框架之开发者提供,缓不济急。如开源码Ajax开发框架ZK目前支持XUL及XHTML组件,尚无XAML之支持。
Ajax是以异步的方式向服务器提交需求。对服务器而言,其与传统的提交窗体需求并无不同,而且由于是以异步之方式提交,如果同时有多个Ajax需求及窗体提交需求,将无法保证哪一个需求先获得服务器的响应。这会造成应用程序典型的多进程(process)或多线程(thread)的竞争(racing)问题。程序员因此必须自行处理或在JavaScript里面动手脚以避免这类竞争问题的发生(如Ajax需求未响应之前,先disable送出按钮),这又不必要的增加了程序员的负担。目前已知有自动处理此问题之开发框架似乎只有ZK。 4.3系统的主要功能模块的实现
4.3.1 登录子模块实现
为了检验用户是否是系统的合法用户,所以需要用户输入用户名和密码来核对用户的合法性。用户的登录模块就是要完成这样的一个功能。该模块需要用到admin这个Bean,需要设计一个表单让用户输入用户名和密码。
登录界面是整个系统第一个与用户见面的,所以登录界面的美观是很重要的,这里我设计背景的修饰。系统登录设计界面如图4,1。
图4,1系统登录界面
根据用户输入信息不同系统调用admin(Bean)进入管理页面(管理员,教师,
学生)。
实现本模块的主要代码如下所示:
<%
String uid=request.getParameter("username");
String pwd=request.getParameter("pwd");
String sql="";
String cx=new String(request.getParameter("cx").getBytes("8859_1"));
if(cx.equals("管理员"))
{
sql="select * from [allusers] where username='"+uid+"' and pwd='"+pwd+"'";
}
if(cx.equals("教师"))
{
sql="select * from [jiaoshi] where gonghao='"+uid+"' and mima='"+pwd+"'";
}
if(cx.equals("学生"))
{
sql="select * from [xuesheng] where xuehao='"+uid+"' and mima='"+pwd+"'";
}
ResultSet RS_result=connDbBean.executeQuery(sql);
if(!RS_result.next())
{
out.print("");
}
else{
session.setAttribute("username",uid);
if(cx.equals("管理员"))
{
session.setAttribute("cx",RS_result.getString("cx"));
}
else
{
session.setAttribute("cx",cx);
}
response.sendRedirect("main.jsp");
}
RS_result.close();
%>
4.3.2 出卷子模块实现
出卷子模块包含三个基本功能:管理试题表,添加试题类型表,出卷管理。这些分别由teacher的Bean集成,当静态JSP页面输入产生要求,系统响应要求自动在teacher中寻找相关的类,实现功能,其运行界面如下图4,2。
实现本模块的主要代码如下所示:
已有选择题列表:
序号 |
题目 |
答案 |
章节 |
难度 |
教师 |
添加时间 |
操作 |
<%
String sql="";
sql="select * from xuanzeti where 1=1";
if(request.getParameter("bianhao")=="" ||request.getParameter("bianhao")==null )
{}
else
{
sql=sql+" and timu like '%"+request.getParameter("bianhao")+"%'";
}
sql=sql+" order by id desc";
ResultSet RS_result=connDbBean.executeQuery(sql);
String id="";
String timu="";String daan="";String zhangjie="";String nandu="";String jiaoshi="";
String addtime="";
int i=0;
while(RS_result.next()){
i=i+1;
id=RS_result.getString("id");
timu=RS_result.getString("timu");daan=RS_result.getString("daan");zha
ngjie=RS_result.getString("zhangjie");nandu=RS_result.getString("nand
u");jiaoshi=RS_result.getString("jiaoshi");
addtime=RS_result.getString("addtime");
%>
<%=i %> |
<%=timu %> | <%=daan %> |
<%=zhangjie %> |
<%=nandu %> |
<%=jiaoshi %> |
<%=addtime %> |
修改
删除 |
<%
}
%>
以上数据共<%=i %>条,
打印本页
实现本模块的主要代码如下所示:
<%
String sjbh=request.getParameter("sjbh"); String sl1=request.getParameter("sl1"); String sl2=request.getParameter("sl2"); String sl3=request.getParameter("sl3"); String sl4=request.getParameter("sl4"); String sl5=request.getParameter("sl5"); String fz1=request.getParameter("fz1"); String fz2=request.getParameter("fz2"); String fz3=request.getParameter("fz3"); String fz4=request.getParameter("fz4"); String fz5=request.getParameter("fz5"); //String sql="update kecheng set bianhao='"+bianhao+"',mingcheng='"+mingcheng+"' where id= "+id;
String sql;
String ntid;
ntid="";
sql="insert into shijuan(sjbh,fz1,fz2,fz3,fz4,fz5,jiaoshi) values('"+sjbh+"',"+fz1+","+fz2+","+fz3+","+fz4+","+fz5+",'"+request.getSession().getAttribute("username")+"')";
connDbBean.executeUpdate(sql);
sql="select top "+sl1+" id from xuanzeti order by newid()"; ResultSet RS_result=connDbBean.executeQuery(sql); while(RS_result.next()){
ntid=ntid+RS_result.getString("id")+",";
}
ntid=ntid.substring(0,ntid.length()-1);
sql="update shijuan set danxt='"+ntid+"' where sjbh='"+sjbh+"'"; connDbBean.executeUpdate(sql);
ntid="";
sql="select top "+sl2+" id from duoxuanti order by newid()"; RS_result=connDbBean.executeQuery(sql);
while(RS_result.next()){
ntid=ntid+RS_result.getString("id")+",";
}
ntid=ntid.substring(0,ntid.length()-1);
sql="update shijuan set duoxt='"+ntid+"' where sjbh='"+sjbh+"'"; connDbBean.executeUpdate(sql);
ntid="";
sql="select top "+sl3+" id from panduanti order by newid()"; RS_result=connDbBean.executeQuery(sql);
while(RS_result.next()){
ntid=ntid+RS_result.getString("id")+",";
}
ntid=ntid.substring(0,ntid.length()-1);
sql="update shijuan set pdt='"+ntid+"' where sjbh='"+sjbh+"'";connDbBean.executeUpdate(sql);
ntid="";
sql="select top "+sl4+" id from tiankongti order by newid()"; RS_result=connDbBean.executeQuery(sql);
while(RS_result.next()){
ntid=ntid+RS_result.getString("id")+",";
}
ntid=ntid.substring(0,ntid.length()-1);
sql="update shijuan set tkt='"+ntid+"' where sjbh='"+sjbh+"'"; connDbBean.executeUpdate(sql);
ntid="";
sql="select top "+sl5+" id from jiandati order by newid()"; RS_result=connDbBean.executeQuery(sql);
while(RS_result.next()){
ntid=ntid+RS_result.getString("id")+",";
}
ntid=ntid.substring(0,ntid.length()-1);
sql="update shijuan set jdt='"+ntid+"' where sjbh='"+sjbh+"'"; connDbBean.executeUpdate(sql);
out.print("");
%>
图4,2出卷子模块
4.3.3评卷子模块实现
评卷子模块包含两个基本功能:评卷(教师),查看考试成绩(学生)。这些
分别由teacher的Bean集成,当静态JSP页面输入产生要求,系统响应要求自
动在teacher中寻找相关的类,实现功能,其运行界面如下图4,3。
实现本模块的主要代码如下所示: