基于-web在線問(wèn)卷調(diào)查系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
基于-web在線問(wèn)卷調(diào)查系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
基于-web在線問(wèn)卷調(diào)查系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
基于-web在線問(wèn)卷調(diào)查系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
基于-web在線問(wèn)卷調(diào)查系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩95頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、.沈陽(yáng)航空航天大學(xué)課課 程程 設(shè)設(shè) 計(jì)計(jì) 報(bào)報(bào) 告告課程設(shè)計(jì)名稱(chēng):軟件綜合課程設(shè)計(jì)軟件綜合課程設(shè)計(jì)課程設(shè)計(jì)題目:基于基于 webweb 的在線問(wèn)卷調(diào)查的在線問(wèn)卷調(diào)查系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)院(系):計(jì)算機(jī)學(xué)院專(zhuān) 業(yè):計(jì)算機(jī)科學(xué)與技術(shù) 班 級(jí):學(xué) 號(hào):2姓 名:指導(dǎo)教師:說(shuō)明:結(jié)論(優(yōu)秀、良好、中等、及格、不及格)作為相關(guān)教環(huán)節(jié)考核必要依說(shuō)明:結(jié)論(優(yōu)秀、良好、中等、及格、不及格)作為相關(guān)教環(huán)節(jié)考核必要依據(jù);格式不符合要求;數(shù)據(jù)不實(shí)據(jù);格式不符合要求;數(shù)據(jù)不實(shí),不予通過(guò)。報(bào)告和電子數(shù)據(jù)必須作為實(shí)驗(yàn)現(xiàn)象重復(fù)不予通過(guò)。報(bào)告和電子數(shù)據(jù)必須作為實(shí)驗(yàn)現(xiàn)象重復(fù)的關(guān)鍵依據(jù)。的關(guān)鍵依據(jù)。.學(xué)術(shù)誠(chéng)信聲明

2、本人聲明本人聲明:所呈交的報(bào)告(含電子版及數(shù)據(jù)文件)是我個(gè)人在導(dǎo)師指導(dǎo)下獨(dú)立進(jìn)行設(shè)計(jì)工作及取得的研究結(jié)果。盡我所知,除了文中特別或撰寫(xiě)過(guò)的研究結(jié)果,也不包含其它教育機(jī)構(gòu)使用過(guò)的材料。與我一同工作的同學(xué)對(duì)本研究所做的任何貢獻(xiàn)均己在報(bào)告中做了明確的說(shuō)明并表示了謝意。報(bào)告資料及實(shí)驗(yàn)數(shù)據(jù)若有不實(shí)之處,本人愿意接受本教學(xué)環(huán)節(jié)“不及格”和“重修或重做”的評(píng)分結(jié)論并承擔(dān)相關(guān)一切后果。 本人簽名: 日期: 年 月 日.沈陽(yáng)航空航天大學(xué)沈陽(yáng)航空航天大學(xué)課課程程設(shè)設(shè)計(jì)計(jì)任任務(wù)務(wù)書(shū)書(shū)課程設(shè)計(jì)名稱(chēng)軟軟件件綜綜合合課課程程設(shè)設(shè)計(jì)計(jì)專(zhuān)業(yè)計(jì)計(jì)算算機(jī)機(jī)科科學(xué)學(xué)與與技技術(shù)術(shù)學(xué)生姓名班級(jí)學(xué)號(hào)題目名稱(chēng)基于 web 的在線問(wèn)卷調(diào)查系

3、統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)起止日期2016年 12月 19日起至2017年1月 13日止課設(shè)內(nèi)容和要求:在校園、企事業(yè)單位里,由于各種調(diào)查研究的需要,經(jīng)常會(huì)有各種各樣的調(diào)查問(wèn)卷,在傳統(tǒng)模式下,人們不但要花費(fèi)不少的費(fèi)用印刷問(wèn)卷,而且還要消耗大量時(shí)間和精力對(duì)調(diào)查問(wèn)卷進(jìn)行發(fā)放和回收,對(duì)調(diào)查問(wèn)卷進(jìn)行統(tǒng)計(jì),并且人工操作調(diào)查問(wèn)卷隨意性較大,容易產(chǎn)生遺漏等問(wèn)題。本系統(tǒng)建立在信息技術(shù)基礎(chǔ)上,構(gòu)建一個(gè)在線的問(wèn)卷設(shè)計(jì)、分發(fā)、調(diào)查、回收、統(tǒng)計(jì)的系統(tǒng),基本解決傳統(tǒng)問(wèn)卷的上述老大難問(wèn)題。1. 實(shí)現(xiàn)用戶管理系統(tǒng),注冊(cè)用戶可以發(fā)布、編輯問(wèn)卷;非注冊(cè)用戶只可以填寫(xiě)問(wèn)卷。2. 實(shí)現(xiàn)問(wèn)卷發(fā)布管理系統(tǒng),可以對(duì)問(wèn)卷進(jìn)行增加,修改,刪除,查詢等操

4、作。3. 實(shí)現(xiàn)數(shù)據(jù)可視化,對(duì)問(wèn)卷統(tǒng)計(jì)結(jié)果通過(guò)圖表進(jìn)行展示。4. 界面美觀,用戶交互、體驗(yàn)良好。參考資料:麥克勞克林. PHP & MySQL 實(shí)戰(zhàn)手冊(cè)-第二版M. 中國(guó)電力出版社, 2014.楊克李強(qiáng), 裴云, 黃向黨. PHP 和 MySQL Web 開(kāi)發(fā)從新手到高手M. 人民郵電出版社, 2013.教教研研室室審審核核意意見(jiàn)見(jiàn): 教教研研室室主主任任簽簽字字:指導(dǎo)教師(簽名)指導(dǎo)教師(簽名)2016年12月16日.學(xué)學(xué) 生(簽名)生(簽名)2016年12月19日.課程設(shè)計(jì)總結(jié):課程設(shè)計(jì)總結(jié):本次課程設(shè)計(jì)的主要任務(wù)是在線問(wèn)卷系統(tǒng)。此實(shí)現(xiàn)了問(wèn)卷創(chuàng)建,編輯,用戶管理,問(wèn)卷信息統(tǒng)計(jì)等功能,

