畢業(yè)論文-基于QT的電子點(diǎn)餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
畢業(yè)論文-基于QT的電子點(diǎn)餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
畢業(yè)論文-基于QT的電子點(diǎn)餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
畢業(yè)論文-基于QT的電子點(diǎn)餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
畢業(yè)論文-基于QT的電子點(diǎn)餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩53頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 太原理工大學(xué)畢業(yè)設(shè)計(jì)(論文)用紙 緒論引言編寫目的本文檔是餐飲點(diǎn)餐管理系統(tǒng)的項(xiàng)目需求說(shuō)明書,對(duì)餐飲點(diǎn)餐管理系統(tǒng)的發(fā)展進(jìn)行簡(jiǎn)要回顧,分析當(dāng)前的業(yè)務(wù)流程,總結(jié)此類管理系統(tǒng)的基本特點(diǎn)以及總體功能,盡可能完整的概括提取出需求方的全部想法。本文檔對(duì)項(xiàng)目開發(fā)人員、設(shè)計(jì)人員及系統(tǒng)實(shí)施人員具有很重要的指導(dǎo)意義。項(xiàng)目背景項(xiàng)目名稱:餐飲點(diǎn)餐管理系統(tǒng);中國(guó)是舉世聞名的美食大國(guó),擁有五千年的飲食文化和巨大的餐飲市場(chǎng),隨著人民生活水平和生活方式的轉(zhuǎn)變,餐飲業(yè)具有巨大的投資市場(chǎng),被稱為中國(guó)的黃金產(chǎn)業(yè),但同樣也應(yīng)看到,餐飲業(yè)不僅面臨著巨大的發(fā)展機(jī)遇,也面臨著前所未有的挑戰(zhàn)和考驗(yàn)。餐飲業(yè)的不斷發(fā)展,在經(jīng)營(yíng)管理上也逐步向電子

2、化邁進(jìn),通過(guò)電腦信息系統(tǒng)管理餐飲業(yè)的內(nèi)部事務(wù),使得作業(yè)更加簡(jiǎn)單化、高效。以財(cái)務(wù)為中心,減輕一線操作人員的勞動(dòng)強(qiáng)度,節(jié)省營(yíng)業(yè)人員的交班時(shí)間,加強(qiáng)財(cái)務(wù)審核管理。提供多種點(diǎn)菜、結(jié)算、統(tǒng)計(jì)報(bào)表功能,提供分廚房直接打印前臺(tái)點(diǎn)菜數(shù)據(jù)。在餐飲經(jīng)營(yíng)中,傳統(tǒng)的紙制作業(yè)流程無(wú)法滿足現(xiàn)代客戶在信息娛樂(lè)及服務(wù)安保等方面的要求。而此系統(tǒng)的使用,使餐廳管理者便捷的進(jìn)行經(jīng)營(yíng)娛樂(lè)的管理,大大增加的各店成本控制及銷售額現(xiàn)實(shí)背景我國(guó)的餐飲市場(chǎng)經(jīng)過(guò)30多年的改革開放及發(fā)展,可以說(shuō)我國(guó)正迎來(lái)一個(gè)餐飲業(yè)大發(fā)展的時(shí)期,市場(chǎng)潛在力量巨大,遠(yuǎn)景很是廣闊。根據(jù)中國(guó)烹飪協(xié)會(huì)發(fā)布的2009年度餐飲業(yè)發(fā)展報(bào)告顯示,即便在經(jīng)濟(jì)遭受重創(chuàng)的2009年,全

3、社會(huì)餐飲業(yè)零售額達(dá)依然到17998億元,同比增長(zhǎng)16.8%。其中,每月的零售額均超過(guò)1300億元,增長(zhǎng)率穩(wěn)定在14.4%至21.6%。在各類消費(fèi)性支出中增幅居前,僅次于交通和通信支出。并且預(yù)計(jì)2012年餐飲市場(chǎng)還將繼續(xù)增長(zhǎng),營(yíng)業(yè)額也將達(dá)到20000億元。 與此同時(shí),我國(guó)餐飲業(yè)發(fā)展的質(zhì)量和內(nèi)涵也發(fā)生了重大變化。行業(yè)的經(jīng)營(yíng)領(lǐng)域和市場(chǎng)空間不斷拓寬,經(jīng)營(yíng)檔次和企業(yè)管理水平不斷提高,經(jīng)營(yíng)業(yè)態(tài)日趨豐富,投資主體和消費(fèi)需求多元化特點(diǎn)更加突出,網(wǎng)點(diǎn)數(shù)量和人員隊(duì)伍繼續(xù)擴(kuò)大;餐飲市場(chǎng)更加繁榮,消費(fèi)的個(gè)性化和特色化的趨勢(shì)明顯,追求健康營(yíng)養(yǎng)和連鎖規(guī)模發(fā)展成為主題。集團(tuán)化、品牌化、產(chǎn)業(yè)化和國(guó)際化的發(fā)展步伐加快,餐飲現(xiàn)代

4、化的進(jìn)程不斷推進(jìn)。 近幾年來(lái),中國(guó)餐飲業(yè)的發(fā)展一直保持強(qiáng)勁快速增長(zhǎng)同時(shí),也看到目前餐飲行業(yè)普遍存在的問(wèn)題。餐飲企業(yè)的發(fā)展一直處于自我摸索、自我運(yùn)作、自我積累和自我完善為主的狀態(tài),利潤(rùn)低、承載重、支撐小、發(fā)展難的特點(diǎn)突出。餐飲企業(yè)在產(chǎn)品標(biāo)準(zhǔn)化技術(shù)設(shè)備開發(fā)、連鎖管理體系的建立、專業(yè)人才的培養(yǎng)、吸納資本投入、理論指導(dǎo)和信息交流等方面的條件十分不足,存在著技術(shù)開發(fā)與設(shè)備配套難、管理與人才難、配送渠道與發(fā)展資金難、溝通交流與合作難等深層次因素的制約,行業(yè)平臺(tái)和基礎(chǔ)支持力量不強(qiáng),對(duì)企業(yè)發(fā)展產(chǎn)生較大的影響。術(shù)語(yǔ)定義所謂”翻臺(tái)率”是指在某期間里,指餐桌座位坐滿及餐桌空蕩的速度。 一個(gè)高翻臺(tái)率意味更多用餐者吃了

5、并且走了,而一個(gè)低的翻臺(tái)率意味同樣用餐者是在一段長(zhǎng)時(shí)間里使用餐桌,或者餐桌座位是空的。參考資料1餐飲點(diǎn)餐管理系統(tǒng)項(xiàng)目開發(fā)計(jì)劃_v1.00研究目的和意義目的在我們這個(gè)“食文化”高度發(fā)達(dá)的國(guó)度里,餐飲業(yè)毋庸置疑地成為第一大傳統(tǒng)產(chǎn)業(yè)。然而,正是這歷史悠久、規(guī)模龐大的產(chǎn)業(yè),卻也是信息化程度最慢和最低的產(chǎn)業(yè)之一。至今為止,絕大多數(shù)餐飲企業(yè)的經(jīng)營(yíng)方式仍然停留在“一張紙、一支筆、經(jīng)理喊破嗓、員工跑斷腿”的境地;而會(huì)計(jì)工作,也仍然是以一支筆或一個(gè)算盤,或最好的情況下一個(gè)計(jì)算器進(jìn)行加減乘除,其本質(zhì)仍然是以人腦計(jì)算為基礎(chǔ),不但工作量巨大,而且極易出錯(cuò)。筆者曾經(jīng)見過(guò)生意極好的大排檔,服務(wù)員進(jìn)進(jìn)出出地飛奔于戶外桌臺(tái)、

