版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 學(xué)士學(xué)位論文</b></p><p> 題 目: 基于Linux餐廳點(diǎn)菜系統(tǒng)的設(shè)計(jì)與開發(fā)</p><p> 姓 名: *** </p><p> 分 院: 工學(xué)院 </p>&l
2、t;p> ?! I(yè): 電子信息工程 </p><p> 學(xué) 號(hào): </p><p> 指導(dǎo)教師: *** </p><p> 二0 年 月 日</p><p>
3、; 畢業(yè)設(shè)計(jì)(論文)任務(wù)書</p><p><b> 摘 要</b></p><p> 中國是舉世聞名的美食大國,擁有五千年的飲食文化和巨大的餐飲市場(chǎng)。隨著人民生活水平和生活方式的轉(zhuǎn)變,漸漸的人們發(fā)現(xiàn)餐飲業(yè)具有巨大的投資市場(chǎng)。中國市場(chǎng)的競(jìng)爭(zhēng)尤為激烈,而且隨著餐飲業(yè)的迅速擴(kuò)展,其中所暴露的問題也是不容忽視的,如餐飲業(yè)管理人才的專業(yè)化程度不夠?qū)е聝?nèi)供不足,餐廳缺少
4、一套現(xiàn)代企業(yè)制度和監(jiān)督管理體制,服務(wù)管理應(yīng)變能力差,缺乏先進(jìn)的信息工具等。所以,餐飲業(yè)管理從觀念意識(shí)、經(jīng)營思想和管理水平還有待專業(yè)化。因此,開發(fā)實(shí)用型點(diǎn)菜系統(tǒng)是餐飲業(yè)發(fā)展的必然趨勢(shì)。</p><p> 本系統(tǒng)是基于Linux系統(tǒng)下開發(fā)的餐廳點(diǎn)菜系統(tǒng),運(yùn)用服務(wù)器/客戶端開發(fā)模式,采用的是RedHat企業(yè)版5,圖形界面功能由QT類開發(fā),后臺(tái)數(shù)據(jù)庫采用SQLITE3,網(wǎng)絡(luò)編程使用的協(xié)議是Linux支配的Socket
5、TCP/IP 協(xié)議。前臺(tái)劃分為前臺(tái)管理,點(diǎn)菜管理,后廚管理,數(shù)據(jù)庫管理,服務(wù)器五個(gè)功能模塊。</p><p> 本系統(tǒng)的主要作業(yè)流程,從顧客在前臺(tái)查看餐桌空閑空閑狀態(tài),入桌點(diǎn)菜,可以加菜、刪菜等,提交菜單,后廚按照菜單做菜,顧客到前臺(tái)結(jié)賬,前臺(tái)打印賬單,顧客結(jié)賬,實(shí)現(xiàn)了開臺(tái)、點(diǎn)菜、加菜、刪菜等系統(tǒng)設(shè)計(jì)功能。</p><p> 關(guān)鍵詞:餐廳點(diǎn)菜系統(tǒng);Linux;QT;SQLITE3<
6、;/p><p><b> Abstract</b></p><p> China is world-famous cate big country, with five thousand years of diet culture and great food market. As the people's living standard and life t
7、ransitions, gradually people found restaurant industry has great investment market. China was particularly intense market competition, and with the rapid expansion of catering industry, which is exposed to the problem is
8、 also not allow to ignore, such as catering management personnel of professional enough to lead to internal for shortage, lack of a re</p><p> This system is based on Linux system of development order syste
9、m restaurant, using server/client development mode, use is RedHat enterprise version 5, graphic interface functions by QT kind of development, the backend database using SQLITE3, network programming use agreement is Linu
10、x dominate Socket of the TCP/IP protocol. The front desk is divided into the front desk management, order management, management after hutch, database management, server five function module.</p><p> The sy
11、stem's main operation process, from the customer in the front desk check table free idle state, into the table to order, can add food, delete vegetables etc, submit the menu, kitchen according to menu after cooking,
12、the customer to front desk check, front desk print bill, customer checkout, realize the founding, order, and food, delete vegetables etc system design functions.</p><p> Keywords:Restaurant order system;Lin
13、ux;QT;SQLITE3</p><p><b> 目 錄</b></p><p><b> 摘 要I</b></p><p> AbstractII</p><p> 第1章 緒 論1</p><p> 1.1 選題目的和意義1</p>
14、<p> 1.2 國內(nèi)外綜述1</p><p> 1.3 論文研究內(nèi)容2</p><p> 第2章 相關(guān)知識(shí)概述3</p><p> 2.1 系統(tǒng)開發(fā)環(huán)境3</p><p> 2.2 系統(tǒng)的結(jié)構(gòu)4</p><p> 2.3 應(yīng)用的相關(guān)技術(shù)5</p><p>
15、 2.3.1 QT圖形界面5</p><p> 2.3.2 SQLite數(shù)據(jù)庫5</p><p> 2.3.3 Linux系統(tǒng)支配的TCP/IP協(xié)議6</p><p><b> 2.4本章小結(jié)8</b></p><p> 第3章 系統(tǒng)分析及設(shè)計(jì)9</p><p> 3.1系統(tǒng)
16、需求分析9</p><p> 3.1.1功能需求9</p><p> 3.1.2性能需求9</p><p> 3.2系統(tǒng)開發(fā)環(huán)境10</p><p> 3.3系統(tǒng)總體功能模塊10</p><p> 3. 4數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)12</p><p> 3.5本章小結(jié)12<
17、/p><p> 第4章 軟件設(shè)計(jì)13</p><p> 4.1 數(shù)據(jù)庫表結(jié)構(gòu)設(shè)計(jì)13</p><p> 4.2 各功能模塊的詳細(xì)設(shè)計(jì)13</p><p> 4.2.1 服務(wù)器管理模塊13</p><p> 4.2.2 前臺(tái)管理模塊14</p><p> 4.2.3 顧客點(diǎn)菜端管
18、理模塊15</p><p> 4.2.4 后廚管理系統(tǒng)20</p><p> 4.2.5 數(shù)據(jù)庫管理模塊20</p><p> 4.3本章小結(jié)22</p><p> 第5章 系統(tǒng)測(cè)試23</p><p> 5.1測(cè)試方法與原則23</p><p> 5.1.1 黑盒測(cè)試
19、23</p><p> 5.1.2 測(cè)試基本原則23</p><p> 5.2 系統(tǒng)測(cè)試23</p><p> 5.3 測(cè)試小結(jié)26</p><p><b> 結(jié) 論27</b></p><p><b> 致 謝28</b></p>&
20、lt;p><b> 參考文獻(xiàn)29</b></p><p><b> 附錄A30</b></p><p><b> 附錄B35</b></p><p><b> 第1章 緒 論</b></p><p> 1.1 選題目的和意義<
21、/p><p> 面對(duì)餐飲業(yè)多元化的經(jīng)營現(xiàn)狀,經(jīng)營的特色、規(guī)模、出品這些因素的不同,帶給餐飲企業(yè)的則是不同的標(biāo)準(zhǔn)和工作流程和方法,面對(duì)著這解決方法不一的情況,對(duì)人才的專業(yè)化程度的要求也相應(yīng)地提高了,然而在國內(nèi)市場(chǎng)上,餐飲業(yè)人才供應(yīng)不足,在這樣的兩難情況下,信息系統(tǒng)得出現(xiàn)暫緩了這一緊張局面。</p><p> 首先,餐飲管理信息系統(tǒng)不是單純的用于結(jié)帳計(jì)算的工具,它有著科學(xué)的、標(biāo)準(zhǔn)的管理體系,它
22、是通過對(duì)目前餐飲市場(chǎng)的具體情況科學(xué)的調(diào)研分析后設(shè)計(jì)而成的,它能夠針對(duì)中餐因其菜品的多樣化和特色化的服務(wù)很難實(shí)現(xiàn)標(biāo)準(zhǔn)化管理,使中餐企業(yè)的成本控制很難實(shí)現(xiàn)這些問題給與解決。</p><p> 其次,餐飲管理信息系統(tǒng)能夠給出具體的相應(yīng)的符合企業(yè)自身要求的較科學(xué)的標(biāo)準(zhǔn)化管理流程,這暫時(shí)緩解了專業(yè)人才的需求,通過使用該系統(tǒng)就能完成專業(yè)人員所要做的事。</p><p> 最后,餐飲管理信息系統(tǒng)可以
23、針對(duì)企業(yè)的經(jīng)營現(xiàn)狀而做出科學(xué)的分析,使得企業(yè)對(duì)市場(chǎng)的應(yīng)變能力得到了提高,從而通過餐飲管理信息系統(tǒng)來實(shí)現(xiàn)強(qiáng)化管理、降低成本、堵漏節(jié)流等作用。更好的完善企業(yè)的經(jīng)營管理,提高企業(yè)自身的競(jìng)爭(zhēng)實(shí)力。</p><p> 另一方面,基于ARM和Linux的嵌入式系統(tǒng),具有成熟的嵌入式硬件結(jié)構(gòu)和豐富的開放軟件資源,優(yōu)良的性能和廣泛的市場(chǎng)定位,這無疑對(duì)開發(fā)工作和學(xué)習(xí)研究是一個(gè)重大幫助;在GUI(圖形用戶界面)的選用上,使用基于C
24、++語言面向?qū)ο缶幊痰膽?yīng)用程序開發(fā)軟件庫Qt,它匯集了豐富的C++類提供開發(fā)應(yīng)用程序用戶界面所需要的全部內(nèi)容,具有優(yōu)良的跨平臺(tái)性能和豐富的API函數(shù)及開發(fā)文檔。另外,當(dāng)前量產(chǎn)的普通PDA和PC機(jī)硬件上已經(jīng)基本滿足點(diǎn)菜需求,使自行研究的專用硬件設(shè)備不再具有明顯的成本優(yōu)勢(shì),為此,本課題集合嵌入式Linux和Qt開發(fā)應(yīng)用等技術(shù),以程序軟件的通用性和易用性為方向,構(gòu)造能夠方便移植的軟件。提高餐飲業(yè)的服務(wù)質(zhì)量,并為自身研究學(xué)習(xí)嵌入式系統(tǒng)和GUI應(yīng)
25、用開發(fā)提供一個(gè)良好的平臺(tái)。</p><p><b> 1.2 國內(nèi)外綜述</b></p><p> 餐廳點(diǎn)菜系統(tǒng)代表著當(dāng)今餐飲業(yè)解決方案中最尖端的領(lǐng)先科技,它集網(wǎng)絡(luò)通信技術(shù)與移動(dòng)電腦終端技術(shù)與一身,此高端技術(shù)應(yīng)用在餐飲行業(yè)中,即使在美國也是2001年才在洛杉磯的一家高檔餐廳中誕生;國內(nèi)于2002年3月份方有一例高檔的餐館在上海露面,開中國餐飲管理真正數(shù)字化之先河,
26、在餐飲業(yè)轟動(dòng)一時(shí)。自此,點(diǎn)菜系統(tǒng)市場(chǎng)上豪杰并起,全面促進(jìn)了餐飲業(yè)信息化管理的普及和發(fā)展。</p><p> 目前,國內(nèi)已經(jīng)有不少公司開發(fā)出電子點(diǎn)菜系統(tǒng),例如上海工理電子有限公司的點(diǎn)菜通、餐飲通等,北京辰森計(jì)算機(jī)系統(tǒng)有限公司的手持點(diǎn)菜寶等。有些大型的餐飲企業(yè)已經(jīng)采用了這兩個(gè)公司的產(chǎn)品,例如,花雨大酒店、上海美林閣等采用了上海工理電子有限公司的點(diǎn)菜通或餐飲通;向陽漁港集團(tuán)、中國全聚集團(tuán)、四川文杏大酒樓則采用了北京辰
27、森計(jì)算機(jī)系統(tǒng)有限公司的手持點(diǎn)菜系統(tǒng)。但是由于成本等原因使電子點(diǎn)菜系統(tǒng)的餐館還比較少,市場(chǎng)需求很大。隨著技術(shù)的進(jìn)步及餐飲業(yè)的激烈競(jìng)爭(zhēng),電子點(diǎn)菜系統(tǒng)將會(huì)越來越普遍,并越做越好。</p><p> 市場(chǎng)上出現(xiàn)的點(diǎn)菜系統(tǒng)都是作為餐廳信息化管理系統(tǒng)的一部分出現(xiàn)的,它們除了實(shí)現(xiàn)基本的點(diǎn)菜功能外,為了便于客戶及管理者的使用,還添加了許多其他的功能,例如,查詢當(dāng)前餐館的資源使用情況,記錄營業(yè)歷史,當(dāng)前工作狀態(tài)等。由此可見,開發(fā)
28、餐廳點(diǎn)菜系統(tǒng)具有重大的意義。首先,提高運(yùn)營效率與降低運(yùn)營成本,使用餐廳點(diǎn)菜系統(tǒng)可以加快點(diǎn)菜速度,減少人力資源的投入,避免跑、冒、漏;其次,提升餐廳品牌與形象,餐廳點(diǎn)菜系統(tǒng)是一個(gè)高科技產(chǎn)品,它代替?zhèn)鹘y(tǒng)的紙筆式點(diǎn)菜方式給人一種高貴的感覺;最后,營造一個(gè)安靜、舒服的就餐環(huán)境,傳統(tǒng)的餐廳點(diǎn)菜方式在某些環(huán)節(jié)中出現(xiàn)大聲喧嘩的場(chǎng)面,餐廳點(diǎn)菜系統(tǒng)則可以避免這類情況的發(fā)生。</p><p> 如今開源的嵌入式Linux操作系統(tǒng)已
29、經(jīng)發(fā)展的非常成熟,其性能并不亞于很多商業(yè)操作系統(tǒng),而且,它支持的上層軟件非常多,數(shù)據(jù)庫方面的有MySQL、Sqlite等,用戶圖形界面系統(tǒng)有Qt、MiniGUI和Microwindows等。因此,構(gòu)造一個(gè)基于嵌入式Linux的點(diǎn)菜系統(tǒng)在技術(shù)上來說已經(jīng)不是困難的事。</p><p> 1.3 論文研究內(nèi)容</p><p> 本文設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)功能簡單的餐廳點(diǎn)菜系統(tǒng),基于該系統(tǒng)可以容易過
30、渡到實(shí)用的點(diǎn)菜系統(tǒng)。在該系統(tǒng)的實(shí)現(xiàn)過程中設(shè)計(jì)到許多技術(shù),其中主要有嵌入式技術(shù)、數(shù)據(jù)庫技術(shù)、用戶圖形界面編程技術(shù)等。</p><p> 餐廳點(diǎn)菜系統(tǒng)一般都涉及很多數(shù)據(jù),而且還要對(duì)數(shù)據(jù)進(jìn)行各種處理,因而絕大部分餐廳點(diǎn)菜系統(tǒng)都用數(shù)據(jù)庫管理系統(tǒng)來管理數(shù)據(jù)。數(shù)據(jù)庫管理系統(tǒng)一般依賴與某種操作系統(tǒng),因此,也要選擇一個(gè)合適的操作系統(tǒng)。另外,為了方便用戶的使用,還要設(shè)計(jì)一個(gè)人性化的圖形界面。餐廳點(diǎn)菜系統(tǒng)中,管理數(shù)據(jù)的地方與使用數(shù)
31、據(jù)的地方往往不在同一個(gè)站點(diǎn)上,需要用到計(jì)算機(jī)網(wǎng)絡(luò)將二者聯(lián)系起來。在本文設(shè)計(jì)的系統(tǒng)中使用了MySQL來管理數(shù)據(jù),操作系統(tǒng)選用了Linux,用戶圖形界面引入了Qt。</p><p> 本課題通過研究現(xiàn)有的電子點(diǎn)菜系統(tǒng)的解決方案,以當(dāng)代廣泛應(yīng)用的Linux系統(tǒng)、Qt圖形界面、SQLite數(shù)據(jù)庫、系統(tǒng)支持的TCP/IP網(wǎng)絡(luò)通信協(xié)議來實(shí)現(xiàn)的點(diǎn)菜系統(tǒng)的終端。具體包括以下內(nèi)容:</p><p> 1
32、.Linux系統(tǒng)開發(fā)平臺(tái)的構(gòu)建:使用是全球應(yīng)用最廣泛的Red Hat Linux,建立基本的開發(fā)環(huán)境,建立編譯工具,安裝用于程序開發(fā)的Qt,用于數(shù)據(jù)管理的SQLite3。</p><p> 2.點(diǎn)菜終端程序設(shè)計(jì):首先利用Qt設(shè)計(jì)器規(guī)劃點(diǎn)菜終端的程序的大致界面,然后遵循Qt編程一般規(guī)則編寫代碼,主要為主窗口類的實(shí)現(xiàn),實(shí)現(xiàn)開臺(tái)、點(diǎn)菜、加菜、刪菜等功能,并在主程序中添加國際化和中文支持,編譯后進(jìn)行測(cè)試。</p&
33、gt;<p> 3.?dāng)?shù)據(jù)庫的設(shè)計(jì):首先利用Qt設(shè)計(jì)器規(guī)劃數(shù)據(jù)庫管理程序的大致界面,然后遵循Qt編程一般規(guī)則編寫代碼,主要為主窗口類的實(shí)現(xiàn),數(shù)據(jù)庫的管理功能,包括刪除菜單列表、添加菜單列表,查詢菜單等功能,并在主程序中添加中文支持。</p><p> 第2章 相關(guān)知識(shí)概述</p><p> 本系統(tǒng)主要運(yùn)用到的開發(fā)系統(tǒng)環(huán)境是Linux系統(tǒng),選擇的是RedHat 企業(yè)版5,該
34、系統(tǒng)是采用C/S(客戶端/服務(wù)器)架構(gòu)開發(fā)的,其中運(yùn)用到的技術(shù)有QT圖形界面的開發(fā)、SQLITE3數(shù)據(jù)庫的開發(fā)及socket編程。</p><p> 2.1 系統(tǒng)開發(fā)環(huán)境</p><p> Linux是一種自由和開放源碼的類Unix操作系統(tǒng)。目前存在著許多不同的Linux,但它們都使用了Linux內(nèi)核。Linux可安裝在各種計(jì)算機(jī)硬件設(shè)備中,從手機(jī)、平板電腦、路由器和視頻游戲控制臺(tái),到
35、臺(tái)式計(jì)算機(jī)、大型機(jī)和超級(jí)計(jì)算機(jī)。Linux是一個(gè)領(lǐng)先的操作系統(tǒng),世界上運(yùn)算最快的10臺(tái)超級(jí)計(jì)算機(jī)運(yùn)行的都是Linux操作系統(tǒng)。嚴(yán)格來講,Linux這個(gè)詞本身只表示Linux內(nèi)核,但實(shí)際上人們已經(jīng)習(xí)慣了用Linux來形容整個(gè)基于Linux內(nèi)核,并且使用GNU 工程各種工具和數(shù)據(jù)庫的操作系統(tǒng)。</p><p> 1.Linux操作系統(tǒng)概述:Linux操作系統(tǒng)是UNIX操作系統(tǒng)的一種克隆系統(tǒng)。Linux于1991年8
36、月在Usenet新聞組comp.os.minix上正式發(fā)布(Free minx-like kernel sources for 386-AT)。其創(chuàng)始人是林納斯·本納第克特·托瓦茲(Lines Benedict Tornados),出生于芬蘭赫爾辛基市。他畢業(yè)于赫爾辛基大學(xué)計(jì)算機(jī)科學(xué)系。早期的Linux1.0版本內(nèi)核發(fā)布于1994年3月14日,兩年之后2.0版本發(fā)布,此時(shí),Linux功能已經(jīng)非常強(qiáng)大,只是界面設(shè)計(jì)不是
37、很理想。</p><p> Linux被大眾所關(guān)注是在1998年3月,當(dāng)Netscape承諾在GNU計(jì)劃的GPL(General Public License,通用公共許可證)的一個(gè)修訂版本的基礎(chǔ)上公開Netscape Communicator Internet套件的源代碼的時(shí)候。同年7月,世界上最大的兩家關(guān)系數(shù)據(jù)庫廠商Informix和Oracle宣布把他們的數(shù)據(jù)庫產(chǎn)品移植到了Linux上。一個(gè)月后,Inte
38、l和Netscape公司購買了Linux發(fā)布商中的領(lǐng)頭羊Red Hat公司的少量股票,專項(xiàng)資金投入了Linux世界。次年,Linux成為了IT市場(chǎng)的年青分子,隨著RedHat和Valium成為上市的Linux公司,Linux得到了軟硬件廠商的投資支持,很快便眾所周知,公眾對(duì)Linux的興趣與日俱增,相關(guān)的大眾媒體也蜂擁而至,幾乎每周都有與Linux相關(guān)的消息發(fā)布,此時(shí)的Linux已經(jīng)不僅僅是愛好者的玩具了。</p><
39、;p> 如今Linux已經(jīng)是軟件開發(fā)人員的首選開發(fā)環(huán)境,其發(fā)行版超過了三百個(gè),最普遍被使用的發(fā)行版有大約十二個(gè),例如Bantu,RedHat,Defiant,F(xiàn)edora等。通常來講,一個(gè)Linux發(fā)行版包括Linux內(nèi)核,將整個(gè)軟件安裝到電腦上的一套安裝工具,各種GNU軟件,其他的一些自由軟件,在一些特定的Linux發(fā)行版中也有一些專有軟件。發(fā)行版為許多不同的目的而制作,包括對(duì)不同計(jì)算機(jī)結(jié)構(gòu)的支持,對(duì)一個(gè)具體區(qū)域或語言的本地化
40、,實(shí)時(shí)應(yīng)用,和嵌入式系統(tǒng)。Linux主要作為Linux發(fā)行版(通常被稱為"distort")的一部分而使用</p><p> 2. Linux操作系統(tǒng)特點(diǎn):Linux是一款開放源代碼的操作系統(tǒng)。用戶可以通過任何途徑免費(fèi)獲得它的源代碼,并可以任意修改其源代碼。這是其他的操作系統(tǒng)所做不到的。由于它的開放性使無數(shù)程序員積極的參與了Linux的修改、編寫工作,使得Linux吸收了無數(shù)程序員在根據(jù)自己
41、的興趣和靈感對(duì)其所做的精華改變,并不斷壯大。</p><p> Linux支持多任務(wù)、多用戶。多任務(wù)使得Linux可以同時(shí)獨(dú)立運(yùn)行多個(gè)程序而互不影響,為大型的多任務(wù)工程提供保障。多用戶使得各個(gè)用戶對(duì)于自己的文件設(shè)備有自己特殊的權(quán)利,保證了各用戶之間互不影響。</p><p> Linux同時(shí)具有字符界面和圖形界面。在字符界面用戶可以通過鍵盤輸入相應(yīng)的指令來進(jìn)行操作。它同時(shí)也提供了類似W
42、indows圖形界面的X-Window系統(tǒng),用戶可以使用鼠標(biāo)對(duì)其進(jìn)行操作。在X-Window環(huán)境中就和在Windows中相似,可以說是一個(gè)Linux版的Windows。</p><p> Linux提供了先進(jìn)的網(wǎng)絡(luò)支持。它的網(wǎng)絡(luò)功能和其內(nèi)核緊密相連,用戶可以輕松實(shí)現(xiàn)網(wǎng)頁瀏覽、文件傳輸、遠(yuǎn)程登陸等網(wǎng)絡(luò)工作。并且可以作為服務(wù)器提供WWW、FTP、E-Mail等服務(wù)。</p><p> Li
43、nux完全運(yùn)行于保護(hù)模式,其中有對(duì)讀、寫進(jìn)行權(quán)限控制、審計(jì)跟蹤、核心授權(quán)等技術(shù)。Linux以它較高的穩(wěn)定性在網(wǎng)絡(luò)服務(wù)器上利于不敗之地。</p><p> Linux可以運(yùn)行在多種硬件平臺(tái)上,如具有x86、680x0、SPARC、Alpha等處理器的平臺(tái)。此外Linux還是一種嵌入式操作系統(tǒng),業(yè)界歸納為什么Linux嵌入式操作系統(tǒng)發(fā)展如此之快的三大原因是:第一,Linux在嵌入式系統(tǒng)所需的實(shí)時(shí)性、電源管理等核心技
44、術(shù)不斷發(fā)展,成熟可期。第二,國際標(biāo)準(zhǔn)組織OSDL、CELF等,持續(xù)建立嵌入式Linux相關(guān)標(biāo)準(zhǔn),有效解決版本分歧與兼容性問題。第三,業(yè)界主導(dǎo)組織、開發(fā)廠商等不斷推出嵌入式Linux相關(guān)開發(fā)工具、維護(hù)系統(tǒng)。2001年1月份發(fā)布的Linux 2.4版內(nèi)核已經(jīng)能夠完全支持Intel 64位芯片架構(gòu)。同時(shí)Linux也支持多處理器技術(shù)。多個(gè)處理器同時(shí)工作,使系統(tǒng)性能大大提高。Linux支持?jǐn)?shù)十種文件系統(tǒng)格式。普通文件,純文本文件,二進(jìn)制文件,數(shù)據(jù)
45、格式文件,目錄,連接文件,設(shè)備與設(shè)備文件,塊設(shè)備文件,字符設(shè)備文件,套接字和管道等。采用先進(jìn)的內(nèi)存管理機(jī)制,更加有效的利用物理內(nèi)存。主要有頁面、連續(xù)內(nèi)存區(qū)管理和非連續(xù)存儲(chǔ)區(qū)管理機(jī)制。</p><p> 3.Linux的基本思想:Linux的基本思想有兩點(diǎn),第一,一切都是文件;第二,每個(gè)軟件都有確定的用途。其中第一條詳細(xì)來講就是系統(tǒng)中的所有都?xì)w結(jié)為一個(gè)文件,包括命令、硬件和軟件設(shè)備、操作系統(tǒng)、進(jìn)程等等對(duì)于操作系統(tǒng)
46、內(nèi)核而言,都被視為擁有各自特性或類型的文件。至于說Linux是基于Unix的,很大程度上也是因?yàn)檫@兩者的基本思想十分相近。</p><p><b> 2.2 系統(tǒng)的結(jié)構(gòu)</b></p><p> 傳統(tǒng)的C/S體系結(jié)構(gòu)常采用的是開放模式,但這只是系統(tǒng)開發(fā)一級(jí)的開放性,在特定的應(yīng)用中無論是Client端還是Server端都還需要特定的軟件支持。由于沒能提供用戶真正期望
47、的開放環(huán)境,C/S結(jié)構(gòu)的軟件需要針對(duì)不同的操作系統(tǒng)開發(fā)不同版本的軟件,加之產(chǎn)品的更新?lián)Q代快,已經(jīng)很難適應(yīng)百臺(tái)電腦以上局域網(wǎng)用戶同時(shí)使用。而且代價(jià)高,效率低。</p><p> 目前,C/S 結(jié)構(gòu)的基本原則是將計(jì)算機(jī)任務(wù)分解成多個(gè)子任務(wù),由多臺(tái)計(jì)算機(jī)分工完成,即采用“功能分布”原則??蛻舳送瓿蓴?shù)據(jù)處理,數(shù)據(jù)表示以及用戶接口功能;服務(wù)器端完成DBMS的核心功能。這種客戶請(qǐng)求服務(wù)、服務(wù)器提供服務(wù)的處理方式是一種新型的
48、計(jì)算機(jī)應(yīng)用模式。</p><p> C/S結(jié)構(gòu)的優(yōu)點(diǎn)是能充分發(fā)揮出客戶端PC的處理能力,很多工作可以在客戶端處理后再提交給服務(wù)器。對(duì)應(yīng)的優(yōu)點(diǎn)就是客戶端響應(yīng)速度非??臁H秉c(diǎn)主要反映以下3個(gè)方面: </p><p> 1.只適用于局域網(wǎng)。而隨著互聯(lián)網(wǎng)的飛速發(fā)展,移動(dòng)辦公和分布式辦公越來越普及,這需要我們的系統(tǒng)具有擴(kuò)展性。這種方式遠(yuǎn)程訪問需要專門的技術(shù),同時(shí)要對(duì)系統(tǒng)進(jìn)行專門的設(shè)計(jì)來處理分布式
49、的數(shù)據(jù)。 </p><p> 2.客戶端需要安裝專用的客戶端軟件。首先涉及到安裝的工作量,其次任何一臺(tái)電腦出問題,如病毒、硬件損壞,都需要進(jìn)行安裝或維護(hù)。特別是有很多分部或?qū)Yu店的情況,不是工作量的問題,而是路程的問題。還有,系統(tǒng)軟件升級(jí)時(shí),每一臺(tái)客戶機(jī)需要重新安裝,其維護(hù)和升級(jí)成本非常高。</p><p> 3.對(duì)客戶端的操作系統(tǒng)一般也會(huì)有限制??赡苓m應(yīng)于Win98, 但不能用于wi
50、n2000或Windows XP。或者不適用于微軟新的操作系統(tǒng)等等,更不用說Linux、Unix等。</p><p> 2.3 應(yīng)用的相關(guān)技術(shù)</p><p> 本系統(tǒng)應(yīng)用的相關(guān)技術(shù)主要有QT的圖形界面的開發(fā)、數(shù)據(jù)庫的SQLITE的應(yīng)用、還有運(yùn)用到了TCP/IP協(xié)議。</p><p> 2.3.1 QT圖形界面</p><p> 1.
51、Qt概念:Qt是諾基亞開發(fā)的一個(gè)跨平臺(tái)的C++圖形用戶界面應(yīng)用程序框架。它提供給應(yīng)用程序開發(fā)者建立藝術(shù)級(jí)的圖形用戶界面所需的所用功能。QT是完全面向?qū)ο蟮?,很容易擴(kuò)展,并且允許真正地組件編程。所以說QT的進(jìn)步發(fā)展將會(huì)推進(jìn)諾基亞桌面等方面的大幅度進(jìn)步。</p><p> 2.Qt的特點(diǎn):Qt是一款面向?qū)ο蟮膱D形界面開發(fā)工具。Qt 的良好封裝機(jī)制使得Qt的模塊化程度非常高,可重用性較好,對(duì)于用戶開發(fā)來說是非常 方便
52、的。Qt 提供了一種稱為 signals/slots 的安全類型來替代 callback,這使得各個(gè)元件之間的協(xié)同工作變得十分簡單。它具有豐富的API。Qt包括多達(dá) 250 個(gè)以上的 C++ 類,還提供基于模板的 collections,serialization,file,I/O device,directory management, date/time 類。甚至還包括正則表達(dá)式的處理 功能。Qt支持 2D/3D 圖形渲染,支持 O
53、penGL。真正使得 Qt 在自由軟件界的眾多 Widgets (如 Lesstif,Gtk,EZWGL,Xforms,fltk 等等)中脫穎而出的還是基于 Qt 的重量級(jí)軟件 KDE。</p><p> 3.QtCreator:在發(fā)布Qt 4.6 的同時(shí),作為Qt開發(fā)跨平臺(tái) IDE 的 Qt Creator 也發(fā)布了更新版本。Qt Creator 1.3 和 Qt 4.6共同構(gòu)成的 Qt SDK,包含了開發(fā)跨
54、平臺(tái)應(yīng)用程序所需的全部功能。</p><p> Qt Creator是一個(gè)用于Qt開發(fā)的輕量級(jí)跨平臺(tái)集成開發(fā)環(huán)境。Qt Creator可帶來兩大關(guān)鍵益處:提供首個(gè)專為支持跨平臺(tái)開發(fā)而設(shè)計(jì)的集成開發(fā)環(huán)境 (IDE),并確保首次接觸Qt框架的開發(fā)人員能迅速上手和操作。</p><p> Qt Creator包含了一套用于創(chuàng)建和測(cè)試基于Qt應(yīng)用程序的高效工具,包括:一個(gè)高級(jí)的C++代碼編輯器
55、 上下文感知幫助系統(tǒng) 可視化調(diào)試器 源代碼管理 項(xiàng)目和構(gòu)建管理工具。</p><p> 2.3.2 SQLite數(shù)據(jù)庫</p><p> SQLite,是一款輕型的數(shù)據(jù)庫,是遵守ACID的關(guān)聯(lián)式數(shù)據(jù)庫管理系統(tǒng),它的設(shè)計(jì)目標(biāo)是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百K的內(nèi)存就夠了。它能夠支持Windows/Linux/Unix等
56、等主流的操作系統(tǒng),同時(shí)能夠跟很多程序語言相結(jié)合,比如 Tcl、C#、PHP、Java等,還有ODBC接口,同樣比起Mysql、PostgreSQL這兩款開源世界著名的數(shù)據(jù)庫管理系統(tǒng)來講,它的處理速度比他們都快。SQLite第一個(gè)Alpha版本誕生于2000年5月,至今已經(jīng)有10個(gè)年頭,SQLite也迎來了一個(gè)版本 SQLite 3已經(jīng)發(fā)布。SQLite的具有以下特性:</p><p> 1.ACID事務(wù); &
57、lt;/p><p> 2.零配置–無需安裝和管理配置; </p><p> 3.儲(chǔ)存在單一磁盤文件中的一個(gè)完整的數(shù)據(jù)庫; </p><p> 4.數(shù)據(jù)庫文件可以在不同字節(jié)順序的機(jī)器間自由的共享; </p><p> 5.支持?jǐn)?shù)據(jù)庫大小至2TB; </p><p> 6.足夠小,大致3萬行C代碼, 25
58、0K; </p><p> 7.比一些流行的數(shù)據(jù)庫在大部分普通數(shù)據(jù)庫操作要快; </p><p> 8.簡單,輕松的API; </p><p> 9.包含TCL綁定,同時(shí)通過Wrapper支持其他語言的綁定。; </p><p> 10.良好注釋的源代碼,并且有著90%以上的測(cè)試覆蓋率; </p><p
59、> 11.獨(dú)立:沒有額外依賴; </p><p> 12.Source完全的Open,你可以用于任何用途, 包括出售它; </p><p> 13.支持多種開發(fā)語言,C,PHP, Perl, Java, C#,Python。</p><p> 基于SQLITE有諸多特性,我在設(shè)計(jì)該點(diǎn)菜系統(tǒng)時(shí)應(yīng)用的數(shù)據(jù)庫選擇了它,它雖然很小巧,但是支持的SQL語句
60、不會(huì)遜色于其他開源數(shù)據(jù)庫,同時(shí)還支持事務(wù)處理功能等待。</p><p> 2.3.3 Linux系統(tǒng)支配的TCP/IP協(xié)議</p><p> TCP/IP 是一個(gè)網(wǎng)絡(luò)協(xié)議族的名字,協(xié)議是所有軟件產(chǎn)品必須遵守的、能夠保證各種軟件產(chǎn)品能夠正確通訊的規(guī)則。協(xié)議還定義了每一部分?jǐn)?shù)據(jù)塊怎樣管理所傳輸?shù)臄?shù)據(jù)。精確一點(diǎn)說,一個(gè)協(xié)議定義了兩個(gè)應(yīng)用程序或是計(jì)算機(jī)之間能夠進(jìn)行互相通訊,對(duì)于其中的每一個(gè)(應(yīng)
61、用程序或計(jì)算機(jī))都保證使用同樣的標(biāo)準(zhǔn)。</p><p> TCP/IP 代表傳輸控制協(xié)議/網(wǎng)絡(luò)協(xié)議,它是做為軟件的網(wǎng)絡(luò)組成部件而設(shè)計(jì)的。每個(gè)TCP/IP 的協(xié)議都有他專門的工作,比如萬維網(wǎng)(WWW),發(fā)送電子郵件(E-mail),傳輸文件(Ftp),提供遠(yuǎn)程登陸服務(wù)等。從協(xié)議分層模型方面來講,TCP/IP由四個(gè)層次組成:網(wǎng)絡(luò)接口層、網(wǎng)絡(luò)層、傳輸層、應(yīng)用層。 TCP/IP協(xié)議并不完全符合OSI的七層參考模型。
62、OSI是傳統(tǒng)的開放式系統(tǒng)互連參考模型,是一種通信協(xié)議的7層抽象的參考模型,其中每一層執(zhí)行某一特定任務(wù)。該模型的目的是使各種硬件在相同的層次上相互通信。這7層是物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會(huì)話層、表示層和應(yīng)用層。而TCP/IP通訊協(xié)議采用了4層的層級(jí)結(jié)構(gòu),每一層都呼叫它的下一層所提供的網(wǎng)絡(luò)來完成自己的需求。由于ARPNET的設(shè)計(jì)者注重的是網(wǎng)絡(luò)互聯(lián),允許通信子網(wǎng)(網(wǎng)絡(luò)接口層)采用已有的或是將來有的各種協(xié)議,所以這個(gè)層次中沒有提供專門
63、的協(xié)議。實(shí)際上,TCP/IP協(xié)議可以通過網(wǎng)絡(luò)接口層連接到任何網(wǎng)絡(luò)上,例如X.25交換網(wǎng)或IEEE802局域網(wǎng)。TCP/IP協(xié)議的具有以下3個(gè)特點(diǎn):</p><p> 1.對(duì)數(shù)據(jù)可靠性的要求:對(duì)數(shù)據(jù)要求高可靠性的應(yīng)用需選擇TCP協(xié)議,如驗(yàn)證、密碼字段的傳送都是不允許出錯(cuò)的,而對(duì)數(shù)據(jù)的可靠性要求不那么高的應(yīng)用可選擇UDP傳送。</p><p> 2.應(yīng)用的實(shí)時(shí)性:TCP協(xié)議在傳送過程中要使
64、用三次握手、重傳確認(rèn)等手段來保證數(shù)據(jù)傳輸?shù)目煽啃?。使用TCP協(xié)議會(huì)有較大的時(shí)延,因此不適合對(duì)實(shí)時(shí)性要求較高的應(yīng)用,如VOIP、視頻監(jiān)控等。相反,UDP協(xié)議則在這些應(yīng)用中能發(fā)揮很好的作用。</p><p> 3.網(wǎng)絡(luò)的可靠性:由于TCP協(xié)議的提出主要是解決網(wǎng)絡(luò)的可靠性問題,它通過各種機(jī)制來減少錯(cuò)誤發(fā)生的概率。因此,在網(wǎng)絡(luò)狀況不是很好的情況下需選用TCP協(xié)議(如在廣域網(wǎng)等),但是若在網(wǎng)絡(luò)狀況很好的情況下(如局域網(wǎng)等
65、)就不需要再采用TCP協(xié)議,而建議選擇UDP協(xié)議來減少網(wǎng)絡(luò)負(fù)荷。</p><p> TCP/IP協(xié)議的運(yùn)作機(jī)制是IP層負(fù)責(zé)接收由更低層(網(wǎng)絡(luò)接口層例如以太網(wǎng)設(shè)備驅(qū)動(dòng)程序)發(fā)來的數(shù)據(jù)包,并把該數(shù)據(jù)包發(fā)送到更高層---TCP層,相反,IP層也把從TCP層接收來的數(shù)據(jù)包傳送到更低層。IP數(shù)據(jù)包是不可靠的,因?yàn)镮P并沒有做任何事情來確認(rèn)數(shù)據(jù)包是按順序發(fā)送的或者沒有被破壞。IP數(shù)據(jù)包中含有發(fā)送它的主機(jī)的地址(源地址)和接
66、收它的主機(jī)的地址(目的地址)。</p><p> 高層的TCP服務(wù)在接收數(shù)據(jù)包時(shí),通常假設(shè)包中的源地址是有效的。也可以這樣說,IP地址形成了許多服務(wù)的認(rèn)證基礎(chǔ),這些服務(wù)相信數(shù)據(jù)包是從一個(gè)有效的主機(jī)發(fā)送來的。IP確認(rèn)包含一個(gè)選項(xiàng),叫作IP source routing,可以用來指定一條源地址和目的地址之間的直接路徑。對(duì)于一些TCP和UDP的服務(wù)來說,使用了該選項(xiàng)的IP包好像是從路徑上的最后一個(gè)系統(tǒng)傳遞過來的,而不
67、是來自于它的真實(shí)地點(diǎn)。這個(gè)選項(xiàng)是為了測(cè)試而存在的,說明了它可以被用來欺騙系統(tǒng)來進(jìn)行平常是被禁止的連接。許多依靠IP源地址做確認(rèn)的服務(wù)將產(chǎn)生問題并且會(huì)被非法入侵。</p><p> TCP是面向連接的通信協(xié)議,通過三次握手建立連接,通訊完成時(shí)要拆除連接,由于TCP是面向連接的所以只能用于點(diǎn)對(duì)點(diǎn)的通訊。TCP提供的是一種可靠的數(shù)據(jù)流服務(wù),采用“帶重傳的肯定確認(rèn)”技術(shù)來實(shí)現(xiàn)傳輸?shù)目煽啃?。TCP還采用一種稱為“滑動(dòng)窗口
68、”的方式進(jìn)行流量控制,所謂窗口實(shí)際表示接收能力,用以限制發(fā)送方的發(fā)送速度。 </p><p> 如果IP數(shù)據(jù)包中有已經(jīng)封好的TCP數(shù)據(jù)包,那么IP將把它們向上傳送到TCP層。TCP將包排序并進(jìn)行錯(cuò)誤檢查,同時(shí)實(shí)現(xiàn)虛電路間的連接。TCP數(shù)據(jù)包中包括序號(hào)和確認(rèn),所以未按照順序收到的包可以被排序,而損壞的包可以被重傳。TCP將它的信息送到更高層的應(yīng)用程序,例如Telnet的服務(wù)程序和客戶程序。應(yīng)用程序輪流將信息送
69、回TCP層,TCP層便將它們向下傳送到IP層,設(shè)備驅(qū)動(dòng)程序和物理介質(zhì),最后到接收方。面向連接的服務(wù)(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它們使用了TCP。DNS在某些情況下使用TCP(發(fā)送和接收域名數(shù)據(jù)庫),但使用UDP傳送有關(guān)單個(gè)主機(jī)的信息。</p><p> 基于TCP/IP有諸多特點(diǎn),它的數(shù)據(jù)可靠性剛好符合本系統(tǒng)設(shè)計(jì)的要求數(shù)據(jù)的安全性,同時(shí)它具有很好
70、的網(wǎng)絡(luò)的安全性,保證餐廳點(diǎn)菜系統(tǒng)能夠很好的運(yùn)行,所以我在設(shè)計(jì)該系統(tǒng)的時(shí)候選擇了該協(xié)議來實(shí)現(xiàn)通信。</p><p> TCP/IP協(xié)議的實(shí)現(xiàn)的流程圖如下圖2-1所示。</p><p> 圖 2-1 TCP/IP協(xié)議流程圖 </p><p><b> 2.4本章小結(jié)</b></p><p> 本章主要詳細(xì)介紹了該點(diǎn)菜
71、系統(tǒng)應(yīng)用的相關(guān)的技術(shù),主要介紹了開發(fā)的系統(tǒng)環(huán)境Linux系統(tǒng)和用到的數(shù)據(jù)庫SQLITE3,運(yùn)用到的圖形界面開發(fā)工具QT,運(yùn)用到的網(wǎng)絡(luò)技術(shù)TCP/IP協(xié)議等概念,并且介紹了相關(guān)技術(shù)的特點(diǎn)。</p><p> 第3章 系統(tǒng)分析及設(shè)計(jì)</p><p><b> 3.1系統(tǒng)需求分析</b></p><p> 隨著局域網(wǎng)技術(shù)與電子商務(wù)的深入發(fā)展,餐
72、廳自助點(diǎn)菜系統(tǒng)也在國內(nèi)外蓬勃發(fā)展,并日益深入到人們的生活當(dāng)中。餐廳自助自助點(diǎn)菜在國外早已成為一種時(shí)尚。餐廳每日消費(fèi)人數(shù)的巨大,自助點(diǎn)菜是一種必不可少的工具,而國內(nèi)的點(diǎn)菜系統(tǒng)還不成熟 ,所以本課題將設(shè)計(jì)實(shí)現(xiàn)一個(gè)餐廳自助點(diǎn)菜系統(tǒng)。本系統(tǒng)根據(jù)一般餐廳的需要,分析本系統(tǒng)的業(yè)務(wù)流程如下:</p><p> 1.服務(wù)器負(fù)責(zé)前臺(tái)、廚房、數(shù)據(jù)庫管理、點(diǎn)菜終端的通信;</p><p> 2.點(diǎn)菜終端從數(shù)
73、據(jù)庫獲取菜品信息;</p><p> 3.前臺(tái)負(fù)責(zé)查詢餐臺(tái)的空閑狀態(tài)和結(jié)賬并打印賬單;</p><p> 4.顧客點(diǎn)菜,并填入數(shù)據(jù)庫;</p><p> 5.服務(wù)器接受點(diǎn)菜信息并發(fā)送給后廚;</p><p> 6.后廚開始按照菜單信息做菜;</p><p> 7.用戶到前臺(tái)結(jié)賬;</p><
74、;p> 8.結(jié)果被顯示給用戶,顧客結(jié)賬。</p><p><b> 3.1.1功能需求</b></p><p> 用戶在客戶端點(diǎn)菜,通過局域網(wǎng)傳送到服務(wù)器,后廚接受從服務(wù)器接受到菜單信息,客戶在前臺(tái)結(jié)賬。同時(shí)有個(gè)數(shù)據(jù)庫管理界面可以實(shí)現(xiàn)菜品信息的管理。根據(jù)系統(tǒng)功能的需求,分析了所需要的系統(tǒng)總功能結(jié)構(gòu)如表3-1所示。</p><p>
75、 表 3-1 功能需求</p><p><b> 3.1.2性能需求</b></p><p> 本系統(tǒng)性能要求主要是以下5個(gè)方面。</p><p> 1.系統(tǒng)處理的準(zhǔn)確性和及時(shí)性:系統(tǒng)處理的準(zhǔn)確性和及時(shí)性是系統(tǒng)的必要性能。在系統(tǒng)設(shè)計(jì)和開發(fā)過程中,要充分考慮系統(tǒng)當(dāng)前和將來可能承受的工作量,使系統(tǒng)的處理能力和響應(yīng)時(shí)間能夠滿足信息處理的需求。&
76、lt;/p><p> 由于餐廳自助點(diǎn)菜系統(tǒng)客戶端的點(diǎn)菜對(duì)于整個(gè)系統(tǒng)的功能和性能完成舉足輕重。作為客戶自助點(diǎn)菜的模塊,其準(zhǔn)確性很大程度上決定了系統(tǒng)的成敗。在系開發(fā)過程中,必須保證系統(tǒng)的準(zhǔn)確性。</p><p> 2.系統(tǒng)的開放性和系統(tǒng)的可擴(kuò)充性:餐廳自助點(diǎn)菜系統(tǒng)在開發(fā)過程中,應(yīng)該充分考慮以后的可擴(kuò)充性。例如新增菜品,會(huì)員充值等。所有這些,都要求系統(tǒng)提供足夠的手段進(jìn)行功能的調(diào)整和擴(kuò)充。而要實(shí)現(xiàn)
77、這一點(diǎn),應(yīng)通過系統(tǒng)的開放性來完成。</p><p> 3.系統(tǒng)的易用性:餐廳自助點(diǎn)菜系統(tǒng)是直接面對(duì)用戶的,而用戶往往對(duì)計(jì)算機(jī)并不是非常熟悉。這就要求系統(tǒng)能夠提供良好的用戶接口,易用的人機(jī)交互界面。要實(shí)現(xiàn)這一點(diǎn),就要求系統(tǒng)應(yīng)該盡量使用用戶熟悉的術(shù)語和中文信息的界面。</p><p> 4.系統(tǒng)的標(biāo)準(zhǔn)性:系統(tǒng)在設(shè)計(jì)開發(fā)使用過程中都要涉及到很多計(jì)算機(jī)硬件、軟件。所有這些都要符合主流國際、國家
78、和行業(yè)標(biāo)準(zhǔn)。例如在開發(fā)中使用的操作系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)、開發(fā)工具都必須符合通用標(biāo)準(zhǔn)。如規(guī)范的數(shù)據(jù)庫操縱界面、作為業(yè)界標(biāo)準(zhǔn)的TCP/IP網(wǎng)絡(luò)協(xié)議及ISO9002標(biāo)準(zhǔn)所要求的質(zhì)量規(guī)范等;同時(shí),在自主開發(fā)本系統(tǒng)時(shí),要進(jìn)行良好的設(shè)計(jì)工作,制訂行之有效的軟件工程規(guī)范,保證代碼的易讀性、可操作性和可移植性。</p><p> 5.系統(tǒng)的先進(jìn)性:目前計(jì)算系統(tǒng)的技術(shù)發(fā)展相當(dāng)快,做為餐廳管理系統(tǒng)工程,應(yīng)該在系統(tǒng)的生命周期盡量做到系統(tǒng)的
79、先進(jìn)。這一方面通過系統(tǒng)的開放性和可擴(kuò)充性,不斷改善系統(tǒng)的功能完成。另一方面,在系統(tǒng)設(shè)計(jì)和開發(fā)的過程中,應(yīng)在考慮成本的基礎(chǔ)上盡量采用當(dāng)前主流并先進(jìn)且有良好發(fā)展前途的工具。</p><p><b> 3.2系統(tǒng)開發(fā)環(huán)境</b></p><p> 本系統(tǒng)是基于Linux系統(tǒng)中Qt來設(shè)計(jì)前臺(tái)應(yīng)用系統(tǒng)的可視化界面,而后臺(tái)部分?jǐn)?shù)據(jù)庫的實(shí)現(xiàn)采用SQLite3來構(gòu)建。Linux系
80、統(tǒng)采用了可視化的程序設(shè)計(jì),具有面向?qū)ο蟮目梢暬O(shè)計(jì)工具,結(jié)構(gòu)化的程序設(shè)計(jì)語言,提供了易學(xué)易用的應(yīng)用程序集成開發(fā)環(huán)境,支持多種數(shù)據(jù)庫系統(tǒng)的訪問,Linux系統(tǒng)中的Qt提供了可視化的界面。用QtCreator可以動(dòng)態(tài)的調(diào)整用戶風(fēng)格圖形界面,直到滿意為止。</p><p> 3.3系統(tǒng)總體功能模塊</p><p> 根據(jù)對(duì)餐廳點(diǎn)菜系統(tǒng)需要實(shí)現(xiàn)的功能進(jìn)行需求分析,將本系統(tǒng)的前臺(tái)劃分為前臺(tái)管理,
81、點(diǎn)菜管理,后廚管理,數(shù)據(jù)庫管理,服務(wù)器五個(gè)功能模塊;系統(tǒng)功能模塊如圖3-1所示。查詢</p><p> 圖3-1 系統(tǒng)總功能模塊</p><p> 餐廳點(diǎn)菜系統(tǒng)的功能模塊概要描述如表3-2所示。</p><p> 表3-2 功能模塊描述表</p><p> 1.服務(wù)器功能:服務(wù)器功能是整個(gè)系統(tǒng)的傳輸通道,是系統(tǒng)的重中之重。當(dāng)顧客點(diǎn)菜客
82、戶端與服務(wù)器連接后,可通過此將點(diǎn)菜信息發(fā)送到后廚。后廚和服務(wù)器連接后,可以將做完的菜發(fā)送到服務(wù)器,服務(wù)器將信息發(fā)送到點(diǎn)菜客戶端和前臺(tái)。</p><p> 2.前臺(tái)終端管理:前臺(tái)是本系統(tǒng)重要組成部分之一。本模塊可以查詢當(dāng)前餐臺(tái)的空閑信息、接收服務(wù)器發(fā)送過來顧客點(diǎn)菜的消費(fèi)菜單信息,并打印菜單給客戶。細(xì)分的功能模塊如圖3-2。</p><p> 圖3-2 前臺(tái)終端模塊</p>
83、<p> 3.點(diǎn)菜終端:點(diǎn)菜終端是本系統(tǒng)給顧客的使用的,是本系統(tǒng)的重要組成部分。本模塊將用戶點(diǎn)菜單菜肴發(fā)送到服務(wù)器,并將數(shù)據(jù)信息添加到數(shù)據(jù)庫。細(xì)分的功能模塊如圖3-3所示。</p><p> 選擇菜肴功能是將用戶選擇的菜肴存與表中,用戶可以添加與刪除。</p><p> 點(diǎn)菜信息發(fā)送功能是將用戶點(diǎn)菜信息以結(jié)構(gòu)體的形式發(fā)送到服務(wù)器,并添加到相應(yīng)的數(shù)據(jù)庫中。</p>
84、<p> 圖3-3 點(diǎn)菜終端模塊</p><p> 4.后廚終端:后廚終端從服務(wù)器接收到顧客點(diǎn)的菜肴,可以繼續(xù)接受顧客加菜的菜單、按照菜單做菜,并可以詢問菜是否需要退菜。細(xì)分功能如圖3-4所示。</p><p> 圖3-4 后廚終端模塊</p><p> 5.?dāng)?shù)據(jù)庫管理:數(shù)據(jù)庫管理管理菜單數(shù)據(jù)庫信息,包括刪除菜單列表、添加菜單列表,查詢菜單等功
85、能。細(xì)分?jǐn)?shù)據(jù)庫管理功能模塊如圖3-5所示。</p><p> 刪除菜單列表功能是將刪除不做的菜肴信息。</p><p> 添加菜單列表功能是允許可以添加新的菜肴信息。</p><p> 查詢菜單功能是查詢是否有哪道菜肴信息。</p><p> 圖3-5 數(shù)據(jù)庫管理模塊</p><p> 3. 4數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)
86、 </p><p> 根據(jù)對(duì)本系統(tǒng)數(shù)據(jù)的分析,系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)了一個(gè)表:菜肴信息表。該表用于存放菜肴的信息,包括菜肴的名字、菜肴的類別、菜肴的價(jià)格、菜肴的描述。</p><p><b> 3.5本章小結(jié)</b></p><p> 本章主要對(duì)該系統(tǒng)設(shè)計(jì)進(jìn)行了需求分析、功能分析,最后做出詳細(xì)設(shè)計(jì)方案。設(shè)計(jì)中主要將餐廳點(diǎn)菜系統(tǒng)分為五個(gè)模塊
87、,每個(gè)模塊的需求和實(shí)現(xiàn)的功能進(jìn)行了闡述和詳細(xì)設(shè)計(jì)過程分析。</p><p><b> 第4章 軟件設(shè)計(jì)</b></p><p> 軟件采用面向?qū)ο竦脑O(shè)計(jì)方法,考慮到對(duì)計(jì)算效率的要求,采用C++編程語言,開發(fā)環(huán)境為Linux RedHat 企業(yè)版5,服務(wù)器編譯工具為gcc,其余編程工具為g++編譯器,采用C++標(biāo)準(zhǔn)庫函數(shù)和QT類庫。</p><p
88、> 4.1 數(shù)據(jù)庫表結(jié)構(gòu)設(shè)計(jì)</p><p> 本系統(tǒng)數(shù)據(jù)庫中建立了一張菜單信息表,該表詳細(xì)結(jié)構(gòu)如圖表4-1所示。</p><p> 表4-1 菜單信息表</p><p> 4.2 各功能模塊的詳細(xì)設(shè)計(jì)</p><p> 本系統(tǒng)有五個(gè)模塊組成,分別為server(服務(wù)器),前臺(tái)管理模塊,顧客點(diǎn)菜管理模塊,后廚管理模塊,數(shù)據(jù)庫管
89、理模塊等。</p><p> 4.2.1 服務(wù)器管理模塊</p><p> 服務(wù)器模塊主要是用C語言編寫的,主要是為其他模塊間的通信。其中主要運(yùn)用到TCP/IP協(xié)議通信的。運(yùn)用到了TCP/IP協(xié)議函數(shù),首先socket()函數(shù)獲得套接字描述符,然后用bind()函數(shù)將描述符捆綁到IP上,監(jiān)聽listen()函數(shù),其中可以設(shè)置客戶端的個(gè)數(shù)。然后就是等待客戶端的請(qǐng)求連接用accept()函
90、數(shù),其中運(yùn)用到了線程,創(chuàng)建線程函數(shù)pthread_create()用來處理客戶的的請(qǐng)求。主要實(shí)現(xiàn)代碼如下: </p><p> if((sockfd = socket(AF_INET,SOCK_STREAM,0)) == -1)</p><p><b> {</b></p><p> perror("-------Socket
91、error!-------");</p><p><b> exit(0);</b></p><p><b> }</b></p><p> /* 服務(wù)器端填充 sockaddr_in結(jié)構(gòu) */</p><p> bzero(&server_addr,sizeof(serv
92、er_addr));</p><p> server_addr.sin_family = AF_INET;</p><p> server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");</p><p> server_addr.sin_port = htons(portnumber);<
93、/p><p> /* 捆綁sockfd描述符到IP地址 */</p><p> if(bind(sockfd,(struct sockaddr*)&server_addr,sizeof(server_addr)) == -1)</p><p><b> {</b></p><p> perror("
94、-------Bind error!-------");</p><p><b> exit(0);</b></p><p><b> }</b></p><p> /* 設(shè)置允許連接的最大客戶端數(shù) */</p><p> if(listen(sockfd,10) == -1)&l
95、t;/p><p><b> {</b></p><p> perror("-------Listen error!-------");</p><p><b> exit(0);</b></p><p><b> }</b></p><
96、;p> address_size = sizeof(client_addr);</p><p><b> while(1)</b></p><p><b> {</b></p><p><b> int i=0;</b></p><p> /* 服務(wù)器阻塞,等待
97、客戶程序建立連接 */</p><p> if((accefd = accept(sockfd,(struct sockaddr*)&client_addr,</p><p> &address_size)) == -1)</p><p><b> {</b></p><p> perror(&q
98、uot;-------Accept error!-------");</p><p><b> exit(0);</b></p><p><b> }</b></p><p> sock_accept[i] =accefd;</p><p><b> i++;</b
99、></p><p> /*創(chuàng)建線程,處理客戶端請(qǐng)求*/</p><p> pthread_t tid;</p><p> pthread_create(&tid,0,run,&accefd);</p><p> /*服務(wù)器主程序返回繼續(xù)等待下一次客戶端連接*/</p><p><b&
100、gt; }</b></p><p> close(sockfd);</p><p> 4.2.2 前臺(tái)管理模塊 </p><p> 前臺(tái)管理模塊主要查看餐臺(tái)空閑信息,和打印賬單兩部分組成。餐臺(tái)空閑信息主要是根據(jù)Button組件文本顯示判斷的是否是空閑狀態(tài),空閑時(shí),當(dāng)顧客來時(shí)如空閑點(diǎn)擊按鈕就connect()觸發(fā)了槽函數(shù)table1(),其中槽
101、函數(shù)中用到Button類的成員函數(shù)setText(),將button的文本信息設(shè)置為“1號(hào)有人”。同樣,當(dāng)顧客結(jié)賬時(shí)點(diǎn)擊按鈕觸發(fā)槽函數(shù)打印賬單給顧客查看,同時(shí)將Button的文本信息設(shè)置為“2人桌”,賬單是用QListWidget類來顯示。</p><p><b> 主要實(shí)現(xiàn)代碼如下:</b></p><p> void foregroundDialog::tab
102、le1()</p><p><b> {</b></p><p> QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));</p><p> static bool a = true;</p><p><b> if
103、(a)</b></p><p><b> {</b></p><p> button1->setText(tr("1號(hào)有人"));</p><p> a = false;</p><p><b> }</b></p><p>&l
104、t;b> else//結(jié)帳</b></p><p><b> {</b></p><p><b> shou();</b></p><p><b> int i=0;</b></p><p> double sum=0;</p><
105、;p> //將客人消費(fèi)情況添加到賬單列表</p><p> QListWidget *list = new QListWidget;</p><p> QString str1 = QString(tr("菜名 價(jià)格 數(shù)量"));</p><p> list->insertItem(0,str1);<
106、;/p><p> while(menu1[i].num!=0)</p><p><b> {</b></p><p> char a[50];</p><p> memset(a,0,sizeof(a));</p><p> sprintf(a,"%d %d ",
107、menu1[i].price,menu1[i].num);</p><p> list->insertItem(i+1,QString(tr(menu1[i].name)+tr(" ")+tr(a)));</p><p> sum+=menu1[i].price*menu1[i].num;</p><p><b> i+
108、+;</b></p><p><b> }</b></p><p> QString a;</p><p> char af[10];</p><p> sprintf(af,"%d",menu1[0].buff[1]);</p><p> a.appen
109、d(QString("%1").arg(sum));</p><p> QString str2 = QString(tr("桌號(hào):")+tr(af)+tr("共計(jì)"));</p><p> list->insertItem(i+1,str2+a);</p><p> list->show
110、();</p><p> //添加當(dāng)前時(shí)間到賬單</p><p> time_t lt;</p><p> lt =time(NULL);</p><p> char aa[80];</p><p> memset(aa,0,sizeof(aa));</p><p> sprintf
111、(aa,"%s",ctime(<));</p><p> list->insertItem(i+2,QString(tr(aa)));</p><p> button1->setText(tr("1號(hào)(2人桌)"));</p><p><b> a = true;</b>&l
112、t;/p><p><b> ?。?lt;/b></p><p> 4.2.3 顧客點(diǎn)菜端管理模塊</p><p> 點(diǎn)菜端是顧客從前臺(tái)獲知該餐桌空閑,則開臺(tái),并開始點(diǎn)菜,點(diǎn)菜界面可以根據(jù)菜譜信息點(diǎn)擊選擇按鈕,如果需要?jiǎng)h除可以點(diǎn)擊刪除按鈕,當(dāng)確認(rèn)后點(diǎn)擊提交按鈕就將顧客點(diǎn)菜信息發(fā)送到服務(wù)器,服務(wù)器并發(fā)送到后廚。</p><p>
溫馨提示
- 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. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于嵌入式linux的無線點(diǎn)菜系統(tǒng)設(shè)計(jì)
- 基于嵌入式linux的無線點(diǎn)菜系統(tǒng)設(shè)計(jì).pdf
- 嵌入式畢業(yè)設(shè)計(jì)論文基于arm的嵌入式gui點(diǎn)菜系統(tǒng)
- 基于linux的嵌入式點(diǎn)菜系統(tǒng)終端.pdf
- 畢業(yè)設(shè)計(jì)--餐廳點(diǎn)菜系統(tǒng)(含外文翻譯)
- 基于嵌入式Linux的點(diǎn)菜系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 基于嵌入式的無線點(diǎn)菜系統(tǒng)課程設(shè)計(jì)
- 嵌入式系統(tǒng)課程設(shè)計(jì)--基于arm 的電子點(diǎn)菜系統(tǒng)
- 嵌入式無線點(diǎn)菜系統(tǒng)的實(shí)現(xiàn)
- 畢業(yè)設(shè)計(jì)外文翻譯--嵌入式_linux_應(yīng)用概述
- 基于ARM嵌入式無線點(diǎn)菜系統(tǒng)終端的研究與設(shè)計(jì).pdf
- 基于嵌入式前臺(tái)收銀點(diǎn)菜系統(tǒng)的研究.pdf
- 電子點(diǎn)菜系統(tǒng)畢業(yè)論文(含外文翻譯)
- 外文翻譯---基于linux的嵌入式采集系統(tǒng)
- 基于無線通信的點(diǎn)菜系統(tǒng)設(shè)計(jì)【畢業(yè)設(shè)計(jì)】
- 設(shè)計(jì)論文—基于linux系統(tǒng)下開發(fā)的餐廳點(diǎn)菜系統(tǒng)
- 畢業(yè)設(shè)計(jì)--基于嵌入式linux公交漢字顯示系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 基于arm和linux的嵌入式數(shù)碼相框系統(tǒng)設(shè)計(jì)-畢業(yè)設(shè)計(jì)論文
- 基于fpga的嵌入式系統(tǒng)設(shè)計(jì)外文翻譯
- 基于fpga的嵌入式系統(tǒng)設(shè)計(jì)外文翻譯
評(píng)論
0/150
提交評(píng)論