5、使用 PHP 語(yǔ)言的 laravel 框架,Mysql 數(shù)據(jù)庫(kù)。在這次課程設(shè)計(jì)中,使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有知識(shí)是遠(yuǎn)不夠的,只有把所學(xué)理論知與實(shí)踐相結(jié)合起來(lái)從中得出識(shí)是遠(yuǎn)不夠的, 只有把所學(xué)理論知與實(shí)踐相結(jié)合起來(lái)從中得出才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手力和獨(dú)立思考。 才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手力和獨(dú)立思考。才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手力和獨(dú)立思考。才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手力和獨(dú)立思考。系統(tǒng)中存在的一些不足和設(shè)計(jì)上存在的缺憾,說(shuō)明自己這些方面還有很多不足之處有待自己進(jìn)一步學(xué)習(xí)、提高。在這次課程設(shè)計(jì)中,我學(xué)到很多東西真正達(dá)與

6、用合,增強(qiáng)了對(duì)數(shù)據(jù)庫(kù)方面應(yīng)用的理解自己今后參與開(kāi)發(fā)系統(tǒng)積累不少經(jīng)驗(yàn),在課程設(shè)計(jì)過(guò)中從建立數(shù)據(jù)開(kāi)始對(duì)庫(kù)理念及思想上有更高的認(rèn)識(shí)。從書(shū)本上知運(yùn)用到實(shí)際動(dòng)手操作來(lái),收獲頗多我真正學(xué)了計(jì)算機(jī)教科書(shū)上所沒(méi)有或者真正用到了課本的知識(shí)。這樣,既鞏固舊又掌握了新知識(shí)。不僅提高自己的動(dòng)手能力,更體會(huì)到軟件開(kāi)發(fā)樂(lè)趣加深入的了解數(shù)據(jù)庫(kù)實(shí)際應(yīng)用,為我們將來(lái)踐打下良好的基礎(chǔ)。在課設(shè)期間,與同學(xué)之間的相互探討對(duì)我有很大的啟發(fā)。讓我對(duì)有關(guān)知識(shí)有了更加深入的理解,也增強(qiáng)了我解決困難,克服困難的勇氣和決心。這次課設(shè)的感悟?qū)ξ胰蘸蟮膶W(xué)習(xí)和工作有了很大的促進(jìn)作用。.目目 錄錄1 需求分析 11.1 系統(tǒng)開(kāi)發(fā)背景.11.2 系統(tǒng)開(kāi)發(fā)

7、目的.11.3 系統(tǒng)開(kāi)發(fā)意義.22 概要設(shè)計(jì)概要設(shè)計(jì).32.1 總體設(shè)計(jì).32.2 功能設(shè)計(jì).32.2.1 用戶系統(tǒng)設(shè)計(jì).32.2.2 問(wèn)卷系統(tǒng)設(shè)計(jì).32.3 數(shù)據(jù)庫(kù)設(shè)計(jì).42.3 交互設(shè)計(jì).63 詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì).73.1 用戶管理系統(tǒng).73.1.1 用戶注冊(cè).73.1.2 用戶登錄.93.2 問(wèn)卷管理系統(tǒng).93.2.1 問(wèn)卷信息管理.93.2.2 題目信息管理.123.2.3 選項(xiàng)信息管理.143.2.4 問(wèn)卷結(jié)果統(tǒng)計(jì).173.2.5 問(wèn)卷生成.183.2.6 問(wèn)卷提交.194 測(cè)試測(cè)試.204.1 出現(xiàn)的錯(cuò)誤.204.2 解決方法.20參考文獻(xiàn)參考文獻(xiàn).21.附附 錄(關(guān)鍵部分程序清單)

8、錄(關(guān)鍵部分程序清單).221. 路由文件.222. 用戶管理后臺(tái)文件.233. 問(wèn)卷后臺(tái)管理文件.274. 問(wèn)卷生成文件.415. 登錄界面.456. 注冊(cè)頁(yè)面.467. 問(wèn)卷信息管理頁(yè)面.478. 題目信息管理頁(yè)面.509. 選項(xiàng)信息管理頁(yè)面.5310. 選擇題統(tǒng)計(jì)信息展示.5511. 簡(jiǎn)答題統(tǒng)計(jì)信息展示.5812. 錯(cuò)誤頁(yè)面.5913. CSS 文件.6014. JAVASCRIPT文件.76.1 需求分析1.1 系統(tǒng)開(kāi)發(fā)背景系統(tǒng)開(kāi)發(fā)背景隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,互聯(lián)網(wǎng)的全球覆蓋,交互功能等特性給調(diào)查方法帶來(lái)新的變化,在線調(diào)查作為一種基于互聯(lián)網(wǎng)平臺(tái)上信息采集及處理方式,越來(lái)越受到許多評(píng)估

9、研究機(jī)構(gòu)和媒介機(jī)構(gòu)的關(guān)注與運(yùn)用。在校園、企事業(yè)單位里,由于各種調(diào)查研究的需要,經(jīng)常會(huì)有各種各樣的調(diào)查問(wèn)卷,在傳統(tǒng)模式下,人們不但要花費(fèi)不少的費(fèi)用印刷問(wèn)卷,而且還要消耗大量時(shí)間和精力對(duì)調(diào)查問(wèn)卷進(jìn)行發(fā)放和回收,對(duì)調(diào)查問(wèn)卷進(jìn)行統(tǒng)計(jì),并且人工操作調(diào)查問(wèn)卷隨意性較大,容易產(chǎn)生遺漏等問(wèn)題。本系統(tǒng)建立在信息技術(shù)基礎(chǔ)上,構(gòu)建一個(gè)在線的問(wèn)卷設(shè)計(jì)、分發(fā)、調(diào)查、回收、統(tǒng)計(jì)的系統(tǒng),基本解決傳統(tǒng)問(wèn)卷的上述老大難問(wèn)題。借助互聯(lián)網(wǎng)這一現(xiàn)代化的信息溝通渠道,在線調(diào)查具有低成本、高速度、跨越空間局限、豐富的表現(xiàn)形式、智能化及互動(dòng)性等優(yōu)點(diǎn)。因?yàn)槠浞奖阈?,許多企業(yè)也在自己的網(wǎng)絡(luò)上進(jìn)行自主調(diào)研,使用調(diào)查的方式收集自己用戶的觀點(diǎn)等。不

