最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

高校在线答疑系统的设计与实现

来源:动视网 责编:小OO 时间:2025-09-24 10:16:40
文档

高校在线答疑系统的设计与实现

高校在线答疑系统的设计与实现摘要随着高校内学生人数的日益增长,教师和上课地点的不断变动使得学生和老师之间的交流受时间和空间,导致师生间的答疑工作难以开展。为此开发一个高校在线答疑系统大有裨益。本系统是基于B/S架构,使用JSP、SERVLET、JAVASCRIPT作为编程语言,结合MYSQL数据库和JavaWeb开发的三层架构来实现学生模块、教师模块和管理员模块功能。学生模块主要功能包括学生对某位老师或所有老师提问、下载学习资料、查看并修改信息及根据提问数对学生进行排名。教师模块主要功能包
推荐度:
导读高校在线答疑系统的设计与实现摘要随着高校内学生人数的日益增长,教师和上课地点的不断变动使得学生和老师之间的交流受时间和空间,导致师生间的答疑工作难以开展。为此开发一个高校在线答疑系统大有裨益。本系统是基于B/S架构,使用JSP、SERVLET、JAVASCRIPT作为编程语言,结合MYSQL数据库和JavaWeb开发的三层架构来实现学生模块、教师模块和管理员模块功能。学生模块主要功能包括学生对某位老师或所有老师提问、下载学习资料、查看并修改信息及根据提问数对学生进行排名。教师模块主要功能包
高校在线答疑系统的设计与实现

摘要

随着高校内学生人数的日益增长,教师和上课地点的不断变动使得学生和老师之间的交流受时间和空间,导致师生间的答疑工作难以开展。为此开发一个高校在线答疑系统大有裨益。

本系统是基于B/S架构,使用JSP、SERVLET、JAVASCRIPT作为编程语言,结合MYSQL数据库和Java Web开发的三层架构来实现学生模块、教师模块和管理员模块功能。学生模块主要功能包括学生对某位老师或所有老师提问、下载学习资料、查看并修改信息及根据提问数对学生进行排名。教师模块主要功能包括回答问题并获得积分、上传资料、按积分对教师进行排名。管理员模块主要功能包括对问题、学院、专业和用户的管理操作。其中三层架构将整个系统划分为界面层、业务逻辑层和数据访问层,分层目的在于实现“高内聚低耦合”思想。

目前,大部分高校的答疑模块都是内嵌在网络教学系统中,存在的不多。本系统主要作用于学生和教师之间的答疑互动,其特点有回答质量高,利于用户管理所有提问或回答信息。

关键词:答疑系统;B/S架构;三层架构

DESIGN AND IMPLEMENTATION OF ONLINE QUESTION ANSWERING SYSTEM IN UNIVERSITIES

ABSTRACT

With 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  绪论

高校学生人数的增加,教师、课程和教师的不断变动,导致教师和学生交流越来越少,师生间的答疑工作难以开展。为此开发一个高校在线答疑系统实用性较大。随着互联网技术的广泛应用,教学活动在网上进行已越发流行。在线答疑系统便是借助网络来实行教学活动的工具,主要表现在教师与学生之间的问答互动。

1.1 研究背景及意义

现如今,人们获知信息和交流的方式随着互联网的发展而不断进步。尤其是Web2.0技术的推广,使得单向传递的信息交流模式逐渐倾向于以用户为中心、注重社会协作的网络交流模式[1]。使用者在内容发布过程中在实现与服务器交互的同时,也实现了同一网站各使用者之间的交互,所以web2.0比web1.0越发强调互动性。在本系统中,学生可以根据自己的时间安排自己的提问计划,不受时间地点,且可以向已在网站注册的任何导师提问,下载资源。对老师也一样,不一定要安排某个时间某间教室进行答疑,当老师回答了问题后,系统会自动邮件提醒学生登录查看。实现传统教育无法做到的"个性化教育"。

同时,系统有积分激励。老师每回答一个问题便可获得2个积分。同时还会根据积分对教师进行排名,对老师来说,积分越高则说明越关注学生的学习动态,与学生的互动越密切。这样一来,一方面学生的问题得到解决,提高了学习效率,另一方面,有利于加深师生感情。

本毕业设计目的是设计实现一个多学科、通用、模块化的网上学习平台,以便提高学生学习兴趣,有利于当今高校教学模式和教学方法的改革。

1.2 研究现状及发展趋势

目前,实现在线答疑系统的结构主要有和。由于结构的可扩展性、可靠性和可维护性不足,很难满足当今网络技术迅猛发展的需要[2]。而是对的一种改进,由于大部分事务都在服务器端完成的特点极大地削减了客户端的负载,使得系统升级与维护的成本和工作量得到降低。尤其一些跨平台语言出现之后,如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)学生用户即提问者,有以下四种种权限

1通过系统提出问题,并为问题选择相应分类。提问分为对某位老师提问和对所有老师提问,如果是针对某位老师提问,其他老师看不到相应的问题信息。

