畢業(yè)設計---餐飲信息管理系統(tǒng)的設計與實現(xiàn)_第1頁
已閱讀1頁,還剩42頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  目 錄</b></p><p>  第一章 餐飲信息管理系統(tǒng)的開發(fā)背景1</p><p>  1.1 開發(fā)背景1</p><p>  1.2 開發(fā)工具和相關技術簡介1</p><p>  第二章 系統(tǒng)定義與系統(tǒng)需求4</p><p>  2.1 系統(tǒng)定義

2、4</p><p>  2.2 系統(tǒng)需求分析4</p><p>  第三章 系統(tǒng)總體設計6</p><p>  3.1 系統(tǒng)功能模塊的劃分6</p><p>  3.2 管理員權限模塊劃分8</p><p>  3.3 員工權限模塊劃分8</p><p>  3.4 系統(tǒng)流程分析8&

3、lt;/p><p>  3.5 數(shù)據(jù)庫設計9</p><p>  3.5.1 數(shù)據(jù)庫規(guī)劃9</p><p>  3.5.2 E-R圖10</p><p>  3.5.3 數(shù)據(jù)表的設計11</p><p>  第四章 系統(tǒng)詳細設計15</p><p>  4.1 數(shù)據(jù)庫15</p&g

4、t;<p>  4.1.1 數(shù)據(jù)庫的鏈接15</p><p>  4.1.2 Is_SQL_Cmd方法15</p><p>  4.1.3 SQL_Ada方法16</p><p>  4.1.4 ExecCmd過程16</p><p>  4.2 系統(tǒng)的登錄與注銷17</p><p>  4.2

5、.1 用戶登陸模塊的實現(xiàn)17</p><p>  4.2.2 用戶注銷模塊的實現(xiàn)18</p><p>  4.3 客戶信息管理19</p><p>  4.3.1 客戶信息的添加19</p><p>  4.3.2 圖像的處理20</p><p>  4.3.3 客戶信息的修改21</p>&

6、lt;p>  4.3.4 客戶信息的刪除23</p><p>  4.3.5 客戶信息的查詢24</p><p>  4.4 添加預定信息26</p><p>  4.4.1 日期時間桌號的核對27</p><p>  4.4.2 打折信息處理27</p><p>  4.4.3 取消預定信息28&l

7、t;/p><p>  4.4.4 預定信息查詢29</p><p>  4.5充值與結算31</p><p>  4.5.1 客戶充值31</p><p>  4.5.2 客戶結算33</p><p>  4.6 折扣設定33</p><p>  4.7 用戶管理34</p>

8、<p>  4.7.1 用戶的添加34</p><p>  4.7.2 用戶的刪除34</p><p><b>  總 結37</b></p><p><b>  謝 辭39</b></p><p><b>  參考文獻40</b></p&

9、gt;<p>  第一章 餐飲信息管理系統(tǒng)的開發(fā)背景</p><p><b>  1.1 開發(fā)背景</b></p><p>  傳統(tǒng)的餐飲管理現(xiàn)在已經(jīng)很難應對當今社會對餐飲業(yè)的管理要求,它與現(xiàn)在的基于計算機技術發(fā)展起來的餐飲信息管理系統(tǒng)對比,有以下幾大不同:</p><p>  便捷性方面:傳統(tǒng)的人工對餐飲信息進行管理,如:顧客信

10、息管理,菜單信息管理和訂餐信息的管理,都是很繁瑣的過程,其中的任何一步過程都要浪費大量的時間,而隨著計算機技術的發(fā)展,這些原本繁瑣的問題都會變得輕而易舉。</p><p>  安全性方面:傳統(tǒng)的紙質(zhì)記錄方式查詢起來很麻煩,而且保密性很差,并且容易磨損丟失,對于會員余額的管理是非常不利的。但如果采用的是電子文檔的方式進行數(shù)據(jù)的保存,這一切都變得非常簡便,你可以方便的對數(shù)據(jù)信息進行備份查詢,并且數(shù)據(jù)的安全性可以得到最

11、大程度的保證。</p><p>  準確性方面:傳統(tǒng)的人工記賬容易出錯,如果采用這種方式來處理現(xiàn)在的含有打折信息的消費結算會使得工作量很大,如果計算出錯將嚴重影響自己的聲譽。而如果使用軟件系統(tǒng),這些問題都將不會出現(xiàn),計算機的錯誤率幾乎為零。</p><p>  鑒于以上傳統(tǒng)的人工管理方式的種種缺陷,我設計了方便中小級別餐飲企業(yè)使用的應用程序,通過它,管理者可以基本解決以上所遇到的種種問題,

12、并且更加科學的對老客戶進行打折,而且添加了主顧權限的不同設計使得它更加方便雇主對雇員的管理與監(jiān)督。</p><p>  第二章 系統(tǒng)定義與系統(tǒng)需求</p><p><b>  2.1 系統(tǒng)定義</b></p><p>  計算機技術產(chǎn)生以后,迅速在管理領域得到了廣泛的應用。20世紀60年代,美國經(jīng)營管理協(xié)會及其事業(yè)部第一次提出了建立管理信息系統(tǒng)

