基于-web在線問卷調查系統(tǒng)設計與實現(xiàn)_第1頁
基于-web在線問卷調查系統(tǒng)設計與實現(xiàn)_第2頁
基于-web在線問卷調查系統(tǒng)設計與實現(xiàn)_第3頁
基于-web在線問卷調查系統(tǒng)設計與實現(xiàn)_第4頁
基于-web在線問卷調查系統(tǒng)設計與實現(xiàn)_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

沈陽航空航天大學課程設計報告課程設計名稱:軟件綜合課程設計課程設計題目:基于web的在線問卷調查系統(tǒng)的設計與實現(xiàn)院(系):計算機學院專 業(yè):計算機科學與技術班級:學號:2姓名:指導教師:說明:結論(優(yōu)秀、良好、中等、及格、不及格)作為相關教環(huán)節(jié)考核必要依據(jù);格式不符合要求;數(shù)據(jù)不實,不予通過。報告和電子數(shù)據(jù)必須作為實驗現(xiàn)象重復的關鍵依據(jù)。指導教師評語:審查結論 簽名;學術誠信聲明本人聲明:所呈交的報告(含電子版及數(shù)據(jù)文件)是我個人在導師指導下獨立進行設計工作及取得的研究結果。盡我所知,除了文中特別或撰寫過的研究結果,也不包含其它教育機構使用過的材料。與我一同工作的同學對本研究所做的任何貢獻均己在報告中做了明確的說明并表示了謝意。報告資料及實驗數(shù)據(jù)若有不實之處,本人愿意接受本教學環(huán)節(jié)“不及格”和“重修或重做”的評分結論并承擔相關一切后果。本人簽名:日期:年月日沈陽航空航天大學課程設計任務書課程設計名稱軟件綜合課程設計專業(yè)計算機科學與技術學生姓名班級學號題目名稱基于web的在線問卷調查系統(tǒng)的設計與實現(xiàn)起止日期2016年12月19日起至2017,年1月13日止課設內容和要求:在校園、企事業(yè)單位里,由于各種調查研究的需要,經(jīng)常會有各種各樣的調查問卷,在傳統(tǒng)模式下,人們不但要花費不少的費用印刷問卷,而且還要消耗大量時間和精力對調查問卷進行發(fā)放和回收,對調查問卷進行統(tǒng)計,并且人工操作調查問卷隨意性較大,容易產(chǎn)生遺漏等問題。本系統(tǒng)建立在信息技術基礎上,構建一個在線的問卷設計、分發(fā)、調查、回收、統(tǒng)計的系統(tǒng),基本解決傳統(tǒng)問卷的上述老大難問題。.實現(xiàn)用戶管理系統(tǒng),注冊用戶可以發(fā)布、編輯問卷;非注冊用戶只可以填寫問卷。.實現(xiàn)問卷發(fā)布管理系統(tǒng),可以對問卷進行增加,修改,刪除,查詢等操作。.實現(xiàn)數(shù)據(jù)可視化,對問卷統(tǒng)計結果通過圖表進行展示。.界面美觀,用戶交互、體驗良好。參考資料:麥克勞克林.PHP&MySQL實戰(zhàn)手冊-第二版[M].中國電力出版社,2014.楊克李強,裴云,黃向黨.PHP和MySQLWeb發(fā)從新手到高手[M].人民郵電出版社,2013.教研室審核意見: 教研室主任簽字:指導教師(簽名) 2016年12月16日學生(簽名)2016年12月19日課程設計總結:本次課程設計的主要任務是在線問卷系統(tǒng)。此實現(xiàn)了問卷創(chuàng)建,編輯,用戶管理,問卷信息統(tǒng)計等功能,使用PHP語言的laravel框架,Mysql數(shù)據(jù)庫。在這次課程設計中,使我懂得了理論與實際相結合是很重要的,只有知識是遠不夠的,只有把所學理論知與實踐相結合起來從中得出識是遠不夠的, 只有把所學理論知與實踐相結合起來從中得出才能真正為社會服務,從而提高自己的實際動手力和獨立思考。才能真正為社會服務,從而提高自己的實際動手力和獨立思考。才能真正為社會服務,從而提高自己的實際動手力和獨立思考。才能真正為社會服務,從而提高自己的實際動手力和獨立思考。系統(tǒng)中存在的一些不足和設計上存在的缺憾,說明自己這些方面還有很多不足之處有待自己進一步學習、在這次課程設計中,我學到很多東西真正達與用合,增強了對數(shù)據(jù)庫方面應用的理解自己今后參與開發(fā)系統(tǒng)積累不少經(jīng)驗,在課程設計過中從建立數(shù)據(jù)開始對庫理念及思想上有更高的認識。從書本上知運用到實際動手操作來,收獲頗多我真正學了計算機教科書上所沒有或者真正用到了課本的知識。這樣,既鞏固舊又掌握了新知識。不僅提高自己的動手能力,更體會到軟件開發(fā)樂趣加深入的了解數(shù)據(jù)庫實際應用,為我們將來踐打下良好的基礎。在課設期間,與同學之間的相互探討對我有很大的啟發(fā)。讓我對有關知識有了更加深入的理解,也增強了我解決困難,克服困難的勇氣和決心。這次課設的感悟對我日后的學習和工作有了很大的促進作用。目錄1需求分析1TOC\o"1-5"\h\z\o"CurrentDocument"系統(tǒng)開發(fā)背景 1..\o"CurrentDocument"系統(tǒng)開發(fā)目的 1..\o"CurrentDocument"系統(tǒng)開發(fā)意義 2..\o"CurrentDocument"2概要設計 3..\o"CurrentDocument"總體設計 3..\o"CurrentDocument"功能設計 3..\o"CurrentDocument"用戶系統(tǒng)設計 3.\o"CurrentDocument"問卷系統(tǒng)設計 3.\o"CurrentDocument"數(shù)據(jù)庫設計 4..\o"CurrentDocument"交互設計 6..\o"CurrentDocument"3詳細設計 7...\o"CurrentDocument"用戶管理系統(tǒng) 7..用戶注冊 7..用戶登錄 9.\o"CurrentDocument"問卷管理系統(tǒng) 9..\o"CurrentDocument"問卷信息管理 9.\o"CurrentDocument"題目信息管理 12\o"CurrentDocument"選項信息管理 1.4問卷結果統(tǒng)計 1.7問卷生成 18問卷提交 19\o"CurrentDocument"4 測試 2Q\o"CurrentDocument"出現(xiàn)的錯誤 20\o"CurrentDocument"解決方法 20\o"CurrentDocument"參考文獻 21.\o"CurrentDocument"附錄(關鍵部分程序清單) 22\o"CurrentDocument".路由文件 22\o"CurrentDocument".用戶管理后臺文件 23\o"CurrentDocument".問卷后臺管理文件 27\o"CurrentDocument".問卷生成文件 41.登錄界面 45.注冊頁面 46.問卷信息管理頁面 47.題目信息管理頁面 50.選項信息管理頁面 53.選擇題統(tǒng)計信息展示 .55.簡答題統(tǒng)計信息展示 58.錯誤頁面 59.CSS文件 .60.JAVASCRIPT文件 761需求分析1.1系統(tǒng)開發(fā)背景隨著互聯(lián)網(wǎng)技術的飛速發(fā)展,互聯(lián)網(wǎng)的全球覆蓋,交互功能等特性給調查方法帶來新的變化,在線調查作為一種基于互聯(lián)網(wǎng)平臺上信息采集及處理方式,越來越受到許多評估研究機構和媒介機構的關注與運用。在校園、企事業(yè)單位里,由于各種調查研究的需要,經(jīng)常會有各種各樣的調查問卷,在傳統(tǒng)模式下,人們不但要花費不少的費用印刷問卷,而且還要消耗大量時間和精力對調查問卷進行發(fā)放和回收,對調查問卷進行統(tǒng)計,并且人工操作調查問卷隨意性較大,容易產(chǎn)生遺漏等問題。本系統(tǒng)建立在信息技術基礎上,構建一個在線的問卷設計、分發(fā)、調查、回收、統(tǒng)計的系統(tǒng),基本解決傳統(tǒng)問卷的上述老大難問題。借助互聯(lián)網(wǎng)這一現(xiàn)代化的信息溝通渠道,在線調查具有低成本、高速度、跨越空間局限、豐富的表現(xiàn)形式、智能化及互動性等優(yōu)點。因為其方便性,許多企業(yè)也在自己的網(wǎng)絡上進行自主調研,使用調查的方式收集自己用戶的觀點等。不僅可以迅速了解社會不同層次、不同行業(yè)的人員需求,客觀的收集需求信息,調整修正產(chǎn)品策略和營銷策略,滿足不同的需求。在線調查問卷系統(tǒng)是一個實用性很強的系統(tǒng)。1.2系統(tǒng)開發(fā)目的在線問卷調差的目的就是能夠提高調查效率,節(jié)約調查經(jīng)費,使調查數(shù)據(jù)的分析更加的方便,應具有以下的功能特點:(1)向用戶提交交互式,個性化的問卷調查服務。(2)智能的后臺管理,可以在線生成調查問卷,可分析統(tǒng)計調查的結果。(3)使用簡單、方便,問卷生成,投放,結果分析簡單易用。(4)具有靈活性,能應用不同的調查環(huán)境。1.3系統(tǒng)開發(fā)意義調查問卷系統(tǒng)的目的是企業(yè)、組織或個人需要調查或掌握一些數(shù)據(jù)、信息或資料時,為這樣的需求者提供適合的網(wǎng)上問卷、回收、統(tǒng)計數(shù)據(jù)活動答案,為需求者掌握資料提供方便。(1)對調查問卷的統(tǒng)計結果進行分析匯總,并使需求者能及時了解最新的調查結果。(2)可以根據(jù)不同的需求靈活設計問卷。(3)支持多種題型,如單選、多選、簡答等。2概要設計總體設計系統(tǒng)的總體設計可以分為以下幾個部分:(1)使用PHP的Laravel框架實現(xiàn)系統(tǒng)的后臺管理系統(tǒng),包括問卷管理和用戶管理。(2)使用Mysql作為數(shù)據(jù)庫系統(tǒng)。(3)使用JavasScriptAjax和CSS構建前端頁面和交互系統(tǒng)。(4)使用HighCharters庫實現(xiàn)數(shù)據(jù)可視化,實現(xiàn)問卷統(tǒng)計信息的圖表展示。功能設計用戶系統(tǒng)設計用戶可分為注冊用戶和一般用戶,注冊用戶需注冊信息后方可使用系統(tǒng),而一般用戶可直接訪問系統(tǒng)。3種用戶權限不同,具體如下:(1)系統(tǒng)管理員:管理系統(tǒng)和所有用戶的問卷。(2)注冊用戶:設計、編輯、發(fā)布問卷,查看問卷統(tǒng)計結果。(3)一般用戶:填寫問卷。2.2.2問卷系統(tǒng)設計注冊用戶可以訪問問卷系統(tǒng),并編輯問卷(增加,刪除,修改,查詢)與問卷對應的題目、選項。(1)問卷屬性:問卷標題,發(fā)布者,發(fā)布時間,有效時間,提交量,題目。(2)題目屬性:題號,題目,題目類型,選項。(3)選項屬性:選項號,選項值。(4)題目類型:單選題、多選題、簡答題。(5)問卷只有在有效時間內才可以參與答題,超出有效時間后不可進行答表表2.1用戶表2.3數(shù)據(jù)庫設計數(shù)據(jù)庫包含5個表,分別是:users(用戶表),questionnaires(問卷表),subjects(題目表),options(選項表),short_answers(簡答表)。所有表的數(shù)據(jù)字典以及E-R圖如下。題目id一問卷id一創(chuàng)建者 一題號 一題目內容—題目類型一選項數(shù)刪除標識+■創(chuàng)建時間一更新時間 一問1卷1創(chuàng)建者問提交量1有刪創(chuàng)更1卷標效時除標建時新時idJ題間識間J間t.t_2i_VL1 問卷*擁有\(zhòng)nI題目1 1擁有 擁有丫 7n n! I簡答 選項用戶id用戶名用戶郵箱用戶密碼用戶組創(chuàng)建時間更新時間回答id1.'更新時間

