論文—酒店自助點(diǎn)餐系統(tǒng)_第1頁(yè)
論文—酒店自助點(diǎn)餐系統(tǒng)_第2頁(yè)
論文—酒店自助點(diǎn)餐系統(tǒng)_第3頁(yè)
論文—酒店自助點(diǎn)餐系統(tǒng)_第4頁(yè)
論文—酒店自助點(diǎn)餐系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩51頁(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、酒店自助點(diǎn)餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)酒店自助點(diǎn)餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)HOTEL BUFFETMEAL MANAGEMENT SYSTEM DESIGN AND IMPLEMENTATION專(zhuān)專(zhuān) 業(yè):國(guó)際學(xué)院業(yè):國(guó)際學(xué)院姓姓 名:李思博名:李思博指指 導(dǎo)導(dǎo) 教教 師:師:申請(qǐng)學(xué)位級(jí)別:學(xué)士申請(qǐng)學(xué)位級(jí)別:學(xué)士論文提交日期:論文提交日期:2012 年年 6 月月 6 日日學(xué)位授予單位:天津科技大學(xué)學(xué)位授予單位:天津科技大學(xué)摘摘 要要隨著中國(guó)市場(chǎng)經(jīng)濟(jì)的飛速發(fā)展和人民生活水平的不斷提高,人們對(duì)餐飲業(yè)的要求也隨著提高,餐飲業(yè)的競(jìng)爭(zhēng)越來(lái)越激烈,傳統(tǒng)的人工點(diǎn)餐方式效率低,容易出錯(cuò),已不能滿足目前客人的需要。各個(gè)餐飲酒店想

2、在競(jìng)爭(zhēng)中取得優(yōu)勢(shì),就必須在經(jīng)營(yíng)管理、產(chǎn)品服務(wù)等方面提高質(zhì)量,因此餐飲管理顯得尤為重要。面對(duì)龐大的信息量,就需要一個(gè)自助點(diǎn)餐管理系統(tǒng)來(lái)提高餐飲管理效率。本文論述的是一個(gè)自助點(diǎn)餐管理系統(tǒng),該系統(tǒng)選擇目前應(yīng)用最廣泛的Windows 操作系統(tǒng)作為開(kāi)發(fā)、測(cè)試和運(yùn)行的平臺(tái),用 Visual Basic 6.0 作為軟件開(kāi)發(fā)工具,VB 為編程語(yǔ)言,ACCESS 數(shù)據(jù)庫(kù)支持,容易上手且功能齊全,主要功能包括登記、自助點(diǎn)餐、加餐、結(jié)算、查看銷(xiāo)售額等。本系統(tǒng)為餐飲管理者提供了簡(jiǎn)單高效的管理方式,滿足了大部分餐飲企業(yè)的點(diǎn)餐功能需求,為餐飲管理節(jié)省了大量時(shí)間以及人力資源。關(guān)鍵詞關(guān)鍵詞:餐飲自助點(diǎn)餐管理系統(tǒng);VB;AC

3、CESS 數(shù)據(jù)庫(kù)設(shè)計(jì);程序設(shè)計(jì)。ABSTRACTWith the rapid development of Chinas market economy and the continuous improvement of peoples living standards, the requirements on the restaurant industry also rise, food and beverage industry competition increasingly fierce, the low efficiency of traditional manual ordering

4、 methods, error-prone, has notmeet the current needs of the guests. Each hotel restaurant would like to gain advantage in the competition, we must improve the quality of the food and beverage management is particularly important in the management, products and services. Faced with an enormous amount

5、 of information, you need a self-service ordering management system to improve the efficiency of food and beverage management.Of this paper is a self-service ordering management system, the system selects the most widely used Windows operating system as a platform for development, testing and runnin

6、g with Visual Basic 6.0 as a software development tool, VB programming language, the ACCESS database support, easy get started and fully functional, the main features include registration, buffet meal, snacks, settlement, view sales. For catering managers, the system provides a simple and efficient

7、management to meet the functional requirements of most of the food and beverage ordering and save a lot of time and human resources for food and beverage management.Keywords: Catering buffet meal ordering management system; VB; ACCESS database design; program design目 錄第一章 緒論.1第一節(jié) 課題背景 .1第二節(jié) 課題研究的目的和

8、意義 .1第三節(jié) 課題的主要內(nèi)容 .1第二章 開(kāi)發(fā)工具和開(kāi)發(fā)環(huán)境.3第一節(jié) VB 簡(jiǎn)介.3第二節(jié) ACCESS 簡(jiǎn)介.4第三節(jié) ADO 數(shù)據(jù)訪問(wèn)介紹.5第三章 系統(tǒng)需求分析及數(shù)據(jù)庫(kù)設(shè)計(jì).10第一節(jié) 系統(tǒng)功能分析 .10第二節(jié) 數(shù)據(jù)庫(kù)設(shè)計(jì) .11第四章 系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn).18第一節(jié) 登錄界面 .18第二節(jié) 主界面 .19第三節(jié) 客戶換桌管理界面 .20第四節(jié) 點(diǎn)餐界面 .22第五節(jié) 菜譜管理界面 .32第六節(jié) 用戶信息管理界面 .38第七節(jié) 更改密碼界面 .43第五章 系統(tǒng)測(cè)試.44第一節(jié) 系統(tǒng)測(cè)試的目的 .44第二節(jié) 系統(tǒng)測(cè)試的方法 .44結(jié)論.50參考文獻(xiàn).51致謝.52第一章 緒論 第一

9、節(jié) 課題背景隨著經(jīng)濟(jì)的迅速發(fā)展和人們生活水平的不斷提高,餐飲業(yè)的競(jìng)爭(zhēng)越來(lái)越激烈。要想在競(jìng)爭(zhēng)中取得優(yōu)勢(shì),就必須在經(jīng)營(yíng)管理、產(chǎn)品服務(wù)等方面提高服務(wù)管理意識(shí)。面對(duì)餐飲的經(jīng)營(yíng)起決定作用的是餐飲的管理。如何利用先進(jìn)的管理手段來(lái)提高餐飲的管理水平,是每一個(gè)餐飲管理者所面臨的重要課題。簡(jiǎn)單的服務(wù)標(biāo)準(zhǔn)已經(jīng)不是制勝的法寶,只有管理做到最細(xì)微之處,才能讓顧客體會(huì)到餐飲服務(wù)的高標(biāo)準(zhǔn)、高質(zhì)量,而準(zhǔn)確、快捷、周全往往就是最基本的成功要素。面對(duì)信息時(shí)代的挑戰(zhàn),利用科技手段提高企業(yè)管理無(wú)疑是一條行之有效的途徑。因此采用電腦管理業(yè)務(wù)、財(cái)務(wù)等諸多環(huán)節(jié)已成為賓館餐飲業(yè)快速發(fā)展的先決條件。第二節(jié) 課題研究的目的和意義國(guó)內(nèi)餐飲業(yè)的應(yīng)

10、用系統(tǒng)都各不相同,對(duì)于一家餐飲,如果各部門(mén)使用的是不同的平臺(tái)、不同的軟件,員工操作時(shí)還需要重新學(xué)習(xí)各種軟件,這樣不但花費(fèi)了大量時(shí)間,也同時(shí)影響餐飲的效率。這樣就需要一個(gè)容易上手并且實(shí)用的一個(gè)管理軟件,可以讓員工能夠在極短時(shí)間內(nèi)掌握,減少成本,增加收益。針對(duì)餐飲的具體業(yè)務(wù),主要是餐飲管理,為用戶提供迅速高效的服務(wù),減免手工處理煩瑣以及誤差,并及時(shí)準(zhǔn)確的反映餐飲的工作狀況,從而提高餐飲管理的服務(wù)質(zhì)量,使餐飲獲得更好的經(jīng)濟(jì)效益。第三節(jié) 課題的主要內(nèi)容本點(diǎn)餐管理系統(tǒng)的開(kāi)發(fā)設(shè)計(jì)包括數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)及程序設(shè)計(jì)。該系統(tǒng)不僅具有自助點(diǎn)餐、加餐,結(jié)算等基本功能,還可以隨時(shí)查看的銷(xiāo)售額。為廣大消費(fèi)得和銷(xiāo)售商提供了極

