高校在线答疑系统的设计与实现.docx_第1页
高校在线答疑系统的设计与实现.docx_第2页
高校在线答疑系统的设计与实现.docx_第3页
高校在线答疑系统的设计与实现.docx_第4页
高校在线答疑系统的设计与实现.docx_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

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

文档简介

。高校在线答疑系统的设计与实现摘要随着高校内学生人数的日益增长,教师和上课地点的不断变动使得学生和老师之间的交流受时间和空间限制,导致师生间的答疑工作难以开展。为此开发一个高校在线答疑系统大有裨益。本系统是基于B/S架构,使用JSP、SERVLET、JAVASCRIPT作为编程语言,结合MYSQL数据库和Java Web开发的三层架构来实现学生模块、教师模块和管理员模块功能。学生模块主要功能包括学生对某位老师或所有老师提问、下载学习资料、查看并修改信息及根据提问数对学生进行排名。教师模块主要功能包括回答问题并获得积分、上传资料、按积分对教师进行排名。管理员模块主要功能包括对问题、学院、专业和用户的管理操作。其中三层架构将整个系统划分为界面层、业务逻辑层和数据访问层,分层目的在于实现“高内聚低耦合”思想。目前,大部分高校的答疑模块都是内嵌在网络教学系统中,独立存在的不多。本系统主要作用于学生和教师之间的答疑互动,其特点有回答质量高,利于用户管理所有提问或回答信息。关键词:答疑系统;B/S架构;三层架构DESIGN AND IMPLEMENTATION OF ONLINE QUESTION ANSWERING SYSTEM IN UNIVERSITIESABSTRACTWith the increasing number of students and continuous change of teachets,courses and classroom,the communication between students and teachers by time and space constraints,which resulting in a Q & A between teachers and students is difficult to carry out.So it isuseful to develop an online question answering system in universities.The completion of student mudule,teacher module and administrator module is based on JSP,SERVLET,JAVASCRIPT programming language and MYSQL and three tier architecture of Java Web.The main function of Student module includes a student ask questions to one particular teacher or all teachers,download learning files,view and modify the base information,rank student according to their number of questions.The main function of teacher module includes answer questions and get points,upload files,rank teacher according to the their points. Administrator module main functions include problem management, college management, professional management and user management.The system is divided into interface layer, business logic layer and data access layer, the purpose is to deepen the high cohesion and low coupling idea.At present, most of the question and answer module is embedded in the network teaching system, there are not many independent system. The aim of this system is to interact with students and teachers. Its features are high quality, to help users manage all questions or answers.Key words: question answering system; B/S structure; Three tier architecture目 录1 绪论71.1 研究背景及意义71.2 研究现状及发展趋势81.3 论文主要内容102 系统及相关技术概述102.1 系统概述102.2 开发环境112.3 相关技术112.3.1 MYSQL数据库介绍112.3.2 JSP语言介绍122.3.2 SERVLET技术介绍122.3.4 JAVASCRIPT脚本语言介绍133 系统的总体设计133.1 需求分析143.2 系统架构153.3 模块设计153.4 数据库设计174 系统的实现214.1 学生模块功能的实现234.1.1 提出问题234.1.2 查看我的提问254.1.3 采纳答案264.1.4 学生提问数排名284.1.5 下载资料284.2 教师模块功能的实现284.2.1 解答问题284.2.2 查看我的回答304.2.3 教师积分排名304.2.4 上传资料304.3 管理员模块功能的实现314.3.1问题管理314.3.2 学院管理334.3.3 专业管理344.3.4 用户管理354.4 通用功能的实现364.4.1 登录364.4.2 注销374.4.3 找回密码374.4.4 修改信息375 系统测试385.1 系统测试目的385.2 子模块测试385.2.1学生模块385.2.2 教师模块435.2.2管理员模块455.2.3通用功能测试526 总结与展望576.1 总结576.2 展望57参考文献58致谢59附录596。1 绪论高校学生人数的增加,教师、课程和教师的不断变动,导致教师和学生交流越来越少,师生间的答疑工作难以开展。为此开发一个高校在线答疑系统实用性较大。随着互联网技术的广泛应用,教学活动在网上进行已越发流行。在线答疑系统便是借助网络来实行教学活动的工具,主要表现在教师与学生之间的问答互动。1.1 研究背景及意义现如今,人们获知信息和交流的方式随着互联网的发展而不断进步。尤其是Web2.0技术的推广,使得单向传递的信息交流模式逐渐倾向于以用户为中心、注重社会协作的网络交流模式11。使用者在内容发布过程中在实现与服务器交互的同时,也实现了同一网站各使用者之间的交互,所以web2.0比web1.0越发强调互动性。在本系统中,学生可以根据自己的时间安排自己的提问计划,不受时间地点限制,且可以向已在网站注册的任何导师提问,下载资源。对老师也一样,不一定要安排某个时间某间教室进行答疑,当老师回答了问题后,系统会自动邮件提醒学生登录查看。实现传统教育无法做到的个性化教育。同时,系统有积分激励政策。老师每回答一个问题便可获得2个积分。同时还会根据积分对教师进行排名,对老师来说,积分越高则说明越关注学生的学习动态,与学生的互动越密切。这样一来,一方面学生的问题得到解决,提高了学习效率,另一方面,有利于加深师生感情。本毕业设计目的是设计实现一个多学科、通用、模块化的网上学习平台,以便提高学生学习兴趣,有利于当今高校教学模式和教学方法的改革。1.2 研究现状及发展趋势目前,实现在线答疑系统的结构主要有C/S和B/S。由于C/S结构的可扩展性、可靠性和可维护性不足,很难满足当今网络技术迅猛发展的需要2。而B/S是对C/S的一种改进,由于大部分事务都在服务器端完成的特点极大地削减了客户端的负载,使得系统升级与维护的成本和工作量得到降低。尤其一些跨平台语言出现之后,如JAVA等,B/S结构变得更加便捷和高效。在答疑系统中,有两个关键点需要注意。首先是在连续不断的问答中怎么获得答案,其次是答疑系统与用户之间互动的实现方法3。动态WEB应用的实现手段非常之多,较为常见的有PHP、JAVASCRIPT、ASP、JAVA SERVLET/JSP等。因为JAVA语言面向对象、可移植性和安全可靠等优点JSP全部具备,故本系统采用JAVA SERVLET和JSP来完成。我国使用范围广且与本系统功能相近的有百度知道和新浪爱问知识人。百度知道是一个集搜索与互动为一体的问答分享平台,使用者发布待解答问题,通过积分奖励机制鼓励其他用户共同出谋划策。在此类合作方式下,使提问者和回答者能达到双赢状态。同时,由于“百度知道”是一个共享平台,给出的回答同时会作为搜索结果供其他有相近疑问的使用者参考。通过长期积累和组织回答,使得系统知识库得到不断更新。百度知道具有反馈迅速、内容丰富等特点,同时充分结合了机器搜索和人力搜索的优势,改变了传统模式的网络信息资源的利用方式4。新浪爱问知识人问答平台是一个旨在为用户解答的互动网络产品。最先在我国推行这种互动问答模式的便是新浪,通过此系统,使用者可以通过发布问题来解决工作生活中的问题。如果积累的知识库中已经有相同或类似的问题答案,就在提问页面中同步提示。新浪爱问知识人提供了智能自然语言搜索技术,网友无须再纠结于关键词或分类,直接输入问题标题,智能引擎便能将其分类到相应目录下,实现操作智能化。“新浪爱问”除了传统算法搜索网页功能强大之外,还以一个特有的互动问答平台完美地填补了传统算法在系统上互动性和界面性的缺陷5。在近几年中,问答系统历经了爆发式飙升。作为国内影响力最大的平台,截止到2016年5月12日,百度知道已累计解决413283081个问题,同时新浪爱问知识人已帮助40000000多名用户。此外这些问答系统也逐渐产生更多的垂直领域,已普及到医疗、金融、通信等诸多范畴。本系统主要功能与上述两大平台类似,但实现逻辑不同。在范围上,百度知道和新浪爱问知识人是全民参与式平台,任何人可以在该平台上注册、提出问题和解答问题。而本系统是针对高校学生与老师间的答疑,用户只有本校的师生,且只能由管理员进行添加。在质量上,因为前者是任何人可提问并回答,虽然有不少认证的专家用户,但也不乏不经思索条理不清的用户,随意性较强,导致回答质量良莠不齐。而本系统的回答者是问题所属专业的老师,学生之间不能互相回答只能查看问题详情,这样一来回答的质量得以保障。在线答疑系统虽然得到了普遍使用,但真正既实用又智能的并不多。绝大多数问答系统都尚未建立在人工智能等前沿技术基础上,还停留在传统的人工互动模式中。当语义分析技术、自然语言处理技术和数据挖掘等先进技术取得更大突破,在线答疑系统的用户体验将会更加完美,故今后的发展趋势如下。(1) 智能化未来用户提出问题应该更容易被系统所理解,通过算法去查找系统知识库更快更准地找到与问题相关的答案或资源。因为在线答疑系统能通过更友好的接口和逻辑推理来实现6。同时系统的知识库能自动更新和学习,并尽可能以简单明了的方式去展示问题与答案。尽管在未来提问数量会越来越多,但是大部分在常见问题中可获得答案,系统支持中心的负担可以通过系统自动回答问题逐渐减少7。(2) 多媒体性当前的答疑基本都是以文字和图片为媒介,随着多媒体信息的大量运用,网路带宽的增大及网络费用的降低,未来答疑系统的提问和答疑方式应该是音频、文字、图片和动画并存。将以更直观的手段呈现问题和答案,让用户在使用答疑系统时更便利、更易上手。1.3 论文主要内容本论文分为六个部分,从背景意义到系统具体实现及测试,囊括系统开发的各个阶段。第一部分主要对系统的应用背景及其意义、研究现状以及发展趋势进行阐述说明。通过高校师生间答疑现状分析来证明开发此系统的必要性。同时和其他系统进行对比,说明本系统特点所在。系统模块及主要功能、开发环境和使用技术的在第二部分做了详细介绍。第三部分介绍系统的用户及功能的需求分析、系统架构设计、各个模块设计和数据库设计。第四部分详细介绍各个模块及功能的具体实现方法,其中三类用户共有的功能放在通用功能小节里介绍。第五部分对系统的各个功能进行详细测试并给出截图和测试结果,对主要功能进行系统测试用例设计。最后一部分就是对本次系统的优缺点进行总结以及对系统未来的展望。2 系统及相关技术概述综合前面对相关领域的分析以及现在高校内答疑现状,对整个设计方向有了大致认识。而接下来是对相关实现技术基础的讨论。本系统设计的技术或编程语言有JAVA、JSP、SERVLET和JAVASCRIPT,后台使用了MYSQL数据库,具体介绍如下。2.1 系统概述本次要设计的是一个高校在线答疑系统,其主要是针对学生和教师之间的互动。系统包括三个模块,分别是学生模块、教师模块和管理员模块。学生模块主要包括提出提问、查看问题回答情况、下载资料、采纳老师的回答以及根据提问数对学生进行排名等功能。其中提问分为针对某位老师提问和对所有老师提问两种。当未采纳答案时,教师可继续回答,答案被采纳后,问题完结,无法继续解答。教师模块主要包括回答问题、查看所有回答情况、上传资料和根据积分对教师进行排名。管理员模块主要包括对问题、学院专业、学生和教师的管理,主要功能即添加、删除、修改、查询。三个模块通用功能包含登录、注销、找回密码和修改基本信息,其中修改信息只能修改登录密码以及邮箱,姓名和专业为学生实名信息,只有管理员能修改。2.2 开发环境本系统使用的编程语言技术为JSP、SERVLET和JAVASCRIPT。开发工具为MyEclipse10.0,使用免费开源的Tomcat7.0作为Web应用服务器,后台数据库为MYSQL5.6,运行环境为Windows7操作系统及IE6以上浏览器。2.3 相关技术2.3.1 MYSQL数据库介绍MYSQL是一个源码开放的、被广泛使用于中小型企业的关系型数据库管理系统。MYSQL数据库具有运行速度快、轻量级、稳定性优越和简单易学等特点。综合这些特点,本系统采用MYSQL来存储后台数据。本系统使用了数据库连接池技术,因为当系统应用变复杂导致连接数很大时,系统资源会被频繁的建立和关闭连接所占用。这一特点严重影响到Web服务的响应速度,达到极限时可能会引起服务器崩瘫痪。国内大学一般人数都成千上万,当系统逐渐完善成为学生老师常使用的系统时,必须要考虑到数据库的复用,以此来降低系统开销。预先建立一个“缓冲池”是数据库连接池的基本原理,当数据库连接需要建立时,从预先放入的数据库连接中取,使用完成后在一定时间内无须立即释放。为防止无限制的进行数据库连接和请求,可以通过设置最多并发连接数和最大连接数来解决8。2.3.2 JSP语言介绍JSP是一个创建显示动态网页的且运行在服务器端的技术标准。JSP脚本的处理方式与常用的不同,是先转换再编译最后执行的方式。JSP的全新处理方式使得运行效率得到了大大提高9。JSP是建立在JAVA SERVLET基础之上,因有诸多功能和优点使得其在动态网页的建设中崭露头角。其优点包括(1) JSP的平台适用性如JAVA一样,具有健壮性、安全性、平台无关性等特点。 (2) JSP可将内容的生成和显示分离开来。(3) JSP非常关注可重用性,其组件都是跨平台可重用的。 (4)JSP连接数据库能力如JAVA一样,能访问Oracle、MS SQL Server、MYSQL等数据库。这些特点使得JSP技术更能满足开发者和用户需求而成为web访问的一种主要技术。2.3.2 SERVLET技术介绍SERVLET是通过交互式查看和修改数据来生成动态页面且运行在服务端的程序。SERVLET通过处理前台传过来的HTTP请求并返回对应响应来完成其功能。其工作模式为当服务器收到前台传来的请求时,服务器将请求发送给SERVLET。SERVLET处理完成后生成响应内容并将其传送给服务器,服务器收到后将响应传递给客户端。与传统的通用网关接口技术相比,SERVLET执行效率更高、可移植性强等鲜明优点。SERVLET的生命周期从装入Web服务器便已开始,在终止或者重新装入SERVLET时结束 10。它的生命周期包括:(1)装入SERVLET。2)创建一个SERVLET实例。(3)调用SERVLET的init方法。(4)服务,容器在收到SERVLET请求时,直接调用service()方法。service()被拆分为doGet()、doPost()、doDelete()、doPut()以及doTrace()。(5)销毁实例。在几个阶段中,对外提供服务阶段是至关重要的,service()方法更是重中之重。SERVLET为客户端提供服务的过程如图2.1所示。图2.1 SERVLET提供服务过程2.3.4 JAVASCRIPT脚本语言介绍 JAVASCRIPT是一种常用来改进网页设计、检测浏览器和验证表单等各种应用的Web开发脚本语言。通常JAVASCRIPT脚本和HTML代码是放在同一页面来配合实现其功能的。其特点有(1) 可以直接在HTML页面里写JAVASCRIPT脚本,但为了实现结构和行为的分离最好是写成独立的JS。(2) 它是一种解释性语言,运行前不需要编译。(3)支持绝大多数浏览器,可运行在多种平台下。(4) 主要用来向HTML页面添加交互行为。3 系统的总体设计这一章主要论述系统的总体设计内容,主要包括对系统的三类用户及其功能的需求分析、系统总体框架概述、各个模块的功能设计以及数据库设计,具体内容如下。3.1 需求分析在有网络的情况下,本系统允许提问者随时随地登录系统进行回答或查看等操作。教师可解答只针对自己提问的问题,也可解答对所有老师提问的问题。学生通过采纳答案来结束问题。管理员可以对问题、学院专业和用户信息进行维护管理。系统的三类用户及各个功能介绍如下所示。本系统主要包括以下三类用户。(1) 学生用户即提问者,有以下四种种权限 通过系统提出问题,并为问题选择相应分类。提问分为对某位老师提问和对所有老师提问,如果是针对某位老师提问,其他老师看不到相应的问题信息。 查看自己提出的所有问题及解答情况。 采纳答案,学生选择最能解决问题的回答来结束问题。 下载资料,学生可以从系统下载学习资料。(2) 教师用户即回答者,有以下三种权限 通过系统回答问题,问题包括所有老师可答和只对自己提问的问题。回答提交成功后系统会自动发送邮件给学生,让学生登录查看解答情况。 查看自己解答过的所有问题详情。 上传资料供学生下载学习。(3) 管理员用户,分为超级管理员和普通管理员两类。普通管理员除了不具有添加和删除管理员功能之外,其他权限一致,具体如下。 添加:添加三类用户以及学院和专业信息。 删除:删除三类用户、学院和专业信息及问题内容。为使数据更加安全,本系统的删除功能不是物理删除而是逻辑删除,数据库中的每个表都有一个字段名isDel,当isDel为1时表示已删除。 修改:修改学生、教师和学院信息。 查看:查看所有用户、学院专业和问题信息。(4) 三类用户都有其通用功能,通用功能设计如下。 登录:用户登录成功的充要条件为选择与之匹配的登录类型,输入正确的用户名、密码和验证码。 注销:当用户注销后,再进入首页查看提问情况时,只能是游客身份。 找回密码:当学生和教师用户忘记密码时,可通过接收系统发送的带有密码的邮件来找回密码。 修改信息:学生和教师用户只能修改自身基本信息如密码、邮箱。其他信息如姓名、专业等实名信息,只有管理员能修改。3.2 系统架构本系统分为三大模块,分别是学生模块、教师模块和管理员模块,框图如图3.1所示。图3.1 系统架构框图3.3 模块设计(1) 学生模块学生模块主要功能包括学生提出问题、查看自己的所有提问情况、对教师提供的答案进行采纳来完结问题、下载教师上传的学习资料。其中提问包括两种情况:对某位老师提问,这种情况只有该老师可以回答,其他老师看不到该问题;另一种为对所有老师提问,所有老师都可见可回答。其中提问情况包括问题的回答信息,以及对已解决和未解决的问题进行分类。学生模块功能图如图3.2所示。图3.2 学生模块功能图(2) 教师模块教师模块主要功能包括解答问题、查看自己参与的问题、上传资料、对教师进行排名。其中解答问题逻辑处理为:回答了问题后可获得系统固定的2个积分,当答案被采纳后,其他教师不能再进行解答。教师模块功能框图如图3.3所示。图3.3 教师模块功能图(3) 管理员模块管理员模块主要功能包括对问题、学院和专业以及用户的管理。其中问题管理包括对问题进行查看、删除和搜索。学院和专业管理为对学院和专业的增加、删除和修改功能。用户管理包括对三类用户的删除、添加、修改和检索功能。管理员模块功能图如图3.4所示。图3.4 管理员模块功能图(4) 通用功能公共模块功能含义为其他三个模块都共有的功能,主要包括登录、注销、密码找回和修改自身基本信息。其中登录功能设置了验证码来增加系统安全。注销功能的实现即将用户设置为null,即变为游客身份无法进行提问。当用户不记得密码无法登录时,可通过密码找回功能来重新得到保存在数据库中的密码。系统会发送一封密码找回邮件至用户邮箱,通过邮件中的密码即可重新登录。修改信息包括用户修改自身的邮箱和密码,姓名和专业等信息是用户的固有信息,只有管理员可修改。通用功能图如图3.5所示。图3.5通用功能图3.4 数据库设计系统采用的是开源免费的MYSQL 5.6数据库,管理工具为Navicat,数据库中各个表格设计如下。(1) 学生用户表aq_student的设计学生用户表结构如表3-1所示,用于保存学生的基本信息,其中学生邮箱是用来找回密码和接收系统发送的查看回答邮件的。在首页根据学生提问数进行排名。表3-1 学生表结构字段字段名数据类型是否为空默认值备注studentNo学生编号int否主键professionNo专业编号int外键studentName学生姓名Varchar (20)否studentPwd学生密码Varchar (20)否123studentEmail学生邮箱Varchar (50)questionCount学生提问数int否0studentPic头像路径Varchar (30)isDel是否删除int否默认00表示未删1表示已删(2) 教师用户表aq_teacher的设计教师用户表结构如表3-2所示,用户保存教师的基本信息,其中教师邮箱用于找回密码功能,答题积分会随着回答问题的数量不断变化。在系统首页会根据积分对教师进行排名。表3-2 教师表结构字段字段名数据类型是否为空默认值备注teacherNo教师编号int否主键professionNo专业编号int外键teacherName教师名字Varchar (20)否teacherPwd教师密码Varchar (20)否123teacherGrade教师级别Varchar (10)teacherEmail教师邮箱varchar(50)否用来找回密码teacherDescription教师描述Varchar (300)points答题积分int否默认0每回答一个问题获得2积分status状态int否teacherPic头像路径Varchar (30)isDel是否删除int否默认00表示未删1表示已删(3) 管理员用户表aq_user的设计管理员用户表结构如表3-3所示,其中管理员类型分为两类,普通管理员不具有删除和添加管理员的权限,其他功能一样。表3-3 管理员表结构字段字段名数据类型是否为空默认值备注userNo管理员编号int否主键userName管理员名字Varchar (20)否userPwd管理员密码Varchar (20)否userType管理员类型int否1表示超级管理员0表示普通管理员isDel是否删除int否默认00表示未删1表示已删(4) 学院信息aq_academy的设计学院表结构如表3-4所示,设计学院表的作用是在学生提问时分类更加方便。表3-4 学院表结构字段字段名数据类型是否为空默认值备注academyNo学院编号int否主键academyName学院名称Varchar (40)否isDel是否删除int否默认00表示未删1表示已删(5) 专业信息aq_profession的设计专业表结构如表3-5所示,专业在本系统中有两层含义,对学生来说,专业表示学生属于某个专业,对问题信息来说,表示问题的所属类,问题属于哪个领域。表3-5 专业表结构字段字段名数据类型是否为空默认值备注professionNo专业编号int否主键professionName专业类别Varchar (20)否academyNo所属学院int否外键isDel是否删除int否默认00表示未删1表示已删(6) 问题信息aq_askInfo的设计问题信息表结构如表3-6所示,用来记录问题的详细情况。学生的每一次提问都会被保存在此数据表中。表3-6 问题信息表结构字段字段名数据类型是否为空默认值备注askNo问题编号int否主键studentNo提问学生编号int否teacherNo教师编号int指定老师回答全部可回答置-1professionNo问题类别int否askTopic提问主题Varchar (80)否askContent提问内容Varchar (4000)否askDate提问时间Date否readerCount查看次数int否默认0status状态int否默认00未解决1已解决isDel是否删除int否默认00表示未删1表示已删(7) 回答信息aq_answerInfo的设计回答信息表结构如表3-7所示,教师的所有回答都会被保存在此数据表中表3-7回答信息表结构字段字段名数据类型是否为空默认值备注answerNo回复编号int否主键askNo所回复的问题编号int否外键studentNo提问学生编号int否teacherNo回复老师编号int否answerContent回复内容Varchar (4000)否answerDate回复时间Date否isChecked是否采纳int否默认00表示未采纳1表示采纳isDel是否删除int否默认00表示未删1表示已删(8) 文件共享aq_fileShare的设计文件共享表结构如表3-8所示,用来记录文件上传信息及其下载情况。表3-8 文件表结构字段字段名数据类型是否为空默认值备注fileNo文件编号int否主键fileName文件名称Varchar (30)否professionNo专业编号int否filePath文件路径Varchar (30)否teacherNo教师编号int否downloadCount下载次数int否默认0isDel是否删除int否默认00表示未删1表示已删4 系统的实现本系统采用三层架构的思想,将一个中间件插入在现有的客户界面和数据库服务之间,即业务逻辑层,它与表示层和数据访问层一起组成了三层架构。区分层次的目的是为了实现各个模块独立性强,模块间接口简单的特性。使得程序员能更专注于核心业务的分析设计和开发。三层架构能加快开发进度,同时也有利于后期的维护和更新11。三层架构的作用分别为。(1) 表示层(UI):用来接收用户的请求以及递交必要参数,用于与用户直接进行交互,在本层调用BLL层。(2) 业务逻辑层(BLL):主要处理业务逻辑以及各种数据验证。在需要存取数据的时候,交给DAL层处理,然后返回信息给表示层。(3) 数据访问层(DAL):不处理任何业务逻辑,只提供基本的数据访问。从上至下逻辑处理如图4.1所示。图4.1 三层架构图在本系统包结构如图4.2所示,表示层包含用户直接接触的JSP页面,如登录界面、提问界面等。业务逻辑层包括.action包下面的各个SERVLET,用来接收并处理浏览器的请求,如有需要则从数据库中取出信息并返回给表示层。数据访问层为.daoImp、.daoInf和.db包,作用分别是数据库操作的实现类、数据库接口和获取数据库连接。其中.filter为系统过滤器,作用为在SERVLET被调用前后通过修改Request和Response对象来执行所需操作。如通过request.setCharacterEncoding(utf-8)和response.setContentType(text/html;charset=utf-8)来设置页面为中文编码,解决中文乱码问题。在每次调用SERVLET前后都会执行这个过滤器,统一解决编码不一致问题。本系统采用较原始的JSP+SERVLET框架,当客户端发送请求至服务器时,服务器对接收到的信息进行解析后交给web容器,web容器会通过web.xml的配置文件去找与之匹配的SERVLET。然后调用该SERVLET的service()方法或service接口实现类,通过service接口实现类去调用dao包的接口实现类来获取数据库数据。最终将数据返回给JSP页面呈现给用户。图4.2 系统包结构图4.1 学生模块功能的实现学生模块主要功能包括提出问题、查看自己或其他同学的提问、对自己提问的回答进行采纳、下载资料和根据学生提问数对学生进行排名,具体实现方法如下所示。4.1.1 提出问题游客身份无法进行提问操作,只有登录成功的学生用户能发布问题。提问分为两种,一种为对某位老师进行提问,其他老师看不到问题信息。另一种为对所有老师提问,所有老师可见。具体实现流程如图4.3所示。图4.3 提问流程图 对某位老师提问(1) 当学生登录成功后,点击首页的“教师团”后选择某位老师点击“我要提问”,此时teacher_group.JSP会链接到后台questionservlet中,传递参数为command=addAskInfo&teacherNo=$teaNo,此时的teacherNo为被选择教师的编号。(2) 首先进入的是questionservlet.service(),根据command的值来决定跳转函数,在ask()函数中从数据库中获取所有专业信息和学院信息,并将所有学院、专业对象和教师编号传递到前台ask.JSP页面。(3) 在ask.JSP中填入问题主题和详细内容,并选择分类后,参数command=addAskInfo&teacherNo=$teaNo会以post方式传递到questionservlet中,进入addAskInfo()后,将问题信息保存至数据库中。(4) 保存成功后跳转到问题发布成功提示页面,学生提问结束。 对所有老师提问(1) 当学生登录成功后,点击首页的“我要提问”按钮,top.JSP会链接至questionservlet,参数为command=addAskInfo&teacherNo=-1。此时的teacherNo被置为-1,表示对所有老师进行提问。(2) 其他步骤和上面对某位老师提问步骤完全一样,在此不做赘述。4.1.2 查看“我的提问”查看提问功能包括查看已解决问题、待解决问题和所有问题。在用户登录成功后,点击自己个人中心,就能查看问题解答情况,具体实现步骤如下。 查看待解决问题(1) 学生进入系统后,点击个人中心的“待解决问题”,链接目标至href=”questionSERVLET?command=myUnfinishedQuestion”,传递参数为command=myUnfinishedQuestion。(2) 进入questionservlet的service()方法,根据接收的参数值跳转至myUnfinishedQuestion()方法中。在此方法中调用数据库实现类的getUnfinishedAskInfoByStudentId(student)来获取该学生提出的尚未解决的问题,askInfo的status属性含义为问题是否解决,默认为0,表示未解决。首先通过sql语句:select * from aq_askInfo where isDel = 0 and studentNo = student.getStuNo()来获取该学生的所有问题,然后筛选status=0的问题即未解决问题。将未解决问题对象unfinishedAskInfos传递至前台。(3) 前台student_unfinishedQuestion.JSP通过调用unfinishedAskInfos对象的各个属性,将未问题信息显示出来。 查看已解决问题查看已解决问题处理了流程和上述类似,这里做简要介绍。(1) 点击个人中心的“已解决问题”选项卡,链接至后台href=”questionservlet?command=myFinishedQuestion”,传递参数为command=myFinishedQuestion。(2) 通过调用getUnfinishedAskInfoByStudentId(student)从数据库中获取status=1的问题。将已解决问题对象finishedAskInfos传递至前台。(3) 前台student_finishedQuestion.JSP通过调用finishedAskInfos对象的各个属性,将已解决问题显示出来。 查看所有问题(1) 点击“我的所有问题”选项卡后,链接至后台href=”questionservlet?command=myAllQuestion”,传递参数为command=myAllQuestion。(2) 后台questionservlet.myAllQuestion()方法通过调用GetAskInfosByStudentId()从数据库中获取到学生的所有提问,并将所有问题对象传递至前台。(3) 前台student_allQuestion.JSP通过调用后台传过来的stu_allAskInfos对象的各个属性,所有问题信息显示出来。4.1.3 采纳答案对尚未完结的问题可以采纳自己满意的回答,当某个回答被采纳后,aq_answerInfo.isChecked=1表示被采纳,aq_askInfo.status=1表示问题已解决。具体实现过程如图4.4所示。图4.4 采纳问题流程图采纳答案功能的流程文字解读如下。(1) 学生登录成功后,可以在个人中心里查看待解决问题,点击某个问题后,链接至href=”questionservlet?command=chooseAnswer&askNo=$unfinishedAskInfo.answerNo”,askNo为目前点击问题的编号。(2) 根据接收的参数跳转到chooseAnswer()中。在此方法中,通过调用实现类中getAskInfoViewBeans(askInfo)来获取某个问题的相关信息。具体为通过对aq_askInfo、aq_student和aq_profession三表查询,获得某个问题的提问人姓名、问题所属专业名称等信息,将其放在askInfoViewBeans。通过getAnswerInfoByAskId(askNo)获取某个问题的回答信息,将其放在answerInfos对象中。将askInfoViewBeans和answerInfo两个对象传给前台。(3) 前台readQuestionDetail.JSP将回答信息显示出来,当点击采纳答案按钮时,连接至后台questionservlet.acceptAnswer(),在此方法中,设置aq_answerInfo.isChecked=1,aq_askInfo.status=1,表示该答案被采纳,该问题已结束。4.1.4 学生提问数排名本功能是根据学生提问数量的多少进行排名,将前10位同学的名字和提问数显示在首页。设计本功能的目的在于:当本系统得到学生的普遍使用时,提问数量越多,则说明该学生更好学,可以作为考核学生的一个小标准。实现步骤如下。(1) 学生每提问成功一次,让aq_student的questionQuestion字段加1。(2) 通过StudentDaoImpl实现类的getStudentTop10ByCount()方法根据提问数量对学生进行排序。其中sql语句为:select * from aq_student where isDel = 0 order by questionCount desc limit 10。将返回的前10名学生信息结果保存在student列表中,并返回给前台。(3) 前台页面调用student列表,通过标签来循环获取学生的姓名和提问数量字段并将其显示出来。4.1.5 下载资料(1) 点击“点击下载后”,链接至后台userservlet,传递参数为command=download,fileNo=$fileShare.fileNo,这里的fileNo为下载资料的文件编号。(2) 进入userservlet.download()中,新建一个FileInputStream对象和一个ServletOutputStream对象,通过前者从服务器上读取文件,然后通过后者输出。在这个过程中有一点需要特别注意,文件名是中文时容易出现乱码,需要通过req.getHeader(“User-Agent”).contains(“MSIE”)?fileName.getBytes():fileName.getBytes(“UTF-8”);fileName=new String(byte,”ISO=8859-1”)来处理乱码问题。4.2 教师模块功能的实现4.2.1 解答问题教师的解答问题功能为:当教师登录成功后,可为学生解答未结束的问题,当回答提交成功后,系统会自动发邮件提醒学生登录查看,同时,不管自己回答是否被采纳,教师都可获得2个积分,解答问题流程如图4.5所示。图4.5 解答问题流程图实现方法如下。(1) 当教师点击某个未解决的问题时,会以url传递的方式将参数command=questionView,askId=$askInfoUnChecked.askNo传至后台questionservlet中。其中askId的值为该未解答问题的问题编号。(2) 首先会进入questionservlet.service()方法,根据command参数值跳转到questionView()中。在此方法中,执行的操作有:更新问题的浏览次数,让次数加1。通过对数据库中aq_askInfo、aq_student、aq_profession三表查询问题表的所有信息、提问学生信息及问题所属类。根据aq_askInfo表中status属性值筛选出未解答的问题,status=0表示未解决。跳转到问题回答页面。(3) 在问题回答页面,能看到其他老师的回答信息。当解答完毕点击提交回答按钮时,前台以url传递方式将command=addAnswer和askNo值传递至后台questionservlet。(4) 进入到questionservlet.addAnswer()后,执行的操作有:将解答内容及回答者信息保存至数据库中。系统给提问学生发送邮件提醒其登陆查看回答信息。(5) 跳转到提示页面,解答

温馨提示

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

评论

0/150

提交评论