tu^ /

—■創(chuàng)建時間

刪除標識—1-回答內容題目id ———>^更新時間

創(chuàng)建時間

刪除標識

提交數(shù)

選項內容

選項號

創(chuàng)建者

題目id

選項id圖2.1E-R圖users字段名稱字段類型注釋idint(10)用戶標識,唯一,主鍵,自增namevarchar(255)用戶名,唯一emailvarchar(255)用戶郵箱passwordvarchar(60)用戶密碼groupint(11)用戶組(管理員、注冊用戶)created_attimestamp創(chuàng)建時間updated_attimestamp更新時間表2.2問卷表questionnaires字段名稱字段類型注釋idint(10)[問卷標識,唯一,主鍵,自增user_namevarchar(255)創(chuàng)叱titletext問卷標題countsint(11)問卷提交量active_timeint(11):后效時間delete_tokenint(11)[刪除標識(0:未刪除,1:已刪除)一created_attimestamp創(chuàng)建時間updated_attimestamp更新時間表2.3題目表subjects字段名稱字段類型注釋idint(10):題目標識,唯一,主鍵,自增questionnaire_idint(11)[題目對應的問卷標識(外鍵)user_namevarchar(255)創(chuàng)廿?numberint(11)題號titletext題目內容typevarchar(255)題目類型(單選、多選、簡答)option_countint(11)題目對應的選項數(shù)delete_tokenint(11)刪除標識(0:未刪除,1:已刪除)created_attimestamp創(chuàng)建時間updated_attimestamp更新時間表2.4選項表options字段名稱字段類型注釋idint(10)選項標識,唯一,主鍵,自增subject_idint(11):選項對應的題目標識(外鍵)user_namevarchar(255)創(chuàng)建者numbervarchar(255)選項號titletext選項內容select_countint(11)選項被選擇的次數(shù)delete_tokenint(11):刪除標識(0:未刪除,1:已刪除)created_attimestamp創(chuàng)建時間updated_attimestamp更新時間表2.5簡答表short_answers字段名稱字段類型注釋idint(10)回答標識,唯一,主鍵,自增subject_idint(11)回答對應的題目標識(外鍵)answervarchar(255)回答內容delete_tokenint(11)刪除標識(0:未刪除,1:已刪除)created_attimestamp創(chuàng)建時間updated_attimestamp更新時間2.3交互設計使用JavaScript,Ajax等實現(xiàn)系統(tǒng)交互,實現(xiàn)對話框設計以及 UI動畫交互,使用HighCharters庫實現(xiàn)數(shù)據(jù)可視化系統(tǒng),對問卷統(tǒng)計結果進行圖表展示。圖圖3.1用戶注冊頁面圖圖3.1用戶注冊頁面3詳細設計3.1用戶管理系統(tǒng)3.1.1用戶注冊本模塊用于實現(xiàn)新用戶的信息注冊,在注冊頁面檢查用戶輸入是否合法:(1)郵箱格式是否正確,是否已被注冊。(2)用戶名是否和已注冊用戶重復。(3)兩次密碼輸入是否一致。若用戶輸入合法,允許注冊,并跳轉至用戶界面;否則,給出錯誤提示。此頁面URL為:http://localhost/auth/register(localhost為系統(tǒng)域名,同下)。用戶注冊頁面UI與流程圖如圖3.1和圖3.2所示。開始開始圖圖3.3用戶登錄流程圖開始開始圖圖3.3用戶登錄流程圖結束圖3.2用戶注冊流程圖開始結束3.1.2用戶登錄本模塊用于實現(xiàn)用戶登錄,在用戶輸入正確的用戶名和密碼后,進入系統(tǒng);否則,提示用戶錯誤信息。此頁面URL為:http://localhost,若存在Session,跳轉至問卷展示頁面。用戶登錄流程圖與頁面UI如圖3.3和圖3.4所示。圖3.4用戶登錄界面3.2問卷管理系統(tǒng)3.2.1問卷信息管理本模塊用于實現(xiàn)用戶問卷信息的后臺管理。具體的操作有:問卷信息展示、創(chuàng)建新問卷、更新問卷、刪除問卷等操作。要展示的問卷信息有:(1)問卷ID(系統(tǒng)內唯一,在創(chuàng)建問卷時由系統(tǒng)自動生成)。(2)問卷標題。(3)問卷創(chuàng)建者的用戶名。(4)問卷的創(chuàng)建時間和有效時間(在有效時間內問卷可以答題)。(5)問卷的提交量。(6)查看問卷統(tǒng)計信息的鏈接。(7)查看問卷地址的鏈接。(8)編輯問卷內題目的鏈接。(9)問卷操作按鈕,包括問卷更新按鈕和問卷刪除按鈕。此頁面URL為:http://localhost/userconsole/用戶名},。內為變量,是不同用戶進入自己問卷管理頁面的條件。更新問卷的post地址為:http://localhost/userconsole/陰戶名}/updatequestionnaire。刪除問卷的post地址為:http://localhost/userconsole/{用戶名}/deletequestionnaire。問卷信息管理頁面UI與流程圖如圖3.5和圖3.6所示。譴荏史器ei觸th1日址■柞1fen1I■II■■■■圖3.5問卷信息展示頁面除此之外,還有一個添加問卷按鈕。使用 JavaScript捕獲按鈕點擊消息,生成建立新問卷對話框,用戶填寫問卷標題與有效時間后可以創(chuàng)建新問卷。使用Ajax與服務器交流將問卷信息寫入數(shù)據(jù)庫,做到平滑操作,改善用戶體驗。添加表單的post地址為:http://localhost/userconsole/陰戶名}/addquestionnaire創(chuàng)建新問卷流程圖與頁面UI如圖3.7和圖3.8所示。開始開始圖圖3.7建立新問卷流程圖存在Session且Session用戶名與UR仲用戶名一致 一-1T

1?

聯(lián)立users!與questionnaires,找出questionnaires

表中此用戶創(chuàng)建性elete_toke訥0的問卷信息以問卷id降序的順序排列問卷信息輸出信息 輸出錯誤信息結束圖3.6問卷信息展示流程圖開始T寫入數(shù)據(jù)庫結束圖3.8建立新問卷頁面3.2.2題目信息管理本模塊用于實現(xiàn)題目信息的后臺管理。具體的操作有:題目信息展示、創(chuàng)建新題目、更新題目、刪除題目等操作。要展示的題目信息有:(1)題號,用于展示問卷時的題目排序。(2)題目內容。(3)題型(單選題、多選題、簡答題)。(4)編輯題目對應選項的鏈接(簡答題除外)。(5)題目操作按鈕,包括題目更新按鈕和題目刪除按鈕。止匕頁面URL為:http://localhost/userconsole/{用戶名}/questionnaire/{問卷id}。題目信息管理頁面UI與流程圖如圖3.9和圖3.10所示。大學校用安哈的現(xiàn)捐的分枷調式題目調四曰0:LI。原更多位嗎?蝎號2為目嵋曲志宙安空向比?要嗎?圖3.9題目信息展示頁面開始存在Session,且Session結束圖3.10題目信息展示流程圖除此之外,還有一個添加題目按鈕。使用 JavaScript捕獲按鈕點擊消息,生成建立新題目對話框,用戶通過下拉框選擇題號與題型,輸入題目后可以創(chuàng)建新題目,已有的題號不會出現(xiàn)在下拉框中,防止生成問卷的題號重復。使用Ajax與服務器交流將問卷信息寫入數(shù)據(jù)庫,做到平滑操作,改善用戶體驗。添加新題目頁面UI與流程圖如圖3.11和圖3.12所示。開始填寫信息不為空ITF寫入數(shù)據(jù)庫結束圖3.12建立新題目流程圖3.2.3選項信息管理本模塊用于實現(xiàn)選項信息的后臺管理。具體的操作有:選項信息展小、創(chuàng)建新選項、更新選項、刪除選項等操作。要展示的選項信息有:(1)選項號,用于展示題目時的選項排序。圖圖3.16建立新選項流程圖圖圖3.16建立新選項流程圖圖圖3.14選項信息管理流程圖(2)選項內容。(3)選項操作按鈕,包括選項更新按鈕和選項刪除按鈕。此頁面URL為:http://localhost/userconsole/{用戶名}/subject/{題目id}。選項信息管理頁面UI與流程圖如圖3.13和圖3.14所示?!瞿阒佬@口陽一電―(單金日不卻遁圖3.13選項信息管理頁面開始+存在Session,且Session結束

除此之外,還有一個添加選項按鈕。使用 JavaScript捕獲按鈕點擊消息,生成建立新選項對話框,用戶通過下拉框選擇選項號,輸入選項內容后可以創(chuàng)建新選項,已有的選項號不會出現(xiàn)在下拉框中,防止生成問卷的題號重復。使用Ajax與服務器交流將問卷信息寫入數(shù)據(jù)庫,做到平滑操作,改善用戶體驗。添加新題目頁面UI與流程圖如圖3.15和圖3.16所示圖3.15建立新選項頁面開始填寫信息不為空寫入數(shù)據(jù)庫結束.5問卷生成圖圖3.19問卷頁面.5問卷生成圖圖3.19問卷頁面.4問卷結果統(tǒng)計1.管城建舊向111.管城建舊向11。用E電話嶼「2.池泄謝安凰可無篁要巧?根據(jù)用戶填寫的問卷信息,統(tǒng)計選擇題每一道選項的選項次數(shù)以及簡答題的答案。同一道題目不同選項選擇次數(shù)使用餅狀圖顯示百分比。使用HighCharte庫繪制餅狀圖。頁面URL為:http://localhost/userconsole/{用戶名}/questionnaire/{問卷id}/result。頁面UI如圖3.17與圖3.18所示。大學校園安全的期捐的分析調情

已布辦接殳.你如道校同“0報警電評網(wǎng)‘JA.HW4A店用氏不五由LAB鼻圖3.17問卷統(tǒng)計選擇題展示頁面大學校M安全的現(xiàn)狀的分析回傳已右認提63S高對限號學校衛(wèi)生更全工作?案性即認識?:?有任朝岳陽8,要滿度她認一.德嚏可電視在身之二對于邙項工作.分為TM全方?眼,塊組手;充分氈系更"長閑性和審亙住備?陸岳星盤1沒白哂,以有喇\大方裝學校晶國衛(wèi)生運劭應當作為學梃麗L美主江,T包格式,外圭過場,不為庇付惟國,愿正妃珈工柞那其抓好.為此,學校投人吧更的人力,柄力-朋力.同力是山畸J..迪白出年配追有事免圖3.18問卷統(tǒng)計簡答題展示頁面根據(jù)用戶創(chuàng)建的問卷、題目以及對應的選項信息,生成一個完整的問卷頁面,頁面URL為:http://localhost/questionnaire/{問卷id}。頁面UI如圖3.19所示。A學校E支個的現(xiàn)狀仙外析利立I,你卻嗔粒同”口餐工電法判?/LEW 出不引』.除區(qū)為校㈤女個H眼用要叫T瓦4W &.—!& 匚無關竄豆.群認為保所在的中桓俑帶的較H宏守括*:£看叫?4非帚,■ HTfi 61不希?. 『解我枝我學修.書舍樓的近火后和告生M破的心H?兒壽金了麟 雷送了*強手小不了? cjmfe了桶”H杯了解||DuFTH|.俾黨府學收尚校園支卡的直傳L恬做的就楫丁此稼節(jié)脆 bitc.RBHazrro.a?校H空電同1al除認為蚯產(chǎn)蟲的仃咄我)心交IMS m痔恬謝網(wǎng) C學生IH咨華導m 。.鼻舶ERR E用房■力時 E衛(wèi)生皿G.*RR HKf青安至W.地小由卜到哪代外胞并的&ft?H.IS息及門入目管建 a國閃靠具輛所守fif?理 匚核內,上照他學雁脖B女祖若宜主 口.值司食品電主的餐盅利益;? t.益月海歷出全■理F.M1E自.域認為提高校同空空的相脩口*或7A.94HME.址懇置森 包法■理內3去£回 匚加理Bfl上邦缽刷逋雁 D.HBS@AKffl 日好9學釗即糊用餐茫力.3庭花楨內外也到m慍也卡“他時.越仝n良他即閏修釜醐1甲駢 B □白內的?小■種班黛 。.同手校不承”命.4校網(wǎng)內保鼓M科除制*亦而玄泉晚利成酬?A.Aft EJ超產(chǎn) 匚赭骷 口.其他.你時學校的安宜I.1你什學校知孑.6問卷提交圖圖3.20反饋信息在用戶填寫完問卷并提交之后,向用戶反饋此問卷的統(tǒng)計信息。頁面UI如圖3.20所示4.你遂聲r*我校粒/樓+耐支樓的火火解和遙上通遒附位九?A.定至了#f2A13IV氏宿舍插了噫mrs不了嘛l也用二效李梧了麻宿舍嘮不了噫13i由不了域zAa理5,你覺群學校兩校園安宅的宣傳I蜀儻的黑桿T兒很曬L>^SB.一晚七人配P二口割黑面工作3AAfl。,很UCAJ^iG.他國宣齡“翹.你認力轉產(chǎn)收解|打事餐?人交通第戰(zhàn)口人印氏倬膏酒或季改2&S寄C.T生費律特樽61J.<f(RPD.9!ttS:>lRH3A^VE國■力,故2.A^it(型制ZAi?&制中事&iMfifiH.*他;?全手般LAS^S工飄給中K列送存到段臂?此也人按門AJ5管理”屋H氏役內盤井國所附淬管出我弋部U婚內Art電共學序用電或迎鼻血至3A&&SSD.松內京島安珠的日川嶼?口人用IE.住內消跖安全宜理2A^V『?兵也口人心■4測試由現(xiàn)的錯誤.用戶權限問題,導致注冊用戶可以編輯其他用戶創(chuàng)建的題目以及選項.無法通過Laravel的MVC框架聯(lián)立不同的數(shù)據(jù)庫表格。.更新數(shù)據(jù)庫時,導致多個行被錯誤修改。.2解決方法.在后臺頁面首先根據(jù)URL的用戶名變量,判斷變量與Session用戶標識是否一致,若一致,轉入編輯頁面;不一致,轉到錯誤頁面。.外鍵與主鍵設置錯誤,修改即可。.錯誤使用MVC的find語句,修改成where語句即可。參考文獻[1]麥克勞克林.PHP&MySQL實戰(zhàn)手冊-第二版[M].中國電力出版社,2014.[2]楊克李強,裴云,黃向黨.PH所口MySQWebFF發(fā)從新手到高手[M].人民郵電出版社,2013.[3]陳惠貞,陳俊榮.PHP&MySQ理序設計實例講座[M].清華大學出版社,2010.[4]孔瀟.PHP&MySQL網(wǎng)站建設[M].國防工業(yè)出版社,2001.[5]TimBoronczyk,MartinE.Psinas.PHP&MySQLfi例精解:創(chuàng)建、修改、重用[M].清華大學出版社,2009.[6]萬川梅,周建儒.PHPWEB程序設計[M].西南交通大學出版社,2014.□陸凱.PHP網(wǎng)站開發(fā)實用技術[M].人民郵電出版社,2016.[8]傳智播客高教產(chǎn)品研發(fā)部 .PHP程序設計高級教程[M].中國鐵道出版社,2015.附錄(關鍵部分程序清單).路由文件<?phpRoute::get('/','Auth\AuthController@index');//身份驗證Route::group(['prefix'=>'auth','namespace'=>'Auth'],function。{Route::post('loginCheck','AuthController@loginCheck');Route::get('register','AuthController@register');Route::post('registerCheck','AuthController@registerCheck');Route::post('registerEmailCheck','AuthController@registerEmailCheck');Route::post('registerNameCheck','AuthController@registerNameCheck');});// 問卷展示頁Route::group(['prefix'=>'questionnaire','namespace'=>'Questionnaire'],function(){Route::get('{questionnaireid}','QuestionnaireController@index');Route::post('{questionnaireid}/result','QuestionnaireController@result');});//用戶后臺Route::group(['prefix'=>'userconsole','namespace'=>'UserConsole'],function。{// 展示用戶的問卷Route::get('{username}','UserConsoleController@index');// 增加問卷Route::post('{username}/addquestionnaire','UserConsoleController@addquestionnaire');// 修改問卷Route::post('{username}/updatequestionnaire','UserConsoleController@updatequestionnaire');// 刪除問卷Route::post('{username}/deletequestionnaire','UserConsoleController@deletequestionnaire');// 展示問卷的題目Route::get('{username}/questionnaire/{questionnaireid}','UserConsoleController@questionnaire');// 提交結果統(tǒng)計Route::get('{username}/questionnaire/{questionnaireid}/result','UserConsoleController@submitresult');Route::get('{username}/questionnaire/{questionnaireid}/result/{subjectid}','UserConsoleController@answerresult');// 增加題目Route::post('{username}/questionnaire/{questionnaireid}/addsubject','UserConsoleController@addsubject');//修改題目Route::post('{username}/questionnaire/{questionnaireid}/updatesubject','UserConsoleController@updatesubject');// 刪除題目Route::post('{username}/questionnaire/{questionnaireid}/deletesubject','UserConsoleController@deletesubject');// 展示題目的選項Route::get('{username}/subject/{subjectid}','UserConsoleController@subject');// 增加選項Route::post('{username}/subject/{subjectid}/addoption','UserConsoleController@addoption');// 修改選項Route::post('{username}/subject/{subjectid}/updateoption','UserConsoleController@updateoption');// 刪除選項Route::post('{username}/subject/{subjectid}/deleteoption','UserConsoleController@deleteoption');});.用戶管理后臺文件<?phpnamespaceApp\Http\Controllers\Auth;useApp\Http\Controllers\Controller;useIlluminate\Contracts\Auth\Guard;useIlluminate\Contracts\Auth\Registrar;useIlluminate\Foundation\Auth\AuthenticatesAndRegistersUsers;useApp\User;useSession;classAuthControllerextendsController{/*| |Registration&LoginController| Thiscontrollerhandlestheregistrationofnewusers,aswellastheauthenticationofexistingusers.Bydefault,thiscontrollerusesasimpletraittoaddthesebehaviors.Whydon'tyouexploreit?*/useAuthenticatesAndRegistersUsers;/***Createanewauthenticationcontrollerinstance.*@param\Illuminate\Contracts\Auth\Guard$auth@param\Illuminate\Contracts\Auth\Registrar$registrar@returnvoidpublicfunction__construct(Guard$auth,Registrar$registrar){$this->auth=$auth;$this->registrar=$registrar;$this->middleware('guest',['except'=>'getLogout']);}*//**登陸頁面展示*@returnResponse*/publicfunctionindex(){returnview('auth.login');}/***登錄驗證**@returnResponse*/publicfunctionloginCheck(){//處理表單:if((!empty($_POST['user_nicename']))&&(!empty($_POST['user_pass']))){$user_nicename=htmlspecialchars(stripslashes(trim($_POST['user_nicename'])));$user_pass=htmlspecialchars(stripslashes(trim($_POST['user_pass'])));$user_pass=md5($user_pass);// 查找與用戶名對應行$user_info=User::where('name',$user_nicename)->first();//信息匹配if($user_info!=NULLAND$user_info->password==$user_pass){Session::put('auth_state','1');Session::put('user_name',"$user_nicename");return"1";}//信息不匹配else{return"0";}}else{return"0";}}/**注冊界面*@returnResponse*/publicfunctionregister。{returnview('auth.register');}/***注冊驗證**@returnResponse*/publicfunctionregisterCheck(){//處理表單:if((!empty($_POST['user_nicename']))&&(!empty($_POST['user_pass']))&&(!empty($_POST['user_email']))){$user_nicename=htmlspecialchars(stripslashes(trim($_POST['user_nicename'])));$user_pass=htmlspecialchars(stripslashes(trim($_POST['user_pass'])));$user_pass=md5($user_pass);$user_email=htmlspecialchars(stripslashes(trim($_POST['user_email'])));$created_at=$updated_at=date('Y-m-dH:i:s');$userurl_id=User::insertGetId(array('name'=>$user_nicename,'email'=>$user_email,'password' =>$user_pass,'created_at' =>$created_at,'updated_at' =>$updated_at));Session::put('auth_state','1');Session::put('user_name',"$user_nicename");}}/**注冊驗證-郵箱*@returnResponse/publicfunctionregisterEmailCheck(){//處理表單:if(!empty($_POST['user_email'])){// 查找與用戶名對應行$user_info=User::where('email',$_POST['user_email'])->first();//郵箱信息存在if($user_info!=NULL){return"1";}else{return"0";}}/**注冊驗證--用戶名*@returnResponse/publicfunctionregisterNameCheck(){//處理表單:if(!empty($_POST['user_name'])){// 查找與用戶名對應行$user_info=User::where('name',$_POST['user_name'])->first();// 用戶信息存在if($user_info!=NULL){return"1";}else{return"0";}}}}3.問卷后臺管理文件<?phpnamespaceApp\Http\Controllers\UserConsole;useApp\Http\Requests;useApp\Http\Controllers\Controller;useApp\User;useApp\Questionnaire;useApp\Subject;useApp\Option;useApp\Short_answer;useSession;

useIlluminate\Http\Request;classUserConsoleControllerextendsController{/***用戶控制臺**@returnResponse*/publicfunctionindex($userName){// 登陸用戶正確,顯示用戶控制臺if(Session::has('auth_state')&&Session::get('user_name')==$userName){// 此用戶所創(chuàng)建的所有問卷表$user->hasManyQuestionnaireO->where('delete_token',$user=User::where('name',$userName)->first();$user->hasManyQuestionnaireO->where('delete_token',$QuestionnairesList'0')->orderBy('id','desc')->get();returnview('userconsole.index')->with('QuestionnairesList',$QuestionnairesList);顯示錯誤信息}顯示錯誤信息//else{returnview('errors.authority');}/**/**添加問卷*@returnResponse*/publicfunctionaddquestionnaire($userName){// 登陸用戶正確,顯示用戶控制臺if(Session::has('auth_state')&&Session::get('user_name')==$userName){// 處理添加新選項的表單if(!empty($_POST['NewQuestionnaireTitle']))&&if(!empty($_POST['NewQuestionnaireTitle']))&&(!empty($_POST['NewQuestionnaireTime']))){$NewQuestionnaireTitle=$_POST['NewQuestionnaireTitle'];

$NewQuestionnaireTime=$_POST['NewQuestionnaireTime'];// 插入一行記錄$created_at=$updated_at=date('Y-m-dH:i:s');$questionnaire=Questionnaire::insertGetId(array('user_name'建者array('user_name'建者'title''active_time''delete_token'記'created_at'間'updated_at'間);return"success";}else{return"inputnull";}}// 顯示錯誤信息=>$userName,//問卷創(chuàng)=>$NewQuestionnaireTitle,//問卷標題=>$NewQuestionnaireTime,//后效時間=>0,//刪除標=>$created_at,//創(chuàng)建時=>$updated_at)//更新時returnview('errors.authority');}/*修改問卷**@returnResponse*/publicfunctionupdatequestionnaire($userName){//登陸用戶正確,顯示用戶控制臺if(Session::has('auth_state')&&Session::get('user_name')==$userName){// 處理添加新選項的表單if ( (!empty($_POST['UpdateQuestionnaireTitle'])) &&(!empty($_POST['UpdateQuestionnaireTime']))&&(!empty($_POST['QuestionnaireId'])))$UpdateQuestionnaireTitle=$_POST['UpdateQuestionnaireTitle'];$UpdateQuestionnaireTime=$_POST['UpdateQuestionnaireTime'];$QuestionnaireId =$_POST['QuestionnaireId'];//更新一行記錄$created_at=$updated_at=date('Y-m-dH:i:s');$questionnaire=Questionnaire::where('id',$QuestionnaireId)->update(array('title' =>$UpdateQuestionnaireTitle,// 問卷標題'active_time'=>$UpdateQuestionnaireTime)〃 有效時間);return"success";}else{return"inputnull";}}// 顯示錯誤信息returnview('errors.authority');}/*刪除問卷**@returnResponse*/publicfunctiondeletequestionnaire($userName){// 登陸用戶正確,顯示用戶控制臺if(Session::has('auth_state')&&Session::get('user_name')==$userName){// 處理添加新選項的表單if(!empty($_POST['QuestionnaireId'])){$QuestionnaireId=$_POST['QuestionnaireId'];//更新一行記錄$created_at=$updated_at=date('Y-m-dH:i:s');$questionnaire=Questionnaire::where('id',$QuestionnaireId)->update(array('delete_token'=>1 //刪除標記));return"success";}else{

return"inputnull";}//顯示錯誤信息returnview('errors.authority');}/〃〃〃〃/〃〃/〃〃/〃〃/〃/〃〃/〃/〃〃/〃/〃〃/〃/〃〃/〃/〃〃/〃/〃〃/〃/〃〃/〃/〃〃/〃/〃〃/〃〃/〃//〃〃//**問卷編輯*@returnResponse/publicfunctionquestionnaire($userName,$questionnaireId){//登陸用戶正確,顯示用戶控制臺if(Session::has('auth_state')&&Session::get('user_name')==$userName){//此問卷表所包含的所有題目$Questionnaire=Questionnaire::where('id',$questionnaireId)->first();// 此問卷表創(chuàng)建者與登錄用戶一致if($Questionnaire->user_name==$userName){$SubjectsList=$Questionnaire->hasManySubject()->where('delete_token',0')->orderBy('number')->get();$AllNumber=array();for⑸=1;$i<100;$i++){array_push($AllNumber,$i);}$SubjectNumbers=array();foreach($SubjectsListas$Subject){array_push($SubjectNumbers,$Subject->number);}$otherSubjectNumber=array_diff($AllNumber,$SubjectNumbers);$questionnaireId)//$questionnaireId)//問卷IDreturnview('userconsole.questionnaire')->with("SubjectsList"$SubjectsList)//題目列表->with("QuestionnaireId",->with("QuestionnaireTitle",$Questionnaire->title) // 問卷標題->with("SubjectNumbers",$otherSubjectNumber);// 可用選項}}// 顯示錯誤信息returnview('errors.authority');}/*給指定問卷添加新題目*@returnResponse/publicfunctionaddsubject($userName,$questionnaireId){//登陸用戶正確,顯示用戶控制臺if(Session::has('auth_state')&&Session::get('user_name')==$userName){// 此問卷表所包含的所有題目$Questionnaire=Questionnaire::where('id',$questionnaireId)->first();// 此題目創(chuàng)建者與登錄用戶一致if($Questionnaire->user_name==$userName){// 處理添加新選項的表單if ( (!empty($_POST['NewSubjectNumbe門)) &&(!empty($_POST['NewSubjectType']))&&(!empty($_POST['NewSubjectTitle']))){$NewSubjectNumber=$_POST['NewSubjectNumbe門;$NewSubjectType=$_POST['NewSubjectType'];$NewSubjectTitle=$_POST['NewSubjectTitle'];// 插入一行記錄$created_at=$updated_at=date('Y-m-dH:i:s');$subject_id:=Subject::insertGetId(array('questionnairejd'=>$questionnaireId,//問卷id'user_name'=>$userName,//問卷創(chuàng)建者'number'=>$NewSubjectNumber,//題'title'=>$NewSubjectTitle,//題目

'title'’type=>$NewSubjectType,’type=>$NewSubjectType,//題目類型(單選,多選,簡答)TOC\o"1-5"\h\z'delete_token'=>0, 〃刪除標記'created_at' =>$created_at, // 創(chuàng)建時間'updated_at' =>$updated_at) // 更新時間);return"success";}else{return"inputnull";}}}// 顯示錯誤信息returnview('errors.authority');}/*修改指定題目的值**@returnResponse*/publicfunctionupdatesubject($userName,$questionnaireId){//登陸用戶正確,顯示用戶控制臺if(Session::has('auth_state')&&Session::get('user_name')==$userName){// 此問卷表所包含的所有題目$Questionnaire=Questionnaire::where('id',$questionnaireId)->first();// 此問卷表創(chuàng)建者與登錄用戶一致if($Questionnaire->user_name==$userName){// 處理添加新題目的表單if ( (!empty($_POST['UpdateSubjectNumbe門)) &&(!empty($_POST['UpdateSubjectTitle']))&&(!empty($_POST['SubjectId']))){$SubjectId =$_POST['SubjectId'];$UpdateSubjectNumber=$_POST['UpdateSubjectNumbe門;$UpdateSubjectTitle=$_POST['UpdateSubjectTitle'];

// 更新一行記錄$subject_id=Subject::where('id',$SubjectId)->update(array(//題號//題號題目));return"success";}else{return"inputnull";}}}// 顯示錯誤信息returnview('errors.authority');}/*刪除指定題目的值**@returnResponse*/publicfunctiondeletesubject($userName,$subjectId){//登陸用戶正確,顯示用戶控制臺if(Session::has('auth_state')&&Session::get('user_name')==$userName){// 此問卷表所包含的所有題目$Questionnaire=Questionnaire::where('id',$subjectId)->first();// 此問卷表創(chuàng)建者與登錄用戶一致if($Questionnaire->user_name==$userName){//處理刪除題目的表單if((!empty($_POST['SubjectId']))){$SubjectId=$_POST['SubjectId'];// 更新一行記錄,將刪除標記置 1$subject_id=Subject::where('id',$SubjectId)->update(array(

'delete_token'=>1 // 刪除標記);return"success";}else{return"inputnull";}}}// 顯示錯誤信息returnview('errors.authority');}/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////**題目編輯*@returnResponse/publicfunctionsubject($userName,$subjectId){//登陸用戶正確,顯示用戶控制臺if(Session::has('auth_state')&&Session::get('user_name')==$userName){// 此題目所包含的所有選項$Subject=Subject::where('id',$subjectId)->first();// 此題目創(chuàng)建者與登錄用戶一致$Subject->hasManyOption()->where('deletetoken',if($Subject->user_name==$userName){$Subject->hasManyOption()->where('deletetoken',$OptionsList'0')->orderBy('number')->get();$Alphabetarray("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");$OptionNumber=array();foreach($OptionsListas$Option){array_push($OptionNumber,$Option->number);}$otherOptionNumber=array_diff($Alphabet,$OptionNumber);returnview('userconsole.subject')->with("OptionsList",$OptionsList)// 選項列表->with("QuestionnaireId",$Subject->questionnaire_id)//問卷ID->with("SubjectId",$subjectId) //題目ID->with("SubjectIdType",$Subject->type) // 題目類型->with("SubjectIdTitle",$Subject->title) // 題目內容->with("SubjectIdNumber",$Subject->number) //題號->with("OptionsCount",$Subject->option_count)// 某選項已選次數(shù)->with("OptionNumbers",$otherOptionNumber); //可用選項}}// 顯示錯誤信息returnview('errors.authority');}/*給指定題目添加新選項**@returnResponse*/publicfunctionaddoption($userName,$subjectId){//登陸用戶正確,顯示用戶控制臺if(Session::has('auth_state')&&Session::get('user_name')==$userName){// 此題目所包含的所有選項$Subject=Subject::where('id',$subjectId)->first();// 此題目創(chuàng)建者與登錄用戶一致if($Subject->user_name==$userName){// 處理添加新選項的表單if ( (!empty($_POST['NewOptionNumbe門)) &&(empty缸POST['NewOptionValue'])))$NewOptionNumber=$_POST['NewOptionNumbe門;$NewOptionValue=$_POST['NewOptionValue'];//插入一行記錄$created_at=$updated_at=date('Y-m-dH:i:s');$option_id=Option::insertGetId(array('subjectjd'=>$subjectId, //題目id'user_name'=>$userName, //問卷創(chuàng)建者'number' => $NewOptionNumber,//選項號(A、B、C、D...)'title' =>$NewOptionValue, //選項內容'select_count' => 0, 〃選擇數(shù)目'delete_token' => 0, 〃刪除標記'created_at' =>$created_at, // 創(chuàng)建時間'updated_at' =>$updated_at) // 更新時間);return"success";}else{return"inputnull";}}}// 顯示錯誤信息returnview('errors.authority');}/*修改指定項目的值**@returnResponse*/publicfunctionupdateoption($userName,$subjectId){//登陸用戶正確,顯示用戶控制臺if(Session::has('auth_state')&&Session::get('user_name')==$userName)// 此題目所包含的所有選項$Subject=Subject::where('id',$subjectId)->first();// 此題目創(chuàng)建者與登錄用戶一致if($Subject->user_name==$userName){// 處理添加新選項的表單if ( (!empty($_POST['OptionId'])) &&(!empty($_POST['UpdateOptionValue']))){$OptionId =$_POST['OptionId'];$UpdateOptionValue =$_POST['UpdateOptionValue'];//更新一行記錄$option_id=Option::where('id',$OptionId)->update(array('title'=>$UpdateOptionValue// 選項內容));return"success";}else{return"inputnull";}}}// 顯示錯誤信息returnview('errors.authority');}/*刪除指定項目的值**@returnResponse*/publicfunctiondeleteoption($userName,$subjectId){//登陸用戶正確,顯示用戶控制臺if(Session::has('auth_state')&&Session::get('user_name')==$userName){// 此題目所包含的所有選項$Subject=Subject::where('id',$subjectId)->first();// 此題目創(chuàng)建者與登錄用戶一致if($Subject->user_name==$userName){//處理刪除選項的表單if((!empty($_POST['OptionId']))){$OptionId=$_POST['OptionId'];// 更新一行記錄,將刪除標記置1$option_id=Option::where('id',$OptionId)->update(array('delete_token'=>1 //刪除標記));return"success";}else{return"inputnull";}}}// 顯示錯誤信息returnview('errors.authority');}〃〃/〃/〃〃〃/〃〃/〃/〃〃/〃〃/〃/〃〃/〃/〃〃/〃/〃〃/〃/〃〃/〃/〃〃/〃/〃〃/〃/〃〃/〃〃/〃/〃〃/〃〃〃//*提交結果統(tǒng)計---選擇**@returnResponse*/publicfunctionsubmitresult($userName,$questionnaireId){//登陸用戶正確,顯示用戶控制臺if(Session::has('auth_state')&&Session::get('user_name')==$userName){// 此問卷表所包含的所有題目$Question

溫馨提示

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

最新文檔

評論

0/150

提交評論