13、的設想,即建立一個有效的信息系統(tǒng),使得各級管理部門都能了解本單位的一切有關經(jīng)營活動,為各級決策人員提供所需要的信息。</p><p>  對于信息管理系統(tǒng)的定義,目前還沒有一個統(tǒng)一的認識。由于餐飲管理系統(tǒng)是基于C/S模式,本文更傾向于采納下述定義:餐飲信息管理系統(tǒng)是通過對整個餐飲服務流程的管理,實現(xiàn)業(yè)務的整體優(yōu)化,提高企業(yè)運行控制和外部交易過程的效率的管理工具。</p><p>  2.2

14、 系統(tǒng)需求分析</p><p>  現(xiàn)在的管理系統(tǒng)不僅要有漂亮的用戶界面,更要有嚴謹?shù)囊?guī)劃,注重每一個細小的環(huán)節(jié)。這樣才能使得在電子交易時避免不必要錯誤發(fā)生。本系統(tǒng)的設計與實施迎合了二十一世紀經(jīng)濟高速發(fā)展、人們的生活節(jié)奏日益加快以及現(xiàn)代餐飲業(yè)越來越發(fā)達和便捷這一現(xiàn)狀。它將極大地方便食客的就餐,同時也有利于我們的管理和服務。同時,我們的餐飲信息管理系統(tǒng)還能幫助餐廳降低錯誤率,擴大營業(yè)范圍,增加知名度等。</p

15、><p>  為了使系統(tǒng)更加人性化,便于管理員管理,此系統(tǒng)的用戶將分為兩種類型,一個是針對員工的餐飲管理系統(tǒng),另一個是針對管理員(店主)的餐飲管理系統(tǒng)。</p><p>  員工使用本餐飲信息管理系統(tǒng)應可以實現(xiàn)以下功能:</p><p>  添加修改查詢客戶會員信息(修改客戶信息需客戶確認)</p><p><b>  查詢菜單<

16、/b></p><p>  添加查詢預定信息,為老顧客打折</p><p>  客戶可以在自己的會員賬戶里充值</p><p>  顧客可以用現(xiàn)金買單也可以從會員賬戶里扣取</p><p>  管理員使用本餐飲信息管理系統(tǒng)應可以實現(xiàn)以下功能:</p><p>  添加修改查詢客戶會員信息(修改客戶信息需客戶確認)

17、</p><p>  添加修改查詢菜單信息,最好能看到菜品圖片</p><p>  添加查詢預定信息,為老顧客打折</p><p>  客戶可以在自己的會員賬戶里充值</p><p>  顧客可以用現(xiàn)金買單也可以從會員賬戶里扣取</p><p><b>  設定具體的打折方法</b></p&

18、gt;<p>  添加職員信息,權限也可以定為管理員。</p><p>  可以查詢使用者的現(xiàn)金收款金額</p><p>  除了實現(xiàn)以上功能外,本系統(tǒng)還需要方便用戶地使用,使得用戶可以很快地熟練掌握,從而可以讓用戶快速的投入工作。并且要避免邏輯錯誤的出現(xiàn)。</p><p>  第三章 系統(tǒng)總體設計</p><p>  3.1

19、系統(tǒng)功能模塊的劃分</p><p>  根據(jù)以上需求,餐飲信息管理系統(tǒng)功能被劃分為以下模塊,如圖3.1所示:</p><p>  圖3.1 餐飲信息管理系統(tǒng)功能模塊圖</p><p>  系統(tǒng)登錄退出模塊:本模塊是被用于用戶登錄,注銷和退出。模塊根據(jù)用戶的不同類型賦予用戶不同的管理權限。低等級的用戶不可訪問高等級用戶的個別功能,而高等級用戶可以使用低等級用戶的所有系

20、統(tǒng)功能。</p><p>  客戶信息管理模塊:本模塊將餐飲企業(yè)松散的客戶資源加以整合,通過標準化的管理操作,將客戶資料加以收集。用戶使用本模塊可以方便的查詢客戶的所有資料和客戶消費信息。并且特意添加了圖像模塊,使得用戶的圖像信息加以保留,方便使用者的查詢和記憶,當客戶再次光臨時,服務人員可以直接認出客戶,這將使得客戶感到無微不至的關懷,提升餐廳的品牌形象??蛻舻馁Y料變更需經(jīng)客戶的確認,以避免出現(xiàn)因失誤操作導致的

21、客戶信息流失。</p><p>  菜單信息管理模塊:本模塊將餐廳的菜品信息通過標準化的管理操作加以整合,使得菜品的價格、配料、功效和圖片可以完全呈現(xiàn)在客戶面前,使得客戶可以方便地選擇自己想要的食物。本模塊的分權限設計將限制普通員工對菜單信息加以修改,以防止菜單價格被惡意修改,以此保證餐廳正??煽康倪\營。</p><p>  訂餐信息管理模塊:通過訂餐模塊使得傳統(tǒng)餐飲訂餐過程變得輕松方便,

22、訂餐信息管理模塊會在客戶訂餐的同時核對客戶所預定的餐桌的使用情況,避免傳統(tǒng)訂餐易出現(xiàn)的預定重合問題。并且本模塊在客戶訂餐的同時會給出已預定的菜品價格,幫助客戶開心合理地消費。模塊中包含的打折服務是本模塊的一大特色。它將參考客戶以往的消費情況和管理員設定的折扣程度對客戶進行打折服務。而不是傳統(tǒng)餐飲打折中的沒有規(guī)律和憑據(jù)以詢。后臺的廚房通過本系統(tǒng)可以清楚地知道客戶預定的菜品,這樣就節(jié)省了大量用于菜品核對的時間,提高了廚房的效率,縮短了廚房上