6、大堂吧臺(tái)和廚房之間,而經(jīng)理則用計(jì)算器算得滿頭大汗的場(chǎng)景,蔚為壯觀。且不說(shuō)這種日復(fù)一日的重復(fù)、單調(diào)的勞動(dòng)意義何在,單就消費(fèi)計(jì)算方面的出錯(cuò)而引發(fā)的與客戶之間的矛盾糾紛,就不可勝計(jì)。其實(shí)在人類文明已經(jīng)進(jìn)入電子信息的時(shí)代,絕大多數(shù)重復(fù)、單調(diào)、可程式化的工作都已經(jīng)可以交由計(jì)算機(jī)來(lái)完成。面對(duì)復(fù)雜和龐大的計(jì)算任務(wù),計(jì)算機(jī)在效率和準(zhǔn)確度方面是人腦所不能望其項(xiàng)背的。作為傳統(tǒng)產(chǎn)業(yè)的餐飲業(yè),同其他很多傳統(tǒng)產(chǎn)業(yè)一樣,同樣可以引入信息化改造。餐飲業(yè)的信息化改造內(nèi)容,主要有:由傳統(tǒng)的筆和紙點(diǎn)餐,改用電子點(diǎn)餐;由傳統(tǒng)的人工計(jì)算、統(tǒng)計(jì)、管理,改用電腦進(jìn)行計(jì)算、統(tǒng)計(jì)和管理;將現(xiàn)代的電子技術(shù)、無(wú)線技術(shù)、計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)引入到

7、餐飲行業(yè)中來(lái),替代部分人工操作,加快餐飲企業(yè)的運(yùn)轉(zhuǎn)效率,提升餐飲企業(yè)的管理水平,使餐飲企業(yè)運(yùn)作更規(guī)范、更科學(xué)、更高效。在餐飲企業(yè)的信息化改造當(dāng)中,無(wú)線點(diǎn)餐(點(diǎn)菜)系統(tǒng),成為其核心內(nèi)容,也是餐飲企業(yè)進(jìn)行信息化改造的必由之路。因此本論文研究的目的在于通過(guò)餐飲企業(yè)的信息化改造暨利用無(wú)線技術(shù),替代傳統(tǒng)的紙和筆進(jìn)行電子點(diǎn)餐(點(diǎn)菜)操作,實(shí)現(xiàn)遠(yuǎn)距離地進(jìn)行信息即時(shí)傳遞。當(dāng)然,無(wú)線點(diǎn)餐(點(diǎn)菜)系統(tǒng)不只是可以進(jìn)行點(diǎn)餐操作,同時(shí)通過(guò)配套的餐飲管理軟件,還可以實(shí)現(xiàn)強(qiáng)大的統(tǒng)計(jì)和管理功能,使餐飲企業(yè)真正實(shí)現(xiàn)信息化。意義 能夠有效地的提升 餐飲企業(yè)的檔次和管理水平,做到科學(xué)管理、科學(xué)決策、高效運(yùn)轉(zhuǎn)、降低成本,進(jìn)行信息化是

8、必由之路。而采用無(wú)線點(diǎn)餐(點(diǎn)菜)系統(tǒng)取代傳統(tǒng)的手工點(diǎn)餐,采用餐飲管理軟件取代傳統(tǒng)的人工統(tǒng)計(jì)和粗放型管理又是信息化當(dāng)中的核心內(nèi)容。餐飲企業(yè)引進(jìn)一套無(wú)線點(diǎn)餐(點(diǎn)菜)系統(tǒng),成本大約在一萬(wàn)元左右(視配置情況而不同),大約相當(dāng)于一個(gè)服務(wù)員一年的工資,但帶來(lái)的便利性和管理水平的升級(jí)則是無(wú)與倫比的。無(wú)線點(diǎn)餐(點(diǎn)菜)系統(tǒng)所帶來(lái)的運(yùn)營(yíng)效率的大幅度提高和人力成本的節(jié)約,遠(yuǎn)超其投資成本,對(duì)于餐飲企業(yè)信息化,可以說(shuō)是不二的選擇。開發(fā)平臺(tái)及核心技術(shù)簡(jiǎn)介開發(fā)語(yǔ)言介紹 Qt介紹Qt是一個(gè)1991年由奇趣科技開發(fā)的跨平臺(tái)C+圖形用戶界面應(yīng)用程序開發(fā)框架。它既可以開發(fā)GUI程序,也可用于開發(fā)非GUI程序,比如控制臺(tái)工具和服務(wù)器

9、。Qt是面向?qū)ο蟮目蚣?,使用特殊的代碼生成擴(kuò)展(稱為元對(duì)象編譯器(Meta Object Compiler, moc))以及一些宏,易于擴(kuò)展,允許組件編程。2008年,奇趣科技被諾基亞公司收購(gòu),QT也因此成為諾基亞旗下的編程語(yǔ)言工具。2012年,Qt被Digia收購(gòu)。Qt是一個(gè)跨平臺(tái)的C+圖形用戶界面庫(kù),由挪威TrollTech公司出品,目前包括Qt/X11, 基于Framebuffer的Qt Embedded,快速開發(fā)工具Qt Designer,國(guó)際化工具Qt Linguist 等,Qt支持Unix系統(tǒng)及Linux,還支持WinNT/Win2k,Win95/98平臺(tái)。Qt的良好封裝機(jī)制使得Q

10、t的模塊化程度非常高,可重用性 較好,對(duì)于用戶開發(fā)來(lái)說(shuō)是非常方便的。Qt API和開發(fā)工具對(duì)所有支持平臺(tái)都是一致的,從而可以進(jìn)行獨(dú)立于平臺(tái)的程序開發(fā)和配置。它使得跨平臺(tái)軟件編程直觀、簡(jiǎn)易和方便。Qt 提供了一種稱為signals/slots 的安全類型來(lái)替代 callback回調(diào)函數(shù),這使得各個(gè)控件之間的協(xié)同工作變得十分簡(jiǎn)單。Qt在Linux下有GPL版,可方便用戶的學(xué)習(xí)及開發(fā)。如果用戶使用 C+,對(duì)庫(kù)的穩(wěn)定性,健壯性要求比較高,并且希望跨平臺(tái)開發(fā)的話,那么使用Qt是較好的選擇,Qt還支持 2D/3D圖形渲染、OpenGL、XML等。 Qt Script for Applications (Q

11、SA)是Trolltech的跨平臺(tái)腳本工具箱。Qt為靜態(tài)的Qt/C+程序提供了一個(gè)腳本界面,可以定制和擴(kuò)展程序。 Qtopia是為基于Linux的PDA,智能電話和其他移動(dòng)設(shè)備設(shè)計(jì)的一個(gè)全面的,可以用戶化的應(yīng)用程序平臺(tái)和用戶界面。 Qt/Embedded是面向嵌入式系統(tǒng)的Qt版本,是Qt的嵌入式Linux窗口,是完整的自包含C+ GUI和基于Linux的嵌入式平臺(tái)開發(fā)工具。Qt/Embedded API可用于多種開發(fā)項(xiàng)目。許多基于Qt的X Window程序可以非常方便地移植到嵌入式版本,適用于高端PDA等產(chǎn)品。Qt/Embedded內(nèi)部對(duì)于字符集的處理采用了UNICODE編碼標(biāo)準(zhǔn)。Qt是基于面

12、向?qū)ο蟮腃+語(yǔ)言,Qt提供了signal和slot的對(duì)象通信機(jī)制,具有可查詢和可設(shè)計(jì)的屬性以及強(qiáng)大的事件和事件過(guò)濾 器,同時(shí),還具有字符國(guó)際化,即支持根據(jù)上下文進(jìn)行國(guó)際化的字符串翻譯。許多Qt的特性是基于QObject的繼承,通過(guò)標(biāo)準(zhǔn)C+技術(shù)實(shí)現(xiàn)的優(yōu)良的跨平臺(tái)特性:Qt支持下列操作系統(tǒng): Microsoft Windows 95/98, Microsoft Windows NT, Linux, Solaris, SunOS, HP-UX, Digital UNIX (OSF/1, Tru64), Irix, FreeBSD, BSD/OS, SCO, AIX, OS390,QNX 等等。面向?qū)?/p>