11、大的方便。適用于一般的中小型餐飲銷(xiāo)售企業(yè)的管理。這就要求開(kāi)發(fā)者具備對(duì)某一領(lǐng)域熟悉的情況下尋找相關(guān)資料并通過(guò)自學(xué)逐步掌握該門(mén)知識(shí)的能力。在開(kāi)發(fā)過(guò)程中遵循以下原則:2(1)實(shí)用性:系統(tǒng)以酒店自助點(diǎn)餐需求為目標(biāo),以方便酒店業(yè)務(wù)操作為原則,根據(jù)實(shí)際的需求情況,為酒店設(shè)計(jì)了一套基本的點(diǎn)餐業(yè)務(wù)管理模式,盡可能地簡(jiǎn)化點(diǎn)餐的操作過(guò)程。(2)先進(jìn)性:本系統(tǒng)將充分應(yīng)用現(xiàn)有成熟的計(jì)算機(jī)技術(shù)、軟件開(kāi)發(fā)技術(shù)。使用Visual Basic 6.0 作為主要開(kāi)發(fā)環(huán)境,其優(yōu)秀的編碼體制和簡(jiǎn)易實(shí)用性是此系統(tǒng)的強(qiáng)力支柱。(3)高可靠性:系統(tǒng)的可靠性對(duì)系統(tǒng)使用來(lái)說(shuō)具有極其重要的意義,本設(shè)計(jì)通過(guò)優(yōu)化的軟件架構(gòu)和穩(wěn)定的 Windows

12、 運(yùn)行平臺(tái),可保證系統(tǒng)應(yīng)用時(shí)的高穩(wěn)定性和高可靠性。(4)清晰性:系統(tǒng)在設(shè)計(jì)時(shí),層次及整體結(jié)構(gòu)清晰明了,能夠保證管理員使用系統(tǒng)時(shí),操作方便,所需信息獲取便利。第 2 章 開(kāi)發(fā)工具和開(kāi)發(fā)環(huán)境本自助點(diǎn)餐管理系統(tǒng)數(shù)據(jù)庫(kù)選擇的是 ACCESS,開(kāi)發(fā)環(huán)境是 Microsoft 的Visual Basic 6.0,前后臺(tái)連接采用的是 ADO 方式。第一節(jié) VB 簡(jiǎn)介Visual Basic 6.0,是微軟公司推出的可視化編程工具 MSDN 之一, 是目前世界上使用最廣泛的程序開(kāi)發(fā)工具。它的快捷的開(kāi)發(fā)速度, 簡(jiǎn)單易學(xué)的語(yǔ)法, 體貼便利的開(kāi)發(fā)環(huán)境,不愧為一款優(yōu)秀的編程工具, 是初學(xué)者的首選。另外VB 提供的是可

13、視化的開(kāi)發(fā)環(huán)境,我們可以象搭積木一樣構(gòu)建出程序的界面,而且 VB 提供了豐富的控件組,省去了我們自己寫(xiě)代碼實(shí)現(xiàn)這些效果的麻煩,這樣我們就能把更多的精力放在程序功能的實(shí)現(xiàn)上,所以用起來(lái)方便。在 VB 中,應(yīng)用面向?qū)ο蟮某绦蛟O(shè)計(jì)方法(OOP) ,把程序和數(shù)據(jù)封裝起來(lái)視為一個(gè)對(duì)象,每個(gè)對(duì)象都是可視的。12VB 功能特點(diǎn)如下:(1)具有面向?qū)ο蟮目梢暬O(shè)計(jì)工具。在 VB 中,應(yīng)用面向?qū)ο蟮某绦蛟O(shè)計(jì)方法(OOP) ,把程序和數(shù)據(jù)封裝起來(lái)視為一個(gè)對(duì)象,每個(gè)對(duì)象都是可視的。程序員在設(shè)計(jì)時(shí)只需用現(xiàn)有工具根據(jù)界面設(shè)計(jì)要求,直接在屏幕上“畫(huà)”出窗口、菜單、按鈕、滾動(dòng)條等不同類(lèi)型的對(duì)象,并為每個(gè)對(duì)象設(shè)置屬性。程序員

14、的編程工作僅限于編寫(xiě)相關(guān)對(duì)象要完成的功能程序,因而程序設(shè)計(jì)的效率可大大提高。 (2)事件驅(qū)動(dòng)的編程機(jī)制。事件驅(qū)動(dòng)是非常適合圖形用戶界面的編程方式。在圖形用戶界面的應(yīng)用程序中,是由用戶的動(dòng)作即事件掌握著程序運(yùn)行的流向,每個(gè)事件都能驅(qū)動(dòng)一段程序的運(yùn)行。程序員只要編寫(xiě)響應(yīng)用戶動(dòng)作的代碼,而各個(gè)動(dòng)作之間不一定有聯(lián)系。 (3)提供了易學(xué)易用的應(yīng)用程序集成開(kāi)發(fā)環(huán)境。在 VB 集成開(kāi)發(fā)環(huán)境中,用戶可設(shè)計(jì)界面、編寫(xiě)代碼、調(diào)試程序,直至把應(yīng)用程序編譯成可執(zhí)行文件在 Windows 中運(yùn)行,使用戶在友好的開(kāi)發(fā)環(huán)境中工作。 (4)結(jié)構(gòu)化的程序設(shè)計(jì)語(yǔ)言。VB 具有豐富的數(shù)據(jù)類(lèi)型和結(jié)構(gòu)化程序結(jié)構(gòu),作為一種程序設(shè)計(jì)語(yǔ)言,

15、它還有如下一些特點(diǎn): 強(qiáng)大的數(shù)值和字符串處理功能 豐富的圖形指令,可方便地繪制各種圖形 提供靜態(tài)和動(dòng)態(tài)數(shù)組,有利于簡(jiǎn)化內(nèi)存的管理 過(guò)程可遞歸調(diào)用,使程序更為簡(jiǎn)練 支持隨機(jī)文件和順序文件的訪問(wèn) 提供了一個(gè)可供應(yīng)用程序調(diào)用的包含多種類(lèi)型的圖標(biāo)庫(kù) 具有完善的運(yùn)行出錯(cuò)處理 (5)支持多種數(shù)據(jù)庫(kù)系統(tǒng)的訪問(wèn) 利用數(shù)據(jù)控件可訪問(wèn)的數(shù)據(jù)庫(kù)系統(tǒng)有:Microsoft Access、Btrieve、DBASE、Microsfot FoxPro 和 Paradox 等,也可以訪問(wèn)Microsoft Excel、Lotus1-2-3 等多種電子表格。 (6)支持動(dòng)態(tài)數(shù)據(jù)交換(DDE) 、動(dòng)態(tài)鏈接庫(kù)(DLL)和對(duì)象的鏈

