高校在線答疑系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁
高校在線答疑系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第2頁
高校在線答疑系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第3頁
高校在線答疑系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第4頁
高校在線答疑系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩58頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

高校在線答疑系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)高校在線答疑系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)摘要隨著高校內(nèi)學(xué)生人數(shù)的日益增長,教師和上課地點(diǎn)的不斷變動(dòng)使得學(xué)生和老師之間的交流受時(shí)間和空間限制,導(dǎo)致師生間的答疑工作難以開展。為此開發(fā)一個(gè)高校在線答疑系統(tǒng)大有裨益。本系統(tǒng)是基于B/S架構(gòu),使用JSP、SERVLET、JAVASCRIPT作為編程語言,結(jié)合MYSQL數(shù)據(jù)庫和JavaWeb開發(fā)的三層架構(gòu)來實(shí)現(xiàn)學(xué)生模塊、教師模塊和管理員模塊功能。學(xué)生模塊主要功能包括學(xué)生對(duì)某位老師或所有老師提問、下載學(xué)習(xí)資料、查看并修改信息及根據(jù)提問數(shù)對(duì)學(xué)生進(jìn)行排名。教師模塊主要功能包括回答問題并獲得積分、上傳資料、按積分對(duì)教師進(jìn)行排名。管理員模塊主要功能包括對(duì)問題、學(xué)院、專業(yè)和用戶的管理操作。其中三層架構(gòu)將整個(gè)系統(tǒng)劃分為界面層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層,分層目的在于實(shí)現(xiàn)“高內(nèi)聚低耦合”思想。目前,大部分高校的答疑模塊都是內(nèi)嵌在網(wǎng)絡(luò)教學(xué)系統(tǒng)中,獨(dú)立存在的不多。本系統(tǒng)主要作用于學(xué)生和教師之間的答疑互動(dòng),其特點(diǎn)有回答質(zhì)量高,利于用戶管理所有提問或回答信息。關(guān)鍵詞:答疑系統(tǒng);B/S架構(gòu);三層架構(gòu)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]。三層架構(gòu)的作用分別為。表示層(UI):用來接收用戶的請(qǐng)求以及遞交必要參數(shù),用于與用戶直接進(jìn)行交互,在本層調(diào)用BLL層。業(yè)務(wù)邏輯層(BLL):主要處理業(yè)務(wù)邏輯以及各種數(shù)據(jù)驗(yàn)證。在需要存取數(shù)據(jù)的時(shí)候,交給DAL層處理,然后返回信息給表示層。數(shù)據(jù)訪問層(DAL):不處理任何業(yè)務(wù)邏輯,只提供基本的數(shù)據(jù)訪問。

