版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 澳門科技大學</b></p><p> MACAU UNIVERSITY OF SCIENCE AND TECHNOLOGY</p><p><b> 資訊科技學院</b></p><p><b> 理學學士畢業(yè)論文</b></p><p>
2、 論文題目:基於APPLE iOS的餐飲管理系統(tǒng)的建模與實現(xiàn)</p><p> 學生:申大坤(0809853D-I011-0015,軟件技術及其應用)</p><p> 指導老師:蔡智明副教授</p><p><b> 2012年04月</b></p><p><b> 摘要</b><
3、;/p><p> 隨著智能手機的不斷發(fā)展,越來越多的功能可以在手機上實現(xiàn),由此本文建立了一個基於APPLE iOS系統(tǒng)的餐飲管理系統(tǒng)(Restaurant Management System,簡稱RMS)。</p><p> 本系統(tǒng)實現(xiàn)於iPhone或iTouch,其中具有餐飲運營中所需的基本功能,包括點餐、預定、結帳、餐單管理、餐桌管理、職員管理、會員管理和評價管理等。本文首先建立了系統(tǒng)
4、有關設計分析模型,包括組織構架、Use-case和業(yè)務流程圖,在此基礎上設計了ER圖、時序圖、Static modeling和Dynamic modeling。然後利用xCode編程軟件完成RMS系統(tǒng)的建立。</p><p><b> Abstract</b></p><p> With the continuous development of smart ph
5、ones, mobile phones have more and more features. This paper established a Restaurant Management System (referred to RMS) by APPLE iOS system. </p><p> This system is implemented on the iPhone or iTouch. Acc
6、ording to the basic requirements in a Restaurant, the functions of this system include Ordering, Booking, Billing, Menu-Management, Table-Management, Staff-Management, Membership-Management, and Comments-Management. At f
7、irst the system design and analysis models are established, including Organizational-Structure, Use-case, Flow-Charts, ER diagram, Static-Modeling, Sequence and other Dynamic Modeling. The system is built by the software
8、 tool</p><p><b> 前言</b></p><p> 餐飲管理系統(tǒng)是一套用於餐廳的管理軟體。此系統(tǒng)的建立的目的在於優(yōu)化餐廳的操作,用軟件實現(xiàn)了餐廳的整個運營過程,使餐廳的運營更加方便。</p><p> 此系統(tǒng)是實現(xiàn)於iOS智慧手機上,用可觸式的操作簡化顧客的點餐過程,同時餐廳職員也可以用此系統(tǒng)管理餐廳的日常運營事宜。&l
9、t;/p><p><b> 系統(tǒng)簡介</b></p><p><b> 開發(fā)背景</b></p><p> 本系統(tǒng)的所需餐桌和餐單可在系統(tǒng)中按照每個餐廳的不同而單獨設計。其中餐桌內(nèi)容包括樓層和餐桌號,設計時餐桌的餐桌號不可重複;餐單分為主菜、主食、小食、甜品和酒水,用戶可以在設計自己餐單時分配每個食物的種類。</p
10、><p><b> 環(huán)境配置</b></p><p> 此系統(tǒng)實現(xiàn)於使用高於或等於iOS 4.0系統(tǒng)的智慧手機上。此系統(tǒng)的程式設計語言為Objective-C,程式設計軟體為xCode, 程式設計環(huán)境為Mac OS X。</p><p><b> 1.3 組織構架</b></p><p><
11、b> 圖表 1 組織構架</b></p><p> 圖1是本系統(tǒng)的組織構架圖,本系統(tǒng)的主功能共包括:顧客系統(tǒng)、侍者系統(tǒng)、經(jīng)理系統(tǒng)和廚師系統(tǒng)。</p><p><b> 1.4 功能範疇</b></p><p> 1.4.1 顧客系統(tǒng)</p><p> 此系統(tǒng)是針對於顧客設計的,顧客根據(jù)自己的實
12、際情況選擇未預定或已預訂進入,或者選擇會員註冊進入會員註冊頁面。</p><p> 顧客系統(tǒng)的子系統(tǒng)包括:評價系統(tǒng)、點餐系統(tǒng)和會員註冊。</p><p> 評價系統(tǒng)是在顧客點餐時可以看到其他會員對此餐的評價,同時顧客在登錄會員後也可以對此餐進行評價;點餐系統(tǒng)是顧客對餐廳的餐單進行選擇和點餐;會員系統(tǒng)允許顧客註冊為會員,會員享有評價餐單和預定的特殊功能。</p><p
13、> 1.4.2 侍者系統(tǒng)</p><p> 侍者系統(tǒng)是針對服務員設計的,服務員在登錄後就可以使用此系統(tǒng)。侍者使用此系統(tǒng)可以進行帳單管理、餐桌變更、添加預定和預定查詢。</p><p> 帳單管理是侍者對某一餐桌進行結帳處理,結帳後此餐桌的數(shù)據(jù)從數(shù)據(jù)庫清除;餐桌變更適用於顧客意圖變換餐桌的情況;添加預定是侍者對預定進行操作,顧客通過網(wǎng)絡或者電話進行預定後,侍者通過此系統(tǒng)把預訂資訊
14、加入數(shù)據(jù)庫;預定查詢是對某一日期的預定情況進行查詢和管理。</p><p> 1.4.3 經(jīng)理系統(tǒng)</p><p> 經(jīng)理系統(tǒng)直接管理軟件的后臺數(shù)據(jù)庫,包括五個子系統(tǒng):餐單管理、餐桌管理、會員管理、職工管理和評價管理。</p><p> 其五個子系統(tǒng)都是對相應的餐單、餐桌、會員、職工和評價進行增改刪查操作。</p><p> 其中職工
15、管理可以對職工的職位進行修改,不同的職位對應不同的權限,侍者只能使用侍者系統(tǒng),廚師只能使用廚師系統(tǒng),經(jīng)理只能使用經(jīng)理系統(tǒng)。</p><p> 1.4.4 廚師系統(tǒng)</p><p> 廚師系統(tǒng)包括餐單清單 和餐單製作。餐單管理可以對餐廳的餐單開始、正在做或者已完成。</p><p> 餐單製作對於本系統(tǒng)相當重要,已點餐單狀態(tài)決定了其他子系統(tǒng)的可操作性。比如某已點
16、餐單的狀態(tài)為未開始,那麼顧客可以在點餐系統(tǒng)裡取消此訂單,侍者也可以在帳單系統(tǒng)裏面取消此訂單;如果已點餐單的狀態(tài)為正在做或者已完成,那麼顧客和侍者就不可以取消此訂單。</p><p><b> 系統(tǒng)設計規(guī)劃</b></p><p> 2.1 Use-Case圖</p><p> 圖表 2 Use-Case</p><p&
17、gt; 圖2顯示了不同使用者可以使用的功能。會員可以使用餐單評價、點餐系統(tǒng)和會員註冊,非會員不可使用餐單評價,侍者可以使用帳單管理、餐桌變更、添加預定和預定查詢,廚師可以使用餐單管理和已點餐單,經(jīng)理可以使用餐單管理、餐桌管理會員管理、職工管理和評價管理。</p><p><b> 2.2 業(yè)務流程圖</b></p><p> 2.2.1 總體流程圖</p&
18、gt;<p> 圖表 3 總體流程圖</p><p> 圖3顯示了本系統(tǒng)的整體流程圖。首先顧客可以選擇會員註冊、會員登錄或者直接進入顧客系統(tǒng)。會員註冊進入到註冊系統(tǒng);會員登錄可以使顧客查看預訂資訊;在顧客系統(tǒng)裏面顧客可以選擇已預訂進入或者未預定進入,已預訂進入需要顧客登錄會員,如果顧客沒有登錄會員則自動進入會員登錄頁面;未預定進入無需會員登錄就可直接進入選擇餐桌環(huán)節(jié);選擇餐桌系統(tǒng)根據(jù)顧客的預定或
19、者未預定顯示預定餐桌或可用餐桌,在餐桌選擇後進入點餐系統(tǒng);點餐系統(tǒng)自動綁定會員的預定餐單,顧客還可以在此新加入其他餐單,並且可以查看已點餐單和查看帳單。</p><p> 侍者在接受到顧客的預定後進入侍者系統(tǒng)裏面的添加預定;當顧客需要結帳服務時,侍者通過侍者系統(tǒng)裏面的帳單管理進行結帳;當顧客需要變換餐桌時,侍者通過侍者系統(tǒng)裏面的餐桌變換系統(tǒng)進行該換餐桌。</p><p> 廚師在登錄後
20、進入廚師系統(tǒng)。在餐單製作系統(tǒng)裏面,廚師根據(jù)實際操作情況對已點餐單的狀態(tài)進行改變,此狀態(tài)關係到顧客是否可以取消餐單的預定;在餐單管理裏面,廚師可以對餐廳的餐單進行調(diào)整。</p><p> 2.2.2 顧客流程圖</p><p> 圖表 4 顧客流程圖</p><p> 如圖4,這是系統(tǒng)的顧客流程圖,顧客在系統(tǒng)的主頁可以選擇會員註冊、許可權登陸或者進入顧客系統(tǒng)。&
21、lt;/p><p> 顧客在會員註冊頁面填寫相關資訊即可成為會員,會員享有預定和餐單評價的額外功能。顧客在許可權系統(tǒng)輸入用戶名和密碼即可登陸會員,只有登錄後才可使用會員的特權。顧客系統(tǒng)分為已預訂進入和未預定進入。已預訂進入需要顧客登陸會員;未預定系統(tǒng)則進入選擇餐桌環(huán)節(jié)。在餐桌選擇完成後系統(tǒng)自動進入點餐系統(tǒng),在點餐系統(tǒng)裡可以進行點餐、查看帳單和評價。顧客結帳時需通知侍者進入結帳系統(tǒng)。</p><p
22、> 2.2.3 侍者流程圖</p><p> 圖表 5 侍者流程圖</p><p> 如圖5,此圖是侍者的使用流程圖。侍者在通過許可權系統(tǒng)登陸後才可進入侍者系統(tǒng)。在侍者系統(tǒng)裡可以進行帳單管理、餐桌變更、添加預定和預定查詢功能。</p><p> 帳單管理在選擇餐桌後才可以進行結帳。同樣餐桌變更需要選擇原餐桌和變更餐桌。添加預定功能需要侍者輸入預訂人的會
23、員帳號,確認是會員後才可以進行添加預定餐桌、添加預定餐單和查看預定操作。預定查詢系統(tǒng)首先需要侍者選擇查看的日期,然後系統(tǒng)會顯示該日期餐桌的預定情況,隨後侍者可以對這些餐桌進行相關操作。</p><p> 2.2.4 廚師流程圖</p><p> 圖表 6 廚師流程圖</p><p> 如圖6,此圖是廚師的使用流程圖。侍者在通過許可權系統(tǒng)登陸後才可進入廚師系統(tǒng),
24、在廚師系統(tǒng)裡可以管理餐單和已點餐單。</p><p> 餐單管理系統(tǒng)是對餐廳的餐單進行管理,可以修改單個餐單的屬性,也可刪除該餐單。</p><p> 餐單製作系統(tǒng)是對顧客的點餐單進行管理。廚師在開始做一個菜時需使用此系統(tǒng)把該菜的狀態(tài)改成正在做;在做完該道菜後需把此菜的狀態(tài)改為已完成。</p><p> 2.2.5 經(jīng)理流程圖</p><p
25、> 圖表 7 經(jīng)理流程圖</p><p> 如圖7,此圖是經(jīng)理的使用流程圖。經(jīng)理在通過許可權系統(tǒng)登陸後才可進入經(jīng)理系統(tǒng)。在經(jīng)理系統(tǒng)裡可以進行餐單管理、餐桌管理、會員管理、職工管理和評價管理功能。</p><p> 這些功能都是直接對後臺資料庫進行管理,即對選定的專案進行增改刪查。餐單管理是對餐廳的餐單進行修改和刪除;餐桌管理可以增加或者刪除餐廳的餐桌,還可以修改餐桌的狀態(tài):可用
26、、使用中、預定或者停用;會員管理可以對餐廳的會員屬性進行修改,或者刪除會員;職工管理可以對職工的職位進行修改,不同的職位對應不同的權限,侍者只能使用侍者系統(tǒng),廚師只能使用廚師系統(tǒng),經(jīng)理只能使用經(jīng)理系統(tǒng),此系統(tǒng)還可以修改職員的屬性,比如姓名、用戶名和密碼等。</p><p><b> 2.3 ER圖</b></p><p><b> 圖表 8 ER圖<
27、;/b></p><p> 本系統(tǒng)使用的資料庫為SQLite 3,圖8是系統(tǒng)的整體ER圖,顯示了各個數(shù)據(jù)庫之間的關聯(lián),其中關聯(lián)的符號有其固定的含義。單獨的一豎條表示一對一的關係;一豎條後面跟三條分支表示多對多的關係;一個圓圈表示對應零或者一;一個圓圈後面跟三個分支表示對應零或者多個。</p><p> 其中VIP是會員數(shù)據(jù)庫,comments是評價數(shù)據(jù)庫,menu是餐單數(shù)據(jù)庫,b
28、ookTable是預定餐桌數(shù)據(jù)庫,bookMenu是預定餐單數(shù)據(jù)庫,table是餐桌數(shù)據(jù)庫,bill是帳單數(shù)據(jù)庫,staff是職工數(shù)據(jù)庫。</p><p><b> 2.4 數(shù)據(jù)字典</b></p><p><b> 圖表 9 數(shù)據(jù)字典</b></p><p><b> 2.5 數(shù)據(jù)流程圖</b>
29、;</p><p> 2.5.1 第一層數(shù)據(jù)流程圖</p><p> 圖表 10 第一層數(shù)據(jù)流圖</p><p> 如圖10,這是系統(tǒng)的第一層數(shù)據(jù)流程圖,總體的顯示了四個分系統(tǒng)和各個數(shù)據(jù)庫之間的數(shù)據(jù)交流。</p><p> 四種類型的使用者通過許可權系統(tǒng)進行了劃分:顧客、侍者、廚師和經(jīng)理。</p><p>
30、2.5.2 第二層顧客數(shù)據(jù)流程圖</p><p> 圖表 11 第二層顧客數(shù)據(jù)流圖</p><p> 圖11展示了第二層顧客數(shù)據(jù)流程圖。首先顧客通過RMS系統(tǒng)進行會員登錄或者進入顧客系統(tǒng),會員登錄從VIP數(shù)據(jù)庫裏面讀取數(shù)據(jù);在顧客系統(tǒng)裏面顧客可以選擇會員註冊、未預定進入或者已預訂進入,其中未預定進入直接進入餐桌選擇環(huán)節(jié),已預訂進入需要顧客登錄會員然後進入餐桌選擇環(huán)節(jié);在選擇餐桌環(huán)節(jié),如
31、果顧客是未預定進入,則讀取table數(shù)據(jù)庫顯示可用餐桌,如果顧客是已預訂進入則讀取bookTable數(shù)據(jù)庫顯示預定餐桌;隨後進入餐單選擇,如果顧客是未預定進入那麼餐單選擇系統(tǒng)讀取menu數(shù)據(jù)庫,如果顧客是已預訂進入則讀取bookMenu數(shù)據(jù)庫,同時餐單選擇還會讀取comments數(shù)據(jù)庫顯示餐單評價,隨後餐單選擇系統(tǒng)把已點餐單加入到bill數(shù)據(jù)庫裏面,即進入已點餐單系統(tǒng);返回餐單選擇系統(tǒng)後還可以進行查看帳單操作。</p>&
32、lt;p> 2.5.3 第二層侍者數(shù)據(jù)流程圖</p><p> 圖表 12 第二層侍者數(shù)據(jù)流圖</p><p> 圖12顯示了侍者的數(shù)據(jù)流程圖。首先侍者使用RMS系統(tǒng)進入到職員登錄,在登錄後進入到侍者系統(tǒng)。在侍者系統(tǒng)裏面侍者可以進行四種操作:帳單管理、餐桌變更、添加預定和預定查詢。</p><p> 其中帳單管理是對結帳的處理,此操作需要選擇結帳的餐桌
33、,選擇餐桌調(diào)用table數(shù)據(jù)庫,在選擇餐桌後調(diào)用bill數(shù)據(jù)庫顯示需要支付的費用。</p><p> 餐桌變更適用於顧客需要變更餐桌的情況,此操作也需要餐桌選擇,餐桌選擇調(diào)用table數(shù)據(jù)庫,在數(shù)據(jù)庫裏面改變原餐桌和變更餐桌的狀態(tài),在變更餐桌後還需要把bill數(shù)據(jù)庫裏面原餐桌的費用改成變更餐桌的費用。</p><p> 添加預定是侍者根據(jù)顧客的預定向系統(tǒng)數(shù)據(jù)庫裏面添加預定詳情,此操作需
34、要調(diào)用bookTable數(shù)據(jù)庫、bookMenu數(shù)據(jù)庫、Menu數(shù)據(jù)庫和table數(shù)據(jù)庫,調(diào)用bookTable數(shù)據(jù)庫是因為侍者要把預定餐桌加入到後臺數(shù)據(jù)庫,調(diào)用bookMent數(shù)據(jù)庫是因為侍者要把預定餐單加入到後臺數(shù)據(jù)庫,調(diào)用table數(shù)據(jù)庫是因為侍者在把預定餐桌加入到後天數(shù)據(jù)庫前要先確定此餐桌現(xiàn)在處於可用狀態(tài),調(diào)用menu數(shù)據(jù)是因為侍者在選擇預定餐單是需要此餐廳的餐單。</p><p> 預定查詢系統(tǒng)需要侍
35、者選擇需要查詢的日期,在日期選擇後系統(tǒng)調(diào)用bookTable和bookMenu顯示預定詳情,如果需要添加預定餐單則調(diào)用menu數(shù)據(jù)庫進行添加操作。</p><p> 2.5.4 第二層廚師數(shù)據(jù)流程圖</p><p> 圖表 13 第二層廚師數(shù)據(jù)流圖</p><p> 圖13顯示了廚師的數(shù)據(jù)流程圖。首先廚師使用RMS系統(tǒng)進行職員登錄,此操作需要調(diào)用staff數(shù)據(jù)
36、庫,在廚師登錄後進入廚師系統(tǒng),此後廚師可以進行兩種操作:餐單管理和餐單製作。</p><p> 餐單管理是對餐廳的餐單進行增改刪查操作,此操作需要調(diào)用menu數(shù)據(jù)庫並對其進行更新。</p><p> 餐單製作是廚師根據(jù)實際製作情況對顧客已點餐單的狀態(tài)進行修改,已點餐單有三種狀態(tài):未開始、正在做和已完成。此操作去要調(diào)用bill數(shù)據(jù)庫。</p><p> 2.5.
37、5 第二層經(jīng)理數(shù)據(jù)流程圖</p><p> 圖表 14 第二層經(jīng)理數(shù)據(jù)流圖</p><p> 圖14顯示了經(jīng)理的數(shù)據(jù)流圖。經(jīng)理使用RMS系統(tǒng)進入到職員登錄頁面,此操作調(diào)用staff數(shù)據(jù)庫,在經(jīng)理登錄後進入到經(jīng)理系統(tǒng),此系統(tǒng)包含五種操作:餐單管理、餐桌管理、會員管理、職工管理和評價管理。</p><p> 餐單管理是對餐廳的餐單進行增改刪查操作,此操作需要調(diào)用m
38、enu數(shù)據(jù)庫並對其進行更新。餐桌管理是對餐廳的餐桌進行增改刪查操作,此操作需要調(diào)用table數(shù)據(jù)庫並對其進行更新。會員管理是對餐廳的會員進行增改刪查操作,此操作需要調(diào)用VIP數(shù)據(jù)庫並對其進行更新。職工管理是對職工的屬性進行增改刪查操作,此操作需要調(diào)用staff數(shù)據(jù)庫並對其進行更新。評價管理是對慘澹的評價進行增改刪查操作,此操作需要調(diào)用comments數(shù)據(jù)庫並對其進行更新</p><p> 2.6 Static
39、modeling</p><p> 圖表 15 Class hierarchy</p><p> 圖15是類層次結構圖。如圖所示,類VIP、table、menu、staff、bill依賴於mainWindow類;而bookTable和bookMenu依賴於VIP類,並且bookTable和bookMent又互相對應。Table和bill也是相互一一對應的關係。</p>&
40、lt;p> 圖表 16 OO relationships</p><p> 圖16顯示了OO關係圖。如圖所示,bookTable和bookMenu繼承於VIP類,一個VIP對應一個bill,而一個bill可以對應多個VIP;但是一個bill只能對應一個table,一個table可以對應0或者一個bill;comments和menu一一對應;menu和table一一對應。</p><p
41、><b> 2.7 時序圖</b></p><p> 2.7.1 侍者添加預訂時序圖</p><p> 圖表 17 侍者添加預訂時序圖</p><p> 圖17顯示了侍者添加預定的時序圖。首先侍者使用RMS系統(tǒng)進入主頁(mainWindow),然後在主頁進入職員登錄(staff)頁面,在此會員輸入用戶名和密碼於後臺數(shù)據(jù)庫進行資訊交
42、流,成功匹配後登錄成功返回主頁,隨後侍者進入預定(book)頁面,在此頁面需要侍者首先輸入預訂人的VIP用戶名,然後檢查此用戶名是否為VIP。檢查成功後進入選擇預定餐桌頁面,在餐桌(table)頁面選擇可用的餐桌然後把此餐桌加入到預定餐桌(bookTable)數(shù)據(jù)庫。成功加入預定餐桌後進入選擇預定餐單頁面,在餐單(menu)頁面選擇想要預定的餐單,然後把選擇的餐單加入到預定餐單(bookMenu)數(shù)據(jù)庫,至此整個預定操作完成。當然侍者還
43、可以退回到預訂頁面添加新的餐桌和餐單。</p><p> 2.7.2 顧客已預定點餐時序圖</p><p> 圖表 18 顧客已預訂時序圖</p><p> 圖18顯示了顧客已預訂進入顧客系統(tǒng)的時序圖。首先顧客使用RMS系統(tǒng)進入主頁,在主頁顧客可以選擇登陸會員(VIP)或者直接進入點餐系統(tǒng)(order),在進入點餐系統(tǒng)時系統(tǒng)會檢查顧客是否登錄了VIP,如果沒用
44、登錄則返回VIP登錄頁面,如果檢查已登錄VIP則進入選擇預定餐桌(bookTable)系統(tǒng),在選擇預定餐桌後進入到選擇餐單系統(tǒng)(menu),此系統(tǒng)首先把預定餐單(bookMenu)加入到餐單系統(tǒng)裡和帳單(bill)裡,隨後顧客可以再添加新餐單,並對餐單的評價(comments)進行查看,然後所有選擇的餐單綁定到帳單(bill)數(shù)據(jù)庫,同時帳單頁面在檢查顧客已登錄VIP後可允許顧客對一點的餐單添加評價。</p><p&
45、gt; 2.7.3 顧客未預定點餐時序圖</p><p> 圖表 19 顧客未預定時序圖</p><p> 圖19顯示了顧客未預定進入顧客系統(tǒng)的時序圖。首先顧客使用RMS系統(tǒng)進入主頁,在主頁顧客可以選擇登錄會員(VIP)或者直接進入點餐系統(tǒng)(order),進入點餐系統(tǒng)後顧客需要選擇就餐的餐桌(table),隨後進入餐單系統(tǒng)(menu),在餐單系統(tǒng)選擇想要品嘗的食物,然後把這些食物加入
46、到帳單(bill)數(shù)據(jù)庫裡,同時顧客可以通過評價系統(tǒng)(comments)查看其他會員對食物的評價,最後把所有點餐單綁定到帳單數(shù)據(jù)庫,同時帳單頁面在檢查顧客已登錄VIP後可允許顧客對一點的餐單添加評價。</p><p> 2.7.4 侍者結帳時序圖</p><p> 圖表 20侍者結帳時序圖</p><p> 圖20顯示了侍者結帳時序圖。首先侍者使用RMS系統(tǒng)進
47、入主頁,在主頁登錄自己的用戶名和密碼進入侍者系統(tǒng),在侍者系統(tǒng)裏面進入帳單管理系統(tǒng)。帳單管理首先自動搜索餐桌數(shù)據(jù)庫,把正在使用的餐桌加入管理表,然後侍者選擇要結帳的餐桌,選擇后系統(tǒng)讀取該餐桌的帳單信息并顯示到屏幕上,然後侍者可以把狀態(tài)為“已激活”(即未製作)的餐單從帳單上刪除,最後侍者選擇結帳,系統(tǒng)把餐桌狀態(tài)改為可用,并清除帳單數(shù)據(jù)。</p><p><b> 2.8 狀態(tài)圖</b><
48、/p><p> 2.8.1 餐桌狀態(tài)圖</p><p> 圖表 21 餐桌狀態(tài)圖</p><p> 2.8.2 點餐單狀態(tài)圖</p><p> 圖表 22 點餐單狀態(tài)圖</p><p><b> 系統(tǒng)設計</b></p><p><b> 3.1 主頁設計
49、</b></p><p><b> 圖表 23 主頁</b></p><p> 如圖23顯示了系統(tǒng)主頁的設計。主頁開始用兩個功能可以選擇:權限登錄和顧客系統(tǒng)。權限登錄裡分為會員登錄和職員登錄,會員登錄適用於顧客登錄會員。職員登錄是職員在使用此系統(tǒng)管理餐廳時,需要登錄自己的帳號和密碼來獲得管理權限。顧客系統(tǒng)為顧客而設計,無需權限,打開軟件首頁就可以使用顧
50、客系統(tǒng)。</p><p> 圖23左方的介面為顧客為選擇餐桌時的主頁,右方為顧客選擇餐桌後的主頁。這兩者的區(qū)別是前者未開始使用,而後者已經(jīng)開始使用並且餐桌已經(jīng)綁定。</p><p> 3.2 顧客系統(tǒng)設計</p><p> 3.2.1 進入點餐系統(tǒng)</p><p> 圖表 24 顧客系統(tǒng) 圖表25 餐
51、桌選擇</p><p> 圖24是顧客登錄會員後的主頁,其中下方的顧客系統(tǒng)包含三個功能選擇:未預定進入、已預訂進入和會員註冊。未預定進入適合於顧客未預定餐桌的情況,此功能不需要任何權限;已預訂進入適合於顧客已經(jīng)預定餐桌的情況,此功能需要顧客登錄會員;會員註冊可以讓顧客註冊為餐廳的會員。</p><p> 在顧客使用顧客系統(tǒng)進入點餐是系統(tǒng)時需要首先選擇餐桌,如果顧客是通過未預定進入的,那
52、麼顯示的餐桌為可用餐桌,如圖25,如果顧客是通過已預訂進入,那麼顯示的餐桌則為顧客預定的餐桌。在選擇餐桌後系統(tǒng)自動進入點餐系統(tǒng)。</p><p> 圖25所示的餐桌選擇系統(tǒng)的調(diào)用非常複雜,由於多處有關餐桌的使用都調(diào)用這個類,期間的數(shù)據(jù)交流非常繁瑣,這裡附上調(diào)用餐桌類里面最主要的一個方法,代碼如下。</p><p> -(IBAction) OK:(id)sender{</p>
53、;<p> if ([self.dataPassisEqualToString:@"服務員預訂"]) {</p><p> if ( floorName == nil) {</p><p> UIAlertView *alert = [[UIAlertViewalloc] initWithTitle:@"錯誤"message:@&
54、quot;樓層未選擇"delegate:selfcancelButtonTitle:@"確定"otherButtonTitles: nil];</p><p> [alert show];</p><p> [alert release]; }</p><p> else if ( tableNamed == nil) {<
55、/p><p> UIAlertView *alert = [[UIAlertViewalloc] initWithTitle:@"錯誤"message:@"餐桌未選擇"delegate:selfcancelButtonTitle:@"確定"otherButtonTitles: nil];</p><p> [alert show]
56、;</p><p> [alert release]; }</p><p><b> else {</b></p><p> NSLocale *ChinaLocale = [[[NSLocalealloc] initWithLocaleIdentifier: @"zh_CN"] autorelease];</p
57、><p> NSDate *pickerDate = [datePickerdate];</p><p> NSString *selectionString = [[NSStringalloc] initWithFormat : @"%@", [pickerDate descriptionWithLocale:ChinaLocale]];</p><
58、;p> NSString *testDate = selectionString;</p><p> NSLog(@"%@",testDate);</p><p> [selectionString release];</p><p><b> …………………</b></p><p>
59、 …………………//此處設置預定時間,代碼省略</p><p> NSString *string = [[NSStringalloc] initWithString:tableNamed];</p><p> NSArray *testFoodName = [string componentsSeparatedByString:@" "];</p>
60、;<p> table2 = [[NSStringalloc] initWithString:[testFoodName objectAtIndex:0]];</p><p> peop = [[NSStringalloc] initWithString:[testFoodName objectAtIndex:1]];</p><p> [self updateReco
61、rdFromTableNamed: @"tableData" withField1: @"floor" field1Value: floorNameandfield3: @"tableName" field3Value: table2 andfield4: @"state" field4Value:@"預訂"];</p>&
62、lt;p> NSString *msgVIP = [global getBookVIPName];</p><p> [self insertRecordIntoTableBook :@"book" withField1: @ "bookVIPName" field1Value: msgVIP andfield2 : @"booktable"
63、field2Value: table2 andfield3 : @ "bookTime" field3Value : bookTime];</p><p> self.staffBookDetailsViewController = [[staffBookDetailsalloc] initWithNibName :@ "staffBookDetails" bundle:
64、 nil];</p><p> self.staffBookDetailsViewController.bookTableName = table2;</p><p> [globa lsetBookTable:table2];</p><p> NSString * totalSelectedTable = [[NSStringalloc] initWith
65、Format:@"%@ %@ 預定成功", floorName, table2];</p><p> UIAlertView *alert = [[UIAlertViewalloc] initWithTitle:@"提示"message:totalSelectedTable delegate:selfcancelButtonTitle:@"確定"oth
66、erButtonTitles: nil];</p><p> [alert show];</p><p> [alert release];</p><p> [self.viewaddSubview:self.staffBookDetailsViewController.view]; }}</p><p><b> el
67、se {</b></p><p> if ([dataPassis EqualToString:@"預訂"]) {</p><p> if ( tableNamed == nil) {</p><p> UIAlertView *alert = [[UIAlertViewalloc] initWithTitle:@"錯
68、誤"message:@"預定未選擇"delegate:selfcancelButtonTitle:@"確定"otherButtonTitles: nil];</p><p> [alert show];</p><p> [alert release]; }</p><p><b> else {&l
69、t;/b></p><p> NSString *string = [[NSStringalloc] initWithString:tableNamed];</p><p> NSArray *testFoodName = [string componentsSeparatedByString : @" "];</p><p>
70、 bookFlo = [[NSStringalloc] initWithString:[testFoodName objectAtIndex: 0]];</p><p> bookTab = [[NSStringalloc] initWithString:[testFoodName objectAtIndex: 1]];</p><p> [self updateRecordFromT
71、ableNamed :@"tableData" withField1: @"floor "field1Value :bookFloandfield3: @"tableName" field3Value: bookTabandfield4: @"state" field4Value: @"使用中"];</p><p>
72、; NSString * totalSelectedTable = [[NSStringalloc] initWithFormat: @ "%@ %@", bookFlo, bookTab];</p><p> [global setTable:totalSelectedTable];</p><p> [self turnBookFoodToOrderFood
73、:@"bookDetails"];</p><p> [self deleteBook: @"book" withField: @"booktable" fieldValue: bookTab];</p><p> [self deleteBookDetails: @"bookDetails"withFie
74、ld: @"booktable" fieldValue: bookTab];</p><p> UIAlertView *alert = [[UIAlertViewalloc] initWithTitle:@"您的餐桌為"message:totalSelectedTable delegate:selfcancelButtonTitle:@"確定"oth
75、erButtonTitles: nil];</p><p> [alert show];</p><p> [alert release];</p><p> menuViewController = [[menualloc] initWithNibName :@ "menu" bundle: nil];</p><p
76、> [self.view addSubview:menuViewController.view]; }}</p><p><b> else {</b></p><p> if ( floorName == nil) {</p><p> UIAlertView *alert = [[UIAlertViewalloc] initW
77、ithTitle:@"錯誤"message:@"樓層未選擇"delegate:selfcancelButtonTitle:@"確定"otherButtonTitles: nil];</p><p> [alert show];</p><p> [alert release]; }</p><p>
78、else if ( tableNamed == nil) {</p><p> UIAlertView *alert = [[UIAlertViewalloc] initWithTitle:@"錯誤"message:@"餐桌未選擇"delegate:selfcancelButtonTitle:@"確定"otherButtonTitles: nil];&
79、lt;/p><p> [alert show];</p><p> [alert release];</p><p><b> }</b></p><p><b> else {</b></p><p> NSString *string = [[NSStringall
80、oc] initWithString:tableNamed];</p><p> NSArray *testFoodName = [string componentsSeparatedByString:@" "];</p><p> table2 = [[NSStringalloc] initWithString:[testFoodName objectAtI
81、ndex:0]];</p><p> peop = [[NSStringalloc] initWithString:[testFoodName objectAtIndex:1]];</p><p> [self updateRecordFromTableNamed: @"tableData" withField1: @"floor" field1
82、Value: floorNameandfield3: @"tableName" field3Value: table2andfield4: @"state"field4Value: @"使用中"];</p><p> NSString * totalSelectedTable = [[NSStringalloc] initWithFormat: @&q
83、uot;%@ %@", floorName, table2];</p><p> [globalsetTable:totalSelectedTable];</p><p> UIAlertView *alert = [[UIAlertViewalloc] initWithTitle:@"您的餐桌為"message: totalSelectedTable d
84、elegate:selfcancelButtonTitle:@"確定"otherButtonTitles:nil];</p><p> [alert show];</p><p> [alert release];</p><p> menuViewController = [[menualloc] initWithNibName:@&q
85、uot;menu"bundle:nil];</p><p> [self.viewaddSubview:menuViewController.view]; </p><p><b> }</b></p><p><b> }</b></p><p><b> }</
86、b></p><p><b> }</b></p><p> 3.2.2 點餐系統(tǒng)</p><p> 圖表 26 點餐系統(tǒng) 圖表27餐單選擇</p><p> 圖26顯示的是點餐系統(tǒng)。單擊左上角的主頁按鈕會返回到系統(tǒng)主頁,單擊右上角的餐桌按鈕會顯示顧客所在的餐桌號碼,中間的
87、按鈕欄是餐單的分類,單擊不同的分類會顯示分類的明細,如圖27顯示的是主菜分類的明細。</p><p> 在餐單選擇裏面點擊想要品嘗的食物後,系統(tǒng)會轉(zhuǎn)到所點擊食物的明細頁面,如圖28顯示的是冰花酸梅排骨的明細,在頁面的下方顯示的是其他顧客品嘗後給予的評論,可供顧客參考;點擊頁面右上方的點餐按鈕則可以把該食物加入點餐單。</p><p> 在點餐系統(tǒng)點擊已點餐單選項可查看顧客的點餐單,如圖
88、29。點餐單左邊的一欄為未完成的餐單,右邊為已完成的餐單,點擊餐單會顯示已點餐單的詳情,如圖30。</p><p> 圖表 28 餐單明細 圖表29已點餐單</p><p> 圖表 30 點餐詳情 圖表31帳單</p><p> 圖30顯示的是點餐詳情,詳情裏面有點餐起始時間和結束時間,如果該
89、餐單沒有開始製作,那麼顧客就可以點擊下面的“取消此訂單”來刪除,如果餐單已經(jīng)開始製作或者製作完成,那麼該選項會消失。</p><p> 圖31顯示的是該餐桌的帳單,上方為餐桌號碼,中間為消費總額,下方表格為消費明細。</p><p> 3.3 侍者系統(tǒng)設計</p><p> 3.3.1 侍者系統(tǒng)主頁</p><p> 圖表 32 侍者
90、系統(tǒng) 圖表 33 登錄資訊</p><p> 圖32顯示的是侍者系統(tǒng)。侍者在使用本系統(tǒng)是需要登錄權限,在登錄後就會進入侍者是同。侍者系統(tǒng)分為四個子系統(tǒng):帳單管理、餐桌變更、添加預定和預定查詢。</p><p> 圖33所示是侍者的登錄信息。點擊侍者已登錄此頁面就會顯示,在此頁面用戶可以選擇註銷登錄或者重新登錄其他帳號。</p>&l
91、t;p> 3.3.2 帳單管理</p><p> 圖表 34 帳單管理 圖表 35 帳單明細</p><p> 圖34是侍者系統(tǒng)的帳單管理頁面。首先要選擇樓層,樓層選擇後右方會顯示出此樓層正在使用的餐桌,侍者選擇結帳餐桌後頁面跳轉(zhuǎn)到帳單明細頁面,如圖35,帳單明細顯示了已點的餐單和餐單的狀態(tài),如果餐單的狀態(tài)為未作,那麼該餐單可以從帳單裡刪
92、除;最後點擊右上角的結帳完成結帳。</p><p> 結帳完成後所有數(shù)據(jù)從後臺數(shù)據(jù)庫刪除。</p><p> 3.3.3 餐桌變更</p><p> 圖表 36 餐桌變更 圖表 37 變更確認</p><p> 圖36所示是系統(tǒng)的餐桌變更介面,說先選擇原餐桌的樓層,然後右邊會顯示出此樓可真在使用
93、也就是可變更的餐桌;然後在介面下方選擇先要變更的樓層,變更樓層選定後右邊就會顯示出此樓層可以使用的餐桌,原餐桌和變更餐桌都選定後,點擊右上角的改變按鈕,就可以完成餐桌變更(如圖37)。</p><p> 3.3.4 添加預定</p><p> 圖表 38 添加預定 圖表 39預訂單</p><p> 圖38顯示的是添加預
94、定的介面。首先需要侍者輸入預訂人的帳號(會員登錄名),然後系統(tǒng)在檢查此帳號為會員後,侍者就可以添加預定餐桌和添加預定餐單,這兩個介面同樣使用前面的餐桌選擇系統(tǒng)和餐單選擇系統(tǒng),只是數(shù)據(jù)流不同;在預定完成後侍者可以使用查看預定詳情選項進行預定查看,如圖39,在預訂單裏面可以看到此會員的預定餐桌、預定時間和預定餐單,並可以刪除預定和添加預定餐單。</p><p> 3.3.5 預定查詢</p><
95、p> 圖表 40 預定查詢時間選擇 圖表 41 預定查詢</p><p> 侍者在使用預定查詢時,首先需要選擇預定查詢的時間,如圖40,在選擇查詢預訂時間後,點擊確定會顯示此日期的預定情況,如圖41。</p><p> 在預定查詢頁面,上方為預定人、預定餐桌和預定時間,下方的功能表可以更改預定餐桌、更改預定時間、更改預定餐桌和刪除預定餐桌。更改預定餐
96、桌是重用前面的餐桌選擇頁面,更改預定時間是重用圖40所示的查詢預訂時間選擇項,更改預定餐單是重用選擇餐單頁面,這些重用大大減少了軟件的內(nèi)存,並且使本系統(tǒng)更加可靠和一致。</p><p> 3.4 廚師系統(tǒng)設計</p><p> 圖表 42 廚師系統(tǒng) 圖表 43 餐單管理</p><p> 圖42顯示的是廚師系統(tǒng)介面,廚師在
97、使用職員登錄後就可以進入廚師系統(tǒng),廚師系統(tǒng)包括餐單管理和餐單製作。</p><p> 圖43所示是餐單管理介面,廚師在此介面可以選擇添加餐單或者點擊一個餐單進行管理。</p><p> 圖44是管理餐單明細介面,此介面顯示了選擇餐單的詳細資訊,廚師可以對這些資訊進行修改,並且可以刪除此餐單。</p><p> 圖45是已點餐單介面,介面左方顯示的是代做餐單的列
98、表,廚師點擊代做餐單後進入餐單狀態(tài)頁面,如圖46,在此頁面廚師可以修改餐單的狀態(tài),如圖47顯示的是餐單狀態(tài)改變後的已點餐單介面右方數(shù)據(jù)欄的更新。</p><p> 圖表 44 管理餐單明細 圖表 45 已點餐單</p><p> 圖表 46 餐單狀態(tài) 圖表 47改變的已點餐單</p><p>
99、 如圖48是餐單製作的通道圖,廚師進入餐單製作系統(tǒng)后,系統(tǒng)從后臺數(shù)據(jù)庫讀取餐單信息,如果餐單狀態(tài)已激活,那麼系統(tǒng)就把該餐單加入到製作表中。</p><p> 廚師在製作表中選擇要製作的餐單,進入正在製作狀態(tài),廚師使用系統(tǒng)更新餐單狀態(tài);此後待餐單製作完成,廚師再次更新餐單狀態(tài),並且系統(tǒng)自動更新製作表。</p><p> 此過程一直循環(huán)到製作表為空為止。</p><p&
100、gt; 圖表48 餐單製作甬道圖</p><p> 下面附上餐單狀態(tài)管理的代碼:</p><p> -(IBAction) dataUpdate:(id)sender{</p><p> NSDate* date = [globalgetDate];</p><p> [self updateRecordFromTableNamed
101、 :@"orderFood" withField1: @"end" field1Value:(NSString *) date andfield2: @"foodIndex" field2Value: selectedFoodIndex];</p><p> UIAlertView *alert = [[UIAlertViewalloc] initWi
102、thTitle:@"成功"message:@"數(shù)據(jù)更新成功"delegate:selfcancelButtonTitle:@"確定"otherButtonTitles:nil];</p><p> [alert show];</p><p> [alert release];</p><p><b
103、> }</b></p><p> -(void) updateRecordFromTableNamed:(NSString *)tableName withField1:(NSString *) field1 field1Value:(NSString *) field1Value andfield2:(NSString *) field2 field2Value:(NSString *)
104、field2Value{</p><p> NSString *sql;</p><p> //1 is end; 2 is index </p><p> if ([foodState.textisEqualToString:@"已完成"]) {</p><p> sql = [NSStringstringWit
105、hFormat:@"UPDATE '%@' SET end = '%@', state = '已完成' WHERE foodIndex = '%@'",tableName,field1Value,field2Value];</p><p><b> }</b></p><p> e
106、lseif ([foodState.textisEqualToString:@"正在做"]){</p><p> sql = [NSStringstringWithFormat:@"UPDATE '%@' SET state = '正在做' WHERE foodIndex = '%@'",tableName,field2Va
107、lue];</p><p><b> }</b></p><p> elseif ([foodState.textisEqualToString:@"未開始"]){</p><p> sql = [NSStringstringWithFormat:@"UPDATE '%@' SET state
108、 = '未開始' WHERE foodIndex = '%@'",tableName,field2Value];</p><p><b> }</b></p><p> char *err;</p><p> if(sqlite3_exec(db, [sql UTF8String], NULL,
109、NULL, &err) !=SQLITE_OK){</p><p> sqlite3_close(db);</p><p> NSAssert(0,@"Error updating into table");</p><p><b> }</b></p><p><b> }
110、</b></p><p> 3.5 經(jīng)理系統(tǒng)設計</p><p> 3.5.1 經(jīng)理系統(tǒng)主頁</p><p> 圖表 49 經(jīng)理系統(tǒng) 圖表50 餐桌管理</p><p> 圖49所示的是經(jīng)理系統(tǒng)介面,經(jīng)理在職員登錄後可以使用經(jīng)理系統(tǒng)。經(jīng)理系統(tǒng)包括餐單管理、餐桌管理、會員管理、職工管理
111、和評價管理。其中餐單管理和廚師系統(tǒng)的餐單管理使用同一個系統(tǒng)。</p><p> 3.5.2 餐桌管理</p><p> 圖50顯示的是經(jīng)理系統(tǒng)的餐桌管理。經(jīng)理在此系統(tǒng)可以添加餐桌或者對選定餐桌進行管理。圖51顯示的是新增餐桌的介面,餐桌的樓層、人數(shù)和編碼系統(tǒng)限制只能輸入數(shù)字。圖52顯示的是餐桌的詳情,經(jīng)理可以修改餐桌的人數(shù)和餐桌狀態(tài)。</p><p> 圖表
112、51 新增餐桌 圖表 52餐桌詳情</p><p> 3.5.3 會員管理</p><p> 圖表 53 新增餐桌 圖表54餐桌詳情</p><p> 圖53顯示的是經(jīng)歷的會員管理系統(tǒng),此頁面首先顯示了餐廳的會員列表,經(jīng)歷可以添加會員或者對選擇的會員進行管理。如圖54顯示的是會員的詳情
113、,ID是系統(tǒng)自動分配,其他的項目經(jīng)歷可以修改,但密碼是不可見的。</p><p> 3.5.4 職工管理</p><p> 圖表 55 職員管理 圖表56 職員詳情</p><p> 圖55顯示的是經(jīng)理系統(tǒng)職員管理介面。職員分為三類:侍者、廚師和經(jīng)理。經(jīng)理在選定職工後可以對其進行修改,也可以點擊右上角添加新職員。</
114、p><p> 如圖56顯示的是職員的詳情,ID是系統(tǒng)自動分配,職務提供三個選項,其他詳細資訊需手動修改和填寫。拖動此介面可以看到下方的刪除職員按鈕。</p><p> 3.5.5 評價管理</p><p> 圖表 57 評價管理</p><p> 如圖57顯示的是經(jīng)理系統(tǒng)的評價管理系統(tǒng)。經(jīng)理可以在此查看每個餐單的評價,單擊評價可對餐單進行
115、刪除操作。</p><p><b> 結論</b></p><p> 這是我第一次接觸基於IOS系統(tǒng)的編程,蘋果開發(fā)的編寫軟件xCode非常人性化和合理化,使用此軟件進行編程非常的方便,它把所需的一切都結合在一起。當然編寫過程中遇到很多困難,而現(xiàn)在基於IOS編程的教科書少之又少,國內(nèi)網(wǎng)站也很少有關於此的教程,我只能去外國的網(wǎng)站搜索相關的解決辦法,最後經(jīng)過我的不懈努
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 資料庫系統(tǒng)理論與實務
- 餐飲成本控制
- 二階存貨配銷系統(tǒng)中以整合採購及比例配送觀念實現(xiàn)風險共擔之研究
- 工業(yè)工程與系統(tǒng)管理學系碩士學位論文指導教授同意書
- 明新科技大學運動管理實務與實習實施要點(草案)
- 成本會計管理系統(tǒng)
- 供水系統(tǒng)模型與管理策略建立之研究.pdf
- 諺譯《老樸》與近代漢語語音系統(tǒng)研究——《翻譯老樸》聲母系統(tǒng)-.pdf
- 三星現(xiàn)代的共通點在於恐懼經(jīng)營
- 系統(tǒng)設計流程
- 課程本位評量理論與實務
- 粒子重構系統(tǒng)
- 策略具體行動化系統(tǒng)平衡計分卡之探討與應用
- 全面品質(zhì)管理輔助教學系統(tǒng)
- 基于ios的點餐系統(tǒng)的設計與實現(xiàn)
- 基于ios的點餐系統(tǒng)說明書
- 基于ios的點餐系統(tǒng)的設計與實現(xiàn)
- 電信管線資源管理系統(tǒng)的設計與實現(xiàn).pdf
- 基於DEA模型的商業(yè)銀行風險效率研究——兩岸三地銀行實證分析.pdf
- [學習]兒少保護相關法令與實務
評論
0/150
提交評論