16、接與嵌入(OLE)技術(shù) 。(7)完備的 HELP 聯(lián)機(jī)幫助功能。VB 程序設(shè)計(jì)的概念就是面向?qū)ο蟮母拍?,?duì)象就是數(shù)據(jù)(DATA)和代碼(CODE)互相結(jié)合的綜合體。Windows 上面的每一個(gè)圖標(biāo),包括窗口本身都是對(duì)象,如果沒(méi)有任何事情發(fā)生,對(duì)象處于停頓狀態(tài)。當(dāng)存在外來(lái)事件時(shí),程序段執(zhí)行,它的執(zhí)行是由外來(lái)事件決定的。因此是“事件”驅(qū)動(dòng)的。與 Windows 環(huán)境下的軟件一樣,在 VB 中,利用幫助菜單和 F1 功能鍵,用戶可以隨時(shí)方便地得到所需要的幫助信息。VB 幫助窗口中顯示了有關(guān)的示例代碼,通過(guò)復(fù)制、粘貼操作可獲取大量的示例代碼,為用戶的學(xué)習(xí)和使用提供了極大的方便。 第二節(jié) ACCESS

17、簡(jiǎn)介Microsoft Access 軟件與其他數(shù)據(jù)庫(kù)應(yīng)用程序(例如 FoxPro,Oracle 和dBase 等)一樣,從本質(zhì)上說(shuō),都是一種數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS) ,更為具體點(diǎn),它是一種關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS) , Access 主要用于中小型數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)。而 Oracle 和 Sybase 主要用于大型數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)。作為一個(gè)模擬系統(tǒng),數(shù)據(jù)量并不大,所以就采用了小型數(shù)據(jù)庫(kù) Access。它適用于小型商務(wù)活動(dòng),用以存貯和管理商務(wù)活動(dòng)所需要的數(shù)據(jù)。Access 具有一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)所應(yīng)具備的功能,允許用戶構(gòu)造應(yīng)用程序來(lái)歸檔和存儲(chǔ)數(shù)據(jù),并使數(shù)據(jù)能夠很容易地采用多種方式進(jìn)行篩選、分

18、類(lèi)和查詢數(shù)據(jù)。Access 本身是一個(gè)很好的應(yīng)用程序開(kāi)發(fā)環(huán)境,它有和 VB 類(lèi)似的界面設(shè)計(jì)方法,一樣易學(xué)易用。在面向數(shù)據(jù)庫(kù)的應(yīng)用程序開(kāi)發(fā)方面比起 VB 的開(kāi)發(fā)效率更高,功能更強(qiáng)。它提供了很多對(duì)象(表,窗體,查詢,報(bào)表)的設(shè)計(jì)向?qū)?,使得?VB 基礎(chǔ)的非常容易使用。Access 擁有的子窗體、子報(bào)表控件,它在設(shè)計(jì)主細(xì)表結(jié)構(gòu)的界面和報(bào)表方面給程序員帶來(lái)巨大的方便。11Access 軟件所能完成的功能基本上是一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)所就具有的功能:(1)可以根據(jù)需要定制 Access 數(shù)據(jù)庫(kù)系統(tǒng),對(duì)數(shù)據(jù)進(jìn)行保存、查閱和計(jì)算。(2)利用表存儲(chǔ)相應(yīng)的數(shù)據(jù)信息,為每一種實(shí)際對(duì)象的信息創(chuàng)建一個(gè)表,在表中對(duì)不同數(shù)據(jù)

19、以不同的方式進(jìn)行保存。(3)可以按照實(shí)際中對(duì)象之間的關(guān)系,定義各個(gè)表之間的關(guān)系,將各個(gè)表中相關(guān)的數(shù)據(jù)有機(jī)地聯(lián)系在一起。(4)可以檢索用戶指定條件的數(shù)據(jù),創(chuàng)建相應(yīng)的查詢來(lái)進(jìn)行檢索,也可以利用查詢來(lái)更新或刪除多條記錄,并對(duì)表中的數(shù)據(jù)執(zhí)行各種計(jì)算。(5)可以直接輸入、查看或更改數(shù)據(jù)庫(kù)中的數(shù)據(jù),利用表格或創(chuàng)建一定的窗體來(lái)完成上述功能。(6)可以對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行分析,或者通過(guò)特定的方式將數(shù)據(jù)打印出來(lái),繪制一份相應(yīng)要求的報(bào)表。9Access 特點(diǎn):在 Access 中,數(shù)據(jù)庫(kù)是由若干個(gè)數(shù)據(jù)表格組成的,在表格中具有主關(guān)鍵字和外部關(guān)鍵字定義,并且在數(shù)據(jù)庫(kù)中提供了完全的引用完整性,從而避免了數(shù)據(jù)庫(kù)中不合理的

20、數(shù)據(jù)更新和刪除。同時(shí),Access 的表格具有數(shù)據(jù)確認(rèn)規(guī)則,以避免非精確數(shù)據(jù)在輸入時(shí)被忽略,并且對(duì)于大多數(shù)軟件的數(shù)據(jù)輸入。表格的每一個(gè)字段都具有自己的格式和缺省的定義。Microsoft Access 支持文本、數(shù)字、貨幣、日期、備注、是/否以及 OLE 對(duì)象等字段類(lèi)型。當(dāng)進(jìn)行特殊處理而缺少數(shù)值時(shí),Access 還提供完全支持空值的特性。由上面列出的內(nèi)容來(lái)看,Microsoft Access 能夠完全滿足對(duì)一個(gè)現(xiàn)代數(shù)據(jù)庫(kù)就用的需要,不但可以對(duì)數(shù)據(jù)基本操作可以完成,同時(shí)還能夠完成更高級(jí)的操作功能。第三節(jié) ADO 數(shù)據(jù)訪問(wèn)簡(jiǎn)介使用 ADO 開(kāi)發(fā)應(yīng)用程序時(shí),將有操作數(shù)據(jù)的各種要求。在某些情況下,可能

21、只是想在窗體上顯示數(shù)據(jù)。在其他情況下,則可能需要設(shè)計(jì)一種方式來(lái)與另一個(gè)公司共享信息。無(wú)論對(duì)數(shù)據(jù)進(jìn)行怎樣的操作,了解 ADO 中的數(shù)據(jù)結(jié)構(gòu)、主數(shù)據(jù)組件概念和組件組合方式是很有用的。在傳統(tǒng)的客戶端/服務(wù)器應(yīng)用程序中,組件將建立與數(shù)據(jù)庫(kù)的連接,并在應(yīng)用程序運(yùn)行過(guò)程中使連接保持打開(kāi)狀態(tài)。出于各種原因,該方法在許多應(yīng)用程序中是不實(shí)用的: 打開(kāi)的數(shù)據(jù)庫(kù)連接占用寶貴的系統(tǒng)資源。在大多數(shù)情況下,數(shù)據(jù)庫(kù)只可以維持少量的并發(fā)連接。維持這些連接的系統(tǒng)開(kāi)銷(xiāo)將降低應(yīng)用程序的總體性能。 基于始終連接數(shù)據(jù)的模型可能使得使用連接結(jié)構(gòu)在應(yīng)用程序和組織邊界之間交換數(shù)據(jù)變得困難且不實(shí)際。如果兩個(gè)組件需要共享相同的數(shù)據(jù),則二者均必須

22、連接,或者必須為這兩個(gè)組件設(shè)計(jì)一種方式以相互傳遞數(shù)據(jù)。 出于這些原因,使用 ADO 進(jìn)行數(shù)據(jù)訪問(wèn)是以有節(jié)制使用連接的結(jié)構(gòu)為中心進(jìn)行設(shè)計(jì)的。應(yīng)用程序連接到數(shù)據(jù)庫(kù)的時(shí)間僅足夠獲取或更新數(shù)據(jù)。因?yàn)閿?shù)據(jù)庫(kù)并未被大部分時(shí)間空閑的連接占用,所以它可以為更多用戶提供服務(wù)。使用數(shù)據(jù)命令執(zhí)行數(shù)據(jù)庫(kù)交互若要在數(shù)據(jù)庫(kù)中執(zhí)行操作,應(yīng)執(zhí)行 ACCESS 語(yǔ)句或存儲(chǔ)過(guò)程(它包括 ACCESS 語(yǔ)句) 。使用 ACCESS 語(yǔ)句或存儲(chǔ)過(guò)程讀寫(xiě)行并執(zhí)行聚合函數(shù),例如添加或求平均值。使用 ACCESS 語(yǔ)句或存儲(chǔ)過(guò)程創(chuàng)建或修改表或列、執(zhí)行事務(wù)等。在 ADO 中,使用數(shù)據(jù)命令打包 ACCESS 語(yǔ)句或存儲(chǔ)過(guò)程。例如,想要從數(shù)據(jù)庫(kù)