13、象:Qt 的良好封裝機(jī)制使得 Qt 的模塊化程度非常高,可重用性較好,對(duì)于用戶開發(fā)來(lái)說(shuō)是非常 方便的。 Qt 提供了一種稱為 signals/slots 的安全類型來(lái)替代 callback,這使得各個(gè)元件 之間的協(xié)同工作變得十分簡(jiǎn)單。 豐富的 API:Qt包括多達(dá) 250 個(gè)以上的 C+ 類,還提供基于模板的 collections, serialization, file, I/O device, directory management, date/time 類。甚至還包括正則表達(dá)式的處理功能。支持 2D/3D 圖形渲染,支持 OpenGL,豐富的XML 支持。Qt信號(hào)槽機(jī)制簡(jiǎn)介信號(hào)和槽是

14、一種高級(jí)接口,應(yīng)用于對(duì)象之間的通信,它是QT的核心特性,也是QT區(qū)別于其它工具包的重要地方。信號(hào)和槽是QT自行定義的一種通信機(jī)制,它獨(dú)立于標(biāo)準(zhǔn)的C/C+語(yǔ)言,因此要正確的處理信號(hào)和槽,必須借助一個(gè)稱為moc(Meta Object Compiler)的QT工具,該工具是一個(gè)C+預(yù)處理程序,它為高層次的事件處理自動(dòng)生成所需要的附加代碼。在我們所熟知的很多GUI工具包中,窗口小部件(widget)都有一個(gè)回調(diào)函數(shù)用于響應(yīng)它們能觸發(fā)的每個(gè)動(dòng)作,這個(gè)回調(diào)函數(shù)通常是一個(gè)指向某個(gè)函數(shù)的指針。但是,在QT中信號(hào)和槽取代了這些凌亂的函數(shù)指針,使得我們編寫這些通信程序更為簡(jiǎn)潔明了。 信號(hào)和槽能攜帶任意數(shù)量和任意

15、類型的參數(shù),他們是類型完全安全的,不會(huì)像回調(diào)函數(shù)那樣產(chǎn)生core dumps。所有從QObject或其子類(例如Qwidget)派生的類都能夠包含信號(hào)和槽。當(dāng)對(duì)象改變其狀態(tài)時(shí),信號(hào)就由該對(duì)象發(fā)射(emit)出去,這就是對(duì)象所要做的全部事情,它不知道另一端是誰(shuí)在接收這個(gè)信號(hào)。這就是真正的信息封裝,它確保對(duì)象被當(dāng)作一個(gè)真正的軟件組件來(lái)使用。槽用于接收信號(hào),但它們是普通的對(duì)象成員函數(shù)。一個(gè)槽并不知道是否有任何信號(hào)與自己相連接。而且,對(duì)象并不了解具體的通信機(jī)制。我們可以將很多信號(hào)與單個(gè)的槽進(jìn)行連接,也可以將單個(gè)的信號(hào)與很多的槽進(jìn)行連接,甚至于將一個(gè)信號(hào)與另外一個(gè)信號(hào)相連接也是可能的,這時(shí)無(wú)論第一個(gè)信號(hào)

16、什么時(shí)候發(fā)射系統(tǒng)都將立刻發(fā)射第二個(gè)信號(hào)??傊?,信號(hào)與槽構(gòu)造了一個(gè)強(qiáng)大的部件編程機(jī)制。(1)信號(hào)當(dāng)某個(gè)信號(hào)對(duì)其客戶或所有者發(fā)生的內(nèi)部狀態(tài)發(fā)生改變,信號(hào)被一個(gè)對(duì)象發(fā)射。只有 定義過(guò)這個(gè)信號(hào)的類及其派生類能夠發(fā)射這個(gè)信號(hào)。當(dāng)一個(gè)信號(hào)被發(fā)射時(shí),與其相關(guān)聯(lián)的槽將被立刻執(zhí)行,就象一個(gè)正常的函數(shù)調(diào)用一樣。信號(hào)-槽機(jī)制完全獨(dú)立于任何GUI事件循環(huán)。只有當(dāng)所有的槽返回以后發(fā)射函數(shù)(emit)才返回。 如果存在多個(gè)槽與某個(gè)信號(hào)相關(guān)聯(lián),那么,當(dāng)這個(gè)信號(hào)被發(fā)射時(shí),這些槽將會(huì)一個(gè)接一個(gè)地 執(zhí)行,但是它們執(zhí)行的順序?qū)?huì)是隨機(jī)的、不確定的,我們不能人為地指定哪個(gè)先執(zhí)行、哪個(gè)后執(zhí)行。信號(hào)的聲明是在頭文件中進(jìn)行的,QT的sig

17、nals關(guān)鍵字指出進(jìn)入了信號(hào)聲明區(qū),隨后即可 聲明自己的信號(hào)。例如,下面定義了三個(gè)信號(hào):signals: void mySignal();void mySignal(int x); void mySignalParam(int x,int y);在上面的定義中,signals是QT的關(guān)鍵字,而非C/C+的。接下來(lái)的一行void mySignal() 定義了信號(hào)mySignal,這個(gè)信號(hào)沒(méi)有攜帶參數(shù);接下來(lái)的一行void mySignal(int x)定義 了重名信號(hào)mySignal,但是它攜帶一個(gè)整形參數(shù),這有點(diǎn)類似于C+中的虛函數(shù)。從形式上 講信號(hào)的聲明與普通的C+函數(shù)是一樣的,但是信號(hào)卻沒(méi)

18、有函數(shù)體定義,另外,信號(hào)的返回 類型都是void,不要指望能從信號(hào)返回什么有用信息。信號(hào)由moc自動(dòng)產(chǎn)生,它們不應(yīng)該在.cpp文件中實(shí)現(xiàn)。(2)槽槽是普通的C+成員函數(shù),可以被正常調(diào)用,它們唯一的特殊性就是很多信號(hào)可以與其相關(guān)聯(lián)。當(dāng)與其關(guān)聯(lián)的信號(hào)被發(fā)射時(shí),這個(gè)槽就會(huì)被調(diào)用。槽可以有參數(shù),但槽的參數(shù)不能有缺省值。既然槽是普通的成員函數(shù),因此與其它的函數(shù)一樣,它們也有存取權(quán)限。槽的存取權(quán)限決定了誰(shuí)能夠與其相關(guān)聯(lián)。同普通的C+成員函數(shù)一樣,槽函數(shù)也分為三種類型,即public slots、private slots和protected slots:public slots:在這個(gè)區(qū)內(nèi)聲明的槽意味著任

19、何對(duì)象都可將信號(hào)與之相連接。這對(duì)于組件編程非常有用,你可以創(chuàng)建彼此互不了解的對(duì)象,將它們的信號(hào)與槽進(jìn)行連接以便信息能夠正確的傳遞。protected slots:在這個(gè)區(qū)內(nèi)聲明的槽意味著當(dāng)前類及其子類可以將信號(hào)與之相連接。這適用于那些槽,它們是類實(shí)現(xiàn)的一部分,但是其界面接口卻面向外部。private slots:在這個(gè)區(qū)內(nèi)聲明的槽意味著只有類自己可以將信號(hào)與之相連接。這適用于聯(lián)系非常緊密的類。槽也能夠聲明為虛函數(shù),這也是非常有用的。槽的聲明也是在頭文件中進(jìn)行的。例如,下面聲明了三個(gè)槽:public slots:void mySlot();void mySlot(int x);void mySi

20、gnalParam(int x,int y);(3)信號(hào)與槽的關(guān)聯(lián)建立連接:通過(guò)調(diào)用QObject對(duì)象的connect函數(shù)來(lái)將某個(gè)對(duì)象的信號(hào)與另外一個(gè)對(duì)象的槽函數(shù)相關(guān)聯(lián),這樣當(dāng)發(fā)射者發(fā)射信號(hào)時(shí),接收者的槽函數(shù)將被調(diào)用。該函數(shù)的定義如下:bool QObject:connect ( const QObject * sender, const char * signal, const QObject * receiver, const char * member ) static這個(gè)函數(shù)的作用就是將發(fā)射者sender對(duì)象中的信號(hào)signal與接收者receiver中的member槽函數(shù)聯(lián)系起來(lái)。當(dāng)

