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

下載本文檔

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

文檔簡(jiǎn)介

網(wǎng)絡(luò)技術(shù)科研與創(chuàng)新能力實(shí)踐 題 目: 網(wǎng)上訂餐系統(tǒng) 學(xué) 院: xxxx學(xué)院 專業(yè)名稱: xxxxxx 班級(jí)學(xué)號(hào): xxxxxx 學(xué)生姓名: xxx 指導(dǎo)教師: xxxxx 2014年12月1日55 / 61摘要隨著網(wǎng)絡(luò)的普及,人們也通過各類網(wǎng)上的系統(tǒng)來方便日常的生活,此系統(tǒng)就是基于B/S模式開發(fā)的網(wǎng)上訂餐系統(tǒng)。訂餐系統(tǒng)為用戶提供注冊(cè)及登入功能;當(dāng)成功注冊(cè)為網(wǎng)站的用戶,用戶即可通過本系統(tǒng)進(jìn)行訂餐,其中包括菜品訂購、查看或修改訂單、提交訂單、查閱過往訂單。同時(shí),訂餐系統(tǒng)為餐飲管理者提供系統(tǒng)登入、用戶所購訂單查看、菜品信息管理。本文將從用戶和餐飲管理者的角度對(duì)本系統(tǒng)進(jìn)行詳細(xì)的介紹。此系統(tǒng)是基于HTML、DIV+CSS、PHP、JavaScript語言開發(fā)的一套訂餐系統(tǒng)。系統(tǒng)實(shí)施包括三個(gè)階段(前期、中期、后期),實(shí)施工作前期包括系統(tǒng)過程圖設(shè)計(jì)、數(shù)據(jù)庫設(shè)計(jì)、MVC開發(fā)模式圖設(shè)計(jì)、XML文檔設(shè)計(jì),實(shí)施工作中期包括系統(tǒng)代碼編寫、系統(tǒng)網(wǎng)頁設(shè)計(jì)、系統(tǒng)功能優(yōu)化等,實(shí)施工作后期主要包括系統(tǒng)的功能測(cè)試。關(guān)鍵字:系統(tǒng)、注冊(cè)、管理、訂購目 錄前言 . 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)功能過程圖. 3 1.3.1網(wǎng)站注冊(cè)、訂餐過程圖. 31.3.2管理員操作管理過程圖. 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ù)庫表格設(shè)計(jì)簡(jiǎn)述. 5 2.2.2數(shù)據(jù)層-數(shù)據(jù)庫表格設(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管理層-管理員登入功能圖示. 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)用戶層功能設(shè)計(jì)與實(shí)現(xiàn). 25 4.1系統(tǒng)用戶層簡(jiǎn)述. 25 4.2網(wǎng)上訂餐系統(tǒng)用戶層功能設(shè)計(jì)與實(shí)現(xiàn). 25 4.2.1用戶層-用戶登入、注冊(cè)功能三層模式設(shè)計(jì). 25 4.2.2用戶層-用戶登入、注冊(cè)功能實(shí)現(xiàn). 254.2.3用戶層-用戶登入、注冊(cè)功能圖示. 30 4.2.4用戶層-用戶操作功能三層模式設(shè)計(jì). 31 4.2.5用戶層-用戶操作功能實(shí)現(xiàn). 34 4.2.6用戶層-用戶操作功能圖示. 45 4.3網(wǎng)上訂餐系統(tǒng)用戶層功能總結(jié). 47第五章 網(wǎng)上訂餐系統(tǒng)項(xiàng)目總結(jié). 47參考文獻(xiàn). 48附錄. 49前言隨著信息和網(wǎng)絡(luò)技術(shù)的發(fā)展和進(jìn)步,高效便捷的系統(tǒng)服務(wù)為越來越多的人們所追求,尤其的基于B/S模式的服務(wù)系統(tǒng),越來越受到廣大用戶們的歡迎。這種模式的好處在于,有更加良好的交互界面、有更加便捷的操作體驗(yàn)、有更加靈活高效的系統(tǒng),使得開發(fā)者可以及時(shí)的更新系統(tǒng)的功能和不斷提升系統(tǒng)的性能,使得用戶有更好的交互體驗(yàn)。正是由于這種背景,開發(fā)了此套基于B/S模式的網(wǎng)上訂餐系統(tǒng)。網(wǎng)上訂餐已成為時(shí)下較為普遍和流行的一種電商模式,尤其是在我們的校園和白領(lǐng)人士上班的地方,這樣的需求較為普遍。不方便外出就餐的人們通過各類的訂餐網(wǎng)站進(jìn)行網(wǎng)上訂餐,客戶提供送餐地址和聯(lián)系電話,賣家則通過系統(tǒng)反饋的信息來給客戶提供相應(yīng)的服務(wù)。本系統(tǒng)也是基于這樣的一種思想,來實(shí)現(xiàn)相應(yīng)的功能。當(dāng)然,就一個(gè)完整的系統(tǒng)來說,我們需要將該系統(tǒng)進(jìn)行劃分,分為用戶層面的和管理者層面。對(duì)于用戶層面,我們需要對(duì)用戶渴求的一些基本功能和系統(tǒng)本身的需求進(jìn)行結(jié)合,來考慮最終的系統(tǒng)用戶層面的功能需求。而對(duì)于管理者層面我們需要更加考慮到安全性和功能性的二者結(jié)合,因?yàn)楣芾碚邔有枰佑|權(quán)限更高的一些操作,如一些重要的數(shù)據(jù)庫表單的CRUD操作以及可能的客戶信息等。故本系統(tǒng)將功能層面的操作分為客戶層面和管理者層面,使得系統(tǒng)更加的完善、友好。當(dāng)然對(duì)于B/S模式,我們需要更多的考慮到的是系統(tǒng)的安全性和健壯性,對(duì)于客戶可能的不合法操作需要進(jìn)行相應(yīng)的出錯(cuò)處理。本系統(tǒng)對(duì)于安全性方面主要是基于合法用戶的在線監(jiān)測(cè),而對(duì)于健壯性方面,系統(tǒng)對(duì)于用戶可能出現(xiàn)的錯(cuò)誤操作都進(jìn)行了相應(yīng)的出錯(cuò)處理,屏蔽了一些可能存在的非法操作,一個(gè)提供了系統(tǒng)的健壯性,另一方面也提高了客戶的交互體驗(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)更加安全??傊珺/S模式會(huì)是今后較為流行的一種開發(fā)模式,各類高體驗(yàn)的系統(tǒng)也會(huì)建立在這種模式上,給予客戶更加方便快捷的體驗(yàn),也減輕了客戶本地系統(tǒng)壓力。今后我們只要點(diǎn)擊瀏覽器,就可以登入各類系統(tǒng)進(jìn)行操作。第一章:網(wǎng)上訂餐系統(tǒng)設(shè)計(jì)需求分析1.1網(wǎng)上訂餐系統(tǒng)的任務(wù)概述網(wǎng)上訂餐系統(tǒng)是基于B/S模式開發(fā)一種用戶訂餐系統(tǒng),本系統(tǒng)需要實(shí)現(xiàn)的功能主要功能有以下的幾個(gè)方面。首先,系統(tǒng)最為基礎(chǔ)的功能是要實(shí)現(xiàn)用戶的注冊(cè)、用戶的系統(tǒng)登入功能,其次,系統(tǒng)需要為用戶提供訂餐服務(wù),其中包括點(diǎn)擊訂餐、購物籃的顯示、購物籃信息的修改、提交訂單等功能;同時(shí)也提供給用戶查詢以往訂餐信息的操作,以及修改密碼的操作。再有,系統(tǒng)需要為管理者或者我們俗稱為餐飲經(jīng)營者提供管理界面,包括訂單接收、菜餐信息的修改等功能。通過對(duì)系統(tǒng)以上功能的整合分析,并結(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)餐,用戶首先需要注冊(cè),用戶可以點(diǎn)擊頁面右上方“注冊(cè)”按鈕進(jìn)入注冊(cè)頁面。第二步:請(qǐng)按指定格式填寫用戶的用戶名、訂餐聯(lián)系手機(jī)號(hào)、電子郵箱等個(gè)人資料,并設(shè)置密碼,以便下次訂餐時(shí)憑借輸入電子郵箱(或手機(jī)號(hào))和密碼快速登錄。首次訂餐用戶需仔細(xì)閱讀用戶協(xié)議,點(diǎn)擊“同意”接受用戶協(xié)議后方可繼續(xù)下一步。第三步:填寫送餐地址請(qǐng)選擇用戶所在城市,并填寫用戶的詳細(xì)地址信息以完成注冊(cè)。用戶輸入的詳細(xì)地址會(huì)保存在用戶的地址簿中方便用戶下次訂餐提交。第四步:瀏覽菜單點(diǎn)餐選擇用戶喜愛的餐點(diǎn),輸入份數(shù),然后選擇“立即訂購”。用戶可以在右側(cè)“我的訂單”中看到用戶的點(diǎn)餐內(nèi)容和金額。第五步:確認(rèn)送餐信息并復(fù)核訂單,系統(tǒng)將分別羅列出用戶的送餐信息以及用戶的訂單,用戶可在此再次復(fù)核用戶的地址信息和訂單。點(diǎn)擊“提交”即可完成用戶的首次訂餐!1.2.2網(wǎng)上訂餐系統(tǒng)功能流程分析分析一:根據(jù)以上對(duì)于本訂餐系統(tǒng)功能流程的描述,可以看到,本系統(tǒng)僅對(duì)注冊(cè)用戶提供訂餐服務(wù),而對(duì)于非注冊(cè)用戶不提供相應(yīng)的服務(wù),那么系統(tǒng)在響應(yīng)相應(yīng)的訂餐動(dòng)作時(shí),需要作出判斷,并向客服反饋!即若用戶在已登入的情況下訂餐,則更新購物籃信息,否則提示尚未登入,無法訂餐。分析二:對(duì)于用戶注冊(cè)時(shí)所提供的手機(jī)號(hào),郵箱賬號(hào)等信息,我們不將其作為登入的ID使用,參考目前多數(shù)網(wǎng)站的做法,我們需要用戶提供唯一標(biāo)示身份的ID,那么為了避免沖突,我們將在注冊(cè)時(shí)進(jìn)行檢索,來防止用戶提供與其他用戶相同的ID號(hào),并提示用戶修改ID,從新注冊(cè)。分析三:本系統(tǒng)提供的用戶協(xié)議也是用戶訂餐的操作事項(xiàng),所以我們將此功能調(diào)整為用戶每次進(jìn)行訂餐時(shí),都需要對(duì)協(xié)議進(jìn)行勾選,否則無法提交訂單。1.3網(wǎng)上訂餐系統(tǒng)功能過程圖1.3.1網(wǎng)站注冊(cè)、訂餐過程圖:(圖1.1)圖1.1以上過程圖簡(jiǎn)單的表述了訂餐和注冊(cè)的一個(gè)過程圖,根據(jù)對(duì)系統(tǒng)功能流程的介紹和分析可以看出,在進(jìn)行注冊(cè)和訂餐時(shí),都需要進(jìn)行完整性和合法性校驗(yàn),通過規(guī)則的校驗(yàn)才能最終提交。1.3.2管理員操作管理過程圖(圖1.2)圖1.2以上過程圖為管理員操作過程圖,反應(yīng)了管理員對(duì)于客戶反饋的訂單信息進(jìn)行相應(yīng)的處理操作過程,以及對(duì)于本餐飲店的一些日常店鋪的管理和維護(hù)工作的操作過程。1.4網(wǎng)上訂餐系統(tǒng)需求總結(jié)根據(jù)以上的分析,我們將網(wǎng)上訂餐系統(tǒng)的需求歸納為以下的幾個(gè)方面:1、 客戶注冊(cè)需求2、 客戶和管理員登入需求3、 客戶訂餐和提交訂單需求4、 管理員處理訂單需求5、 管理員修改菜品信息需求6、 客戶個(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)和用戶進(jìn)行數(shù)據(jù)的交互,用戶需要向系統(tǒng)提交輸入的數(shù)據(jù)信息,系統(tǒng)需要對(duì)用戶的信息進(jìn)行分析、識(shí)別和處理。所以數(shù)據(jù)層的設(shè)計(jì)對(duì)于一套系統(tǒng)來說是不可避免的,而且也是重中之重的。一個(gè)好的底層數(shù)據(jù)的存儲(chǔ)設(shè)計(jì),對(duì)于系統(tǒng)的運(yùn)行速度、執(zhí)行效率、人機(jī)交互等這些方面都有很大的影響。存儲(chǔ)數(shù)據(jù)的方式也無外乎為三種,寫內(nèi)存、寫數(shù)據(jù)庫、寫文件;這三類存儲(chǔ)方式有其各自的優(yōu)缺點(diǎn),對(duì)于寫內(nèi)存型存儲(chǔ)方式,主要用于即時(shí)性的數(shù)據(jù),這類數(shù)據(jù)不要求記錄也不是很重要,但在系統(tǒng)的運(yùn)行中需要不斷的進(jìn)行讀取調(diào)用;而對(duì)于寫文件型存儲(chǔ),這類存儲(chǔ)的信息多為配置信息,但也可根據(jù)系統(tǒng)需求進(jìn)行合理使用,本系統(tǒng)即將用戶購物籃信息和訂單信息寫成XML文件,使得系統(tǒng)更加高效;對(duì)于數(shù)據(jù)庫存儲(chǔ),保存的多為需要進(jìn)行快速檢索和定位的信息,當(dāng)然這些數(shù)據(jù)也是長(zhǎng)期存儲(chǔ)的,并且對(duì)于數(shù)據(jù)間具有關(guān)聯(lián)的數(shù)據(jù)多運(yùn)用數(shù)據(jù)庫進(jìn)行存儲(chǔ),這樣可提高數(shù)據(jù)可維護(hù)性和數(shù)據(jù)的完整性。2.2網(wǎng)上訂餐系統(tǒng)數(shù)據(jù)層2.2.1數(shù)據(jù)層-數(shù)據(jù)庫表格設(shè)計(jì)簡(jiǎn)述我們將數(shù)據(jù)庫表格分為三類表,分別為管理員表,用戶表,菜單表。其中管理員表有兩張,一張維護(hù)著管理員的登入名和密碼,以及郵件信息;另一張維護(hù)著管理員登入時(shí)為進(jìn)一步確定身份而進(jìn)行的問題驗(yàn)證機(jī)制所設(shè)定的問題信息表。而對(duì)于用戶表和菜單表都僅有一張表,分別維護(hù)著用戶的基本信息和菜品對(duì)應(yīng)的基本信息。2.2.2數(shù)據(jù)層-數(shù)據(jù)庫表格設(shè)計(jì)詳述管理員表主要存儲(chǔ)著管理員的信息,管理員登入名和管理員的登入密碼,以及管理員的郵箱地址;還有就是用于管理員登入時(shí)進(jìn)行二次驗(yà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ì)如下:FieldTypeNullKeyDefaultExtraAdmin_nameVarchar(64)YESNULLAdmin_questiontextNONULLAdmin_answertextNONULL以上為admin的兩張表格的設(shè)計(jì),初始的數(shù)據(jù)為:Insert into Admin_infor_data(admin_name,admin_password,admin_email) values(小米,md5(12345),);insert into Admin_question_data(admin_name,admin_question,admin_answer) values(小米,我喜歡的花是?,百合);初始的管理員為小米,密碼為12345,且使用MD5加密存儲(chǔ),提高安全性。并初始化需要驗(yàn)證回答的問題為“我喜歡的花是?”,答案是:“百合”。用戶表和菜單表分別維護(hù)者用戶和菜品的信息,兩張表分別命名為user_infor_data和dishes,以下給出兩張表的設(shè)計(jì):FieldTypeNullKeyDefaultExtraUser_idInt(10)unsignedNOPRINULLAuto_incrementUser_nameVarchar(64)NONULLUser_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_kindVarchar(64)NONULLDishes_pathtextNONULL對(duì)于用戶表,主要存儲(chǔ)著用戶的訂餐電話,用戶的送餐地址,用戶Email,用戶的登入名和密碼,一樣密碼也采用MD5加密后存儲(chǔ),提供數(shù)據(jù)庫的安全性。對(duì)于菜單表,主要存儲(chǔ)菜單的菜品名、菜品的價(jià)格、菜品所屬的菜系、菜品圖片所存儲(chǔ)的路徑。(圖2.1)圖2.1本系統(tǒng)采用的數(shù)據(jù)庫為MYSQL數(shù)據(jù)庫,本類型數(shù)據(jù)庫具有小巧,易維護(hù)等特點(diǎn),多適合于小中型網(wǎng)站的數(shù)據(jù)庫選擇。且該類型的數(shù)據(jù)庫免費(fèi)提供給開發(fā)者使用,對(duì)于學(xué)習(xí)型的開發(fā)者來說是較好的一種學(xué)習(xí)選擇。并且,這種數(shù)據(jù)庫可以支持各種語言的訪問,如Java、PHP等語言對(duì)其都有較好的支持。尤其是PHP對(duì)其有較成熟函數(shù)支持,提供較多操作數(shù)據(jù)庫的函數(shù)。一般,我們將這些函數(shù)封裝成操作數(shù)據(jù)庫的類,后續(xù)會(huì)進(jìn)行詳細(xì)的介紹。2.2.3數(shù)據(jù)層-XML文件設(shè)計(jì)簡(jiǎn)述在系統(tǒng)的數(shù)據(jù)層方面,我們沒有全部采用數(shù)據(jù)庫表形式存儲(chǔ),尤其對(duì)于要經(jīng)常改寫的一些底層數(shù)據(jù),我們將其設(shè)計(jì)成一定格式的XML文件。這里需要引入的一個(gè)技術(shù)即為DOM編程技術(shù),該技術(shù)可以將一定格式的XML文件轉(zhuǎn)化為一棵XML文件樹,文件樹維護(hù)著XML文件中的各個(gè)節(jié)點(diǎn)信息。通過DOM提供一些操作函數(shù)和類內(nèi)置變量可以利用我們方便地操作一棵XML文件樹,達(dá)到以一定的格式讀寫XML文件樹的目的?;赬ML文件的存儲(chǔ)速度快,易于操作的優(yōu)點(diǎn),我們將用戶的購物籃中的信息寫成一個(gè)XML文件以及將用戶提交的訂單也寫成一個(gè)XML文件。2.2.4數(shù)據(jù)層-XML文件設(shè)計(jì)詳述將用戶購物籃信息保存成XML文件,我們需要考慮到每一個(gè)用戶維護(hù)著自身的購物籃信息,而這些購物籃信息又都存儲(chǔ)在同一個(gè)XML文件中,所以如何區(qū)分存儲(chǔ)是設(shè)計(jì)XML文件的主要內(nèi)容。同時(shí)對(duì)于存儲(chǔ)的信息的選擇也非常的關(guān)鍵,這里的設(shè)計(jì)主要是要防止數(shù)據(jù)的冗余存儲(chǔ)。我們將用戶存儲(chǔ)購物籃信息的XML文件命名為:order_dishes.xml文件,其設(shè)計(jì)如下(圖2.2)圖2.2可以看到,此XML文件的根節(jié)點(diǎn)為order_dishes,每個(gè)user_id維護(hù)了一個(gè)ID屬性,用于區(qū)分不同用戶提交的購物籃信息,同時(shí)user_id為根節(jié)點(diǎn)的子樹下維護(hù)著所訂購的菜品的名字和份數(shù)信息。其實(shí)構(gòu)建了四層子樹的文件結(jié)構(gòu)(圖2.3)。圖2.3將用戶提交的訂單信息保存到XML文件中,也是依然需要對(duì)不同用戶提交的信息進(jìn)行區(qū)分,而且,由于系統(tǒng)提供以往訂單查詢的功能,所以對(duì)于提交的訂單,我們需要給每天的訂單加上相應(yīng)的時(shí)間戳,來區(qū)別不同時(shí)間所提交的訂單信息。再有,對(duì)于用戶提交的訂單,我們需要加上相應(yīng)的標(biāo)準(zhǔn)位,來確定本條記錄是否已經(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è)為submit_order,order_time作為其子節(jié)點(diǎn),在其屬性time標(biāo)記上描述著訂單提交的日期,那么這一天提交的所有訂單都會(huì)存儲(chǔ)在這個(gè)節(jié)點(diǎn)下。同上,使用order_id來區(qū)分不同的用戶提交的訂單信息,訂單信息中描述著訂單的菜品、菜品份數(shù)、價(jià)格、送餐地址、聯(lián)系電話、送餐時(shí)間等。其中有個(gè)state的子節(jié)點(diǎn)用于標(biāo)記此份訂單是否已被處理,未被處理顯示“on”,已被處理顯示“off”。同樣這里也維護(hù)著一棵五層模式的XML文件樹(圖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ì)是通過寫內(nèi)存和寫文件結(jié)合的方式進(jìn)行的,一些需要進(jìn)行多次更改的數(shù)據(jù),如用戶購物籃中的數(shù)據(jù)以及用戶多次提交訂單的數(shù)據(jù),我們使用寫文件的方式,即上述的寫XML文件的方式進(jìn)行數(shù)據(jù)的錄入和獲取。而對(duì)于不需要經(jīng)常進(jìn)行更改的數(shù)據(jù)這里使用數(shù)據(jù)庫進(jìn)行存儲(chǔ),即如上述的菜品信息以及管理員、用戶信息。這樣的設(shè)計(jì)可以提高系統(tǒng)的執(zhí)行效率,提高系統(tǒng)的運(yùn)行速度,同時(shí)也貼合系統(tǒng)的需求??傊?,該數(shù)據(jù)層的設(shè)計(jì)達(dá)到了對(duì)于各類數(shù)據(jù)的存儲(chǔ)與提高各類數(shù)據(jù)處理效率的目標(biāo)。第3章 :網(wǎng)上點(diǎn)餐系統(tǒng)管理層功能設(shè)計(jì)與實(shí)現(xiàn)3.1系統(tǒng)管理層簡(jiǎn)述管理層,作為一塊功能層的總稱,在大多數(shù)的系統(tǒng)中都會(huì)有這一功能模塊,其在系統(tǒng)中的主要作用是維護(hù)系統(tǒng)的各類數(shù)據(jù)。通俗的講,管理層也作為系統(tǒng)的一類用戶,也管理著一類數(shù)據(jù),其區(qū)別在于系統(tǒng)所授予數(shù)據(jù)操作的權(quán)限不同,管理層所感興趣的需求與一般用戶的需求也不同,所以其功能上需要作為一個(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)、二次問題驗(yàn)證界面(Restaurant_login_question.php)。而對(duì)于處理層分為數(shù)據(jù)處理(Restaurant_login_process.php)、數(shù)據(jù)服務(wù)(用于處理提交到后臺(tái)的合法數(shù)據(jù))(Restaurant_login_service.php),數(shù)據(jù)處理頁面會(huì)調(diào)用(call)數(shù)據(jù)服務(wù)中的函數(shù),來得到相應(yīng)的功能函數(shù)??傊?,數(shù)據(jù)處理調(diào)用功能函數(shù),根據(jù)函數(shù)返回的結(jié)果來判斷是否為合法登入。(設(shè)計(jì)見圖3.1)圖管理層-管理員登入功能實(shí)現(xiàn)管理員登入功能的實(shí)現(xiàn)主要在于通過管理員提交的數(shù)據(jù)和后臺(tái)的數(shù)據(jù)進(jìn)行校驗(yàn),來達(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),用戶名密碼校驗(yàn),其代碼如下:if(!empty($_POSTloginname)&!empty($_POSTpassword)&!empty($_POSTcheckcode)/查看登錄數(shù)據(jù)的完整性 $login_name=$_POSTloginname; $password=$_POSTpassword; $check_code=$_POSTcheckcode;/接收登入信息(登錄名、密碼、驗(yàn)證碼) else header(location:Restaurant_login.php?error=1);/信息不完整,返回錯(cuò)誤信息。 exit(); if(!empty($_SESSIONcheckline)$check_line=$_SESSIONcheckline;/獲取驗(yàn)證碼if(!empty($_POSTlogin_model)$login_modle=$_POSTlogin_model;/獲取登入模式(一般用戶、管理員)if($check_line=$check_code)/校驗(yàn)驗(yàn)證碼 $res=$login_service-check_password($login_name,$password,$login_modle); if($res)/調(diào)用check_password函數(shù)檢驗(yàn)密碼,正確返回true,錯(cuò)誤返回false if($login_modle=admin) $_SESSIONadmin_name=$login_name;/將登入名寫入session中 $_SESSIONlogin_one=1;/用于標(biāo)記第一層檢驗(yàn)通過 header(location:Restaurant_login_question.php);/驗(yàn)證通過,跳轉(zhuǎn)至第二層 exit(); else header(location:Restaurant_login.php?error=3);/密碼錯(cuò)誤,返回錯(cuò)誤信息 exit();else/驗(yàn)證碼錯(cuò)誤,返回錯(cuò)誤信息header(location:Restaurant_login.php?error=2);exit();登入功能第二層校驗(yàn),管理員問題校驗(yàn),其代碼如下:if(!empty($_GETquestion_check)/提交是數(shù)據(jù)來自問題校驗(yàn)功能模塊 if(!empty($_POSTlogin_answer)&!empty($_POSTcheckcode)/完整性校驗(yàn) $check_code=$_POSTcheckcode; if($_SESSIONcheckline=$check_code)/檢驗(yàn)驗(yàn)證碼 $login_name=$_SESSIONadmin_name; $login_answer=$_POSTlogin_answer;/接收校驗(yàn)數(shù)據(jù) $res=$login_service-check_answer($login_answer, $login_name); if($res)/調(diào)用check_answer函數(shù),正確返回true,錯(cuò)誤返回false $_SESSIONlogin_two=1;/管理員登入成功標(biāo)記,寫入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_question.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ù)庫操作類對(duì)象 if($login_model=admin)/構(gòu)造管理員登陸模式SQL語句 $sql=select admin_password from Admin_infor_data where admin_name=.$login_name.; $arr=$mysql-oper_query($sql);/執(zhí)行返回?cái)?shù)據(jù)庫中的密碼 $mysql-conn_close();/關(guān)閉數(shù)據(jù)庫連接 if($arr00=md5($password)/與用戶提交的密碼進(jìn)行對(duì)比 return 1;/相同返回1 else return 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ù)庫操作類對(duì)象 $sql=select admin_answer from admin_question_data where admin_name=.$login_name.;/構(gòu)造SQL語句 $arr=$mysql-oper_query($sql);/去數(shù)據(jù)庫中的問題 $mysql-conn_close();/關(guān)閉數(shù)據(jù)庫連接 if($login_answer=$arr00) return 1;/答案正確返回1 else return 0;/答案錯(cuò)誤返回0 以上的兩個(gè)函數(shù)都位于Restaurant_login_service.php的login_service類中,所以調(diào)用時(shí)通過該類的對(duì)象即可進(jìn)行調(diào)用。以上即為管理員登陸的代碼實(shí)現(xiàn)過程和介紹。3.2.3管理層-管理員登入功能圖示登入頁面圖示見圖3.2,這里選擇登陸模式為“管理員”。圖3.2問題驗(yàn)證頁面見圖3.3,系統(tǒng)顯示的問題,需要管理員進(jìn)行回答。圖3.3以上即為管理員登陸過程的圖示,這里設(shè)計(jì)雙重登入校驗(yàn)是考慮到系統(tǒng)的安全性。3.2.4管理層-管理員操作功能三層模式設(shè)計(jì)首先,對(duì)于管理員來說,他具有最高權(quán)限,既能操作數(shù)據(jù)庫中的數(shù)據(jù),也可以操作XML文件中的數(shù)據(jù),那么底層的數(shù)據(jù)層具有數(shù)據(jù)庫中存儲(chǔ)的數(shù)據(jù),也有XML文件中存儲(chǔ)的數(shù)據(jù)需要管理員操作。其實(shí)這里就是涉及到菜單中菜品信息的更新,還有就是有關(guān)于訂單的處理。那么在視圖層涉及的視圖頁面也就是菜單更新界面、訂單處理界面、日訂單數(shù)據(jù)查看界面(這里的日訂單數(shù)據(jù)是模擬的數(shù)據(jù),通過作圖工具表示的條形圖)。對(duì)于業(yè)務(wù)層,即處理層包含的業(yè)務(wù)處理有訂單數(shù)據(jù)處理以及菜品更新的處理頁面和函數(shù)。設(shè)計(jì)圖見(圖3.2)。圖管理層-管理員操作功能實(shí)現(xiàn)就本系統(tǒng)來講,管理員操作主要為訂單查看以及菜品更新,這里也就只這兩項(xiàng)功能的實(shí)現(xiàn)進(jìn)行詳細(xì)介紹。點(diǎn)擊查看訂單,頁面跳轉(zhuǎn)到Restaurant_check_user_order.php,這個(gè)頁面會(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)天訂餐信息是否為空foreach ($arr as $key_id=$val)/foreach循環(huán)顯示訂餐信息 echo;/每一個(gè)訂餐信息使用DIV包圍 foreach ($val as $key=$val) if(is_string($key) echo菜名:.$key.-份數(shù).$val.; else if(is_int($key)if($i=0)echo 地址:;elseif($i=1)echo價(jià)格:;elseif($i=2)echo時(shí)間:;elseif($i=3)echo電話:; echo$val;$i+; /不為空,即顯示出訂單信息 echo處理;/處理超鏈接,將訂單處理請(qǐng)求發(fā)送至Restaurant_check_user_order_process.php echo; elseecho;echo暫無訂餐記錄!;echo;/為空返回訂餐信息為空訂餐處理實(shí)現(xiàn)代碼如下,Restaurant_check_user_order_process.php中的代碼主要用于接收訂單處理消息,根據(jù)該消息,選取相應(yīng)的函數(shù)處理:$check_order_service=new check_order_sevice();if($_GETorder_id) $order_id=$_GETorder_id; $check_order_service-deal_submit_order_dishes($order_id); /調(diào)用deal_submit_order_dishes函數(shù)來處理訂單 header(location:Restaurant_check_user_order.php);/并跳轉(zhuǎn)回原頁面繼續(xù)處理get_submit_order_dishes()代碼如下:public function get_submit_order_dishes() date_default_timezone_set(Asia/Shanghai); $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;$ilength;$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;$jlength;$j+)/遍歷子節(jié)點(diǎn)信息 if($order_ids-item($j)-lastChild-nodeValue=on) $order_dishes=$order_ids-item($j)-childNodes; for($n=0;$nlength-1;$n+) if($order_dishes-item($n)-nodeName=order_name) $arr$order_ids-item($j)-attributes-getNamedItem(id) -nodeValue$order_dishes-item($n)-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ì)寫入數(shù)組中,即state節(jié)點(diǎn)為off的子節(jié)點(diǎn) return $arr;/返回?cái)?shù)組,即返回取到的訂單信息以上的兩個(gè)函數(shù)都位于Restaurant_check_user_order_process.php的check_order_sevice類中,所以調(diào)用時(shí)通過該類的對(duì)象即可進(jìn)行調(diào)用。點(diǎn)擊修改菜品,進(jìn)入Restaurant_admin_manage_menu.php頁面,這里有提供添加菜品信息和修改菜品信息的功能選項(xiàng)。當(dāng)點(diǎn)擊添加菜品信息時(shí),進(jìn)入添加菜品信息頁面,并填寫相應(yīng)的菜品信息,提交至Restaurant_admin_operation_process.php中進(jìn)行處理,主要是完整性和合法性的處理,再調(diào)用相應(yīng)的處理函數(shù)對(duì)接收的數(shù)據(jù)進(jìn)行處理。以下是相關(guān)處理代碼:if(!empty($_POSTdishes_name)&!empty($_POSTdishes_value)&!empty($_POSTdishes_kind)&!empty($_FILESdishes_pathname)/數(shù)據(jù)進(jìn)行完整性校驗(yàn) $dishes_name=$_POSTdishes_name; $dishes_value=$_POSTdishes_value; $dishes_kind=$_POSTdishes_kind; $file_name=$_FILESdishes_pathname; $file_path=$_FILESdishes_pathtmp_name; $path=dishes_image/.$file_name; $res=$admin_opration-add_menu($file_name, $file_path);/圖片文件上傳 if($res)/成功返回true,不成功返回false $sql=insert 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:Restaurant_admin_menu_add.php?success=1); else/寫數(shù)據(jù)庫出錯(cuò),提示上傳不成功 header(location:Restaurant_admin_menu_add.php?error=2); else/寫文件出錯(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è)為將菜品的圖片信息寫入相應(yīng)的文件,后者則將菜品信息寫入數(shù)據(jù)庫中,這兩個(gè)函數(shù)都位于Restaurant_admin_operati

溫馨提示

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