23、讀取一組行,則創(chuàng)建一個(gè)數(shù)據(jù)命令并用 ACCESS Select 語(yǔ)句的文本或獲取記錄的存儲(chǔ)過(guò)程的名稱(chēng)配置它。如果要獲取這些行,則執(zhí)行以下操作: (1)打開(kāi)一個(gè)連接。 (2)按以下順序調(diào)用命令的執(zhí)行方法: 執(zhí)行該命令引用的 ACCESS 語(yǔ)句或存儲(chǔ)過(guò)程,然后關(guān)閉連接。 連接保持打開(kāi)的時(shí)間僅足夠執(zhí)行語(yǔ)句或存儲(chǔ)過(guò)程。 在調(diào)用命令的執(zhí)行方法后,它將返回一個(gè)值。更新數(shù)據(jù)庫(kù)的命令返回所影響的行數(shù);其他類(lèi)型的命令返回一個(gè)錯(cuò)誤代碼。如果該命令使用 SELECT 語(yǔ)句查詢數(shù)據(jù)庫(kù),則它返回一組行。安全說(shuō)明:當(dāng)使用 CommandType 屬性設(shè)置為 Text 的數(shù)據(jù)命令時(shí),請(qǐng)對(duì)從客戶端發(fā)送過(guò)來(lái)的信息進(jìn)行仔細(xì)檢查,

24、然后再將它傳遞給數(shù)據(jù)庫(kù)。惡意用戶可能會(huì)試圖發(fā)送(插入)修改過(guò)的或其他 ACCESS 語(yǔ)句,以獲得未經(jīng)授權(quán)的訪問(wèn)或破壞數(shù)據(jù)庫(kù)。在將用戶輸入內(nèi)容傳輸?shù)綌?shù)據(jù)庫(kù)之前,應(yīng)始終確認(rèn)這些信息是有效的;如果可能的話,始終使用參數(shù)化查詢或存儲(chǔ)過(guò)程,這是最佳措施。如果要執(zhí)行多個(gè)操作(例如,讀取一些行,然后更新它們) ,則可以使用多個(gè)數(shù)據(jù)命令,每個(gè)操作一個(gè)命令。每一操作分別執(zhí)行。例如,要讀取多行,應(yīng)打開(kāi)連接,讀取這些行,然后關(guān)閉該連接。如果要更新數(shù)據(jù),再次打開(kāi)連接,執(zhí)行更新,然后再次關(guān)閉該連接。數(shù)據(jù)命令可以包括多個(gè)參數(shù)(具體而言,參數(shù)對(duì)象的集合) ,使用這些參數(shù)創(chuàng)建類(lèi)似以下形式的參數(shù)化查詢:Select * Fro

25、m customers Where (customer_id = customerid)。然后在運(yùn)行時(shí)設(shè)置這些參數(shù)并執(zhí)行命令以返回或更新所需數(shù)據(jù)。數(shù)據(jù)可被緩存到數(shù)據(jù)集中。最常見(jiàn)數(shù)據(jù)任務(wù)是從數(shù)據(jù)庫(kù)檢索數(shù)據(jù)并對(duì)數(shù)據(jù)進(jìn)行某些操作:顯示數(shù)據(jù)、處理數(shù)據(jù)或?qū)?shù)據(jù)發(fā)送給另一個(gè)組件。經(jīng)常地,應(yīng)用程序需要處理不止一條記錄,而是一組記錄:例如客戶列表或今天的訂單。通常應(yīng)用程序所需的該組記錄來(lái)自多個(gè)表:我的客戶及其所有訂單;所有名為Smith的作者及他們寫(xiě)的書(shū);以及其他類(lèi)似的相關(guān)記錄組。獲取了這些記錄后,應(yīng)用程序通常將它們成組使用。例如,應(yīng)用程序可以允許用戶瀏覽名為Smith的所有作者,檢查一個(gè) Smith 的書(shū),

26、然后檢查下一個(gè) Smith 的書(shū),等等。在許多情況下,每次應(yīng)用程序需要處理下一條記錄時(shí)都返回到數(shù)據(jù)庫(kù)是不切實(shí)際的。 (這樣做可能會(huì)失去將打開(kāi)連接的需求降至最低所帶來(lái)的許多好處。)因此解決方案就是臨時(shí)存儲(chǔ)從數(shù)據(jù)庫(kù)檢索的記錄,然后使用該臨時(shí)集,這便是數(shù)據(jù)集的概念。數(shù)據(jù)集是從數(shù)據(jù)源檢索的記錄的緩存。它的工作方式如同虛擬的數(shù)據(jù)存儲(chǔ)區(qū):數(shù)據(jù)集包含一個(gè)或多個(gè)表(這些表基于實(shí)際數(shù)據(jù)庫(kù)中的表) ,并且它可以包含有關(guān)這些表之間的關(guān)系和對(duì)表可包含數(shù)據(jù)的約束的信息。數(shù)據(jù)集內(nèi)的數(shù)據(jù)通常是數(shù)據(jù)庫(kù)中內(nèi)容的非常精簡(jiǎn)的版本。但是,可以用與操作實(shí)際數(shù)據(jù)十分類(lèi)似的方式操作數(shù)據(jù)集。這樣操作時(shí),將保持與數(shù)據(jù)庫(kù)的不連接狀態(tài),使數(shù)據(jù)庫(kù)可

27、以自由執(zhí)行其他任務(wù)。如果經(jīng)常需要更新數(shù)據(jù)庫(kù)中的數(shù)據(jù)(盡管不會(huì)像從數(shù)據(jù)庫(kù)檢索數(shù)據(jù)那么頻繁) ??梢栽跀?shù)據(jù)集上執(zhí)行更新操作,并且這些更新可以直接寫(xiě)到基礎(chǔ)數(shù)據(jù)庫(kù)。因?yàn)閿?shù)據(jù)集實(shí)際上是數(shù)據(jù)庫(kù)數(shù)據(jù)的私有副本,所以它不一定反映數(shù)據(jù)庫(kù)的當(dāng)前狀態(tài)。使用數(shù)據(jù)集的一個(gè)便利之處是組件可以根據(jù)需要交換數(shù)據(jù)集。例如,中層的某個(gè)業(yè)務(wù)對(duì)象可以創(chuàng)建和填充一個(gè)數(shù)據(jù)集,然后將它發(fā)送給應(yīng)用程序中其他位置處的另一個(gè)組件以供處理。該功能意味著組件不必分別查詢數(shù)據(jù)庫(kù)。數(shù)據(jù)集獨(dú)立于數(shù)據(jù)源:盡管數(shù)據(jù)集是作為從數(shù)據(jù)庫(kù)獲取的數(shù)據(jù)的緩存,但數(shù)據(jù)集與數(shù)據(jù)庫(kù)之間沒(méi)有任何實(shí)際關(guān)系。數(shù)據(jù)集是容器;它由從數(shù)據(jù)適配器執(zhí)行的 ACCESS 命令或存儲(chǔ)過(guò)程填充。由

