校園網(wǎng)絡(luò)技術(shù)科研與創(chuàng)新能力實(shí)踐《網(wǎng)上訂餐系統(tǒng)》_第1頁(yè)
校園網(wǎng)絡(luò)技術(shù)科研與創(chuàng)新能力實(shí)踐《網(wǎng)上訂餐系統(tǒng)》_第2頁(yè)
校園網(wǎng)絡(luò)技術(shù)科研與創(chuàng)新能力實(shí)踐《網(wǎng)上訂餐系統(tǒng)》_第3頁(yè)
校園網(wǎng)絡(luò)技術(shù)科研與創(chuàng)新能力實(shí)踐《網(wǎng)上訂餐系統(tǒng)》_第4頁(yè)
校園網(wǎng)絡(luò)技術(shù)科研與創(chuàng)新能力實(shí)踐《網(wǎng)上訂餐系統(tǒng)》_第5頁(yè)
已閱讀5頁(yè),還剩56頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、網(wǎng)絡(luò)技術(shù)科研與創(chuàng)新能力實(shí)踐 題 目: 網(wǎng)上訂餐系統(tǒng) 學(xué) 院: xxxx學(xué)院 專(zhuān)業(yè)名稱(chēng): xxxxxx 班級(jí)學(xué)號(hào): xxxxxx 學(xué)生姓名: xxx 指導(dǎo)教師: xxxxx 2014年12月1日摘要隨著網(wǎng)絡(luò)的普及,人們也通過(guò)各類(lèi)網(wǎng)上的系統(tǒng)來(lái)方便日常的生活,此系統(tǒng)就是基于B/S模式開(kāi)發(fā)的網(wǎng)上訂餐系統(tǒng)。訂餐系統(tǒng)為用戶(hù)提供注冊(cè)及登入功能;當(dāng)成功注冊(cè)為網(wǎng)站的用戶(hù),用戶(hù)即可通過(guò)本系統(tǒng)進(jìn)行訂餐,其中包括菜品訂購(gòu)、查看或修改訂單、提交訂單、查閱過(guò)往訂單。同時(shí),訂餐系統(tǒng)為餐飲管理者提供系統(tǒng)登入、用戶(hù)所購(gòu)訂單查看、菜品信息管理。本文將從用戶(hù)和餐飲管理者的角度對(duì)本系統(tǒng)進(jìn)行詳細(xì)的介紹。此系統(tǒng)是基于HTML、DIV+C

2、SS、PHP、JavaScript語(yǔ)言開(kāi)發(fā)的一套訂餐系統(tǒng)。系統(tǒng)實(shí)施包括三個(gè)階段(前期、中期、后期),實(shí)施工作前期包括系統(tǒng)過(guò)程圖設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)、MVC開(kāi)發(fā)模式圖設(shè)計(jì)、XML文檔設(shè)計(jì),實(shí)施工作中期包括系統(tǒng)代碼編寫(xiě)、系統(tǒng)網(wǎng)頁(yè)設(shè)計(jì)、系統(tǒng)功能優(yōu)化等,實(shí)施工作后期主要包括系統(tǒng)的功能測(cè)試。關(guān)鍵字:系統(tǒng)、注冊(cè)、管理、訂購(gòu)目 錄前言 . 1第1章 網(wǎng)上訂餐系統(tǒng)需求分析. 2 1.1網(wǎng)上訂餐系統(tǒng)任務(wù)概述. 2 1.2網(wǎng)上訂餐系統(tǒng)的設(shè)計(jì)要求. 21.2.1網(wǎng)上訂餐系統(tǒng)功能流程. 21.2.2網(wǎng)上訂餐系統(tǒng)功能流程分析. 2 1.3網(wǎng)上訂餐系統(tǒng)功能過(guò)程圖. 3 1.3.1網(wǎng)站注冊(cè)、訂餐過(guò)程圖. 31.3.2管理員操作

3、管理過(guò)程圖. 4 1.4網(wǎng)上訂餐系統(tǒng)需求總結(jié). 5第2章 網(wǎng)上訂餐系統(tǒng)數(shù)據(jù)層設(shè)計(jì)介紹. 5 2.1系統(tǒng)數(shù)據(jù)層簡(jiǎn)述. 5 2.2網(wǎng)上訂餐系統(tǒng)數(shù)據(jù)層. 5 2.2.1數(shù)據(jù)層-數(shù)據(jù)庫(kù)表格設(shè)計(jì)簡(jiǎn)述. 5 2.2.2數(shù)據(jù)層-數(shù)據(jù)庫(kù)表格設(shè)計(jì)詳述. 52.2.3數(shù)據(jù)層-XML文件設(shè)計(jì)簡(jiǎn)述. 8 2.2.4數(shù)據(jù)層-XML文件設(shè)計(jì)詳述. 8 2.3網(wǎng)上訂餐系統(tǒng)數(shù)據(jù)層總結(jié). 9 第三章 網(wǎng)上點(diǎn)餐系統(tǒng)管理層功能設(shè)計(jì)與實(shí)現(xiàn). 11 3.1系統(tǒng)管理層簡(jiǎn)述. 11 3.2網(wǎng)上訂餐系統(tǒng)管理層功能設(shè)計(jì)與實(shí)現(xiàn). 11 3.2.1管理層-管理員登入功能三層模式設(shè)計(jì). 113.2.2管理層-管理員登入功能實(shí)現(xiàn). 12 3.2.3管