23、菜的時間。減少了不必要的人力物力財力資源的消耗,降低餐廳的運營成本,使餐廳以更好性價比服務于消費者,消費者可以得到更好的消費體驗。</p><p>  充值結算管理模塊:通過此模塊,用戶可以方便的為客戶提供充值結算服務,充值收取的現(xiàn)金將會計入用戶的收款現(xiàn)金中,便于管理員結算時核對收款金額。結算方式分為兩種,一種是現(xiàn)金結算,一種是賬戶余額結算,現(xiàn)金結算的收款金額會計入用戶的收款現(xiàn)金,而賬戶余額結算的金額會從客戶的賬

24、戶里扣除。</p><p>  折扣信息管理模塊:本模塊只限于管理員使用,通過它可以設定為客戶打折時用到的折扣程度</p><p>  員工信息管理模塊:本模塊只限于管理員使用,管理員使用它,可以添加刪除用戶。用戶類型分為店長(管理員)和職員。管理員刪除用戶時,如果要刪除的是普通職員,系統(tǒng)將直接執(zhí)行命令,如果要刪除的是管理員賬戶,系統(tǒng)會先查看剩下的管理員賬戶數(shù)量,最少保留一個管理員賬戶,以

25、便下次的登錄。如果刪除的用戶是管理員本人,則在刪除賬戶后,系統(tǒng)將會要求使用者重新登錄。</p><p>  3.2 管理員權限模塊劃分</p><p>  管理員權限劃分如圖3.2所示:</p><p>  圖3.2 店長權限模塊圖</p><p>  管理員使用本系統(tǒng)將能使用系統(tǒng)的所有功能。</p><p>  3.

26、3 員工權限模塊劃分</p><p>  員工權限劃分如圖3.3所示:</p><p>  圖3.3 雇員權限模塊圖</p><p>  員工使用本系統(tǒng)可以使用除了菜單信息編輯、折扣信息管理模塊和員工信息管理模塊之外的所有功能。</p><p>  3.4 系統(tǒng)流程分析</p><p>  系統(tǒng)流程分析如圖3.4所示:

27、</p><p>  圖3.4 系統(tǒng)流程分析</p><p>  流程圖簡介:員工登錄系統(tǒng)后為客戶添加基本信息,客戶可以根據(jù)需要在開通的賬戶里充值(增加用戶的收款金額)??蛻敉ㄟ^餐飲信息管理系統(tǒng)進行訂餐(老用戶在此環(huán)節(jié)中可能會享受打折服務)??蛻粲猛瓴秃髞淼椒张_買單,用戶可以選擇使用現(xiàn)金或者從用戶余額里扣除,支付成功會增加客戶的已消費金額。若余額不足,系統(tǒng)將會提示,那么客戶只能使用現(xiàn)金支

28、付。使用現(xiàn)金支付的話會增加用戶的收款金額。管理員登錄的話可以使用員工的所有功能,而且可以設定為客戶打折的折扣程度和添加菜單,以及管理員工賬戶。</p><p><b>  3.5 數(shù)據(jù)庫設計</b></p><p>  3.5.1 數(shù)據(jù)庫規(guī)劃</p><p>  根據(jù)以上模塊劃分圖分析,針對餐飲信息管理系統(tǒng),分別對用戶、客戶、食譜、預定、折扣這

29、幾個實體進行詳細的調(diào)研和分析。數(shù)據(jù)庫的設計采用一庫多表式設計。即設計了一個數(shù)據(jù)庫。把每個使用到的獨立的對象設計為獨立的應用實體。</p><p>  3.5.2 E-R圖</p><p>  圖3.5 用戶E-R圖</p><p>  主要存儲一些用戶信息,如用戶的賬號、密碼和類型地點等等,主要用于用戶登錄,添加客戶和添加預定時會使用到用戶信息。</p>

30、<p>  圖3.6 客戶E-R圖</p><p>  主要存儲一些客戶信息,如客戶的賬號、密碼、聯(lián)系方式和消費情況等等,主要用于客戶訂餐、充值和結算,使用于添加預定。</p><p>  圖3.7 食譜E-R圖</p><p>  主要存儲一些食譜信息,如食譜的名稱、價格和照片等等,主要用于客戶訂餐,使用于添加預定。</p><p

31、>  圖3.8 預定E-R圖</p><p>  主要存儲一些預定信息,如客戶的賬號、預定的時間、桌號和菜單等等,主要用于記錄客戶的預定信息,會使用到用戶、客戶、菜單和折扣信息。</p><p>  圖3.9 折扣E-R圖</p><p>  存儲管理員(店主)設定的打折信息,用來計算打折后的應付金額,使用在添加預定時打折。</p><p&

32、gt;  3.5.3 數(shù)據(jù)表的設計</p><p><b>  user(用戶表)</b></p><p>  表3.1 user</p><p>  用戶表主要用于存儲一些用戶信息,如用戶的賬號、密碼和類型地點等等,主要用于用戶登錄,添加客戶和添加預定時會使用到用戶信息來記錄經(jīng)手的用戶,字段money用于記錄用戶的收款金額,便于結算時對收款