28、于數(shù)據(jù)集不直接綁定到數(shù)據(jù)源,所以它是來(lái)自多個(gè)源的數(shù)據(jù)的好的集成點(diǎn)。例如,數(shù)據(jù)集內(nèi)的某些數(shù)據(jù)可能來(lái)自數(shù)據(jù)庫(kù),而它的其他部分可能來(lái)自另一個(gè)數(shù)據(jù)庫(kù)或電子表格之類(lèi)的非數(shù)據(jù)庫(kù)源。數(shù)據(jù)集內(nèi)的某些數(shù)據(jù)可能來(lái)自另一個(gè)組件所發(fā)送的流。一旦數(shù)據(jù)在數(shù)據(jù)集內(nèi),則不管它的原始源是什么,都可以使用一致的對(duì)象模型對(duì)它進(jìn)行操作。數(shù)據(jù)保持為 XML。數(shù)據(jù)需要從數(shù)據(jù)存儲(chǔ)區(qū)移動(dòng)到數(shù)據(jù)集以及從數(shù)據(jù)集移動(dòng)到各種組件。在 ADO 中,傳輸數(shù)據(jù)的格式是 XML。類(lèi)似地,如果需要保持?jǐn)?shù)據(jù)(例如保持到文件中) ,則將其存儲(chǔ)為 XML。如果有 XML 文件,則可以像使用任何數(shù)據(jù)源一樣使用它,并從它創(chuàng)建數(shù)據(jù)集。10與 ADO 的早期版本和其他數(shù)據(jù)

29、訪問(wèn)組件相比,ADO 提供了若干好處。這些好處分成以下幾個(gè)類(lèi)別:(1)互操作性ADO 應(yīng)用程序可以利用 XML 的靈活性和廣泛接受性。因此可以讀取 XML 格式的任何組件都可以處理數(shù)據(jù)。實(shí)際上,接收組件根本不必是 ADO 組件:傳輸組件可以只是將數(shù)據(jù)集傳輸給其目標(biāo),而不考慮接收組件的實(shí)現(xiàn)方式。目標(biāo)組件可以是 Visual Studio 應(yīng)用程序或無(wú)論用什么工具實(shí)現(xiàn)的其他任何應(yīng)用程序。唯一的要求是接收組件能夠讀取 XML。作為一項(xiàng)工業(yè)標(biāo)準(zhǔn),XML 正是在謹(jǐn)記這種互操作性的情況下設(shè)計(jì)的。(2)可維護(hù)性在已部署系統(tǒng)的生存期中,適度的更改是可能的,實(shí)質(zhì)的結(jié)構(gòu)更改十分困難。因?yàn)樵谑录淖匀贿^(guò)程中,這種實(shí)

30、質(zhì)上的更改會(huì)變得很有必要。例如,當(dāng)已部署的應(yīng)用程序越來(lái)越受用戶歡迎時(shí),增加的性能負(fù)荷可能需要進(jìn)行結(jié)構(gòu)更改。隨著已部署的應(yīng)用程序服務(wù)器上的性能負(fù)荷的增長(zhǎng),系統(tǒng)資源會(huì)變得不足,并且響應(yīng)時(shí)間或吞吐量會(huì)受到影響。面對(duì)該問(wèn)題,軟件設(shè)計(jì)者可以選擇將服務(wù)器的業(yè)務(wù)邏輯處理和用戶界面處理劃分到單獨(dú)計(jì)算機(jī)上的單獨(dú)層上。實(shí)際上,應(yīng)用程序服務(wù)器層將替換為兩層,緩解了系統(tǒng)資源缺乏。該問(wèn)題并不是要設(shè)計(jì)三層應(yīng)用程序。相反,它是要在應(yīng)用程序部署以后增加層數(shù)。如果原始應(yīng)用程序使用數(shù)據(jù)集以 ADO 實(shí)現(xiàn),則該轉(zhuǎn)換很容易進(jìn)行。當(dāng)用兩層替換單個(gè)層時(shí),將安排這兩層交換信息。由于這些層可以通過(guò) XML 格式的數(shù)據(jù)集傳輸數(shù)據(jù),所以通信相對(duì)

31、較容易。(3)可編程性Visual Studio 中的 ADO 數(shù)據(jù)組件以不同方式封裝數(shù)據(jù)訪問(wèn)功能,加快編程速度并減少犯錯(cuò)幾率。例如,數(shù)據(jù)命令提取生成和執(zhí)行 ACCESS 語(yǔ)句或存儲(chǔ)過(guò)程的任務(wù)。同樣,由這些工具生成的 ADO 數(shù)據(jù)類(lèi)導(dǎo)致類(lèi)型化數(shù)據(jù)集。使可以通過(guò)已聲明類(lèi)型的編程訪問(wèn)數(shù)據(jù)。對(duì)于不連接的應(yīng)用程序,ADO 數(shù)據(jù)庫(kù)提供的性能優(yōu)于 ADO 不連接的記錄集。當(dāng)使用 COM 封送在層間傳輸不連接的記錄集時(shí),會(huì)因?qū)⒂涗浖瘍?nèi)的值轉(zhuǎn)換為 COM 可識(shí)別的數(shù)據(jù)類(lèi)型而導(dǎo)致顯著的處理開(kāi)銷(xiāo)。在 ADO 中,這種數(shù)據(jù)類(lèi)型轉(zhuǎn)換則沒(méi)有必要。ADO 通過(guò)鼓勵(lì)程序員節(jié)省有限資源來(lái)實(shí)現(xiàn)可縮放性。由于所有 ADO 應(yīng)用程

32、序都使用對(duì)數(shù)據(jù)的不連接訪問(wèn),因此它不會(huì)在較長(zhǎng)持續(xù)時(shí)間內(nèi)保留數(shù)據(jù)庫(kù)鎖或活動(dòng)數(shù)據(jù)庫(kù)連接。第 3 章 系統(tǒng)需求分析及總體設(shè)計(jì)第一節(jié) 系統(tǒng)功能分析本系統(tǒng)開(kāi)發(fā)的主要任務(wù)是實(shí)現(xiàn)各種餐飲信息的系統(tǒng)化、規(guī)范化和自動(dòng)化。利用層次圖來(lái)表示系統(tǒng)中各模塊之間的關(guān)系。層次圖是運(yùn)用樹(shù)形結(jié)構(gòu)的一系列多層次的矩形框描繪數(shù)據(jù)的層次結(jié)構(gòu)。樹(shù)形結(jié)構(gòu)的頂層是一個(gè)單獨(dú)的矩形框,它代表完整的主體數(shù)據(jù)結(jié)構(gòu),下面各層矩形框代表各個(gè)數(shù)據(jù)的子集,底層的各個(gè)矩形框代表組成這個(gè)數(shù)據(jù)的實(shí)際數(shù)據(jù)元素。隨著數(shù)據(jù)結(jié)構(gòu)的精細(xì)化,層次方框圖對(duì)數(shù)據(jù)結(jié)構(gòu)的描繪也越來(lái)越詳細(xì),這種層次模式非常適合于需求分析階段的需要。從對(duì)頂層信息的分類(lèi)開(kāi)始,沿著圖中每條路徑逐步細(xì)化,

33、直到確定了數(shù)據(jù)結(jié)構(gòu)的所有細(xì)節(jié)為止。本點(diǎn)餐管理系統(tǒng),有登記、點(diǎn)餐、退餐、查看菜譜信息、查看客人信息、管理員密碼修改等主要功能。系統(tǒng)建立了四個(gè)數(shù)據(jù)表,第一個(gè)表記錄管理員的用戶名和密碼信息;第二個(gè)表記錄用餐信息;第三個(gè)表記錄餐桌信息,第四個(gè)表記錄菜品信息。用餐信息有兩種狀態(tài),即“已占”和 “空閑” 。 系統(tǒng)主要功能為:客戶點(diǎn)餐、用戶管理、菜譜管理、餐桌管理、修改密碼、系統(tǒng)幫助等幾個(gè)模塊。如圖 31 所示登錄界面客戶訂餐用戶管理菜譜管理餐桌管理修改密碼系統(tǒng)幫助用戶添加用戶管理菜譜添加菜譜管理餐桌添加餐桌查詢換桌管理點(diǎn)菜管理圖 31 系統(tǒng)功能模塊圖各子界面設(shè)計(jì):(1)用戶管理界面:管理員登錄后可以對(duì)用戶