4、理層-管理員登入功能圖示. 15 3.2.4管理層-管理員操作功能三層模式設(shè)計(jì). 163.2.5管理層-管理員操作功能實(shí)現(xiàn). 173.2.6管理層-管理員操作功能圖示. 22 3.3網(wǎng)上訂餐系統(tǒng)管理層功能總結(jié). 25第4章 網(wǎng)上訂餐系統(tǒng)用戶(hù)層功能設(shè)計(jì)與實(shí)現(xiàn). 25 4.1系統(tǒng)用戶(hù)層簡(jiǎn)述. 25 4.2網(wǎng)上訂餐系統(tǒng)用戶(hù)層功能設(shè)計(jì)與實(shí)現(xiàn). 25 4.2.1用戶(hù)層-用戶(hù)登入、注冊(cè)功能三層模式設(shè)計(jì). 25 4.2.2用戶(hù)層-用戶(hù)登入、注冊(cè)功能實(shí)現(xiàn). 254.2.3用戶(hù)層-用戶(hù)登入、注冊(cè)功能圖示. 30 4.2.4用戶(hù)層-用戶(hù)操作功能三層模式設(shè)計(jì). 31 4.2.5用戶(hù)層-用戶(hù)操作功能實(shí)現(xiàn). 34 4.

5、2.6用戶(hù)層-用戶(hù)操作功能圖示. 45 4.3網(wǎng)上訂餐系統(tǒng)用戶(hù)層功能總結(jié). 47第五章 網(wǎng)上訂餐系統(tǒng)項(xiàng)目總結(jié). 47參考文獻(xiàn). 48附錄. 49前言隨著信息和網(wǎng)絡(luò)技術(shù)的發(fā)展和進(jìn)步,高效便捷的系統(tǒng)服務(wù)為越來(lái)越多的人們所追求,尤其的基于B/S模式的服務(wù)系統(tǒng),越來(lái)越受到廣大用戶(hù)們的歡迎。這種模式的好處在于,有更加良好的交互界面、有更加便捷的操作體驗(yàn)、有更加靈活高效的系統(tǒng),使得開(kāi)發(fā)者可以及時(shí)的更新系統(tǒng)的功能和不斷提升系統(tǒng)的性能,使得用戶(hù)有更好的交互體驗(yàn)。正是由于這種背景,開(kāi)發(fā)了此套基于B/S模式的網(wǎng)上訂餐系統(tǒng)。網(wǎng)上訂餐已成為時(shí)下較為普遍和流行的一種電商模式,尤其是在我們的校園和白領(lǐng)人士上班的地方,這樣

6、的需求較為普遍。不方便外出就餐的人們通過(guò)各類(lèi)的訂餐網(wǎng)站進(jìn)行網(wǎng)上訂餐,客戶(hù)提供送餐地址和聯(lián)系電話(huà),賣(mài)家則通過(guò)系統(tǒng)反饋的信息來(lái)給客戶(hù)提供相應(yīng)的服務(wù)。本系統(tǒng)也是基于這樣的一種思想,來(lái)實(shí)現(xiàn)相應(yīng)的功能。當(dāng)然,就一個(gè)完整的系統(tǒng)來(lái)說(shuō),我們需要將該系統(tǒng)進(jìn)行劃分,分為用戶(hù)層面的和管理者層面。對(duì)于用戶(hù)層面,我們需要對(duì)用戶(hù)渴求的一些基本功能和系統(tǒng)本身的需求進(jìn)行結(jié)合,來(lái)考慮最終的系統(tǒng)用戶(hù)層面的功能需求。而對(duì)于管理者層面我們需要更加考慮到安全性和功能性的二者結(jié)合,因?yàn)楣芾碚邔有枰佑|權(quán)限更高的一些操作,如一些重要的數(shù)據(jù)庫(kù)表單的CRUD操作以及可能的客戶(hù)信息等。故本系統(tǒng)將功能層面的操作分為客戶(hù)層面和管理者層面,使得系統(tǒng)更

7、加的完善、友好。當(dāng)然對(duì)于B/S模式,我們需要更多的考慮到的是系統(tǒng)的安全性和健壯性,對(duì)于客戶(hù)可能的不合法操作需要進(jìn)行相應(yīng)的出錯(cuò)處理。本系統(tǒng)對(duì)于安全性方面主要是基于合法用戶(hù)的在線(xiàn)監(jiān)測(cè),而對(duì)于健壯性方面,系統(tǒng)對(duì)于用戶(hù)可能出現(xiàn)的錯(cuò)誤操作都進(jìn)行了相應(yīng)的出錯(cuò)處理,屏蔽了一些可能存在的非法操作,一個(gè)提供了系統(tǒng)的健壯性,另一方面也提高了客戶(hù)的交互體驗(yàn)。當(dāng)然,對(duì)于成熟的B/S模式系統(tǒng),有更加完善的系統(tǒng)級(jí)的安全保護(hù)和各種錯(cuò)誤處理機(jī)制,所以,隨著今后各種B/S模式系統(tǒng)的推出,會(huì)有更多的系統(tǒng)安全解決方案,使得B/S模式系統(tǒng)更加安全??傊?,B/S模式會(huì)是今后較為流行的一種開(kāi)發(fā)模式,各類(lèi)高體驗(yàn)的系統(tǒng)也會(huì)建立在這種模式上,

8、給予客戶(hù)更加方便快捷的體驗(yàn),也減輕了客戶(hù)本地系統(tǒng)壓力。今后我們只要點(diǎn)擊瀏覽器,就可以登入各類(lèi)系統(tǒng)進(jìn)行操作。1第一章:網(wǎng)上訂餐系統(tǒng)設(shè)計(jì)需求分析1.1網(wǎng)上訂餐系統(tǒng)的任務(wù)概述網(wǎng)上訂餐系統(tǒng)是基于B/S模式開(kāi)發(fā)一種用戶(hù)訂餐系統(tǒng),本系統(tǒng)需要實(shí)現(xiàn)的功能主要功能有以下的幾個(gè)方面。首先,系統(tǒng)最為基礎(chǔ)的功能是要實(shí)現(xiàn)用戶(hù)的注冊(cè)、用戶(hù)的系統(tǒng)登入功能,其次,系統(tǒng)需要為用戶(hù)提供訂餐服務(wù),其中包括點(diǎn)擊訂餐、購(gòu)物籃的顯示、購(gòu)物籃信息的修改、提交訂單等功能;同時(shí)也提供給用戶(hù)查詢(xún)以往訂餐信息的操作,以及修改密碼的操作。再有,系統(tǒng)需要為管理者或者我們俗稱(chēng)為餐飲經(jīng)營(yíng)者提供管理界面,包括訂單接收、菜餐信息的修改等功能。通過(guò)對(duì)系統(tǒng)以上功

