【文章內(nèi)容簡(jiǎn)介】
e l e t e _ t o k e n 為 0 的問(wèn)卷信息聯(lián)立 u s e r s 表與 q u e s t i o n n a i r e s 表 , 找出 q u e s t i o n n a i r e s表中此用戶(hù)創(chuàng)建的 d e l e t e _ t o k e n 為 0 的問(wèn)卷信息T以問(wèn)卷 i d 降序的順序排列問(wèn)卷信息以問(wèn)卷 i d 降序的順序排列問(wèn)卷信息輸出信息輸出信息結(jié)束結(jié)束輸出錯(cuò)誤信息輸出錯(cuò)誤信息F圖 問(wèn)卷信息展示流程圖開(kāi)始開(kāi)始填寫(xiě)信息不為空填寫(xiě)信息不為空添加按鈕按下添加按鈕按下結(jié)束結(jié)束生成對(duì)話(huà)框生成對(duì)話(huà)框填寫(xiě)問(wèn)卷標(biāo)題和有效時(shí)間填寫(xiě)問(wèn)卷標(biāo)題和有效時(shí)間寫(xiě)入數(shù)據(jù)庫(kù)寫(xiě)入數(shù)據(jù)庫(kù)TF圖 建立新問(wèn)卷流程圖沈陽(yáng)航空航天大學(xué)課程設(shè)計(jì)報(bào)告 11 圖 建立新問(wèn)卷頁(yè)面 題目信息管理本模塊用于實(shí)現(xiàn)題目信息的后臺(tái)管理。具體的操作有:題目信息展示、創(chuàng)建新題目、更新題目、刪除題目等操作。要展示的題目信息有:(1)題號(hào),用于展示問(wèn)卷時(shí)的題目排序。(2)題目?jī)?nèi)容。(3)題型(單選題、多選題、簡(jiǎn)答題)。(4)編輯題目對(duì)應(yīng)選項(xiàng)的鏈接(簡(jiǎn)答題除外)。(5)題目操作按鈕,包括題目更新按鈕和題目刪除按鈕。此頁(yè)面 URL 為: id}。題目信息管理頁(yè)面 UI 與流程圖如圖 和圖 所示。沈陽(yáng)航空航天大學(xué)課程設(shè)計(jì)報(bào)告 12 圖 題目信息展示頁(yè)面開(kāi)始開(kāi)始存在 S e s s i o n , 且 S e s s i o n用戶(hù)名與 U R L 中用戶(hù)名一致存在 S e s s i o n , 且 S e s s i o n用戶(hù)名與 U R L 中用戶(hù)名一致聯(lián)立 q u e s t i o n n a i r e s 表與 s u b j e c t s 表 , 找出 s u b j e c t s 表中此問(wèn)卷 i d 的 d e l e t e _ t o k e n 為 0 的問(wèn)卷信息聯(lián)立 q u e s t i o n n a i r e s 表與 s u b j e c t s 表 , 找出 s u b j e c t s 表中此問(wèn)卷 i d 的 d e l e t e _ t o k e n 為 0 的問(wèn)卷信息T以題目 i d 降序的順序排列問(wèn)卷信息以題目 i d 降序的順序排列問(wèn)卷信息輸出信息輸出信息結(jié)束結(jié)束輸出錯(cuò)誤信息輸出錯(cuò)誤信息問(wèn)卷 i d 是此用戶(hù)創(chuàng)建問(wèn)卷 i d 是此用戶(hù)創(chuàng)建TF圖 題目信息展示流程圖除此之外,還有一個(gè)添加題目按鈕。使用 JavaScript 捕獲按鈕點(diǎn)擊消息,生成建立新題目對(duì)話(huà)框,用戶(hù)通過(guò)下拉框選擇題號(hào)與題型,輸入題目后可以創(chuàng)建新題目,已有的題號(hào)不會(huì)出現(xiàn)在下拉框中,防止生成問(wèn)卷的題號(hào)重復(fù)。使用 Ajax與服務(wù)器交流將問(wèn)卷信息寫(xiě)入數(shù)據(jù)庫(kù),做到平滑操作,改善用戶(hù)體驗(yàn)。添加新題目頁(yè)面 UI 與流程圖如圖 和圖 所示。沈陽(yáng)航空航天大學(xué)課程設(shè)計(jì)報(bào)告 13 圖 建立新題目頁(yè)面 開(kāi)始開(kāi)始填寫(xiě)信息不為空填寫(xiě)信息不為空添加按鈕按下添加按鈕按下結(jié)束結(jié)束生成對(duì)話(huà)框生成對(duì)話(huà)框選擇題號(hào) 、 題型 , 填寫(xiě)題目選擇題號(hào) 、 題型 , 填寫(xiě)題目寫(xiě)入數(shù)據(jù)庫(kù)寫(xiě)入數(shù)據(jù)庫(kù)TF圖 建立新題目流程圖 選項(xiàng)信息管理本模塊用于實(shí)現(xiàn)選項(xiàng)信息的后臺(tái)管理。具體的操作有:選項(xiàng)信息展示、創(chuàng)建新選項(xiàng)、更新選項(xiàng)、刪除選項(xiàng)等操作。要展示的選項(xiàng)信息有:(1)選項(xiàng)號(hào),用于展示題目時(shí)的選項(xiàng)排序。沈陽(yáng)航空航天大學(xué)課程設(shè)計(jì)報(bào)告 14 (2)選項(xiàng)內(nèi)容。(3)選項(xiàng)操作按鈕,包括選項(xiàng)更新按鈕和選項(xiàng)刪除按鈕。此頁(yè)面 URL 為: 題目 id}。選項(xiàng)信息管理頁(yè)面 UI 與流程圖如圖 和圖 所示。圖 選項(xiàng)信息管理頁(yè)面開(kāi)始開(kāi)始存在 S e s s i o n , 且 S e s s i o n用戶(hù)名與 U R L 中用戶(hù)名一致存在 S e s s i o n , 且 S e s s i o n用戶(hù)名與 U R L 中用戶(hù)名一致聯(lián)立 s u b j e c t s 表與 o p t i o n s 表 , 找出 o p t i o n s 表中此問(wèn)卷i d 的 d e l e t e _ t o k e n 為 0 的問(wèn)卷信息聯(lián)立 s u b j e c t s 表與 o p t i o n s 表 , 找出 o p t i o n s 表中此問(wèn)卷i d 的 d e l e t e _ t o k e n 為 0 的問(wèn)卷信息T以選項(xiàng) i d 降序的順序排列問(wèn)卷信息以選項(xiàng) i d 降序的順序排列問(wèn)卷信息輸出信息輸出信息結(jié)束結(jié)束輸出錯(cuò)誤信息輸出錯(cuò)誤信息題目 i d 是此用戶(hù)創(chuàng)建題目 i d 是此用戶(hù)創(chuàng)建TF圖 選項(xiàng)信息管理流程圖沈陽(yáng)航空航天大學(xué)課程設(shè)計(jì)報(bào)告 15 除此之外,還有一個(gè)添加選項(xiàng)按鈕。使用 JavaScript 捕獲按鈕點(diǎn)擊消息,生成建立新選項(xiàng)對(duì)話(huà)框,用戶(hù)通過(guò)下拉框選擇選項(xiàng)號(hào),輸入選項(xiàng)內(nèi)容后可以創(chuàng)建新選項(xiàng),已有的選項(xiàng)號(hào)不會(huì)出現(xiàn)在下拉框中,防止生成問(wèn)卷的題號(hào)重復(fù)。使用 Ajax與服務(wù)器交流將問(wèn)卷信息寫(xiě)入數(shù)據(jù)庫(kù),做到平滑操作,改善用戶(hù)體驗(yàn)。添加新題目頁(yè)面 UI 與流程圖如圖 和圖 所示。圖 建立新選項(xiàng)頁(yè)面 開(kāi)始開(kāi)始填寫(xiě)信息不為空填寫(xiě)信息不為空添加按鈕按下添加按鈕按下結(jié)束結(jié)束生成對(duì)話(huà)框生成對(duì)話(huà)框選擇選項(xiàng)號(hào) , 填寫(xiě)選項(xiàng)選擇選項(xiàng)號(hào) , 填寫(xiě)選項(xiàng)寫(xiě)入數(shù)據(jù)庫(kù)寫(xiě)入數(shù)據(jù)庫(kù)TF圖 建立新選項(xiàng)流程圖沈陽(yáng)航空航天大學(xué)課程設(shè)計(jì)報(bào)告 16 問(wèn)卷結(jié)果統(tǒng)計(jì)根據(jù)用戶(hù)填寫(xiě)的問(wèn)卷信息,統(tǒng)計(jì)選擇題每一道選項(xiàng)的選項(xiàng)次數(shù)以及簡(jiǎn)答題的答案。同一道題目不同選項(xiàng)選擇次數(shù)使用餅狀圖顯示百分比。使用 HighCharte 庫(kù)繪制餅狀圖。頁(yè)面 URL 為: id}/result。頁(yè)面 UI 如圖 與圖 所示。圖 問(wèn)卷統(tǒng)計(jì)選擇題展示頁(yè)面圖 問(wèn)卷統(tǒng)計(jì)簡(jiǎn)答題展示頁(yè)面 沈陽(yáng)航空航天大學(xué)課程設(shè)計(jì)報(bào)告 17 問(wèn)卷生成根據(jù)用戶(hù)創(chuàng)建的問(wèn)卷、題目以及對(duì)應(yīng)的選項(xiàng)信息,生成一個(gè)完整的問(wèn)卷頁(yè)面,頁(yè)面 URL 為: id}。頁(yè)面 UI 如圖 所示。圖 問(wèn)卷頁(yè)面 沈陽(yáng)航空航天大學(xué)課程設(shè)計(jì)報(bào)告 18 問(wèn)卷提交在用戶(hù)填寫(xiě)完問(wèn)卷并提交之后,向用戶(hù)反饋此問(wèn)卷的統(tǒng)計(jì)信息。頁(yè)面 UI 如圖 所示圖 反饋信息 沈陽(yáng)航空航天大學(xué)課程設(shè)計(jì)報(bào)告 19 4 測(cè)試 出現(xiàn)的錯(cuò)誤1. 用戶(hù)權(quán)限問(wèn)題,導(dǎo)致注冊(cè)用戶(hù)可以編輯其他用戶(hù)創(chuàng)建的題目以及選項(xiàng)。2. 無(wú)法通過(guò) Laravel 的 MVC 框架聯(lián)立不同的數(shù)據(jù)庫(kù)表格。3. 更新數(shù)據(jù)庫(kù)時(shí),導(dǎo)致多個(gè)行被錯(cuò)誤修改。 解決方法1. 在后臺(tái)頁(yè)面首先根據(jù) URL 的用戶(hù)名變量,判斷變量與 Session 用戶(hù)標(biāo)識(shí)是否一致,若一致,轉(zhuǎn)入編輯頁(yè)面;不一致,轉(zhuǎn)到錯(cuò)誤頁(yè)面。2. 外鍵與主鍵設(shè)置錯(cuò)誤,修改即可。3. 錯(cuò)誤使用 MVC 的 find 語(yǔ)句,修改成 where 語(yǔ)句即可。沈陽(yáng)航空航天大學(xué)課程設(shè)計(jì)報(bào)告 20 參考文獻(xiàn)[1]麥克勞克林. PHP amp。 MySQL 實(shí)戰(zhàn)手冊(cè)第二版[M]. 中國(guó)電力出版社, 2022.[2]楊克李強(qiáng), 裴云, 黃向黨. PHP 和 MySQL Web 開(kāi)發(fā)從新手到高手 [M]. 人民郵電出版社, 2022.[3]陳惠貞, 陳俊榮 . PHP amp。 MySQL 程序設(shè)計(jì)實(shí)例講座[M]. 清華大學(xué)出版社, 2022.[4]孔瀟. PHP amp。 MySQL 網(wǎng)站建設(shè)[M]. 國(guó)防工業(yè)出版社, 2022.[5]TimBoronczyk, . PHP amp。 MySQL 范例精解:創(chuàng)建、修改、重用[M]. 清華大學(xué)出版社, 2022.[6]萬(wàn)川梅, 周建儒 . PHP WEB 程序設(shè)計(jì)[M]. 西南交通大學(xué)出版社, 2022.[7]陸凱. PHP 網(wǎng)站開(kāi)發(fā)實(shí)用技術(shù)[M]. 人民郵電出版社, 2022.[8]傳智播客高教產(chǎn)品研發(fā)部. PHP 程序設(shè)計(jì)高級(jí)教程[M]. 中國(guó)鐵道出版社, 2022.沈陽(yáng)航空航天大學(xué)課程設(shè)計(jì)報(bào)告 21 附 錄(關(guān)鍵部分程序清單)1. 路由文件?phpRoute::get(39。/39。, 39。Auth\AuthController@index39。)。// 身份驗(yàn)證Route::group([39。prefix39。 = 39。auth39。, 39。namespace39。 = 39。Auth39。], function(){Route::post(39。loginCheck39。, 39。AuthController@loginCheck39。)。Route::get(39。register39。, 39。AuthController@register39。)。Route::post(39。registerCheck39。, 39。AuthController@registerCheck39。)。Route::post(39。registerEmailCheck39。, 39。AuthController@registerEmailCheck39。)。Route::post(39。registerNameCheck39。, 39。AuthController@registerNameCheck39。)。})。// 問(wèn)卷展示頁(yè)Route::group([39。prefix39。 = 39。questionnaire39。, 39。namespace39。 = 39。Questionnaire39。], function(){Route::get(39。{questionnaireid}39。, 39。QuestionnaireController@index39。)。Route::post(39。{questionnaireid}/result39。, 39。QuestionnaireController@result39。)。})。// 用戶(hù)后臺(tái)Route::group([39。prefix39。 = 39。userconsole39。, 39。namespace39。 = 39。UserConsole39。], function(){// 展示用戶(hù)的問(wèn)卷Route::get(39。{username}39。, 39。UserConsoleController@index39。)。// 增加問(wèn)卷Route::post(39。{username}/addquestionnaire39。, 39。UserConsoleController@addquestionnaire39。)。// 修改問(wèn)卷Route::post(39。{username}/updatequestionnaire39。, 39。UserConsoleController@updatequestionnaire39。)。// 刪除問(wèn)卷Route::post(39。{username}/deletequestionnaire39。, 39。UserConsoleController@deletequestionnaire39。)。// 展示問(wèn)卷的題目Route::get(39。{username}/questionnaire/{questionnaireid}39。, 39。UserConsoleController@questionnaire39。)。// 提交結(jié)果統(tǒng)計(jì)Route::get(39。{username}/questionnaire/{questionnaireid}/result39。, 39。UserConsoleController@submitresult39。)。Route::get(39。{username}/questionnaire/{questionnaireid}/result/{subjectid}39。, 沈陽(yáng)航空航天大學(xué)課程設(shè)計(jì)報(bào)告 22 39。UserConsoleController@answerresult39。)。// 增加題目Route::post(39。{username}/questionnaire/{questionnaireid}/addsubject39。, 39。UserConsoleController@addsubject39。)。// 修改題目Route::post(39。{username}/questionnaire/{questionnaireid}/updatesubject39。, 39。UserConsoleController@updatesubject39。)。// 刪除題目Route::post(39。{username}/questionnaire/{questionnaireid}/deletesubject39。, 39。UserConsoleController@deletesubject39。)。// 展示題目的選項(xiàng)Route::get(39。{username