34、進(jìn)行管理和添加。(2)菜譜管理界面:管理員登錄后可添加以及編輯菜譜編號(hào)、類(lèi)別、菜名、價(jià)格。(3)餐桌管理界面:管理員登錄后可進(jìn)行餐桌添加和查詢功能;其中可按編號(hào)和名稱(chēng)進(jìn)行快速查詢;添加餐桌時(shí)可輸入編號(hào)、人數(shù)、狀態(tài)。(4)訂單記錄信息界面:管理員可查看用餐信息、菜單、價(jià)格以等,并且可以根據(jù)銷(xiāo)售記錄統(tǒng)計(jì)出總額。(5)修改密碼界面:用于修改當(dāng)前登錄的管理員密碼。 (6) 客戶點(diǎn)餐頁(yè)面:客戶可直接選擇餐桌進(jìn)入點(diǎn)餐頁(yè)面進(jìn)行按菜名點(diǎn)餐,以及換桌,結(jié)賬等操作。第二節(jié) 數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì),是根據(jù)系統(tǒng)要求,對(duì)系統(tǒng)的數(shù)據(jù)庫(kù)信息進(jìn)行規(guī)劃,成功的數(shù)據(jù)庫(kù)設(shè)計(jì)是系統(tǒng)實(shí)現(xiàn)要求及實(shí)現(xiàn)完整性的關(guān)鍵。 數(shù)據(jù)庫(kù)設(shè)計(jì)是建立數(shù)據(jù)

35、庫(kù)及應(yīng)用系統(tǒng)的技術(shù),是信息系統(tǒng)開(kāi)發(fā)和建設(shè)中的核心技術(shù),具體的說(shuō),數(shù)據(jù)庫(kù)設(shè)計(jì)是一個(gè)給定的應(yīng)用環(huán)境,構(gòu)造最優(yōu)的用戶的應(yīng)用需求。這個(gè)問(wèn)題是我們?cè)谶M(jìn)行軟件開(kāi)發(fā)時(shí)期的主要研究方向。數(shù)據(jù)庫(kù)設(shè)計(jì)應(yīng)該和應(yīng)用系統(tǒng)設(shè)計(jì)相結(jié)合,也就是說(shuō),整個(gè)設(shè)計(jì)過(guò)程中要把結(jié)構(gòu)設(shè)計(jì)和行為設(shè)計(jì)密切結(jié)合起來(lái)。由于信息結(jié)構(gòu)復(fù)雜,應(yīng)用環(huán)境多樣,在相當(dāng)長(zhǎng)的一段時(shí)間內(nèi)數(shù)據(jù)庫(kù)設(shè)計(jì)主要采用手工試湊法。使用這種方法與設(shè)計(jì)人員的經(jīng)驗(yàn)和水平有直接的關(guān)系,數(shù)據(jù)庫(kù)設(shè)計(jì)成為一種技藝而不是工程技術(shù),缺乏科學(xué)理論和工程方法的支持,軟件的質(zhì)量難以保證,常常是數(shù)據(jù)庫(kù)運(yùn)行一段時(shí)間后又不同程度地發(fā)現(xiàn)了各種問(wèn)題,增加了系統(tǒng)維護(hù)的代價(jià)。十余年來(lái),人們努力探索提出了各種設(shè)計(jì)準(zhǔn)則

36、和規(guī)程,都屬于規(guī)范設(shè)計(jì)法。數(shù)據(jù)分析過(guò)程同數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)密切相關(guān),需要確定、編制、組織、篩選應(yīng)用程序所使用的信息。它以一種能夠分析和分類(lèi)的方式來(lái)捕獲用戶的所有信息,這使得某一模型可以直接轉(zhuǎn)化成數(shù)據(jù)庫(kù)結(jié)構(gòu)。我們使用一種信息建模技術(shù),這種技術(shù)是通過(guò)實(shí)體、關(guān)系、屬性三種基本對(duì)象來(lái)定義信息。實(shí)體是需要維護(hù)和使用的相關(guān)特性的集合體;屬性是實(shí)體的特性或特征;關(guān)系是實(shí)體之間的聯(lián)系,關(guān)系為實(shí)體記錄(實(shí)例)之間的聯(lián)系和交互作用方式建立了模型。要確定實(shí)體和關(guān)系的性質(zhì),用戶就必須確定單個(gè)實(shí)體和他們相關(guān)的屬性。為每個(gè)對(duì)象定義一個(gè)完整的與商業(yè)相關(guān)的描述以及他能夠單獨(dú)使用的要求,這也包括確定此實(shí)體是否使用應(yīng)用程

37、序的永久需求,每種關(guān)系的基本定義使用了商業(yè)定義和與關(guān)系相連接的需求。在為實(shí)體確定相關(guān)的屬性過(guò)程中,也需要此實(shí)體的主鍵和索引,并且要確定在每個(gè)實(shí)體中怎樣組織這些屬性,確定屬性的數(shù)據(jù)類(lèi)型和它是否為控制。在高層次的描述過(guò)程中,還可以確定所有擴(kuò)展的屬性信息,包括長(zhǎng)度、格式、編輯風(fēng)格、校驗(yàn)規(guī)則和初始值。單獨(dú)實(shí)體的屬性被組織起來(lái),用戶就能夠開(kāi)始以某一種組織方式來(lái)給實(shí)體分類(lèi)。用戶必須通過(guò)關(guān)系,來(lái)為實(shí)體分組的方式確定分類(lèi)模式,這是抽象化的初始層,或者說(shuō)是通過(guò)隱藏模糊地信息來(lái)提高對(duì)分析的理解,通過(guò)將數(shù)據(jù)分類(lèi)成組,就產(chǎn)生了相關(guān)分組的不同類(lèi)型,這樣,更加易于觀察和分析。 系統(tǒng)數(shù)據(jù)流程圖:分析調(diào)查有關(guān)餐飲管理信息需求

38、的基礎(chǔ)上得本系統(tǒng)所處理的數(shù)據(jù)流程,如圖 3-2 所示:結(jié)算信息餐飲信息返回用餐信息選定是點(diǎn)餐登記是否正確基本信息輸入否圖 32 系統(tǒng)數(shù)據(jù)流程圖實(shí)體圖:本系統(tǒng)設(shè)計(jì)規(guī)劃出的實(shí)體有:管理員信息實(shí)體、點(diǎn)餐記錄信息實(shí)體、菜譜信息實(shí)體、客戶信息實(shí)體。各個(gè)實(shí)體具體的描述圖如下:(1) 管理員信息有用戶名和密碼。如圖 3-3 所示:管理員用戶名密碼(2)點(diǎn)餐信息有桌號(hào)、菜名、價(jià)格和點(diǎn)餐時(shí)間等幾個(gè)屬性。如圖 3-4 所示:菜名桌號(hào)點(diǎn)餐信息圖 34 點(diǎn)餐記錄信息實(shí)體圖(2) 菜譜信息中有菜譜編號(hào)、菜名、類(lèi)別、和價(jià)格 4 個(gè)屬性。如圖 3-5所示: 點(diǎn)餐時(shí)間價(jià)格登記信息管理登記訂餐信息管理訂餐訂餐信息管理結(jié)算菜譜信