9、能的整合分析,并結(jié)合在代碼實(shí)施階段的功能調(diào)整,搭建起一個(gè)完整的網(wǎng)上訂餐系統(tǒng)。1.2網(wǎng)上訂餐系統(tǒng)的設(shè)計(jì)要求1.2.1網(wǎng)上訂餐系統(tǒng)功能流程第一步:進(jìn)入訂餐網(wǎng)站,如需點(diǎn)餐,用戶(hù)首先需要注冊(cè),用戶(hù)可以點(diǎn)擊頁(yè)面右上方“注冊(cè)”按鈕進(jìn)入注冊(cè)頁(yè)面。第二步:請(qǐng)按指定格式填寫(xiě)用戶(hù)的用戶(hù)名、訂餐聯(lián)系手機(jī)號(hào)、電子郵箱等個(gè)人資料,并設(shè)置密碼,以便下次訂餐時(shí)憑借輸入電子郵箱(或手機(jī)號(hào))和密碼快速登錄。首次訂餐用戶(hù)需仔細(xì)閱讀用戶(hù)協(xié)議,點(diǎn)擊“同意”接受用戶(hù)協(xié)議后方可繼續(xù)下一步。第三步:填寫(xiě)送餐地址請(qǐng)選擇用戶(hù)所在城市,并填寫(xiě)用戶(hù)的詳細(xì)地址信息以完成注冊(cè)。用戶(hù)輸入的詳細(xì)地址會(huì)保存在用戶(hù)的地址簿中方便用戶(hù)下次訂餐提交。第四步:瀏覽

10、菜單點(diǎn)餐選擇用戶(hù)喜愛(ài)的餐點(diǎn),輸入份數(shù),然后選擇“立即訂購(gòu)”。用戶(hù)可以在右側(cè)“我的訂單”中看到用戶(hù)的點(diǎn)餐內(nèi)容和金額。第五步:確認(rèn)送餐信息并復(fù)核訂單,系統(tǒng)將分別羅列出用戶(hù)的送餐信息以及用戶(hù)的訂單,用戶(hù)可在此再次復(fù)核用戶(hù)的地址信息和訂單。點(diǎn)擊“提交”即可完成用戶(hù)的首次訂餐!1.2.2網(wǎng)上訂餐系統(tǒng)功能流程分析分析一:根據(jù)以上對(duì)于本訂餐系統(tǒng)功能流程的描述,可以看到,本系統(tǒng)僅對(duì)注冊(cè)用戶(hù)提供訂餐服務(wù),而對(duì)于非注冊(cè)用戶(hù)不提供相應(yīng)的服務(wù),那么系統(tǒng)在響應(yīng)相應(yīng)的訂餐動(dòng)作時(shí),需要作出判斷,并向客服反饋!即若用戶(hù)在已登入的情況下訂餐,則更新購(gòu)物籃信息,否則提示尚未登入,無(wú)法訂餐。分析二:對(duì)于用戶(hù)注冊(cè)時(shí)所提供的手機(jī)號(hào),郵

11、箱賬號(hào)等信息,我們不將其作為登入的ID使用,參考目前多數(shù)網(wǎng)站的做法,我們需要用戶(hù)提供唯一標(biāo)示身份的ID,那么為了避免沖突,我們將在注冊(cè)時(shí)進(jìn)行檢索,來(lái)防止用戶(hù)提供與其他用戶(hù)相同的ID號(hào),并提示用戶(hù)修改ID,從新注冊(cè)。分析三:本系統(tǒng)提供的用戶(hù)協(xié)議也是用戶(hù)訂餐的操作事項(xiàng),所以我們將此功能調(diào)整為用戶(hù)每次進(jìn)行訂餐時(shí),都需要對(duì)協(xié)議進(jìn)行勾選,否則無(wú)法提交訂單。1.3網(wǎng)上訂餐系統(tǒng)功能過(guò)程圖1.3.1網(wǎng)站注冊(cè)、訂餐過(guò)程圖:(圖1.1)圖1.1以上過(guò)程圖簡(jiǎn)單的表述了訂餐和注冊(cè)的一個(gè)過(guò)程圖,根據(jù)對(duì)系統(tǒng)功能流程的介紹和分析可以看出,在進(jìn)行注冊(cè)和訂餐時(shí),都需要進(jìn)行完整性和合法性校驗(yàn),通過(guò)規(guī)則的校驗(yàn)才能最終提交。1.3.

12、2管理員操作管理過(guò)程圖(圖1.2)圖1.2以上過(guò)程圖為管理員操作過(guò)程圖,反應(yīng)了管理員對(duì)于客戶(hù)反饋的訂單信息進(jìn)行相應(yīng)的處理操作過(guò)程,以及對(duì)于本餐飲店的一些日常店鋪的管理和維護(hù)工作的操作過(guò)程。1.4網(wǎng)上訂餐系統(tǒng)需求總結(jié)根據(jù)以上的分析,我們將網(wǎng)上訂餐系統(tǒng)的需求歸納為以下的幾個(gè)方面:1、 客戶(hù)注冊(cè)需求2、 客戶(hù)和管理員登入需求3、 客戶(hù)訂餐和提交訂單需求4、 管理員處理訂單需求5、 管理員修改菜品信息需求6、 客戶(hù)個(gè)人信息修改需求以上為該系統(tǒng)所總結(jié)出的六大功能需求,我們將在項(xiàng)目的實(shí)施階段一一對(duì)其進(jìn)行功能實(shí)現(xiàn)和完善。第2章 :網(wǎng)上訂餐系統(tǒng)數(shù)據(jù)層設(shè)計(jì)介紹2.1系統(tǒng)數(shù)據(jù)層簡(jiǎn)述作為一套訂餐系統(tǒng),避免不了系統(tǒng)和