10、僅可以迅速了解社會(huì)不同層次、不同行業(yè)的人員需求,客觀的收集需求信息,調(diào)整修正產(chǎn)品策略和營(yíng)銷(xiāo)策略,滿足不同的需求。在線調(diào)查問(wèn)卷系統(tǒng)是一個(gè)實(shí)用性很強(qiáng)的系統(tǒng)。1.2 系統(tǒng)開(kāi)發(fā)目的系統(tǒng)開(kāi)發(fā)目的在線問(wèn)卷調(diào)差的目的就是能夠提高調(diào)查效率,節(jié)約調(diào)查經(jīng)費(fèi),使調(diào)查數(shù)據(jù)的分析更加的方便,應(yīng)具有以下的功能特點(diǎn):(1)向用戶提交交互式,個(gè)性化的問(wèn)卷調(diào)查服務(wù)。(2)智能的后臺(tái)管理,可以在線生成調(diào)查問(wèn)卷,可分析統(tǒng)計(jì)調(diào)查的結(jié)果。(3)使用簡(jiǎn)單、方便,問(wèn)卷生成,投放,結(jié)果分析簡(jiǎn)單易用。(4)具有靈活性,能應(yīng)用不同的調(diào)查環(huán)境。.1.3 系統(tǒng)開(kāi)發(fā)意義系統(tǒng)開(kāi)發(fā)意義調(diào)查問(wèn)卷系統(tǒng)的目的是企業(yè)、組織或個(gè)人需要調(diào)查或掌握一些數(shù)據(jù)、信息或資料

11、時(shí),為這樣的需求者提供適合的網(wǎng)上問(wèn)卷、回收、統(tǒng)計(jì)數(shù)據(jù)活動(dòng)答案,為需求者掌握資料提供方便。(1)對(duì)調(diào)查問(wèn)卷的統(tǒng)計(jì)結(jié)果進(jìn)行分析匯總,并使需求者能及時(shí)了解最新的調(diào)查結(jié)果。(2)可以根據(jù)不同的需求靈活設(shè)計(jì)問(wèn)卷。(3)支持多種題型,如單選、多選、簡(jiǎn)答等。.2 概要設(shè)計(jì)2.1 總體設(shè)計(jì)總體設(shè)計(jì)系統(tǒng)的總體設(shè)計(jì)可以分為以下幾個(gè)部分:(1)使用 PHP 的 Laravel 框架實(shí)現(xiàn)系統(tǒng)的后臺(tái)管理系統(tǒng),包括問(wèn)卷管理和用戶管理。(2)使用 Mysql 作為數(shù)據(jù)庫(kù)系統(tǒng)。(3)使用 JavasScript,Ajax 和 CSS 構(gòu)建前端頁(yè)面和交互系統(tǒng)。(4)使用 HighCharters 庫(kù)實(shí)現(xiàn)數(shù)據(jù)可視化,實(shí)現(xiàn)問(wèn)卷統(tǒng)計(jì)

12、信息的圖表展示。2.2 功能設(shè)計(jì)功能設(shè)計(jì)2.2.1 用戶系統(tǒng)設(shè)計(jì)用戶系統(tǒng)設(shè)計(jì)用戶可分為注冊(cè)用戶和一般用戶,注冊(cè)用戶需注冊(cè)信息后方可使用系統(tǒng),而一般用戶可直接訪問(wèn)系統(tǒng)。3 種用戶權(quán)限不同,具體如下:(1)系統(tǒng)管理員:管理系統(tǒng)和所有用戶的問(wèn)卷。(2)注冊(cè)用戶:設(shè)計(jì)、編輯、發(fā)布問(wèn)卷,查看問(wèn)卷統(tǒng)計(jì)結(jié)果。(3)一般用戶:填寫(xiě)問(wèn)卷。2.2.2 問(wèn)卷系統(tǒng)設(shè)計(jì)問(wèn)卷系統(tǒng)設(shè)計(jì)注冊(cè)用戶可以訪問(wèn)問(wèn)卷系統(tǒng),并編輯問(wèn)卷(增加,刪除,修改,查詢)與問(wèn)卷對(duì)應(yīng)的題目、選項(xiàng)。(1)問(wèn)卷屬性:?jiǎn)柧順?biāo)題,發(fā)布者,發(fā)布時(shí)間,有效時(shí)間,提交量,題目。(2)題目屬性:題號(hào),題目,題目類(lèi)型,選項(xiàng)。(3)選項(xiàng)屬性:選項(xiàng)號(hào),選項(xiàng)值。(4)題目類(lèi)

13、型:?jiǎn)芜x題、多選題、簡(jiǎn)答題。(5)問(wèn)卷只有在有效時(shí)間內(nèi)才可以參與答題,超出有效時(shí)間后不可進(jìn)行答.題。2.3 數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)包含 5 個(gè)表,分別是:users(用戶表),questionnaires(問(wèn)卷表),subjects(題目表),options(選項(xiàng)表),short_answers(簡(jiǎn)答表)。所有表的數(shù)據(jù)字典以及 E-R 圖如下。問(wèn)卷問(wèn)卷題目題目選項(xiàng)選項(xiàng)簡(jiǎn)答簡(jiǎn)答擁有擁有1n擁有擁有擁有擁有11nn創(chuàng)建創(chuàng)建n用戶用戶1用戶id用戶id用戶名用戶名用戶郵箱用戶郵箱用戶密碼用戶密碼創(chuàng)建時(shí)間創(chuàng)建時(shí)間更新時(shí)間更新時(shí)間創(chuàng)建者創(chuàng)建者問(wèn)卷id問(wèn)卷id問(wèn)卷標(biāo)題問(wèn)卷標(biāo)題更新時(shí)間更新時(shí)間提交量提交

14、量有效時(shí)間有效時(shí)間刪除標(biāo)識(shí)刪除標(biāo)識(shí)創(chuàng)建時(shí)間創(chuàng)建時(shí)間題目id題目id問(wèn)卷id問(wèn)卷id創(chuàng)建者創(chuàng)建者題號(hào)題號(hào)題目?jī)?nèi)容題目?jī)?nèi)容題目類(lèi)型題目類(lèi)型選項(xiàng)數(shù)選項(xiàng)數(shù)刪除標(biāo)識(shí)刪除標(biāo)識(shí)創(chuàng)建時(shí)間創(chuàng)建時(shí)間更新時(shí)間更新時(shí)間題目id題目id選項(xiàng)id選項(xiàng)id創(chuàng)建者創(chuàng)建者創(chuàng)建時(shí)間創(chuàng)建時(shí)間選項(xiàng)號(hào)選項(xiàng)號(hào)選項(xiàng)內(nèi)容選項(xiàng)內(nèi)容提交數(shù)提交數(shù)刪除標(biāo)識(shí)刪除標(biāo)識(shí)更新時(shí)間更新時(shí)間創(chuàng)建時(shí)間創(chuàng)建時(shí)間回答id回答id題目id題目id回答內(nèi)容回答內(nèi)容刪除標(biāo)識(shí)刪除標(biāo)識(shí)更新時(shí)間更新時(shí)間用戶組用戶組圖圖 2.1 E-R 圖圖.表表 2.12.1 用戶表用戶表users字段名稱(chēng)字段名稱(chēng)字段類(lèi)型字段類(lèi)型注釋注釋idint(10)用戶標(biāo)識(shí),唯一,主鍵,自增nameva