39、息管理菜名菜品編號(hào)菜品信息圖 35 菜譜信息實(shí)體圖(4)桌號(hào)信息有編號(hào)、大小、狀態(tài) 3 個(gè)屬性。如圖 3-6 所示:圖 36 桌號(hào)信息實(shí)體圖各實(shí)體之間的關(guān)系如圖 3-7 所示:桌號(hào)信息大小編號(hào)狀態(tài)價(jià)格類(lèi)別圖 37 系統(tǒng)-圖數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì)系統(tǒng)設(shè)計(jì)了四個(gè)數(shù)據(jù)表即“管理員信息表” 、 “菜品表” 、 “餐桌列表”以及點(diǎn)餐記錄表 。其各個(gè)表格的設(shè)計(jì)如下: (1)管理員表中有用戶名、密碼、注冊(cè)時(shí)間以及系統(tǒng)自動(dòng)編號(hào) 4 個(gè)屬性,其中,用戶名為主鍵。結(jié)構(gòu)如表 3-1 所示:表 31 allusers(管理員信息表)字段名稱(chēng)數(shù)據(jù)類(lèi)型長(zhǎng)度可否為空是否主鍵字段說(shuō)明id數(shù)字4否否自動(dòng)編號(hào)username文本50

40、是是管理員名字pwd文本50是否密碼addtime文本50是否添加時(shí)間(2)菜品表中有菜品編號(hào)、菜名、類(lèi)別、價(jià)格等多個(gè)屬性,其結(jié)構(gòu)如表3-2 所示:表 32 allcai(菜品表)字段名稱(chēng)數(shù)據(jù)類(lèi)型長(zhǎng)度可否為空是否主鍵字段說(shuō)明id數(shù)字4否否自動(dòng)編號(hào)bh數(shù)字4是是菜品編號(hào)cname文本50是否菜名leibie文本50是否菜品類(lèi)別price數(shù)字4是否價(jià)格(3)餐桌列表中,包含餐桌編號(hào)、餐桌大小、餐桌狀態(tài)、點(diǎn)餐時(shí)間等基本屬性,其結(jié)構(gòu)如表 3-3 所示:表 33 canzhuo(餐桌列表)字段名稱(chēng)數(shù)據(jù)類(lèi)型長(zhǎng)度可否為空是否主鍵字段說(shuō)明id數(shù)字4否否自動(dòng)編號(hào)bianhao文本50是是餐桌編號(hào)daxiao文本

41、50是否餐桌大小zhuangtai文本50是否餐桌狀態(tài)addtime文本50是否點(diǎn)餐時(shí)間(4)點(diǎn)餐記錄表中,包含客戶所在餐桌編號(hào)、菜名、價(jià)格、點(diǎn)餐時(shí)間以及是否結(jié)賬等基本屬性,其結(jié)構(gòu)如表 3-4 所示:表 34 dcjl(點(diǎn)餐記錄表)字段名稱(chēng)數(shù)據(jù)類(lèi)型長(zhǎng)度可否為空是否主鍵字段說(shuō)明id數(shù)字4否否自動(dòng)編號(hào)khbh文本50是是客戶所在餐桌編號(hào)cname文本50是否菜名addtime文本50是否點(diǎn)餐時(shí)間isjz文本50是否是否結(jié)賬price文本50是否價(jià)格第四章第四章 系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)第一節(jié) 登錄界面通過(guò)工具箱的控件,等控件制作界面如圖 41 所示。此程序段中, “IF”語(yǔ)句的作用是判

42、斷用戶輸入的用戶名與密碼和數(shù)據(jù)庫(kù)的是否相同,如果用戶名或密碼輸入錯(cuò)誤,則提示相應(yīng)錯(cuò)誤信息。如圖 4-1 所示:圖 41 登錄界面代碼如下:Private Sub Command1_Click()If Trim(Text1.Text) And Trim(Text2.Text) Then /判斷輸入不為空mycon.Open /數(shù)據(jù)庫(kù)連接Dim rs As New ADODB.Recordsetsql = select * from allusers where username= &Trim(Text1.Text) & and pwd= & Trim(Text2.Text

43、) & /查找數(shù)據(jù)庫(kù)中是否有此記錄rs.Opensql, mycon, 1, 1 Static nTryCount As IntegerIf rs.EOF Thenrs.CloseMsgBox對(duì)不起,無(wú)此用戶或者密碼不正確!請(qǐng)重新輸入!, vbCritical, 錯(cuò)誤Text1.SetFocus Text1.SelStart = 0 Text1.SelLength = Len(Text1)nTryCount = nTryCount + 1 /統(tǒng)計(jì)登錄失敗次數(shù) If nTryCount= 3 Then /失敗次數(shù)大于 3 次則提示錯(cuò)誤并退出程序MsgBox對(duì)不起您無(wú)權(quán)操作本管理系統(tǒng)!請(qǐng)與

44、開(kāi)發(fā)商聯(lián)系和注冊(cè)!, vbCritical, 授權(quán)錯(cuò)誤Unload Me End If Elsenowuser = Trim(Text1.Text) Form1.Hide MDIForm1.Show End Ifmycon.CloseElseMsgBox請(qǐng)?zhí)顚?xiě)完整, , 系統(tǒng)提示End IfEnd Sub第二節(jié) 管理員主界面管理員主界面也是各個(gè)子界面的接口界面,通過(guò)主界面可以打開(kāi)各個(gè)子界面。首先添加一個(gè)新的窗體,作為主界面。界面中用到“ImageList1”控件,設(shè)計(jì)成如圖 42 所示。主界面設(shè)有各子界面的操作入口,包括用戶管理、菜譜信息管理、點(diǎn)餐信息管理、餐桌管理及點(diǎn)餐記錄等。界面簡(jiǎn)潔大方,

45、操作簡(jiǎn)約明了。如圖 4-2 所示:圖 42 管理員主界面第三節(jié) 客戶換桌管理界面該模塊是讓客戶可以更換自己喜歡的座位,其界面非常簡(jiǎn)單,一是顯示原桌號(hào),二是選擇新桌號(hào),界面看似簡(jiǎn)單,實(shí)現(xiàn)起來(lái)卻較復(fù)雜,因?yàn)榭蛻魮Q桌后需要將其所點(diǎn)的菜譜信息全部更換到新桌里,這樣才能保證客戶信息的完整 。如圖 4-3 所示:圖 43 換桌管理界面主要代碼如下:Private Sub 換桌_Click(Index As Integer) /顯示客戶換桌窗體huanzhuo.Show End SubPrivate Sub Command3_Click() /將當(dāng)前桌狀態(tài)置為空閑,目的桌置為已占,并將當(dāng)前點(diǎn)菜mycon.O

46、pen 記錄復(fù)制到目的餐桌上 sql = update canzhuo set zhuangtai=空閑 where bianhao= & nzh & mycon.Execute sql sql = update canzhuo set zhuangtai=已占 where bianhao= & Trim(zhuohao.Text) & mycon.Execute sql sql = update dcjl set khbh= & Trim(zhuohao.Text) & where isjz=未結(jié) and khbh= & nzh &am

47、p; mycon.Execute sql nzh = Trim(zhuohao.Text) MsgBox 換桌成功, , 系統(tǒng)提示 mycon.CloseEnd Sub第四節(jié) 客戶點(diǎn)餐界面此界面為客戶選擇菜譜的界面,界面很簡(jiǎn)潔。界面上方是用戶名的選擇,下方分為兩邊,左側(cè)顯示所有菜譜,右側(cè)顯示已選菜單,中間用兩個(gè)方向相反的箭頭,表示選擇或放棄菜譜,操作簡(jiǎn)單。如圖 4-4 所示:可以選擇菜品的類(lèi)別進(jìn)行點(diǎn)餐:右邊的一欄顯示的是已選的菜:點(diǎn)擊確定點(diǎn)菜按鈕可以提交您所點(diǎn)菜的菜單:圖 44 客戶點(diǎn)菜界面主要代碼如下:Private Sub Command1_Click() /命令按鈕實(shí)現(xiàn)點(diǎn)菜菜單的提交If

