基于jsp(java)在线考试系统的设计和实现_第1页
基于jsp(java)在线考试系统的设计和实现_第2页
基于jsp(java)在线考试系统的设计和实现_第3页
基于jsp(java)在线考试系统的设计和实现_第4页
基于jsp(java)在线考试系统的设计和实现_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

..毕业设计〔论文基于jsp〔java在线考试系统的设计和实现[摘要]随着当今计算机技术的迅速发展,其应用已渗入到人类社会的各个领域并发挥越来越重要的作用。本试卷自动生成系统使用Data数据控件连接数据库,实现对数据库的各种操作。本系统能够自动创建试卷、修改原有试卷、浏览已生成的试卷。实现了考试出题的自动化。本试卷自动生成系统是采用当今流行的JSP语言开发而成。作为一种基于对象,可视化的编程工具软件,它提供了许多内部及外部控件:ajax、structs等,不需要编写大量代码去描述界面元素的外观和位置,而只要把预先建立的对象加到屏幕上,一点即可。它不仅可以帮我们设计出漂亮的界面,同时它提供的数据控件和数据访问对象可以轻松连接到各种格式的数据文件,从而实现对数据库的各种操作。系统使用了sql作为数据库平台,它可以用最简单的方式创建各种数据库,并且可以稳定高效的支持jsp对它的调用。关键字:数据库;试卷生成系统;JSP语言;控件Today,alongwiththetechnicalandquickdevelopmentincalculator,applicationhasseepedintothehumansocialforeachotherrealmandhasbroughtintoplaythemoreandmoreimportantfunction.Thisautomaticcreationfortextpapersystermisimportantpartofmanagesystermforcurrencytestquestions.itisanimportancewaytorealizeteachingauto-mation.Itcanrealizeautomationthatexaminationmakeoutquestions,toincreaseworkefficiency,andrealizestoseperationforeachandtest,itcanrisesimportantfunctionforincreasingtheteachingquantity.ThesystemwasbuildedwasdesignedbypopularintegrateddevelopmentVisualBasiclanguage.Asanobject-orientedvisualprogrammingsoftware,itsupportsmanycontrol,suchasdatbirdandupdown,richtextboxandsoon.Doingnotneedtheplaitwritesthecodeoflargequantitytotheexternalappearancethatdescribetheinterfacechemicalelementwithpositions.Butaslongasclickinadvanceoftheobjectaddstoholdtheacttop.Itcannotonlydesignthebeautifulinterfaceforus.Thedatathatitprovidecontrolsadataforvisittingwiththedataobjectcanthentherelaxedchainreceiveseverykindofformatdocumentatthesametime.Frombutrealizetoeverykindofoperationofthedatabase.ThesystemusedtheAccessconductandactionsdatabaseterrace.Itcancreattosetupeverykindofdatabasewiththemostsimpileway,andcanthesupportVBstabilizingefficientadjusttousetoit.Askforhelpfromthissystem.Withthisdesignteacherscouldupdatathecurrentdatabaseandcompletemosttasksinquickeractions.Accordingtoallabove,toachievetheautomaticquestionsgeneratoroftestpaper.Keyword:database;testpapergeneratesystem;JSP;control第1章绪论51.1项目背景和意义51.2研究目标61.3国内外考试系统解决方案61.4论文结构7第2章系统相关理论和技术82.1J2EE体系82.1.1J2EE概念82.1.2J2EE四层模型92.1.3J2EE的核心组件92.2MVC设计模式102.2.1MVC设计模式概念102.2.2采用MVC设计模式优势112.2.3MVC设计模式原理122.3Struts框架122.3.1Struts框架概述122.3.2Struts框架优点122.4Hibernate框架.13框架概述13ibernate框架优点142.5AJAX技术142.5.1AJAX技术概述142.5.2AJAX技术优点162.6数据库理论基础17第3章网络考试系统的分析与设计192.1系统总体目标和需要解决的问题193.2系统总体结构193.3系统总流程图193.4系统主要数据库表设计20第4章基于J2EE的网络考试系统的实现244.1系统的开发及测试环境244.2系统的关键技术的实现244.2.1Struts框架应用244.2.2数据库连接池应用264.2.3AJAX技术应用274.3系统的主要功能模块的实现284.3.1登录子模块实现284.3.2出卷子模块实现30评卷子模块实现364.4组卷算法研究设计45随机选取算法454.4.2回溯试探算法.46遗传算法474.5系统安全性的实现49第5章总结与思考505.1研究成果总结505.2研究中存在的不足50结束语52参考资料53致谢54第1章绪论1.1项目背景和意义Internet是世界上最大的计算机互联网络。所谓计算机网络,就是把分步在不同地理区域的计算机与专门外部设备用通信线路互连成一个规模大、功能强的网络系统,从而使计算机之间相传递信息,共享硬件、软件,数据信息等资源。它是现代通信技术与计算机技术相结合的产物。而Internet连接着世界各地数以千万计大大小小的电脑网络和主机,是世界上最开放的计算机网络。万维网的英文全称是WorldWideWeb,也可以写为WWW、Web或3W。它是使用超文本探索Internet的系统,最早由位于日内瓦的欧洲粒子物理实验室CERN所创建。创建者的目的是建立一种网络系统,将分布在世界各地的物理学家组织在一起,互相交流设计思想和研究成果。在使用WWW进行文件阅读时,屏幕上会出现许多不同于基色的词或词组,这就是"超级链接",超级链接是指向Web页面的统一资源定位器<URL>的对象。当用户单击一个超级链接时,该用户界面就会跳转到超级链接所指向的Web页面。URL可以看作是Web页面的地址。每个Web页面都有一个或多个URL与之相关。WWW采用与"网"状结构组织有关的资源。长久以来,国家都很重视教育,无论是在政策还是财政上都给与很大程序的倾斜。而随着社会的不断高速发展,就业的压力越来越大,所以在学校方面,如何更有效地进行考试管理,以便腾出手来进行更重要的教育工作,是一个很大的课题。而现行的考试系统,仍然是很传统的手工操作的"笔纸操作系统",全部信息由负责的老师进行纸页记录,然后进行传达保存工作,但这其中会涉及到各部门间的信息传达、信息查找等,由于每个人的字迹习惯都不一样,所以,在信息传达过程中会造成一定的失误,而这失误对于学校管理方面是很不好的。由此,重组一个新的考试管理系统,是迫在眉睫。计算机和网络技术的不断进步和提升,使人类的信息分析方式和生活方式都得到了很大的改变,而各个产业都在自己的领域中不同深度的融入了计算机及网络技术,对本行业的发展起了很大的推动作用。基于B/S模式的考试系统克服了传统交流方式时所带来的人力、物力以及时间上的浪费,同时也保证了交流过程的科学化、高效化,使管理过程方便、准确、快捷、深入人心。网络技术的迅速发展,使得人类社会突飞猛进,数据分析共享是其中一个重要的增进渠道。采用这种管理方式,一是无纸化管理,节约的造纸印刷资源不可计数;二是在管理方式及方法上有了多种选择,增加了信息的可读性和可管理性。总之,伴随着个人电脑的普及和使用电脑人口的增加,网络管理在众多的管理渠道中脱颖而出,其地位及占有量一定会逐渐增加。技术革命引发教学结构变革,网络教育的产生是教育领域中的一场革命。1.2研究目标本系统是为某某学校设计开发的一个在线考试系统,来研究基于B/S模式的在线教务管理的实现,采用的是JSP+SQL模式的电子管理平台。该管理系统有机的结合在线考试的现实情况,采取各种直观的手段,显示学生的实际情况,方便教师和管理者有针对性的制定培养计划,以便查漏补缺。此系统设计上采用三层结构、WebService技术,使之在选用平台、采用技术上具有先进性、前瞻性、扩充性,从而保证建成的系统具有良好的稳定性、可扩充性。系统设计按标准化、规范化,分层设计,构件化实现。采用软件构件化的开发方式,使系统结构分层,业务与实现分离,逻辑与数据分离;以统一的服务接口规范为核心,使用开放标准。从功能上来说,系统是比较完备的,系统以Web界面与用户交互,为用户提供信息并接受其操作,同时通过数据库管理系统来存储信息数据。系统实现了对信息数据的浏览、查询、编辑和管理等基本数据库操作,采用了模块化设计方法,根据用户的需求及程序的应用与维护的易用性,将各个部分置于不同的模块当中,方便了程序的扩展与维护,同时建立了程序功能复用的基础。1.3国内外考试系统解决方案我国互联网行业较国外起步晚,1994年中国获准进入互联网,并于同年完成所有中国互联网工作,次年5月,张树新创立瀛海威,这是中国第一家互联网服务供应商,自此之后,在一代代IT人才的推动下,中国互联网事业获得蓬勃发展。由此,中国课程网站的起步也较晚,但现在却无从得知谁是第一家课程网站了,只知道现在中国课程网站的发展十分迅速,几乎涵盖了所有包括中小学、大学及各种技能证书培训的所有课程,内容丰富而冗余,分类庞杂而紊乱,大多功能相似,内容相仿。1.4论文结构第1章引言部分,引言主要叙述课题的研究背景和意义,以及课题的研究目标。第2章主要内容是:介绍J2EE体系、MUC设计模式、Struts框架、AJAX技术及数据库方面的基础知识。第3章主要内容是:系统设计包括,系统总体设计;系统主要数据库表设计。第4章主要内容是:系统详细设计包括,系统开发关键技术,系统主要功能实现,系统安全测试。第5章主要内容是研究课题存在的问题及经验总结。最后还有结论、致谢、参考文献等等内容的介绍。第2章系统相关理论和技术2.1J2EE体系J2EE容器以两种方式支持基于构件的应用编程模型。第一,它们使许多需要一定编程技能的标准功能自动化,如事务管理和安全。第二,它们提供了对构件有用的API,如消息传递〔JavaMessageService和数据库访问〔JDBC。容器的这些特征统一了J2EE编程模型,简化了应用开发,支持构件和应用级的可移植性。J2EE概念目前,Java2平台有3个版本,它们是适用于小型设备和智能卡的Java2平台Micro版〔Java2PlatformMicroEdition,J2ME、适用于桌面系统的Java2平台标准版〔Java2PlatformStandardEdition,J2SE、适用于创建服务器应用程序和服务的Java2平台企业版〔Java2PlatformEnterpriseEdition,J2EE。