13、用戶(hù)進(jìn)行數(shù)據(jù)的交互,用戶(hù)需要向系統(tǒng)提交輸入的數(shù)據(jù)信息,系統(tǒng)需要對(duì)用戶(hù)的信息進(jìn)行分析、識(shí)別和處理。所以數(shù)據(jù)層的設(shè)計(jì)對(duì)于一套系統(tǒng)來(lái)說(shuō)是不可避免的,而且也是重中之重的。一個(gè)好的底層數(shù)據(jù)的存儲(chǔ)設(shè)計(jì),對(duì)于系統(tǒng)的運(yùn)行速度、執(zhí)行效率、人機(jī)交互等這些方面都有很大的影響。存儲(chǔ)數(shù)據(jù)的方式也無(wú)外乎為三種,寫(xiě)內(nèi)存、寫(xiě)數(shù)據(jù)庫(kù)、寫(xiě)文件;這三類(lèi)存儲(chǔ)方式有其各自的優(yōu)缺點(diǎn),對(duì)于寫(xiě)內(nèi)存型存儲(chǔ)方式,主要用于即時(shí)性的數(shù)據(jù),這類(lèi)數(shù)據(jù)不要求記錄也不是很重要,但在系統(tǒng)的運(yùn)行中需要不斷的進(jìn)行讀取調(diào)用;而對(duì)于寫(xiě)文件型存儲(chǔ),這類(lèi)存儲(chǔ)的信息多為配置信息,但也可根據(jù)系統(tǒng)需求進(jìn)行合理使用,本系統(tǒng)即將用戶(hù)購(gòu)物籃信息和訂單信息寫(xiě)成XML文件,使得系統(tǒng)更加

14、高效;對(duì)于數(shù)據(jù)庫(kù)存儲(chǔ),保存的多為需要進(jìn)行快速檢索和定位的信息,當(dāng)然這些數(shù)據(jù)也是長(zhǎng)期存儲(chǔ)的,并且對(duì)于數(shù)據(jù)間具有關(guān)聯(lián)的數(shù)據(jù)多運(yùn)用數(shù)據(jù)庫(kù)進(jìn)行存儲(chǔ),這樣可提高數(shù)據(jù)可維護(hù)性和數(shù)據(jù)的完整性。2.2網(wǎng)上訂餐系統(tǒng)數(shù)據(jù)層2.2.1數(shù)據(jù)層-數(shù)據(jù)庫(kù)表格設(shè)計(jì)簡(jiǎn)述我們將數(shù)據(jù)庫(kù)表格分為三類(lèi)表,分別為管理員表,用戶(hù)表,菜單表。其中管理員表有兩張,一張維護(hù)著管理員的登入名和密碼,以及郵件信息;另一張維護(hù)著管理員登入時(shí)為進(jìn)一步確定身份而進(jìn)行的問(wèn)題驗(yàn)證機(jī)制所設(shè)定的問(wèn)題信息表。而對(duì)于用戶(hù)表和菜單表都僅有一張表,分別維護(hù)著用戶(hù)的基本信息和菜品對(duì)應(yīng)的基本信息。2.2.2數(shù)據(jù)層-數(shù)據(jù)庫(kù)表格設(shè)計(jì)詳述管理員表主要存儲(chǔ)著管理員的信息,管理員登

15、入名和管理員的登入密碼,以及管理員的郵箱地址;還有就是用于管理員登入時(shí)進(jìn)行二次驗(yàn)證的問(wèn)題。兩張表的名字分別為admin_infor_data和admin_question_data。表admin_infor_data設(shè)計(jì)如下:FieldTypeNullKeyDefaultExtraAdmin_idInt(10)unsignedNOPRINULLAuto_incrementAdmin_nameVarchar(64)NONULLAdmin_passwordVarchar(512)NONULLAdmin_emailVarchar()NONULL表admin_question_data設(shè)計(jì)如下:Fie

16、ldTypeNullKeyDefaultExtraAdmin_nameVarchar(64)YESNULLAdmin_questiontextNONULLAdmin_answertextNONULL以上為admin的兩張表格的設(shè)計(jì),初始的數(shù)據(jù)為:Insert into Admin_infor_data(admin_name,admin_password,admin_email) values('小米',md5('12345'),'xiaomi');insert into Admin_question_data(admin_name,admin_q

17、uestion,admin_answer) values('小米','我喜歡的花是?','百合');初始的管理員為小米,密碼為12345,且使用MD5加密存儲(chǔ),提高安全性。并初始化需要驗(yàn)證回答的問(wèn)題為“我喜歡的花是?”,答案是:“百合”。用戶(hù)表和菜單表分別維護(hù)者用戶(hù)和菜品的信息,兩張表分別命名為user_infor_data和dishes,以下給出兩張表的設(shè)計(jì):FieldTypeNullKeyDefaultExtraUser_idInt(10)unsignedNOPRINULLAuto_incrementUser_nameVarchar(64)N

18、ONULLUser_passwordVarchar(512)NONULLUser_telephoneVarchar(32)NONULLUser_emailVarchar(128)NONULLUser_addresstextNONULL表user_infor_data設(shè)計(jì)如下:表dishes設(shè)計(jì)如下:FieldTypeNullKeyDefaultExtraDishes_idInt(10)unsignedNOPRINULLAuto_incrementDishes_nameVarchar(64)NONULLDishes_valueInt(10)unsignedNONULLDishes_kindVar