15、rchar(255)用戶名,唯一emailvarchar(255)用戶郵箱passwordvarchar(60)用戶密碼groupint(11)用戶組(管理員、注冊(cè)用戶)created_attimestamp創(chuàng)建時(shí)間updated_attimestamp更新時(shí)間表表 2.22.2 問(wèn)卷表問(wèn)卷表questionnaires字段名稱(chēng)字段名稱(chēng)字段類(lèi)型字段類(lèi)型注釋注釋idint(10)問(wèn)卷標(biāo)識(shí),唯一,主鍵,自增user_namevarchar(255)創(chuàng)建者titletext問(wèn)卷標(biāo)題countsint(11)問(wèn)卷提交量active_timeint(11)有效時(shí)間delete_tokenint(11)刪

16、除標(biāo)識(shí)(0:未刪除,1:已刪除)created_attimestamp創(chuàng)建時(shí)間updated_attimestamp更新時(shí)間表表 2.32.3 題目表題目表subjects字段名稱(chēng)字段名稱(chēng)字段類(lèi)型字段類(lèi)型注釋注釋idint(10)題目標(biāo)識(shí),唯一,主鍵,自增questionnaire_idint(11)題目對(duì)應(yīng)的問(wèn)卷標(biāo)識(shí)(外鍵)user_namevarchar(255)創(chuàng)建者numberint(11)題號(hào)titletext題目?jī)?nèi)容typevarchar(255)題目類(lèi)型(單選、多選、簡(jiǎn)答)option_countint(11)題目對(duì)應(yīng)的選項(xiàng)數(shù)delete_tokenint(11)刪除標(biāo)識(shí)(0:未

17、刪除,1:已刪除)created_attimestamp創(chuàng)建時(shí)間.updated_attimestamp更新時(shí)間表表 2.42.4 選項(xiàng)表選項(xiàng)表options字段名稱(chēng)字段名稱(chēng)字段類(lèi)型字段類(lèi)型注釋注釋idint(10)選項(xiàng)標(biāo)識(shí),唯一,主鍵,自增subject_idint(11)選項(xiàng)對(duì)應(yīng)的題目標(biāo)識(shí)(外鍵)user_namevarchar(255)創(chuàng)建者numbervarchar(255)選項(xiàng)號(hào)titletext選項(xiàng)內(nèi)容select_countint(11)選項(xiàng)被選擇的次數(shù)delete_tokenint(11)刪除標(biāo)識(shí)(0:未刪除,1:已刪除)created_attimestamp創(chuàng)建時(shí)間updat

18、ed_attimestamp更新時(shí)間表表 2.52.5 簡(jiǎn)答表簡(jiǎn)答表short_answers字段名稱(chēng)字段名稱(chēng)字段類(lèi)型字段類(lèi)型注釋注釋idint(10)回答標(biāo)識(shí),唯一,主鍵,自增subject_idint(11)回答對(duì)應(yīng)的題目標(biāo)識(shí)(外鍵)answervarchar(255)回答內(nèi)容delete_tokenint(11)刪除標(biāo)識(shí)(0:未刪除,1:已刪除)created_attimestamp創(chuàng)建時(shí)間updated_attimestamp更新時(shí)間2.3 交互設(shè)計(jì)交互設(shè)計(jì)使用 JavaScript,Ajax 等實(shí)現(xiàn)系統(tǒng)交互,實(shí)現(xiàn)對(duì)話框設(shè)計(jì)以及 UI 動(dòng)畫(huà)交互,使用 HighCharters 庫(kù)實(shí)現(xiàn)數(shù)

19、據(jù)可視化系統(tǒng),對(duì)問(wèn)卷統(tǒng)計(jì)結(jié)果進(jìn)行圖表展示。.3 詳細(xì)設(shè)計(jì)3.1 用戶管理系統(tǒng)用戶管理系統(tǒng)3.1.1 用戶注冊(cè)用戶注冊(cè)本模塊用于實(shí)現(xiàn)新用戶的信息注冊(cè),在注冊(cè)頁(yè)面檢查用戶輸入是否合法:(1)郵箱格式是否正確,是否已被注冊(cè)。(2)用戶名是否和已注冊(cè)用戶重復(fù)。(3)兩次密碼輸入是否一致。若用戶輸入合法,允許注冊(cè),并跳轉(zhuǎn)至用戶界面;否則,給出錯(cuò)誤提示。此頁(yè)面 URL 為:http:/localhost/auth/register(localhost 為系統(tǒng)域名,同下)。用戶注冊(cè)頁(yè)面 UI 與流程圖如圖 3.1 和圖 3.2 所示。圖圖 3.1 用戶注冊(cè)頁(yè)面用戶注冊(cè)頁(yè)面.開(kāi)始開(kāi)始郵箱地址合法郵箱地址合法用

20、戶名不重復(fù)用戶名不重復(fù)兩次密碼輸入一致兩次密碼輸入一致TT出錯(cuò)出錯(cuò)提交表單提交表單寫(xiě)入數(shù)據(jù)庫(kù),user表,寫(xiě)Session寫(xiě)入數(shù)據(jù)庫(kù),user表,寫(xiě)Session注冊(cè)頁(yè)面提交的表單信息不為空注冊(cè)頁(yè)面提交的表單信息不為空TFF結(jié)束結(jié)束圖圖 3.2 用戶注冊(cè)流程圖用戶注冊(cè)流程圖開(kāi)始開(kāi)始輸入正確輸入正確出錯(cuò)出錯(cuò)輸入用戶名和密碼輸入用戶名和密碼結(jié)束結(jié)束寫(xiě)Session,進(jìn)入系統(tǒng)寫(xiě)Session,進(jìn)入系統(tǒng)TF進(jìn)入問(wèn)卷展示頁(yè)面進(jìn)入問(wèn)卷展示頁(yè)面存在Session存在SessionFT圖圖 3.3 用戶登錄流程圖用戶登錄流程圖.3.1.2 用戶登錄用戶登錄本模塊用于實(shí)現(xiàn)用戶登錄,在用戶輸入正確的用戶名和密碼后

