基于web的计算机网络课程自动答疑系统_第1页
基于web的计算机网络课程自动答疑系统_第2页
基于web的计算机网络课程自动答疑系统_第3页
基于web的计算机网络课程自动答疑系统_第4页
基于web的计算机网络课程自动答疑系统_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

摘要目前随着INTERNET的广泛使用,网络教学系统被越来越多的应用在教学过程中。越来越多学校都建立了网络答疑系统,通过这样的系统,学生可以在异地访问教学资源,不受时间的限制进行学习。网络课程答疑系统是网络教育系统的一个重要组成部分,学生可以通过这个系统向老师和系统寻求帮助,获得问题的解答。本次毕业设计的题目就是设计并且实现一个基于WEB的网络课程答疑系统,为学生添加在网上远程学习交流的机会和空间。本系统主要以COREJAVA为主,采用B/S结构,底层数据库选用MYSQL,数据访问层采用JDBC,HIBERNATE,页面模板采用JSP,WEB框架设计模式采用STRUTSMVC模式,IDE工具采用MYECLIPSE,服务器采用TOMCAT;该系统的实现可以提高学生学习的效率,使学生更好地享受WEB服务给生活带来的便捷。本文首先介绍了STRUTES,HIBERNATE和JSP的相关知识。详细阐述了系统所要完成的功能和开发的过程,重点说明了系统设计过程、关键技术和关键词匹配算法。关键词STRUTS,HIBERNATE,JSP,关键词匹配算法,MVC模式ABSTRACTWITHTHECURRENTWIDESPREADUSEOFTHEINTERNET,NETWORKSYSTEMSOFTEACHINGAREMOREANDMOREAPPLICATIONSINTHETEACHINGPROCESSMOREANDMORECOLLEAGEHAVASETUPNEWTWORKSYSTEMOFTEACHING,STUDENTCANVISITTHESOURCEOFEDUCATINGANDSTUDYWITHOUTTHETROUBLEOFTIMEANDSPACEBYUSINGTHISSYSTEMNETWORKAUTOMATICQUESTION2研究了相关文献中关于关键字匹配算法方面的的内容3学习COREJAVA等各种技术4制定了基于WEB的网络课程答疑系统的总体设计方案5设计了本系统的各模块的功能和实现细则6设计并实现了基于关键字拆分的匹配算法7设计了底层数据库的实现本论文主要论述了管理子系统以及匹配算法的详细设计过程。2系统设计中各种技术的介绍21核心JAVA介绍在经历了以大型机为代表的集中计算模式和以PC机为代表的分散计算模式之后,互联网的出现使得计算模式进入了网络计算时代。网络计算模式的一个特点是计算机是异构的,即计算机的类型和操作系统是不一样的,例如SUN工作站的硬件是SPARC体系,软件是UNIX中的SOLARIS操作系统,而PC机的硬件是INTEL体系,操作系统是WINDOWS或者是LINUX,因此相应的编程语言基本上只是适用于单机系统,例如COBOL、FORTRAN、C、C等等;网络计算模式的另一个特点是代码可以通过网络在各种计算机上进行迁移,这就迫切需要一种跨平台的编程语言,使得用它编写的程序能够在网络中的各种计算机上能够正常运行,JAVA就是在这种需求下应运而生的。正是因为JAVA语言符合了互联网时代的发展要求,才使它获得了巨大的成功。俗话说“有心栽花花不成,无心插柳柳成荫“。SUN公司绝没想到本想用于消费电子产品开发的编程语言却率先在网络中得到了广泛应用,但是也可以说是“东方不亮西方亮“,正是因为JAVA语言在设计目标上的正确性使得JAVA语言“是金字总会发光的“。C语言是面向过程的语言,也是使用率非常高的语言;而面向对象的思想引入到编程语言之后,C语言就被改造成为面向对象的C语言,得到了广泛的应用。但是C语言必须兼容C语言,因此C语言是面向过程和面向对象混合的语言。JAVA语言产生于C语言之后,是完全的面向对象的编程语言,充分吸取了C语言的优点,采用了程序员所熟悉的C和C语言的许多语法,同时又去掉了C语言中指针、内存申请和释放等影响程序健壮性的部分,可以说JAVA语言是站在C语言这个“巨人的肩膀上“前进的。JAVA语言的一个目标是跨平台,因此采用了解释执行而不是编译执行的运行环境,在执行过程中根据所在的不同的硬件平台把程序解释为当前的机器码,实现跨平台运行。而动态下载程序代码的机制完全是为了适应网络计算的特点,程序可以根据需要把代码实时的从服务器中下载过来执行,在此之前还没有任何一种语言能够支持这一点。综合上述,JAVA的生命力体现在如下方面1JAVA产生与流行是INTERNET发展的客观要求。2是一门各方面性能都很好的编程语言,它的基本特点是简单,面向对象,分布式,解释的,健壮的,完全的,结构中立的,可移植的,性能很优异的,多线程的,动态的,适合的INTERNET环境上开发应用系统。3JAVA可以制作大部分网络应用程序系统,而且与如今流行的WWW浏览器结合很好。4JAVA不仅仅是一种各方,更重要的是一种区别于传统系统,遵守“网络就是计算机“信条的平台技术。JAVA平台将面向对象系统扩展成包括程序和数据的网络计算机NC,而这个平台的核心就是JAVA虚拟机,许多使JAVA成为万能开发平台的属性都源于JAVA虚拟机的概念和实现。221JAVA面向对象的思想。JAVA是纯面向对象编程,面向对象的三大原则封装,继承,多态。下面对这三大原则的介绍封装封装是一种把代码和代码所操作的数据捆绑在一起,使这两者不受外界干扰和误用的机制。封装可被理解为一种用做保护的包装器,以防止代码和数据被包装器外部所定义的其他代码任意访问。对包装器内部代码与数据的访问通过一个明确定义的接口来控制。封装代码的好处是每个人都知道怎样访问代码,进而无需考虑实现细节就能直接使用它,同时不用担心不可预料的副作用。在JAVA中,最基本的封装单元是类,一个类定义着将由一组对象所共享的行为数据和代码。一个类的每个对象均包含它所定义的结构与行为,这些对象就好象是一个模子铸造出来的。所以对象也叫做类的实例。在定义一个类时,需要指定构成该类的代码与数据。特别是,类所定义的对象叫做成员变量或实例变量。操作数据的代码叫做成员方法。方法定义怎样使用成员变量,这意味着类的行为和接口要由操作实例数据的方法来定义。由于类的用途是封装复杂性,所以类的内部有隐藏实现复杂性的机制。所以JAVA中提供了私有和公有的访问模式,类的公有接口代表外部的用户应该知道或可以知道的每件东西。私有的方法数据只能通过该类的成员代码来访问。这就可以确保不会发生不希望的事情。继承继承是指一个对象从另一个对象中获得属性的过程。是面向对象程序设计的三大原则之二,它支持按层次分类的概念。例如,波斯猫是猫的一种,猫又是哺乳动物的一种,哺乳动物又是动物的一种。如果不使用层次的概念,每个对象需要明确定义各自的全部特征。通过层次分类方式,一个对象只需要在它的类中定义是它成为唯一的各个属性,然后从父类中继承它的通用属性。因此,正是由于继承机制,才使得一个对象可以成为一个通用类的一个特定实例。一个深度继承的子类将继承它在类层次中的每个祖先的所有属性。继承与封装可以互相作用。如果一个给定的类封装了某些属性,它的任何子类将会含有同样得属性,另加各个子类所有得属性。这是面向对象程序在复杂性上呈线性而非几何增长的一个重要概念。新的子类继承其所有祖先的所有属性。子类和系统中的其他代码不会产生无法预料的交互作用。多态多态是指一个方法只能有一个名称,但可以有许多形态,也就是程序中可以定义多个同名的方法,用“一个接口,多个方法“来描述。可以通过方法的参数和类型引用。22持久层的HIBERNATE的介绍HIBERNATE是一个开放源代码的对象关系映射框架,它对JDBC进行了轻量级的对象封装,使JAVA程序员可以随心所欲的使用对象编程思维来操纵数据库。它不仅提供了从JAVA类到数据表之间的映射,也提供了数据查询和恢复机制。相对于使用JDBC和SQL来手工操作数据库,HIBERNATE可以大大减少操作数据库的工作量。另外HIBERNATE可以利用代理模式来简化载入类的过程,这将大大减少利用HIBERNATEQL从数据库提取数据的代码的编写量,从而节约开发时间和开发成本HIBERNATE可以和多种WEB服务器或者应用服务器良好集成,如今已经支持几乎所有的流行的数据库服务器。HIBERNATE具有很大的灵活性,但同时它的体系结构比较复杂,提供了好几种不同的运行方式。在轻型体系中,应用程序提供JDBC连接,并且自行管理事务,这种方式使用了HIBERNATE的一个最小子集;在全面解决体系中,对于应用程序来说,所有底层的JDBC/JTAAPI都被抽象了,HIBERNATE会替你照管所有的细节。在本次系统设计中所有的DAO都应用了HIBERNATE技术,大部分利用HQL语言对数据库进行增删查改,其中只有小部分使用了SQL进行查询,相比SQL语言而言,HQL使人很直观的了解所进行的操作,更为对数据库底层不熟悉的人提供了极大的方便。23业务层的JAVABEAN的介绍JAVABEAN是一种JAVA语言写成的可重用组件。为写成JAVABEAN,类必须是具体的和公共的,并且具有无参数的构造器。JAVABEANS通过提供符合一致性设计模式的公共方法将内部域暴露称为属性。众所周知,属性名称符合这种模式,其他JAVA类可以通过自省机制发现和操作这些JAVABEAN属性。用户可以使用JAVABEAN将功能、处理、值、数据库访问和其他任何可以用JAVA代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、SERVLET、其他JAVABEAN、APPLET程序或者应用来使用这些对象。用户可以认为JAVABEAN提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变。虽然JAVABEAN和JAVA之间已经有了明确的界限,但在某些方面JAVABEAN和JAVA之间仍然存在着非常明显的混淆。JAVA确实是能够为用户创建可重用的对象,但它却没有管理这些对象相互作用的规则或标准。JAVABEAN通过指定定义对象之间交互作用的机制,以及大部分对象需要支持的常用行为,如持久性和实际处理等,建立了自己需要的组件模型。虽然当前的JAVA组件模型也可以运行得很好,但在传送真正的可重用性和交互操作性上仍然非常有限,JAVA用户需要做的最多的一件事就是创建APPLET并使得它们在WEB页面上相互通讯,这并非易事。JAVABEAN提供了一个框架包,使用这个包进行通讯就容易得多了。JAVABEAN组件能够通过定义好的标准属性改进性能。总体而言,JAVABEAN充分发展了JAVAAPPLET的功能,并结合了JAVAAWT组件的紧凑性和可重用性。24表现层SERVLET和JSP的介绍241SERVLET和JSP的介绍SERVLET是运行在WEB服务器或应用服务器上的JAVA程序,它是一个中间层,负责连接来自WEB浏览器或其他HTTP客户程序的请求和HTTP服务器上的数据库或应用程序。可以将SERVLET看作是一个含有HTML的JAVA程序SERVLET的工作是执行下面的任务读取客户发送的显式数据;读取由浏览器发送的隐式请求数据;生成结果;向客户发送显式数据(即文档);发送隐式的HTTP响应数据。我们可以把JSP看作在静态页面上写JAVA代码,但其实JSP在服务器第一次运行的时候被服务器翻译为SERVLET,正真运行的是翻译后的SERVLET。JSP和SERVLET的区别就如下几点1JSP以文本为主,主要用于画界面2JSP可以人工扩充,而SERVLET是固定的3JSP内核是SERVLET,所以也是基于HTTP协议的请求响应循环4由HTML(CSS、XML)、JAVACODE、JSP标签组成5JSP有自定义标签(ASP没有)6CGI和SERVLET以代码为主,代码中嵌文本;JSP中文本中嵌代码7JSP擅长于表现,而短于逻辑;而SERVLET一般用作CONTORLER和DIAPATCH控制和流转;所以在JSP中写界面元素,而逻辑方面由SERVLET完成。8JSP不需要写JAVA文件、不需要编译和配置,它被封装到了容器内部9JSP代码不可重用。242EL和JSTL的介EL全名为EXPRESSIONLANGUAGE,它原本是JSTL1。0为方便存取数据所自定义的语言。当时EL只能在JSTL标签中使用。到了JSP2。0之后,EL已经正式纳入成为标准规范之一。因此,只要是支持SERVLET2。4/JSP2。0的CONTAINER,就都可以在JSP网页中直接使用EL了。JSTL全名为JAVASERVERPAGESSTANDARDTAGLIBRARY,目前最新的版本为1。2版。JSTL是由JCP(JAVACOMMUNITYPROCESS)所制定的标准规范,它主要提供给JAVAWEB开发人员一个标准通用的标签函数库。WEB程序员能够利用JSTL和EL来开发WEB程序,取代传统直接在页面上嵌入JAVA程序(SCRIPTING)的做法,以提高程序的阅读性,维护性和方便性。JSTL是一个标准的已制定好的标签库,可以应用于各种领域,如基本输入输出,流程控制,循环,XML文件剖析,数据库查询及国际化和文字格式标准化的应用等。从表21可以知道,JSTL所提供的标签函数库主要分为五大类表21另外,JSTL也支持EL语法,这也是本系统设计上处理集合迭代的主要方法。24WEB架构MVC模式和STRUTS的介绍241MVC模式的优先和缺点说道MVC的优点,首先,最重要的是应该有多个视图对应一个模型的能力。在目前用户需求的快速变化下,可能有多种方式访问应用的要求。例如,在本系统中用户的注册有学生注册也可能是教师注册,但对于注册的处理都是一样,也就是说注册的处理是一致的。按MVC设计模式,一个用户模型以及多个视图即可解决问题。这样减少了代码的复制,即减少了代码的维护量,一旦模型发生改变,也易于维护。其次,由于模型返回的数据不带任何显示格式,因而这些模型也可直接应用于接口的使用。再次,由于一个应用被分离为三层,因此有时改变其中的一层就能满足应用的改变。一个应用的业务流程或者业务规则的改变只需改动MVC的模型层。控制层的概念也很有效,由于它把不同的模型和不同的视图组合在一起完成不同的请求,因此,控制层可以说是包含了用户请求权限的概念。最后,它还有利于软件工程化管理。由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化产生管理程序代码。关于MVC的缺点,首当其冲的是其增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。另外,视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。最后,视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。242MVC模型简介模型一(图21)JSPJAVABEAN,JSP既充当控制,又充当视图,以页面为核心,JSP使用JSPUSEBEAN,他不能够实现不同的页面,显示不同的数据,需要借助于中间类来调用JAVABEAN的方法才能实现。图21模型二(图22)JSPSERVLETJAVABEAN,以控制为核心,JSP只负责显示和收集数据,SEVLET,连接视图和模型,将视图层数据,发送给模型层,JAVABEAN,分为业务类和数据实体,业务类处理业务数据,数据实体,承载数据,基本上大多数的项目都是使用这种MVC的实现模式。图22STRUTSMVC框架STRUTS是使用MVC的实现模式二来实现的,也就是以控制器为核心。图23STRUTS提供了一些组件使用MVC开发应用程序1)模型(MODEL)在STRUTS的体系结构中,模型分为两个部分系统的内部状态和可以改变状态的操作(事务逻辑)。内部状态通常由一组ACTINFORMBEAN表示。根据设计或应用程序复杂度的不同,这些BEAN可以是自包含的并具有持续的状态,或只在需要时才获得数据(从某个数据库)。大型应用程序通常在方法内部封装事务逻辑(操作),这些方法可以被拥有状态信息的BEAN调用。比如购物车BEAN,它拥有用户购买商品的信息,可能还有CHECKOUT方法用来检查用户的信用卡,并向仓库发定货信息。小型程序中,操作可能会被内嵌在ACTION类,它是STRUTS框架中控制器角色的一部分。当逻辑简单时这个方法很适合。建议用户将事务逻辑(要做什么)与ACTION类所扮演的角色(决定做什么)分开。2)视图(VIEW)视图主要由JSP建立,STRUTS包含扩展自定义标签库(TAGLIB),可以简化创建完全国际化用户界面的过程。目前的标签库包括BEANTAGS、HTMLTAGS、LOGICTAGS、NESTEDTAGS以及TEMPLATETAGS等。3)控制器(CONTROLLER)在STRUTS中,基本的控制器组件是ACTIONSERVLET类中的实例SERVELT,实际使用的SERVLET在配置文件中由一组映射(由ACTIONMAPPING类进行描述)进行定义。对于业务逻辑的操作则主要由ACTION、ACTIONMAPPING、ACTIONFORWARD这几个组件协调完成的,其中ACTION扮演了真正的业务逻辑的实现者,ACTIONMAPPING与ACTIONFORWARD则指定了不同业务逻辑或流程的运行方向。STRUTSCONFIG。XML文件配置控制器。STRUTS框架的处理流程清楚的体现了MVC系统的特点,简单的STRUTS组件结构如图2所示。STRUTSCONTROLLERACTIONSERVLET处理客户请求,利用配置的ACTIONMAPPING对象把请求映射到ACTION处理器对象进行处理。ACTION处理对象访问ACTIONFORM中的数据,处理和响应客户请求,它还调用后台的BEAN组件,这些组件封装了具体的业务逻辑。ACTION处理器对象根据处理结果通知CONTROLLER,CONTROLLER进行下一步的处理。图233系统所使用工具的介绍31TOMCAT的介绍TOMCAT在严格意义上并不是一个真正的应用服务器,它只是一个可以支持运行SERLVET/JSP的WEB容器,不过TOMCAT也扩展了一些应用服务器的功能,如JNDI,数据库连接池,用户事务处理等等。TOMCAT是APACHE组织下JAKARTA项目下的一个子项目,目前TOMCAT被非常广泛的应用在中小规模的JAVAWEB应用中。TOMCAT是一种具有JSP环境的SERVLET容器。SERVLET容器是代替用户管理和调用SERVLET的运行时外壳。作为一个开放源代码的软件,JAKARTATOMCAT有着自己独特的优势首先,它容易得到。事实上,任何人都可以从互联网上自由地下载这个软件。无论从HTTP/JAKARTA。APACHE。ORG还是从其他网站(JAKARTATOMCAT是APACHE软件基金会开发的一个开放源码的应用服务器)。其次,对于开发人员,特别是JAVA开发人员,TOMCAT提供了全部的源代码,包括SERVLET引擎、JSP引擎、HTTP服务器。无论是对哪一方面感兴趣的程序员,都可以从这些由世界顶尖的程序员书写的代码中获得收益。最后,由于源代码的开放及世界上许多程序员的卓有成效的工作,TOMCAT已经可以和大部分的主流服务器一起工作,而且是以相当高的效率一起工作。如以模块的形式被载入APACHE,以ISAPI形式被载入IIS或PWS,以NSAPI的形式被载入NETSCAPEENTERPRISESERVER。由于JAVA的跨平台特性,基于JAVA的TOMCAT也具有跨平台性。TOMCAT的目录结构首先,下载JAKARTATOMCAT。ZIP包,解压缩到一个目录下,如“CTOMCAT”。这时,会得到如下的TOMCAT的目录结构JAKARTATOMCAT|BINTOMCAT执行脚本目录|COMMON放置一些通用类(如JDBC的驱动程序等)|CONFTOMCAT配置文件|DOCTOMCAT文档|LIBTOMCAT运行需要的库文件(JARS)|LOGSTOMCAT执行时的LOG文件|SRCTOMCAT的源代码|WEBAPPSTOMCAT的主要WEB发布目录(存放我们自己的JSP,SERVLET,类)|WORKTOMCAT的工作目录,TOMCAT将翻译JSP文件到的JAVA文件和CLASS文件放在这里。表31表41目录名该目录内的文件的一般功能描述BIN包含有STARTUP。BAT(启动服务器)与SHUTDOWN。BAT(关闭服务器)文件CONF包含设置部署在TOMCAT上的WEB应用的变量的初始值的设置文件,包括SERVER。XMLTOMCAT的全局配置文件和WEB。XML(为不同的TOMCAT配置的WEB应用设置缺省值的文件)DOC包含关于TOMCAT的各种各样的文档。COMMON在其LIB目录下,主要存放如JDBC的驱动程序等LIB包含被TOMCAT使用的各种各样的JAR文件。在UNIX上,任何这个目录中的文件将被附加到TOMCAT的CLASSPATH中。LOGSTOMCAT的LOG文件。SRCSERVLETAPI的源文件。WEBAPPS包含WEB应用的程序(JSP、SERVLET和JAVABEAN等)WORK由TOMCAT自动生成,这是TOMCAT放置它运行期间的中间INTERMEDIATE文件诸如编译的JSP文件地方。如果当TOMCAT运行时,你删除了这个目录那么将不能够执行包含JSP的页面。本系统由MYECLIPSE部署至TOMCAT6。0服务器中。32MYSQL的介绍MYSQL是最受欢迎的开源SQL数据库管理系统,它由MYSQLAB开发、发布和支持。MYSQLAB是一家基于MYSQL开发人员的商业公司,它是一家使用了一种成功的商业模式来结合开源价值和方法论的第二代开源公司。MYSQL是一个数据库管理系统一个数据库是一个结构化的数据集合。如果要添加、访问和处理存储在一个计算机数据库中的数据,你就需要一个像MYSQL这样的数据库管理系统。从计算机可以很好的处理大量的数据以来,数据库管理系统就在计算机处理中和独立应用程序或其他部分应用程序一样扮演着一个重要的角色。MYSQL是一个关系数据库管理系统关系数据库把数据存放在分立的表格中,这比把所有数据存放在一个大仓库中要好得多,这样做将增加你的速度和灵活性。“MYSQL”中的SQL代表“STRUCTUREDQUERYLANGUAGE”(结构化查询语言)。SQL是用于访问数据库的最通用的标准语言,它是由ANSI/ISO定义的SQL标准。SQL标准发展自1986年以来,已经存在多个版本SQL86,SQL92,SQL1999,SQL2003,其中SQL2003是该标准的当前版本。MYSQ是开源的开源意味着任何人都可以使用和修改该软件,任何人都可以从INTERNET上下载和使用MYSQL而不需要支付任何费用。如果你愿意,你可以研究其源代码,并根据你的需要修改它。本系统采用MYSQL508版本。33MYECLIPSE的介绍说到MYECLIPS先得说下ECLIPSE,ECLIPSE是一个开放源代码的、基于JAVA的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,ECLIPSE附带了一个标准的插件集,包括JAVA开发工具(JAVADEVELOPMENTTOOLS,JDT)。MYECLIPSE是什么简单而言,MYECLIPSE是ECLIPSE的插件,也是一款功能强大的J2EE集成开发环境,支持代码编写、配置、测试以及除错。所以作为本次毕业设计IDE工具的不二人选。4网络课程答疑系统的总体设计41系统的需求分析项目目标本软件功能大致分为三大模块学生模块,教师模块和管理员模块。学生模块学生用户进行操作的模块。教师模块教师用户进行操作的模块。管理员模块管理员用户进行操作的模块。具体各用户需求分析1。学生用户的需求分析学生登录后可以选择查看个人资料或者进入答疑系统,进入答疑系统后可以提出问题,问题提交给服务器端,并在服务器端进行检索。若检索成功,则返回答案给客户端浏览器;若没检索成功,学生还能将问题设置为未解题目等待教师的解答。若教师解答了此题目,当学生下次查看自己问题时即可看到老师回答的答案。2。教师用户的需求分析教师登录后可以选择查看个人资料或者进入答疑系统,进入答疑系统后可以查看未解题目,对未解问题的解答,教师还可以进行题库的管理操作,给题库添加删除修改章节,章节关键字,章节标准答案,标准答案的关键字。让题库能适应学生的要求。3。管理员用户的需求分析管理员登录后可以为对用户的管理操作和个人信息的修改。42系统的总体设计421系统总结构设计系统结构采用B/S结构B/S(BROWSER/SERVER)结构即浏览器和服务器结构。它是随着INTERNET技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(BROWSER)实现,但是主要事务逻辑在服务器端(SERVER)实现,形成所谓三层(3TIER)结构。一个三层架构的应用程序由三部分组成,这三部分各自分布在网络中的不同地方。这三个部分分别是工作站或表示层接口、事务逻辑、数据库以及与其相关的程序设计。在一个典型的三层架构应用程序中,应用程序的用户工作站包括提供图形用户界面(GUI)的程序设计和具体的应用程序入口表格或交互式窗口。事务逻辑处在局域网(LAN)服务器或其他共享主机上,它作为响应工作站所发出客户请求的服务器,而相对于处于大型机的第三层它是作为客户端,并且决定需要什么数据以及数据存储在哪里。第三层包括数据库以及处理读写以及访问数据库的程序。然而应用程序的设计可能比这个架构要复杂,对于大型程序来说,这个三层模式是一种比较简便的考虑方法。这种应用程序的设计使用客户/服务器模式,各层可以同时开发,并且可以由不同的成员组用不同的语言来开发。因为各个层次的开发不会影响其他层次,所以这种模型对于进一步开发软件是很方便的。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。以目前的技术看,局域网建立B/S结构的网络应用,并通过INTERNET/INTRANET模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN,WAN,INTERNET/INTRANET等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全。特别是在JAVA这样的跨平台语言出现之后,B/S架构管理软件更是方便、快捷、高效。421系统流程图系统流程图如图41所示图414。2教师用户未登陆用户管理员用户答案库人员注册、登陆注册、登陆注册、登陆管理管理管理回答题库置入问题查询问题库学生用户管理。1系统用例图设计系统用例图如图42所示图42422系统的分层和技术选用本系统的分层结构以及技术选用图43图43在整体设计模式上采用STRUTSMVC模式的B/S架构各层的技术选用在表现层选用STRUTS,JSP为主要表现技术。需在WEB。XML中添加SERVICELOCATOR表示层STRUTSSTRUTSACTION,ACTIONFORM,JSP,STRUTSCONFIGXML,ETCDAOCLASSESJAVABEANHIBERNATESESSIONMANAGEMENT持久层HIBERNATEDATASOURCETRANSACTIONSBUSINESSSERVICECLASSESQUERYLANGUAGESUPPORTANDOTHERHIBERNATESERVICESACTIONSERVLETORGAPACHESTRUTSACTIONACTIONSERVLET1ACTIONSERVLETDO在业务层选用JAVABEAN为主要技术,负责业务的操作。在持久层选用HIBERNATE为主要技术,负责对持久对象的操作。由于使用HIBERNATE为持久层,所有与数据库连接的工作只需要在HIBERNATE。CFG。XML配置就行,HIBERNATE。CFG。XML部分代码如下COMMYSQLJDBCDRIVERJDBCMYSQL/1270013306/QA_SYSROOTSUYUEJIAORGHIBERNATEDIALECTMYSQLDIALECT在数据库层上选用开源的MYSQL为数据库。423各层之间的连接工厂模式。工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性和低耦合的目的。跟为系统以后的扩展提供了良好接口。以DAOFACTORY为例,/产生DAO的工厂,绑定在线程上面,单例,线程安全。PUBLICCLASSDAOFACTORYPRIVATESTATICTHREADLOCALTHREADLOCALNEWTHREADLOCALPRIVATEDAOFACTORYPUBLICSTATICDAOFACTORYGETINSTANCEDAOFACTORYDAOFACTORYTHREADLOCALGETIFDAOFACTORYNULLDAOFACTORYNEWDAOFACTORYTHREADLOCALSETDAOFACTORYRETURNDAOFACTORYPUBLICOBJECTGETDAOSTRINGDAONAMETHROWSQAEXCEPTIONTRYRETURNCLASSFORNAMEDAONAMENEWINSTANCECATCHEXCEPTIONEXTHROWNEWQAEXCEPTIONEXGLOBALS类代码如下PUBLICCLASSGLOBALSPUBLICSTATICFINALSTRINGUSER_DAO“COMAHUTQA_SYSTEMDAOIMPLUSERDAOIMPL“PUBLICSTATICFINALSTRINGANSWER_DAO“COMAHUTQA_SYSTEMDAOIMPLANSWERDAOIMPL“PUBLICSTATICFINALSTRINGCHAPTER_DAO“COMAHUTQA_SYSTEMDAOIMPLCHAPTERDAOIMPL“PUBLICSTATICFINALSTRINGQUESTION_DAO“COMAHUTQA_SYSTEMDAOIMPLQUESTIONDAOIMPL“PUBLICSTATICFINALSTRINGSTANDARDANSWER_DAO“COMAHUTQA_SYSTEMDAOIMPLSTANDARDANSWERDAOIMPL“PUBLICSTATICFINALSTRINGADMIN_BIZ“COMAHUTQA_SYSTEMBIZIMPLADMINBIZIMPL“PUBLICSTATICFINALSTRINGSTUDENT_BIZ“COMAHUTQA_SYSTEMBIZIMPLSTUDENTBIZIMPL“PUBLICSTATICFINALSTRINGTEACHER_BIZ“COMAHUTQA_SYSTEMBIZIMPLTEACHERBIZIMPL“PUBLICSTATICFINALSTRINGUSER_BIZ“COMAHUTQA_SYSTEMBIZIMPLUSERBIZUTIL“在业务层如果要调用某个DAO对象,只需写如下代码PRIVATEUSERDAOIMPLUDAOUSERDAOIMPLDAOFACTORYGETINSTANCEGETDAOGLOBALSUSER_DAO在ACTION中如果要调用某个业务对象,只需写如下代码PRIVATEADMINBIZIMPLBIZADMINBIZIMPLBIZFACTORYGETINSTANCEGETBIZCLASSGLOBALSADMIN_BIZ5系统详细设计系统共分学生用户模块,教师用户模块,题库管理模块和管理员模块。51系统类图设计511系统实体类图设计系统共设用户类USER,学生类STUDENT,教师类TEACHER,管理员类ADMINISTRATOR,问题类QUESTION,答案类ANSWER,章节类CHAPTER,标准答案类STANDARDANSWER。设用户父类USER,学生类STUDENT,教师类TEACHER,管理员类ADMINISTRATOR继承自USER。问题类单向关联学生类,学生和问题的关系为1对0到多。答案类单向关联教师类,教师和答案的关系为1对0到多。章节类和标准答案类为双向1对0至多关系。图42图42512DAO接口和实现类图。系统设用户DAO,问题DAO,答案DAO,章节DAO,标准答案DAO五个DAO,分别定义了对用户,问题,答案,章节,标准答案的增删查改。他们各有IMPL类实现他们。图43图43513BIZ业务接口和实现类图。业务层有用户业务USERBIZ,学生业务STUDENTBIZ,教师业务TEACHERBIZ,管理员业务ADMINBIZ四个接口,分别实现一般用户功能,学生用户功能,教师用户功能,管理员功能。分别有IMPL类对其实现图44图4452系统数据库设计521数据库表的设计本系统共设用户表T_USER,问题表T_QUESTION,答案表T_ANSWER章节表T_CHAPTER,章节关键字表T_CHAPTER_KEYWORDS。标准答案表T_STANDARDANSWER,标准答案关键字表T_SA_KEYWORDS。图45图45522数据库表的建立以T_USER表为例,由于实体类设计管理员,学生,教师都有用户继承而来,所以建表是需要考虑到表对多态的支持,因此在用户表的选择上采用每个类分层结构一张表TABLEPERCLASSHIERARCHY,有字段TYPE区分到底是哪个子类表41。表41章节表答案表问题表用户表标准答案表章节关键字表表标答关键字表USERID为与任务业务无关的独立字段,其优点是能确保永远不会修改。为此表主键约束。类型为BIGINT。TYPE为该类的类型A为管理员,S为学生,T为教师类型VARCHARVERSION是HIBERNATE的乐观锁。类型INTEGER。USERNAME为用户名。唯一约束。类型VARCHARPASSWORD为用户密码。类型VARCHAREMAIL为用户EMAIL唯一约束。类型VARCHARREALNAME为真实姓名类型VARCHARCLASSNAME为班级名。类型VARCHARTEACHSPECIALITY为所授专业。类型VARCHAR具体建表SQL建表语言为CREATETABLET_USERUSERIDBIGINTNOTNULL,TYPEVARCHAR255NOTNULL,VERSIONINTNOTNULL,USERNAMEVARCHAR255NOTNULLUNIQUE,PASSWORDVARCHAR255NOTNULL,EMAILVARCHAR255NOTNULLUNIQUE,REALNAMEVARCHAR255,CLASSNAMEVARCHAR255,TEACHSPECIALITYVARCHAR255,PRIMARYKEYUSERID其他表的建立如下T_QUESTION表42表42QUESTIONEID为问题ID,与业务无关,为此表主键约束。类型为BIGINT。VERSION是HIBERNATE的乐观锁,类型INTEGER。ANSWERED为问题是否已回答,类型BOOLEAN。QUESTIONCONTENT为问题内容,类型VARCHAR。SFID为此表外键约束,引用T_USER的USERID主键。SQL建表语句CREATETABLET_QUESTIONQUESTIONIDBIGINTNOTNULLPRIMARYKEY,VERSIONINTNOTNULL,ANSWEREDBIT,QUESTIONCONTENTTEXT,SFIDBIGINT,FOREIGNKEYSFIDREFERENCEST_USERUSERIDT_ANSWER表43表43ANSWERIDD为答案ID,与业务无关,为此表主键约束。类型为BIGINT。VERSION是HIBERNATE的乐观锁。类型INTEGER。ANSWERCONTENT为答案内容。类型VARCHAR。QUESTIONED为此表外键约束,引用T_QUESTION的QUESTIONID主键TFID为此表外键约束,引用T_USER的USERID主键。SQL建表语句CREATETABLET_ASNWERANSWERIDBIGINTNOTNULLPRIMARYKEY,VERSIONINTNOTNULL,ANSWERCONTENTTEXT,QUESTIONIDBIGINT,TFIDBIGINT,FOREIGNKEYTFIDREFERENCEST_USERUSERID,FOREIGNKEYQUESTIONIDREFERENCEST_QUESTIONQUESTIONIDT_CHAPTER表43表43CHAPTERED为章节ID,与业务无关,为此表主键。类型为BIGINT。VERSION是HIBERNATE的乐观锁。类型INTEGER。NUMBER为章节目录。唯一约束。类型INTEGER。TITLE为章节标题,类型VARCHAR。SQL建表语句CREATETABLET_CHAPTERCHAPTERIDBIGINTNOTNULL,VERSIONINTNOTNULL,NUMBERINTUNIQUE,TITLEVARCHAR50NOTNULL,PRIMARYKEYCHAPTERIDT_CHAPTER_KEYWORDS表44表44FID为此表外键约束,引用T_CHAPTER的主键。类型为BIGINT。KEYWORD为关键字。类型VARCHAR。FID和KEYWORD为联合主键。SQL建表语句CREATETABLET_CHAPTER_KEYWORDSFIDBIGINTNOTNULL,KEYWORDVARCHAR255,FOREIGNKEYFIDREFERENCEST_CHAPTERCHAPTERIDT_STANDARDASNWER表45表45SAID为标准答案ID,与业务无关,是此表主键。类型为BIGINT。QUESTIONCONTENT为问题内容。类型VARCHAR。ANSWERCONTENT为答案内容。类型VARCHAR。CHAPTERFID为此表外键,引用T_CHAPTER的主键。SQL建表语句CREATETABLET_STANDARDANSWERSAIDBIGINTNOTNULL,VERSIONINTNOTNULL,QUESTIONCONTENTTEXT,ANSWERCONTENTTEXT,CHAPTERFIDBIGINT,PRIMARYKEYSAID,FOREIGNKEYCHAPTERFIDREFERENCEST_CHAPTERCHAPTERIDT_SA_KEYWORDS表46表46FID为此表外键约束,引用T_STANDARDANSWER的主键。类型为BIGINT。KEYWORD为关键字。类型VARCHAR。FID和KEYWORD为联合主键。SQL建表语句CREATETABLET_SA_KEYWORDSFIDBIGINTNOTNULL,KEYWORDVARCHAR255,FOREIGNKEYFIDREFERENCEST_STANDARDANSWERSAID522对象与数据库的映射因为JDBC代码重复量大,所以在本系统采用了HIBERNATE技术,使用HIBERNATE技术,对象与数据库的映射只需要在配置文件中实现。以T_USER为例,在实体包下添加USER。XML,在里面添加配置53学生用户模块的设计学生功活动图如下图63学生通过帐号密码登录,可以选择进入答疑系统或者学生信息管理,若进入个人信息管理则可以修改自己的信息。进入答疑系统后可以选择提问或者对自己的问题进行管理,若在提问时对所提供的答案并不满意,可以将提问放入问题库中,在学生问题管理中可以查看问题的答案,并可以对问题进行删除操作。图63531学生模板大致设计学生的一般操作如登录,注册,注销,对应系统ACTION,然后根据类型的不同返回不同的页面。学生的其他操作对应STUDENTACTION,利用隐藏标签或者超链接直接带参数调用不同的方法,在各个方法中,调用学生业务实现类STUDENTBIZIMPL,STUDENTBIZIMPL再调用不同的DAOIMPL类实现对象的基本操作以完成业务操作,然后根据STRUTSCONFIG。XML中对应的路径返回页面。532学生提问功能的设计学生向系统提出问题,调用STUDENTACTION中的ASKQUESTION方法得到最为匹配的答案集合,并显实在学生的浏览器上,若学生对系统给出的答案不满意,可以调用STUDENTACION中的ASKTEACHER方法把题目添加到我的问题,等待老师来解决。学生提问界面图64图64学生查询完后的界面图65图65533学生问题管理功能的设计学生通过此功能可以查询自己未解的题目,若发现问题已经解答点击超连接调用STUDENTACTION中的CHECKANSWER方法就可以查询老师给出的答案,并查看给出答案老师的资料。最后还能把问题从自己的问题库中删除。同样在页面上使用了JSTL来给出显示。学生问题管理界面图66图66534学生模块代码举例说明以学生查询自己以解答案为例学生点击查看我的问题连接通过页面跳转进入STUDENT_QA_CENTER_MYQUESTIONS。JSP。可以看到自己的所有问题,若问题已回答,可以看见问题状态成为已解答,并有超链接查看答案查看答案我们可以看到这是个带参数的超连接,有METHODNAME和QUESTIONID,其中METHODNAME为CHECKANSWER,QUESTIONID为动态SESSION中QUESTION的QUESTIONID,该连接被SERVLET拦截并调用STUDENTACTION中的CHECKANSWER方法,方法代码如下STRINGSTRREQUESTGETPARAMETER“QUESTIONID“LONGQUESTIONIDNEWLONGSTRSYSTEMOUTPRINTLNQUESTIONIDANSWERANSWERNULLQUESTIONQUESTIONNULLTEACHERTEACHERNULLTRYHTTPSESSIONSESSIONREQUESTGETSESSIONANSWERBIZFINDANSWERBYQUESTIONIDQUESTIONIDQUESTIONBIZFINDQUESTIONBYQUESIONIDQUESTIONIDTEACHERBIZFINDTEACHERBYUSERIDANSWERGETTEACHERGETUSERIDSESSIONREMOVEATTRIBUTE“ANSWER“SESSIONREMOVEATTRIBUTE“QUESTION“SESSIONREMOVEATTRIBUTE“TEACHER“SESSIONSETATTRIBUTE“ANSWER“,ANSWERSESSIONSETATTRIBUTE“QUESTION“,QUESTIONSESSIONSETATTRIBUTE“TEACHER“,TEACHERRETURNMAPPINGFINDFORWARD“FINDA

温馨提示

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

评论

0/150

提交评论