48、 List2.ListCount = 0 Then /若已選菜單中無(wú)記錄,則報(bào)錯(cuò)ssss = MsgBox(你還沒(méi)有選擇任何菜單!, vbInformation + vbOKOnly, 警告) Exit SubEnd Ifsql = select * from dcjl /查詢點(diǎn)菜記錄Dim rs As New ADODB.RecordsetDim rs2 As New ADODB.Recordsetmycon.Openrs.Opensql, mycon, 3, 3For i = o To List2.ListCount - 1rs.AddNewrs(khbh) = Trim(Label3.C

49、aption) /獲取已選菜單中的信息并更新到點(diǎn)菜記錄中去 rs(khxm) = Trim(Text1.Text)rs(cname) = Trim(List2.List(i) sql2 = select price from allcai where cname= &Trim(List2.List(i) & rs2.Open sql2, mycon, 1, 1rs(price) = rs2(price) rs2.Closers.UpdateNext issss = MsgBox(點(diǎn)菜成功!, vbInformation + vbOKOnly, 提示)mycon.CloseEnd

50、 SubPrivate Sub Command2_Click() /退出本窗口Unload MeEnd SubPrivate Sub Command3_Click() /將菜名列表中的菜添加到已選菜單中Dim iAs Integeri = 0Do While i List1.ListCount If List1.Selected(i) = True Then List2.AddItem List1.List(i) List1.RemoveItem i Elsei = i + 1 End IfLoopIf List1.ListCount = 0 ThenCommand3.Enabled = Fa

51、lseEnd IfIf List2.ListCount 0 ThenCommand4.Enabled = TrueEnd IfEnd SubPrivate Sub Command4_Click() /刪除已選菜單中的菜名Dim iAs Integeri = 0Do While i List2.ListCount If List2.Selected(i) = True Then List1.AddItem List2.List(i) List2.RemoveItem i Elsei = i + 1 End IfLoopIf List1.ListCount 0 ThenCommand3.Enabl

52、ed = TrueEnd IfIf List2.ListCount = 0 ThenCommand4.Enabled = FalseEnd IfEnd SubPrivate Sub Form_Load() /顯示菜品信息leibie.AddItem (所有)leibie.AddItem (蔬菜類(lèi))leibie.AddItem (海鮮類(lèi))leibie.AddItem (肉類(lèi))leibie.AddItem (湯類(lèi))leibie.AddItem (酒水類(lèi))leibie.AddItem (其他類(lèi))Label3.Caption = nzhmycon.OpenSet rs = New ADODB.Reco

53、rdsetsql = select * from allcai order by id desc /從數(shù)據(jù)庫(kù)中提取所有菜品信息rs.Opensql, mycon, 1, 1If rs.EOF ThenElse Do While Not rs.EOF /若提取的信息不為空 List1.AddItem rs.Fields(cname) /將菜名,價(jià)格信息顯示到列表框中 List3.AddItem rs.Fields(price)rs.MoveNext LoopEnd Ifrs.Closemycon.CloseEnd SubPrivate Sub leibie_Click() /每次選擇新類(lèi)別則清空

54、舊的列表框中錄,List1.Clear 并顯示新選擇的類(lèi)別下的菜品信息List3.Clearmycon.OpenSet rs = New ADODB.RecordsetIf Trim(leibie.Text) 所有 Then /判斷類(lèi)別不屬于所有sql = select * from allcai where leibie= & Trim(leibie.Text) & order by id desc /按不同類(lèi)別顯示菜品信息Elsesql = select * from allcai order by id descEnd Ifrs.Opensql, mycon, 1, 1I

55、f rs.EOF ThenElse Do While Not rs.EOF List1.AddItem rs.Fields(cname) List3.AddItem rs.Fields(price)rs.MoveNext LoopEnd Ifrs.Closemycon.CloseEnd Sub圖 4-5 是點(diǎn)餐記錄界面,是對(duì)點(diǎn)餐的一個(gè)記錄??刹樵儺?dāng)前的點(diǎn)菜記錄以及進(jìn)行結(jié)賬操作。如圖 4-5 所示:點(diǎn)擊下方的結(jié)賬按鈕可進(jìn)行結(jié)賬操作:圖 45 訂餐記錄界面主要代碼如下:Private Sub Command2_Click() /結(jié)賬操作命令按鈕If MsgBox(您確對(duì)要對(duì)以上表中的客戶訂餐記錄進(jìn)

56、行結(jié)帳操作嗎?, vbYesNo, 管理系統(tǒng)) = vbYes Then If Len(nidstr) 0 Thennidstr = Left(nidstr, Len(nidstr) - 1)sql = update dcjl set isjz=已結(jié) where id in ( &nidstr& ) /將點(diǎn)菜記錄中的狀態(tài)置為已結(jié)mycon.Openmycon.Execute (sql)mycon.Close End Ifmycon.Opensql = update canzhuo set zhuangtai=空閑 where bianhao= &nzh& myc

57、on.Executesql /將當(dāng)前餐桌置為空閑狀態(tài)mycon.CloseMsgBox 結(jié)帳成功,應(yīng)付金額: &jine& 元,感謝您使用本點(diǎn)菜系統(tǒng)!, , 系統(tǒng)提示 Unload Me Unload Form1 Unload khdc Else End IfEnd SubPrivate Sub Command3_Click() /關(guān)閉本窗體Unload MeEnd SubPrivate Sub Form_Load() /選擇出未結(jié)狀態(tài)的訂餐記錄進(jìn)行金額結(jié)算操作Call GetData(select * from dcjl where khbh= &nzh& a

58、nd isjz=未結(jié) order by id desc)End SubFunction GetData(sql) /進(jìn)行結(jié)賬操作的函數(shù)過(guò)程MSFlexGrid1.Clearmycon.OpenDim rs As New ADODB.Recordsetrs.Opensql, mycon, 1, 1If rs.EOF ThenElse Dim iAs Integer With MSFlexGrid1i = 1jine = 0nidstr = .Rows = 1 Do While Not rs.EOFi = i + 1 If Trim(rs(isjz) = 未結(jié) Thenjine = jine +

59、CLng(rs(price)nidstr = nidstr&rs(id) & , End If .Rows = i .TextMatrix(i - 1, 1) = rs(ID) .TextArray(0) = .TextMatrix(i - 1, 2) = rs(khbh) .TextMatrix(i - 1, 3) = rs(khxm) .TextMatrix(i - 1, 3) = rs(cname) .TextMatrix(i - 1, 4) = rs(price) .TextMatrix(i - 1, 5) = rs(addtime) .TextMatrix(i - 1

60、, 6) = rs(isjz) .TextArray(1) = 記錄編號(hào) .TextArray(2) = 客戶桌號(hào) .TextArray(3) = 客戶姓名 .TextArray(3) = 菜名 .TextArray(4) = 價(jià)格 .TextArray(5) = 訂菜時(shí)間 .TextArray(6) = 是否結(jié)帳 .ColWidth(0) = 300 .ColWidth(1) = 600 .ColWidth(2) = 1200 .ColWidth(3) = 1200 .ColWidth(3) = 1200 .ColWidth(4) = 1200 .ColWidth(5) = 1900 .ColWidth(6) = 1000rs.MoveNext Loop End Withrs.CloseEnd Ifmycon.CloseEnd Function第五節(jié) 菜品管理界面添加菜品界面。考慮到信息輸入及管理的問(wèn)題,將需要輸入的信息設(shè)置得十分簡(jiǎn)單,僅需四個(gè),其中“類(lèi)別”一欄用下拉菜單選擇菜品的種類(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)論