19、char(64)NONULLDishes_pathtextNONULL對(duì)于用戶(hù)表,主要存儲(chǔ)著用戶(hù)的訂餐電話(huà),用戶(hù)的送餐地址,用戶(hù)Email,用戶(hù)的登入名和密碼,一樣密碼也采用MD5加密后存儲(chǔ),提供數(shù)據(jù)庫(kù)的安全性。對(duì)于菜單表,主要存儲(chǔ)菜單的菜品名、菜品的價(jià)格、菜品所屬的菜系、菜品圖片所存儲(chǔ)的路徑。(圖2.1)圖2.1本系統(tǒng)采用的數(shù)據(jù)庫(kù)為MYSQL數(shù)據(jù)庫(kù),本類(lèi)型數(shù)據(jù)庫(kù)具有小巧,易維護(hù)等特點(diǎn),多適合于小中型網(wǎng)站的數(shù)據(jù)庫(kù)選擇。且該類(lèi)型的數(shù)據(jù)庫(kù)免費(fèi)提供給開(kāi)發(fā)者使用,對(duì)于學(xué)習(xí)型的開(kāi)發(fā)者來(lái)說(shuō)是較好的一種學(xué)習(xí)選擇。并且,這種數(shù)據(jù)庫(kù)可以支持各種語(yǔ)言的訪(fǎng)問(wèn),如Java、PHP等語(yǔ)言對(duì)其都有較好的支持。尤其是PHP

20、對(duì)其有較成熟函數(shù)支持,提供較多操作數(shù)據(jù)庫(kù)的函數(shù)。一般,我們將這些函數(shù)封裝成操作數(shù)據(jù)庫(kù)的類(lèi),后續(xù)會(huì)進(jìn)行詳細(xì)的介紹。2.2.3數(shù)據(jù)層-XML文件設(shè)計(jì)簡(jiǎn)述在系統(tǒng)的數(shù)據(jù)層方面,我們沒(méi)有全部采用數(shù)據(jù)庫(kù)表形式存儲(chǔ),尤其對(duì)于要經(jīng)常改寫(xiě)的一些底層數(shù)據(jù),我們將其設(shè)計(jì)成一定格式的XML文件。這里需要引入的一個(gè)技術(shù)即為DOM編程技術(shù),該技術(shù)可以將一定格式的XML文件轉(zhuǎn)化為一棵XML文件樹(shù),文件樹(shù)維護(hù)著XML文件中的各個(gè)節(jié)點(diǎn)信息。通過(guò)DOM提供一些操作函數(shù)和類(lèi)內(nèi)置變量可以利用我們方便地操作一棵XML文件樹(shù),達(dá)到以一定的格式讀寫(xiě)XML文件樹(shù)的目的?;赬ML文件的存儲(chǔ)速度快,易于操作的優(yōu)點(diǎn),我們將用戶(hù)的購(gòu)物籃中的信息寫(xiě)

21、成一個(gè)XML文件以及將用戶(hù)提交的訂單也寫(xiě)成一個(gè)XML文件。2.2.4數(shù)據(jù)層-XML文件設(shè)計(jì)詳述將用戶(hù)購(gòu)物籃信息保存成XML文件,我們需要考慮到每一個(gè)用戶(hù)維護(hù)著自身的購(gòu)物籃信息,而這些購(gòu)物籃信息又都存儲(chǔ)在同一個(gè)XML文件中,所以如何區(qū)分存儲(chǔ)是設(shè)計(jì)XML文件的主要內(nèi)容。同時(shí)對(duì)于存儲(chǔ)的信息的選擇也非常的關(guān)鍵,這里的設(shè)計(jì)主要是要防止數(shù)據(jù)的冗余存儲(chǔ)。我們將用戶(hù)存儲(chǔ)購(gòu)物籃信息的XML文件命名為:order_dishes.xml文件,其設(shè)計(jì)如下(圖2.2)圖2.2可以看到,此XML文件的根節(jié)點(diǎn)為order_dishes,每個(gè)user_id維護(hù)了一個(gè)ID屬性,用于區(qū)分不同用戶(hù)提交的購(gòu)物籃信息,同時(shí)user_i

22、d為根節(jié)點(diǎn)的子樹(shù)下維護(hù)著所訂購(gòu)的菜品的名字和份數(shù)信息。其實(shí)構(gòu)建了四層子樹(shù)的文件結(jié)構(gòu)(圖2.3)。圖2.3將用戶(hù)提交的訂單信息保存到XML文件中,也是依然需要對(duì)不同用戶(hù)提交的信息進(jìn)行區(qū)分,而且,由于系統(tǒng)提供以往訂單查詢(xún)的功能,所以對(duì)于提交的訂單,我們需要給每天的訂單加上相應(yīng)的時(shí)間戳,來(lái)區(qū)別不同時(shí)間所提交的訂單信息。再有,對(duì)于用戶(hù)提交的訂單,我們需要加上相應(yīng)的標(biāo)準(zhǔn)位,來(lái)確定本條記錄是否已經(jīng)處理,及餐廳是否已經(jīng)接受訂單,若已接受及不再給餐廳進(jìn)行處理。我們將接受訂單信息的XML文件命名為:submit_order_dishes.xml文件,其設(shè)計(jì)的結(jié)構(gòu)如下(圖2.4)圖2.4這里將XML的根節(jié)點(diǎn)設(shè)為s

23、ubmit_order,order_time作為其子節(jié)點(diǎn),在其屬性time標(biāo)記上描述著訂單提交的日期,那么這一天提交的所有訂單都會(huì)存儲(chǔ)在這個(gè)節(jié)點(diǎn)下。同上,使用order_id來(lái)區(qū)分不同的用戶(hù)提交的訂單信息,訂單信息中描述著訂單的菜品、菜品份數(shù)、價(jià)格、送餐地址、聯(lián)系電話(huà)、送餐時(shí)間等。其中有個(gè)state的子節(jié)點(diǎn)用于標(biāo)記此份訂單是否已被處理,未被處理顯示“on”,已被處理顯示“off”。同樣這里也維護(hù)著一棵五層模式的XML文件樹(shù)(圖2.5)圖2.52.3網(wǎng)上訂餐系統(tǒng)數(shù)據(jù)層設(shè)計(jì)總結(jié)以上介紹了網(wǎng)上訂餐系統(tǒng)的數(shù)據(jù)層設(shè)計(jì),數(shù)據(jù)層的設(shè)計(jì)是通過(guò)寫(xiě)內(nèi)存和寫(xiě)文件結(jié)合的方式進(jìn)行的,一些需要進(jìn)行多次更改的數(shù)據(jù),如用戶(hù)購(gòu)