21、指定信號(hào)signal時(shí)必須使用QT的宏SIGNAL(),當(dāng)指定槽函數(shù)時(shí)必須使用宏SLOT()。如果發(fā)射者與接收者屬于同一個(gè)對(duì)象的話,那么在connect調(diào)用中接收者參數(shù)可以省略。斷開連接:disconnect函數(shù)來(lái)斷開連接。其定義如下:bool QObject:disconnect ( const QObject * sender, const char * signal, const Object * receiver, const char * member ) static這個(gè)函數(shù)斷開發(fā)射者中的信號(hào)與接收者中的槽函數(shù)之間的關(guān)聯(lián)。屬性介紹Qt的屬性也基于元對(duì)象系統(tǒng),在類聲明中用宏Q_PRO

22、PERTY來(lái)聲明。屬性只能在繼承于QObject的子類中聲明。宏Q_OVERRIDE用來(lái)覆蓋一些子類中由繼承得到的屬性。屬性也是一個(gè)類的成員。元對(duì)象系統(tǒng)中設(shè)置屬性和得到屬性的成員函數(shù)列出如下:QObject:setProperty()可以讓你控制類中那些在編譯時(shí)不可用的屬性。QMetaObject:propertyNames()返回所有可用屬性的名稱。QMetaObject:property()返回一個(gè)指定屬性的屬性數(shù)據(jù):一個(gè)QMetaProperty對(duì)象。下面兩個(gè)設(shè)置函數(shù)是等效的:/ QButton *b和QObject *o指向同一個(gè)按鈕時(shí) b-setDown( TRUE ); o-set

23、Property( down, TRUE );開發(fā)環(huán)境VisioStudio2008簡(jiǎn)介Microsoft Visual Studio(簡(jiǎn)稱VS)是美國(guó)微軟公司的開發(fā)工具包系列產(chǎn)品。VS是一個(gè)基本完整的開發(fā)工具集,它包括了整個(gè)軟件生命周期中所需要的大部分工具,如UML工具、代碼管控工具、集成開發(fā)環(huán)境(IDE)等等。所寫的目標(biāo)代碼適用于微軟支持的所有平臺(tái),包括Microsoft Windows、Windows Mobile、Windows CE、.NET Framework、.NET Compact Framework和MicrosoftSilverlight及Windows Phone。Vis

24、ual Studio 2008 在三個(gè)方面為開發(fā)人員提供了關(guān)鍵改進(jìn):1、快速的應(yīng)用程序開發(fā)。2、高效的團(tuán)隊(duì)協(xié)作。3、突破性的用戶體驗(yàn)。Visual Studio 2008 提供了高級(jí)開發(fā)工具、調(diào)試功能、數(shù)據(jù)庫(kù)功能和創(chuàng)新功能,幫助在各種平臺(tái)上快速創(chuàng)建當(dāng)前最先進(jìn)的應(yīng)用程序。Visual Studio 2008 包括各種增強(qiáng)功能,例如可視化設(shè)計(jì)器(使用 .NET Framework 3.5加速開發(fā))、對(duì) Web 開發(fā)工具的大量改進(jìn),以及能夠加速開發(fā)和處理所有類型數(shù)據(jù)的語(yǔ)言增強(qiáng)功能。Visual Studio 2008 為開發(fā)人員提供了所有相關(guān)的工具和框架支持,幫助創(chuàng)建引人注目的、令人印象深刻并支持

25、AJAX 的 Web 應(yīng)用程序。開發(fā)人員能夠利用這些豐富的客戶端和服務(wù)器端框架輕松構(gòu)建以客戶為中心的 Web 應(yīng)用程序,這些應(yīng)用程序可以集成任何后端數(shù)據(jù)提供程序、在任何當(dāng)前瀏覽器內(nèi)運(yùn)行并完全訪問(wèn) ASP NET應(yīng)用程序服務(wù)和 Microsoft 平臺(tái)。2程序開發(fā)為了幫助開發(fā)人員迅速創(chuàng)建先進(jìn)的軟件,Visual Studio 2008 提供了改進(jìn)的語(yǔ)言和數(shù)據(jù)功能,例如語(yǔ)言集成的查詢 (LINQ),各個(gè)編程人員可以利用這些功能更輕松地構(gòu)建解決方案以分析和處理信息。Visual Studio 2008 還使開發(fā)人員能夠從同一開發(fā)環(huán)境內(nèi)創(chuàng)建面向多個(gè) .NET Framework 版本的應(yīng)用程序。開發(fā)人

26、員能夠構(gòu)建面向 .NET Framework 2.0、3.0 或 3.5 的應(yīng)用程序,意味他們可以在同一環(huán)境中支持各種各樣的項(xiàng)目。Visual Studio 2008為開發(fā)人員提供了在最新平臺(tái)上加速創(chuàng)建緊密聯(lián)系的應(yīng)用程序的新工具,這些平臺(tái)包括Web、Windows Vista、Office 2007、SQL Server 2008和Windows Server 2008。對(duì)于 Web,ASP NET AJAX 及其他新技術(shù)使開發(fā)人員能夠迅速創(chuàng)建更高效、交互式更強(qiáng)和更個(gè)性化的新一代 Web 體驗(yàn)。3高效的團(tuán)隊(duì)協(xié)作Visual Studio 2008 提供了幫助開發(fā)團(tuán)隊(duì)改進(jìn)協(xié)作的擴(kuò)展的和改進(jìn)的服務(wù)

27、項(xiàng)目,包括幫助將數(shù)據(jù)庫(kù)專業(yè)人員和圖形設(shè)計(jì)人員加入到開發(fā)流程的工具。3VC2008與Qt4.7的開發(fā)環(huán)境搭建VC2008與Qt開發(fā)環(huán)境搭建是十分簡(jiǎn)單的事情,Qt授權(quán)模式有三種授權(quán)協(xié)議,分別是GPL, LGPL和Commercial,選擇GPL協(xié)議即可。1下載并安裝Vc2008專業(yè)版。2下載并安裝Qt 安裝包qt-win-opensource-4.7.0-vs2008.exe 。3下載并安裝qt-vs-addin-1.1.7.exe。 4. 在系統(tǒng)環(huán)境變量中添加D:QT4.7.0。核心技術(shù)介紹UDP協(xié)議UDP協(xié)議是英文UserDatagramProtocol的縮寫,即用戶數(shù)據(jù)報(bào)協(xié)議,主要用來(lái)支持那

28、些需要在計(jì)算機(jī)之間傳輸數(shù)據(jù)的網(wǎng)絡(luò)應(yīng)用。包括網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)在內(nèi)的眾多的客戶/服務(wù)器模式的網(wǎng)絡(luò)應(yīng)用都需要使用UDP協(xié)議。UDP協(xié)議從問(wèn)世至今已經(jīng)被使用了很多年,雖然其最初的光彩已經(jīng)被一些類似協(xié)議所掩蓋,但是即使是在今天,UDP仍然不失為一項(xiàng)非常實(shí)用和可行的網(wǎng)絡(luò)傳輸層協(xié)議。與我們所熟知的TCP(傳輸控制協(xié)議)協(xié)議一樣,UDP協(xié)議直接位于IP(網(wǎng)際協(xié)議)協(xié)議的頂層。根據(jù)OSI(開放系統(tǒng)互連)參考模型,UDP和TCP都屬于傳輸層協(xié)議。UDP協(xié)議的主要作用是將網(wǎng)絡(luò)數(shù)據(jù)流量壓縮成數(shù)據(jù)報(bào)的形式。一個(gè)典型的數(shù)據(jù)報(bào)就是一個(gè)二進(jìn)制數(shù)據(jù)的傳輸單位。每一個(gè)數(shù)據(jù)報(bào)的前8個(gè)字節(jié)用來(lái)包含報(bào)頭信息,剩余字節(jié)則用來(lái)包含具體的傳

