




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、經(jīng)典文餐飲管理系統(tǒng)餐飲管理系統(tǒng)是一個(gè)飲食產(chǎn)業(yè)不可缺少的部分,它的內(nèi)容對企業(yè)的決策者和管理者都至關(guān)重要,所以餐飲管理系統(tǒng)應(yīng)該能夠?yàn)橛脩籼峁┏渥愕男畔⒑涂旖莸?查詢手段。但一直以來人們使用的餐飲管理系統(tǒng)均是以人為主體的,需要很多的 人力、物力、財(cái)力,且效率不是很高,在系統(tǒng)運(yùn)營時(shí)也可能產(chǎn)生人為的失誤,以 致餐飲管理工作既繁瑣而且不利于分析企業(yè)的經(jīng)營狀況。作為計(jì)算機(jī)應(yīng)用的一部分,使用計(jì)算機(jī)對餐飲信息進(jìn)行管理,具有人工管理 所無法比擬的優(yōu)點(diǎn)。例如統(tǒng)計(jì)結(jié)賬快速、安全保密性好、可靠性高、存儲量大、 壽命長、成本低等。這些優(yōu)點(diǎn)能夠極大地提高餐飲管理的效率,增強(qiáng)企業(yè)的競爭 力,同時(shí)也是企業(yè)的科學(xué)化、正規(guī)化管理,
2、與世界接軌的重要條件。通過閱讀本 章,讀者可以學(xué)習(xí)到:驗(yàn)證不同權(quán)限登錄用戶的方法使用ListView控件制作桌臺顯示使用MenuStrip控件制作系統(tǒng)菜單欄使用ContextMenuStrip控件制作桌臺右鍵菜單開發(fā)餐飲管理系統(tǒng)的具體流程1開發(fā)背景近幾年來,計(jì)算機(jī)網(wǎng)絡(luò)、分布技術(shù)日趨成熟,隨著科技的發(fā)展,餐飲業(yè)的競 爭也越來越激烈。想在這樣競爭激烈的環(huán)境下生存,那么就必須運(yùn)用科學(xué)的管理 思想與先進(jìn)的管理方法,使點(diǎn)餐與管理一體化。這樣不僅提高了工作效率,也避 免了以前手工作業(yè)的麻煩,從而使管理者能夠準(zhǔn)確、有效地管理餐飲。因此,餐 飲業(yè)的管理者更希望從科學(xué)的管理中取得競爭的優(yōu)勢,在競爭激烈的商業(yè)市場
3、中取勝。2需求分析隨著餐飲業(yè)的不斷發(fā)展,餐飲管理系統(tǒng)的內(nèi)容對于餐飲業(yè)的決策者和管理者 來說都非常重要。本系統(tǒng)主要包括桌臺顯示、消費(fèi)查詢、人事檔案及權(quán)限等幾大 部分,本系統(tǒng)具有良好的用戶接口,使用方便。具有完善的查詢,對維護(hù)系統(tǒng)起 到輔助決策的作用,能及時(shí)、方便、靈活地進(jìn)行查詢、修改、刪除等維護(hù)性操作。 餐飲管理系統(tǒng)有足夠的存儲容量,滿足酒店每日營業(yè)的變動(dòng),另外,對于操作用 戶有一定的管理,并對用戶的權(quán)限有一定的設(shè)置。3系統(tǒng)設(shè)計(jì)3.1 系統(tǒng)目標(biāo)本系統(tǒng)屬于小型的餐飲管理系統(tǒng),可以有效地對中小型餐廳消費(fèi)進(jìn)行管理。本系統(tǒng)應(yīng)達(dá)到以下目標(biāo):系統(tǒng)采用人機(jī)交互的方式,界面美觀友好,信息查詢靈活、方便,數(shù)據(jù)存儲
4、安全可靠。實(shí)現(xiàn)對餐廳顧客開臺、點(diǎn)菜/加菜、賬目查詢和結(jié)賬等操作。對用戶輸入的數(shù)據(jù)進(jìn)行嚴(yán)格的數(shù)據(jù)檢驗(yàn),盡可能地避免人為錯(cuò)誤。實(shí)現(xiàn)對消費(fèi)賬目自動(dòng)結(jié)算。實(shí)現(xiàn)對消費(fèi)的歷史記錄進(jìn)行查詢,支持模糊查詢。系統(tǒng)應(yīng)最大限度地實(shí)現(xiàn)易維護(hù)性和易操作性。3.2 系統(tǒng)功能結(jié)構(gòu)餐飲管理系統(tǒng)功能結(jié)構(gòu)如圖1所示圖1系統(tǒng)功能結(jié)構(gòu)圖3.3 系統(tǒng)預(yù)覽餐飲管理系統(tǒng)由多個(gè)窗體組成,下面僅列出幾個(gè)典型窗體,其他窗體參見光盤中的源程序。主窗體模塊運(yùn)行結(jié)果如圖2所示,主要功能是鏈接系統(tǒng)功能菜單、顯示所有桌臺和顯示系統(tǒng)當(dāng)前狀態(tài)。點(diǎn)菜模塊運(yùn)行結(jié)果如圖 3所示,主要功能是為顧客點(diǎn)菜。開臺模塊運(yùn)行效果如圖4所示,主要功能是實(shí)現(xiàn)對指定的桌臺進(jìn)行開臺操
5、作。結(jié)賬模塊運(yùn)行效果如圖5所示,主要功能是對指定的桌臺進(jìn)行結(jié)賬操作,同時(shí), 清空結(jié)賬桌臺的所有消費(fèi)信息。注主侵俗嗔央近吁注美 比衛(wèi). triiiVain.es苗63彳菜旗茨江二二號呆tziE . frmDC.es3.4 業(yè)務(wù)流程圖餐飲管理系統(tǒng)的業(yè)務(wù)流程圖如圖6所示6.3.4業(yè)務(wù)流程圖瑞助工具退出百二二3 6.6筌江管理?xiàng)l流的業(yè)務(wù)流程圖3.5 程序運(yùn)行環(huán)境餐飲管理系統(tǒng)在運(yùn)行中的具體運(yùn)行環(huán)境如下。系統(tǒng)開發(fā)平臺:Microsoft Visual Studio 2008。系統(tǒng)開發(fā)語言:Ct數(shù)據(jù)庫管理系統(tǒng):Microsoft SQL Server 2005。運(yùn)行平臺:WindowsXP(SP2 /Win
6、dows 2000 (SP4 /Windows Server 2003 (SPD。運(yùn)行環(huán)境:Microsoft. NET Framework SDK v2.0。分辨率:最佳效果1024X 768像素。3.6 數(shù)據(jù)庫設(shè)計(jì)在開發(fā)餐飲管理系統(tǒng)之前,分析了該系統(tǒng)的數(shù)據(jù)量。由于系統(tǒng)管理餐飲方面 的數(shù)據(jù)較多,商品信息、消費(fèi)信息以及賬目清單會(huì)占用較大的空間,因此選擇 Microsoft SQL Server 2000數(shù)據(jù)庫存儲這些信息,數(shù)據(jù)庫命名為db_MrCy,在數(shù)據(jù)庫中創(chuàng)建了 6個(gè)數(shù)據(jù)表用于存儲不同的信息,如圖 7所示。圖6.7餐次管理系統(tǒng)使用的數(shù)據(jù)表說明:Microsoft SQLServer 200
7、0數(shù)據(jù)庫的創(chuàng)建過程在第5章已經(jīng)做過介紹, 此處不再贅述。3.7 數(shù)據(jù)庫概念設(shè)計(jì)餐飲管理系統(tǒng)的數(shù)據(jù)庫主要用于存儲餐飲管理系統(tǒng)中的數(shù)據(jù),由于餐飲管理系統(tǒng)的數(shù)據(jù)量很大,所以選擇了 Microsoft SQL Server 2000 數(shù)據(jù)庫,數(shù)據(jù)庫中建立一個(gè)商品信息表,用于存儲所有的商品信息。商品信息實(shí)體 E-R圖如圖8所由于商品的種類很多,因此需要對商品進(jìn)行分類,這樣就可以對商品分門別類地進(jìn)行儲存,在查詢時(shí)可以根據(jù)商品類別進(jìn)行查詢。在數(shù)據(jù)庫中建立一個(gè)商品類別信息表,用于存儲商品的所有類別信息。商品類別信息實(shí)體E-R圖如圖9所示。當(dāng)顧客進(jìn)行消費(fèi)時(shí),顧客會(huì)根據(jù)自己的需求消費(fèi)不同的商品,系統(tǒng)將顧客消費(fèi)的所
8、有信息存儲到數(shù)據(jù)表中,以便顧客結(jié)賬時(shí)查詢,在數(shù)據(jù)庫中建立一個(gè)顧客消費(fèi)信息表用于存儲顧客的消費(fèi)記錄。顧客消費(fèi)信息實(shí)體E-R圖如圖10所示。餐廳中會(huì)有多個(gè)桌臺供顧客選擇,每個(gè)桌臺會(huì)有不同的信息。 例如,大廳-01 號桌臺被顧客使用,顧客人數(shù)為5人等,方便操作員對桌臺的操作,在數(shù)據(jù)庫中 建立一個(gè)桌臺信息表用于存儲所有桌臺的詳細(xì)信息。 桌臺信息實(shí)體E-R圖如圖11 所示。為了對系統(tǒng)進(jìn)行不同的管理,需要為系統(tǒng)建立管理用戶。這些用戶通過登錄 模塊登錄系統(tǒng),登錄成功之后會(huì)根據(jù)不同的權(quán)限對不同的功能模塊進(jìn)行管理,在 數(shù)據(jù)庫中建立一個(gè)用戶信息表,用于存儲登錄用戶信息。用戶信息實(shí)體E-R圖如圖12所示。在餐飲行業(yè)
9、中,餐廳服務(wù)員起著極其重要的作用,但是由于服務(wù)人員數(shù)目眾 多,如果不進(jìn)行相應(yīng)的信息記錄,可能管理起來會(huì)非常困難。因此,需要對服務(wù) 人員的詳細(xì)信息進(jìn)行記錄。在數(shù)據(jù)庫中建立一個(gè)職員信息表用于存儲所有服務(wù)人 員的信息。職員信息實(shí)體 E-R圖如圖13所示。圖亂12用戶信息實(shí)體E-R圖3.8 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì)根據(jù)設(shè)計(jì)好的E-R圖在數(shù)據(jù)庫中創(chuàng)建各表,系統(tǒng)數(shù)據(jù)庫中各表的結(jié)構(gòu)如下tb_food (商品信息表)tb_food用于保存所有商品信息,該表的結(jié)構(gòu)如表1所示表1商品信息表字段名數(shù)據(jù)類型長 度主 鍵描 述IDint4是系統(tǒng)編號foodtychar10否類別編號foodnumchar10否商品代號food
10、namevarchar50否商品名稱foodpricedecimal9否商品價(jià)格tb_foodtype (商品類別信息表)表tb_foodtype用于保存商品類別信息,該表的結(jié)構(gòu)如表2所表2商品類別信息表字段名數(shù)據(jù)類型長 度主 鍵描 述IDint4是系統(tǒng)編號Foodtypevarchar50否商品類別名稱tb_GuestFood (顧客消費(fèi)信息表)表tb_GuestFood用于保存顧客的消費(fèi)信息,該表結(jié)構(gòu)如表3所示表3顧客消費(fèi)信息表字段名數(shù)據(jù)類型長 度主 鍵描 述IDint4是系統(tǒng)編號foodnumchar10否商品代號foodnamevarchar50否商品名稱foodsumchar10否消
11、費(fèi)數(shù)量foodallpricedecimal9否商品價(jià)格waiternamevarchar50否操作員姓名beizhuvarchar50否備注zhuotaichar10否消費(fèi)桌臺datatimevarchar50否消費(fèi)時(shí)間tb_Room (桌臺信息表)表tb_Room用于保存所有桌臺信息,該表結(jié)構(gòu)如表 4所示表4桌臺信息表字段名數(shù)據(jù)類型長 度主 鍵描 述IDint4是系統(tǒng)編號RoomNamechar10否桌臺名稱RoomJCchar10否桌臺簡稱RoomBJFdecimal9否桌臺包間費(fèi)RoomWZchar10否桌臺位置RoomZTchar10否桌臺狀態(tài)RoomTypechar10否桌臺類型R
12、oomBZvarchar50否桌臺備注RoomQTvarchar50否桌臺其他信息GuestNamevarchar50否顧客姓名zhangdanDatevarchar50否開臺時(shí)間Numint4否顧客人數(shù)WaiterNamevarchar50否操作員姓名tb_User (用戶信息表)表tb_User用于保存所有系統(tǒng)用戶信息,該表結(jié)構(gòu)如表5所示表5用戶信息表字段名數(shù)據(jù)類型長 度主 鍵描 述IDint4是系統(tǒng)編號UserNamevarchar50否用戶登錄名UserPwdvarchar50否用戶登錄密他powerchar10否用戶權(quán)限tb_Waiter (職員信息表)表tb_Waiter用于保存所
13、有職員信息,該表結(jié)構(gòu)如表 6所示表6 職員信息表字段名數(shù)據(jù)類型長 度主 鍵描 述IDint4是系統(tǒng)編號WaiterNamevarchar50否職員姓名CardNumvarchar50否身份證號碼WaiterNumchar10否職員編號Sexchar10否性別Agechar10否年齡Telvarchar50否電話3.9 文件夾組織結(jié)構(gòu)每個(gè)項(xiàng)目都會(huì)有相應(yīng)的文件夾組織結(jié)構(gòu),如果項(xiàng)目中窗體數(shù)量很多,可以將 所有的窗體及資源放在不同的文件夾中。 如果項(xiàng)目中窗體不是很多,可以將圖片、 公共類或者程序資源文件放在相應(yīng)的文件夾中,而窗體可以直接放在項(xiàng)目根目錄下。餐飲管理系統(tǒng)就是按照后者的文件夾組織結(jié)構(gòu)排列的,
14、如圖 14所示。- J «r:7 ',畦等屋忖空件主,*引用 411弓I用文怦具-1函4皿金其樊文林臭* J KBCi-nfti cvJ 3 J- 3 3 3333333533333h b ,-»£ aT,r-l- 一 , d * PtU 一西Mot事槍文件累-和才座才懺客田山一田河靖聾* £.,圻.用將InE? c 融盛厚目前LrriFL 11曦口25. CX. ,日歷W理Irn K e 上仲芫皆驛/ 仃一感趕h且.限frfltff ci 一郡瑾匡萬營酎dji C <鼻座窗WELick ci-ttt£硒號而SrniLaciiL
15、e系用器蒙界面fa ftfl&lih_ e 1 手住H田悌fr*£>p e. ,1 frtlFq & Ct 幃曲花和fr麗tl祖PS言理一前受量闌firn it Ci幗工艮Pry im . n 手其主程序文件項(xiàng)目文件夾組織結(jié)構(gòu)4登錄模塊設(shè)計(jì)4.1 登錄模塊概述為了使系統(tǒng)的安全性得到保障,大多數(shù)系統(tǒng)都開發(fā)登錄模塊。只有通過登錄模塊,才能對登錄用戶進(jìn)行驗(yàn)證,只有系統(tǒng)的合法用戶才可以進(jìn)入系統(tǒng)的主界面。這也是設(shè)計(jì)管理系統(tǒng)軟件之前必須考慮的問題,整個(gè)登錄模塊的實(shí)現(xiàn)過程非常簡單,相信讀者會(huì)很快掌握。登錄模塊運(yùn)行結(jié)果如圖15所示。下載后可編輯復(fù)制圖6.15登錄噗走運(yùn)行結(jié)其4.
16、2 登錄模塊技術(shù)分析運(yùn)行本系統(tǒng)的登錄模塊,用戶只需輸入用戶名和密碼,單擊“登錄”按鈕進(jìn) 行驗(yàn)證。登錄模塊以登錄的用戶名和密碼作為搜索條件,在數(shù)據(jù)庫中進(jìn)行查詢。使用SqlDataReader對象的HasRowS!性判斷登錄用戶名和密碼是否正確,下面 介紹 SqlDataReader 對象的 HasRowSW性。HasRowSS 性獲取一個(gè)值,該值指示SqlDataReader是否包含一行或多行。語法如下:public override bool HasRows get; 屬性值:如果SqlDataReader包含一行或多行,則為true ;否則為false 。例如,驗(yàn)證登錄用戶名和密碼是否正確,
17、可以通過以下代碼實(shí)現(xiàn):SqlConnection conn = BaseClass.DBConn.CyCon();conn.Open();SqlCommand cmd = new SqlCommand("select * from tb_User whereUserName='" + txtName.Text + "' and UserPwd='" + txtPwd.Text + "'",conn);SqlDataReader sdr = cmd.ExecuteReader();sdr.Read();i
18、f (sdr.HasRows)MessageBox.Show("登 錄成 功","警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);登錄模塊驗(yàn)證的方法有很多,除了本章登錄模塊的驗(yàn)證方法外,還可以使用 第2章登錄模塊的驗(yàn)證方法,第2章是通過COUN聚合函數(shù)進(jìn)行驗(yàn)證的,具體參 看第2章登錄模塊設(shè)計(jì)中的內(nèi)容。4.3 登錄模塊實(shí)現(xiàn)過程本模塊使用的數(shù)據(jù)表:tb_User登錄模塊的具體實(shí)現(xiàn)步驟如下:(1)新建一個(gè) Windows窗體,命名為frmLogin.cs ,主要用于實(shí)現(xiàn)系統(tǒng)的登錄功能。該窗體用到的主要控件如
19、表 7所示表7登錄窗體用到的主要控件字段名控件ID主要屬性設(shè)置用 途1 txtName無輸入登錄用戶名txtPwdPasswordChar 屬性設(shè)輸入登錄用戶密*碼,史IbtnSubmitText屬性設(shè)置為“登登錄錄”btnConcelText屬性設(shè)置為“取消”取消(2)由于餐飲系統(tǒng)使用 Microsoft SQL Server 2000 作為后臺數(shù)據(jù)庫,因此 先要引用命名空間,以便在程序中操作數(shù)據(jù)庫。關(guān)鍵代碼如下:using System.Data.SqlClient(3)單擊“登錄”按鈕之后,登錄模塊首先判斷是否輸入了用戶名和密碼,如果沒有輸入用戶名和密碼將彈出提示框,提示用戶輸入登錄系統(tǒng)
20、的用戶名和密碼;如果輸入了用戶名和密碼,系統(tǒng)將判斷輸入的用戶名和密碼是否正確。關(guān)鍵 代碼如下:例程 01 代碼位置:光盤 TM 06 MrCy frmLogin.csprivate void btnSubmit_Click(object sender, EventArgs e)if (txtName.Text = "") / 判斷用戶名是否為空MessageBox.Show”青輸入用戶名","警告",MessageBoxButtons.OK,MessageBoxIcon.Warning); else判斷密碼是否為空if (txtPwd.Text
21、 = "") /MessageBox.Show("請輸入密碼","警告",MessageBoxButtons.OK, Messan.Warning);elseSqlConnection conn = BaseClass.DBConn.CyCon(); /連接數(shù)據(jù)庫conn.Open(); / 打開數(shù)據(jù)庫SqlCommand cmd= new SqlCommand("select * from tb_User where UserName='" + txtName.Text + "' and
22、 UserPwd='" + txtPwd.Text + "'", conn);SqlDataReader sdr = cmd.ExecuteReader(); / 創(chuàng)建SqlDataReader 對象sdr.Read(); 讀取if (sdr.HasRows) /驗(yàn)證用戶名和密碼sdr.Close();cmd = new SqlCommand("select * from tb_User where UserName='" + txtName.Text + "'", conn);SqlData
23、Reader sdr1 = cmd.ExecuteReader();sdr1.Read();string UserPower = sdr1"power".ToString().Trim();conn.Close(); 關(guān)閉鏈接frmMain main = new frmMain();main.power = UserPower;main.Names = txtName.Text;main.Times = DateTime.Now.ToShortDateString();main.Show(); /打開主窗體this.Hide(); 隱藏當(dāng)前登錄窗體elseMessageBo
24、x.Show("用戶名或密碼錯(cuò)誤");/彈出提示信息(4)當(dāng)輸入用戶名和密碼之后,還可以按Enter鍵登錄系統(tǒng),實(shí)現(xiàn)的原理是: 在輸入密碼的文本框的KeyPress事件下,判斷是否按了 Enter鍵,如果按了 Enter 鍵就會(huì)激發(fā)“登錄”按鈕的 Click事件。關(guān)鍵代碼如下:例程 02 代碼位置:光盤 TM 06 MrCy frmLogin.csprivate void txtPwd_KeyPress(object sender, KeyPressEventArgs e) if (e.KeyChar = 13)/判斷是否按下 Enter 鍵btnSubmit_Click(
25、sender, e); 調(diào)用“登錄”按鈕的 Click 事件 (5)單擊“取消”按鈕,退出系統(tǒng)登錄。關(guān)鍵代碼如下:例程 03 代碼位置:光盤 TM 06 MrCy frmLogin.csprivate void btnConcel_Click(object sender, EventArgs e) if (MessageBox.Show("確定 退出系 統(tǒng)嗎?","提 示",MessageBoxButtons.OKCancel, Messan.Asterisk) = Dialog Result.OK)Application.Exit();/退出系統(tǒng) 5主
26、窗體模塊設(shè)計(jì)5.1 主窗體模塊概述在餐飲系統(tǒng)中主窗體模塊是由3部分組成的。第一部分是位于主窗體模塊上端的系統(tǒng)菜單,主要實(shí)現(xiàn)鏈接系統(tǒng)功能菜單。第二部分是位于主窗體模塊中間的桌臺顯示,主要用于顯示餐廳中所有的桌臺情況,包括桌臺是否已使用、已使用桌臺的客人數(shù)量等信息,方便了用戶對桌臺的管理。第三部分是位于主窗體模塊下端的狀態(tài)欄,主要用于顯示系統(tǒng)當(dāng)前狀態(tài)信息。主窗體模塊運(yùn)行結(jié)果如圖 16所示。7 «tnrw幣顯 3大f電1切心IXT。犬仔-Xi?-«尢牙洵病病鶴而I%師的«r-£«!EEBHU3/A*曰鼻田&-Bdl-Wam-utliF”誨*1
27、 Fl標(biāo)約IT j imj;'而jjx法事國6.16主面片賓聯(lián)運(yùn)笆結(jié)果雙擊某個(gè)桌臺,彈出“桌臺基本信息”窗體,用于顯示此桌臺的詳細(xì)信息,如圖17所示。在某個(gè)桌臺上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中用戶可以選擇 “開臺”、“取 消開臺”、“點(diǎn)/加菜”、“消費(fèi)查詢”和“結(jié)賬”命令,如圖18所示。量6.17顯示桌各詳細(xì)信息圖幻X每個(gè)桌臺的右健英單5.2 主窗體模塊技術(shù)分析開發(fā)主窗體模塊中的桌臺顯示時(shí),主要是通過ListView 控件實(shí)現(xiàn)的,系統(tǒng)首 先從數(shù)據(jù)庫中檢索出每個(gè)桌臺的狀態(tài),然后根據(jù)不同的狀態(tài)通過ListView 控件的Items屬性中的Add方法向控件中添加項(xiàng)目集合,下面進(jìn)行詳細(xì)介紹。
28、(1) Items 屬性功能:此屬性獲取包含控件中所有項(xiàng)的集合。語法如下:public ListViewItemCollection Items get; 屬性值:ListView.ListViewItemCollection包含 ListView 控件中所有的項(xiàng)。例如:private void button9_Click(object sender, EventArgs e)SqlConnectioncon=newSqlConnection("server=.;uid=sa;pwd=;database=zhy");/鏈接數(shù)據(jù)庫con.Open(); /打開數(shù)據(jù)庫strin
29、g str = "select * from student where id= '"+strid+"'" /建立SQL語句SqlCommand com = new SqlCommand(str, con); / 執(zhí)行 SQLiS句SqlDataReader dr = com.ExecuteReader();/ 創(chuàng)建 SqlDataReader 對象while (dr.Read()ListViewItemlt=newListViewItem(dr.GetValue(0).ToString();lt.SubItems.Add(dr.GetV
30、alue(1).ToString();lt.SubItems.Add(dr.GetValue(2).ToString();this.listView1.Items.Add(lt); 添加項(xiàng)目dr.Close();con.Close();(2) Add方法功能:將項(xiàng)添加到具有指定文本和圖像的集合。語法如下:public virtual ListViewItem Add (string text,int imageIndex)參數(shù)說明:text :項(xiàng)的文本。imageindex:要為該項(xiàng)顯示的圖像的索引。返回值:已添加到集合中的 ListViewItem 。例如,在本模塊中向控件中添加項(xiàng)集合。關(guān)鍵
31、代碼如下:lvDesk.Items.Add(sdr"RoomName".ToString(), 1);另外,在桌臺顯示中使用 ContextMenuStrip控件實(shí)現(xiàn)右鍵彈出菜單。ContextMenuStrip控件提供了與某個(gè)控件關(guān)聯(lián)的快捷菜單,如圖 19所示1網(wǎng)整ContextenuStrip亙 t電nswi °ITj TKlS4iFiiCMht wrwS 6J9 ContextM enuStrip 控伴其使用方法如下:(1)雙擊工具欄中的 ContextMenuStrip控件將其添加到Form窗體中。(2)為ContextMenuStrip控件添加菜單項(xiàng)。(
32、3)設(shè)置控件或窗體的ContextMenu屬性為contextMenuStripl,運(yùn)行程序, 在窗體或者控件上單擊鼠標(biāo)右鍵,將出現(xiàn)相應(yīng)的右鍵菜單。5.3 主窗體實(shí)現(xiàn)過程本模塊使用的數(shù)據(jù)表:tb_Room tb_Waiter、tb_User主窗體模塊的具體實(shí)現(xiàn)步驟如下:(1)新建一個(gè) Windows窗體,命名為frmMain.cs ,主要用于實(shí)現(xiàn)系統(tǒng)的菜單欄、桌臺顯示和顯示系統(tǒng)狀態(tài)的功能。該窗體用到的主要控件如表8所示表8主窗體中用到的主要控件字段名控件ID主要屬性設(shè)置用 途Meil心LripmenuStrip1Items屬性中添加7個(gè)MenuItem 項(xiàng)實(shí)現(xiàn)窗體中的菜單j_ StitusSt
33、ripstatusStrip1Items屬性中添加8個(gè)StatusLabel 項(xiàng)實(shí)現(xiàn)系統(tǒng)的狀態(tài)欄LmaLirStimageList1Images屬性中添加兩個(gè)成員顯示代表桌 臺狀態(tài)的圖 片軍ipcontextMenuStrip1Items屬性中添加5個(gè)MenuItem 項(xiàng)實(shí)現(xiàn)右鍵菜單時(shí)看 ListYisrlvDesk無顯示所有桌臺(2)首先創(chuàng)建4個(gè)公共變量,方便程序調(diào)用。關(guān)鍵代碼如下:例程 04 代碼位置:光盤 TM 06 MrCy frmMain.cspublic SqlDataReader sdr;public string power;public string Names;public
34、 string Times;(3)在窗體加載時(shí),首先判斷登錄用戶的權(quán)限,根據(jù)登錄用戶的權(quán)限分配不同的功能。關(guān)鍵代碼如下:例程 05 代碼位置:光盤 TM 06 MrCy frmMain.cs private void frmMain_Load(object sender, EventArgs e)switch (power)超級管理員"break;經(jīng)理";break;一般用戶"break;/權(quán)限為0時(shí),說明用戶是超級管理員case "0": toolStripStatusLabel5.Text ="/權(quán)限為1時(shí),說明用戶是經(jīng)理case
35、 "1": toolStripStatusLabel5.Text ="/權(quán)限為2時(shí),說明用戶是一般用戶case "2": toolStripStatusLabel5.Text ="toolStripStatusLabel2.Text = Names; /在狀態(tài)欄中顯示登錄用戶身份toolStripStatusLabel8.Text = Times; /將登錄時(shí)間顯示在狀態(tài)欄中if (power = "2") 系統(tǒng)維護(hù) ToolStripMenuItem.Enabled = false; / 屏蔽“系統(tǒng)維護(hù)” 功能基
36、礎(chǔ)信息 ToolStripMenuItem.Enabled = false; /屏蔽“基礎(chǔ)信息”功能if (power = "1")系統(tǒng)維護(hù) ToolStripMenuItem.Enabled = false;/ 屏蔽“系統(tǒng)維護(hù)”功能代碼貼士此處通過switch語句獲取登錄用戶的權(quán)限。登錄用戶是一般用戶時(shí),系統(tǒng)通過此段代碼限制系統(tǒng)的“系統(tǒng)維護(hù)”和“基 礎(chǔ)信息”功能。登錄用戶是經(jīng)理時(shí),系統(tǒng)通過代碼限制了系統(tǒng)的“系統(tǒng)維護(hù)”功能。(4)當(dāng)窗體焦點(diǎn)被激發(fā)時(shí),系統(tǒng)從數(shù)據(jù)庫中檢索出所有桌臺的狀態(tài)信息,然后調(diào)用自定義的AddItems方法為ListView 控件添加項(xiàng)目。關(guān)鍵代碼如下:例
37、程 06 代碼位置:光盤 TM 06 MrCy frmMain.csprivate void frmMain_Activated(object sender, EventArgs e)lvDesk.Items.Clear(); 清空 ListBox 控件SqlConnection conn = BaseClass.DBConn.CyCon(); / 連接數(shù)據(jù)庫conn.Open(); / 打開數(shù)據(jù)庫SqlCommand cmd = new SqlCommand("select * from tb_Room", conn);sdr = cmd.ExecuteReader();
38、while (sdr.Read() string zt = sdr"RoomZT".ToString().Trim(); II取出每個(gè)桌臺當(dāng)前狀態(tài)Addltems(zt); 添加桌臺 conn.Close(); II斷開連接 自定義的AddItems方法,根據(jù)不同的狀態(tài)為 ListView 添加不同的圖片,方 便用戶判斷某個(gè)桌臺是否已經(jīng)被使用。關(guān)鍵代碼如下:例程 07 代碼位置:光盤 TM 06 MrCy frmMain.cs private void AddItems(string rzt) if (rzt =" 使用") 如果狀態(tài)是“使用”則添加索引
39、為1的圖片lvDesk.Items.Add(sdr"RoomName".ToString(), 1);else II否則添加索引為0的圖片 lvDesk.Items.Add(sdr"RoomName".ToString(), 0);(5)選擇主窗體模塊菜單欄中的“基礎(chǔ)信息” / “桌臺信息”命令,打開顯示所有桌臺信息的窗體,如圖20所示。關(guān)鍵代碼如下:例程 08 代碼位置:光盤 TM 06 MrCy frmMain.csprivate void 桌臺信 息 ToolStripMenuItem_Click_1(object sender, EventArg
40、s e)frmDesk desk = new frmDesk();desk.ShowDialog();(6)選擇主窗體模塊菜單欄中的“基礎(chǔ)信息”/ “職員信息”命令,打開顯示所有職員信息的窗體,如圖21所示。關(guān)鍵代碼如下:堂&2】注顯培總例程 09 代碼位置:光盤 TM 06 MrCy frmMain.csprivate void 職員信 息 ToolStripMenuItem_Click(object sender,EventArgs e)frmUser users = new frmUser();users.ShowDialog();(7)選擇主窗體模塊菜單欄中的“系統(tǒng)維護(hù)” 理用
41、戶權(quán)限的窗體,如圖22所示。/ “權(quán)限管理”命令,打開管5 6.22毛盧松居管理關(guān)鍵代碼如下:例程 10 代碼位置:光盤 TM 06 MrCy frmMain.csprivate void 權(quán) 限管理 ToolStripMenuItem_Click(object sender,EventArgs e)frmQxGl qx = new frmQxGl();qx.ShowDialog();(8)選擇主窗體模塊菜單欄中的“系統(tǒng)維護(hù)”/ “系統(tǒng)備份”命令,打開備份系統(tǒng)數(shù)據(jù)庫的窗體,如圖23所示。圖23備份數(shù)據(jù)庫關(guān)鍵代碼如下:例程 11 代碼位置:光盤 TM 06 MrCy frmMain.cspriv
42、ate void 系統(tǒng)備份 ToolStripMenuItem_Click(object sender,EventArgs e)frmBF bf = new frmBF();bf.ShowDialog();(9)選擇主窗體模塊菜單欄中的“系統(tǒng)維護(hù)”/ “系統(tǒng)恢復(fù)”命令,打開恢復(fù)系統(tǒng)數(shù)據(jù)庫的窗體,如圖24所示。關(guān)鍵代碼如下:例程 12 代碼位置:光盤 TM 06 MrCy frmMain.csprivatevoid 系統(tǒng)恢復(fù) ToolStripMenuItem_Click(object sender,EventArgs e)frmHF hf = new frmHF();hf.ShowDialog
43、();(10)選擇主窗體模塊菜單欄中的“系統(tǒng)設(shè)置” / “口令設(shè)置”命令,打開修改用戶密碼的窗體,如圖25所示。圖6.25密碼修改關(guān)鍵代碼如下:例程 13 代碼位置:光盤 TM 06 MrCy frmMain.csprivate void 口 令設(shè)置 ToolStripMenuItem_Click(object sender, EventArgs e)frmPwd pwd = new frmPwd();s = Names;pwd.ShowDialog();(11)選擇主窗體模塊菜單欄中的“系統(tǒng)設(shè)置”/ “鎖定系統(tǒng)”命令,打開鎖定當(dāng)前系統(tǒng)的窗體,如圖26所示。圖6.26鎖定系疣界
44、面關(guān)鍵代碼如下:例程 14 代碼位置:光盤 TM 06 MrCy frmMain.csprivate void 鎖定系統(tǒng) ToolStripMenuItem_Click(object sender, EventArgs e)frmLock locksystem = new frmLock();locksystem.Owner=this;locksystem.ShowDialog();(12)當(dāng)用戶右擊某個(gè)桌臺時(shí),系統(tǒng)會(huì)根據(jù)該桌臺當(dāng)前的狀態(tài),彈出不同的右鍵菜單。關(guān)鍵代碼如下:例程 15 代碼位置:光盤 TM 06 MrCy frmMain.csprivate void lvDesk_Click(
45、object sender, EventArgs e)/獲取選中桌臺的名稱string names = lvDesk.SelectedItems0.SubItems0.Text;SqlConnection conn = BaseClass.DBConn.CyCon(); /連接數(shù)據(jù)庫conn.Open();/打開數(shù)據(jù)庫SqlCommand cmd = new SqlCommand("select * from tb_Room where RoomName='" + names + "'", conn);SqlDataReader sdr
46、= cmd.ExecuteReader();sdr.Read();string zt = sdr"RoomZT".ToString().Trim(); /獲取桌臺狀態(tài)sdr.Close();/如果桌臺正在使用當(dāng)中,則屏蔽右鍵菜單中的“開臺”命令if (zt =" 使用")this.contextMenuStrip1.Items0.Enabled = false;this.contextMenuStrip1.Items1.Enabled = true;this.contextMenuStrip1.Items3.Enabled = true;this.con
47、textMenuStrip1.Items5.Enabled = true;this.contextMenuStrip1.Items6.Enabled = true;/如果桌臺為“待用”狀態(tài),則屏蔽除“開臺”命令以外的所有命令if (zt =" 待用")this.contextMenuStrip1.Items0.Enabled = true;this.contextMenuStrip1.Items1.Enabled = false;this.contextMenuStrip1.Items3.Enabled = false;this.contextMenuStrip1.Item
48、s5.Enabled = false;this.contextMenuStrip1.Items6.Enabled = false;conn.Close();/關(guān)閉數(shù)據(jù)庫連接(13)下面介紹主窗體模塊中的右鍵菜單中的所有命令,詳細(xì)介紹如下。當(dāng)在某個(gè)桌臺上單擊鼠標(biāo)右鍵時(shí),在彈出的快捷菜單中選擇“開臺”命令,就可以打開“開臺單”窗體對該桌臺進(jìn)行開臺處理。關(guān)鍵代碼如下:例程 16 代碼位置:光盤 TM 06 MrCy frmMain.csprivate void 開臺 ToolStripMenuItem_Click(object sender, EventArgs e)if (lvDesk.Selec
49、tedItems.Count != 0) /判斷是否有選中項(xiàng)/獲取桌臺的名稱 string names = lvDesk.SelectedItems0.SubItems0.Text;frmOpen openroom = new frmOpen(); = names; 將桌臺名稱賦值給公共變量 nameopenroom.ShowDialog();/ 打開“開臺單”窗體 elseMessageBox.Show("請選擇桌臺");/ 彈出提示信息當(dāng)在某個(gè)桌臺上單擊鼠標(biāo)右鍵時(shí),在彈出的快捷菜單中選擇“取消開臺”命令,可以取消該桌臺的開臺狀態(tài)。關(guān)鍵代碼如下:
50、例程 17 代碼位置:光盤 TM 06 MrCy frmMain.csprivate void 取消開臺 toolStripMenuItem_Click(object sender, EventArgs e)if (lvDesk.SelectedItems.Count != 0) /判斷是否有選中項(xiàng)/獲取桌臺名稱string names = lvDesk.SelectedItems0.SubItems0.Text;SqlConnection conn = BaseClass.DBConn.CyCon(); /打開數(shù)據(jù)庫連接conn.Open();SqlCommand cmd = new Sql
51、Command("update tb_Room set RoomZT=' 待用',Num=0 where RoomName='" + names + "”', conn);cmd.ExecuteNonQuery();cmd = newSqlCommand("delete from tb_GuestFood where zhuotai='" + names + "”', conn);cmd.ExecuteNonQuery();conn.Close(); /斷開數(shù)據(jù)庫連接frmMain_Ac
52、tivated(sender, e);elseMessageBox.Show("請選擇桌臺");/ 彈出提示當(dāng)在某個(gè)桌臺上單擊鼠標(biāo)右鍵時(shí),在彈出的快捷菜單中選擇“點(diǎn)/加菜”命令, 可以打開“點(diǎn)/加菜”窗體,為顧客點(diǎn)菜或加菜。關(guān)鍵代碼如下:例程 18 代碼位置:光盤 TM 06 MrCy frmMain.csprivate void 點(diǎn)菜 ToolStripMenuItem_Click(object sender, EventArgs e)if (lvDesk.SelectedItems.Count != 0) /判斷是否有選中項(xiàng)/獲取桌臺名稱string names = l
53、vDesk.SelectedItems0.SubItems0.Text;frmDC dc = new frmDC();dc.RName = names; /將桌臺名稱賦值給公共變量 RNamedc.ShowDialog(); else MessageBox.Show(" 請選擇桌臺");/彈出提示當(dāng)在某個(gè)桌臺上單擊鼠標(biāo)右鍵時(shí),在彈出的快捷菜單中選擇“消費(fèi)查詢”命 令,可以對指定桌臺的消費(fèi)情況進(jìn)行查詢。關(guān)鍵代碼如下:例程 19 代碼位置:光盤 TM 06 MrCy frmMain.csprivate void 消費(fèi)查詢 ToolStripMenuItem_Click(obje
54、ct sender, EventArgs e)if (lvDesk.SelectedItems.Count != 0) /判斷是否有選中項(xiàng)/獲取桌臺名稱string names = lvDesk.SelectedItems0.SubItems0.Text;frmSerch serch = new frmSerch();serch.RName = names; / 將桌臺名稱賦值給公共變量 RNameserch.ShowDialog();else MessageBox.Show("請選擇桌臺");彈出提示5.4 單元測試主窗體模塊開發(fā)完畢后,進(jìn)行單元測試。經(jīng)過對此模塊單元測試發(fā)現(xiàn),在用戶右鍵單擊桌臺以外的空白處,也會(huì)彈出右鍵菜單,如圖 27所示。圖6.27 桌自以外空白處的右謎菜單并且選中右鍵菜單的某個(gè)命令后會(huì)提示出錯(cuò),如圖28所示。為了解決這個(gè)錯(cuò)誤,用到了 ListView控件的SelectedItems屬性,在餐飲管 理系統(tǒng)的右鍵菜單的代碼中首先判斷是否存在選中項(xiàng),如果存在選中項(xiàng)則執(zhí)行右鍵菜單中的命令,以右鍵菜單中的“開臺”命令為例,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四川省達(dá)州市普通高中2025屆高三下學(xué)期3月摸底生物試題含解析
- 晉城市重點(diǎn)中學(xué)2024-2025學(xué)年5月中考二模生物試題含解析
- 工程項(xiàng)目合同范例匯編
- 版?zhèn)€人借款續(xù)期還款合同
- 創(chuàng)業(yè)公司借款合同范本
- 統(tǒng)編版三年級語文下冊第一次月考測試卷(含答案)
- 遼寧省沈陽市大東區(qū)2018-2019學(xué)年八年級上學(xué)期期末考試物理試題【含答案】
- 版醫(yī)療器械購銷合作協(xié)議
- 認(rèn)籌登記合同細(xì)則
- 初中數(shù)學(xué)冪的乘除-冪的乘方教學(xué)設(shè)計(jì)+2024-2025學(xué)年北師大版數(shù)學(xué)七年級下冊
- 廣東省2024-2025學(xué)年佛山市普通高中教學(xué)質(zhì)量檢測物理試卷及答案(二)高三試卷(佛山二模)
- 【9數(shù)一模】2025年安徽合肥市第四十五中學(xué)九年級中考一模數(shù)學(xué)試卷(含答案)
- 2024年安徽馬鞍山技師學(xué)院專任教師招聘真題
- 電網(wǎng)工程設(shè)備材料信息參考價(jià)(2024年第四季度)
- DB42T2305-2024高品質(zhì)住宅技術(shù)標(biāo)準(zhǔn)
- 2024年浙江省中考社會(huì)試卷真題(含標(biāo)準(zhǔn)答案及評分標(biāo)準(zhǔn))
- 國有企業(yè)采購管理規(guī)范 T/CFLP 0027-2020
- 江蘇省無錫市新吳區(qū)2023-2024學(xué)年八年級下學(xué)期期中考試數(shù)學(xué)試題
- 2023年(第九屆)全國大學(xué)生統(tǒng)計(jì)建模大賽 論文模板及說明
- 黑龍江省哈爾濱市恒泰石材有限公司(擴(kuò)大區(qū))建筑用凝灰?guī)r
- 創(chuàng)意綜藝風(fēng)脫口秀活動(dòng)策劃PPT模板
評論
0/150
提交評論