2查看自己提出的所有问题及解答情况。

3采纳答案,学生选择最能解决问题的回答来结束问题。

4下载资料,学生可以从系统下载学习资料。

(2)教师用户即回答者,有以下三种权限

1通过系统回答问题,问题包括所有老师可答和只对自己提问的问题。回答提交成功后系统会自动发送邮件给学生,让学生登录查看解答情况。

2查看自己解答过的所有问题详情。

3上传资料供学生下载学习。

(3)管理员用户,分为超级管理员和普通管理员两类。普通管理员除了不具有添加和删除管理员功能之外,其他权限一致,具体如下。

1添加:添加三类用户以及学院和专业信息。

2删除:删除三类用户、学院和专业信息及问题内容。为使数据更加安全,本系统的删除功能不是物理删除而是逻辑删除,数据库中的每个表都有一个字段名isDel,当isDel为1时表示已删除。

3修改:修改学生、教师和学院信息。

4查看:查看所有用户、学院专业和问题信息。

(4)三类用户都有其通用功能,通用功能设计如下。

1登录:用户登录成功的充要条件为选择与之匹配的登录类型,输入正确的用户名、密码和验证码。

2注销:当用户注销后,再进入首页查看提问情况时,只能是游客身份。

3找回密码:当学生和教师用户忘记密码时,可通过接收系统发送的带有密码的邮件来找回密码。

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)

123
studentEmail学生邮箱Varchar (50)

questionCount学生提问数int0
studentPic

头像路径

Varchar (30)

isDel

是否删除

int默认0

0表示未删

1表示已删

(2)教师用户表aq_teacher的设计

教师用户表结构如表3-2所示,用户保存教师的基本信息,其中教师邮箱用于找回密码功能,答题积分会随着回答问题的数量不断变化。在系统首页会根据积分对教师进行排名。

表3-2 教师表结构

字段字段名数据类型是否为空默认值备注
teacherNo教师编号int主键
professionNo

专业编号

int外键
teacherName教师名字Varchar (20)

teacherPwd

教师密码

Varchar (20)

123
teacherGrade教师级别Varchar (10)

teacherEmail教师邮箱varchar(50)

用来找回密码
teacherDescription教师描述Varchar (300)

points答题积分int默认0

每回答一个问题获得2积分

status状态int
teacherPic头像路径

Varchar (30)

isDel

是否删除

int默认0

0表示未删

1表示已删

(3)管理员用户表aq_user的设计

管理员用户表结构如表3-3所示,其中管理员类型分为两类,普通管理员不具有删除和添加管理员的权限,其他功能一样。

表3-3 管理员表结构

字段字段名数据类型是否为空默认值备注
userNo管理员编号

int主键
userName管理员名字

Varchar (20)

userPwd管理员密码Varchar (20)

userType

管理员类型int1表示超级管理员

0表示普通管理员

isDel

是否删除

int默认0

0表示未删

1表示已删

(4)学院信息aq_academy的设计

学院表结构如表3-4所示,设计学院表的作用是在学生提问时分类更加方便。

表3-4 学院表结构

字段字段名数据类型是否为空默认值备注
academyNo

学院编号

int主键
academyName

学院名称

Varchar (40)

isDel

是否删除

int默认0

0表示未删

1表示已删

(5)专业信息aq_profession的设计

专业表结构如表3-5所示,专业在本系统中有两层含义,对学生来说,专业表示学生属于某个专业,对问题信息来说,表示问题的所属类,问题属于哪个领域。

表3-5 专业表结构

字段字段名数据类型是否为空默认值备注
professionNo

专业编号

int主键
professionName

专业类别

Varchar (20)

academyNo

所属学院

int外键
isDel

是否删除

int默认0

0表示未删

1表示已删

(6)问题信息aq_askInfo的设计

问题信息表结构如表3-6所示,用来记录问题的详细情况。学生的每一次提问都会被保存在此数据表中。

表3-6 问题信息表结构

字段字段名数据类型是否为空默认值备注
askNo

问题编号

int主键
studentNo提问学生编号

int
teacherNo教师编号

int指定老师回答

全部可回答置-1

professionNo

问题类别int
askTopic提问主题

Varchar (80)

askContent

提问内容Varchar (4000)

askDate提问时间Date
readerCount

查看次数

int默认0

status

状态int默认0

0未解决

1已解决

isDel

是否删除

int默认0

0表示未删

1表示已删

(7)回答信息aq_answerInfo的设计

回答信息表结构如表3-7所示,教师的所有回答都会被保存在此数据表中

表3-7回答信息表结构

字段字段名数据类型是否为空默认值备注
answerNo回复编号

int主键
askNo

所回复的问题编号

int外键
studentNo提问学生编号

int
teacherNo

回复老师编号int
answerContent

回复内容

Varchar (4000)

answerDate