33、現(xiàn)金的核對。</p><p>  customer(客戶表)</p><p>  表3.2 customer</p><p>  客戶表主要用于存儲一些客戶信息,如客戶的賬號、密碼、聯(lián)系方式和消費情況等等,主要用于客戶訂餐、充值和結算,字段money用于儲存賬戶余額,在使用充值和賬戶余額支付時會使用到它。字段usedmoney用于記錄客戶的消費情況,為客戶打折時會

34、使用到它。</p><p>  food (食譜表)</p><p>  表3.3 food</p><p>  食譜表主要用于存儲一些食譜信息,如食譜的名稱、價格和照片等等,主要用于客戶訂餐,使用于添加預定。字段Price記錄的是食物的價格。當客戶預定餐點時,系統(tǒng)使用它來算費用。</p><p>  YuDing(預定表)</p&g

35、t;<p>  表3.4 YuDing</p><p>  預定表主要用于存儲一些預定信息,如客戶的賬號、預定的時間、桌號和菜單等等,主要用于記錄客戶的預定信息,會使用到用戶、客戶、菜單和折扣信息。當系統(tǒng)預定餐點時,會從其他各表中調(diào)出需要的信息,經(jīng)過計算和處理后,將最終信息儲存到YuDing表,該表和其它各表都有緊密的聯(lián)系。</p><p>  discount(折扣表)&

36、lt;/p><p>  表3.5 discount</p><p>  折扣表用于存儲管理員(店主)設定的打折信息,用來計算打折后的應付金額,使用在添加預定時打折。當客戶預定餐點時,打折服務的折扣程度就是參照該表。</p><p>  第四章 系統(tǒng)詳細設計</p><p><b>  4.1 數(shù)據(jù)庫</b></p>

37、;<p>  4.1.1 數(shù)據(jù)庫的鏈接</p><p>  為了便于用戶使用和維護,我們將與數(shù)據(jù)庫的連接,單獨寫出來并進行編譯,這樣系統(tǒng)在新的環(huán)境使用時,只需改動一處數(shù)據(jù)庫連接代碼,即可立即使用,連接關鍵代碼如下:</p><p>  Public Shared constr As String = "Data Source=WWW-3C702F2C1C8\SQLE

38、XPRESS;Initial Catalog=dcdatebase;Integrated Security=True"</p><p>  其中Public Shared constr As String = "Data Source=WWW-3C702F2C1C8\SQLEXPRESS;Initial Catalog=dcdatebase;Integrated Security=True&q

39、uot;是數(shù)據(jù)庫連接語句,WWW-3C702F2C1C8是計算機名。</p><p>  4.1.2 Is_SQL_Cmd方法</p><p>  方法Is_SQL_Cmd是判斷數(shù)據(jù)是否存在,當系統(tǒng)登錄和添加客戶需要驗證數(shù)據(jù)庫中是否存在提交的數(shù)據(jù)時會用到它。其主要代碼如下:</p><p>  Public Function Is_SQL_Cmd(ByVal cmd

40、str As String) As Boolean</p><p>  SqlConn = New SqlConnection(constr)</p><p>  SqlConn.Open()</p><p>  SqlCmd = New SqlCommand(cmdstr, SqlConn)</p><p><b>  Try&l

41、t;/b></p><p>  SqlDr = SqlCmd.ExecuteReader()</p><p>  If SqlDr.HasRows Then</p><p>  Return True</p><p><b>  Else</b></p><p>  Return False

42、</p><p><b>  End If</b></p><p>  Catch ex As Exception</p><p>  Return False</p><p><b>  Finally</b></p><p>  SqlConn.Close()</p

43、><p><b>  End Try</b></p><p>  End Function</p><p>  4.1.3 SQL_Ada方法</p><p>  方法SQL_Ada是為了查詢數(shù)據(jù)庫,并將查詢到的結果存放在內(nèi)存中的datatable表中,餐飲信息管理系統(tǒng)中使用到的組件DataGridView再從datatab

44、le表中得到數(shù)據(jù)。</p><p>  Public Function SQL_Ada(ByVal adastr As String) As DataTable</p><p>  SqlConn = New SqlConnection(constr)</p><p>  SqlConn.Open()</p><p>  SqlAda = N

45、ew SqlDataAdapter(adastr, SqlConn)</p><p>  ds = New DataSet</p><p><b>  Try</b></p><p>  SqlAda.Fill(ds)</p><p>  Return ds.Tables(0)</p><p> 

46、 Catch ex As Exception</p><p>  Return New DataTable</p><p><b>  Finally</b></p><p>  SqlConn.Close()</p><p><b>  End Try</b></p><p&g

47、t;  End Function</p><p>  4.1.4 ExecCmd過程</p><p>  ExecCmd是為系統(tǒng)中的添加、刪除、修改服務,系統(tǒng)里的客戶、菜單、折扣和員工的添加、刪除和修改都用到了該過程。</p><p>  Public Sub ExecCmd(ByVal cmdstr As String)</p><p> 

48、 SqlConn = New SqlConnection(constr)</p><p>  SqlConn.Open()</p><p>  SqlCmd = New SqlCommand(cmdstr, SqlConn)</p><p>  SqlCmd.ExecuteNonQuery()</p><p><b>  End S

49、ub</b></p><p>  4.2 系統(tǒng)的登錄與注銷</p><p>  4.2.1 用戶登陸模塊的實現(xiàn)</p><p><b>  圖4.1 用戶登錄</b></p><p>  用戶登陸模塊是防止非法用戶登陸的第一道防線,通過它可以保護后臺數(shù)據(jù)庫的安全性,當用戶要進行系統(tǒng)操作時,首先要進入的就是身份