29、輸數(shù)據(jù)。UDP協(xié)議的全稱是用戶數(shù)據(jù)報(bào)協(xié)議2,在網(wǎng)絡(luò)中它與TCP協(xié)議一樣用于處理數(shù)據(jù)包,是一種無(wú)連接的協(xié)議。在OSI模型中,在第四層傳輸層,處于IP協(xié)議的上一層。UDP有不提供數(shù)據(jù)包分組、組裝和不能對(duì)數(shù)據(jù)包進(jìn)行排序的缺點(diǎn),也就是說(shuō),當(dāng)報(bào)文發(fā)送之后,是無(wú)法得知其是否安全完整到達(dá)的。UDP用來(lái)支持那些需要在計(jì)算機(jī)之間傳輸數(shù)據(jù)的網(wǎng)絡(luò)應(yīng)用。包括網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)在內(nèi)的眾多的客戶/服務(wù)器模式的網(wǎng)絡(luò)應(yīng)用都需要使用UDP協(xié)議。UDP協(xié)議從問(wèn)世至今已經(jīng)被使用了很多年,雖然其最初的光彩已經(jīng)被一些類似協(xié)議所掩蓋,但是即使是在今天UDP仍然不失為一項(xiàng)非常實(shí)用和可行的網(wǎng)絡(luò)傳輸層協(xié)議。與所熟知的TCP(傳輸控制協(xié)議)協(xié)議一

30、樣,UDP協(xié)議直接位于IP(網(wǎng)際協(xié)議)協(xié)議的頂層。根據(jù)OSI(開放系統(tǒng)互連)參考模型,UDP和TCP都屬于傳輸層協(xié)議。UDP協(xié)議使用端口號(hào)為不同的應(yīng)用保留其各自的數(shù)據(jù)傳輸通道。UDP和TCP協(xié)議正是采用這一機(jī)制實(shí)現(xiàn)對(duì)同一時(shí)刻內(nèi)多項(xiàng)應(yīng)用同時(shí)發(fā)送和接收數(shù)據(jù)的支持。數(shù)據(jù)發(fā)送一方(可以是客戶端或服務(wù)器端)將UDP數(shù)據(jù)報(bào)通過(guò)源端口發(fā)送出去,而數(shù)據(jù)接收一方則通過(guò)目標(biāo)端口接收數(shù)據(jù)。有的網(wǎng)絡(luò)應(yīng)用只能使用預(yù)先為其預(yù)留或注冊(cè)的靜態(tài)端口;而另外一些網(wǎng)絡(luò)應(yīng)用則可以使用未被注冊(cè)的動(dòng)態(tài)端口。因?yàn)閁DP報(bào)頭使用兩個(gè)字節(jié)存放端口號(hào),所以端口號(hào)的有效范圍是從0到65535。一般來(lái)說(shuō),大于49151的端口號(hào)都代表動(dòng)態(tài)端口。UDP

31、協(xié)議的主要作用是將網(wǎng)絡(luò)數(shù)據(jù)流量壓縮成數(shù)據(jù)包的形式。一個(gè)典型的數(shù)據(jù)包就是一個(gè)二進(jìn)制數(shù)據(jù)的傳輸單位。每一個(gè)數(shù)據(jù)包的前8個(gè)字節(jié)用來(lái)包含報(bào)頭信息,剩余字節(jié)則用來(lái)包含具體的傳輸數(shù)據(jù)。 TCP協(xié)議Transmission Control Protocol傳輸控制協(xié)議TCP是一種面向連接(連接導(dǎo)向)的、可靠的、基于字節(jié)流的傳輸層(Transport layer)通信協(xié)議,由IETF的RFC 793說(shuō)明(specified)。TCP在IP報(bào)文的協(xié)議號(hào)是6。在簡(jiǎn)化的計(jì)算機(jī)網(wǎng)絡(luò)OSI模型中,它完成第四層傳輸層所指定的功能,UDP是同一層內(nèi)另一個(gè)重要的傳輸協(xié)TCP/IP協(xié)議并不完全符合OSI的七層參考模型。傳統(tǒng)的開

32、放式系統(tǒng)互連參考模型,是一種通信協(xié)議的7層抽象的參考模型,其中每一層執(zhí)行某一特定任務(wù)。該模型的目的是使各種硬件在相同的層次上相互通信。這7層是:物理層、數(shù)據(jù)鏈路層、網(wǎng)路層、傳輸層、話路層、表示層和應(yīng)用層。而TCP/IP通訊協(xié)議采用了4層的層級(jí)結(jié)構(gòu),每一層都呼叫它的下一層所提供的網(wǎng)絡(luò)來(lái)完成自己的需求。這4層分別為: 應(yīng)用層:應(yīng)用程序間溝通的層,如簡(jiǎn)單電子郵件傳輸(SMTP)、文件傳輸協(xié)議(FTP)、網(wǎng)絡(luò)遠(yuǎn)程訪問(wèn)協(xié)議(Telnet)等。 傳輸層:在此層中,它提供了節(jié)點(diǎn)間的數(shù)據(jù)傳送服務(wù),如傳輸控制協(xié)議(TCP)、用戶數(shù)據(jù)報(bào)協(xié)議(UDP)等,TCP和UDP給數(shù)據(jù)包加入傳輸數(shù)據(jù)并把它傳輸?shù)较乱粚又?,這一

33、層負(fù)責(zé)傳送數(shù)據(jù),并且確定數(shù)據(jù)已被送達(dá)并接收。 互連網(wǎng)絡(luò)層:負(fù)責(zé)提供基本的數(shù)據(jù)封包傳送功能,讓每一塊數(shù)據(jù)包都能夠到達(dá)目的主機(jī)(但不檢查是否被正確接收),如網(wǎng)際協(xié)議(IP)。 網(wǎng)絡(luò)接口層:對(duì)實(shí)際的網(wǎng)絡(luò)媒體的管理,定義如何使用實(shí)際網(wǎng)絡(luò)(如Ethernet、Serial Line等)來(lái)傳送數(shù)據(jù)。在因特網(wǎng)協(xié)議族(Internet protocol suite)四層協(xié)議中,TCP層是位于IP層之上,應(yīng)用層之下的傳輸層。不同主機(jī)的應(yīng)用層之間經(jīng)常需要可靠的、像管道一樣的連接,但是IP層不提供這樣的流機(jī)制,而是提供不可靠的包交換。應(yīng)用層向TCP層發(fā)送用于網(wǎng)間傳輸?shù)?、?位字節(jié)表示的數(shù)據(jù)流,然后TCP把數(shù)據(jù)流分割

34、成適當(dāng)長(zhǎng)度的報(bào)文段(通常受該計(jì)算機(jī)連接的網(wǎng)絡(luò)的數(shù)據(jù)鏈路層的最大傳送單元(MTU)的限制)。之后TCP把結(jié)果包傳給IP層,由它來(lái)通過(guò)網(wǎng)絡(luò)將包傳送給接收端實(shí)體的TCP層。TCP為了保證不發(fā)生丟包,就給每個(gè)字節(jié)一個(gè)序號(hào),同時(shí)序號(hào)也保證了傳送到接收端實(shí)體的包的按序接收。然后接收端實(shí)體對(duì)已成功收到的字節(jié)發(fā)回一個(gè)相應(yīng)的確認(rèn)(ACK);如果發(fā)送端實(shí)體在合理的往返時(shí)延(RTT)內(nèi)未收到確認(rèn),那么對(duì)應(yīng)的數(shù)據(jù)(假設(shè)丟失了)將會(huì)被重傳。TCP用一個(gè)校驗(yàn)和函數(shù)來(lái)檢驗(yàn)數(shù)據(jù)是否有錯(cuò)誤;在發(fā)送和接收時(shí)都要計(jì)算和校驗(yàn)。首先,TCP建立連接之后,通信雙方都同時(shí)可以進(jìn)行數(shù)據(jù)的傳輸,其次,它是全雙工的;在保證可靠性上,采用超時(shí)重傳