回复时间Date
isChecked是否采纳int默认0

0表示未采纳

1表示采纳

isDel

是否删除

int默认0

0表示未删

1表示已删

(8)文件共享aq_fileShare的设计

文件共享表结构如表3-8所示,用来记录文件上传信息及其下载情况。

表3-8 文件表结构

字段字段名数据类型是否为空默认值备注
fileNo文件编号

int主键
fileName文件名称Varchar (30)

professionNo

专业编号

int
filePath文件路径

Varchar (30)

teacherNo

教师编号int
downloadCount下载次数

int默认0

isDel

是否删除

int默认0

0表示未删

1表示已删

4  系统的实现

本系统采用三层架构的思想,将一个中间件插入在现有的客户界面和数据库服务之间,即业务逻辑层,它与表示层和数据访问层一起组成了三层架构。区分层次的目的是为了实现各个模块性强,模块间接口简单的特性。使得程序员能更专注于核心业务的分析设计和开发。三层架构能加快开发进度,同时也有利于后期的维护和更新[11]。三层架构的作用分别为。

(1)表示层(UI):用来接收用户的请求以及递交必要参数,用于与用户直接进行交互,在本层调用BLL层。

(2)业务逻辑层(BLL):主要处理业务逻辑以及各种数据验证。在需要存取数据的时候,交给DAL层处理,然后返回信息给表示层。

(3)数据访问层(DAL):不处理任何业务逻辑,只提供基本的数据访问。

从上至下逻辑处理如图4.1所示。

图4.1 三层架构图

在本系统包结构如图4.2所示,表示层包含用户直接接触的JSP页面,如登录界面、提问界面等。业务逻辑层包括cn.com.action包下面的各个SERVLET,用来接收并处理浏览器的请求,如有需要则从数据库中取出信息并返回给表示层。数据访问层为cn.com.daoImp、cn.com.daoInf和cn.com.db包,作用分别是数据库操作的实现类、数据库接口和获取数据库连接。其中cn.com.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 提问流程图

4.1.1.1 对某位老师提问

(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)保存成功后跳转到问题发布成功提示页面,学生提问结束。

4.1.1.2 对所有老师提问

(1)当学生登录成功后,点击首页的“我要提问”按钮,top.JSP会链接至questionservlet,参数为command=addAskInfo&teacherNo=-1。此时的teacherNo被置为-1,表示对所有老师进行提问。

(2)其他步骤和上面对某位老师提问步骤完全一样,在此不做赘述。

4.1.2 查看“我的提问”

查看提问功能包括查看已解决问题、待解决问题和所有问题。在用户登录成功后,点击自己个人中心,就能查看问题解答情况,具体实现步骤如下。

4.1.2.1 查看待解决问题