50、驗證界面,只有在密碼正確的情況下才能進行以后的操作,如果輸入的密碼不正確,則不能進行登錄對系統(tǒng)進行操作。如果用戶以職員的身份進入系統(tǒng),則只能進行顧客信息管理、菜單信息查詢、預定信息管理和充值結算管理,而菜單信息管理、折扣設定、員工管理這些功能將被屏蔽,如果用戶以管理員(店長)身份登錄,系統(tǒng)的所有功能都將可以使用。以下是“登錄”按鈕的代碼:</p><p>  cmdstr = "select * fro

51、m [user] where [user_id] ='" + TextBox1.Text + "' and [pwd]= '" + TextBox2.Text + "' and [style]= '" + ComboBox1.Text + "'"</p><p><b>  Try<

52、;/b></p><p>  If sqlobject.Is_SQL_Cmd(cmdstr) Then</p><p>  main.m_Login = True</p><p>  ...... //類似部分省略</p><p>  Me.Close()</p><p>&

53、lt;b>  Else</b></p><p>  MsgBox("請?zhí)顚懻_的用戶名、密碼和用戶類型!")</p><p><b>  End If</b></p><p>  Catch ex As Exception</p><p>  main.OPErr.WriteErr(

54、ex)</p><p><b>  End Try</b></p><p>  系統(tǒng)先進行數(shù)據(jù)庫操作,判斷是否存在用戶名、用戶密碼和用戶類型完全符合要求的數(shù)據(jù),如果存在,則說明用戶可以登錄,同時把登錄的用戶類型和用戶名告訴需要用到用戶類型和用戶名數(shù)據(jù)的模塊如系統(tǒng)主界面、充值模塊和買單模塊等等。</p><p>  4.2.2 用戶注銷模塊的實現(xiàn)

55、</p><p>  用戶注銷模塊的代碼如下: </p><p>  Private Sub 注銷ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 注銷ToolStripMenuItem.Click</p><p>  Me.m_st

56、yle = ""</p><p>  Me.m_Login = False</p><p>  For Each ChildForm As Form In Me.MdiChildren</p><p>  ChildForm.Close()</p><p><b>  Next</b></p&g

57、t;<p>  main_Load(sender, e)</p><p>  Login.Show()</p><p>  Me.ToolStripStatusLabel1.Text = "登錄"</p><p><b>  End Sub</b></p><p>  用戶通過本模塊可以

58、注銷系統(tǒng),系統(tǒng)恢復到登錄前畫面,這樣就可以防止在用戶離開后,系統(tǒng)數(shù)據(jù)被人惡意修改。</p><p>  4.3 客戶信息管理</p><p>  4.3.1 客戶信息的添加</p><p>  圖4.2 客戶的添加</p><p>  當用戶點擊添加按鈕時,系統(tǒng)執(zhí)行以下代碼:</p><p>  CmdStr = &q

59、uot;SELECT id FROM [customer] where id='" + TextBox2.Text + "'"</p><p>  If TextBox2.Text = "" Then //身份證不為空</p><p>  MsgBox("請輸入身份證號&quo

60、t;)</p><p>  TextBox2.Focus()</p><p>  ElseIf sqlobject.Is_SQL_Cmd(CmdStr) Then //檢查是否已注冊</p><p>  MsgBox("該客戶已經(jīng)存在")</p><p>  TextBox2.Focus()</p>

61、<p>  ...... //中間還有很多類似的驗證</p><p><b>  Else</b></p><p>  CmdStr = "insert into customer (name,id,address,birthday,pwd,addtime,money,usedmoney,tel