從上至下邏輯處理如圖4.1所示。圖4.1三層架構(gòu)圖在本系統(tǒng)包結(jié)構(gòu)如圖4.2所示,表示層包含用戶直接接觸的JSP頁面,如登錄界面、提問界面等。業(yè)務(wù)邏輯層包括.action包下面的各個(gè)SERVLET,用來接收并處理瀏覽器的請(qǐng)求,如有需要?jiǎng)t從數(shù)據(jù)庫中取出信息并返回給表示層。數(shù)據(jù)訪問層為.daoImp、.daoInf和.db包,作用分別是數(shù)據(jù)庫操作的實(shí)現(xiàn)類、數(shù)據(jù)庫接口和獲取數(shù)據(jù)庫連接。其中.filter為系統(tǒng)過濾器,作用為在SERVLET被調(diào)用前后通過修改Request和Response對(duì)象來執(zhí)行所需操作。如通過request.setCharacterEncoding("utf-8")和response.setContentType("text/html;charset=utf-8")來設(shè)置頁面為中文編碼,解決中文亂碼問題。在每次調(diào)用SERVLET前后都會(huì)執(zhí)行這個(gè)過濾器,統(tǒng)一解決編碼不一致問題。本系統(tǒng)采用較原始的JSP+SERVLET框架,當(dāng)客戶端發(fā)送請(qǐng)求至服務(wù)器時(shí),服務(wù)器對(duì)接收到的信息進(jìn)行解析后交給web容器,web容器會(huì)通過web.xml的配置文件去找與之匹配的SERVLET。然后調(diào)用該SERVLET的service()方法或service接口實(shí)現(xiàn)類,通過service接口實(shí)現(xiàn)類去調(diào)用dao包的接口實(shí)現(xiàn)類來獲取數(shù)據(jù)庫數(shù)據(jù)。最終將數(shù)據(jù)返回給JSP頁面呈現(xiàn)給用戶。圖4.2系統(tǒng)包結(jié)構(gòu)圖4.1學(xué)生模塊功能的實(shí)現(xiàn)學(xué)生模塊主要功能包括提出問題、查看自己或其他同學(xué)的提問、對(duì)自己提問的回答進(jìn)行采納、下載資料和根據(jù)學(xué)生提問數(shù)對(duì)學(xué)生進(jìn)行排名,具體實(shí)現(xiàn)方法如下所示。4.1.1提出問題游客身份無法進(jìn)行提問操作,只有登錄成功的學(xué)生用戶能發(fā)布問題。提問分為兩種,一種為對(duì)某位老師進(jìn)行提問,其他老師看不到問題信息。另一種為對(duì)所有老師提問,所有老師可見。具體實(shí)現(xiàn)流程如圖4.3所示。圖4.3提問流程圖對(duì)某位老師提問當(dāng)學(xué)生登錄成功后,點(diǎn)擊首頁的“教師團(tuán)”后選擇某位老師點(diǎn)擊“我要提問”,此時(shí)teacher_group.JSP會(huì)鏈接到后臺(tái)questionservlet中,傳遞參數(shù)為command=addAskInfo&teacherNo=${teaNo},此時(shí)的teacherNo為被選擇教師的編號(hào)。首先進(jìn)入的是questionservlet.service(),根據(jù)command的值來決定跳轉(zhuǎn)函數(shù),在ask()函數(shù)中從數(shù)據(jù)庫中獲取所有專業(yè)信息和學(xué)院信息,并將所有學(xué)院、專業(yè)對(duì)象和教師編號(hào)傳遞到前臺(tái)ask.JSP頁面。在ask.JSP中填入問題主題和詳細(xì)內(nèi)容,并選擇分類后,參數(shù)command=addAskInfo&teacherNo=${teaNo}會(huì)以post方式傳遞到questionservlet中,進(jìn)入addAskInfo()后,將問題信息保存至數(shù)據(jù)庫中。保存成功后跳轉(zhuǎn)到問題發(fā)布成功提示頁面,學(xué)生提問結(jié)束。對(duì)所有老師提問當(dāng)學(xué)生登錄成功后,點(diǎn)擊首頁的“我要提問”按鈕,top.JSP會(huì)鏈接至questionservlet,參數(shù)為command=addAskInfo&teacherNo=-1。此時(shí)的teacherNo被置為-1,表示對(duì)所有老師進(jìn)行提問。其他步驟和上面對(duì)某位老師提問步驟完全一樣,在此不做贅述。4.1.2查看“我的提問”查看提問功能包括查看已解決問題、待解決問題和所有問題。在用戶登錄成功后,點(diǎn)擊自己個(gè)人中心,就能查看問題解答情況,具體實(shí)現(xiàn)步驟如下。查看待解決問題學(xué)生進(jìn)入系統(tǒng)后,點(diǎn)擊個(gè)人中心的“待解決問題”,鏈接目標(biāo)至href=”questionSERVLET?command=myUnfinishedQuestion”,傳遞參數(shù)為command=myUnfinishedQuestion。進(jìn)入questionservlet的service()方法,根據(jù)接收的參數(shù)值跳轉(zhuǎn)至myUnfinishedQuestion()方法中。在此方法中調(diào)用數(shù)據(jù)庫實(shí)現(xiàn)類的getUnfinishedAskInfoByStudentId(student)來獲取該學(xué)生提出的尚未解決的問題,askInfo的status屬性含義為問題是否解決,默認(rèn)為0,表示未解決。首先通過sql語句:select*fromaq_askInfowhereisDel=0andstudentNo={student.getStuNo()}來獲取該學(xué)生的所有問題,然后篩選status=0的問題即未解決問題。將未解決問題對(duì)象unfinishedAskInfos傳遞至前臺(tái)。前臺(tái)student_unfinishedQuestion.JSP通過調(diào)用unfinishedAskInfos對(duì)象的各個(gè)屬性,將未問題信息顯示出來。查看已解決問題查看已解決問題處理了流程和上述類似,這里做簡要介紹。點(diǎn)擊個(gè)人中心的“已解決問題”選項(xiàng)卡,鏈接至后臺(tái)href=”questionservlet?command=myFinishedQuestion”,傳遞參數(shù)為command=myFinishedQuestion。通過調(diào)用getUnfinishedAskInfoByStudentId(student)從數(shù)據(jù)庫中獲取status=1的問題。將已解決問題對(duì)象finishedAskInfos傳遞至前臺(tái)。前臺(tái)student_finishedQuestion.JSP通過調(diào)用finishedAskInfos對(duì)象的各個(gè)屬性,將已解決問題顯示出來。查看所有問題點(diǎn)擊“我的所有問題”選項(xiàng)卡后,鏈接至后臺(tái)href=”questionservlet?command=myAllQuestion”,傳遞參數(shù)為command=myAllQuestion。后臺(tái)questionservlet.myAllQuestion()方法通過調(diào)用GetAskInfosByStudentId()從數(shù)據(jù)庫中獲取到學(xué)生的所有提問,并將所有問題對(duì)象傳遞至前臺(tái)。前臺(tái)student_allQuestion.JSP通過調(diào)用后臺(tái)傳過來的stu_allAskInfos對(duì)象的各個(gè)屬性,所有問題信息顯示出來。4.1.3采納答案對(duì)尚未完結(jié)的問題可以采納自己滿意的回答,當(dāng)某個(gè)回答被采納后,aq_answerInfo.isChecked=1表示被采納,aq_askInfo.status=1表示問題已解決。具體實(shí)現(xiàn)過程如圖4.4所示。圖4.4采納問題流程圖采納答案功能的流程文字解讀如下。學(xué)生登錄成功后,可以在個(gè)人中心里查看待解決問題,點(diǎn)擊某個(gè)問題后,鏈接至href=”questionservlet?command=chooseAnswer&askNo=${unfinishedAskInfo.answerNo}”,askNo為目前點(diǎn)擊問題的編號(hào)。根據(jù)接收的參數(shù)跳轉(zhuǎn)到chooseAnswer()中。在此方法中,通過調(diào)用實(shí)現(xiàn)類中g(shù)etAskInfoViewBeans(askInfo)來獲取某個(gè)問題的相關(guān)信息。具體為通過對(duì)aq_askInfo、aq_student和aq_profession三表查詢,獲得某個(gè)問題的提問人姓名、問題所屬專業(yè)名稱等信息,將其放在askInfoViewBeans。通過getAnswerInfoByAskId(askNo)獲取某個(gè)問題的回答信息,將其放在answerInfos對(duì)象中。將askInfoViewBeans和answerInfo兩個(gè)對(duì)象傳給前臺(tái)。前臺(tái)readQuestionDetail.JSP將回答信息顯示出來,當(dāng)點(diǎn)擊采納答案按鈕時(shí),連接至后臺(tái)questionservlet.acceptAnswer(),在此方法中,設(shè)置aq_answerInfo.isChecked=1,aq_askInfo.status=1,表示該答案被采納,該問題已結(jié)束。4.1.4學(xué)生提問數(shù)排名本功能是根據(jù)學(xué)生提問數(shù)量的多少進(jìn)行排名,將前10位同學(xué)的名字和提問數(shù)顯示在首頁。設(shè)計(jì)本功能的目的在于:當(dāng)本系統(tǒng)得到學(xué)生的普遍使用時(shí),提問數(shù)量越多,則說明該學(xué)生更好學(xué),可以作為考核學(xué)生的一個(gè)小標(biāo)準(zhǔn)。實(shí)現(xiàn)步驟如下。學(xué)生每提問成功一次,讓aq_student的questionQuestion字段加1。通過StudentDaoImpl實(shí)現(xiàn)類的getStudentTop10ByCount()方法根據(jù)提問數(shù)量對(duì)學(xué)生進(jìn)行排序。其中sql語句為:select*fromaq_studentwhereisDel=0orderbyquestionCountdesclimit10。將返回的前10名學(xué)生信息結(jié)果保存在student列表中,并返回給前臺(tái)。前臺(tái)頁面調(diào)用student列表,通過<c:foreach></c:foreach>標(biāo)簽來循環(huán)獲取學(xué)生的姓名和提問數(shù)量字段并將其顯示出來。4.1.5下載資料點(diǎn)擊“點(diǎn)擊下載后”,鏈接至后臺(tái)userservlet,傳遞參數(shù)為command=download,fileNo=${fileShare.fileNo},這里的fileNo為下載資料的文件編號(hào)。進(jìn)入userservlet.download()中,新建一個(gè)FileInputStream對(duì)象和一個(gè)ServletOutputStream對(duì)象,通過前者從服務(wù)器上讀取文件,然后通過后者輸出。在這個(gè)過程中有一點(diǎn)需要特別注意,文件名是中文時(shí)容易出現(xiàn)亂碼,需要通過req.getHeader(“User-Agent”).contains(“MSIE”)?fileName.getBytes():fileName.getBytes(“UTF-8”);fileName=newString(byte,”ISO=8859-1”)來處理亂碼問題。4.2教師模塊功能的實(shí)現(xiàn)4.2.1解答問題教師的解答問題功能為:當(dāng)教師登錄成功后,可為學(xué)生解答未結(jié)束的問題,當(dāng)回答提交成功后,系統(tǒng)會(huì)自動(dòng)發(fā)郵件提醒學(xué)生登錄查看,同時(shí),不管自己回答是否被采納,教師都可獲得2個(gè)積分,解答問題流程如圖4.5所示。圖4.5解答問題流程圖實(shí)現(xiàn)方法如下。當(dāng)教師點(diǎn)擊某個(gè)未解決的問題時(shí),會(huì)以u(píng)rl傳遞的方式將參數(shù)command=questionView,askId=${askInfoUnChecked.askNo}傳至后臺(tái)questionservlet中。其中askId的值為該未解答問題的問題編號(hào)。首先會(huì)進(jìn)入questionservlet.service()方法,根據(jù)command參數(shù)值跳轉(zhuǎn)到questionView()中。在此方法中,執(zhí)行的操作有:①更新問題的瀏覽次數(shù),讓次數(shù)加1。②通過對(duì)數(shù)據(jù)庫中aq_askInfo、aq_student、aq_profession三表查詢問題表的所有信息、提問學(xué)生信息及問題所屬類。③根據(jù)aq_askInfo表中status屬性值篩選出未解答的問題,status=0表示未解決。④跳轉(zhuǎn)到問題回答頁面。在問題回答頁面,能看到其他老師的回答信息。當(dāng)解答完畢點(diǎn)擊提交回答按鈕時(shí),前臺(tái)以u(píng)rl傳遞方式將command=addAnswer和askNo值傳遞至后臺(tái)questionservlet。進(jìn)入到questionservlet.addAnswer()后,執(zhí)行的操作有:①將解答內(nèi)容及回答者信息保存至數(shù)據(jù)庫中。②系統(tǒng)給提問學(xué)生發(fā)送郵件提醒其登陸查看回答信息。跳轉(zhuǎn)到提示頁面,解答問題步驟完成。4.2.2查看“我的回答”進(jìn)入教師的個(gè)人中心頁面,可點(diǎn)擊“查看我的回答”來瀏覽自己的所有回答問題信息。同時(shí)可點(diǎn)擊問題查看其它老師的回答內(nèi)容。實(shí)現(xiàn)步驟如下。點(diǎn)擊個(gè)人中心頁面中的某個(gè)問題,前臺(tái)以u(píng)rl傳值的方式將command=chooseAnswer和askNo=${tea_allaskInfo.askNo}傳至后臺(tái)questionSERVLET中。根據(jù)參數(shù)跳轉(zhuǎn)至questionservlet.chooseAnswer()中,執(zhí)行的操作有:①通過對(duì)數(shù)據(jù)庫中aq_student、aq_askinfo和aq_profession三表查詢獲取問題信息、提問學(xué)生信息和問題所屬專類。②在aq_answer數(shù)據(jù)表中根據(jù)askNo獲取該問題的所有回答信息。③將問題相關(guān)信息askInfoViewBean對(duì)象和回答內(nèi)容answerInfos對(duì)象傳遞給前臺(tái)。在readQuestionDetail.JSP頁面獲取后臺(tái)傳遞的兩個(gè)對(duì)象,分別調(diào)用兩個(gè)對(duì)象的各個(gè)屬性,將回答內(nèi)容、回答者名字和回答時(shí)間等信息顯示出來。4.2.3教師積分排名根據(jù)積分對(duì)教師進(jìn)行排行,選取前10位顯示在首頁。設(shè)計(jì)此功能的目的在于:從某種程度上來說,獲得積分越高,說明與學(xué)生的互動(dòng)越多,對(duì)學(xué)生的學(xué)習(xí)動(dòng)態(tài)更加關(guān)注。實(shí)現(xiàn)步驟如下。更新積分,為回答教師加2個(gè)積分。通過getTeacherTop10ByPoint()方法來進(jìn)行排序,其中sql語句為“select*fromaq_teacherwhereisDel=0orderbypointsdesclimit10”。通過Sqlcommand.getResult()來獲取返回的結(jié)果,利用teacher對(duì)象的set()方法將結(jié)果保存在teacher列表中。在前臺(tái)頁面顯示教師名字和教師積分。4.2.4上傳資料上傳資料功能設(shè)計(jì):教師點(diǎn)擊“上傳”后將資料上傳到服務(wù)器中,數(shù)據(jù)庫中filepath字段保存資料存放的絕對(duì)路徑,如D:\Tomcat\webapps\AQWeb_test\upload\7\自學(xué)問題.docx。具體設(shè)計(jì)步驟如下所示。前臺(tái)表單設(shè)計(jì)。使用input標(biāo)簽,type指定為file,此時(shí)前臺(tái)展現(xiàn)的是一個(gè)本地文件選擇器,選擇上傳的文件。包含input標(biāo)簽的form表單要特殊處理,Method=post,因?yàn)橹挥衟ost才能傳遞大文件,get只能傳4k。Enctype="multipart/form-data"表示是有多個(gè)成分的,既有文本數(shù)據(jù),也有文件等二進(jìn)制數(shù)據(jù)。另外,取表單元素值的時(shí)候,不能再使用getParameter方法,必須使用上傳組件提供的api。后臺(tái)代碼設(shè)計(jì)步驟。確保這個(gè)請(qǐng)求是一個(gè)正確的上傳文件。DiskFileItemFactory類中常見的構(gòu)造方法和類分別通過setThreshold(),setRepository()來設(shè)置創(chuàng)建緩沖大小和磁盤緩沖路徑。同時(shí),通過構(gòu)造DiskFileItemFactory()來設(shè)置大小和存放位置。ServletFileUpload類ServletFileUploadupload=newServleyFileUpload(factory);