35、和捎帶確認(rèn)機(jī)制。在流量控制上,采用滑動(dòng)窗口協(xié)議,協(xié)議中規(guī)定,對(duì)于窗口內(nèi)未經(jīng)確認(rèn)的分組需要重傳。在擁塞控制上,采用廣受好評(píng)的TCP擁塞控制算法(也稱AIMD算法),該算法主要包括三個(gè)主要部分:1,加性增、乘性減;2,慢啟動(dòng);3,對(duì)超時(shí)事件做出反應(yīng)。Qt 數(shù)據(jù)庫(kù)支持Qt 提供了 QtSql 模塊來(lái)提供平臺(tái)獨(dú)立的基于 SQL 的數(shù)據(jù)庫(kù)操作。這里我們所說(shuō)的“平臺(tái)獨(dú)立”,既包括操作系統(tǒng)平臺(tái),有包括各個(gè)數(shù)據(jù)庫(kù)平臺(tái)。另外,我們強(qiáng)調(diào)了“基于 SQL”,因?yàn)?NoSQL 數(shù)據(jù)庫(kù)至今沒(méi)有一個(gè)通用查詢方法,所以不可能提供一種通用的 NoSQL 數(shù)據(jù)庫(kù)的操作。Qt 的數(shù)據(jù)庫(kù)操作還可以很方便的與 model/view

36、架構(gòu)進(jìn)行整合。通常來(lái)說(shuō),對(duì)數(shù)據(jù)庫(kù)的操作更多地在于對(duì)數(shù)據(jù)庫(kù)表的操作,而這正是 model/view 架構(gòu)的長(zhǎng)項(xiàng)。不過(guò),由于受到協(xié)議的限制,Qt 開源版本并沒(méi)有提供上面所有驅(qū)動(dòng)的二進(jìn)制版本,而僅僅以源代碼的形式提供。通常,Qt 只默認(rèn)搭載 QSqlite 驅(qū)動(dòng)(這個(gè)驅(qū)動(dòng)實(shí)際還包括 Sqlite 數(shù)據(jù)庫(kù),也就是說(shuō),如果需要使用 Sqlite 的話,只需要該驅(qū)動(dòng)即可)。我們可以選擇把這些驅(qū)動(dòng)作為 Qt 的一部分進(jìn)行編譯,也可以當(dāng)作插件編譯。如果習(xí)慣于使用 SQL 語(yǔ)句,我們可以選擇QSqlQuery類;如果只需要使用高層次的數(shù)據(jù)庫(kù)接口(不關(guān)心 SQL 語(yǔ)法)。Qt為數(shù)據(jù)庫(kù)訪問(wèn)提供的QtSql模塊實(shí)現(xiàn)了

37、數(shù)據(jù)庫(kù)和Qt應(yīng)用程序的無(wú)縫集成,同時(shí)為開發(fā)人員提供了一套與平臺(tái)無(wú)關(guān)和具體所用數(shù)據(jù)庫(kù)均無(wú)關(guān)的調(diào)用接口。這使得開發(fā)人員只需掌握基本的SQL語(yǔ)句,就能進(jìn)行簡(jiǎn)單的數(shù)據(jù)庫(kù)應(yīng)用程序開發(fā)。如下表所示,QtSql模塊由3部分組成。驅(qū)動(dòng)層:驅(qū)動(dòng)層實(shí)現(xiàn)了特定數(shù)據(jù)庫(kù)與SQL接口的底層橋接。SQL接口層:SQL接口層提供了數(shù)據(jù)庫(kù)類的訪問(wèn)用戶接口層:用戶接口層提供從數(shù)據(jù)庫(kù)數(shù)據(jù)到用于數(shù)據(jù)庫(kù)表示的窗體的映射QtSql模塊提供了一個(gè)平臺(tái)無(wú)關(guān)且數(shù)據(jù)庫(kù)無(wú)關(guān)的訪問(wèn)SQL數(shù)據(jù)庫(kù)的接口。Qt中的每個(gè)數(shù)據(jù)庫(kù)連接用一個(gè)QSqlDatabase對(duì)象來(lái)表示;Qt使用不同driver來(lái)和各種不同數(shù)據(jù)庫(kù)的API進(jìn)行通訊。QSqlQuery提供了直

38、接執(zhí)行任意SQL語(yǔ)句的特性;此外還提供了兩個(gè)高層次的無(wú)需SQL命令的數(shù)據(jù)庫(kù)接口:QSqlTableModel和QSqlRelationalTableModelSection 1. Connecting and Querying在執(zhí)行SQL命令前,必須先建立好同數(shù)據(jù)庫(kù)的連接。靜態(tài)函數(shù)QSqlDatabase:addDatabase()用于創(chuàng)建一個(gè)新的QSqlDatabase對(duì)象,函數(shù)的第一個(gè)參數(shù)指定了Qt該選擇哪個(gè)Driver來(lái)訪問(wèn)數(shù)據(jù)庫(kù)。在對(duì)創(chuàng)建的QSqlDatabase對(duì)象設(shè)定好host name,database name ,username和password后,需要調(diào)用open()函數(shù)來(lái)

39、建立到數(shù)據(jù)庫(kù)的連接。一旦到數(shù)據(jù)庫(kù)的鏈接建立好后,就可以通過(guò)QSqlQuery:exec()來(lái)執(zhí)行底層數(shù)據(jù)庫(kù)所支持的任意SQL語(yǔ)句了。QSqlQuery:next()返回查詢結(jié)果集中的下一行,而QSqlQuery:value()則返回當(dāng)前行中的某一項(xiàng)的值,以QVariant的形式返回??梢允褂肣SqlQuery:isActive()來(lái)檢查SQL語(yǔ)句的執(zhí)行是否出現(xiàn)錯(cuò)誤。placeholder QSqlQuery:prepare() QSqlQuery:bindValue() or QSqlQuery:addBindValue() QSqlQuery:exec()Qt支持?jǐn)?shù)據(jù)庫(kù)中transactio

40、n(事務(wù))這個(gè)概念。transaction()用于啟動(dòng)transaction,而commit()或rollback()用于結(jié)束transaction。靜態(tài)函數(shù)QSqlDatabase:database(),返回指定連接所對(duì)應(yīng)的QSqlDatabase對(duì)象。 QSqlDatabase:driver() 返回該連接底層所使用的dirver QSqlDatabase:hasFeature()可用來(lái)查詢底層數(shù)據(jù)庫(kù)是否支持某項(xiàng)特性。 Qt允許在一個(gè)程序中創(chuàng)建多個(gè)數(shù)據(jù)庫(kù)連接,這中情況下在執(zhí)行SQL語(yǔ)句時(shí),需要為QSqlQuery的構(gòu)造函數(shù)傳入要執(zhí)行該語(yǔ)句的數(shù)據(jù)庫(kù)對(duì)應(yīng)的QSqlDatabase對(duì)象。與QSq

41、lQuery相比,QSqlTableModel提供了一個(gè)更高層次、更抽象的接口,可以避免使用原始的SQL命令。 QSqlTableModel:record() & QSqlTableModel:value() QSqlTableModel:insertRow() & QSqlTableModel:setData() QSqlTableModel:submitAll() ,于其他model不同,在使用QSqlTableModel時(shí),必須調(diào)用submitAll()來(lái)強(qiáng)制所有的修改都寫入數(shù)據(jù)庫(kù)。當(dāng)需要處理外鍵(foreign key)時(shí),需要使用QSqlRelationalTableModel而不是

42、QSqlTableModel。對(duì)于使用了SQL相關(guān)類的應(yīng)用程序,需要在對(duì)應(yīng)的.pro中添加下面一行:QT +=sql,這樣在鏈接時(shí)會(huì)將QtSql庫(kù)鏈入。需求分析目前餐飲企業(yè)工作流程目前的中小餐飲企業(yè)采用最多的手工記賬形式,其業(yè)務(wù)流程如圖2.1所示客人點(diǎn)餐客人點(diǎn)餐服務(wù)員登記廚師加工處理客人點(diǎn)餐收銀臺(tái)服務(wù)員登記 圖3-1手工業(yè)務(wù)流程分析流程圖簡(jiǎn)介:顧客到達(dá)餐廳有引領(lǐng)員引導(dǎo)到座位后,承上菜譜并登記客人所點(diǎn)食品,完畢后唱菜譜并由客人確認(rèn),征得客人同意后交給后臺(tái)廚師及配餐人員,配餐人員根據(jù)大廳服務(wù)員提交的菜譜為客人配齊所有飲料、酒水、甜點(diǎn)等食物,廚師根據(jù)大廳服務(wù)員提供的菜譜按照先涼后熱的順序快速加工出美