24、物籃中的數(shù)據(jù)以及用戶(hù)多次提交訂單的數(shù)據(jù),我們使用寫(xiě)文件的方式,即上述的寫(xiě)XML文件的方式進(jìn)行數(shù)據(jù)的錄入和獲取。而對(duì)于不需要經(jīng)常進(jìn)行更改的數(shù)據(jù)這里使用數(shù)據(jù)庫(kù)進(jìn)行存儲(chǔ),即如上述的菜品信息以及管理員、用戶(hù)信息。這樣的設(shè)計(jì)可以提高系統(tǒng)的執(zhí)行效率,提高系統(tǒng)的運(yùn)行速度,同時(shí)也貼合系統(tǒng)的需求??傊?,該數(shù)據(jù)層的設(shè)計(jì)達(dá)到了對(duì)于各類(lèi)數(shù)據(jù)的存儲(chǔ)與提高各類(lèi)數(shù)據(jù)處理效率的目標(biāo)。第3章 :網(wǎng)上點(diǎn)餐系統(tǒng)管理層功能設(shè)計(jì)與實(shí)現(xiàn)3.1系統(tǒng)管理層簡(jiǎn)述管理層,作為一塊功能層的總稱(chēng),在大多數(shù)的系統(tǒng)中都會(huì)有這一功能模塊,其在系統(tǒng)中的主要作用是維護(hù)系統(tǒng)的各類(lèi)數(shù)據(jù)。通俗的講,管理層也作為系統(tǒng)的一類(lèi)用戶(hù),也管理著一類(lèi)數(shù)據(jù),其區(qū)別在于系統(tǒng)所授予