J2EE是一种利用Java2平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。J2EE技术的基础就是核心Java平台或Java2平台的标准版,J2EE不仅巩固了标准版中的许多优点,例如"编写一次、随处运行"的特性、方便存取数据库的JDBCAPI、CORBA技术以及能够在Internet应用中保护数据的安全模式等等,同时还提供了对E〔EnterpriseJavaBeans、JavaServletsAPI、JSP〔JavaServerPages以及XML技术的全面支持。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构。

J2体系结构提供中间层集成框架用来满足无需太多费用而又需要高可用性、高可靠性以及可扩展性的应用的需求。通过提供统一的开发平台,J2EE降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集成强有力支持,完全支持EnterpriseJavaBeans,有良好的向导支持打包和部署应用,添加目录支持,增强了安全机制,提高了性能。J2EE四层模型JSP页面包含四种类型元素,每一种元素在动态内容的表示中都扮演一个特殊的角色。<1>Text元素是通过标准HTML或XML格式化的内容,表示页面的静态部分。<2>Directives是JSP处理器的指令。当把JSP页面编译成可执行形式时,JSP容器处理这些指令。<3>Tags调用JavaBeans以产生动态内容或执行其它计算。<4>Scripting元素可以是declaration,scriptlet或expression.象Tags元素一样,脚本元素可以用来执行计算以产生动态内容。当标准的Tags元素没有被定义或不适用的时候,可以使用Scripting元素。J2EE的核心组件Servlet提供了产生动态页面内容的机制。可以把它们想象成服务器的Javaapplets.Servlet是用来替代和改善CGI脚本的。CGI通常是平台相关的,支持交互的能力有限。从性能上来讲,服务器每接受到一个用户请求都要装载一次CGI,消耗内存和处理周期。而Servlet是基于Java编程语言的,因此具有可移植性,灵活性,且编程较简单。Servlet在第一次初始化的时候被装载到内存中,此后就可以服务于任何用户请求,所以,Servlet比CGI具有更好的性能。和所有的J2EE构件一样,Servlet运行在由J2EE平台提供者所实现的容器中。容器管理Servlet与客户的交互,并为Servlet访问各种基于Java技术的服务提供了丰富的环境。Servlet容器实现了J2SE的所有API.因此,Servlet可以采用Java编程语言的各种技术,包括JDBC,JNDI<JavaNamingandDirectoryInterface>,RMI,JavaBeans等。容器也允许Servlet通过session获取特定客户的信息,解决了由于HTTP协议的无状态性而引起的客户信息的不透明性问题。图1是一个典型的Servlet与Client的交互。一个客户通过HTTP向一个Web服务器发出一个请求。在Web服务器处理该请求时,将它传递给Servlet容器,由Servlet容器将请求传递给合适的Servlet.Servlet有一个请求对象,它提供给Servlet关于请求的信息,包括谁调用了该Servlet,传送了什么样的表单参数,以及关于HTTP请求的其它信息。Servlet通过一个响应对象向客户反馈数据。在请求处理期间的任何时候,Servlet能够利用一个上下文对象将发生的事件记入日志,获得资源的URL引用,设置和存储在同一上下文的其它Servlet能够使用的属性。同样,Servlet也能访问向它提供客户状态信息的一个session对象。2.2MVC设计模式MVC设计模式概念MVC是一种目前广泛流行的软件设计模式,早在70年代,IBM就推出了Sanfronscisico项目计划,其实就是MVC设计模式的研究。近来,随着J2EE的成熟,它正在成为在J2EE平台上推荐的一种设计模型,也是广大Java开发者非常感兴趣的设计模型。MVC模式也逐渐在PHP和ColdFusion开发者中运用,并有增长趋势。随着网络应用的快速增加,MVC模式对于Web应用的开发无疑是一种非常先进的设计思想,无论你选择哪种语言,无论应用多复杂,它都能为你理解分析应用模型时提供最基本的分析方法,为你构造产品提供清晰的设计框架,为你的软件工程提供规范的依据。MVC设计思想MVC英文即Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层——模型层、视图层、控制层。采用MVC设计模式优势MVC的优点:大部分用过程语言比如ASP、PHP开发出来的Web应用,初始的开发模板就是混合层的数据编程。例如,直接向数据库发送请求并用HTML显示,开发速度往往比较快,但由于数据页面的分离不是很直接,因而很难体现出业务模型的样子或者模型的重用性。产品设计弹性力度很小,很难满足用户的变化性需求。MVC要求对应用分层,虽然要花费额外的工作,但产品的结构清晰,产品的应用通过模型可以得到更好地体现。首先,最重要的是应该有多个视图对应一个模型的能力。在目前用户需求的快速变化下,可能有多种方式访问应用的要求。例如,订单模型可能有本系统的订单,也有网上订单,或者其他系统的订单,但对于订单的处理都是一样,也就是说订单的处理是一致的。按MVC设计模式,一个订单模型以及多个视图即可解决问题。这样减少了代码的复制,即减少了代码的维护量,一旦模型发生改变,也易于维护。其次,由于模型返回的数据不带任何显示格式,因而这些模型也可直接应用于接口的使用。再次,由于一个应用被分离为三层,因此有时改变其中的一层就能满足应用的改变。一个应用的业务流程或者业务规则的改变只需改动MVC的模型层。控制层的概念也很有效,由于它把不同的模型和不同的视图组合在一起完成不同的请求,因此,控制层可以说是包含了用户请求权限的概念。最后,它还有利于软件工程化管理。由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化产生管理程序代码。综合上述,MVC是构筑软件非常好的基本模式,至少将业务处理与显示分离,强迫将应用分为模型、视图以及控制层,使得你会认真考虑应用的额外复杂性,把这些想法融进到架构中,增加了应用的可拓展性。如果能把握到这一点,MVC模式会使得你的应用更加强壮,更加有弹性,更加个性化。MVC设计模式原理图2-3MVC设计模式2.3Struts框架Struts框架概述Struts是目前使用最广的MVC架构,它可以在Web应用程序中使用JSP和Servlet。Struts解决了用JSP或Servlet开发Web应用程序时遇到的问题。大多数情况下,可以使用Servlet生成HTML页面,并传送到客户端,但这样所有的代码都需用Servlet编写,代码比较麻烦,而且维护起来很困难;另外,使用JSP来生成HTML页面时,业务逻辑和显示逻辑混杂在一起,很多Java代码和HTML混在一起,代码维护量大,开发效率低。Struts在Java服务器端实现了MVC设计模式,在创建Web应用程序时能容易的分离表示层和业务数据层,这样就解决了JSP所带来的问题。Struts框架优点Struts框架是目前最成熟、应用最广泛的开放源代码JavaWebMVC框架,该框架为JavaWeb应用系统的开发者提供了一个结构清晰、功能强大、成本低廉、容易扩展及方便维护的平台。Struts基于MVC设计模式,使用servlet和JSPAPI建立,可以用来构建复杂的Web应用。它允许我们分解一个应用程序的业务逻辑、控制逻辑和表现逻辑的代码,使它的重用性和维护性更好。2.4Hibernate框架.Hibernate框架概述Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用E的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语句两种表达方式。Hibernate框架优点一、Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和AppServer,和E没有什么必然的联系。Hibernate可以用在任何JDBC可以使用的场合,例如Java应用程序的数据库访问代码,DAO接口的实现类,甚至可以是BMP里面的访问数据库的代码。从这个意义上来说,Hibernate和EB不是一个范畴的东西,也不存在非此即彼的关系。二、Hibernate是一个和JDBC密切关联的框架,所以Hibernate的兼容性和JDBC驱动,和数据库都有一定的关系,但是和使用它的Java程序,和AppServer没有任何关系,也不存在兼容性问题。三、Hibernate不能用来直接和EntityBean做对比,只有放在整个J2EE项目的框架中才能比较。并且即使是放在软件整体框架中来看,Hibernate也是做为JDBC的替代者出现的,而不是EntityBean的替代者出现的。2.5AJAX技术2.5.1AJAX技术概述AJAX全称为"AsynchronousJavaScriptandXML"〔异步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.2AJAX技术优点传统的web应用允许用户填写表单<form>,当提交表单时就向web服务器发送一个请求。服务器接收并处理传来的表单,然後返回一个新的网页。这个做法浪费了许多带宽,因为在前後两个页面中的大部分HTML代码往往是相同的。由于每次应用的交互都需要向服务器发送请求,应用的响应时间就依赖于服务器的响应时间。这导致了用户界面的响应比本地应用慢得多。与此不同,AJAX应用可以仅向服务器发送并取回必需的数据,它使用SOAP或其它一些基于XML的webservice接口,并在客户端采用JavaScript处理来自服务器的响应。因为在服务器和浏览器之间交换的数据大量减少,结果我们就能看到响应更快的应用。同时很多的处理工作可以在发出请求的客户端机器上完成,所以Web服务器的处理时间也减少了。使用Ajax的最大优点,就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变过的信息。Ajax不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。就像DHTML应用程序那样,Ajax应用程序必须在众多不同的浏览器和平台上经过严格的测试。随着Ajax的成熟,一些简化Ajax使用方法的程序库也相继问世。同样,也出现了另一种辅助程序设计的技术,为那些不支持JavaScript的用户提供替代功能。对应用Ajax最主要的批评就是,它可能破坏浏览器后退按钮的正常行为。在动态更新页面的情况下,用户无法回到前一个页面状态,这是因为浏览器仅能记下历史记录中的静态页面。一个被完整读入的页面与一个已经被动态修改过的页面之间的差别非常微妙;用户通常都希望单击后退按钮,就能够取消他们的前一次操作,但是在Ajax应用程序中,却无法这样做。不过开发者已想出了种种办法来解决这个问题,当中大多数都是在用户单击后退按钮访问历史记录时,通过建立或使用一个隐藏的IFRAME来重现页面上的变更。〔例如,当用户在GoogleMaps中单击后退时,它在一个隐藏的IFRAME中进行搜索,然后将搜索结果反映到Ajax元素上,以便将应用程序状态恢复到当时的状态。一个相关的观点认为,使用动态页面更新使得用户难于将某个特定的状态保存到收藏夹中。该问题的解决方案也已出现,大部分都使用URL片断标识符〔通常被称为锚点,即URL中#后面的部分来保持跟踪,允许用户回到指定的某个应用程序状态。〔许多浏览器允许JavaScript动态更新锚点,这使得Ajax应用程序能够在更新显示内容的同时更新锚点。这些解决方案也同时解决了许多关于不支持后退按钮的争论。进行Ajax开发时,网络延迟——即用户发出请求到服务器发出响应之间的间隔——需要慎重考虑。不给予用户明确的回应,没有恰当的预读数据,或者对XMLHttpRequest的不恰当处理,都会使用户感到延迟,这是用户不欲看到的,也是他们无法理解的。通常的解决方案是,使用一个可视化的组件来告诉用户系统正在进行后台操作并且正在读取数据和内容。2.6数据库理论基础数据库的定义:定义1当人们从不同的角度来描述这一概念时就有不同的定义<当然是描述性的>。例如,称数据库是一个"记录保存系统"<该定义强调了数据库是若干记录的集合>。又如称数据库是"人们为解决特定的任务,以一定的组织方式存储在一起的相关的数据的集合"<该定义侧重于数据的组织>。更有甚者称数据库是"一个数据仓库"。当然,这种说法虽然形象,但并不严谨。严格地说,数据库是"按照数据结构来组织、存储和管理数据的仓库"。在经济管理的日常工作中,常常需要把某些相关的数据放进这样的"仓库",并根据管理的需要进行相应的处理。例如,企业或事业单位的人事部门常常要把本单位职工的基本情况<职工号、姓名、年龄、性别、籍贯、工资、简历等>存放在表中,这张表就可以看成是一个数据库。有了这个"数据仓库"我们就可以根据需要随时查询某职工的基本情况,也可以查询工资在某个范围内的职工人数等等。这些工作如果都能在计算机上自动进行,那我们的人事管理就可以达到极高的水平。此外,在财务管理、仓库管理、生产管理中也需要建立众多的这种"数据库",使其可以利用计算机实现财务、仓库、生产的自动化管理。J.Martin给数据库下了一个比较完整的定义:数据库是存储在一起的相关数据的集合,这些数据是结构化的,无有害的或不必要的冗余,并为多种应用服务;数据的存储独立于使用它的程序;对数据库插入新数据,修改和检索原有数据均能按一种公用的和可控制的方式进行。当某个系统中存在结构上完全分开的若干个数据库时,则该系统包含一个"数据库集合"。定义2数据库是依照某种数据模型组织起来并存放二级存储器中的数据集合。这种数据集合具有如下特点:尽可能不重复,以最优方式为某个特定组织的多种应用服务,其数据结构独立于使用它的应用程序,对数据的增、删、改和检索由统一软件进行管理和控制。从发展的历史看,数据库是数据管理的高级阶段,它是由文件管理系统发展起来的。定义3<伯尔尼公约议定书专家委员会的观点>所有的信息<数据事实等>的编纂物,不论其是以印刷形式,计算机存储单元形式,还是其它形式存在,都应视为"数据库"。数字化内容选择的原因有很多,概括起来主要有:<1>存储空间的原因。数字化的产品是通过网络被广大用户存取利用,而大家都知道数字化产品是存放在磁盘阵列上的,磁盘阵列由服务器来管理,磁盘空间是有限的,服务器的能力也是有限的,不可能无限量地存入数字资源,这就需要我们对文献资源数字化内容进行选择。<2>解决数字化生产高成本和图书馆经费有限性之间矛盾的需要。几乎没有图书馆有充足的资源来对整个馆藏进行数字化,内容选择不可避免。<3>数字资源管理的需要。技术的快速发展使数字化项目所生成的数字资源的生命周期越来越短,投入巨资进行数字迁移是延长数字资源生命的1个重要途径,昂贵的维护成本就必须考虑数字化的内容选择。数据库发展史数据库技术从诞生到现在,在不到半个世纪的时间里,形成了坚实的理论基础、成熟的商业产品和广泛的应用领域,吸引越来越多的研究者加入。数据库的诞生和发展给计算机信息管理带来了一场巨大的革命。第3章网络考试系统的分析与设计2.1系统总体目标和需要解决的问题本在线考试系统的总体目标,是应用以上技术开发一个能够让教师、学生及系统管理员三种身份的人同时在一个系统中进行在线考试功能的系统,以最简便的方式尽量真实地模拟现实教学过程中的考试过程,同时又要做到操作简便信息冗余度小等要求。本系统在开发过程中存在的问题有如下几个:1、如何利用上一章中介绍的技术进行系统的开发,并保证系统能正常稳定地运行;2、如何在一个系统中使得系统管理员、教师及学生三种完全不同的用户能够互不干扰地进行操作,而后台数据库不受其影响;3、如何保证系统的安全。3.2系统总体结构根据系统需求分析,可得出本系统的总体结构设计图:在线考试系统在线考试系统管理员子系统教师子系统学生子系统系统用户管理教师用户管理学生用户管理章节管理试题管理出卷管理个人资料管理参与考试个人资料管理查看成绩图3.1在线考试系统总体结构图3.3系统总流程图根据系统总体结构图,不难分析出其系统总体流程图:开始开始登录窗口判断身份管理员教师学生添加新管理员管理管理员删除管理员修改密码添加教师删除教师添加学生删除学生添加新章节管理章节添加试题管理试题手动/自动出卷查看是否出卷查看个人信息修改密码参与答题查看分数修改密码结束图3.2在线考试系统总体流程图3.4系统主要数据库表设计数据库总设计的ER图如图3-2所示。在线考试系统采用MSSQLServer作为后台的数据库。我们建立了一个名为jspzxks的数据库用于存放放系统中的表,各表的名称和功能如表3-1所示。管理员管理员用户名密码权限注册时间教师用户名密码姓名工号任教科目课程名称教师班级试卷科目题型班级考试时间学生学号姓名班级联系成绩课程学生教师管理1N教授11产生1N管理1N考试11拥有1图3.3在线考试系统整体E-R图表3-1BookShopDB数据库中的表及其功能说明表名功能说明allusers管理员信息表jiaoshi教师信息表xuesheng学生信息表kecheng课程信息表Shijuan试卷信息表chengji成绩信息表Zhangjie章节信息表下面将详细介绍我所设计模块表的数据结构。表3-2allusers表的结构表3-3chengji表的结构表3-4shijuan表的结构表3-5xuanzeti表的结构表3-6xuesheng表的结构表3-7jiaoshi表的结构表3-8kecheng表的结构第4章基于J2EE的网络考试系统的实现4.1系统的开发及测试环境本在线考试系统采用的技术为基于J2EE平台,使用AJAX技术搭建系统,数据库应用SQL2008系统。4.2系统的关键技术的实现Struts框架应用随着JSP与Servlet技术大量应用于以Web为基础之应用程序,Java开发人员群体认为应以较佳之模式以提升Web应用程序之可维护性与重复使用性。早期JSP规格书中曾列举两种可行之JSP应用架构,分别为Model1与Model2。struts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的web应用程序的开发。1.Struts压缩包内容文件夹jakarta-struts-包含两个目录,lib和webapps。在lib目录中有使用struts创建应用程序是所需的文件:文件描述jdbc2_0-stdext.jar包含JDBC2.0OptionalPackageAPI类。如果我们要使用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.warStruts很多特性的示范Struts-exercisetaglib.war主要用于对自定义标签库进行增加而使用的测试页,但也可以示范如何使用struts标记Struts-template.war包含struts模板标记的介绍和范例Struts-upload.war一个简单的例子,示范如何使用struts框架上传文件。2.Struts体系结构让我们从MVC角度观察struts框架中的组件框架中三个部分:模型,视窗和控制器。◆模型在struts框架中,模型分为两个部分:系统的内部状态;可以改变状态的操作〔事务逻辑。内部状态通常由一组ActinFormJavaBean表示。根据设计或应用程序复杂度的不同,这些Bean可以是自包含的并具有持续的状态,或只在需要时才获得数据〔从某个数据库。大型应用程序通常在方法内部封装事务逻辑〔操作,这些方法可以被拥有状态信息的bean调用。比如购物车bean,它拥有用户购买商品的信息,可能还有checkOut<>方法用来检查用户的信用卡,并向仓库发定货信息。小型程序中,操作可能会被内嵌在Action类,它是struts框架中控制器角色的一部分。当逻辑简单时这个方法很适合。建议用户将事务逻辑〔要做什么与Action类所扮演的角色〔决定做什么分开。◆视窗由JSP建立,struts包含扩展自定义标签库,可以简化创建完全国际化用户界面的过程。◆控制器struts中,基本的控制器组件是ActionServlet类中的实例servelt,实际使用的servlet在配置文件中由一组映射〔由ActionMapping类进行描述进行定义。3.Struts框架中的组件<由于ROSE工具还未能下载,只能找来这幅图,它说明了一定问题,特别是ActionErrors,但它并没有将ActionMapping,JSP和TagLibrary包含进来,有时间作完替换>框架中所使用的组件:ActionServlet控制器ActionClass包含事务逻辑ActionForm显示模块数据ActionMapping帮助控制器将请求映射到操作ActionForward用来指示操作转移的对象ActionError用来存储和回收错误Struts标记库可以减轻开发显示层次的工作数据库连接池应用数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最XX接数,当应用程序向连接池请求的连接数超过最XX接数量时,这些请求将被加入到等待队列中。数据库连接池的最小连接数和最XX接数的设置要考虑到下列几个因素:1>最小连接数是连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费;2>最XX接数是连接池能申请的最XX接数,如果数据库连接请求超过此数,后面的数据库连接请求将被加入到等待队列中,这会影响之后的数据库操作。3>如果最小连接数与最XX接数相差太大,那么最先的连接请求将会获利,之后超过最小连接数量的连接请求等价于建立一个新的数据库连接。不过,这些大于最小连接数的数据库连接在使用完不会马上被释放,它将被放到连接池中等待重复使用或是空闲超时后被释放。4.2.3AJAX技术应用Ajax在本质上是一个浏览器端的技术,首先面临无可避免的第一个问题即是浏览器的兼容性问题。各家浏览器对于JavaScript/DOM/CSS的支持总有部分不太相同或是有Bug,甚至同一浏览器的各个版本间对于JavaScript/DOM/CSS的支持也有可能部分不一样。这导致程序员在写Ajax应用时花大部分的时间在调试浏览器的兼容性而非在应用程序本身。因此,目前大部分的Ajax链接库或开发框架大多以js链接库的形式存在,以定义更高阶的JavaScriptAPI、JavaScript对象〔模板、或者JavaScriptWidgets来解决此问题。如prototype.js。Ajax技术之主要目的在于局部交换客户端及服务器之间的数据。如同传统之主从架构,无可避免的会有部分的业务逻辑会实现在客户端,或部分在客户端部分在服务器。由于业务逻辑可能分散在客户端及服务器,且以不同之程序语言实现,这导致Ajax应用程序极难维护。如有用户接口或业务逻辑之更动需求,再加上前一个JavaScript/DOM/CSS之兼容性问题,Ajax应用往往变成程序员的梦魇。针对业务逻辑分散的问题,Ajax开发框架大致可分为两类:将业务逻辑及表现层放在浏览器,数据层放在服务器:因为所有的程序以JavaScript执行在客户端,只有需要数据时才向服务器要求服务,此法又称为胖客户端〔fatclient架构。服务器在此架构下通常仅用于提供及储存数据。此法的好处在于程序员可以充分利用JavaScript搭配业务逻辑来做出特殊的用户接口,以符合终端用户的要求。但是问题也不少,主因在第一,JavaScript语言本身之能力可能不足以处理复杂的业务逻辑。第二,JavaScript的执行效能一向不好。第三,JavaScript访问服务器数据,仍需适当的服务器端程序之配合。第四,浏览器兼容性的问题又出现。有些Ajax开发框架如DWR企图以自动生成JavaScript之方式来避免兼容的问题,并开立通道使得JavaScript可以直接调用服务器端的Java程序来简化数据的访问。但是前述第一及第二两个问题仍然存在,程序员必须费相当的力气才能达到应用程序之规格要求,或可能根本无法达到要求。将表现层[2]、业务逻辑、及数据层放在服务器,浏览器仅有用户接口引擎〔UserInterfaceengine;此法又称为瘦客户端〔thinclient架构,或中心服务器〔server-centric架构。浏览器的用户接口引擎仅用于反映服务器的表现层以及传达用户的输入回到服务器的表现层。由浏览器所触发之事件亦送回服务器处理,根据业务逻辑来更新表现层,然后反映回浏览器。因为所有应用程序完全在服务器执行,数据及表现层皆可直接访问,程序员只需使用服务器端相对较成熟之程序语言〔如Java语言即可,不需再学习JavaScript/DOM/CSS,在开发应用程序时相对容易。缺点在于用户接口引擎以及表现层通常以标准组件的形式存在,如需要特殊组件〔用户接口时,往往须待原框架之开发者提供,缓不济急。如开源码Ajax开发框架ZK目前支持XUL及XHTML组件,尚无XAML之支持。Ajax是以异步的方式向服务器提交需求。对服务器而言,其与传统的提交窗体需求并无不同,而且由于是以异步之方式提交,如果同时有多个Ajax需求及窗体提交需求,将无法保证哪一个需求先获得服务器的响应。这会造成应用程序典型的多进程〔process或多线程〔thread的竞争〔racing问题。程序员因此必须自行处理或在JavaScript里面动手脚以避免这类竞争问题的发生〔如Ajax需求未响应之前,先disable送出按钮,这又不必要的增加了程序员的负担。目前已知有自动处理此问题之开发框架似乎只有ZK。4.3系统的主要功能模块的实现登录子模块实现为了检验用户是否是系统的合法用户,所以需要用户输入用户名和密码来核对用户的合法性。用户的登录模块就是要完成这样的一个功能。该模块需要用到admin这个Bean,需要设计一个表单让用户输入用户名和密码。登录界面是整个系统第一个与用户见面的,所以登录界面的美观是很重要的,这里我设计背景的修饰。系统登录设计界面如图4-1。图4-1系统登录界面根据用户输入信息不同系统调用admin<Bean>进入管理页面〔管理员,教师,学生。实现本模块的主要代码如下所示:<%Stringuid=request.getParameter<"username">;Stringpwd=request.getParameter<"pwd">;Stringsql="";Stringcx=newString<request.getParameter<"cx">.getBytes<"8859_1">>;if<cx.equals<"管理员">>{ sql="select*from[allusers]whereusername='"+uid+"'andpwd='"+pwd+"'";}if<cx.equals<"教师">>{ sql="select*from[jiaoshi]wheregonghao='"+uid+"'andmima='"+pwd+"'";}if<cx.equals<"学生">>{ sql="select*from[xuesheng]wherexuehao='"+uid+"'andmima='"+pwd+"'";}ResultSetRS_result=connDbBean.executeQuery<sql>;if<!RS_result.next<>>{ out.print<"<script>alert<'你输入的用户不存在或密码错误,请重新登录!'>;window.history.go<-1>;</script>">; }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<>;%>出卷子模块实现出卷子模块包含三个基本功能:管理试题表,添加试题类型表,出卷管理。这些分别由teacher的Bean集成,当静态JSP页面输入产生要求,系统响应要求自动在teacher中寻找相关的类,实现功能,其运行界面如下图4-2。实现本模块的主要代码如下所示:<p>已有选择题列表:</p><formname="form1"id="form1"method="post"action="xuanzeti_list.jsp">搜索:题目:<inputname="bianhao"type="text"id="bianhao"/><inputtype="submit"name="Submit"value="查找"/></form><tablewidth="100%"border="1"align="center"cellpadding="3"cellspacing="1"bordercolor="#00FFFF"style="border-collapse:collapse"><tr><tdwidth="5%"bgcolor="A4B6D7">序号</td><tdwidth="35%"bgcolor='#A4B6D7'>题目</td><tdwidth="6%"align="center"bgcolor='#A4B6D7'>答案</td><tdwidth="9%"align="center"bgcolor='#A4B6D7'>章节</td><tdwidth="6%"align="center"bgcolor='#A4B6D7'>难度</td><tdwidth="11%"align="center"bgcolor='#A4B6D7'>教师</td><tdwidth="19%"align="center"bgcolor="A4B6D7">添加时间</td><tdwidth="9%"align="center"bgcolor="A4B6D7">操作</td></tr><%Stringsql="";sql="select*fromxuanzetiwhere1=1";if<request.getParameter<"bianhao">==""||request.getParameter<"bianhao">==null>{}else{ sql=sql+"andtimulike'%"+request.getParameter<"bianhao">+"%'";}sql=sql+"orderbyiddesc";ResultSetRS_result=connDbBean.executeQuery<sql>;Stringid="";Stringtimu="";Stringdaan="";Stringzhangjie="";Stringnandu="";Stringjiaoshi="";Stringaddtime="";inti=0;while<RS_result.next<>>{i=i+1;id=RS_result.getString<"id">;timu=RS_result.getString<"timu">;daan=RS_result.getString<"daan">;zhangjie=RS_result.getString<"zhangjie">;nandu=RS_result.getString<"nandu">;jiaoshi=RS_result.getString<"jiaoshi">;addtime=RS_result.getString<"addtime">;%><tr><td><%=i%></td><td><%=timu%></td><tdalign="center"><%=daan%></td><tdalign="center"><%=zhangjie%></td><tdalign="center"><%=nandu%></td><tdalign="center"><%=jiaoshi%></td><td><%=addtime%></td><tdalign="center"><ahref="xuanzeti_updt.jsp?id=<%=id%>">修改</a><ahref="del.jsp?id=<%=id%>&tablename=xuanzeti"onclick="returnconfirm<'真的要删除?'>">删除</a></td></tr> <%}%></table><br>以上数据共<%=i%>条,<astyle="cursor:hand"onclick="javascript:window.print<>;">打印本页</a>实现本模块的主要代码如下所示:<%Stringsh=request.getParameter<"sh">;Stringsl1=request.getParameter<"sl1">;Stringsl2=request.getParameter<"sl2">;Stringsl3=request.getParameter<"sl3">;Stringsl4=request.getParameter<"sl4">;Stringsl5=request.getParameter<"sl5">;Stringfz1=request.getParameter<"fz1">;Stringfz2=request.getParameter<"fz2">;Stringfz3=request.getParameter<"fz3">;Stringfz4=request.getParameter<"fz4">;Stringfz5=request.getParameter<"fz5">;//Stringsql="updatekechengsetbianhao='"+bianhao+"',mingcheng='"+mingcheng+"'whereid="+id;Stringsql;Stringntid;ntid="";sql="insertintoshijuan<sh,fz1,fz2,fz3,fz4,fz5,jiaoshi>values<'"+sh+"',"+fz1+","+fz2+","+fz3+","+fz4+","+fz5+",'"+request.getSession<>.getAttribute<"username">+"'>";connDbBean.executeUpdate<sql>;sql="selecttop"+sl1+"idfromxuanzetiorderbynewid<>";ResultSetRS_result=connDbBean.executeQuery<sql>;while<RS_result.next<>>{ntid=ntid+RS_result.getString<"id">+",";}ntid=ntid.substring<0,ntid.length<>-1>;sql="updateshijuansetdanxt='"+ntid+"'wheresh='"+sh+"'";connDbBean.executeUpdate<sql>;ntid="";sql="selecttop"+sl2+"idfromduoxuantiorderbynewid<>";RS_result=connDbBean.executeQuery<sql>;while<RS_result.next<>>{ntid=ntid+RS_result.getString<"id">+",";}ntid=ntid.substring<0,ntid.length<>-1>;sql="updateshijuansetduoxt='"+ntid+"'wheresh='"+sh+"'";connDbBean.executeUpdate<sql>;ntid="";sql="selecttop"+sl3+"idfrompanduantiorderbynewid<>";RS_result=connDbBean.executeQuery<sql>;while<RS_result.next<>>{ntid=ntid+RS_result.getString<"id">+",";}ntid=ntid.substring<0,ntid.length<>-1>;sql="updateshijuansetpdt='"+ntid+"'wheresh='"+sh+"'";connDbBean.executeUpdate<sql>;ntid="";sql="selecttop"+sl4+"idfromtiankongtiorderbynewid<>";RS_result=connDbBean.executeQuery<sql>;while<RS_result.next<>>{ntid=ntid+RS_result.getString<"id">+",";}ntid=ntid.substring<0,ntid.length<>-1>;sql="updateshijuansettkt='"+ntid+"'wheresh='"+sh+"'";connDbBean.executeUpdate<sql>;ntid="";sql="selecttop"+sl5+"idfromjiandatiorderbynewid<>";RS_result=connDbBean.executeQuery<sql>;while<RS_result.next<>>{ntid=n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论