(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对象的各个属性,将未问题信息显示出来。

4.1.2.2 查看已解决问题

查看已解决问题处理了流程和上述类似,这里做简要介绍。

(1)点击个人中心的“已解决问题”选项卡,链接至后台href=”questionservlet?command=myFinishedQuestion”,传递参数为command=myFinishedQuestion。

(2)通过调用getUnfinishedAskInfoByStudentId(student)从数据库中获取status=1的问题。将已解决问题对象finishedAskInfos传递至前台。

(3)前台student_finishedQuestion.JSP通过调用finishedAskInfos对象的各个属性,将已解决问题显示出来。

4.1.2.3 查看所有问题

(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)跳转到提示页面,解答问题步骤完成。

4.2.2 查看“我的回答”

进入教师的个人中心页面,可点击“查看我的回答”来浏览自己的所有回答问题信息。同时可点击问题查看其它老师的回答内容。实现步骤如下。

(1)点击个人中心页面中的某个问题,前台以url传值的方式将command=chooseAnswer和askNo=${tea_allaskInfo.askNo}传至后台questionSERVLET中。

(2)根据参数跳转至questionservlet.chooseAnswer()中,执行的操作有:①通过对数据库中aq_student、aq_askinfo和aq_profession三表查询获取问题信息、提问学生信息和问题所属专类。②在aq_answer数据表中根据askNo获取该问题的所有回答信息。③将问题相关信息askInfoViewBean对象和回答内容answerInfos对象传递给前台。

(3)在readQuestionDetail.JSP页面获取后台传递的两个对象,分别调用两个对象的各个属性,将回答内容、回答者名字和回答时间等信息显示出来。

4.2.3 教师积分排名

根据积分对教师进行排行,选取前10位显示在首页。设计此功能的目的在于:从某种程度上来说,获得积分越高,说明与学生的互动越多,对学生的学习动态更加关注。实现步骤如下。

(1)更新积分,为回答教师加2个积分。

(2)通过getTeacherTop10ByPoint()方法来进行排序,其中sql语句为“select * from aq_teacher where isDel = 0 order by points desc limit 10”。通过Sqlcommand.getResult()来获取返回的结果,利用teacher对象的set()方法将结果保存在teacher列表中。

(3)在前台页面显示教师名字和教师积分。

4.2.4 上传资料

上传资料功能设计:教师点击“上传”后将资料上传到服务器中,数据库中filepath字段保存资料存放的绝对路径,如D:\\Tomcat\\webapps\\AQWeb_test\d\\7\自学问题.docx。具体设计步骤如下所示。

(1)前台表单设计。

1使用input标签,type指定为file,此时前台展现的是一个本地文件选择器,选择上传的文件。

2包含input标签的form表单要特殊处理,Method=post,因为只有post才能传递大文件,get只能传4k。Enctype="multipart/form-data"表示是有多个成分的,既有文本数据,也有文件等二进制数据。另外,取表单元素值的时候,不能再使用getParameter方法,必须使用上传组件提供的api。

(2)后台代码设计步骤。

1确保这个请求是一个正确的上传文件。

2DiskFileItemFactory类中常见的构造方法和类

分别通过setThreshold(),setRepository()来设置创建缓冲大小和磁盘缓冲路径。同时,通过构造DiskFileItemFactory()来设置大小和存放位置。

3ServletFileUpload类

ServletFileUpload upload=new ServleyFileUpload(factory);

upload.setHeaderEncoding("utf-8");

upload.setSizeMax(-1);//设置上传文件大小,-1无上限

4写文件

得到文件上传路径,比如在系统目录下创建文件名为File文件夹,那么得到路径方法如下。

String savePath = this.getServletContext().getRealPath("/File");

获取文件名item.getName();String path = savePath +"\\\\"+ fileName;

File file = new File(spath);item.write(file);item.delete();

4.3 管理员模块功能的实现

4.3.1问题管理

问题管理功能即管理员对系统的所有问题及回答情况进行管理,具体操作分为三种:查看、删除和搜索,如图4.6所示。实现方法如下所示。

图4.6 问题管理功能图

4.3.1.1 查看问题及回答信息

(1)点击前台页面的“提问信息”,通过将command参数传递至后台bgmQuesservlet。

(2)bgmQuesservlet通过req.getParameter()获取的command值跳转到askinfo()函数中。在此方法中从数据库中取出所有问题和所有学生,其中获取学生信息时,因为需要显示所在专业名,故对aq_student和aq_profession两个表查询获取。通过req.setAttribute()对问题和学生参数赋值,传递给BgAskinfo.JSP页面调用。

(3)前台页面通过调用问题对象和学生对象的属性显示问题及提问者信息。点击“查看”,将command=askall&askNo=${askinfo.askNo}参数传递至后台。

(4)在bgmQuesservlet.askview()函数中,调用getAskInfoById(askNo)来获取被点击问题的标题,调用getAnswerInfoByAskNo(askNo)来获取该问题的所有回答内容,调用getStudentById()获取提问者名字,调用getTeacherById()获取回答老师的名字。将这些函数的返回对象传递给前台页面。

(5)接收后台传递的对象,显示对象的各个属性值。

4.3.1.2 删除问题或回答

(1)删除某个问题,将command=deleteAsk和askNo两个参数传递至后台。后台调用delete方法,设置isDel=1进行逻辑删除。

(2)删除某个回答,将command=deleteAnswer和ansNo两个参数传递至后台。后台调用delete方法,设置回答表的isDel=1。

4.3.1.3 搜索问题

(1)输入关键字,点击搜索。将command=select和关键字传递至后台bgmQuseSERVLET。

(2)调用select()方法,在此方法中调用实现类的getAskInfoByAskTop()获取含有该关键字的记录并将其保存在askInfos列表中。

(3)前台调用askInfos,将其标题、内容属性显示出来。

4.3.2 学院管理

对学院的管理功能包括添加、删除、修改和查看学院,其实现方法如下。

4.3.2.1 添加学院

(1)管理员点击添加学院,跳转到addAcade.JSP页面。

(2)输入新的学院名后,点击确定。表单以post的方式将command=addAcade参数传到bgmAcademySERVLET后台。

(3)后台调用addAcademyJSP(),通过getParameter()获取输入的学院名。在inserAcade()中,把新的学院名插入数据表中,并设置isDel=0。

(4)在前台显示所有学院信息,包括新增加的信息。

4.3.2.2 删除学院

(1)管理员点击某学院后面的删除按钮,所选信息以post方式将command=deleteAll参数和学院编号传递至bgmAcademyservlet后台。

(2)在deleteAll()中通过checkbox[]数组来接收前台所选中的学院编号。然后利用for循环调用delete()逐个删除,设置学院表的isDel=1。

(3)在前台显示所有数据表里isDel=0的数据。

4.3.2.3修改学院

(1)点击学院后面的“编辑”,跳转到updateAcade.JSP页面。

(2)输入新的学院名后,点击保存。将command=updateAcade和academyNo传至bgmAcademySERVLET。

(3)后台调用updateAcade(),在此方法中,通过sql语句:update aq_academy set academyname=?,isDel=? where academyno=?来更新数据库,其中的三个问号(?)为占位符,分别由前台获取的学院名,数据库中取出的isDel和学院编号填充。

(4)将被更新的数据库显示在前台。

4.3.3 专业管理

专业管理包括根据学院名显示相应专业名称、添加及删除专业功能,具体实现方法如下。

4.3.3.1 显示专业

(1)根据学院选择专业,在前台选择学院名后,调用本页面的onchange=”profe()”方法,此时会传递command=profeByAcadeNo和profeByAcadeNo到后台bgmProfeservlet。

(2)调用后台profeByAcadeNo(),在此方法中,通过getProfeByAcadeId()来获取被选中学院的所有专业,并将所有专业记录传递至前台BgProfession.JSP页面。

(3)在前台显示。

4.3.3.2 添加专业

(1)点击前台BgProfession.JSP页面“添加专业”按钮时,将参数command=addProfess传递至bgmProfeservlet。

(2)在bgmProfeservlet.addProfessJSP()中,调用getAllAcademy()来获取所有学院信息,同时将学院对象传递给前台addProfess.JSP页面。

(3)在addProfess.JSP页面中,输入新的专业名并选择相应学院,点击“保存”后,表单以Post方式提交到bgmProfeservlet中,参数为addProfession。

(4)取出该学院下的所有专业与输入的专业名做比较,如果有同名则提示该专业已存在。当不同名,则调用专业对象的insert()方法来执行插入。

4.3.3.3 删除专业

(1)点击前台的“删除”按钮,将command=delete、profeDeletId和profeByAcadeNo传递至bgmProfeservlet中。

(2)调用deleteProfe(),在此方法中调用profeDao对象的delete()方法,设置编号为profeDeletId的专业的isDel=1。

4.3.4 用户管理

用户管理操作包括添加、修改和删除用户。其中修改用户包括修改姓名、专业、邮箱和头像。实现方法如下所示,因为实现步骤与上面的学院添加、删除和修改类似,故在这只做简要说明。

4.3.4.1 新增用户

(1)管理员点击“新增”按钮,带flag=0参数跳转到add_student.JSP页面,此flag用来标识是新增操作还是修改操作。

(2)输入姓名、学号、专业等信息点击“保存”,将command=save和flag=0传递到后台studentservlet中。通过调用数据库实现类的addStudent()函数将学生对象保存进aq_student表。

(3)在前台显示所有学生信息。

4.3.4.2 修改用户

(1)管理员点击用户后面的“修改”,带flag=1参数跳转到add_student.JSP页面中。

(2)输入需要修改的信息,点击保存,将command=save和flag=1传递到后台。在save()中调用changeStu()修改学生信息并保存。

(3)前台显示学生信息。

4.3.4.3 删除用户

(1)管理员点击用户后面的“删除”按钮,将command=deleteStu和stuNo传递到studentservlet。

(2)在deleteStu()中,调用实现类的deleteStu()方法更新studentno=stuNo的记录,设置isdel=1。

(3)在前台显示。

4.4 通用功能的实现

4.4.1 登录

三类用户都具有登录系统功能,登录成功的唯一条件为:只有用户类型、用户名、密码和验证码全都正确时,才能成功登录。若是由于忘记密码,则可通过找回密码功能来得到系统发送的带有密码的邮件。流程如图4.7所示。

图4.7 登录功能流程图

(1)首先判断输入的文本与随机生成的验证码是否正确,当验证码错误时则不继续验证。生成验证的方法为:①生成一个4位的随机数。②构建BufferedImage。③绘制图片。④绘制噪点。⑤存入session。⑥将BufferedImage保存到servlet输出流中。

(2)当验证码正确时,根据选择的用户类型,进入相应用户类型的数据库中。根据输入的用户名查找与之相同的条目,把输入的密码和数据库中密码进行比较。比较成功则验证通过,否则提示验证码或密码错误,重新跳转到登录页面。

4.4.2 注销

三类用户都具有注销功能,设置登录和注销功能是为了保障系统安全性,加强管理。其实现方法较为简单,当用户点击“注销”后,调用后台的exit()方法。在此方法中,设置loginUser为null,idType为null,并存入session中,此时身份会变成游客身份,只能进行少量的浏览操作。

4.4.3 找回密码

学生用户的邮箱是用来找回密码和接收系统查看回答提醒邮件,教师的邮箱是用来找回密码。找回密码功能是通过发送带有用户名和密码的简单邮件来实现的。

(1)认证类功能:初始化邮箱和密码。

(2)发送类:①发送邮件的props文件;②调用认证类对邮箱服务器进行登录验证。③初始化邮件发送器,包括发送者的用户、密码以及smtp服务器。④最后创建简单邮件类,包括主题和内容,调用邮件发送器进行发送。

4.4.4 修改信息

教师和学生能修改自身的基本信息,包含邮箱和密码。其他类似姓名、专业等实名信息只能通过管理员修改。修改邮箱和改密码的实现步骤一样,接下来以学生修改密码为例。

(1)学生点击“修改密码”后,跳转到student_changepwd.jsp页面中,在此页面中重复输入新密码,然后点击确定。

(2)表单以post方式将新密码传递到userservlet中,command=studentchangeinfo。在后台studentchangeinfo()中,通过req.getPatameter()获取新的密码,然后调用实现类的studao.changeStudentInfo()方法更新该用户的密码,并将其保存的对象中。sql语句为update aq_student set studentpwd = ?,studentemail = ? where studentno = ?.其中密码、邮箱都是通过调用student.getxxx()来获取。

5  系统测试

5.1 系统测试目的

系统测试是为了找出代码错误、衡量软件质量而实施的过程。测试人员根据系统开发过程中的内部流程来刻意设计一些测试用例,利用这些用例来发现系统漏洞。

系统测试是系统在投入生产前,对系统分析和系统设计进行最终审查,是系统质量保证 的关键步骤[12]。测试的终极目标找出系统 中至今尚未发现的错误和缺陷。

5.2 子模块测试

5.2.1 学生模块

(1)提问功能测试

学生提问时需要注意的地方包括提问分为两中情况以及提问的信息必须填写完善,否则会出现相应提示。测试用例如表5-1所示。

表5-1 提问功能测试用例

当提问信息输入完整时,提问成功,且能在首页看到提问主题。问题信息填写如图5.1所示。首页问题列表如图5.2所示。当主题、内容、分类任何一项填写不全时,会出现如图5.3所示的提示。

图5.1 提问内容图

图5.2 问题列表图

图5.3 问题信息填写不全提示

(2)查看提问测试

学生登录成功后,在个人中心能查看自己的待解决问题、已解决问题和所有提问,如图5.4所示。

图5.4 待解决提问图

(3)采纳问题测试

学生查看自己提问的回答时,对满意的答案可点击“采纳此答案”来结束问题,如图5.5所示。采纳成功后,运行界面如图5.6所示。

图5.5 浏览问题详情图

图5.6 采纳问题图

(4)学生排名测试

在系统首页,会根据学生提问数对学生进行排名,以此来鼓励学生提问,运行显示如图5.7所示。

图5.7 学生排名图

(5)下载资料测试

学生点开某个教师的个人介绍页面时,能看到该教师上传的所有资料以及问题回答情况。点击“点击下载”按钮后,即可将资料下载到本地,运行界面如图5.8所示。

图5.8 资料下载图

5.2.2 教师模块

(1)解答问题测试

教师可解答对所有老师提问的问题和对自己提问的问题,解答过程截图如图5.9所示。当内容填写完毕,点击提交回答后,系统会自动发邮件系统学生登录查看,邮件内容如图5.10所示。

图5.9 解答问题图

图 5.10 提醒邮件内容图

(2)查看回答测试

教师登录成功后,在个人中心能查看自己参与的所有问题,如图5.11所示。

图5.11 查看参与问题页面

(3)教师排名测试

在系统首页,根据积分对教师进行排名,以此来鼓励老师解答问题,运行效果如图5.12所示。

图5.12 教师排名图

(4)上传资料测试

在教师的个人中心页面,在我的分享选项卡中选择相应文件。点击“提交”,即可将文件上传至服务器供学生下载,数据库中保存的是文件路径。运行如图5.13所示。

图5.13 资料上传图

5.2.3 管理员模块

(1)问题管理

问题管理功能包括对问题的查看、删除和查询功能,另外还可以删除问题的某些回答。下图5.14是系统目前所有的问题。

图5.14 问题列表

现在查看第一个问题“路由器和交换机区别”的回答详情,如图5.15所示。

图5.15 消息明细列表

如果某些问题或某些回答不符合网络文明公约,管理员可删除问题或回答。删除“什么是OSPF协议”后的问题列表如图5.16所示。删除某个回答的问题回答信息如图5.17所示。

图5.16 删除问题后的列表

图5.17 删除回答后的列表

问题搜索功能是针对输入的关键字对问题标题进行搜索,运行效果如图5.18所示。

图5.18 问题搜索功能

(2)学院管理

学院管理功能包括对学院的删除、添加和修改功能。现添加“土建学院”来测试增加功能是否正常,添加学院时的界面如图5.19所示。添加成功后界面如图5.20所示。

图5.19 学院添加信息图

图5. 20 添加学院后的学院列表

现删除“能动学院”来测试删除功能是否正常,点击删除后学院列表如图5.21所示。

图5.21 删除学院后的学院列表

修改学院“计通学院”为“计通学院-test”,修改成功如图5.22所示。

图5.22 修改学院后的学院列表

(3)专业管理

专业管理功能包括根据学院查看专业、添加专业和删除专业功能。下图是点开“专业管理”界面。当选择相应学院后,如计通学院,其专业列表如图5.23所示。

图5.23 学院专业

现验证添加专业功能是否正常,输入计算机科学与技术,选择计通学院,点击保存后,计通学院的专业列表如图5.24所示。

图5.24 添加专业后的专业列表

现删除“软件工程”专业来验证删除功能的正常,删除后界面如图5.25所示。

图5.25 删除专业后的专业列表

(4)用户管理

用户管理包括对三类用户的操作,分别是学生、教师和管理员用户。具体操作有增、删、改、查。

1学生用户测试

现测试添加功能是否正常,新增信息如图5.26所示。点击保存后,图5.27表示新增成功。

图5.26 添加学生信息图

图5.27 添加学生后的学生列表

删除姓名为“赵凯鹏”的同学后,新的学生列表如图5.28所示。

图5.28 删除学生后的学生列表

现修改姓名为“何杜”的名字为“何杜-test”,专业改为“英语”,修改后列表如下图5.29所示。

图5.29 修改学生后的学生列表

2教师用户测试

现验证教师用户的增添功能是否正常,添加信息如图5.30所示,图5.31表示新增教师用户成功。 

图5.30 教师添加页面

图5.31 教师添加成功图

现删除“余飞”老师来验证删除功能的正常性,结果如图5.32所示。

图5.32 教师删除成功图

现验证修改功能的正常性,修改姓名“夏卓群”为“夏卓群-test”结果如图5.33和图5.34所示。

图5.33 教师信息原图

图5.34 教师信息被修改后图

3管理员用户测试

现验证添加管理员功能是否正常,添加信息如图5.35所示。添加后管理员列表如图5.36所示。

图5.35 管理员添加页面

图5.36 添加管理员成功图

和超级管理员相比,普通管理员没有新增和删除管理员权限,其他功能一样,如图5.37所示。

图5.37 普通管理员列表

5.2.4 通用功能测试

(1)登录功能测试

登录测试是为了保证系统登录功能的正确实现。只有当用户输入了正确的用户名、密码和验证码才能成功登录,否则会提示相应错误。具体测试用例如表5-1所示。

表5-1 登录功能测试用例

1当用户名或密码输入错误时,会跳转到一个错误提示页面,截图如图5.38所示。

图5.38 登录失败提示

2对登录过程的判断流程为:如果没输入用户名、密码和验证码就点击登录时,会提示用户名或密码不能为空。当验证码错误,不管用户名和密码正确与否都不能成功登录,此时不去数据库中进行比较,只对验证码进行错误提示。运行截图如下图5.39所示。

图5.39 验证码输入错误提示

(2)注销功能测试

三类用户点击注销功能后,尝试进行如提问、回答、查看问题答案等操作时,系统会提示目前用户正是游客身份,没有权限进行此类操作。运行效果如图5.40所示。

图5.40 游客身份提示

(3)修改基本信息

学生和教师可修改自身密码和邮箱,测试用例如表5-2所示。

表5-2 修改功能测试用例表

当前后两次输入相同的非空密码时,修改成功,运行如图5.41所示。

图5.41 修改成功提示

当输入空密码或者两次密码输入不一致时,当前页面会提示。运行如图5.42和5.43所示。

图5.42 输入空密码提示图

图5.43 两次密码输入不一致提示图

(4)找回密码

若学生和教师用户忘记登录密码无法登录时,可通过登录页面的找回密码功能找回保存在数据库中的密码,找回密码功能测试用例如表5-3所示。

表5-3 找回密码测试用例表

1用户类型和用户名输入都正确时,系统会自动发送带密码的邮箱至用户个人信息中保存的邮件地址,邮件内容如下图5.44所示。

图5.44 密码邮件内容图

2当用户名和选择的用户类型不匹配时,点击找回密码后,会进教师用户数据表中查找是否有hedu用户,如果取出的内容为null,会提示用户名不正确或与用户类型不匹配。运行效果如下图5.45所示。

图5.45 找回密码输入错误提示图

6  总结与展望

6.1 总结

本论文简要讲述了开发高校在线答疑系统的目的与意义,在第四章对每项功能的实现方法进行了详细介绍。系统采用表示层、业务逻辑层和数据访问层使得层级分明,有利于系统后期维护。通过分层结构、和根据功能需求对数据库做的详细设计,最后实现了系统的各模块。本系统和网络上现有的答疑系特之处在于:(1)回答质量有保障,因为本系统是完全针对学生和老师之间的互动答疑来实现的,故回答者都是问题所属专业的老师,回答质量具有一定权威性。(2)用户没有注册功能,都是管理员实名添加。和非实名答疑系统相比,更利于管理员的日常管理与维护。(3)对用户来说,系统简单易学。

本系统的优点有:因为系统是完全针对学生和老师之间的互动答疑来实现的,故其优点有:(1)回答质量有保障,回答问题的都是问题所属专业的老师,回答质量具有一定权威性。(2)用户全部实名,相比网络上现有的非实名答疑系统,更利于管理员的日常管理与维护。(3)系统功能专一,学生用户和教师用户皆易上手。

通过几个月的系统开发经历,使得以前在课堂内学的知识更加具体化,对java web开发和数据库设计也更加清晰,同时也意识到编程语言基础课程的重要性。这是第一次完成一个较为规范的系统,完成工程中不断的返工和修改使我深刻意识到需求分析的重要性,不能想到哪里做哪里,没有统一的规划,只会事倍功半。

6.2 展望

本系统在开发过程中涵盖了课堂内各科理论基础与在课堂外扩展的技术,目前系统还存在诸多问题有待解决,需要在日后的实际工作中继续加强和完善。为了系统能在师生之间发挥更大作用,有以下几个方面需要做进一步研究和开发。

(1)系统功能过于单一,提问时只能进行文本输入,不能发送图片或语音等,另外可尝试增加聊天室、短信提醒等功能。

(2)界面不够美观,可以通过学习一些美化界面的网页设计技术,以此提高使用频率。

(3)本系统是纯人际互动的系统,在今后的完善中,应着重强调智能性的提升。一个智能的系统应该有自我学习能力,为提出的问题准确推荐答案等。

以上这些问题需要在以后的工作和学习中不断完善。

参考文献

[1]贾佳,宋恩梅,苏环. 社会化问答平台的答案质量评估——以“知乎”、“百度知道”为例[J]. 信息资源管理学报,2013,02:19-28.

[2]赵宏伟,秦昌明. 基于B/S 3层体系结构的软件设计方法研究[J]. 实验室研究与探索,2011,07:-66.

[3]Song Liu,Yi-Xin Zhong,Fu-Ji Ren.Interactive Question Answering Based on FAQ[j].Springer Berlin Heidelberg.2013:73-84

[4]何向阳,熊才平,夏秀明. 网络信息资源发展利用研究——以“百度知道”为例[J]. 电化教育研究,2011,10:66-71.

[5]展宁,吴飞. 知识共享型网站的社会学考察——基于“新浪爱问共享资料”的个案探析[J]. 新闻记者,2011,09:39-43.

[6]林宏伟. 基于Agent网络课程答疑系统的研究与设计[D].贵州师范大学,2008.

[7]Takayuki Ito,Yuta Iwama. Implementation of Question Answering System Based on Reference-Based Ranking Algorithm[J].Springer International Publishing.2014:160-169.

[8]张英,杜炜. JDBC数据库连接池技术简介及设计[J]. 电脑知识与技术,2010,08:1793-1794+1803.

[9]任智乾. JSP技术在Web数据库中的应用[J]. 信息与电脑(理论版),2011,06:161+163.

[10]明日科技,王国辉等.JSP数据库系统开发完全手册 [M].北京:人民邮电出版社,2006:111.

[11]陈奋. 浅谈三层架构在软件开发中的应用[J]. 厦门城市职业学院学报,2012,01:62-69.

[12]张新华,何永前. 软件测试方法概述[J]. 科技视界,2012,04:35-37.

致谢

本系统和论文能顺利结束,离不开我的指导老师史长琼老师的耐心指点。从开始的系统选题到系统功能分析到最后的论文撰写,是史长琼老师认真负责的态度和松弛有度的分寸给了我极大的帮助,使得我的论文结构一步一步完善,内容日趋丰满。史长琼老师不仅在学习上给予我精心指导,同时在就业方向和工作选择时提供诸多建设性建议。在此衷心感谢四年来史长琼老师对我的关心和指导。

同时,也感谢班主任廖年冬老师和其他任课老师四年来的谆谆教诲,他们在如此重要的四年里教我们树立正确的人生观、价值观和世界观。在代码编写过程中,江琳、刘新琼、方进、王栋等同学在我程序出现问题时辅助我一步一步调试,攻克难点。在这里请接收我诚挚的谢意。最后要感谢目光从未离开我,在背后一直默默付出对的培养我长大的父母,因为你们的支持与理解,我才能在学校专心完成学业。

最后,再次对关心、帮助我的老师和同学表示衷心地感谢,谢谢你们!

附录

文档

高校在线答疑系统的设计与实现

高校在线答疑系统的设计与实现摘要随着高校内学生人数的日益增长,教师和上课地点的不断变动使得学生和老师之间的交流受时间和空间,导致师生间的答疑工作难以开展。为此开发一个高校在线答疑系统大有裨益。本系统是基于B/S架构,使用JSP、SERVLET、JAVASCRIPT作为编程语言,结合MYSQL数据库和JavaWeb开发的三层架构来实现学生模块、教师模块和管理员模块功能。学生模块主要功能包括学生对某位老师或所有老师提问、下载学习资料、查看并修改信息及根据提问数对学生进行排名。教师模块主要功能包
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top