25、數(shù)據(jù)操作的權(quán)限不同,管理層所感興趣的需求與一般用戶(hù)的需求也不同,所以其功能上需要作為一個(gè)獨(dú)立的模塊進(jìn)行分析。3.2網(wǎng)上訂餐系統(tǒng)管理層功能設(shè)計(jì)與實(shí)現(xiàn)3.2.1管理層-管理員登入功能三層模式設(shè)計(jì)管理員登入根據(jù)三層模式的特點(diǎn),將功能模塊分為視圖層、處理層、數(shù)據(jù)層,在此功能上,視圖層上主要是用于接受管理員的登入請(qǐng)求,視圖層的界面分為登入界面(Restaurant_login.php)、二次問(wèn)題驗(yàn)證界面(Restaurant_login_question.php)。而對(duì)于處理層分為數(shù)據(jù)處理(Restaurant_login_process.php)、數(shù)據(jù)服務(wù)(用于處理提交到后臺(tái)的合法數(shù)據(jù))(Restau

26、rant_login_service.php),數(shù)據(jù)處理頁(yè)面會(huì)調(diào)用(call)數(shù)據(jù)服務(wù)中的函數(shù),來(lái)得到相應(yīng)的功能函數(shù)??傊?,數(shù)據(jù)處理調(diào)用功能函數(shù),根據(jù)函數(shù)返回的結(jié)果來(lái)判斷是否為合法登入。(設(shè)計(jì)見(jiàn)圖3.1)圖3.13.2.2管理層-管理員登入功能實(shí)現(xiàn)管理員登入功能的實(shí)現(xiàn)主要在于通過(guò)管理員提交的數(shù)據(jù)和后臺(tái)的數(shù)據(jù)進(jìn)行校驗(yàn),來(lái)達(dá)到檢驗(yàn)管理員身份是否合法的目的。管理員登入數(shù)據(jù)處理代碼,即位于Restaurant_login_process.php中的代碼,這里對(duì)數(shù)據(jù)進(jìn)行初步的校驗(yàn)和分析,主要對(duì)數(shù)據(jù)完整性和合法性進(jìn)行檢驗(yàn)。登入功能第一層校驗(yàn),用戶(hù)名密碼校驗(yàn),其代碼如下:if(!empty($_POST&#

27、39;loginname')&&!empty($_POST'password')&&!empty($_POST'checkcode')/查看登錄數(shù)據(jù)的完整性 $login_name=$_POST'loginname' $password=$_POST'password' $check_code=$_POST'checkcode'/接收登入信息(登錄名、密碼、驗(yàn)證碼) else header("location:Restaurant_login.php?error=1

28、");/信息不完整,返回錯(cuò)誤信息。 exit(); if(!empty($_SESSION'checkline')$check_line=$_SESSION'checkline'/獲取驗(yàn)證碼if(!empty($_POST'login_model')$login_modle=$_POST'login_model'/獲取登入模式(一般用戶(hù)、管理員)if($check_line=$check_code)/校驗(yàn)驗(yàn)證碼 $res=$login_service->check_password($login_name,$pas

29、sword,$login_modle); if($res)/調(diào)用check_password函數(shù)檢驗(yàn)密碼,正確返回true,錯(cuò)誤返回false if($login_modle="admin") $_SESSION'admin_name'=$login_name;/將登入名寫(xiě)入session中 $_SESSION'login_one'=1;/用于標(biāo)記第一層檢驗(yàn)通過(guò) header("location:Restaurant_login_question.php");/驗(yàn)證通過(guò),跳轉(zhuǎn)至第二層 exit(); else header

30、("location:Restaurant_login.php?error=3");/密碼錯(cuò)誤,返回錯(cuò)誤信息 exit();else/驗(yàn)證碼錯(cuò)誤,返回錯(cuò)誤信息header("location:Restaurant_login.php?error=2");exit();登入功能第二層校驗(yàn),管理員問(wèn)題校驗(yàn),其代碼如下:if(!empty($_GET'question_check')/提交是數(shù)據(jù)來(lái)自問(wèn)題校驗(yàn)功能模塊 if(!empty($_POST'login_answer')&&!empty($_POST

31、9;checkcode')/完整性校驗(yàn) $check_code=$_POST'checkcode' if($_SESSION'checkline'=$check_code)/檢驗(yàn)驗(yàn)證碼 $login_name=$_SESSION'admin_name' $login_answer=$_POST'login_answer'/接收校驗(yàn)數(shù)據(jù) $res=$login_service->check_answer($login_answer, $login_name); if($res)/調(diào)用check_answer函數(shù),正確返

32、回true,錯(cuò)誤返回false $_SESSION'login_two'=1;/管理員登入成功標(biāo)記,寫(xiě)入session中 header("location:Restaurant_admin_page.php"); exit();/登入成功,跳轉(zhuǎn)至管理員界面 else/答案錯(cuò)誤,返回錯(cuò)誤信息 header("location:Restaurant_login_question.php?error=3"); exit();/ else /驗(yàn)證碼錯(cuò)誤,返回提示信息 header("location:Restaurant_login_q

33、uestion.php?error=2"); exit(); else header("location:Restaurant_login_question.php?error=1"); exit(); /驗(yàn)證信息不完整,返回錯(cuò)誤信息check_password($login_name,$password,$login_modle)函數(shù)代碼如下:public function check_password($login_name,$password,$login_model) $mysql=new Mysqli_stmt_h();/新建一個(gè)數(shù)據(jù)庫(kù)操作類(lèi)對(duì)象 if(

34、$login_model="admin")/構(gòu)造管理員登陸模式SQL語(yǔ)句 $sql="select admin_password from Admin_infor_data where admin_name='".$login_name."'" $arr=$mysql->oper_query($sql);/執(zhí)行返回?cái)?shù)據(jù)庫(kù)中的密碼 $mysql->conn_close();/關(guān)閉數(shù)據(jù)庫(kù)連接 if($arr00=md5($password)/與用戶(hù)提交的密碼進(jìn)行對(duì)比 return 1;/相同返回1 else r

35、eturn 0;/不同返回0 check_answer($login_answer, $login_name)函數(shù)代碼如下:public function check_answer($login_answer,$login_name) $mysql=new Mysqli_stmt_h();/新建一個(gè)數(shù)據(jù)庫(kù)操作類(lèi)對(duì)象 $sql="select admin_answer from admin_question_data where admin_name='".$login_name."'"/構(gòu)造SQL語(yǔ)句 $arr=$mysql->op

36、er_query($sql);/去數(shù)據(jù)庫(kù)中的問(wèn)題 $mysql->conn_close();/關(guān)閉數(shù)據(jù)庫(kù)連接 if($login_answer=$arr00) return 1;/答案正確返回1 else return 0;/答案錯(cuò)誤返回0 以上的兩個(gè)函數(shù)都位于Restaurant_login_service.php的login_service類(lèi)中,所以調(diào)用時(shí)通過(guò)該類(lèi)的對(duì)象即可進(jìn)行調(diào)用。以上即為管理員登陸的代碼實(shí)現(xiàn)過(guò)程和介紹。3.2.3管理層-管理員登入功能圖示登入頁(yè)面圖示見(jiàn)圖3.2,這里選擇登陸模式為“管理員”。圖3.2問(wèn)題驗(yàn)證頁(yè)面見(jiàn)圖3.3,系統(tǒng)顯示的問(wèn)題,需要管理員進(jìn)行回答。圖3.

37、3以上即為管理員登陸過(guò)程的圖示,這里設(shè)計(jì)雙重登入校驗(yàn)是考慮到系統(tǒng)的安全性。3.2.4管理層-管理員操作功能三層模式設(shè)計(jì)首先,對(duì)于管理員來(lái)說(shuō),他具有最高權(quán)限,既能操作數(shù)據(jù)庫(kù)中的數(shù)據(jù),也可以操作XML文件中的數(shù)據(jù),那么底層的數(shù)據(jù)層具有數(shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù),也有XML文件中存儲(chǔ)的數(shù)據(jù)需要管理員操作。其實(shí)這里就是涉及到菜單中菜品信息的更新,還有就是有關(guān)于訂單的處理。那么在視圖層涉及的視圖頁(yè)面也就是菜單更新界面、訂單處理界面、日訂單數(shù)據(jù)查看界面(這里的日訂單數(shù)據(jù)是模擬的數(shù)據(jù),通過(guò)作圖工具表示的條形圖)。對(duì)于業(yè)務(wù)層,即處理層包含的業(yè)務(wù)處理有訂單數(shù)據(jù)處理以及菜品更新的處理頁(yè)面和函數(shù)。設(shè)計(jì)圖見(jiàn)(圖3.2)。圖3

38、.43.2.5管理層-管理員操作功能實(shí)現(xiàn)就本系統(tǒng)來(lái)講,管理員操作主要為訂單查看以及菜品更新,這里也就只這兩項(xiàng)功能的實(shí)現(xiàn)進(jìn)行詳細(xì)介紹。點(diǎn)擊查看訂單,頁(yè)面跳轉(zhuǎn)到Restaurant_check_user_order.php,這個(gè)頁(yè)面會(huì)給出訂單信息,點(diǎn)擊處理即可處理訂單信息。下面給出實(shí)現(xiàn)代碼:$i=0;/調(diào)用get_submit_order_dishes函數(shù)操作XML文件$arr=$check_order_service->get_submit_order_dishes();/獲取當(dāng)天的未處理訂餐信息if(!empty($arr)/判斷當(dāng)天訂餐信息是否為空f(shuō)oreach ($arr as $k

39、ey_id=>$val)/foreach循環(huán)顯示訂餐信息 echo"<div class='record'>"/每一個(gè)訂餐信息使用DIV包圍 foreach ($val as $key=>$val) if(is_string($key) echo"菜名:".$key."-份數(shù)".$val."<br>" else if(is_int($key)if($i=0)echo "地址:"elseif($i=1)echo"價(jià)格:"els

40、eif($i=2)echo"時(shí)間:"elseif($i=3)echo"電話(huà):" echo"$val<br>"$i+; /不為空,即顯示出訂單信息 echo"<a href='Restaurant_check_user_order_process.php?order_id=$key_id'>處理</a>"/處理超鏈接,將訂單處理請(qǐng)求發(fā)送至Restaurant_check_user_order_process.php echo"</div>&qu

41、ot; elseecho"<div class='record'>"echo"暫無(wú)訂餐記錄!"echo"</div>"/為空返回訂餐信息為空訂餐處理實(shí)現(xiàn)代碼如下,Restaurant_check_user_order_process.php中的代碼主要用于接收訂單處理消息,根據(jù)該消息,選取相應(yīng)的函數(shù)處理:$check_order_service=new check_order_sevice();if($_GET'order_id') $order_id=$_GET'ord

42、er_id' $check_order_service->deal_submit_order_dishes($order_id); /調(diào)用deal_submit_order_dishes函數(shù)來(lái)處理訂單 header("location:Restaurant_check_user_order.php");/并跳轉(zhuǎn)回原頁(yè)面繼續(xù)處理get_submit_order_dishes()代碼如下:public function get_submit_order_dishes() date_default_timezone_set("Asia/Shanghai&q

43、uot;); $time=date("Y-n-j");/獲取當(dāng)天的日期 $xml_path="documents_xml/submit_order_dishes.xml" $xmldoc=new DOMDocument(); $xmldoc->load($xml_path);/加載XML文件 $arr=array();/初始化數(shù)組,用于訂單的回饋 $order_dates=$xmldoc->getElementsByTagName("order_time");/獲取日期子節(jié)點(diǎn) for($i=0;$i<$order_d

44、ates->length;$i+) if($order_dates->item($i)->attributes->getNamedItem('time')->nodeValue=$time) $order_ids=$order_dates->item($i)->childNodes;/遍歷日期子節(jié)點(diǎn),返回當(dāng)天日期節(jié)點(diǎn)信息下的子節(jié)點(diǎn) for($j=0;$j<$order_ids->length;$j+)/遍歷子節(jié)點(diǎn)信息 if($order_ids->item($j)->lastChild->nodeValue

45、="on") $order_dishes=$order_ids->item($j)->childNodes; for($n=0;$n<$order_dishes->length-1;$n+) if($order_dishes->item($n)->nodeName="order_name") $arr$order_ids->item($j)->attributes->getNamedItem("id") ->nodeValue$order_dishes->item($n

46、)->attributes-> getNamedItem("name")->nodeValue=$order_dishes-> item($n)->firstChild->nodeValue; else $arr$order_ids->item($j)->attributes->getNamedItem("id")-> nodeValue$n=$order_dishes->item($n)->nodeValue; /那些未處理的訂單才會(huì)寫(xiě)入數(shù)組中,即state節(jié)點(diǎn)為off的子節(jié)點(diǎn) r

47、eturn $arr;/返回?cái)?shù)組,即返回取到的訂單信息以上的兩個(gè)函數(shù)都位于Restaurant_check_user_order_process.php的check_order_sevice類(lèi)中,所以調(diào)用時(shí)通過(guò)該類(lèi)的對(duì)象即可進(jìn)行調(diào)用。點(diǎn)擊修改菜品,進(jìn)入Restaurant_admin_manage_menu.php頁(yè)面,這里有提供添加菜品信息和修改菜品信息的功能選項(xiàng)。當(dāng)點(diǎn)擊添加菜品信息時(shí),進(jìn)入添加菜品信息頁(yè)面,并填寫(xiě)相應(yīng)的菜品信息,提交至Restaurant_admin_operation_process.php中進(jìn)行處理,主要是完整性和合法性的處理,再調(diào)用相應(yīng)的處理函數(shù)對(duì)接收的數(shù)據(jù)進(jìn)行處理。

48、以下是相關(guān)處理代碼:if(!empty($_POST'dishes_name')&&!empty($_POST'dishes_value')&&!empty($_POST'dishes_kind')&&!empty($_FILES'dishes_path''name')/數(shù)據(jù)進(jìn)行完整性校驗(yàn) $dishes_name=$_POST'dishes_name' $dishes_value=$_POST'dishes_value' $dishe

49、s_kind=$_POST'dishes_kind' $file_name=$_FILES'dishes_path''name' $file_path=$_FILES'dishes_path''tmp_name' $path="dishes_image/".$file_name; $res=$admin_opration->add_menu($file_name, $file_path);/圖片文件上傳 if($res)/成功返回true,不成功返回false $sql="ins

50、ert into Dishes(dishes_name,dishes_value,dishes_kind,dishes_path) values('".$dishes_name."',".$dishes_value.",'".$dishes_kind."','".$path."')" if($admin_opration->sql_update_menu($sql)=1)/上傳成功,返回提示 header("location:Restaura

51、nt_admin_menu_add.php?success=1"); else/寫(xiě)數(shù)據(jù)庫(kù)出錯(cuò),提示上傳不成功 header("location:Restaurant_admin_menu_add.php?error=2"); else/寫(xiě)文件出錯(cuò),提示上傳不成功 header("location:Restaurant_admin_menu_add.php?error=2"); else/數(shù)據(jù)不完整,返回錯(cuò)誤信息 header("location:Restaurant_admin_menu_add.php?error=1");這里調(diào)用了兩個(gè)函數(shù),分別為add_menu和sql_update_menu這兩個(gè)函數(shù),前一個(gè)為將菜品的圖片信息寫(xiě)入相應(yīng)的文件,后者則將菜品信息寫(xiě)入數(shù)據(jù)庫(kù)中,這兩個(gè)函數(shù)都位于Restaurant_admin_operation_service.php文件中,都是admin_operation_service類(lèi)中的函數(shù),通過(guò)對(duì)象調(diào)用即可。具體代碼如下:add_menu($file_name,$file_path)函數(shù)代

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論