![高校在線答疑系統(tǒng)的設計與實現(xiàn)_第1頁](http://file4.renrendoc.com/view7/M02/04/35/wKhkGWcNz5mAUSDCAAHWUQHIJt0520.jpg)
![高校在線答疑系統(tǒng)的設計與實現(xiàn)_第2頁](http://file4.renrendoc.com/view7/M02/04/35/wKhkGWcNz5mAUSDCAAHWUQHIJt05202.jpg)
![高校在線答疑系統(tǒng)的設計與實現(xiàn)_第3頁](http://file4.renrendoc.com/view7/M02/04/35/wKhkGWcNz5mAUSDCAAHWUQHIJt05203.jpg)
![高校在線答疑系統(tǒng)的設計與實現(xiàn)_第4頁](http://file4.renrendoc.com/view7/M02/04/35/wKhkGWcNz5mAUSDCAAHWUQHIJt05204.jpg)
![高校在線答疑系統(tǒng)的設計與實現(xiàn)_第5頁](http://file4.renrendoc.com/view7/M02/04/35/wKhkGWcNz5mAUSDCAAHWUQHIJt05205.jpg)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
高校在線答疑系統(tǒng)的設計與實現(xiàn)高校在線答疑系統(tǒng)的設計與實現(xiàn)摘要隨著高校內(nèi)學生人數(shù)的日益增長,教師和上課地點的不斷變動使得學生和老師之間的交流受時間和空間限制,導致師生間的答疑工作難以開展。為此開發(fā)一個高校在線答疑系統(tǒng)大有裨益。本系統(tǒng)是基于B/S架構,使用JSP、SERVLET、JAVASCRIPT作為編程語言,結合MYSQL數(shù)據(jù)庫和JavaWeb開發(fā)的三層架構來實現(xiàn)學生模塊、教師模塊和管理員模塊功能。學生模塊主要功能包括學生對某位老師或所有老師提問、下載學習資料、查看并修改信息及根據(jù)提問數(shù)對學生進行排名。教師模塊主要功能包括回答問題并獲得積分、上傳資料、按積分對教師進行排名。管理員模塊主要功能包括對問題、學院、專業(yè)和用戶的管理操作。其中三層架構將整個系統(tǒng)劃分為界面層、業(yè)務邏輯層和數(shù)據(jù)訪問層,分層目的在于實現(xiàn)“高內(nèi)聚低耦合”思想。目前,大部分高校的答疑模塊都是內(nèi)嵌在網(wǎng)絡教學系統(tǒng)中,獨立存在的不多。本系統(tǒng)主要作用于學生和教師之間的答疑互動,其特點有回答質(zhì)量高,利于用戶管理所有提問或回答信息。關鍵詞:答疑系統(tǒng);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):用來接收用戶的請求以及遞交必要參數(shù),用于與用戶直接進行交互,在本層調(diào)用BLL層。業(yè)務邏輯層(BLL):主要處理業(yè)務邏輯以及各種數(shù)據(jù)驗證。在需要存取數(shù)據(jù)的時候,交給DAL層處理,然后返回信息給表示層。數(shù)據(jù)訪問層(DAL):不處理任何業(yè)務邏輯,只提供基本的數(shù)據(jù)訪問。
從上至下邏輯處理如圖4.1所示。圖4.1三層架構圖在本系統(tǒng)包結構如圖4.2所示,表示層包含用戶直接接觸的JSP頁面,如登錄界面、提問界面等。業(yè)務邏輯層包括.action包下面的各個SERVLET,用來接收并處理瀏覽器的請求,如有需要則從數(shù)據(jù)庫中取出信息并返回給表示層。數(shù)據(jù)訪問層為.daoImp、.daoInf和.db包,作用分別是數(shù)據(jù)庫操作的實現(xiàn)類、數(shù)據(jù)庫接口和獲取數(shù)據(jù)庫連接。其中.filter為系統(tǒng)過濾器,作用為在SERVLET被調(diào)用前后通過修改Request和Response對象來執(zhí)行所需操作。如通過request.setCharacterEncoding("utf-8")和response.setContentType("text/html;charset=utf-8")來設置頁面為中文編碼,解決中文亂碼問題。在每次調(diào)用SERVLET前后都會執(zhí)行這個過濾器,統(tǒng)一解決編碼不一致問題。本系統(tǒng)采用較原始的JSP+SERVLET框架,當客戶端發(fā)送請求至服務器時,服務器對接收到的信息進行解析后交給web容器,web容器會通過web.xml的配置文件去找與之匹配的SERVLET。然后調(diào)用該SERVLET的service()方法或service接口實現(xiàn)類,通過service接口實現(xiàn)類去調(diào)用dao包的接口實現(xiàn)類來獲取數(shù)據(jù)庫數(shù)據(jù)。最終將數(shù)據(jù)返回給JSP頁面呈現(xiàn)給用戶。圖4.2系統(tǒng)包結構圖4.1學生模塊功能的實現(xiàn)學生模塊主要功能包括提出問題、查看自己或其他同學的提問、對自己提問的回答進行采納、下載資料和根據(jù)學生提問數(shù)對學生進行排名,具體實現(xiàn)方法如下所示。4.1.1提出問題游客身份無法進行提問操作,只有登錄成功的學生用戶能發(fā)布問題。提問分為兩種,一種為對某位老師進行提問,其他老師看不到問題信息。另一種為對所有老師提問,所有老師可見。具體實現(xiàn)流程如圖4.3所示。圖4.3提問流程圖對某位老師提問當學生登錄成功后,點擊首頁的“教師團”后選擇某位老師點擊“我要提問”,此時teacher_group.JSP會鏈接到后臺questionservlet中,傳遞參數(shù)為command=addAskInfo&teacherNo=${teaNo},此時的teacherNo為被選擇教師的編號。首先進入的是questionservlet.service(),根據(jù)command的值來決定跳轉(zhuǎn)函數(shù),在ask()函數(shù)中從數(shù)據(jù)庫中獲取所有專業(yè)信息和學院信息,并將所有學院、專業(yè)對象和教師編號傳遞到前臺ask.JSP頁面。在ask.JSP中填入問題主題和詳細內(nèi)容,并選擇分類后,參數(shù)command=addAskInfo&teacherNo=${teaNo}會以post方式傳遞到questionservlet中,進入addAskInfo()后,將問題信息保存至數(shù)據(jù)庫中。保存成功后跳轉(zhuǎn)到問題發(fā)布成功提示頁面,學生提問結束。對所有老師提問當學生登錄成功后,點擊首頁的“我要提問”按鈕,top.JSP會鏈接至questionservlet,參數(shù)為command=addAskInfo&teacherNo=-1。此時的teacherNo被置為-1,表示對所有老師進行提問。其他步驟和上面對某位老師提問步驟完全一樣,在此不做贅述。4.1.2查看“我的提問”查看提問功能包括查看已解決問題、待解決問題和所有問題。在用戶登錄成功后,點擊自己個人中心,就能查看問題解答情況,具體實現(xiàn)步驟如下。查看待解決問題學生進入系統(tǒng)后,點擊個人中心的“待解決問題”,鏈接目標至href=”questionSERVLET?command=myUnfinishedQuestion”,傳遞參數(shù)為command=myUnfinishedQuestion。進入questionservlet的service()方法,根據(jù)接收的參數(shù)值跳轉(zhuǎn)至myUnfinishedQuestion()方法中。在此方法中調(diào)用數(shù)據(jù)庫實現(xiàn)類的getUnfinishedAskInfoByStudentId(student)來獲取該學生提出的尚未解決的問題,askInfo的status屬性含義為問題是否解決,默認為0,表示未解決。首先通過sql語句:select*fromaq_askInfowhereisDel=0andstudentNo={student.getStuNo()}來獲取該學生的所有問題,然后篩選status=0的問題即未解決問題。將未解決問題對象unfinishedAskInfos傳遞至前臺。前臺student_unfinishedQuestion.JSP通過調(diào)用unfinishedAskInfos對象的各個屬性,將未問題信息顯示出來。查看已解決問題查看已解決問題處理了流程和上述類似,這里做簡要介紹。點擊個人中心的“已解決問題”選項卡,鏈接至后臺href=”questionservlet?command=myFinishedQuestion”,傳遞參數(shù)為command=myFinishedQuestion。通過調(diào)用getUnfinishedAskInfoByStudentId(student)從數(shù)據(jù)庫中獲取status=1的問題。將已解決問題對象finishedAskInfos傳遞至前臺。前臺student_finishedQuestion.JSP通過調(diào)用finishedAskInfos對象的各個屬性,將已解決問題顯示出來。查看所有問題點擊“我的所有問題”選項卡后,鏈接至后臺href=”questionservlet?command=myAllQuestion”,傳遞參數(shù)為command=myAllQuestion。后臺questionservlet.myAllQuestion()方法通過調(diào)用GetAskInfosByStudentId()從數(shù)據(jù)庫中獲取到學生的所有提問,并將所有問題對象傳遞至前臺。前臺student_allQuestion.JSP通過調(diào)用后臺傳過來的stu_allAskInfos對象的各個屬性,所有問題信息顯示出來。4.1.3采納答案對尚未完結的問題可以采納自己滿意的回答,當某個回答被采納后,aq_answerInfo.isChecked=1表示被采納,aq_askInfo.status=1表示問題已解決。具體實現(xiàn)過程如圖4.4所示。圖4.4采納問題流程圖采納答案功能的流程文字解讀如下。學生登錄成功后,可以在個人中心里查看待解決問題,點擊某個問題后,鏈接至href=”questionservlet?command=chooseAnswer&askNo=${unfinishedAskInfo.answerNo}”,askNo為目前點擊問題的編號。根據(jù)接收的參數(shù)跳轉(zhuǎn)到chooseAnswer()中。在此方法中,通過調(diào)用實現(xiàn)類中getAskInfoViewBeans(askInfo)來獲取某個問題的相關信息。具體為通過對aq_askInfo、aq_student和aq_profession三表查詢,獲得某個問題的提問人姓名、問題所屬專業(yè)名稱等信息,將其放在askInfoViewBeans。通過getAnswerInfoByAskId(askNo)獲取某個問題的回答信息,將其放在answerInfos對象中。將askInfoViewBeans和answerInfo兩個對象傳給前臺。前臺readQuestionDetail.JSP將回答信息顯示出來,當點擊采納答案按鈕時,連接至后臺questionservlet.acceptAnswer(),在此方法中,設置aq_answerInfo.isChecked=1,aq_askInfo.status=1,表示該答案被采納,該問題已結束。4.1.4學生提問數(shù)排名本功能是根據(jù)學生提問數(shù)量的多少進行排名,將前10位同學的名字和提問數(shù)顯示在首頁。設計本功能的目的在于:當本系統(tǒng)得到學生的普遍使用時,提問數(shù)量越多,則說明該學生更好學,可以作為考核學生的一個小標準。實現(xiàn)步驟如下。學生每提問成功一次,讓aq_student的questionQuestion字段加1。通過StudentDaoImpl實現(xiàn)類的getStudentTop10ByCount()方法根據(jù)提問數(shù)量對學生進行排序。其中sql語句為:select*fromaq_studentwhereisDel=0orderbyquestionCountdesclimit10。將返回的前10名學生信息結果保存在student列表中,并返回給前臺。前臺頁面調(diào)用student列表,通過<c:foreach></c:foreach>標簽來循環(huán)獲取學生的姓名和提問數(shù)量字段并將其顯示出來。4.1.5下載資料點擊“點擊下載后”,鏈接至后臺userservlet,傳遞參數(shù)為command=download,fileNo=${fileShare.fileNo},這里的fileNo為下載資料的文件編號。進入userservlet.download()中,新建一個FileInputStream對象和一個ServletOutputStream對象,通過前者從服務器上讀取文件,然后通過后者輸出。在這個過程中有一點需要特別注意,文件名是中文時容易出現(xiàn)亂碼,需要通過req.getHeader(“User-Agent”).contains(“MSIE”)?fileName.getBytes():fileName.getBytes(“UTF-8”);fileName=newString(byte,”ISO=8859-1”)來處理亂碼問題。4.2教師模塊功能的實現(xiàn)4.2.1解答問題教師的解答問題功能為:當教師登錄成功后,可為學生解答未結束的問題,當回答提交成功后,系統(tǒng)會自動發(fā)郵件提醒學生登錄查看,同時,不管自己回答是否被采納,教師都可獲得2個積分,解答問題流程如圖4.5所示。圖4.5解答問題流程圖實現(xiàn)方法如下。當教師點擊某個未解決的問題時,會以url傳遞的方式將參數(shù)command=questionView,askId=${askInfoUnChecked.askNo}傳至后臺questionservlet中。其中askId的值為該未解答問題的問題編號。首先會進入questionservlet.service()方法,根據(jù)command參數(shù)值跳轉(zhuǎn)到questionView()中。在此方法中,執(zhí)行的操作有:①更新問題的瀏覽次數(shù),讓次數(shù)加1。②通過對數(shù)據(jù)庫中aq_askInfo、aq_student、aq_profession三表查詢問題表的所有信息、提問學生信息及問題所屬類。③根據(jù)aq_askInfo表中status屬性值篩選出未解答的問題,status=0表示未解決。④跳轉(zhuǎn)到問題回答頁面。在問題回答頁面,能看到其他老師的回答信息。當解答完畢點擊提交回答按鈕時,前臺以url傳遞方式將command=addAnswer和askNo值傳遞至后臺questionservlet。進入到questionservlet.addAnswer()后,執(zhí)行的操作有:①將解答內(nèi)容及回答者信息保存至數(shù)據(jù)庫中。②系統(tǒng)給提問學生發(fā)送郵件提醒其登陸查看回答信息。跳轉(zhuǎn)到提示頁面,解答問題步驟完成。4.2.2查看“我的回答”進入教師的個人中心頁面,可點擊“查看我的回答”來瀏覽自己的所有回答問題信息。同時可點擊問題查看其它老師的回答內(nèi)容。實現(xiàn)步驟如下。點擊個人中心頁面中的某個問題,前臺以url傳值的方式將command=chooseAnswer和askNo=${tea_allaskInfo.askNo}傳至后臺questionSERVLET中。根據(jù)參數(shù)跳轉(zhuǎn)至questionservlet.chooseAnswer()中,執(zhí)行的操作有:①通過對數(shù)據(jù)庫中aq_student、aq_askinfo和aq_profession三表查詢獲取問題信息、提問學生信息和問題所屬專類。②在aq_answer數(shù)據(jù)表中根據(jù)askNo獲取該問題的所有回答信息。③將問題相關信息askInfoViewBean對象和回答內(nèi)容answerInfos對象傳遞給前臺。在readQuestionDetail.JSP頁面獲取后臺傳遞的兩個對象,分別調(diào)用兩個對象的各個屬性,將回答內(nèi)容、回答者名字和回答時間等信息顯示出來。4.2.3教師積分排名根據(jù)積分對教師進行排行,選取前10位顯示在首頁。設計此功能的目的在于:從某種程度上來說,獲得積分越高,說明與學生的互動越多,對學生的學習動態(tài)更加關注。實現(xiàn)步驟如下。更新積分,為回答教師加2個積分。通過getTeacherTop10ByPoint()方法來進行排序,其中sql語句為“select*fromaq_teacherwhereisDel=0orderbypointsdesclimit10”。通過Sqlcommand.getResult()來獲取返回的結果,利用teacher對象的set()方法將結果保存在teacher列表中。在前臺頁面顯示教師名字和教師積分。4.2.4上傳資料上傳資料功能設計:教師點擊“上傳”后將資料上傳到服務器中,數(shù)據(jù)庫中filepath字段保存資料存放的絕對路徑,如D:\Tomcat\webapps\AQWeb_test\upload\7\自學問題.docx。具體設計步驟如下所示。前臺表單設計。使用input標簽,type指定為file,此時前臺展現(xiàn)的是一個本地文件選擇器,選擇上傳的文件。包含input標簽的form表單要特殊處理,Method=post,因為只有post才能傳遞大文件,get只能傳4k。Enctype="multipart/form-data"表示是有多個成分的,既有文本數(shù)據(jù),也有文件等二進制數(shù)據(jù)。另外,取表單元素值的時候,不能再使用getParameter方法,必須使用上傳組件提供的api。后臺代碼設計步驟。確保這個請求是一個正確的上傳文件。DiskFileItemFactory類中常見的構造方法和類分別通過setThreshold(),setRepository()來設置創(chuàng)建緩沖大小和磁盤緩沖路徑。同時,通過構造DiskFileItemFactory()來設置大小和存放位置。ServletFileUpload類ServletFileUploadupload=newServleyFileUpload(factory);
upload.setHeaderEncoding("utf-8");upload.setSizeMax(-1);//設置上傳文件限制大小,-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管理員模塊功能的實現(xiàn)4.3.1問題管理問題管理功能即管理員對系統(tǒng)的所有問題及回答情況進行管理,具體操作分為三種:查看、刪除和搜索,如圖4.6所示。實現(xiàn)方法如下所示。圖4.6問題管理功能圖查看問題及回答信息點擊前臺頁面的“提問信息”,通過<ahref=“bgmQuesservlet?command=askinfo”>將command參數(shù)傳遞至后臺bgmQuesservlet。bgmQuesservlet通過req.getParameter()獲取的command值跳轉(zhuǎn)到askinfo()函數(shù)中。在此方法中從數(shù)據(jù)庫中取出所有問題和所有學生,其中獲取學生信息時,因為需要顯示所在專業(yè)名,故對aq_student和aq_profession兩個表查詢獲取。通過req.setAttribute()對問題和學生參數(shù)賦值,傳遞給BgAskinfo.JSP頁面調(diào)用。前臺頁面通過調(diào)用問題對象和學生對象的屬性顯示問題及提問者信息。點擊“查看”,將command=askall&askNo=${askinfo.askNo}參數(shù)傳遞至后臺。在bgmQuesservlet.askview()函數(shù)中,調(diào)用getAskInfoById(askNo)來獲取被點擊問題的標題,調(diào)用getAnswerInfoByAskNo(askNo)來獲取該問題的所有回答內(nèi)容,調(diào)用getStudentById()獲取提問者名字,調(diào)用getTeacherById()獲取回答老師的名字。將這些函數(shù)的返回對象傳遞給前臺頁面。接收后臺傳遞的對象,顯示對象的各個屬性值。刪除問題或回答刪除某個問題,將command=deleteAsk和askNo兩個參數(shù)傳遞至后臺。后臺調(diào)用delete方法,設置isDel=1進行邏輯刪除。刪除某個回答,將command=deleteAnswer和ansNo兩個參數(shù)傳遞至后臺。后臺調(diào)用delete方法,設置回答表的isDel=1。搜索問題輸入關鍵字,點擊搜索。將command=select和關鍵字傳遞至后臺bgmQuseSERVLET。調(diào)用select()方法,在此方法中調(diào)用實現(xiàn)類的getAskInfoByAskTop()獲取含有該關鍵字的記錄并將其保存在askInfos列表中。前臺調(diào)用askInfos,將其標題、內(nèi)容屬性顯示出來。4.3.2學院管理對學院的管理功能包括添加、刪除、修改和查看學院,其實現(xiàn)方法如下。添加學院管理員點擊添加學院,跳轉(zhuǎn)到addAcade.JSP頁面。輸入新的學院名后,點擊確定。表單以post的方式將command=addAcade參數(shù)傳到bgmAcademySERVLET后臺。后臺調(diào)用addAcademyJSP(),通過getParameter()獲取輸入的學院名。在inserAcade()中,把新的學院名插入數(shù)據(jù)表中,并設置isDel=0。在前臺顯示所有學院信息,包括新增加的信息。刪除學院管理員點擊某學院后面的刪除按鈕,所選信息以post方式將command=deleteAll參數(shù)和學院編號傳遞至bgmAcademyservlet后臺。在deleteAll()中通過checkbox[]數(shù)組來接收前臺所選中的學院編號。然后利用for循環(huán)調(diào)用delete()逐個刪除,設置學院表的isDel=1。在前臺顯示所有數(shù)據(jù)表里isDel=0的數(shù)據(jù)。修改學院點擊學院后面的“編輯”,跳轉(zhuǎn)到updateAcade.JSP頁面。輸入新的學院名后,點擊保存。將command=updateAcade和academyNo傳至bgmAcademySERVLET。后臺調(diào)用updateAcade(),在此方法中,通過sql語句:updateaq_academysetacademyname=?,isDel=?whereacademyno=?來更新數(shù)據(jù)庫,其中的三個問號(?)為占位符,分別由前臺獲取的學院名,數(shù)據(jù)庫中取出的isDel和學院編號填充。將被更新的數(shù)據(jù)庫顯示在前臺。4.3.3專業(yè)管理專業(yè)管理包括根據(jù)學院名顯示相應專業(yè)名稱、添加及刪除專業(yè)功能,具體實現(xiàn)方法如下。顯示專業(yè)根據(jù)學院選擇專業(yè),在前臺選擇學院名后,調(diào)用本頁面的onchange=”profe()”方法,此時會傳遞command=profeByAcadeNo和profeByAcadeNo到后臺bgmProfeservlet。調(diào)用后臺profeByAcadeNo(),在此方法中,通過getProfeByAcadeId()來獲取被選中學院的所有專業(yè),并將所有專業(yè)記錄傳遞至前臺BgProfession.JSP頁面。在前臺顯示。添加專業(yè)點擊前臺BgProfession.JSP頁面“添加專業(yè)”按鈕時,將參數(shù)command=addProfess傳遞至bgmProfeservlet。在bgmProfeservlet.addProfessJSP()中,調(diào)用getAllAcademy()來獲取所有學院信息,同時將學院對象傳遞給前臺addProfess.JSP頁面。在addProfess.JSP頁面中,輸入新的專業(yè)名并選擇相應學院,點擊“保存”后,表單以Post方式提交到bgmProfeservlet中,參數(shù)為addProfession。取出該學院下的所有專業(yè)與輸入的專業(yè)名做比較,如果有同名則提示該專業(yè)已存在。當不同名,則調(diào)用專業(yè)對象的insert()方法來執(zhí)行插入。刪除專業(yè)點擊前臺的“刪除”按鈕,將command=delete、profeDeletId和profeByAcadeNo傳遞至bgmProfeservlet中。調(diào)用deleteProfe(),在此方法中調(diào)用profeDao對象的delete()方法,設置編號為profeDeletId的專業(yè)的isDel=1。4.3.4用戶管理用戶管理操作包括添加、修改和刪除用戶。其中修改用戶包括修改姓名、專業(yè)、郵箱和頭像。實現(xiàn)方法如下所示,因為實現(xiàn)步驟與上面的學院添加、刪除和修改類似,故在這只做簡要說明。新增用戶管理員點擊“新增”按鈕,帶flag=0參數(shù)跳轉(zhuǎn)到add_student.JSP頁面,此flag用來標識是新增操作還是修改操作。輸入姓名、學號、專業(yè)等信息點擊“保存”,將command=save和flag=0傳遞到后臺studentservlet中。通過調(diào)用數(shù)據(jù)庫實現(xiàn)類的addStudent()函數(shù)將學生對象保存進aq_student表。在前臺顯示所有學生信息。修改用戶管理員點擊用戶后面的“修改”,帶flag=1參數(shù)跳轉(zhuǎn)到add_student.JSP頁面中。輸入需要修改的信息,點擊保存,將command=save和flag=1傳遞到后臺。在save()中調(diào)用changeStu()修改學生信息并保存。前臺顯示學生信息。刪除用戶管理員點擊用戶后面的“刪除”按鈕,將command=deleteStu和stuNo傳遞到studentservlet。在deleteStu()中,調(diào)用實現(xiàn)類的deleteStu()方法更新studentno=stuNo的記錄,設置isdel=1。在前臺顯示。4.4通用功能的實現(xiàn)4.4.1登錄三類用戶都具有登錄系統(tǒng)功能,登錄成功的唯一條件為:只有用戶類型、用戶名、密碼和驗證碼全都正確時,才能成功登錄。若是由于忘記密碼,則可通過找回密碼功能來得到系統(tǒng)發(fā)送的帶有密碼的郵件。流程如圖4.7所示。圖4.7登錄功能流程圖首先判斷輸入的文本與隨機生成的驗證碼是否正確,當驗證碼錯誤時則不繼續(xù)驗證。生成驗證的方法為:①生成一個4位的隨機數(shù)。②構建BufferedImage。③繪制圖片。④繪制噪點。⑤存入session。⑥將BufferedImage保存到servlet輸出流中。當驗證碼正確時,根據(jù)選擇的用戶類型,進入相應用戶類型的數(shù)據(jù)庫中。根據(jù)輸入的用戶名查找與之相同的條目,把輸入的密碼和數(shù)據(jù)庫中密碼進行比較。比較成功則驗證通過,否則提示驗證碼或密碼錯誤,重新跳轉(zhuǎn)到登錄頁面。4.4.2注銷三類用戶都具有注銷功能,設置登錄和注銷功能是為了保障系統(tǒng)安全性,加強管理。其實現(xiàn)方法較為簡單,當用戶點擊“注銷”后,調(diào)用后臺的exit()方法。在此方法中,設置loginUser為null,idType為null,并存入session中,此時身份會變成游客身份,只能進行少量的瀏覽操作。4.4.3找回密碼學生用戶的郵箱是用來找回密碼和接收系統(tǒng)查看回答提醒郵件,教師的郵箱是用來找回密碼。找回密碼功能是通過發(fā)送帶有用戶名和密碼的簡單郵件來實現(xiàn)的。認證類功能:初始化郵箱和密碼。發(fā)送類:①發(fā)送郵件的props文件;②調(diào)用認證類對郵箱服務器進行登錄驗證。③初始化郵件發(fā)送器,包括發(fā)送者的用戶、密碼以及smtp服務器。④最后創(chuàng)建簡單郵件類,包括主題和內(nèi)容,調(diào)用郵件發(fā)送器進行發(fā)送。4.4.4修改信息教師和學生能修改自身的基本信息,包含郵箱和密碼。其他類似姓名、專業(yè)等實名信息只能通過管理員修改。修改郵箱和改密碼的實現(xiàn)步驟一樣,接下來以學生修改密碼為例。學生點擊“修改密碼”后,跳轉(zhuǎn)到student_changepwd.jsp頁面中,在此頁面中重復輸入新密碼,然后點擊確定。表單以post方式將新密碼傳遞到userservlet中,command=studentchangeinfo。在后臺studentchangeinfo()中,通過req.getPatameter()獲取新的密碼,然后調(diào)用實現(xiàn)類的studao.changeStudentInfo()方法更新該用戶的密碼,并將其保存的對象中。sql語句為updateaq_studentsetstudentpwd=?,studentemail=?wherestudentno=?.其中密碼、郵箱都是通過調(diào)用student.getxxx()來獲取。5系統(tǒng)測試5.1系統(tǒng)測試目的系統(tǒng)測試是為了找出代碼錯誤、衡量軟件質(zhì)量而實施的過程。測試人員根據(jù)系統(tǒng)開發(fā)過程中的內(nèi)部流程來刻意設計一些測試用例,利用這些用例來發(fā)現(xiàn)系統(tǒng)漏洞。系統(tǒng)測試是系統(tǒng)在投入生產(chǎn)前,對系統(tǒng)分析和系統(tǒng)設計進行最終審查,是系統(tǒng)質(zhì)量保證的關鍵步驟REF_Ref452425583\r\h[12]。測試的終極目標找出系統(tǒng)中至今尚未發(fā)現(xiàn)的錯誤和缺陷。5.2子模塊測試5.2.1學生模塊提問功能測試學生提問時需要注意的地方包括提問分為兩中情況以及提問的信息必須填寫完善,否則會出現(xiàn)相應提示。測試用例如表5-1所示。表5-1提問功能測試用例當提問信息輸入完整時,提問成功,且能在首頁看到提問主題。問題信息填寫如圖5.1所示。首頁問題列表如圖5.2所示。當主題、內(nèi)容、分類任何一項填寫不全時,會出現(xiàn)如圖5.3所示的提示。圖5.1提問內(nèi)容圖圖5.2問題列表圖圖5.3問題信息填寫不全提示查看提問測試學生登錄成功后,在個人中心能查看自己的待解決問題、已解決問題和所有提問,如圖5.4所示。圖5.4待解決提問圖采納問題測試學生查看自己提問的回答時,對滿意的答案可點擊“采納此答案”來結束問題,如圖5.5所示。采納成功后,運行界面如圖5.6所示。圖5.5瀏覽問題詳情圖圖5.6采納問題圖學生排名測試在系統(tǒng)首頁,會根據(jù)學生提問數(shù)對學生進行排名,以此來鼓勵學生提問,運行顯示如圖5.7所示。圖5.7學生排名圖下載資料測試學生點開某個教師的個人介紹頁面時,能看到該教師上傳的所有資料以及問題回答情況。點擊“點擊下載”按鈕后,即可將資料下載到本地,運行界面如圖5.8所示。圖5.8資料下載圖5.2.2教師模塊解答問題測試教師可解答對所有老師提問的問題和對自己提問的問題,解答過程截圖如圖5.9所示。當內(nèi)容填寫完畢,點擊提交回答后,系統(tǒng)會自動發(fā)郵件系統(tǒng)學生登錄查看,郵件內(nèi)容如圖5.10所示。圖5.9解答問題圖圖5.10提醒郵件內(nèi)容圖查看回答測試教師登錄成功后,在個人中心能查看自己參與的所有問題,如圖5.11所示。圖5.11查看參與問題頁面教師排名測試在系統(tǒng)首頁,根據(jù)積分對教師進行排名,以此來鼓勵老師解答問題,運行效果如圖5.12所示。圖5.12教師排名圖上傳資料測試在教師的個人中心頁面,在我的分享選項卡中選擇相應文件。點擊“提交”,即可將文件上傳至服務器供學生下載,數(shù)據(jù)庫中保存的是文件路徑。運行如圖5.13所示。圖5.13資料上傳圖5.2.3管理員模塊問題管理問題管理功能包括對問題的查看、刪除和查詢功能,另外還可以刪除問題的某些回答。下圖5.14是系統(tǒng)目前所有的問題。圖5.14問題列表現(xiàn)在查看第一個問題“路由器和交換機區(qū)別”的回答詳情,如圖5.15所示。圖5.15消息明細列表如果某些問題或某些回答不符合網(wǎng)絡文明公約,管理員可刪除問題或回答。刪除“什么是OSPF協(xié)議”后的問題列表如圖5.16所示。刪除某個回答的問題回答信息如圖5.17所示。圖5.16刪除問題后的列表圖5.17刪除回答后的列表問題搜索功能是針對輸入的關鍵字對問題標題進行搜索,運行效果如圖5.18所示。圖5.18問題搜索功能學院管理學院管理功能包括對學院的刪除、添加和修改功能。現(xiàn)添加“土建學院”來測試增加功能是否正常,添加學院時的界面如圖5.19所示。添加成功后界面如圖5.20所示。圖5.19學院添加信息圖圖5.20添加學院后的學院列表現(xiàn)刪除“能動學院”來測試刪除功能是否正常,點擊刪除后學院列表如圖5.21所示。圖5.21刪除學院后的學院列表修改學院“計通學院”為“計通學院-test”,修改成功如圖5.22所示。圖5.22修改學院后的學院列表專業(yè)管理專業(yè)管理功能包括根據(jù)學院查看專業(yè)、添加專業(yè)和刪除專業(yè)功能。下圖是點開“專業(yè)管理”界面。當選擇相應學院后,如計通學院,其專業(yè)列表如圖5.23所示。圖5.23學院專業(yè)現(xiàn)驗證添加專業(yè)功能是否正常,輸入計算機科學與技術,選擇計通學院,點擊保存后,計通學院的專業(yè)列表如圖5.24所示。圖5.24添加專業(yè)后的專業(yè)列表現(xiàn)刪除“軟件工程”專業(yè)來驗證刪除功能的正常,刪除后界面如圖5.25所示。圖5.25刪除專業(yè)后的專業(yè)列表用戶管理用戶管理包括對三類用戶的操作,分別是學生、教師和管理員用戶。具體操作有增、刪、改、查。學生用戶測試現(xiàn)測試添加功能是否正常,新增信息如圖5.26所示。點擊保存后,圖5.27表示新增成功。圖5.26添加學生信息圖圖5.27添加學生后的學生列表刪除姓名為“趙凱鵬”的同學后,新的學生列表如圖5.28所示。圖5.28刪除學生后的學生列表現(xiàn)修改姓名為“何杜”的名字為“何杜-test”,專業(yè)改為“英語”,修改后列表如下圖5.29所示。圖5.29修改學生后的學生列表教師用戶測試現(xiàn)驗證教師用戶的增添功能是否正常,添加信息如圖5.30所示,圖5.31表示新增教師用戶成功。圖5.30教師添加頁面圖5.31教師添加成功圖現(xiàn)刪除“余飛”老師來驗證刪除功能的正常性,結果如圖5.32所示。圖5.32教師刪除成功圖現(xiàn)驗證修改功能的正常性,修改姓名“夏卓群”為“夏卓群-test”結果如圖5.33和圖5.34所示。圖5.33教師信息原圖圖5.34教師信息被修改后圖管理員用戶測試現(xiàn)驗證添加管理員功能是否正常,添加信息如圖5.35所示。添加后管理員列表如圖5.36所示。圖5.35管理員添加頁面圖5.36添加管理員成功圖和超級管理員相比,普通管理員沒有新增和刪除管理員權限,其他功能一樣,如圖5.37所示。圖5.37普通管理員列表5.2.4通用功能測試登錄功能測試登錄測試是為了保證系統(tǒng)登錄功能的正確實現(xiàn)。只有當用戶輸入了正確的用戶名、密碼和驗證碼才能成功登錄,否則會提示相應錯誤。具體測試用例如表5-1所示。表5-1登錄功能測試用例當用戶名或密碼輸入錯誤時,會跳轉(zhuǎn)到一個錯誤提示頁面,截圖如圖5.38所示。圖5.38登錄失敗提示對登錄過程的判斷流程為:如果沒輸入用戶名、密碼和驗證碼就點擊登錄時,會提示用戶名或密碼不能為空。當驗證碼錯誤,不管用戶名和密碼正確與否都不能成功登錄,此時不去數(shù)據(jù)庫中進行比較,只對驗證碼進行錯誤提示。運行截圖如下圖5.39所示。圖5.39驗證碼輸入錯誤提示注銷功能測試三類用戶點擊注銷功能后,嘗試進行如提問、回答、查看問題答案等操作時,系統(tǒng)會提示目前用戶正是游客身份,沒有權限進行此類操作。運行效果如圖5.40所示。圖5.40游客身份提示修改基本信息學生和教師可修改自身密碼和郵箱,測試用例如表5-2所示。表5-2修改功能測試用例表當前后兩次輸入相同的非空密碼時,修改成功,運行如圖5.41所示。圖5.41修改成功提示當輸入空密碼或者兩次密碼輸入不一致時,當前頁面會提示。運行如圖5.42和5.43所示。圖5.42輸入空密碼提示圖圖5.43兩次密碼輸入不一致提示圖找回密碼若學生和教師用戶忘記登錄密碼無法登錄時,可通過登錄頁面的找回密碼功能找回保存在數(shù)據(jù)庫中的密碼,找回密碼功能測試用例如表5-3所示。表5-3找回密碼測試用例表用戶類型和用戶名輸入都正確時,系統(tǒng)會自動發(fā)送帶密碼的郵箱至用戶個人信息中保存的郵件地址,郵件內(nèi)容如下圖5.44所示。圖5.44密碼郵件內(nèi)容圖當用戶名和選擇的用戶類型不匹配時,點擊找回密碼后,會進教師用戶數(shù)據(jù)表中查找是否有hedu用戶,如果取出的內(nèi)容為null,會提示用戶名不正確或與用戶類型不匹配。運行效果如下圖5.45所示。圖5.45找回密碼輸入錯誤提示圖6總結與展望6.1總結本論文簡要講述了開發(fā)高校在線答疑系統(tǒng)的目的與意義,在第四章對每項功能的實現(xiàn)方法進行了詳細介紹。系統(tǒng)采用表示層、業(yè)務邏輯層和數(shù)據(jù)訪問層使得層級分明,有利于系統(tǒng)后期維護。通過分層結構、和根據(jù)功能需求對數(shù)據(jù)庫做的詳細設計,最后實現(xiàn)了系統(tǒng)的各模塊。本系統(tǒng)和網(wǎng)絡上現(xiàn)有的答疑系統(tǒng)獨特之處在于:(1)回答質(zhì)量有保障,因為本系統(tǒng)是完全針對學生和老師之間的互動答疑來實現(xiàn)的,故回答者都是問題所屬專業(yè)的老師,回答質(zhì)量具有一定權威性。(2)用戶沒有注冊功能,都是管理員實名添加。和非實名答疑系統(tǒng)相比,更利于管理員的日常管理與維護。(3)對用戶來說,系統(tǒng)簡單易學。本系統(tǒng)的優(yōu)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- TAS2940-生命科學試劑-MCE-8412
- Ocifisertib-hydrochloride-CFI-400945-hydrochloride-生命科學試劑-MCE-6463
- Dehydrocannabifuran-6-Methyl-9-isopropenyl-3-pentyldibenzofuran-1-ol-生命科學試劑-MCE-8289
- 7-Methoxy-9-methylfuro-2-3-b-quinoline-4-5-8-9H-trione-生命科學試劑-MCE-1580
- 3-Methyl-L-tyrosine-生命科學試劑-MCE-8000
- 二零二五年度虛擬股員工持股計劃協(xié)議
- 二零二五年度煤礦開采權轉(zhuǎn)讓合同
- 2025年度順豐速運高端物流服務合同模板
- 施工單位施工合同管理要點
- 疫情下教育變革的啟示-學校與醫(yī)院合作的必要性與優(yōu)勢分析
- 2025版茅臺酒出口業(yè)務代理及銷售合同模板4篇
- 2025年N1叉車司機考試試題(附答案)
- 《醫(yī)院財務分析報告》課件
- 2024年考研政治試題及答案
- 2024-2025學年人教版數(shù)學六年級上冊 期末綜合卷(含答案)
- 天津市部分區(qū)2023-2024學年高二上學期期末考試 物理 含解析
- 2025年初級社會工作者綜合能力全國考試題庫(含答案)
- 2024年濰坊護理職業(yè)學院單招職業(yè)適應性測試題庫附答案
- 《鉗工基本知識》課件
- 制冷操作證培訓教材-制冷與空調(diào)設備運行操作作業(yè)培課件
- 中交與機械竣工區(qū)別
評論
0/150
提交評論