43、味可口的食物交友送餐人員及時(shí)送到指定的餐桌??腿擞貌屯戤吅笥蟹?wù)員或者客戶到收銀處辦理結(jié)算手續(xù),客人如有會(huì)員卡的話,收銀員應(yīng)給予相應(yīng)的優(yōu)惠,結(jié)算完畢后有引領(lǐng)員送客人出餐廳,這樣的工作方式當(dāng)客流量增加的時(shí)候,必然會(huì)出現(xiàn)爭(zhēng)搶菜譜,上錯(cuò)菜,漏上菜、忘記上菜以及計(jì)算失誤等現(xiàn)象,輕則引起客戶的不滿,重則引起糾紛,因此有必要采用新的工作模式,來(lái)避免上述情況的發(fā)生。所建議系統(tǒng)的工作流程基于傳統(tǒng)餐飲企業(yè)手工操作所帶來(lái)的種種弊端,一種新的利用計(jì)算機(jī)來(lái)管理信息的系統(tǒng)餐飲點(diǎn)餐管理系統(tǒng)也就應(yīng)運(yùn)而生,那么該系統(tǒng)的工作流程如圖2.2所示圖3-2自動(dòng)化的點(diǎn)餐系統(tǒng)產(chǎn)品功能根據(jù)所建議系統(tǒng)的業(yè)務(wù)流程圖,分析出新系統(tǒng)的功能模塊圖如

44、2.3所示用戶登錄用戶登錄點(diǎn)餐管理配餐管理結(jié)算管理系統(tǒng)管理圖3-3功能模塊圖軟件需求描述1用戶登陸:用戶輸入用戶名及密碼后,系統(tǒng)自動(dòng)驗(yàn)證有效性及用戶角色,根據(jù)用戶擁有的角色自動(dòng)進(jìn)入不同的子系統(tǒng)2客戶點(diǎn)餐子系統(tǒng):當(dāng)客人落座后,服務(wù)員手持IPAD登陸點(diǎn)餐子系統(tǒng)后,首先輸入相應(yīng)的桌號(hào),然后由客人根據(jù)不同的服務(wù)類別(特價(jià)、涼菜、熱菜、湯、酒水、飲料)選擇不同的食物及數(shù)量,系統(tǒng)根據(jù)不同的食物計(jì)算出總價(jià)格,方便客人控制總價(jià)格,如果輸入錯(cuò)誤系統(tǒng)提供刪除的功能,最后提交到后廚配餐子系統(tǒng)中.3配餐管理子系統(tǒng):配餐員或者廚師根據(jù)最新的配餐信息,按照時(shí)間先后順序配置食品,完成后提交給結(jié)算管理子系統(tǒng)中4結(jié)算管理子系統(tǒng)

45、:收銀員根據(jù)服務(wù)員或者客人提供的桌號(hào)計(jì)算出總價(jià)格,客人如果提供會(huì)員卡或者會(huì)員號(hào),系統(tǒng)自動(dòng)驗(yàn)證卡號(hào)及會(huì)員身份并計(jì)算出相應(yīng)的折扣及實(shí)付金額,根據(jù)相應(yīng)的金額出具對(duì)應(yīng)的發(fā)票5系統(tǒng)管理子系統(tǒng):經(jīng)理登陸子系統(tǒng)后,上傳菜譜,管理菜譜及特價(jià)。在此子系統(tǒng)中,還實(shí)現(xiàn)了會(huì)員及用戶、留言、桌位的管理。系統(tǒng)用例圖系統(tǒng)用例【9】圖是按照?qǐng)鼍暗男问綄?duì)系統(tǒng)的功能做清晰地設(shè)計(jì),具體用例有:登陸用例圖、點(diǎn)餐用例圖、配餐用例圖、結(jié)賬用例圖、管理用例。用戶通過(guò)餐飲管理系統(tǒng)可以實(shí)現(xiàn)用戶登陸,如圖:圖3-4登陸用例服務(wù)員通過(guò)餐飲管理系統(tǒng)可以實(shí)現(xiàn)客人點(diǎn)餐,如圖:圖3-5點(diǎn)餐用例廚師通過(guò)餐飲管理系統(tǒng)實(shí)現(xiàn)廚師配餐,如圖:圖3-6配餐用例收銀員

46、通過(guò)餐飲管理系統(tǒng)實(shí)現(xiàn)替客人結(jié)賬功能,如圖:圖3-7結(jié)算用例經(jīng)理通過(guò)餐飲管理系統(tǒng)實(shí)現(xiàn)對(duì)系統(tǒng)的設(shè)置等操作,如圖:圖3-8系統(tǒng)設(shè)置用例軟件接口Windows操作系統(tǒng)所提供的各種API:1.基礎(chǔ)服務(wù)(Base Services),提供對(duì)Windows系統(tǒng)可用的基礎(chǔ)資源的訪問(wèn)接口。比如象:文件系統(tǒng)(file system)、外部設(shè)備(device)、,進(jìn)程(process)、線程(thread)以及訪問(wèn)注冊(cè)表(Windows registry)和錯(cuò)誤處理機(jī)制(error handling)。這些功能接口位于,16位Windows下的kernel.exe、krnl286.exe或krnl386.exe系統(tǒng)

47、文檔中;以及32位Windows下的 kernel32.dll和advapi32.dll中。2.圖形設(shè)備接口(GDI),提供功能為:輸出圖形內(nèi)容到顯示器、打印機(jī)以及其他外部輸出設(shè)備。它位于16位Windows下的gdi.exe;以及32位Windows下的gdi32.dll。3.圖形化用戶界面(GUI),提供的功能有創(chuàng)建和管理屏幕和大多數(shù)基本控件(control),比如按鈕和滾動(dòng)條。接收鼠標(biāo)和鍵盤輸入,以及其他與GUI有關(guān)的功能。這些調(diào)用接口位于:16位Windows下的user.exe,以及32位Windows下的user32.dll。從Windows XP版本之后,基本控件和通用對(duì)話框控件

48、(Common Control Library)的調(diào)用接口放在comctl32.dll中。4.通用對(duì)話框鏈接庫(kù)(Common Dialog Box Library),為應(yīng)用程序提供標(biāo)準(zhǔn)對(duì)話框,比如打開/保存文檔對(duì)話框、顏色對(duì)話框和字體對(duì)話框等等。這個(gè)鏈接庫(kù)位于:16位Windows下的commdlg.dll中,以及32位Windows下comdlg32.dll中。它被歸類為User Interface API之下。5.通用控件鏈接庫(kù)(Common Control Library),為應(yīng)用程序提供接口來(lái)訪問(wèn)操作系統(tǒng)提供的一些高級(jí)控件。比如像:狀態(tài)欄(status bar)、進(jìn)度條(progres

49、s bars)、工具欄(toolbar)和標(biāo)簽(tab)。這個(gè)鏈接庫(kù)位于:16位Windows下的commctrl.dll中,以及32位Windows下comctl32.dll中。它被歸類為User Interface API之下。6.Windows外殼(Windows Shell),作為Windows API的組成部分,不僅允許應(yīng)用程序訪問(wèn)Windows外殼提供的功能,還對(duì)之有所改進(jìn)和增強(qiáng)。它位于16位Windows下的shell.dll中,以及32位Windows下的shell32.dll中(Windows 95則在 shlwapi.dll中)。 它被歸類為User Interface A