21、,進(jìn)入系統(tǒng);否則,提示用戶錯(cuò)誤信息。此頁(yè)面 URL 為:http:/localhost,若存在 Session,跳轉(zhuǎn)至問(wèn)卷展示頁(yè)面。用戶登錄流程圖與頁(yè)面 UI 如圖 3.3 和圖 3.4 所示。圖圖 3.4 用戶登錄界面用戶登錄界面3.2 問(wèn)卷管理系統(tǒng)問(wèn)卷管理系統(tǒng)3.2.1 問(wèn)卷信息管理問(wèn)卷信息管理本模塊用于實(shí)現(xiàn)用戶問(wèn)卷信息的后臺(tái)管理。具體的操作有:?jiǎn)柧硇畔⒄故尽?chuàng)建新問(wèn)卷、更新問(wèn)卷、刪除問(wèn)卷等操作。要展示的問(wèn)卷信息有:(1)問(wèn)卷 ID(系統(tǒng)內(nèi)唯一,在創(chuàng)建問(wèn)卷時(shí)由系統(tǒng)自動(dòng)生成)。(2)問(wèn)卷標(biāo)題。(3)問(wèn)卷創(chuàng)建者的用戶名。.(4)問(wèn)卷的創(chuàng)建時(shí)間和有效時(shí)間(在有效時(shí)間內(nèi)問(wèn)卷可以答題)。(5)問(wèn)卷的

22、提交量。(6)查看問(wèn)卷統(tǒng)計(jì)信息的鏈接。(7)查看問(wèn)卷地址的鏈接。(8)編輯問(wèn)卷內(nèi)題目的鏈接。(9)問(wèn)卷操作按鈕,包括問(wèn)卷更新按鈕和問(wèn)卷刪除按鈕。此頁(yè)面 URL 為:http:/localhost/userconsole/用戶名,內(nèi)為變量,是不同用戶進(jìn)入自己?jiǎn)柧砉芾眄?yè)面的條件。更新問(wèn)卷的 post 地址為:http:/localhost/userconsole/用戶名/updatequestionnaire。刪除問(wèn)卷的 post 地址為:http:/localhost/userconsole/用戶名/deletequestionnaire。問(wèn)卷信息管理頁(yè)面 UI 與流程圖如圖 3.5 和圖 3.

23、6 所示。圖圖 3.5 問(wèn)卷信息展示頁(yè)面問(wèn)卷信息展示頁(yè)面除此之外,還有一個(gè)添加問(wèn)卷按鈕。使用 JavaScript 捕獲按鈕點(diǎn)擊消息,生成建立新問(wèn)卷對(duì)話框,用戶填寫(xiě)問(wèn)卷標(biāo)題與有效時(shí)間后可以創(chuàng)建新問(wèn)卷。使用Ajax 與服務(wù)器交流將問(wèn)卷信息寫(xiě)入數(shù)據(jù)庫(kù),做到平滑操作,改善用戶體驗(yàn)。添加表單的 post 地址為:http:/localhost/userconsole/用戶名/addquestionnaire創(chuàng)建新問(wèn)卷流程圖與頁(yè)面 UI 如圖 3.7 和圖 3.8 所示。.開(kāi)始開(kāi)始存在Session,且Session用戶名與URL中用戶名一致存在Session,且Session用戶名與URL中用戶名一致

24、聯(lián)立users表與questionnaires表,找出questionnaires表中此用戶創(chuàng)建的delete_token為0的問(wèn)卷信息聯(lián)立users表與questionnaires表,找出questionnaires表中此用戶創(chuàng)建的delete_token為0的問(wèn)卷信息T以問(wèn)卷id降序的順序排列問(wèn)卷信息以問(wèn)卷id降序的順序排列問(wèn)卷信息輸出信息輸出信息結(jié)束結(jié)束輸出錯(cuò)誤信息輸出錯(cuò)誤信息F圖圖 3.6 問(wèn)卷信息展示流程圖問(wèn)卷信息展示流程圖開(kāi)始開(kāi)始填寫(xiě)信息不為空填寫(xiě)信息不為空添加按鈕按下添加按鈕按下結(jié)束結(jié)束生成對(duì)話框生成對(duì)話框填寫(xiě)問(wèn)卷標(biāo)題和有效時(shí)間填寫(xiě)問(wèn)卷標(biāo)題和有效時(shí)間寫(xiě)入數(shù)據(jù)庫(kù)寫(xiě)入數(shù)據(jù)庫(kù)TF圖圖

