版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
高校在线答疑系统的设计与实现高校在线答疑系统的设计与实现摘要随着高校内学生人数的日益增长,教师和上课地点的不断变动使得学生和老师之间的交流受时间和空间限制,导致师生间的答疑工作难以开展。为此开发一个高校在线答疑系统大有裨益。本系统是基于B/S架构,使用JSP、SERVLET、JAVASCRIPT作为编程语言,结合MYSQL数据库和JavaWeb开发的三层架构来实现学生模块、教师模块和管理员模块功能。学生模块主要功能包括学生对某位老师或所有老师提问、下载学习资料、查看并修改信息及根据提问数对学生进行排名。教师模块主要功能包括回答问题并获得积分、上传资料、按积分对教师进行排名。管理员模块主要功能包括对问题、学院、专业和用户的管理操作。其中三层架构将整个系统划分为界面层、业务逻辑层和数据访问层,分层目的在于实现“高内聚低耦合”思想。目前,大部分高校的答疑模块都是内嵌在网络教学系统中,独立存在的不多。本系统主要作用于学生和教师之间的答疑互动,其特点有回答质量高,利于用户管理所有提问或回答信息。关键词:答疑系统;B/S架构;三层架构DESIGNANDIMPLEMENTATIONOFONLINEQUESTIONANSWERINGSYSTEMINUNIVERSITIESABSTRACTWiththeincreasingnumberofstudentsandcontinuouschangeofteachets,coursesandclassroom,thecommunicationbetweenstudentsandteachersbytimeandspaceconstraints,whichresultinginaQ&Abetweenteachersandstudentsisdifficulttocarryout.Soitisusefultodevelopanonlinequestionansweringsysteminuniversities.Thecompletionofstudentmudule,teachermoduleandadministratormoduleisbasedonJSP,SERVLET,JAVASCRIPTprogramminglanguageandMYSQLandthreetierarchitectureofJavaWeb.ThemainfunctionofStudentmoduleincludesastudentaskquestionstooneparticularteacherorallteachers,downloadlearningfiles,viewandmodifythebaseinformation,rankstudentaccordingtotheirnumberofquestions.Themainfunctionofteachermoduleincludesanswerquestionsandgetpoints,uploadfiles,rankteacheraccordingtothetheirpoints.Administratormodulemainfunctionsincludeproblemmanagement,collegemanagement,professionalmanagementandusermanagement.Thesystemisdividedintointerfacelayer,businesslogiclayeranddataaccesslayer,thepurposeistodeepenthe"highcohesionandlowcoupling"idea.Atpresent,mostofthequestionandanswermoduleisembeddedinthenetworkteachingsystem,therearenotmanyindependentsystem.Theaimofthissystemistointeractwithstudentsandteachers.Itsfeaturesarehighquality,tohelpusersmanageallquestionsoranswers.Keywords:questionansweringsystem;B/Sstructure;Threetierarchitecture目录1绪论 [11]。三层架构的作用分别为。表示层(UI):用来接收用户的请求以及递交必要参数,用于与用户直接进行交互,在本层调用BLL层。业务逻辑层(BLL):主要处理业务逻辑以及各种数据验证。在需要存取数据的时候,交给DAL层处理,然后返回信息给表示层。数据访问层(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提问流程图对某位老师提问当学生登录成功后,点击首页的“教师团”后选择某位老师点击“我要提问”,此时teacher_group.JSP会链接到后台questionservlet中,传递参数为command=addAskInfo&teacherNo=${teaNo},此时的teacherNo为被选择教师的编号。首先进入的是questionservlet.service(),根据command的值来决定跳转函数,在ask()函数中从数据库中获取所有专业信息和学院信息,并将所有学院、专业对象和教师编号传递到前台ask.JSP页面。在ask.JSP中填入问题主题和详细内容,并选择分类后,参数command=addAskInfo&teacherNo=${teaNo}会以post方式传递到questionservlet中,进入addAskInfo()后,将问题信息保存至数据库中。保存成功后跳转到问题发布成功提示页面,学生提问结束。对所有老师提问当学生登录成功后,点击首页的“我要提问”按钮,top.JSP会链接至questionservlet,参数为command=addAskInfo&teacherNo=-1。此时的teacherNo被置为-1,表示对所有老师进行提问。其他步骤和上面对某位老师提问步骤完全一样,在此不做赘述。4.1.2查看“我的提问”查看提问功能包括查看已解决问题、待解决问题和所有问题。在用户登录成功后,点击自己个人中心,就能查看问题解答情况,具体实现步骤如下。查看待解决问题学生进入系统后,点击个人中心的“待解决问题”,链接目标至href=”questionSERVLET?command=myUnfinishedQuestion”,传递参数为command=myUnfinishedQuestion。进入questionservlet的service()方法,根据接收的参数值跳转至myUnfinishedQuestion()方法中。在此方法中调用数据库实现类的getUnfinishedAskInfoByStudentId(student)来获取该学生提出的尚未解决的问题,askInfo的status属性含义为问题是否解决,默认为0,表示未解决。首先通过sql语句:select*fromaq_askInfowhereisDel=0andstudentNo={student.getStuNo()}来获取该学生的所有问题,然后筛选status=0的问题即未解决问题。将未解决问题对象unfinishedAskInfos传递至前台。前台student_unfinishedQuestion.JSP通过调用unfinishedAskInfos对象的各个属性,将未问题信息显示出来。查看已解决问题查看已解决问题处理了流程和上述类似,这里做简要介绍。点击个人中心的“已解决问题”选项卡,链接至后台href=”questionservlet?command=myFinishedQuestion”,传递参数为command=myFinishedQuestion。通过调用getUnfinishedAskInfoByStudentId(student)从数据库中获取status=1的问题。将已解决问题对象finishedAskInfos传递至前台。前台student_finishedQuestion.JSP通过调用finishedAskInfos对象的各个属性,将已解决问题显示出来。查看所有问题点击“我的所有问题”选项卡后,链接至后台href=”questionservlet?command=myAllQuestion”,传递参数为command=myAllQuestion。后台questionservlet.myAllQuestion()方法通过调用GetAskInfosByStudentId()从数据库中获取到学生的所有提问,并将所有问题对象传递至前台。前台student_allQuestion.JSP通过调用后台传过来的stu_allAskInfos对象的各个属性,所有问题信息显示出来。4.1.3采纳答案对尚未完结的问题可以采纳自己满意的回答,当某个回答被采纳后,aq_answerInfo.isChecked=1表示被采纳,aq_askInfo.status=1表示问题已解决。具体实现过程如图4.4所示。图4.4采纳问题流程图采纳答案功能的流程文字解读如下。学生登录成功后,可以在个人中心里查看待解决问题,点击某个问题后,链接至href=”questionservlet?command=chooseAnswer&askNo=${unfinishedAskInfo.answerNo}”,askNo为目前点击问题的编号。根据接收的参数跳转到chooseAnswer()中。在此方法中,通过调用实现类中getAskInfoViewBeans(askInfo)来获取某个问题的相关信息。具体为通过对aq_askInfo、aq_student和aq_profession三表查询,获得某个问题的提问人姓名、问题所属专业名称等信息,将其放在askInfoViewBeans。通过getAnswerInfoByAskId(askNo)获取某个问题的回答信息,将其放在answerInfos对象中。将askInfoViewBeans和answerInfo两个对象传给前台。前台readQuestionDetail.JSP将回答信息显示出来,当点击采纳答案按钮时,连接至后台questionservlet.acceptAnswer(),在此方法中,设置aq_answerInfo.isChecked=1,aq_askInfo.status=1,表示该答案被采纳,该问题已结束。4.1.4学生提问数排名本功能是根据学生提问数量的多少进行排名,将前10位同学的名字和提问数显示在首页。设计本功能的目的在于:当本系统得到学生的普遍使用时,提问数量越多,则说明该学生更好学,可以作为考核学生的一个小标准。实现步骤如下。学生每提问成功一次,让aq_student的questionQuestion字段加1。通过StudentDaoImpl实现类的getStudentTop10ByCount()方法根据提问数量对学生进行排序。其中sql语句为:select*fromaq_studentwhereisDel=0orderbyquestionCountdesclimit10。将返回的前10名学生信息结果保存在student列表中,并返回给前台。前台页面调用student列表,通过<c:foreach></c:foreach>标签来循环获取学生的姓名和提问数量字段并将其显示出来。4.1.5下载资料点击“点击下载后”,链接至后台userservlet,传递参数为command=download,fileNo=${fileShare.fileNo},这里的fileNo为下载资料的文件编号。进入userservlet.download()中,新建一个FileInputStream对象和一个ServletOutputStream对象,通过前者从服务器上读取文件,然后通过后者输出。在这个过程中有一点需要特别注意,文件名是中文时容易出现乱码,需要通过req.getHeader(“User-Agent”).contains(“MSIE”)?fileName.getBytes():fileName.getBytes(“UTF-8”);fileName=newString(byte,”ISO=8859-1”)来处理乱码问题。4.2教师模块功能的实现4.2.1解答问题教师的解答问题功能为:当教师登录成功后,可为学生解答未结束的问题,当回答提交成功后,系统会自动发邮件提醒学生登录查看,同时,不管自己回答是否被采纳,教师都可获得2个积分,解答问题流程如图4.5所示。图4.5解答问题流程图实现方法如下。当教师点击某个未解决的问题时,会以url传递的方式将参数command=questionView,askId=${askInfoUnChecked.askNo}传至后台questionservlet中。其中askId的值为该未解答问题的问题编号。首先会进入questionservlet.service()方法,根据command参数值跳转到questionView()中。在此方法中,执行的操作有:①更新问题的浏览次数,让次数加1。②通过对数据库中aq_askInfo、aq_student、aq_profession三表查询问题表的所有信息、提问学生信息及问题所属类。③根据aq_askInfo表中status属性值筛选出未解答的问题,status=0表示未解决。④跳转到问题回答页面。在问题回答页面,能看到其他老师的回答信息。当解答完毕点击提交回答按钮时,前台以url传递方式将command=addAnswer和askNo值传递至后台questionservlet。进入到questionservlet.addAnswer()后,执行的操作有:①将解答内容及回答者信息保存至数据库中。②系统给提问学生发送邮件提醒其登陆查看回答信息。跳转到提示页面,解答问题步骤完成。4.2.2查看“我的回答”进入教师的个人中心页面,可点击“查看我的回答”来浏览自己的所有回答问题信息。同时可点击问题查看其它老师的回答内容。实现步骤如下。点击个人中心页面中的某个问题,前台以url传值的方式将command=chooseAnswer和askNo=${tea_allaskInfo.askNo}传至后台questionSERVLET中。根据参数跳转至questionservlet.chooseAnswer()中,执行的操作有:①通过对数据库中aq_student、aq_askinfo和aq_profession三表查询获取问题信息、提问学生信息和问题所属专类。②在aq_answer数据表中根据askNo获取该问题的所有回答信息。③将问题相关信息askInfoViewBean对象和回答内容answerInfos对象传递给前台。在readQuestionDetail.JSP页面获取后台传递的两个对象,分别调用两个对象的各个属性,将回答内容、回答者名字和回答时间等信息显示出来。4.2.3教师积分排名根据积分对教师进行排行,选取前10位显示在首页。设计此功能的目的在于:从某种程度上来说,获得积分越高,说明与学生的互动越多,对学生的学习动态更加关注。实现步骤如下。更新积分,为回答教师加2个积分。通过getTeacherTop10ByPoint()方法来进行排序,其中sql语句为“select*fromaq_teacherwhereisDel=0orderbypointsdesclimit10”。通过Sqlcommand.getResult()来获取返回的结果,利用teacher对象的set()方法将结果保存在teacher列表中。在前台页面显示教师名字和教师积分。4.2.4上传资料上传资料功能设计:教师点击“上传”后将资料上传到服务器中,数据库中filepath字段保存资料存放的绝对路径,如D:\Tomcat\webapps\AQWeb_test\upload\7\自学问题.docx。具体设计步骤如下所示。前台表单设计。使用input标签,type指定为file,此时前台展现的是一个本地文件选择器,选择上传的文件。包含input标签的form表单要特殊处理,Method=post,因为只有post才能传递大文件,get只能传4k。Enctype="multipart/form-data"表示是有多个成分的,既有文本数据,也有文件等二进制数据。另外,取表单元素值的时候,不能再使用getParameter方法,必须使用上传组件提供的api。后台代码设计步骤。确保这个请求是一个正确的上传文件。DiskFileItemFactory类中常见的构造方法和类分别通过setThreshold(),setRepository()来设置创建缓冲大小和磁盘缓冲路径。同时,通过构造DiskFileItemFactory()来设置大小和存放位置。ServletFileUpload类ServletFileUploadupload=newServleyFileUpload(factory);
upload.setHeaderEncoding("utf-8");upload.setSizeMax(-1);//设置上传文件限制大小,-1无上限写文件得到文件上传路径,比如在系统目录下创建文件名为File文件夹,那么得到路径方法如下。StringsavePath=this.getServletContext().getRealPath("/File");获取文件名item.getName();Stringpath=savePath+"\\"+fileName;Filefile=newFile(spath);item.write(file);item.delete();4.3管理员模块功能的实现4.3.1问题管理问题管理功能即管理员对系统的所有问题及回答情况进行管理,具体操作分为三种:查看、删除和搜索,如图4.6所示。实现方法如下所示。图4.6问题管理功能图查看问题及回答信息点击前台页面的“提问信息”,通过<ahref=“bgmQuesservlet?command=askinfo”>将command参数传递至后台bgmQuesservlet。bgmQuesservlet通过req.getParameter()获取的command值跳转到askinfo()函数中。在此方法中从数据库中取出所有问题和所有学生,其中获取学生信息时,因为需要显示所在专业名,故对aq_student和aq_profession两个表查询获取。通过req.setAttribute()对问题和学生参数赋值,传递给BgAskinfo.JSP页面调用。前台页面通过调用问题对象和学生对象的属性显示问题及提问者信息。点击“查看”,将command=askall&askNo=${askinfo.askNo}参数传递至后台。在bgmQuesservlet.askview()函数中,调用getAskInfoById(askNo)来获取被点击问题的标题,调用getAnswerInfoByAskNo(askNo)来获取该问题的所有回答内容,调用getStudentById()获取提问者名字,调用getTeacherById()获取回答老师的名字。将这些函数的返回对象传递给前台页面。接收后台传递的对象,显示对象的各个属性值。删除问题或回答删除某个问题,将command=deleteAsk和askNo两个参数传递至后台。后台调用delete方法,设置isDel=1进行逻辑删除。删除某个回答,将command=deleteAnswer和ansNo两个参数传递至后台。后台调用delete方法,设置回答表的isDel=1。搜索问题输入关键字,点击搜索。将command=select和关键字传递至后台bgmQuseSERVLET。调用select()方法,在此方法中调用实现类的getAskInfoByAskTop()获取含有该关键字的记录并将其保存在askInfos列表中。前台调用askInfos,将其标题、内容属性显示出来。4.3.2学院管理对学院的管理功能包括添加、删除、修改和查看学院,其实现方法如下。添加学院管理员点击添加学院,跳转到addAcade.JSP页面。输入新的学院名后,点击确定。表单以post的方式将command=addAcade参数传到bgmAcademySERVLET后台。后台调用addAcademyJSP(),通过getParameter()获取输入的学院名。在inserAcade()中,把新的学院名插入数据表中,并设置isDel=0。在前台显示所有学院信息,包括新增加的信息。删除学院管理员点击某学院后面的删除按钮,所选信息以post方式将command=deleteAll参数和学院编号传递至bgmAcademyservlet后台。在deleteAll()中通过checkbox[]数组来接收前台所选中的学院编号。然后利用for循环调用delete()逐个删除,设置学院表的isDel=1。在前台显示所有数据表里isDel=0的数据。修改学院点击学院后面的“编辑”,跳转到updateAcade.JSP页面。输入新的学院名后,点击保存。将command=updateAcade和academyNo传至bgmAcademySERVLET。后台调用updateAcade(),在此方法中,通过sql语句:updateaq_academysetacademyname=?,isDel=?whereacademyno=?来更新数据库,其中的三个问号(?)为占位符,分别由前台获取的学院名,数据库中取出的isDel和学院编号填充。将被更新的数据库显示在前台。4.3.3专业管理专业管理包括根据学院名显示相应专业名称、添加及删除专业功能,具体实现方法如下。显示专业根据学院选择专业,在前台选择学院名后,调用本页面的onchange=”profe()”方法,此时会传递command=profeByAcadeNo和profeByAcadeNo到后台bgmProfeservlet。调用后台profeByAcadeNo(),在此方法中,通过getProfeByAcadeId()来获取被选中学院的所有专业,并将所有专业记录传递至前台BgProfession.JSP页面。在前台显示。添加专业点击前台BgProfession.JSP页面“添加专业”按钮时,将参数command=addProfess传递至bgmProfeservlet。在bgmProfeservlet.addProfessJSP()中,调用getAllAcademy()来获取所有学院信息,同时将学院对象传递给前台addProfess.JSP页面。在addProfess.JSP页面中,输入新的专业名并选择相应学院,点击“保存”后,表单以Post方式提交到bgmProfeservlet中,参数为addProfession。取出该学院下的所有专业与输入的专业名做比较,如果有同名则提示该专业已存在。当不同名,则调用专业对象的insert()方法来执行插入。删除专业点击前台的“删除”按钮,将command=delete、profeDeletId和profeByAcadeNo传递至bgmProfeservlet中。调用deleteProfe(),在此方法中调用profeDao对象的delete()方法,设置编号为profeDeletId的专业的isDel=1。4.3.4用户管理用户管理操作包括添加、修改和删除用户。其中修改用户包括修改姓名、专业、邮箱和头像。实现方法如下所示,因为实现步骤与上面的学院添加、删除和修改类似,故在这只做简要说明。新增用户管理员点击“新增”按钮,带flag=0参数跳转到add_student.JSP页面,此flag用来标识是新增操作还是修改操作。输入姓名、学号、专业等信息点击“保存”,将command=save和flag=0传递到后台studentservlet中。通过调用数据库实现类的addStudent()函数将学生对象保存进aq_student表。在前台显示所有学生信息。修改用户管理员点击用户后面的“修改”,带flag=1参数跳转到add_student.JSP页面中。输入需要修改的信息,点击保存,将command=save和flag=1传递到后台。在save()中调用changeStu()修改学生信息并保存。前台显示学生信息。删除用户管理员点击用户后面的“删除”按钮,将command=deleteStu和stuNo传递到studentservlet。在deleteStu()中,调用实现类的deleteStu()方法更新studentno=stuNo的记录,设置isdel=1。在前台显示。4.4通用功能的实现4.4.1登录三类用户都具有登录系统功能,登录成功的唯一条件为:只有用户类型、用户名、密码和验证码全都正确时,才能成功登录。若是由于忘记密码,则可通过找回密码功能来得到系统发送的带有密码的邮件。流程如图4.7所示。图4.7登录功能流程图首先判断输入的文本与随机生成的验证码是否正确,当验证码错误时则不继续验证。生成验证的方法为:①生成一个4位的随机数。②构建BufferedImage。③绘制图片。④绘制噪点。⑤存入session。⑥将BufferedImage保存到servlet输出流中。当验证码正确时,根据选择的用户类型,进入相应用户类型的数据库中。根据输入的用户名查找与之相同的条目,把输入的密码和数据库中密码进行比较。比较成功则验证通过,否则提示验证码或密码错误,重新跳转到登录页面。4.4.2注销三类用户都具有注销功能,设置登录和注销功能是为了保障系统安全性,加强管理。其实现方法较为简单,当用户点击“注销”后,调用后台的exit()方法。在此方法中,设置loginUser为null,idType为null,并存入session中,此时身份会变成游客身份,只能进行少量的浏览操作。4.4.3找回密码学生用户的邮箱是用来找回密码和接收系统查看回答提醒邮件,教师的邮箱是用来找回密码。找回密码功能是通过发送带有用户名和密码的简单邮件来实现的。认证类功能:初始化邮箱和密码。发送类:①发送邮件的props文件;②调用认证类对邮箱服务器进行登录验证。③初始化邮件发送器,包括发送者的用户、密码以及smtp服务器。④最后创建简单邮件类,包括主题和内容,调用邮件发送器进行发送。4.4.4修改信息教师和学生能修改自身的基本信息,包含邮箱和密码。其他类似姓名、专业等实名信息只能通过管理员修改。修改邮箱和改密码的实现步骤一样,接下来以学生修改密码为例。学生点击“修改密码”后,跳转到student_changepwd.jsp页面中,在此页面中重复输入新密码,然后点击确定。表单以post方式将新密码传递到userservlet中,command=studentchangeinfo。在后台studentchangeinfo()中,通过req.getPatameter()获取新的密码,然后调用实现类的studao.changeStudentInfo()方法更新该用户的密码,并将其保存的对象中。sql语句为updateaq_studentsetstudentpwd=?,studentemail=?wherestudentno=?.其中密码、邮箱都是通过调用student.getxxx()来获取。5系统测试5.1系统测试目的系统测试是为了找出代码错误、衡量软件质量而实施的过程。测试人员根据系统开发过程中的内部流程来刻意设计一些测试用例,利用这些用例来发现系统漏洞。系统测试是系统在投入生产前,对系统分析和系统设计进行最终审查,是系统质量保证的关键步骤REF_Ref452425583\r\h[12]。测试的终极目标找出系统中至今尚未发现的错误和缺陷。5.2子模块测试5.2.1学生模块提问功能测试学生提问时需要注意的地方包括提问分为两中情况以及提问的信息必须填写完善,否则会出现相应提示。测试用例如表5-1所示。表5-1提问功能测试用例当提问信息输入完整时,提问成功,且能在首页看到提问主题。问题信息填写如图5.1所示。首页问题列表如图5.2所示。当主题、内容、分类任何一项填写不全时,会出现如图5.3所示的提示。图5.1提问内容图图5.2问题列表图图5.3问题信息填写不全提示查看提问测试学生登录成功后,在个人中心能查看自己的待解决问题、已解决问题和所有提问,如图5.4所示。图5.4待解决提问图采纳问题测试学生查看自己提问的回答时,对满意的答案可点击“采纳此答案”来结束问题,如图5.5所示。采纳成功后,运行界面如图5.6所示。图5.5浏览问题详情图图5.6采纳问题图学生排名测试在系统首页,会根据学生提问数对学生进行排名,以此来鼓励学生提问,运行显示如图5.7所示。图5.7学生排名图下载资料测试学生点开某个教师的个人介绍页面时,能看到该教师上传的所有资料以及问题回答情况。点击“点击下载”按钮后,即可将资料下载到本地,运行界面如图5.8所示。图5.8资料下载图5.2.2教师模块解答问题测试教师可解答对所有老师提问的问题和对自己提问的问题,解答过程截图如图5.9所示。当内容填写完毕,点击提交回答后,系统会自动发邮件系统学生登录查看,邮件内容如图5.10所示。图5.9解答问题图图5.10提醒邮件内容图查看回答测试教师登录成功后,在个人中心能查看自己参与的所有问题,如图5.11所示。图5.11查看参与问题页面教师排名测试在系统首页,根据积分对教师进行排名,以此来鼓励老师解答问题,运行效果如图5.12所示。图5.12教师排名图上传资料测试在教师的个人中心页面,在我的分享选项卡中选择相应文件。点击“提交”,即可将文件上传至服务器供学生下载,数据库中保存的是文件路径。运行如图5.13所示。图5.13资料上传图5.2.3管理员模块问题管理问题管理功能包括对问题的查看、删除和查询功能,另外还可以删除问题的某些回答。下图5.14是系统目前所有的问题。图5.14问题列表现在查看第一个问题“路由器和交换机区别”的回答详情,如图5.15所示。图5.15消息明细列表如果某些问题或某些回答不符合网络文明公约,管理员可删除问题或回答。删除“什么是OSPF协议”后的问题列表如图5.16所示。删除某个回答的问题回答信息如图5.17所示。图5.16删除问题后的列表图5.17删除回答后的列表问题搜索功能是针对输入的关键字对问题标题进行搜索,运行效果如图5.18所示。图5.18问题搜索功能学院管理学院管理功能包括对学院的删除、添加和修改功能。现添加“土建学院”来测试增加功能是否正常,添加学院时的界面如图5.19所示。添加成功后界面如图5.20所示。图5.19学院添加信息图图5.20添加学院后的学院列表现删除“能动学院”来测试删除功能是否正常,点击删除后学院列表如图5.21所示。图5.21删除学院后的学院列表修改学院“计通学院”为“计通学院-test”,修改成功如图5.22所示。图5.22修改学院后的学院列表专业管理专业管理功能包括根据学院查看专业、添加专业和删除专业功能。下图是点开“专业管理”界面。当选择相应学院后,如计通学院,其专业列表如图5.23所示。图5.23学院专业现验证添加专业功能是否正常,输入计算机科学与技术,选择计通学院,点击保存后,计通学院的专业列表如图5.24所示。图5.24添加专业后的专业列表现删除“软件工程”专业来验证删除功能的正常,删除后界面如图5.25所示。图5.25删除专业后的专业列表用户管理用户管理包括对三类用户的操作,分别是学生、教师和管理员用户。具体操作有增、删、改、查。学生用户测试现测试添加功能是否正常,新增信息如图5.26所示。点击保存后,图5.27表示新增成功。图5.26添加学生信息图图5.27添加学生后的学生列表删除姓名为“赵凯鹏”的同学后,新的学生列表如图5.28所示。图5.28删除学生后的学生列表现修改姓名为“何杜”的名字为“何杜-test”,专业改为“英语”,修改后列表如下图5.29所示。图5.29修改学生后的学生列表教师用户测试现验证教师用户的增添功能是否正常,添加信息如图5.30所示,图5.31表示新增教师用户成功。图5.30教师添加页面图5.31教师添加成功图现删除“余飞”老师来验证删除功能的正常性,结果如图5.32所示。图5.32教师删除成功图现验证修改功能的正常性,修改姓名“夏卓群”为“夏卓群-test”结果如图5.33和图5.34所示。图5.33教师信息原图图5.34教师信息被修改后图管理员用户测试现验证添加管理员功能是否正常,添加信息如图5.35所示。添加后管理员列表如图5.36所示。图5.35管理员添加页面图5.36添加管理员成功图和超级管理员相比,普通管理员没有新增和删除管理员权限,其他功能一样,如图5.37所示。图5.37普通管理员列表5.2.4通用功能测试登录功能测试登录测试是为了保证系统登录功能的正确实现。只有当用户输入了正确的用户名、密码和验证码才能成功登录,否则会提示相应错误。具体测试用例如表5-1所示。表5-1登录功能测试用例当用户名或密码输入错误时,会跳转到一个错误提示页面,截图如图5.38所示。图5.38登录失败提示对登录过程的判断流程为:如果没输入用户名、密码和验证码就点击登录时,会提示用户名或密码不能为空。当验证码错误,不管用户名和密码正确与否都不能成功登录,此时不去数据库中进行比较,只对验证码进行错误提示。运行截图如下图5.39所示。图5.39验证码输入错误提示注销功能测试三类用户点击注销功能后,尝试进行如提问、回答、查看问题答案等操作时,系统会提示目前用户正是游客身份,没有权限进行此类操作。运行效果如图5.40所示。图5.40游客身份提示修改基本信息学生和教师可修改自身密码和邮箱,测试用例如表5-2所示。表5-2修改功能测试用例表当前后两次输入相同的非空密码时,修改成功,运行如图5.41所示。图5.41修改成功提示当输入空密码或者两次密码输入不一致时,当前页面会提示。运行如图5.42和5.43所示。图5.42输入空密码提示图图5.43两次密码输入不一致提示图找回密码若学生和教师用户忘记登录密码无法登录时,可通过登录页面的找回密码功能找回保存在数据库中的密码,找回密码功能测试用例如表5-3所示。表5-3找回密码测试用例表用户类型和用户名输入都正确时,系统会自动发送带密码的邮箱至用户个人信息中保存的邮件地址,邮件内容如下图5.44所示。图5.44密码邮件内容图当用户名和选择的用户类型不匹配时,点击找回密码后,会进教师用户数据表中查找是否有hedu用户,如果取出的内容为null,会提示用户名不正确或与用户类型不匹配。运行效果如下图5.45所示。图5.45找回密码输入错误提示图6总结与展望6.1总结本论文简要讲述了开发高校在线答疑系统的目的与意义,在第四章对每项功能的实现方法进行了详细介绍。系统采用表示层、业务逻辑层和数据访问层使得层级分明,有利于系统后期维护。通过分层结构、和根据功能需求对数据库做的详细设计,最后实现了系统的各模块。本系统和网络上现有的答疑系统独特之处在于:(1)回答质量有保障,因为本系统是完全针对学生和老师之间的互动答疑来实现的,故回答者都是问题所属专业的老师,回答质量具有一定权威性。(2)用户没有注册功能,都是管理员实名添加。和非实名答疑系统相比,更利于管理员的日常管理与维护。(3)对用户来说,系统简单易学。本系统的优
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 氢电导指示剂阳离子交换树脂受污染的对策与处理
- 手工陶泥课件
- 《口头沟通管理沟通》课件
- 《SMART原则培训》课件
- 《注浆技术培训》课件
- 《工业化与城市化》课件
- 黑龙江省哈尔滨市萧红中学2024-2025学年九年级上学期期中考试数学试题
- 【语文课件】愚公移山
- 《业务流程管理介绍》课件
- 《罗马人的法律上》课件
- 贵州·贵阳·山水黔城
- 诊断学(实验)心电图课件
- 小学生血液知识讲座课件
- 第23课《范进中举》课堂实录-部编版语文九年级上册
- 华夏基石:目标管理与绩效管理体系构建共课件
- 五年级上学期家长会课件
- 《旅游线路设计》课程大纲
- 培训学习确认单样板
- 二年级安全教育课件
- 99S203 消防水泵接合器安装图集
- 幼儿园大班科学领域《种子的旅行》课件
评论
0/150
提交评论