




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、網(wǎng)絡技術科研與創(chuàng)新能力實踐 題 目: 網(wǎng)上訂餐系統(tǒng) 學 院: xxxx學院 專業(yè)名稱: xxxxxx 班級學號: xxxxxx 學生姓名: xxx 指導教師: xxxxx 2014年12月1日摘要隨著網(wǎng)絡的普及,人們也通過各類網(wǎng)上的系統(tǒng)來方便日常的生活,此系統(tǒng)就是基于B/S模式開發(fā)的網(wǎng)上訂餐系統(tǒng)。訂餐系統(tǒng)為用戶提供注冊及登入功能;當成功注冊為網(wǎng)站的用戶,用戶即可通過本系統(tǒng)進行訂餐,其中包括菜品訂購、查看或修改訂單、提交訂單、查閱過往訂單。同時,訂餐系統(tǒng)為餐飲管理者提供系統(tǒng)登入、用戶所購訂單查看、菜品信息管理。本文將從用戶和餐飲管理者的角度對本系統(tǒng)進行詳細的介紹。此系統(tǒng)是基于HTML、DIV+C
2、SS、PHP、JavaScript語言開發(fā)的一套訂餐系統(tǒng)。系統(tǒng)實施包括三個階段(前期、中期、后期),實施工作前期包括系統(tǒng)過程圖設計、數(shù)據(jù)庫設計、MVC開發(fā)模式圖設計、XML文檔設計,實施工作中期包括系統(tǒng)代碼編寫、系統(tǒng)網(wǎng)頁設計、系統(tǒng)功能優(yōu)化等,實施工作后期主要包括系統(tǒng)的功能測試。關鍵字:系統(tǒng)、注冊、管理、訂購目 錄前言 . 1第1章 網(wǎng)上訂餐系統(tǒng)需求分析. 2 1.1網(wǎng)上訂餐系統(tǒng)任務概述. 2 1.2網(wǎng)上訂餐系統(tǒng)的設計要求. 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)站注冊、訂餐過程圖. 31.3.2管理員操作
3、管理過程圖. 4 1.4網(wǎng)上訂餐系統(tǒng)需求總結. 5第2章 網(wǎng)上訂餐系統(tǒng)數(shù)據(jù)層設計介紹. 5 2.1系統(tǒng)數(shù)據(jù)層簡述. 5 2.2網(wǎng)上訂餐系統(tǒng)數(shù)據(jù)層. 5 2.2.1數(shù)據(jù)層-數(shù)據(jù)庫表格設計簡述. 5 2.2.2數(shù)據(jù)層-數(shù)據(jù)庫表格設計詳述. 52.2.3數(shù)據(jù)層-XML文件設計簡述. 8 2.2.4數(shù)據(jù)層-XML文件設計詳述. 8 2.3網(wǎng)上訂餐系統(tǒng)數(shù)據(jù)層總結. 9 第三章 網(wǎng)上點餐系統(tǒng)管理層功能設計與實現(xiàn). 11 3.1系統(tǒng)管理層簡述. 11 3.2網(wǎng)上訂餐系統(tǒng)管理層功能設計與實現(xiàn). 11 3.2.1管理層-管理員登入功能三層模式設計. 113.2.2管理層-管理員登入功能實現(xiàn). 12 3.2.3管
4、理層-管理員登入功能圖示. 15 3.2.4管理層-管理員操作功能三層模式設計. 163.2.5管理層-管理員操作功能實現(xiàn). 173.2.6管理層-管理員操作功能圖示. 22 3.3網(wǎng)上訂餐系統(tǒng)管理層功能總結. 25第4章 網(wǎng)上訂餐系統(tǒng)用戶層功能設計與實現(xiàn). 25 4.1系統(tǒng)用戶層簡述. 25 4.2網(wǎng)上訂餐系統(tǒng)用戶層功能設計與實現(xiàn). 25 4.2.1用戶層-用戶登入、注冊功能三層模式設計. 25 4.2.2用戶層-用戶登入、注冊功能實現(xiàn). 254.2.3用戶層-用戶登入、注冊功能圖示. 30 4.2.4用戶層-用戶操作功能三層模式設計. 31 4.2.5用戶層-用戶操作功能實現(xiàn). 34 4.
5、2.6用戶層-用戶操作功能圖示. 45 4.3網(wǎng)上訂餐系統(tǒng)用戶層功能總結. 47第五章 網(wǎng)上訂餐系統(tǒng)項目總結. 47參考文獻. 48附錄. 49前言隨著信息和網(wǎng)絡技術的發(fā)展和進步,高效便捷的系統(tǒng)服務為越來越多的人們所追求,尤其的基于B/S模式的服務系統(tǒng),越來越受到廣大用戶們的歡迎。這種模式的好處在于,有更加良好的交互界面、有更加便捷的操作體驗、有更加靈活高效的系統(tǒng),使得開發(fā)者可以及時的更新系統(tǒng)的功能和不斷提升系統(tǒng)的性能,使得用戶有更好的交互體驗。正是由于這種背景,開發(fā)了此套基于B/S模式的網(wǎng)上訂餐系統(tǒng)。網(wǎng)上訂餐已成為時下較為普遍和流行的一種電商模式,尤其是在我們的校園和白領人士上班的地方,這樣
6、的需求較為普遍。不方便外出就餐的人們通過各類的訂餐網(wǎng)站進行網(wǎng)上訂餐,客戶提供送餐地址和聯(lián)系電話,賣家則通過系統(tǒng)反饋的信息來給客戶提供相應的服務。本系統(tǒng)也是基于這樣的一種思想,來實現(xiàn)相應的功能。當然,就一個完整的系統(tǒng)來說,我們需要將該系統(tǒng)進行劃分,分為用戶層面的和管理者層面。對于用戶層面,我們需要對用戶渴求的一些基本功能和系統(tǒng)本身的需求進行結合,來考慮最終的系統(tǒng)用戶層面的功能需求。而對于管理者層面我們需要更加考慮到安全性和功能性的二者結合,因為管理者層需要接觸權限更高的一些操作,如一些重要的數(shù)據(jù)庫表單的CRUD操作以及可能的客戶信息等。故本系統(tǒng)將功能層面的操作分為客戶層面和管理者層面,使得系統(tǒng)更
7、加的完善、友好。當然對于B/S模式,我們需要更多的考慮到的是系統(tǒng)的安全性和健壯性,對于客戶可能的不合法操作需要進行相應的出錯處理。本系統(tǒng)對于安全性方面主要是基于合法用戶的在線監(jiān)測,而對于健壯性方面,系統(tǒng)對于用戶可能出現(xiàn)的錯誤操作都進行了相應的出錯處理,屏蔽了一些可能存在的非法操作,一個提供了系統(tǒng)的健壯性,另一方面也提高了客戶的交互體驗。當然,對于成熟的B/S模式系統(tǒng),有更加完善的系統(tǒng)級的安全保護和各種錯誤處理機制,所以,隨著今后各種B/S模式系統(tǒng)的推出,會有更多的系統(tǒng)安全解決方案,使得B/S模式系統(tǒng)更加安全??傊?,B/S模式會是今后較為流行的一種開發(fā)模式,各類高體驗的系統(tǒng)也會建立在這種模式上,
8、給予客戶更加方便快捷的體驗,也減輕了客戶本地系統(tǒng)壓力。今后我們只要點擊瀏覽器,就可以登入各類系統(tǒng)進行操作。1第一章:網(wǎng)上訂餐系統(tǒng)設計需求分析1.1網(wǎng)上訂餐系統(tǒng)的任務概述網(wǎng)上訂餐系統(tǒng)是基于B/S模式開發(fā)一種用戶訂餐系統(tǒng),本系統(tǒng)需要實現(xiàn)的功能主要功能有以下的幾個方面。首先,系統(tǒng)最為基礎的功能是要實現(xiàn)用戶的注冊、用戶的系統(tǒng)登入功能,其次,系統(tǒng)需要為用戶提供訂餐服務,其中包括點擊訂餐、購物籃的顯示、購物籃信息的修改、提交訂單等功能;同時也提供給用戶查詢以往訂餐信息的操作,以及修改密碼的操作。再有,系統(tǒng)需要為管理者或者我們俗稱為餐飲經(jīng)營者提供管理界面,包括訂單接收、菜餐信息的修改等功能。通過對系統(tǒng)以上功
9、能的整合分析,并結合在代碼實施階段的功能調(diào)整,搭建起一個完整的網(wǎng)上訂餐系統(tǒng)。1.2網(wǎng)上訂餐系統(tǒng)的設計要求1.2.1網(wǎng)上訂餐系統(tǒng)功能流程第一步:進入訂餐網(wǎng)站,如需點餐,用戶首先需要注冊,用戶可以點擊頁面右上方“注冊”按鈕進入注冊頁面。第二步:請按指定格式填寫用戶的用戶名、訂餐聯(lián)系手機號、電子郵箱等個人資料,并設置密碼,以便下次訂餐時憑借輸入電子郵箱(或手機號)和密碼快速登錄。首次訂餐用戶需仔細閱讀用戶協(xié)議,點擊“同意”接受用戶協(xié)議后方可繼續(xù)下一步。第三步:填寫送餐地址請選擇用戶所在城市,并填寫用戶的詳細地址信息以完成注冊。用戶輸入的詳細地址會保存在用戶的地址簿中方便用戶下次訂餐提交。第四步:瀏覽
10、菜單點餐選擇用戶喜愛的餐點,輸入份數(shù),然后選擇“立即訂購”。用戶可以在右側“我的訂單”中看到用戶的點餐內(nèi)容和金額。第五步:確認送餐信息并復核訂單,系統(tǒng)將分別羅列出用戶的送餐信息以及用戶的訂單,用戶可在此再次復核用戶的地址信息和訂單。點擊“提交”即可完成用戶的首次訂餐!1.2.2網(wǎng)上訂餐系統(tǒng)功能流程分析分析一:根據(jù)以上對于本訂餐系統(tǒng)功能流程的描述,可以看到,本系統(tǒng)僅對注冊用戶提供訂餐服務,而對于非注冊用戶不提供相應的服務,那么系統(tǒng)在響應相應的訂餐動作時,需要作出判斷,并向客服反饋!即若用戶在已登入的情況下訂餐,則更新購物籃信息,否則提示尚未登入,無法訂餐。分析二:對于用戶注冊時所提供的手機號,郵
11、箱賬號等信息,我們不將其作為登入的ID使用,參考目前多數(shù)網(wǎng)站的做法,我們需要用戶提供唯一標示身份的ID,那么為了避免沖突,我們將在注冊時進行檢索,來防止用戶提供與其他用戶相同的ID號,并提示用戶修改ID,從新注冊。分析三:本系統(tǒng)提供的用戶協(xié)議也是用戶訂餐的操作事項,所以我們將此功能調(diào)整為用戶每次進行訂餐時,都需要對協(xié)議進行勾選,否則無法提交訂單。1.3網(wǎng)上訂餐系統(tǒng)功能過程圖1.3.1網(wǎng)站注冊、訂餐過程圖:(圖1.1)圖1.1以上過程圖簡單的表述了訂餐和注冊的一個過程圖,根據(jù)對系統(tǒng)功能流程的介紹和分析可以看出,在進行注冊和訂餐時,都需要進行完整性和合法性校驗,通過規(guī)則的校驗才能最終提交。1.3.
12、2管理員操作管理過程圖(圖1.2)圖1.2以上過程圖為管理員操作過程圖,反應了管理員對于客戶反饋的訂單信息進行相應的處理操作過程,以及對于本餐飲店的一些日常店鋪的管理和維護工作的操作過程。1.4網(wǎng)上訂餐系統(tǒng)需求總結根據(jù)以上的分析,我們將網(wǎng)上訂餐系統(tǒng)的需求歸納為以下的幾個方面:1、 客戶注冊需求2、 客戶和管理員登入需求3、 客戶訂餐和提交訂單需求4、 管理員處理訂單需求5、 管理員修改菜品信息需求6、 客戶個人信息修改需求以上為該系統(tǒng)所總結出的六大功能需求,我們將在項目的實施階段一一對其進行功能實現(xiàn)和完善。第2章 :網(wǎng)上訂餐系統(tǒng)數(shù)據(jù)層設計介紹2.1系統(tǒng)數(shù)據(jù)層簡述作為一套訂餐系統(tǒng),避免不了系統(tǒng)和
13、用戶進行數(shù)據(jù)的交互,用戶需要向系統(tǒng)提交輸入的數(shù)據(jù)信息,系統(tǒng)需要對用戶的信息進行分析、識別和處理。所以數(shù)據(jù)層的設計對于一套系統(tǒng)來說是不可避免的,而且也是重中之重的。一個好的底層數(shù)據(jù)的存儲設計,對于系統(tǒng)的運行速度、執(zhí)行效率、人機交互等這些方面都有很大的影響。存儲數(shù)據(jù)的方式也無外乎為三種,寫內(nèi)存、寫數(shù)據(jù)庫、寫文件;這三類存儲方式有其各自的優(yōu)缺點,對于寫內(nèi)存型存儲方式,主要用于即時性的數(shù)據(jù),這類數(shù)據(jù)不要求記錄也不是很重要,但在系統(tǒng)的運行中需要不斷的進行讀取調(diào)用;而對于寫文件型存儲,這類存儲的信息多為配置信息,但也可根據(jù)系統(tǒng)需求進行合理使用,本系統(tǒng)即將用戶購物籃信息和訂單信息寫成XML文件,使得系統(tǒng)更加
14、高效;對于數(shù)據(jù)庫存儲,保存的多為需要進行快速檢索和定位的信息,當然這些數(shù)據(jù)也是長期存儲的,并且對于數(shù)據(jù)間具有關聯(lián)的數(shù)據(jù)多運用數(shù)據(jù)庫進行存儲,這樣可提高數(shù)據(jù)可維護性和數(shù)據(jù)的完整性。2.2網(wǎng)上訂餐系統(tǒng)數(shù)據(jù)層2.2.1數(shù)據(jù)層-數(shù)據(jù)庫表格設計簡述我們將數(shù)據(jù)庫表格分為三類表,分別為管理員表,用戶表,菜單表。其中管理員表有兩張,一張維護著管理員的登入名和密碼,以及郵件信息;另一張維護著管理員登入時為進一步確定身份而進行的問題驗證機制所設定的問題信息表。而對于用戶表和菜單表都僅有一張表,分別維護著用戶的基本信息和菜品對應的基本信息。2.2.2數(shù)據(jù)層-數(shù)據(jù)庫表格設計詳述管理員表主要存儲著管理員的信息,管理員登
15、入名和管理員的登入密碼,以及管理員的郵箱地址;還有就是用于管理員登入時進行二次驗證的問題。兩張表的名字分別為admin_infor_data和admin_question_data。表admin_infor_data設計如下:FieldTypeNullKeyDefaultExtraAdmin_idInt(10)unsignedNOPRINULLAuto_incrementAdmin_nameVarchar(64)NONULLAdmin_passwordVarchar(512)NONULLAdmin_emailVarchar()NONULL表admin_question_data設計如下:Fie
16、ldTypeNullKeyDefaultExtraAdmin_nameVarchar(64)YESNULLAdmin_questiontextNONULLAdmin_answertextNONULL以上為admin的兩張表格的設計,初始的數(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加密存儲,提高安全性。并初始化需要驗證回答的問題為“我喜歡的花是?”,答案是:“百合”。用戶表和菜單表分別維護者用戶和菜品的信息,兩張表分別命名為user_infor_data和dishes,以下給出兩張表的設計:FieldTypeNullKeyDefaultExtraUser_idInt(10)unsignedNOPRINULLAuto_incrementUser_nameVarchar(64)N
18、ONULLUser_passwordVarchar(512)NONULLUser_telephoneVarchar(32)NONULLUser_emailVarchar(128)NONULLUser_addresstextNONULL表user_infor_data設計如下:表dishes設計如下:FieldTypeNullKeyDefaultExtraDishes_idInt(10)unsignedNOPRINULLAuto_incrementDishes_nameVarchar(64)NONULLDishes_valueInt(10)unsignedNONULLDishes_kindVar
19、char(64)NONULLDishes_pathtextNONULL對于用戶表,主要存儲著用戶的訂餐電話,用戶的送餐地址,用戶Email,用戶的登入名和密碼,一樣密碼也采用MD5加密后存儲,提供數(shù)據(jù)庫的安全性。對于菜單表,主要存儲菜單的菜品名、菜品的價格、菜品所屬的菜系、菜品圖片所存儲的路徑。(圖2.1)圖2.1本系統(tǒng)采用的數(shù)據(jù)庫為MYSQL數(shù)據(jù)庫,本類型數(shù)據(jù)庫具有小巧,易維護等特點,多適合于小中型網(wǎng)站的數(shù)據(jù)庫選擇。且該類型的數(shù)據(jù)庫免費提供給開發(fā)者使用,對于學習型的開發(fā)者來說是較好的一種學習選擇。并且,這種數(shù)據(jù)庫可以支持各種語言的訪問,如Java、PHP等語言對其都有較好的支持。尤其是PHP
20、對其有較成熟函數(shù)支持,提供較多操作數(shù)據(jù)庫的函數(shù)。一般,我們將這些函數(shù)封裝成操作數(shù)據(jù)庫的類,后續(xù)會進行詳細的介紹。2.2.3數(shù)據(jù)層-XML文件設計簡述在系統(tǒng)的數(shù)據(jù)層方面,我們沒有全部采用數(shù)據(jù)庫表形式存儲,尤其對于要經(jīng)常改寫的一些底層數(shù)據(jù),我們將其設計成一定格式的XML文件。這里需要引入的一個技術即為DOM編程技術,該技術可以將一定格式的XML文件轉化為一棵XML文件樹,文件樹維護著XML文件中的各個節(jié)點信息。通過DOM提供一些操作函數(shù)和類內(nèi)置變量可以利用我們方便地操作一棵XML文件樹,達到以一定的格式讀寫XML文件樹的目的?;赬ML文件的存儲速度快,易于操作的優(yōu)點,我們將用戶的購物籃中的信息寫
21、成一個XML文件以及將用戶提交的訂單也寫成一個XML文件。2.2.4數(shù)據(jù)層-XML文件設計詳述將用戶購物籃信息保存成XML文件,我們需要考慮到每一個用戶維護著自身的購物籃信息,而這些購物籃信息又都存儲在同一個XML文件中,所以如何區(qū)分存儲是設計XML文件的主要內(nèi)容。同時對于存儲的信息的選擇也非常的關鍵,這里的設計主要是要防止數(shù)據(jù)的冗余存儲。我們將用戶存儲購物籃信息的XML文件命名為:order_dishes.xml文件,其設計如下(圖2.2)圖2.2可以看到,此XML文件的根節(jié)點為order_dishes,每個user_id維護了一個ID屬性,用于區(qū)分不同用戶提交的購物籃信息,同時user_i
22、d為根節(jié)點的子樹下維護著所訂購的菜品的名字和份數(shù)信息。其實構建了四層子樹的文件結構(圖2.3)。圖2.3將用戶提交的訂單信息保存到XML文件中,也是依然需要對不同用戶提交的信息進行區(qū)分,而且,由于系統(tǒng)提供以往訂單查詢的功能,所以對于提交的訂單,我們需要給每天的訂單加上相應的時間戳,來區(qū)別不同時間所提交的訂單信息。再有,對于用戶提交的訂單,我們需要加上相應的標準位,來確定本條記錄是否已經(jīng)處理,及餐廳是否已經(jīng)接受訂單,若已接受及不再給餐廳進行處理。我們將接受訂單信息的XML文件命名為:submit_order_dishes.xml文件,其設計的結構如下(圖2.4)圖2.4這里將XML的根節(jié)點設為s
23、ubmit_order,order_time作為其子節(jié)點,在其屬性time標記上描述著訂單提交的日期,那么這一天提交的所有訂單都會存儲在這個節(jié)點下。同上,使用order_id來區(qū)分不同的用戶提交的訂單信息,訂單信息中描述著訂單的菜品、菜品份數(shù)、價格、送餐地址、聯(lián)系電話、送餐時間等。其中有個state的子節(jié)點用于標記此份訂單是否已被處理,未被處理顯示“on”,已被處理顯示“off”。同樣這里也維護著一棵五層模式的XML文件樹(圖2.5)圖2.52.3網(wǎng)上訂餐系統(tǒng)數(shù)據(jù)層設計總結以上介紹了網(wǎng)上訂餐系統(tǒng)的數(shù)據(jù)層設計,數(shù)據(jù)層的設計是通過寫內(nèi)存和寫文件結合的方式進行的,一些需要進行多次更改的數(shù)據(jù),如用戶購
24、物籃中的數(shù)據(jù)以及用戶多次提交訂單的數(shù)據(jù),我們使用寫文件的方式,即上述的寫XML文件的方式進行數(shù)據(jù)的錄入和獲取。而對于不需要經(jīng)常進行更改的數(shù)據(jù)這里使用數(shù)據(jù)庫進行存儲,即如上述的菜品信息以及管理員、用戶信息。這樣的設計可以提高系統(tǒng)的執(zhí)行效率,提高系統(tǒng)的運行速度,同時也貼合系統(tǒng)的需求。總之,該數(shù)據(jù)層的設計達到了對于各類數(shù)據(jù)的存儲與提高各類數(shù)據(jù)處理效率的目標。第3章 :網(wǎng)上點餐系統(tǒng)管理層功能設計與實現(xiàn)3.1系統(tǒng)管理層簡述管理層,作為一塊功能層的總稱,在大多數(shù)的系統(tǒng)中都會有這一功能模塊,其在系統(tǒng)中的主要作用是維護系統(tǒng)的各類數(shù)據(jù)。通俗的講,管理層也作為系統(tǒng)的一類用戶,也管理著一類數(shù)據(jù),其區(qū)別在于系統(tǒng)所授予
25、數(shù)據(jù)操作的權限不同,管理層所感興趣的需求與一般用戶的需求也不同,所以其功能上需要作為一個獨立的模塊進行分析。3.2網(wǎng)上訂餐系統(tǒng)管理層功能設計與實現(xiàn)3.2.1管理層-管理員登入功能三層模式設計管理員登入根據(jù)三層模式的特點,將功能模塊分為視圖層、處理層、數(shù)據(jù)層,在此功能上,視圖層上主要是用于接受管理員的登入請求,視圖層的界面分為登入界面(Restaurant_login.php)、二次問題驗證界面(Restaurant_login_question.php)。而對于處理層分為數(shù)據(jù)處理(Restaurant_login_process.php)、數(shù)據(jù)服務(用于處理提交到后臺的合法數(shù)據(jù))(Restau
26、rant_login_service.php),數(shù)據(jù)處理頁面會調(diào)用(call)數(shù)據(jù)服務中的函數(shù),來得到相應的功能函數(shù)??傊?,數(shù)據(jù)處理調(diào)用功能函數(shù),根據(jù)函數(shù)返回的結果來判斷是否為合法登入。(設計見圖3.1)圖3.13.2.2管理層-管理員登入功能實現(xiàn)管理員登入功能的實現(xiàn)主要在于通過管理員提交的數(shù)據(jù)和后臺的數(shù)據(jù)進行校驗,來達到檢驗管理員身份是否合法的目的。管理員登入數(shù)據(jù)處理代碼,即位于Restaurant_login_process.php中的代碼,這里對數(shù)據(jù)進行初步的校驗和分析,主要對數(shù)據(jù)完整性和合法性進行檢驗。登入功能第一層校驗,用戶名密碼校驗,其代碼如下: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'/接收登入信息(登錄名、密碼、驗證碼) else header("location:Restaurant_login.php?error=1
28、");/信息不完整,返回錯誤信息。 exit(); if(!empty($_SESSION'checkline')$check_line=$_SESSION'checkline'/獲取驗證碼if(!empty($_POST'login_model')$login_modle=$_POST'login_model'/獲取登入模式(一般用戶、管理員)if($check_line=$check_code)/校驗驗證碼 $res=$login_service->check_password($login_name,$pas
29、sword,$login_modle); if($res)/調(diào)用check_password函數(shù)檢驗密碼,正確返回true,錯誤返回false if($login_modle="admin") $_SESSION'admin_name'=$login_name;/將登入名寫入session中 $_SESSION'login_one'=1;/用于標記第一層檢驗通過 header("location:Restaurant_login_question.php");/驗證通過,跳轉至第二層 exit(); else header
30、("location:Restaurant_login.php?error=3");/密碼錯誤,返回錯誤信息 exit();else/驗證碼錯誤,返回錯誤信息header("location:Restaurant_login.php?error=2");exit();登入功能第二層校驗,管理員問題校驗,其代碼如下:if(!empty($_GET'question_check')/提交是數(shù)據(jù)來自問題校驗功能模塊 if(!empty($_POST'login_answer')&&!empty($_POST
31、9;checkcode')/完整性校驗 $check_code=$_POST'checkcode' if($_SESSION'checkline'=$check_code)/檢驗驗證碼 $login_name=$_SESSION'admin_name' $login_answer=$_POST'login_answer'/接收校驗數(shù)據(jù) $res=$login_service->check_answer($login_answer, $login_name); if($res)/調(diào)用check_answer函數(shù),正確返
32、回true,錯誤返回false $_SESSION'login_two'=1;/管理員登入成功標記,寫入session中 header("location:Restaurant_admin_page.php"); exit();/登入成功,跳轉至管理員界面 else/答案錯誤,返回錯誤信息 header("location:Restaurant_login_question.php?error=3"); exit();/ else /驗證碼錯誤,返回提示信息 header("location:Restaurant_login_q
33、uestion.php?error=2"); exit(); else header("location:Restaurant_login_question.php?error=1"); exit(); /驗證信息不完整,返回錯誤信息check_password($login_name,$password,$login_modle)函數(shù)代碼如下:public function check_password($login_name,$password,$login_model) $mysql=new Mysqli_stmt_h();/新建一個數(shù)據(jù)庫操作類對象 if(
34、$login_model="admin")/構造管理員登陸模式SQL語句 $sql="select admin_password from Admin_infor_data where admin_name='".$login_name."'" $arr=$mysql->oper_query($sql);/執(zhí)行返回數(shù)據(jù)庫中的密碼 $mysql->conn_close();/關閉數(shù)據(jù)庫連接 if($arr00=md5($password)/與用戶提交的密碼進行對比 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();/新建一個數(shù)據(jù)庫操作類對象 $sql="select admin_answer from admin_question_data where admin_name='".$login_name."'"/構造SQL語句 $arr=$mysql->op
36、er_query($sql);/去數(shù)據(jù)庫中的問題 $mysql->conn_close();/關閉數(shù)據(jù)庫連接 if($login_answer=$arr00) return 1;/答案正確返回1 else return 0;/答案錯誤返回0 以上的兩個函數(shù)都位于Restaurant_login_service.php的login_service類中,所以調(diào)用時通過該類的對象即可進行調(diào)用。以上即為管理員登陸的代碼實現(xiàn)過程和介紹。3.2.3管理層-管理員登入功能圖示登入頁面圖示見圖3.2,這里選擇登陸模式為“管理員”。圖3.2問題驗證頁面見圖3.3,系統(tǒng)顯示的問題,需要管理員進行回答。圖3.
37、3以上即為管理員登陸過程的圖示,這里設計雙重登入校驗是考慮到系統(tǒng)的安全性。3.2.4管理層-管理員操作功能三層模式設計首先,對于管理員來說,他具有最高權限,既能操作數(shù)據(jù)庫中的數(shù)據(jù),也可以操作XML文件中的數(shù)據(jù),那么底層的數(shù)據(jù)層具有數(shù)據(jù)庫中存儲的數(shù)據(jù),也有XML文件中存儲的數(shù)據(jù)需要管理員操作。其實這里就是涉及到菜單中菜品信息的更新,還有就是有關于訂單的處理。那么在視圖層涉及的視圖頁面也就是菜單更新界面、訂單處理界面、日訂單數(shù)據(jù)查看界面(這里的日訂單數(shù)據(jù)是模擬的數(shù)據(jù),通過作圖工具表示的條形圖)。對于業(yè)務層,即處理層包含的業(yè)務處理有訂單數(shù)據(jù)處理以及菜品更新的處理頁面和函數(shù)。設計圖見(圖3.2)。圖3
38、.43.2.5管理層-管理員操作功能實現(xiàn)就本系統(tǒng)來講,管理員操作主要為訂單查看以及菜品更新,這里也就只這兩項功能的實現(xiàn)進行詳細介紹。點擊查看訂單,頁面跳轉到Restaurant_check_user_order.php,這個頁面會給出訂單信息,點擊處理即可處理訂單信息。下面給出實現(xiàn)代碼:$i=0;/調(diào)用get_submit_order_dishes函數(shù)操作XML文件$arr=$check_order_service->get_submit_order_dishes();/獲取當天的未處理訂餐信息if(!empty($arr)/判斷當天訂餐信息是否為空foreach ($arr as $k
39、ey_id=>$val)/foreach循環(huán)顯示訂餐信息 echo"<div class='record'>"/每一個訂餐信息使用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"價格:"els
40、eif($i=2)echo"時間:"elseif($i=3)echo"電話:" echo"$val<br>"$i+; /不為空,即顯示出訂單信息 echo"<a href='Restaurant_check_user_order_process.php?order_id=$key_id'>處理</a>"/處理超鏈接,將訂單處理請求發(fā)送至Restaurant_check_user_order_process.php echo"</div>&qu
41、ot; elseecho"<div class='record'>"echo"暫無訂餐記錄!"echo"</div>"/為空返回訂餐信息為空訂餐處理實現(xiàn)代碼如下,Restaurant_check_user_order_process.php中的代碼主要用于接收訂單處理消息,根據(jù)該消息,選取相應的函數(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ù)來處理訂單 header("location:Restaurant_check_user_order.php");/并跳轉回原頁面繼續(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");/獲取當天的日期 $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é)點 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é)點,返回當天日期節(jié)點信息下的子節(jié)點 for($j=0;$j<$order_ids->length;$j+)/遍歷子節(jié)點信息 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; /那些未處理的訂單才會寫入數(shù)組中,即state節(jié)點為off的子節(jié)點 r
47、eturn $arr;/返回數(shù)組,即返回取到的訂單信息以上的兩個函數(shù)都位于Restaurant_check_user_order_process.php的check_order_sevice類中,所以調(diào)用時通過該類的對象即可進行調(diào)用。點擊修改菜品,進入Restaurant_admin_manage_menu.php頁面,這里有提供添加菜品信息和修改菜品信息的功能選項。當點擊添加菜品信息時,進入添加菜品信息頁面,并填寫相應的菜品信息,提交至Restaurant_admin_operation_process.php中進行處理,主要是完整性和合法性的處理,再調(diào)用相應的處理函數(shù)對接收的數(shù)據(jù)進行處理。
48、以下是相關處理代碼:if(!empty($_POST'dishes_name')&&!empty($_POST'dishes_value')&&!empty($_POST'dishes_kind')&&!empty($_FILES'dishes_path''name')/數(shù)據(jù)進行完整性校驗 $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/寫數(shù)據(jù)庫出錯,提示上傳不成功 header("location:Restaurant_admin_menu_add.php?error=2"); else/寫文件出錯,提示上傳不成功 header("location:Restaurant_admin_menu_add.php?error=2"); else/數(shù)據(jù)不完整,返回錯誤信息 header("location:Restaurant_admin_menu_add.php?error=1");這里調(diào)用了兩個函數(shù),分別為add_menu和sql_update_menu這兩個函數(shù),前一個為將菜品的圖片信息寫入相應的文件,后者則將菜品信息寫入數(shù)據(jù)庫中,這兩個函數(shù)都位于Restaurant_admin_operation_service.php文件中,都是admin_operation_service類中的函數(shù),通過對象調(diào)用即可。具體代碼如下:add_menu($file_name,$file_path)函數(shù)代
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度旅游地產(chǎn)出售地皮協(xié)議
- 2025年度方協(xié)議不解約就業(yè)權益保障實施協(xié)議
- 二零二五年度醫(yī)院營養(yǎng)師臨時雇傭勞動合同
- 二零二五年度酒吧藝人經(jīng)紀代理合同
- 2025年度荒山租賃承包開發(fā)合同
- 2024年全球及中國賽用自行車碳纖維車架行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2024-2030全球數(shù)碼紡織顏料墨水行業(yè)調(diào)研及趨勢分析報告
- 2024年全球及中國可調(diào)準直光學元件行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 農(nóng)村水利灌溉系統(tǒng)建設方案
- 工業(yè)園區(qū)物業(yè)交接流程及實施方案
- 紅土鎳礦濕法冶煉技術綜述
- 隧道開挖作業(yè)臺車計算書
- 水利水電工程金屬結構與機電設備安裝安全技術規(guī)程
- 新視野大學英語讀寫譯4U校園第一單元課后測試答案
- 《紅樓夢》專題(文化)
- 國學基本知識(課堂PPT)
- 獨資公司章程范本下載
- OQC出貨檢驗報告
- FMEA培訓資料(共38頁).ppt
- DB62∕T 4472-2021 農(nóng)村互助老人幸福院運行管理規(guī)范
- 滑翔傘飛行原理及構成
評論
0/150
提交評論