62、,mobilephone,userid)VALUES('" + TextBox1.Text + "','" + TextBox2.Text + "','" + TextBox3.Text + "','" + DateTimePicker1.Value.ToString + "','&qu

63、ot; + TextBox6.Text + "','" + Now + "','" + "0" + "','" + "0" + "','" + TextBox4.Text + "','" + TextBox5.Text

64、+ "','" + user + "')"</p><p><b>  Try</b></p><p>  sqlobject.ExecCmd(CmdStr) //添加客戶</p><p>  MsgBox("添加成功")

65、 // 添加成功提示</p><p>  FileUrl = "" //復位空格</p><p><b>  ......</b></p><p>  Catch ex As Exception</p><p>  main.OPErr.Wri

66、teErr(ex)</p><p><b>  End Try</b></p><p><b>  End If</b></p><p><b>  End Sub</b></p><p>  在添加用戶前,系統(tǒng)進行了詳細的表單驗證,包括驗證要提交的客戶是否已經(jīng)存在,用戶兩次輸

67、入的密碼是否一樣,以及聯(lián)系方式不為空等等。使用insert語句將通過驗證的表格中的數(shù)據(jù)提交到數(shù)據(jù)庫。菜單信息添加模塊與本模塊的原理類似,以下不再闡述。</p><p>  4.3.2 圖像的處理</p><p>  如果用戶在上面添加客戶信息時,添加了圖像信息,那么系統(tǒng)就會執(zhí)行以下命令:</p><p>  If FileUrl <> "&qu

68、ot; Then //圖像存在的話,添加圖像</p><p>  Dim imgstreem As New FileStream(FileUrl, FileMode.Open, FileAccess.Read)</p><p>  Dim imgbyte(imgstreem.Length) As Byte</p><p>  imgstreem.Re

69、ad(imgbyte, 0, imgstreem.Length)</p><p>  imgstreem.Close()</p><p>  Dim sqlcmd As New System.Data.SqlClient.SqlCommand</p><p>  Dim sqlconn As New System.Data.SqlClient.SqlConnecti

70、on(SQL_Conn.constr)</p><p>  CmdStr = "update customer set photo=@image where id='" + TextBox2.Text + "'"</p><p>  sqlcmd.Parameters.Add("@image", SqlDbType

71、.Image)</p><p>  sqlcmd.Parameters("@image").Value = imgbyte</p><p>  sqlcmd.Connection = sqlconn</p><p>  sqlcmd.CommandText = CmdStr</p><p><b>  Try&l

72、t;/b></p><p>  sqlconn.Open()</p><p>  sqlcmd.ExecuteNonQuery()</p><p>  sqlconn.Close()</p><p>  Catch ex As Exception</p><p>  main.OPErr.WriteErr(ex)

73、</p><p><b>  End Try</b></p><p><b>  End If</b></p><p>  如果用戶提交了客戶的相片,相片將會被轉化為二進制數(shù)據(jù)提交到數(shù)據(jù)庫中,這樣就可以方便用戶日后對客戶資料進行維護,也有助于服務人員記住客戶,當客戶再次光臨時,一口報出客戶的名字將會使客戶對餐廳的好感大增。

74、</p><p>  4.3.3 客戶信息的修改</p><p>  圖4.3 客戶信息的修改</p><p>  當客戶資料因?qū)嶋H情況發(fā)生變更時,可以修改系統(tǒng)中的資料數(shù)據(jù),用戶需提供注冊時所使用的客戶密碼。使用密碼可以防止客戶的資料被惡意修改。充分保護客戶權益,即使是管理員也不能在不經(jīng)過客戶同意的情況下修改客戶數(shù)據(jù)。以下是修改按鈕的代碼。</p>&

75、lt;p>  CmdStr = "select pwd from customer where pwd='" + TextBox12.Text + "' and id ='" + TextBox8.Text + "'" //確定客戶身份代碼</p><p>  ......

76、 //省略驗證信息</p><p>  If sqlobject.Is_SQL_Cmd(CmdStr) Then //如果客戶同意修改的話繼續(xù)</p><p>  CmdStr = "update customer set address='" + TextBox9.Text + "'" + ",te

77、l='" + TextBox10.Text + "'" + ",mobilephone='" + TextBox11.Text + "'" + ",pwd='" + TextBox13.Text + "'" + " where id='" + TextB

78、ox8.Text + "'"</p><p><b>  Try</b></p><p>  sqlobject.ExecCmd(CmdStr) //執(zhí)行更新</p><p>  MsgBox("修改成功")</p><p>  TextBox8.Text

79、 = ""</p><p><b>  ......</b></p><p>  PictureBox2.Image = Nothing</p><p>  Call TabControl1_SelectedIndexChanged(sender, e)</p><p>  Catch ex As E

80、xception</p><p>  main.OPErr.WriteErr(ex)</p><p><b>  End Try</b></p><p><b>  Else</b></p><p>  MsgBox("密碼錯誤")</p><p><

81、;b>  End If</b></p><p>  使用方法Is_SQL_Cmd驗證客戶密碼的正確性,如果原始密碼正確,用戶在輸入新密碼后可以進行對聯(lián)系方式等基本資料進行修改。使用update語句將空格中的數(shù)據(jù)更新到服務器。如果更新成功,系統(tǒng)會彈出“修改成功的提示”。 菜單信息修改模塊與本模塊的原理類似,以下不再闡述。</p><p>  4.3.4 客戶信息的刪除<

82、;/p><p>  客戶信息可以在得到客戶確認的情況下刪除,因設計到賬戶余額問題所以在進行此操作時萬分謹慎??蛻糍Y料來之不易,建議不要輕易刪除客戶資料。以下是刪除模塊的程序代碼:</p><p>  Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Butt

83、on6.Click</p><p>  If TextBox12.Text = "" Then</p><p>  MsgBox("請輸入用戶密碼")</p><p>  TextBox12.Focus()</p><p><b>  Else</b></p><

84、;p>  CmdStr = "select pwd from customer where pwd='" + TextBox12.Text + "' and id ='" + TextBox8.Text + "'" //用戶密碼確認</p><p>  If sqlob

85、ject.Is_SQL_Cmd(CmdStr) Then</p><p>  CmdStr = "delete from customer where id='" + TextBox8.Text + "'"</p><p><b>  Try</b></p><p>  sqlobject

86、.ExecCmd(CmdStr) //執(zhí)行刪除命令</p><p>  MsgBox("刪除成功")</p><p>  PictureBox2.Image = Nothing</p><p>  Catch ex As Exception</p><p>  main.OPErr.WriteErr(ex)

87、</p><p><b>  End Try</b></p><p><b>  Else</b></p><p>  MsgBox("密碼錯誤")</p><p><b>  End If</b></p><p><b>