50、PI之下。7.網(wǎng)絡(luò)服務(wù)(Network Services),為訪問(wèn)操作系統(tǒng)提供的多種網(wǎng)絡(luò) 功能提供接口。它包括NetBIOS、Winsock、NetDDE及RPC等。 總體設(shè)計(jì)與實(shí)現(xiàn)系統(tǒng)架構(gòu)設(shè)計(jì)本系統(tǒng)采用流行的C/S結(jié)構(gòu),既客戶端/服務(wù)器端結(jié)構(gòu),客戶端是基于.Net FrameWork平臺(tái)的應(yīng)用程序,服務(wù)器端是基于Sql Server 2005的數(shù)據(jù)庫(kù)存儲(chǔ)應(yīng)用系統(tǒng),采用面向?qū)ο蟆?2】的開發(fā)語(yǔ)言C#【13】作為編程語(yǔ)言,使用Visual studio 2010作為開發(fā)工具以及應(yīng)用流行的軟件開發(fā)模型瀑布模型系統(tǒng)編碼規(guī)范系統(tǒng)編碼實(shí)現(xiàn)采用目前流行的面向?qū)ο蟮木幊陶Z(yǔ)言C#,因此為了今后的系統(tǒng)擴(kuò)展及測(cè)試

51、維護(hù),所以按照微軟統(tǒng)一發(fā)布的C#編碼規(guī)范,具體內(nèi)容如下:類型的命名1.類名,以Class聲明的類,都必須以名詞或名詞短語(yǔ)命名,體現(xiàn)類的作用。如:Class Indicator當(dāng)類是一個(gè)特性(Attribute)時(shí),以Attribute結(jié)尾,當(dāng)類是一個(gè)異常(Exception)時(shí),以Exception結(jié)尾:Class ColorSetException Class CauseExceptionAttribute 當(dāng)類只需有一個(gè)對(duì)象實(shí)例(全局對(duì)象,比如Application等),必須以Class結(jié)尾,如 Class ScreenClass Class SystemClass。當(dāng)類只用于作為其他類的

52、基類,根據(jù)情況,以Base結(jié)尾:MustInherit Class IndicatorBase,如果定義的類是一個(gè)窗體,那么名字的后面必須加后綴Form,如果是Web窗體,必須加后綴Page:Class PrintForm : Inherits Form * Windows窗體Class StartPage : Inherits Page * Web窗體2.枚舉和結(jié)構(gòu):同樣必須以名詞或名詞短語(yǔ)命名。最好體現(xiàn)枚舉或結(jié)構(gòu)的特點(diǎn),如:Enum ColorButtons 以復(fù)數(shù)結(jié)尾,表明這是一個(gè)枚舉Structure CustomerInfoRecord 以Record結(jié)尾,表明這是一個(gè)結(jié)構(gòu)體3.委派

53、類型:普通的委派類型以描述動(dòng)作的名詞命名,以體現(xiàn)委派類型實(shí)例的功能:Delegate Sub DataSeeker (ByVal SeekString As String),用于事件處理的委派類型,必須以EventHandler結(jié)尾,如:Delegate Sub DataChangedEventHandler (ByVal Sender As Object, ByVal e As DataChangedEventArgs)4.接口:與其他類型不同,接口必須要由I作為前綴,并用形容詞命名,突出表現(xiàn)實(shí)現(xiàn)接口的類將具有什么能力:Interface ISortable5.模塊:模塊不是類型,他的名稱除

54、了必須以名詞命名外,必須加以后綴Module:Module SharedFunctionsModule,上述所有規(guī)則的共同特點(diǎn)是,每個(gè)組成名稱的詞語(yǔ)都必須是大寫開頭,禁止完全大寫或小寫的名稱。方法和屬性的命名1.方法:無(wú)論是函數(shù)還是子程序,方法都必須以動(dòng)詞或動(dòng)詞短語(yǔ)命名。無(wú)需區(qū)分函數(shù)和子程序,也無(wú)需指明返回類型。Sub Open(ByVal CommandString As String),F(xiàn)unction SetCopyNumber(ByVal CopyNumber As Integer),參數(shù)需要指明ByVal還是ByRef,這一點(diǎn)寫起來(lái)會(huì)讓程序邊長(zhǎng),但非常必要。如果沒(méi)有特別情況,都使用B

55、yVal。參數(shù)的命名方法,參考后面“變量的命名方法”。需要重載的方法,一般不寫Overloads,根據(jù)需要編寫重載的方法。2.屬性:原則上,字段(Field)是不能公開的,要訪問(wèn)字段的值,一般使用屬性。屬性以簡(jiǎn)潔清晰的名詞命名:Property Concentration As Single,Property Customer As CustomerTypes3.事件:事件是特殊的屬性,只能在事件處理上下文中使用。命名的原則一般是動(dòng)詞或動(dòng)詞的分詞,通過(guò)時(shí)態(tài)表明事件發(fā)生的時(shí)間:Event Click As ClickEventHandler,Event ColorChanged As Color

56、ChangedEventHangler變量和常數(shù)常數(shù)以表明常數(shù)意義的名詞命名,一般不區(qū)分常數(shù)的類型:Const DefaultConcentration As Single = 0.01,在嚴(yán)格要求的代碼中,常數(shù)以c_開頭,如c_DefaultConcentration,但最好不要用它,它會(huì)帶來(lái)輸入困難。普通類型的變量,只要用有意義的名字命名即可,不可使用簡(jiǎn)稱和無(wú)意義的名稱諸如A,x1等,下面給出了良好的例子:Dim Index As IntegerDim NextMonthExpenditure As DecimalDim CustomerName As String不能起太長(zhǎng)的名字,應(yīng)該盡

57、量簡(jiǎn)潔,如下面的例子:Dim VariableUsedToStoreSystemInformation As String * 錯(cuò)誤,太復(fù)雜了Dim SystemInformation As String * 正確,簡(jiǎn)單明了Dim sysInfo As String * 錯(cuò)誤,過(guò)于簡(jiǎn)單特殊情況可以考慮一個(gè)字母的變量:Dim g As Graphic對(duì)于控件,應(yīng)該指明控件的類型,方法是直接在變量后面加以類名:Friend WithEvents NextPageButton As Button * 按鈕Friend WithEvents ColorChoicerPanel As Panel * 面

58、版Friend WithEvents CardFileOpenDialog As FileOpenDialog * 文件打開對(duì)話框等等,無(wú)需規(guī)定某種類型的變量的前綴,只需把類型寫在后面就行了,試對(duì)比下列代碼:btnCancel.Text = &CancelCancelButton.Text = &Cancel顯然后者更能使閱讀者明白變量的類型是一個(gè)按鈕。Main函數(shù)代碼int main(int argc, char *argv)QApplication a(argc, argv);QApplication:addLibraryPath(./plugins);QTextCodec:setCode

59、cForTr(QTextCodec:codecForName(GB2312); QTextCodec:setCodecForLocale(QTextCodec:codecForName(GB2312); QTextCodec:setCodecForCStrings(QTextCodec:codecForName(GB2312); QApplication:addLibraryPath(./sqldrivers);QDataBase* p = QDataBase:GetInstance();p-ConnectDataBase();QLoadManger dlg;if( dlg.exec() !=

60、 QDialog:Accepted )return 0;QMeal w;w.show();return a.exec(); 詳細(xì)設(shè)計(jì)數(shù)據(jù)庫(kù)模塊功能設(shè) 數(shù)據(jù)庫(kù)模塊主要包括用戶管理、菜品管理、會(huì)員管理三大部分,這三大部分都需要將數(shù)據(jù)保存到數(shù)據(jù)庫(kù),所以都?xì)w結(jié)到了數(shù)據(jù)庫(kù)模塊中。其中用戶管理模塊主要是包括用戶的注冊(cè)和用于用戶登錄的驗(yàn)證功能;而菜品管理模塊主要是實(shí)現(xiàn)對(duì)菜品的添加,對(duì)菜品的修改,對(duì)菜品的刪除三大功能;同樣會(huì)員管理也主要是實(shí)現(xiàn)對(duì)會(huì)員添加,對(duì)會(huì)員的修改,以及對(duì)會(huì)員的刪除。 圖5-1登錄模塊功能設(shè)計(jì)登錄模塊主要實(shí)現(xiàn)的功能就是對(duì)系統(tǒng)管理員用戶的注冊(cè)以及對(duì)已經(jīng)注冊(cè)的用戶進(jìn)行用戶信息驗(yàn)證,用來(lái)完成用戶登

溫馨提示

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