25、3.7 建立新問(wèn)卷流程圖建立新問(wèn)卷流程圖.圖圖 3.8 建立新問(wèn)卷頁(yè)面建立新問(wèn)卷頁(yè)面3.2.2 題目信息管理題目信息管理本模塊用于實(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 為:http:/localhost/userconsole/用戶名/questionnaire/問(wèn)卷 id。題目信息管理頁(yè)面 UI 與流程圖如圖 3.9 和

26、圖 3.10 所示。.圖圖 3.9 題目信息展示頁(yè)面題目信息展示頁(yè)面開(kāi)始開(kāi)始存在Session,且Session用戶名與URL中用戶名一致存在Session,且Session用戶名與URL中用戶名一致聯(lián)立questionnaires表與subjects表,找出subjects表中此問(wèn)卷id的delete_token為0的問(wèn)卷信息聯(lián)立questionnaires表與subjects表,找出subjects表中此問(wèn)卷id的delete_token為0的問(wèn)卷信息T以題目id降序的順序排列問(wèn)卷信息以題目id降序的順序排列問(wèn)卷信息輸出信息輸出信息結(jié)束結(jié)束輸出錯(cuò)誤信息輸出錯(cuò)誤信息問(wèn)卷id是此用戶創(chuàng)建問(wèn)卷i

27、d是此用戶創(chuàng)建TF圖圖 3.10 題目信息展示流程圖題目信息展示流程圖除此之外,還有一個(gè)添加題目按鈕。使用 JavaScript 捕獲按鈕點(diǎn)擊消息,生成建立新題目對(duì)話框,用戶通過(guò)下拉框選擇題號(hào)與題型,輸入題目后可以創(chuàng)建新題目,已有的題號(hào)不會(huì)出現(xiàn)在下拉框中,防止生成問(wèn)卷的題號(hào)重復(fù)。使用 Ajax與服務(wù)器交流將問(wèn)卷信息寫(xiě)入數(shù)據(jù)庫(kù),做到平滑操作,改善用戶體驗(yàn)。添加新題目頁(yè)面 UI 與流程圖如圖 3.11 和圖 3.12 所示。.圖圖 3.11 建立新題目頁(yè)面建立新題目頁(yè)面 開(kāi)始開(kāi)始填寫(xiě)信息不為空填寫(xiě)信息不為空添加按鈕按下添加按鈕按下結(jié)束結(jié)束生成對(duì)話框生成對(duì)話框選擇題號(hào)、題型,填寫(xiě)題目選擇題號(hào)、題型,

28、填寫(xiě)題目寫(xiě)入數(shù)據(jù)庫(kù)寫(xiě)入數(shù)據(jù)庫(kù)TF圖圖 3.12 建立新題目流程圖建立新題目流程圖 3.2.3 選項(xiàng)信息管理選項(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)排序。.(2)選項(xiàng)內(nèi)容。(3)選項(xiàng)操作按鈕,包括選項(xiàng)更新按鈕和選項(xiàng)刪除按鈕。此頁(yè)面 URL 為:http:/localhost/userconsole/用戶名/subject/題目 id。選項(xiàng)信息管理頁(yè)面 UI 與流程圖如圖 3.13 和圖 3.14 所示。圖圖 3.13 選項(xiàng)信息管理頁(yè)面選項(xiàng)信息管理頁(yè)面開(kāi)始開(kāi)始存在Sessi

29、on,且Session用戶名與URL中用戶名一致存在Session,且Session用戶名與URL中用戶名一致聯(lián)立subjects表與options表,找出options表中此問(wèn)卷id的delete_token為0的問(wèn)卷信息聯(lián)立subjects表與options表,找出options表中此問(wèn)卷id的delete_token為0的問(wèn)卷信息T以選項(xiàng)id降序的順序排列問(wèn)卷信息以選項(xiàng)id降序的順序排列問(wèn)卷信息輸出信息輸出信息結(jié)束結(jié)束輸出錯(cuò)誤信息輸出錯(cuò)誤信息題目id是此用戶創(chuàng)建題目id是此用戶創(chuàng)建TF圖圖 3.14 選項(xiàng)信息管理流程圖選項(xiàng)信息管理流程圖.除此之外,還有一個(gè)添加選項(xiàng)按鈕。使用 JavaSc

30、ript 捕獲按鈕點(diǎn)擊消息,生成建立新選項(xiàng)對(duì)話框,用戶通過(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ù),做到平滑操作,改善用戶體驗(yàn)。添加新題目頁(yè)面 UI 與流程圖如圖 3.15 和圖 3.16 所示。圖圖 3.15 建立新選項(xiàng)頁(yè)面建立新選項(xiàng)頁(yè)面 開(kāi)始開(kāi)始填寫(xiě)信息不為空填寫(xiě)信息不為空添加按鈕按下添加按鈕按下結(jié)束結(jié)束生成對(duì)話框生成對(duì)話框選擇選項(xiàng)號(hào),填寫(xiě)選項(xiàng)選擇選項(xiàng)號(hào),填寫(xiě)選項(xiàng)寫(xiě)入數(shù)據(jù)庫(kù)寫(xiě)入數(shù)據(jù)庫(kù)TF圖圖 3.16 建立新選項(xiàng)流程圖建立新選項(xiàng)流程圖.3.2.4 問(wèn)卷結(jié)果統(tǒng)計(jì)問(wèn)卷結(jié)果統(tǒng)計(jì)根據(jù)用戶填

31、寫(xiě)的問(wèn)卷信息,統(tǒng)計(jì)選擇題每一道選項(xiàng)的選項(xiàng)次數(shù)以及簡(jiǎn)答題的答案。同一道題目不同選項(xiàng)選擇次數(shù)使用餅狀圖顯示百分比。使用 HighCharte 庫(kù)繪制餅狀圖。頁(yè)面 URL 為:http:/localhost/userconsole/用戶名/questionnaire/問(wèn)卷 id/result。頁(yè)面 UI 如圖 3.17 與圖 3.18 所示。圖圖 3.17 問(wèn)卷統(tǒng)計(jì)選擇題展示頁(yè)面問(wèn)卷統(tǒng)計(jì)選擇題展示頁(yè)面圖圖 3.18 問(wèn)卷統(tǒng)計(jì)簡(jiǎn)答題展示頁(yè)面問(wèn)卷統(tǒng)計(jì)簡(jiǎn)答題展示頁(yè)面 .3.2.5 問(wèn)卷生成問(wèn)卷生成根據(jù)用戶創(chuàng)建的問(wèn)卷、題目以及對(duì)應(yīng)的選項(xiàng)信息,生成一個(gè)完整的問(wèn)卷頁(yè)面,頁(yè)面 URL 為:http:/localh

32、ost/questionnaire/問(wèn)卷 id。頁(yè)面 UI 如圖 3.19 所示。圖圖 3.19 問(wèn)卷頁(yè)面問(wèn)卷頁(yè)面 .3.2.6 問(wèn)卷提交問(wèn)卷提交在用戶填寫(xiě)完問(wèn)卷并提交之后,向用戶反饋此問(wèn)卷的統(tǒng)計(jì)信息。頁(yè)面 UI 如圖 3.20 所示圖圖 3.20 反饋信息反饋信息 .4 測(cè)試4.1 出現(xiàn)的錯(cuò)誤出現(xiàn)的錯(cuò)誤1. 用戶權(quán)限問(wèn)題,導(dǎo)致注冊(cè)用戶可以編輯其他用戶創(chuàng)建的題目以及選項(xiàng)。2. 無(wú)法通過(guò) Laravel 的 MVC 框架聯(lián)立不同的數(shù)據(jù)庫(kù)表格。3. 更新數(shù)據(jù)庫(kù)時(shí),導(dǎo)致多個(gè)行被錯(cuò)誤修改。4.2 解決方法解決方法1. 在后臺(tái)頁(yè)面首先根據(jù) URL 的用戶名變量,判斷變量與 Session 用戶標(biāo)識(shí)是否一

33、致,若一致,轉(zhuǎn)入編輯頁(yè)面;不一致,轉(zhuǎn)到錯(cuò)誤頁(yè)面。2. 外鍵與主鍵設(shè)置錯(cuò)誤,修改即可。3. 錯(cuò)誤使用 MVC 的 find 語(yǔ)句,修改成 where 語(yǔ)句即可。.參考文獻(xiàn)1麥克勞克林. PHP & MySQL 實(shí)戰(zhàn)手冊(cè)-第二版M. 中國(guó)電力出版社, 2014.2楊克李強(qiáng), 裴云, 黃向黨. PHP 和 MySQL Web 開(kāi)發(fā)從新手到高手M. 人民郵電出版社, 2013.3陳惠貞, 陳俊榮. PHP & MySQL 程序設(shè)計(jì)實(shí)例講座M. 清華大學(xué)出版社, 2010.4孔瀟. PHP & MySQL 網(wǎng)站建設(shè)M. 國(guó)防工業(yè)出版社, 2001.5TimBoronczyk, M

34、artinE.Psinas. PHP & MySQL 范例精解:創(chuàng)建、修改、重用M. 清華大學(xué)出版社, 2009.6萬(wàn)川梅, 周建儒. PHP WEB 程序設(shè)計(jì)M. 西南交通大學(xué)出版社, 2014.7陸凱. PHP 網(wǎng)站開(kāi)發(fā)實(shí)用技術(shù)M. 人民郵電出版社, 2016.8傳智播客高教產(chǎn)品研發(fā)部. PHP 程序設(shè)計(jì)高級(jí)教程M. 中國(guó)鐵道出版社, 2015.附 錄(關(guān)鍵部分程序清單)1. 路由文件路由文件 auth, namespace = Auth, function()Route:post(loginCheck, AuthControllerloginCheck);Route:get(re

35、gister, AuthControllerregister);Route:post(registerCheck, AuthControllerregisterCheck);Route:post(registerEmailCheck, AuthControllerregisterEmailCheck);Route:post(registerNameCheck, AuthControllerregisterNameCheck););/問(wèn)卷展示頁(yè)Route:group(prefix = questionnaire, namespace = Questionnaire, function()Rout

36、e:get(questionnaireid, QuestionnaireControllerindex);Route:post(questionnaireid/result, QuestionnaireControllerresult););/用戶后臺(tái)Route:group(prefix = userconsole, namespace = UserConsole, function()/展示用戶的問(wèn)卷Route:get(username, UserConsoleControllerindex);/增加問(wèn)卷Route:post(username/addquestionnaire, UserCo

37、nsoleControlleraddquestionnaire);/修改問(wèn)卷Route:post(username/updatequestionnaire, UserConsoleControllerupdatequestionnaire);/刪除問(wèn)卷Route:post(username/deletequestionnaire, UserConsoleControllerdeletequestionnaire);/展示問(wèn)卷的題目Route:get(username/questionnaire/questionnaireid, UserConsoleControllerquestionnair

38、e);/提交結(jié)果統(tǒng)計(jì)Route:get(username/questionnaire/questionnaireid/result, UserConsoleControllersubmitresult);Route:get(username/questionnaire/questionnaireid/result/subjectid, .UserConsoleControlleranswerresult);/增加題目Route:post(username/questionnaire/questionnaireid/addsubject, UserConsoleControlleraddsubj

39、ect);/修改題目Route:post(username/questionnaire/questionnaireid/updatesubject, UserConsoleControllerupdatesubject);/刪除題目Route:post(username/questionnaire/questionnaireid/deletesubject, UserConsoleControllerdeletesubject);/展示題目的選項(xiàng)Route:get(username/subject/subjectid, UserConsoleControllersubject);/增加選項(xiàng)Ro

40、ute:post(username/subject/subjectid/addoption, UserConsoleControlleraddoption);/修改選項(xiàng)Route:post(username/subject/subjectid/updateoption, UserConsoleControllerupdateoption);/刪除選項(xiàng)Route:post(username/subject/subjectid/deleteoption, UserConsoleControllerdeleteoption););2. 用戶管理后臺(tái)文件用戶管理后臺(tái)文件auth = $auth;$th