88、  End If</b></p><p>  Call TabControl1_SelectedIndexChanged(sender, e)</p><p><b>  End Sub</b></p><p>  系統(tǒng)先對客戶密碼進行了核對,密碼正確的話,使用delete語句,根據(jù)客戶的身份證號對數(shù)據(jù)庫中的客戶數(shù)據(jù)進行刪除。因添加

89、客戶數(shù)據(jù)時要求身份證號是唯一的,所以不用擔心誤刪的問題。菜單信息刪除模塊與本模塊的原理類似,以下不再闡述。</p><p>  4.3.5 客戶信息的查詢</p><p>  圖4.4 客戶信息的查詢</p><p>  1、客戶查詢模塊載入</p><p>  Private Sub kehuchaxun_Load(ByVal sender

90、 As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load</p><p>  sqlobject = New SQL_Conn</p><p>  CmdStr = "SELECT name as '客戶姓名',id as '身份證',address as '家庭

91、地址',tel as '電話號碼',mobilephone as '手機號碼' ,money as '賬戶余額' ,usedmoney as '已消費額'FROM customer"</p><p><b>  Try</b></p><p>  Me.DataGridView1.Dat

92、aSource = sqlobject.SQL_Ada(CmdStr)</p><p>  Catch ex As Exception</p><p>  main.OPErr.WriteErr(ex)</p><p><b>  End Try</b></p><p>  Me.DataGridView1.AutoSi

93、zeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells</p><p><b>  End Sub</b></p><p>  使用SQL_Ada方法,查詢customer表中的個別數(shù)據(jù),將數(shù)據(jù)庫中的數(shù)據(jù)提取出來保存在內(nèi)存中的datatable表中,客戶信息查詢中的DataGridView組件將內(nèi)存

94、中的datatable數(shù)據(jù)表里的數(shù)據(jù)提取出來顯示給用戶查看。</p><p>  2、當點擊DataGridView組建中的任意一客戶資料時,在組件左邊的PictureBox中將顯示客戶照片。</p><p>  Private Sub DataGridView1_CellClick(ByVal sender As Object, ByVal e As System.Windows.For

95、ms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick</p><p>  If row <> e.RowIndex And e.RowIndex >= 0 Then </p><p>  row = e.RowIndex</p><p>  Label1.Text = Me.

96、DataGridView1.Item(0, row).Value.ToString.Trim()</p><p>  If Label1.Text <> "" Then</p><p>  CmdStr = "select photo from customer where name='" + Label1.Text + &quo

97、t;'"</p><p>  DisplayImg(CmdStr)</p><p>  Else : PictureBox1.Image = Nothing</p><p><b>  End If</b></p><p><b>  End If</b></p>&

98、lt;p><b>  End Sub</b></p><p>  其中If row <> e.RowIndex And e.RowIndex >= 0 中e.RowIndex指的是點擊的行數(shù),第一行為0。Label1.Text = Me.DataGridView1.Item(0, row).Value.ToString.Trim()是為了取所選行數(shù)的第一列值,即客戶姓

99、名。If Label1.Text <> "" Then是指如果label1不為空, CmdStr = "select photo from customer where name='" + Label1.Text + "'"是SQL語句查詢圖片數(shù)據(jù)。DisplayImg(CmdStr)是在DisplayImg方法中執(zhí)行SQL語句。Else : Pic

100、tureBox1.Image = Nothing指不滿足條件時,清空圖像。</p><p>  3、DisplayImg方法</p><p>  Private Sub DisplayImg(ByVal str As String)</p><p>  sqlobject.SQL_Ada(str)</p><p>  If sqlobject

101、.SQL_Ada(str).Rows(0).Item(0) Is DBNull.Value Then</p><p>  PictureBox1.Image = Nothing</p><p><b>  Else</b></p><p>  Dim imgbyte() As Byte = sqlobject.SQL_Ada(str).Rows

102、(0).Item(0)</p><p>  Dim imgmemory As New MemoryStream(imgbyte)</p><p>  PictureBox1.Image = Image.FromStream(imgmemory)</p><p><b>  End If</b></p><p><b

103、>  End Sub</b></p><p>  DisplayImg方法的作用是讀出數(shù)據(jù)庫中保存的二進制圖像。</p><p>  菜單信息查詢模塊與本模塊的原理類似,以下不在闡述。</p><p>  4.4 添加預定信息</p><p>  圖4.5 添加預定信息</p><p>  系統(tǒng)在窗口

104、載入時,先查詢了客戶和菜單兩張表,將數(shù)據(jù)顯示在窗體左邊,供用戶選擇時使用,其代碼和客戶查詢類似這里不再敘述。本節(jié)介紹其他功能的實現(xiàn)。</p><p>  4.4.1 日期時間桌號的核對</p><p>  為了防止客戶預定的餐桌出現(xiàn)重合的情況,添加預定的餐桌時系統(tǒng)執(zhí)行以下代碼:</p><p>  Private Sub DateTimePicker1_ValueC

105、hanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DateTimePicker1.ValueChanged</p><p>  sqlobject = New SQL_Conn</p><p>  CmdStr = "select tableid from YuDing where

106、 tableid='" + ComboBox1.Text + "'and date='" + DateTimePicker1.Value.ToString + "'and time='" + ComboBox2.Text + "'"</p><p>  If sqlobject.Is_SQL_Cm

107、d(CmdStr) Then</p><p>  MsgBox("在此時刻此桌已有預定")</p><p><b>  End If</b></p><p><b>  End Sub</b></p><p>  當桌號、時間或者日期中任何一條改動時,程序都會使用方法Is_SQL

108、_Cmd執(zhí)行查找一次數(shù)據(jù)庫,看在此時刻此桌是否已有預定信息的記錄,如果已有相同記錄,系統(tǒng)就會提示“在此時刻此桌已有預定”。</p><p>  4.4.2 打折信息處理</p><p>  當用戶向系統(tǒng)添加預定的菜品時,系統(tǒng)會執(zhí)行以下代碼:</p><p>  If Label6.Text = "" Then //選

109、擇客戶</p><p>  MsgBox("請選擇客戶")</p><p>  ElseIf Label12.Text = "" Then //選擇菜單</p><p>  MsgBox("請選擇菜單")</p><p><b>  Else</b

110、></p><p>  Label14.Text = Label14.Text + Label10.Text + " " //所點菜單</p><p>  price = Label12.Text</p><p>  totle += price //總消費金額</p>

111、<p>  Label16.Text = totle</p><p>  Label18.Text = totle</p><p>  CmdStr = "select usedmoney from discount" //查詢設定的消費金額</p><p>  Cmd = "select discount from di

112、scount" //查詢設定的打折程度</p><p>  Cm = "SELECT usedmoney FROM [customer] where id='" + Label6.Text + "'" //客戶已消費金額</p><p>  f = (sqlobject.SQL_Ada(Cm).Rows(0).It

113、em(0)) //f為客戶已消費金額</p><p><b>  Try</b></p><p>  For i = 0 To sqlobject.SQL_Ada(CmdStr).Rows.Count – 1 //打折表行數(shù)</p><p>  j = (sqlobject.SQL_Ada(CmdStr).Rows(i).Item(0)) //

114、打折表行消費金額</p><p>  d = (sqlobject.SQL_Ada(Cmd).Rows(i).Item(0)) //打折表行折扣率</p><p>  If (f >= j) Then</p><p>  Label18.Text = totle * d / 10</p><p><b>  End If

115、</b></p><p><b>  Next i</b></p><p>  Catch ex As Exception</p><p>  main.OPErr.WriteErr(ex)</p><p><b>  End Try</b></p><p>&l

116、t;b>  End If</b></p><p><b>  End Sub</b></p><p>  首先選擇客戶和預定的餐點,客戶信息用于判斷打折程度,餐點用于結算消費金額。用累加的方法計算出總消費金額,系統(tǒng)先在數(shù)據(jù)表中查詢客戶信息中的客戶已消費金額,再用查出的金額與數(shù)據(jù)庫對比,判斷打折程度。具體方法是系統(tǒng)先查看折扣數(shù)據(jù)表中共有的數(shù)據(jù)行數(shù),然后

117、從第0行開始依次向下掃描,由于添加打折信息時是按照消費額度遞增方式添加的,所以系統(tǒng)查到的數(shù)據(jù)會越來越大,越來越接近客戶已消費金額,當已消費金額剛好超過設定的金額時系統(tǒng)停止繼續(xù)向下查找新的設定金額,同時查找設定金額對應的打折程度,再用此打折程度計算打折后的實付金額。</p><p>  4.4.3 取消預定信息</p><p>  系統(tǒng)根據(jù)用戶選擇的預定信息,執(zhí)行刪除命令,其關鍵代碼如下:&

118、lt;/p><p>  CmdStr = "delete from YuDing where name='" + Label25.Text + "'and date='" + Label27.Text + "'and time='" + Label28.Text + "'and tableid=

119、9;" + Label30.Text + "'"</p><p><b>  Try</b></p><p>  sqlobject.ExecCmd(CmdStr)</p><p>  4.4.4 預定信息查詢</p><p><b>  圖4.6 預定查詢</b&g

120、t;</p><p>  當預定查詢模塊載入時,系統(tǒng)執(zhí)行以下語句:</p><p>  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load</p><p>  sqlobject = New SQL_Conn<

121、;/p><p>  CmdStr = "SELECT name as '客戶姓名',customerid as '身份證',date as '預定日期',time as '預定時間',tableid as '餐桌號',money as '結算價格',food as '預定菜單',userid as

122、 '服務員編號' FROM YuDing"</p><p><b>  Try</b></p><p>  Me.DataGridView1.DataSource = sqlobject.SQL_Ada(CmdStr)</p><p>  Catch ex As Exception</p><p&g

123、t;  main.OPErr.WriteErr(ex)</p><p><b>  End Try</b></p><p>  Me.DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells</p><p><b>  End

124、Sub</b></p><p>  當預定查詢模塊載入時讀取數(shù)據(jù)庫中的預定信息并且顯示在DataGridView組件中顯示給用戶查看,餐廳的廚房就是使用這一模塊來獲取需要準備的餐點。</p><p>  當用戶知道想要查找的預定信息中的某些確切內(nèi)容時,可以將知道的內(nèi)容輸入空格中,系統(tǒng)將會自動在數(shù)據(jù)庫中查找這些內(nèi)容。關鍵代碼如下:</p><p>  Pr

125、ivate Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged</p><p>  TextBox2.Text = ""</p><p>  TextBox3.Text = ""

126、;</p><p>  sqlobject = New SQL_Conn</p><p>  CmdStr = "SELECT name as '客戶姓名',customerid as '身份證',date as '預定日期',time as '預定時間',tableid as '餐桌號',money

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論