upload.setHeaderEncoding("utf-8");upload.setSizeMax(-1);//設(shè)置上傳文件限制大小,-1無上限寫文件得到文件上傳路徑,比如在系統(tǒng)目錄下創(chuàng)建文件名為File文件夾,那么得到路徑方法如下。StringsavePath=this.getServletContext().getRealPath("/File");獲取文件名item.getName();Stringpath=savePath+"\\"+fileName;Filefile=newFile(spath);item.write(file);item.delete();4.3管理員模塊功能的實(shí)現(xiàn)4.3.1問題管理問題管理功能即管理員對(duì)系統(tǒng)的所有問題及回答情況進(jìn)行管理,具體操作分為三種:查看、刪除和搜索,如圖4.6所示。實(shí)現(xiàn)方法如下所示。圖4.6問題管理功能圖查看問題及回答信息點(diǎn)擊前臺(tái)頁面的“提問信息”,通過<ahref=“bgmQuesservlet?command=askinfo”>將command參數(shù)傳遞至后臺(tái)bgmQuesservlet。bgmQuesservlet通過req.getParameter()獲取的command值跳轉(zhuǎn)到askinfo()函數(shù)中。在此方法中從數(shù)據(jù)庫中取出所有問題和所有學(xué)生,其中獲取學(xué)生信息時(shí),因?yàn)樾枰@示所在專業(yè)名,故對(duì)aq_student和aq_profession兩個(gè)表查詢獲取。通過req.setAttribute()對(duì)問題和學(xué)生參數(shù)賦值,傳遞給BgAskinfo.JSP頁面調(diào)用。前臺(tái)頁面通過調(diào)用問題對(duì)象和學(xué)生對(duì)象的屬性顯示問題及提問者信息。點(diǎn)擊“查看”,將command=askall&askNo=${askinfo.askNo}參數(shù)傳遞至后臺(tái)。在bgmQuesservlet.askview()函數(shù)中,調(diào)用getAskInfoById(askNo)來獲取被點(diǎn)擊問題的標(biāo)題,調(diào)用getAnswerInfoByAskNo(askNo)來獲取該問題的所有回答內(nèi)容,調(diào)用getStudentById()獲取提問者名字,調(diào)用getTeacherById()獲取回答老師的名字。將這些函數(shù)的返回對(duì)象傳遞給前臺(tái)頁面。接收后臺(tái)傳遞的對(duì)象,顯示對(duì)象的各個(gè)屬性值。刪除問題或回答刪除某個(gè)問題,將command=deleteAsk和askNo兩個(gè)參數(shù)傳遞至后臺(tái)。后臺(tái)調(diào)用delete方法,設(shè)置isDel=1進(jìn)行邏輯刪除。刪除某個(gè)回答,將command=deleteAnswer和ansNo兩個(gè)參數(shù)傳遞至后臺(tái)。后臺(tái)調(diào)用delete方法,設(shè)置回答表的isDel=1。搜索問題輸入關(guān)鍵字,點(diǎn)擊搜索。將command=select和關(guān)鍵字傳遞至后臺(tái)bgmQuseSERVLET。調(diào)用select()方法,在此方法中調(diào)用實(shí)現(xiàn)類的getAskInfoByAskTop()獲取含有該關(guān)鍵字的記錄并將其保存在askInfos列表中。前臺(tái)調(diào)用askInfos,將其標(biāo)題、內(nèi)容屬性顯示出來。4.3.2學(xué)院管理對(duì)學(xué)院的管理功能包括添加、刪除、修改和查看學(xué)院,其實(shí)現(xiàn)方法如下。添加學(xué)院管理員點(diǎn)擊添加學(xué)院,跳轉(zhuǎn)到addAcade.JSP頁面。輸入新的學(xué)院名后,點(diǎn)擊確定。表單以post的方式將command=addAcade參數(shù)傳到bgmAcademySERVLET后臺(tái)。后臺(tái)調(diào)用addAcademyJSP(),通過getParameter()獲取輸入的學(xué)院名。在inserAcade()中,把新的學(xué)院名插入數(shù)據(jù)表中,并設(shè)置isDel=0。在前臺(tái)顯示所有學(xué)院信息,包括新增加的信息。刪除學(xué)院管理員點(diǎn)擊某學(xué)院后面的刪除按鈕,所選信息以post方式將command=deleteAll參數(shù)和學(xué)院編號(hào)傳遞至bgmAcademyservlet后臺(tái)。在deleteAll()中通過checkbox[]數(shù)組來接收前臺(tái)所選中的學(xué)院編號(hào)。然后利用for循環(huán)調(diào)用delete()逐個(gè)刪除,設(shè)置學(xué)院表的isDel=1。在前臺(tái)顯示所有數(shù)據(jù)表里isDel=0的數(shù)據(jù)。修改學(xué)院點(diǎn)擊學(xué)院后面的“編輯”,跳轉(zhuǎn)到updateAcade.JSP頁面。輸入新的學(xué)院名后,點(diǎn)擊保存。將command=updateAcade和academyNo傳至bgmAcademySERVLET。后臺(tái)調(diào)用updateAcade(),在此方法中,通過sql語句:updateaq_academysetacademyname=?,isDel=?whereacademyno=?來更新數(shù)據(jù)庫,其中的三個(gè)問號(hào)(?)為占位符,分別由前臺(tái)獲取的學(xué)院名,數(shù)據(jù)庫中取出的isDel和學(xué)院編號(hào)填充。將被更新的數(shù)據(jù)庫顯示在前臺(tái)。4.3.3專業(yè)管理專業(yè)管理包括根據(jù)學(xué)院名顯示相應(yīng)專業(yè)名稱、添加及刪除專業(yè)功能,具體實(shí)現(xiàn)方法如下。顯示專業(yè)根據(jù)學(xué)院選擇專業(yè),在前臺(tái)選擇學(xué)院名后,調(diào)用本頁面的onchange=”profe()”方法,此時(shí)會(huì)傳遞command=profeByAcadeNo和profeByAcadeNo到后臺(tái)bgmProfeservlet。調(diào)用后臺(tái)profeByAcadeNo(),在此方法中,通過getProfeByAcadeId()來獲取被選中學(xué)院的所有專業(yè),并將所有專業(yè)記錄傳遞至前臺(tái)BgProfession.JSP頁面。在前臺(tái)顯示。添加專業(yè)點(diǎn)擊前臺(tái)BgProfession.JSP頁面“添加專業(yè)”按鈕時(shí),將參數(shù)command=addProfess傳遞至bgmProfeservlet。在bgmProfeservlet.addProfessJSP()中,調(diào)用getAllAcademy()來獲取所有學(xué)院信息,同時(shí)將學(xué)院對(duì)象傳遞給前臺(tái)addProfess.JSP頁面。在addProfess.JSP頁面中,輸入新的專業(yè)名并選擇相應(yīng)學(xué)院,點(diǎn)擊“保存”后,表單以Post方式提交到bgmProfeservlet中,參數(shù)為addProfession。取出該學(xué)院下的所有專業(yè)與輸入的專業(yè)名做比較,如果有同名則提示該專業(yè)已存在。當(dāng)不同名,則調(diào)用專業(yè)對(duì)象的insert()方法來執(zhí)行插入。刪除專業(yè)點(diǎn)擊前臺(tái)的“刪除”按鈕,將command=delete、profeDeletId和profeByAcadeNo傳遞至bgmProfeservlet中。調(diào)用deleteProfe(),在此方法中調(diào)用profeDao對(duì)象的delete()方法,設(shè)置編號(hào)為profeDeletId的專業(yè)的isDel=1。4.3.4用戶管理用戶管理操作包括添加、修改和刪除用戶。其中修改用戶包括修改姓名、專業(yè)、郵箱和頭像。實(shí)現(xiàn)方法如下所示,因?yàn)閷?shí)現(xiàn)步驟與上面的學(xué)院添加、刪除和修改類似,故在這只做簡要說明。新增用戶管理員點(diǎn)擊“新增”按鈕,帶flag=0參數(shù)跳轉(zhuǎn)到add_student.JSP頁面,此flag用來標(biāo)識(shí)是新增操作還是修改操作。輸入姓名、學(xué)號(hào)、專業(yè)等信息點(diǎn)擊“保存”,將command=save和flag=0傳遞到后臺(tái)studentservlet中。通過調(diào)用數(shù)據(jù)庫實(shí)現(xiàn)類的addStudent()函數(shù)將學(xué)生對(duì)象保存進(jìn)aq_student表。在前臺(tái)顯示所有學(xué)生信息。修改用戶管理員點(diǎn)擊用戶后面的“修改”,帶flag=1參數(shù)跳轉(zhuǎn)到add_student.JSP頁面中。輸入需要修改的信息,點(diǎn)擊保存,將command=save和flag=1傳遞到后臺(tái)。在save()中調(diào)用changeStu()修改學(xué)生信息并保存。前臺(tái)顯示學(xué)生信息。刪除用戶管理員點(diǎn)擊用戶后面的“刪除”按鈕,將command=deleteStu和stuNo傳遞到studentservlet。在deleteStu()中,調(diào)用實(shí)現(xiàn)類的deleteStu()方法更新studentno=stuNo的記錄,設(shè)置isdel=1。在前臺(tái)顯示。4.4通用功能的實(shí)現(xiàn)4.4.1登錄三類用戶都具有登錄系統(tǒng)功能,登錄成功的唯一條件為:只有用戶類型、用戶名、密碼和驗(yàn)證碼全都正確時(shí),才能成功登錄。若是由于忘記密碼,則可通過找回密碼功能來得到系統(tǒng)發(fā)送的帶有密碼的郵件。流程如圖4.7所示。圖4.7登錄功能流程圖首先判斷輸入的文本與隨機(jī)生成的驗(yàn)證碼是否正確,當(dāng)驗(yàn)證碼錯(cuò)誤時(shí)則不繼續(xù)驗(yàn)證。生成驗(yàn)證的方法為:①生成一個(gè)4位的隨機(jī)數(shù)。②構(gòu)建BufferedImage。③繪制圖片。④繪制噪點(diǎn)。⑤存入session。⑥將BufferedImage保存到servlet輸出流中。當(dāng)驗(yàn)證碼正確時(shí),根據(jù)選擇的用戶類型,進(jìn)入相應(yīng)用戶類型的數(shù)據(jù)庫中。根據(jù)輸入的用戶名查找與之相同的條目,把輸入的密碼和數(shù)據(jù)庫中密碼進(jìn)行比較。比較成功則驗(yàn)證通過,否則提示驗(yàn)證碼或密碼錯(cuò)誤,重新跳轉(zhuǎn)到登錄頁面。4.4.2注銷三類用戶都具有注銷功能,設(shè)置登錄和注銷功能是為了保障系統(tǒng)安全性,加強(qiáng)管理。其實(shí)現(xiàn)方法較為簡單,當(dāng)用戶點(diǎn)擊“注銷”后,調(diào)用后臺(tái)的exit()方法。在此方法中,設(shè)置loginUser為null,idType為null,并存入session中,此時(shí)身份會(huì)變成游客身份,只能進(jìn)行少量的瀏覽操作。4.4.3找回密碼學(xué)生用戶的郵箱是用來找回密碼和接收系統(tǒng)查看回答提醒郵件,教師的郵箱是用來找回密碼。找回密碼功能是通過發(fā)送帶有用戶名和密碼的簡單郵件來實(shí)現(xiàn)的。認(rèn)證類功能:初始化郵箱和密碼。發(fā)送類:①發(fā)送郵件的props文件;②調(diào)用認(rèn)證類對(duì)郵箱服務(wù)器進(jìn)行登錄驗(yàn)證。③初始化郵件發(fā)送器,包括發(fā)送者的用戶、密碼以及smtp服務(wù)器。④最后創(chuàng)建簡單郵件類,包括主題和內(nèi)容,調(diào)用郵件發(fā)送器進(jìn)行發(fā)送。4.4.4修改信息教師和學(xué)生能修改自身的基本信息,包含郵箱和密碼。其他類似姓名、專業(yè)等實(shí)名信息只能通過管理員修改。修改郵箱和改密碼的實(shí)現(xiàn)步驟一樣,接下來以學(xué)生修改密碼為例。學(xué)生點(diǎn)擊“修改密碼”后,跳轉(zhuǎn)到student_changepwd.jsp頁面中,在此頁面中重復(fù)輸入新密碼,然后點(diǎn)擊確定。表單以post方式將新密碼傳遞到userservlet中,command=studentchangeinfo。在后臺(tái)studentchangeinfo()中,通過req.getPatameter()獲取新的密碼,然后調(diào)用實(shí)現(xiàn)類的studao.changeStudentInfo()方法更新該用戶的密碼,并將其保存的對(duì)象中。sql語句為updateaq_studentsetstudentpwd=?,studentemail=?wherestudentno=?.其中密碼、郵箱都是通過調(diào)用student.getxxx()來獲取。5系統(tǒng)測試5.1系統(tǒng)測試目的系統(tǒng)測試是為了找出代碼錯(cuò)誤、衡量軟件質(zhì)量而實(shí)施的過程。測試人員根據(jù)系統(tǒng)開發(fā)過程中的內(nèi)部流程來刻意設(shè)計(jì)一些測試用例,利用這些用例來發(fā)現(xiàn)系統(tǒng)漏洞。系統(tǒng)測試是系統(tǒng)在投入生產(chǎn)前,對(duì)系統(tǒng)分析和系統(tǒng)設(shè)計(jì)進(jìn)行最終審查,是系統(tǒng)質(zhì)量保證的關(guān)鍵步驟REF_Ref452425583\r\h[12]。測試的終極目標(biāo)找出系統(tǒng)中至今尚未發(fā)現(xiàn)的錯(cuò)誤和缺陷。5.2子模塊測試5.2.1學(xué)生模塊提問功能測試學(xué)生提問時(shí)需要注意的地方包括提問分為兩中情況以及提問的信息必須填寫完善,否則會(huì)出現(xiàn)相應(yīng)提示。測試用例如表5-1所示。表5-1提問功能測試用例當(dāng)提問信息輸入完整時(shí),提問成功,且能在首頁看到提問主題。問題信息填寫如圖5.1所示。首頁問題列表如圖5.2所示。當(dāng)主題、內(nèi)容、分類任何一項(xiàng)填寫不全時(shí),會(huì)出現(xiàn)如圖5.3所示的提示。圖5.1提問內(nèi)容圖圖5.2問題列表圖圖5.3問題信息填寫不全提示查看提問測試學(xué)生登錄成功后,在個(gè)人中心能查看自己的待解決問題、已解決問題和所有提問,如圖5.4所示。圖5.4待解決提問圖采納問題測試學(xué)生查看自己提問的回答時(shí),對(duì)滿意的答案可點(diǎn)擊“采納此答案”來結(jié)束問題,如圖5.5所示。采納成功后,運(yùn)行界面如圖5.6所示。圖5.5瀏覽問題詳情圖圖5.6采納問題圖學(xué)生排名測試在系統(tǒng)首頁,會(huì)根據(jù)學(xué)生提問數(shù)對(duì)學(xué)生進(jìn)行排名,以此來鼓勵(lì)學(xué)生提問,運(yùn)行顯示如圖5.7所示。圖5.7學(xué)生排名圖下載資料測試學(xué)生點(diǎn)開某個(gè)教師的個(gè)人介紹頁面時(shí),能看到該教師上傳的所有資料以及問題回答情況。點(diǎn)擊“點(diǎn)擊下載”按鈕后,即可將資料下載到本地,運(yùn)行界面如圖5.8所示。圖5.8資料下載圖5.2.2教師模塊解答問題測試教師可解答對(duì)所有老師提問的問題和對(duì)自己提問的問題,解答過程截圖如圖5.9所示。當(dāng)內(nèi)容填寫完畢,點(diǎn)擊提交回答后,系統(tǒng)會(huì)自動(dòng)發(fā)郵件系統(tǒng)學(xué)生登錄查看,郵件內(nèi)容如圖5.10所示。圖5.9解答問題圖圖5.10提醒郵件內(nèi)容圖查看回答測試教師登錄成功后,在個(gè)人中心能查看自己參與的所有問題,如圖5.11所示。圖5.11查看參與問題頁面教師排名測試在系統(tǒng)首頁,根據(jù)積分對(duì)教師進(jìn)行排名,以此來鼓勵(lì)老師解答問題,運(yùn)行效果如圖5.12所示。圖5.12教師排名圖上傳資料測試在教師的個(gè)人中心頁面,在我的分享選項(xiàng)卡中選擇相應(yīng)文件。點(diǎn)擊“提交”,即可將文件上傳至服務(wù)器供學(xué)生下載,數(shù)據(jù)庫中保存的是文件路徑。運(yùn)行如圖5.13所示。圖5.13資料上傳圖5.2.3管理員模塊問題管理問題管理功能包括對(duì)問題的查看、刪除和查詢功能,另外還可以刪除問題的某些回答。下圖5.14是系統(tǒng)目前所有的問題。圖5.14問題列表現(xiàn)在查看第一個(gè)問題“路由器和交換機(jī)區(qū)別”的回答詳情,如圖5.15所示。圖5.15消息明細(xì)列表如果某些問題或某些回答不符合網(wǎng)絡(luò)文明公約,管理員可刪除問題或回答。刪除“什么是OSPF協(xié)議”后的問題列表如圖5.16所示。刪除某個(gè)回答的問題回答信息如圖5.17所示。圖5.16刪除問題后的列表圖5.17刪除回答后的列表問題搜索功能是針對(duì)輸入的關(guān)鍵字對(duì)問題標(biāo)題進(jìn)行搜索,運(yùn)行效果如圖5.18所示。圖5.18問題搜索功能學(xué)院管理學(xué)院管理功能包括對(duì)學(xué)院的刪除、添加和修改功能?,F(xiàn)添加“土建學(xué)院”來測試增加功能是否正常,添加學(xué)院時(shí)的界面如圖5.19所示。添加成功后界面如圖5.20所示。圖5.19學(xué)院添加信息圖圖5.20添加學(xué)院后的學(xué)院列表現(xiàn)刪除“能動(dòng)學(xué)院”來測試刪除功能是否正常,點(diǎn)擊刪除后學(xué)院列表如圖5.21所示。圖5.21刪除學(xué)院后的學(xué)院列表修改學(xué)院“計(jì)通學(xué)院”為“計(jì)通學(xué)院-test”,修改成功如圖5.22所示。圖5.22修改學(xué)院后的學(xué)院列表專業(yè)管理專業(yè)管理功能包括根據(jù)學(xué)院查看專業(yè)、添加專業(yè)和刪除專業(yè)功能。下圖是點(diǎn)開“專業(yè)管理”界面。當(dāng)選擇相應(yīng)學(xué)院后,如計(jì)通學(xué)院,其專業(yè)列表如圖5.23所示。圖5.23學(xué)院專業(yè)現(xiàn)驗(yàn)證添加專業(yè)功能是否正常,輸入計(jì)算機(jī)科學(xué)與技術(shù),選擇計(jì)通學(xué)院,點(diǎn)擊保存后,計(jì)通學(xué)院的專業(yè)列表如圖5.24所示。圖5.24添加專業(yè)后的專業(yè)列表現(xiàn)刪除“軟件工程”專業(yè)來驗(yàn)證刪除功能的正常,刪除后界面如圖5.25所示。圖5.25刪除專業(yè)后的專業(yè)列表用戶管理用戶管理包括對(duì)三類用戶的操作,分別是學(xué)生、教師和管理員用戶。具體操作有增、刪、改、查。學(xué)生用戶測試現(xiàn)測試添加功能是否正常,新增信息如圖5.26所示。點(diǎn)擊保存后,圖5.27表示新增成功。圖5.26添加學(xué)生信息圖圖5.27添加學(xué)生后的學(xué)生列表刪除姓名為“趙凱鵬”的同學(xué)后,新的學(xué)生列表如圖5.28所示。圖5.28刪除學(xué)生后的學(xué)生列表現(xiàn)修改姓名為“何杜”的名字為“何杜-test”,專業(yè)改為“英語”,修改后列表如下圖5.29所示。圖5.29修改學(xué)生后的學(xué)生列表教師用戶測試現(xiàn)驗(yàn)證教師用戶的增添功能是否正常,添加信息如圖5.30所示,圖5.31表示新增教師用戶成功。圖5.30教師添加頁面圖5.31教師添加成功圖現(xiàn)刪除“余飛”老師來驗(yàn)證刪除功能的正常性,結(jié)果如圖5.32所示。圖5.32教師刪除成功圖現(xiàn)驗(yàn)證修改功能的正常性,修改姓名“夏卓群”為“夏卓群-test”結(jié)果如圖5.33和圖5.34所示。圖5.33教師信息原圖圖5.34教師信息被修改后圖管理員用戶測試現(xiàn)驗(yàn)證添加管理員功能是否正常,添加信息如圖5.35所示。添加后管理員列表如圖5.36所示。圖5.35管理員添加頁面圖5.36添加管理員成功圖和超級(jí)管理員相比,普通管理員沒有新增和刪除管理員權(quán)限,其他功能一樣,如圖5.37所示。圖5.37普通管理員列表5.2.4通用功能測試登錄功能測試登錄測試是為了保證系統(tǒng)登錄功能的正確實(shí)現(xiàn)。只有當(dāng)用戶輸入了正確的用戶名、密碼和驗(yàn)證碼才能成功登錄,否則會(huì)提示相應(yīng)錯(cuò)誤。具體測試用例如表5-1所示。表5-1登錄功能測試用例當(dāng)用戶名或密碼輸入錯(cuò)誤時(shí),會(huì)跳轉(zhuǎn)到一個(gè)錯(cuò)誤提示頁面,截圖如圖5.38所示。圖5.38登錄失敗提示對(duì)登錄過程的判斷流程為:如果沒輸入用戶名、密碼和驗(yàn)證碼就點(diǎn)擊登錄時(shí),會(huì)提示用戶名或密碼不能為空。當(dāng)驗(yàn)證碼錯(cuò)誤,不管用戶名和密碼正確與否都不能成功登錄,此時(shí)不去數(shù)據(jù)庫中進(jìn)行比較,只對(duì)驗(yàn)證碼進(jìn)行錯(cuò)誤提示。運(yùn)行截圖如下圖5.39所示。圖5.39驗(yàn)證碼輸入錯(cuò)誤提示注銷功能測試三類用戶點(diǎn)擊注銷功能后,嘗試進(jìn)行如提問、回答、查看問題答案等操作時(shí),系統(tǒng)會(huì)提示目前用戶正是游客身份,沒有權(quán)限進(jìn)行此類操作。運(yùn)行效果如圖5.40所示。圖5.40游客身份提示修改基本信息學(xué)生和教師可修改自身密碼和郵箱,測試用例如表5-2所示。表5-2修改功能測試用例表當(dāng)前后兩次輸入相同的非空密碼時(shí),修改成功,運(yùn)行如圖5.41所示。圖5.41修改成功提示當(dāng)輸入空密碼或者兩次密碼輸入不一致時(shí),當(dāng)前頁面會(huì)提示。運(yùn)行如圖5.42和5.43所示。圖5.42輸入空密碼提示圖圖5.43兩次密碼輸入不一致提示圖找回密碼若學(xué)生和教師用戶忘記登錄密碼無法登錄時(shí),可通過登錄頁面的找回密碼功能找回保存在數(shù)據(jù)庫中的密碼,找回密碼功能測試用例如表5-3所示。表5-3找回密碼測試用例表用戶類型和用戶名輸入都正確時(shí),系統(tǒng)會(huì)自動(dòng)發(fā)送帶密碼的郵箱至用戶個(gè)人信息中保存的郵件地址,郵件內(nèi)容如下圖5.44所示。圖5.44密碼郵件內(nèi)容圖當(dāng)用戶名和選擇的用戶類型不匹配時(shí),點(diǎn)擊找回密碼后,會(huì)進(jìn)教師用戶數(shù)據(jù)表中查找是否有hedu用戶,如果取出的內(nèi)容為null,會(huì)提示用戶名不正確或與用戶類型不匹配。運(yùn)行效果如下圖5.45所示。圖5.45找回密碼輸入錯(cuò)誤提示圖6總結(jié)與展望6.1總結(jié)本論文簡要講述了開發(fā)高校在線答疑系統(tǒng)的目的與意義,在第四章對(duì)每項(xiàng)功能的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)介紹。系統(tǒng)采用表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層使得層級(jí)分明,有利于系統(tǒng)后期維護(hù)。通過分層結(jié)構(gòu)、和根據(jù)功能需求對(duì)數(shù)據(jù)庫做的詳細(xì)設(shè)計(jì),最后實(shí)現(xiàn)了系統(tǒng)的各模塊。本系統(tǒng)和網(wǎng)絡(luò)上現(xiàn)有的答疑系統(tǒng)獨(dú)特之處在于:(1)回答質(zhì)量有保障,因?yàn)楸鞠到y(tǒng)是完全針對(duì)學(xué)生和老師之間的互動(dòng)答疑來實(shí)現(xiàn)的,故回答者都是問題所屬專業(yè)的老師,回答質(zhì)量具有一定權(quán)威性。(2)用戶沒有注冊功能,都是管理員實(shí)名添加。和非實(shí)名答疑系統(tǒng)相比,更利于管理員的日常管理與維護(hù)。(3)對(duì)用戶來說,系統(tǒng)簡單易學(xué)。本系統(tǒng)的優(yōu)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論