41、is-registrar = $registrar;$this-middleware(guest, except = getLogout); */* * 登陸頁(yè)面展示 * * return Response */public function index()return view(auth.login);/* * 登錄驗(yàn)證 * * return Response */public function loginCheck()/ 處理表單:if ( (!empty($_POSTuser_nicename) & (!empty($_POSTuser_pass) )$user_nicename

42、 = htmlspecialchars(stripslashes(trim($_POSTuser_nicename);$user_pass = htmlspecialchars(stripslashes(trim($_POSTuser_pass);.$user_pass = md5($user_pass);/查找與用戶名對(duì)應(yīng)行$user_info = User:where(name, $user_nicename)-first();/信息匹配if($user_info != NULL AND $user_info-password = $user_pass)Session:put(auth_s

43、tate, 1);Session:put(user_name, $user_nicename);return 1;/信息不匹配elsereturn 0;elsereturn 0;/* * 注冊(cè)界面 * * return Response */public function register()return view(auth.register);/* * 注冊(cè)驗(yàn)證 * * return Response */public function registerCheck()/ 處理表單:if ( (!empty($_POSTuser_nicename) & (!empty($_POSTus

44、er_pass) & .(!empty($_POSTuser_email) )$user_nicename = htmlspecialchars(stripslashes(trim($_POSTuser_nicename);$user_pass = htmlspecialchars(stripslashes(trim($_POSTuser_pass);$user_pass = md5($user_pass);$user_email = htmlspecialchars(stripslashes(trim($_POSTuser_email);$created_at = $updated_

45、at = date(Y-m-d H: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);/* * 注冊(cè)驗(yàn)證-郵箱 * * return Response */public function registerEmai

46、lCheck()/ 處理表單:if ( !empty($_POSTuser_email) )/查找與用戶名對(duì)應(yīng)行$user_info = User:where(email, $_POSTuser_email)-first();/郵箱信息存在if($user_info != NULL)return 1;elsereturn 0;./* * 注冊(cè)驗(yàn)證-用戶名 * * return Response */public function registerNameCheck()/ 處理表單:if ( !empty($_POSTuser_name) )/查找與用戶名對(duì)應(yīng)行$user_info = User

47、:where(name, $_POSTuser_name)-first();/用戶信息存在if($user_info != NULL)return 1;elsereturn 0;3. 問(wèn)卷后臺(tái)管理文件問(wèn)卷后臺(tái)管理文件first();$QuestionnairesList = $user-hasManyQuestionnaire()-where(delete_token, 0)-orderBy(id,desc)-get();return view(userconsole.index)-with(QuestionnairesList,$QuestionnairesList);/顯示錯(cuò)誤信息else

48、return view(errors.authority); /* 添加問(wèn)卷 * * return Response */public function addquestionnaire($userName)/登陸用戶正確,顯示用戶控制臺(tái)if(Session:has(auth_state) & Session:get(user_name) = $userName)/處理添加新選項(xiàng)的表單if ( (!empty($_POSTNewQuestionnaireTitle) & (!empty($_POSTNewQuestionnaireTime) )$NewQuestionnaire

49、Title = $_POSTNewQuestionnaireTitle;$NewQuestionnaireTime = $_POSTNewQuestionnaireTime;./插入一行記錄$created_at = $updated_at = date(Y-m-d H:i:s);$questionnaire = Questionnaire:insertGetId(array( user_name = $userName,/問(wèn)卷創(chuàng)建者title = $NewQuestionnaireTitle, /問(wèn)卷標(biāo)題active_time= $NewQuestionnaireTime, /有效時(shí)間del

50、ete_token = 0,/刪除標(biāo)記created_at= $created_at,/創(chuàng)建時(shí)間updated_at = $updated_at)/更新時(shí)間);return success;elsereturn inputnull;/顯示錯(cuò)誤信息return view(errors.authority); /* 修改問(wèn)卷 * * return Response */public function updatequestionnaire($userName)/登陸用戶正確,顯示用戶控制臺(tái)if(Session:has(auth_state) & Session:get(user_name)

51、 = $userName)/處理添加新選項(xiàng)的表單if ( (!empty($_POSTUpdateQuestionnaireTitle) & (!empty($_POSTUpdateQuestionnaireTime) & (!empty($_POSTQuestionnaireId) )$UpdateQuestionnaireTitle = $_POSTUpdateQuestionnaireTitle;$UpdateQuestionnaireTime = $_POSTUpdateQuestionnaireTime;$QuestionnaireId = $_POSTQuestio

52、nnaireId;/更新一行記錄$created_at = $updated_at = date(Y-m-d H:i:s);$questionnaire = Questionnaire:where(id, $QuestionnaireId)-update(array( title = $UpdateQuestionnaireTitle, /問(wèn)卷標(biāo)題.active_time = $UpdateQuestionnaireTime)/有效時(shí)間);return success;elsereturn inputnull;/顯示錯(cuò)誤信息return view(errors.authority); /* 刪

53、除問(wèn)卷 * * return Response */public function deletequestionnaire($userName)/登陸用戶正確,顯示用戶控制臺(tái)if(Session:has(auth_state) & Session:get(user_name) = $userName)/處理添加新選項(xiàng)的表單if ( !empty($_POSTQuestionnaireId) )$QuestionnaireId = $_POSTQuestionnaireId;/更新一行記錄$created_at = $updated_at = date(Y-m-d H:i:s);$que

54、stionnaire = Questionnaire:where(id, $QuestionnaireId)-update(array(delete_token = 1/刪除標(biāo)記);return success;elsereturn inputnull;/顯示錯(cuò)誤信息return view(errors.authority);./* * 問(wèn)卷編輯 * * return Response */public function questionnaire($userName, $questionnaireId)/登陸用戶正確,顯示用戶控制臺(tái)if(Session:has(auth_state) &am

55、p; Session:get(user_name) = $userName)/此問(wèn)卷表所包含的所有題目$Questionnaire = Questionnaire:where(id, $questionnaireId)-first();/此問(wèn)卷表創(chuàng)建者與登錄用戶一致if($Questionnaire-user_name = $userName)$SubjectsList = $Questionnaire-hasManySubject()-where(delete_token, 0)-orderBy(number)-get();$AllNumber = array();for($i=1; $in

56、umber);$otherSubjectNumber = array_diff($AllNumber,$SubjectNumbers);return view(userconsole.questionnaire)-with(SubjectsList, $SubjectsList)/題目列表-with(QuestionnaireId, $questionnaireId)/問(wèn)卷 ID-with(QuestionnaireTitle,$Questionnaire-title)/問(wèn)卷標(biāo)題-with(SubjectNumbers, $otherSubjectNumber);/可用選項(xiàng)./顯示錯(cuò)誤信息re

57、turn view(errors.authority); /* 給指定問(wèn)卷添加新題目 * * return Response */public function addsubject($userName, $questionnaireId) /登陸用戶正確,顯示用戶控制臺(tái)if(Session:has(auth_state) & Session:get(user_name) = $userName)/此問(wèn)卷表所包含的所有題目$Questionnaire = Questionnaire:where(id, $questionnaireId)-first();/此題目創(chuàng)建者與登錄用戶一致if

58、($Questionnaire-user_name = $userName)/處理添加新選項(xiàng)的表單if ( (!empty($_POSTNewSubjectNumber) & (!empty($_POSTNewSubjectType) & (!empty($_POSTNewSubjectTitle) )$NewSubjectNumber = $_POSTNewSubjectNumber;$NewSubjectType = $_POSTNewSubjectType;$NewSubjectTitle = $_POSTNewSubjectTitle;/插入一行記錄$created_a

59、t = $updated_at = date(Y-m-d H:i:s);$subject_id = Subject:insertGetId(array( questionnaire_id= $questionnaireId,/問(wèn)卷 iduser_name = $userName,/問(wèn)卷創(chuàng)建者number = $NewSubjectNumber,/題號(hào)title = $NewSubjectTitle,/題目type = $NewSubjectType,/題目類(lèi)型(單選,多選,簡(jiǎn)答)delete_token = 0,/刪除標(biāo)記created_at = $created_at,/創(chuàng)建時(shí)間.updat

60、ed_at = $updated_at)/更新時(shí)間);return success;elsereturn inputnull;/顯示錯(cuò)誤信息return view(errors.authority); /* 修改指定題目的值 * * return Response */public function updatesubject($userName, $questionnaireId) /登陸用戶正確,顯示用戶控制臺(tái)if(Session:has(auth_state) & Session:get(user_name) = $userName)/此問(wèn)卷表所包含的所有題目$Questionnaire = Questionnaire:where(id, $questionnaireId)-first();/此問(wèn)卷表創(chuàng)建者與登錄用戶一致if($Questio

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論