版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 數據庫課程設計報告(餐飲管理系統(tǒng))系 別電子信息系專業(yè)名稱計算機科學與技術班級學號*學生姓名*指導教師*成 績 2011年 7 月 1 日 電子信息系數據庫課程設計(報告) 第 1 頁1 概述隨著人民生活水平的提高,越來越多的人到餐館里就餐,使得餐飲業(yè)有了更多的發(fā)展機會,但同時餐飲業(yè)的競爭也在不斷的加劇。要想在競爭激烈的市場上立于不敗之地,好的管理是必不可少的。加強管理不能只重視人為因素,技術因素也是非常重要的,好的管理方法如果引入了先進的技術手段,即引入計算機技術會使管理走上一個新的臺階。目前,餐飲業(yè)發(fā)展迅速,各類管理系統(tǒng)應用而生。有針對大飯店、大酒店的酒店管理系統(tǒng),這類系統(tǒng)的開發(fā)已經非常
2、成熟。然而,為數眾多的小餐飲企業(yè)卻沒有一個合適的管理系統(tǒng),因此開發(fā)此類管理系統(tǒng)是十分必要的。1.1 設計題目及實現(xiàn)目標設計題目:基于c#語言windows窗體界面的餐飲管理系統(tǒng);實現(xiàn)目標: (1)系統(tǒng)采用人機交互的方式,界面美觀友好,信息查詢方便,數據存儲安全; (2)實現(xiàn)對餐飲顧客開臺、點菜、賬目查詢和結賬等操作; (3)對數據輸入的數據進行數據檢驗,盡可能的避免人為錯誤; (4)對消費賬目進行自動結算; (5)實現(xiàn)對消費的歷史記錄進行查詢; (6)系統(tǒng)應最大限度的實現(xiàn)以維護性和易操作性。1.2 開發(fā)環(huán)境簡介開發(fā)ide:microsoft visual studio 2010;開發(fā)語言:c#
3、.net;數據庫:sql server 2008;開發(fā)環(huán)境:windows 7;開發(fā)周期:10天;開發(fā)人數:4人。2 需求分析2.1 系統(tǒng)功能描述從顧客角度來看,能實現(xiàn)即時點菜、結賬、取消開臺等功能;從管理員角度可實現(xiàn)即時營業(yè)情況,記錄員工信息、桌臺信息、菜單信息并實現(xiàn)增刪改等基本信息功能;不同的用戶有不同的權限,系統(tǒng)管理員有所有的功能權限,經理擁有除系統(tǒng)維護功能以外的所有功能權限,一般用戶只能對查看餐館運行情況,客戶點菜結賬等基本功能,但不可以看菜單基本信息和人員基本信息等。2.2 系統(tǒng)功能結構描述餐飲管理系統(tǒng)屬于c/s模式的系統(tǒng),其功能結構圖如圖1所示:圖1 餐飲管理系統(tǒng)功能結構圖系統(tǒng)功能
4、介紹:(1)在進入系統(tǒng)時,根據用戶輸入的內容判斷用戶的合法身份。合法用戶分為普通用戶,經理和系統(tǒng)管理員,其中系統(tǒng)用戶擁有所有的權限,經理擁有系統(tǒng)維護以外的所有權限,普通用戶擁有輔助工具、系統(tǒng)設置、退出、開臺、點菜、結賬等權限;(2)桌臺信息管理可以進行桌臺的增加、刪除、修改和查詢;(3)職員信息管理可以進行職員的增加、刪除、修改和查詢;(4)菜品信息管理可以進行菜品的增加、刪除、修改和查詢;(5)輔助工具可對記事本、日歷、計算器進行調用,方便快捷;(6)系統(tǒng)維護是系統(tǒng)管理員所擁有的功能,可以對其它用戶的權限進行賦值,并可進行系統(tǒng)維護和系統(tǒng)備份;(7)系統(tǒng)設置下的密碼修改可以方便用戶對自己密碼的
5、重置,系統(tǒng)鎖定可以對當前的系統(tǒng)進行鎖定,使系統(tǒng)不能進行其它操作;(8)點擊桌面上的圖標,可以對桌臺進行開臺、點菜、取消開臺、消費查詢、結賬等操作,采用圖形化界面,方便、直觀;(9)界面友好,并實時給予用戶操作提示。3 數據庫邏輯結構設計本餐飲管理系統(tǒng)涉及到的表有:系統(tǒng)用戶表,用于保存所有用戶信息;職員表,用于保存所有職員信息;菜品表,用于保存餐館所有菜品的信息;桌臺表,用于保存餐館中所有桌臺的信息;顧客消費信息表,用于保存顧客消費的信息以便于消費查詢和結賬??偣灿?張表,根據業(yè)務和用戶需求各個系統(tǒng)用例的不同,表格各不相同,下面是本系統(tǒng)數據庫的詳細設計。3.1數據庫e-r圖 圖2 用于登錄信息表
6、e-r圖 圖3 菜譜信息表e-r圖圖4 服務員信息表e-r圖圖5 桌臺信息表e-r圖、圖6 消費信息表e-r圖圖7 數據庫cmdb關系圖3.2 數據庫邏輯設計根據設計好的e-r圖在數據庫中創(chuàng)建各表,系統(tǒng)數據庫中各個表的結構如下:表1 用戶登錄信息表(users)字段名數據類型長度主鍵是否可以為空說明user_idvarchar50是否用戶名user_pwdvarchar50否否用戶登錄密碼user_powerchar10否否用戶權限表2 菜譜信息表(foods)字段名數據類型長度主鍵是否可以為空說明food_idvarchar50是否菜品編號food_namevarchar50否是菜品名稱fo
7、od_pricedecimal9否是食品價格food_typechar10否是食品類別表3 服務員信息表(waiters)字段名數據類型長度主鍵是否可以為空說明waiter_idvarchar50是否服務員編號waiter_namevarchar50否是服務員姓名waiter_sexchar10否是服務員性別waiter_agechar10否是服務員年齡waiter_cardvarchar50否是身份證號waiter_telvarchar50否是服務員電話waiter_salarydecimal9否是服務員薪水表4 桌臺信息表(tables)字段名數據類型長度主鍵是否可以為空說明table_i
8、dvarchar50是否桌臺編號table_namevarchar50否是桌臺名稱table_roomchar10否是桌臺位置table_statuschar10否是桌臺狀態(tài)table_typechar10否是桌臺類型table_bjfdecimal9否是包間費table_personint10否是顧客人數table_startvarchar50否是開餐時間table_remarkvarchar50否是桌臺備注表5 顧客消費信息表(consume)字段名數據類型長度主鍵是否可以為空說明idint4是否消費流水號food_idvarchar50否是食品編號food_numchar10否是消費數量
9、food_allpricedecimal9否是食品價格table_idvarchar50否是消費桌臺waiter_idvarchar50否是服務員號datevarchar50否是消費日期remarkvarchar50否是備注其中,前4張表是系統(tǒng)中的實體表,表5是消費表,其id為消費流水號,由系統(tǒng)自動生成,用作表的主鍵,這樣可以避免不同顧客的消費號重復。表2,3,4的主鍵分別分別用作表5消費表的外鍵,用于關聯(lián)與顧客消費相關的信息。4 程序核心代碼及控件描述由于餐飲管理系統(tǒng)對數據庫的訪問比較頻繁,為此,設計一個公共類databaselink.cs,用于建立對數據的連接,當其它模塊需要對數據庫訪問時
10、,調用此模塊,這樣可以減小程序的代碼量,使程序的可移植性更加良好。代碼如下: class databaselink public static sqlconnection dataconn() string str = server=localhost;uid=sa;pwd=0000;database=cmdb; sqlconnection sqlconn = new sqlconnection(str); return sqlconn; 4.1用戶登錄模塊設計為了使系統(tǒng)的安全性得到保障,登錄模塊是必不可少的,只有系統(tǒng)的合法用戶才能登錄系統(tǒng)。并且在用戶登錄時其身份和權限也被驗證和。本系統(tǒng)的登錄
11、模塊只需輸入用戶名和密碼,單擊【登錄】按鈕即可進行驗證。主要用到textbox和button控件,分別用于用戶名和密碼輸入,登錄和取消選擇。核心代碼: if (textboxpwd.text = ) messagebox.show(請輸入密碼, 警告, messageboxbuttons.ok, messageboxicon.warning); else /數據庫連接 sqlconnection conn = publicclass.databaselink.dataconn(); conn.open(); sqlcommand cmd = new sqlcommand(select coun
12、t(*) from users where user_id= + textboxusername.text + and user_pwd= + textboxpwd.text + ,conn); int i = convert.toint32(cmd.executescalar(); if (i 0) /用戶身份驗證,并驗證權限 cmd = new sqlcommand(select * from users where user_id= + textboxusername.text + , conn); sqldatareader sdr = cmd.executereader(); sdr
13、.read(); string userpower = sdruser_power.tostring().trim(); conn.close(); formmain main = new formmain(); main.power = userpower; main.names = this.textboxusername.text; main.times = datetime.now.toshortdatestring(); main.show(); this.hide(); else messagebox.show(用戶名或密碼錯誤!); 運行結果顯示:圖8 用戶登錄界面4.2基礎信息
14、模塊設計餐飲管理的基礎信息模塊,包括桌臺信息、職員信息和菜品信息,各個小模塊用到的知識點都是一樣的,主要功能是實現(xiàn)桌臺、職員和菜品的增刪改查功能。下面以職員信息的設計為例介紹此模塊的功能設計。此模塊主要用到button、textbox、combobox和datagridview控件。分別用于功能選擇,信息寫入顯示、信息選擇和總體信息顯示等功能。職員信息模塊核心代碼如下:(1) datagridview控件顯示核心代碼 private void binddata() /數據庫連接并讀取數據 sqlconnection conn = publicclass.databaselink.datacon
15、n(); sqldataadapter sda = new sqldataadapter(select waiter_id,waiter_name,waiter_sex,waiter_age,waiter_card,waiter_tel,waiter_salary from waiters order by waiter_id desc,conn); dataset ds = new dataset(); sda.fill(ds); datagridview1.datasource = ds.tables0; (2)執(zhí)行保存功能的核心代碼 private void button3_click(
16、object sender, eventargs e) int32 salary; /判斷工資輸入的合法性 if (int32.tryparse(textboxsalary.text, system.globalization.numberstyles.integer, system.globalization.numberformatinfo.currentinfo, out salary) sqlconnection conn = publicclass.databaselink.dataconn(); conn.open(); sqlcommand cmd = new sqlcomman
17、d(select count(*) from waiters where waiter_id= + textboxid.text + , conn); int i = convert.toint32(cmd.executescalar(); /如果數據庫中已存在此waiter_id的記錄,則修改 if (i 0) cmd = new sqlcommand(update waiters set waiter_id= + textboxid.text + ,waiter_name= + textboxname.text + ,waiter_sex= + comboboxsex.selectedit
18、em.tostring() + ,waiter_age= + textboxage.text + ,waiter_card= + textboxcard.text + ,waiter_tel= + textboxtel.text + ,waiter_salary= + salary + where waiter_id= + textboxid.text + , conn); cmd.executenonquery(); conn.close(); binddata(); else if (textboxid.text = ) messagebox.show(沒有填入數據!); else /如果
19、無此記錄,則刪除 cmd = new sqlcommand(insert into waiters(waiter_id,waiter_name,waiter_sex,waiter_age,waiter_card,waiter_tel,waiter_salary) values( + textboxid.text + , + textboxname.text + , + comboboxsex.selecteditem.tostring() + , + textboxage.text + , + textboxcard.text + , + textboxtel.text + , + textb
20、oxsalary.text + ), conn); cmd.executenonquery(); conn.close(); binddata(); else messagebox.show(工資必須為數字); (3)執(zhí)行刪除功能的核心代碼 private void button6_click(object sender, eventargs e) /數據庫連接 sqlconnection conn = publicclass.databaselink.dataconn(); conn.open(); /刪除數據 sqlcommand cmd = new sqlcommand(delete f
21、rom waiters where waiter_id=+datagridview1.selectedcells0.value.tostring()+,conn); cmd.executenonquery(); conn.close(); /刪除后列表顯示 binddata(); 運行結果顯示: 圖9 職員信息管理運行界面 圖10 桌臺管理運行界面圖11 菜品管理運行界面4.3輔助工具模塊設計輔助工具欄目中日歷主要用到monthcalendar控件,用于日歷的顯示。記事本和計算器則直接調用系統(tǒng)的這些功能。本部分沒有用到數據庫的知識,但在餐飲管理系統(tǒng)中起到了工具的作用,為操作者帶來了方便。核心代
22、碼如下: private void 日歷toolstripmenuitem_click(object sender, eventargs e) formcalender calender = new formcalender(); calender.showdialog(); private void 記事本toolstripmenuitem_click(object sender, eventargs e) system.diagnostics.process.start(notepad.exe); private void 計算器toolstripmenuitem_click(object
23、 sender, eventargs e) system.diagnostics.process.start(calc.exe); 運行結果顯示: 圖12 記事本和計算器顯示結果圖13 查看日歷運行界面4.4系統(tǒng)維護模塊設計系統(tǒng)維護模塊主要是系統(tǒng)管理能運用的功能,包括權限管理,系統(tǒng)備份和系統(tǒng)還原三個部分。對于權限管理模塊主要用到的控件是combobox其主要功能是對用戶選擇和對權限設置級別。對于系統(tǒng)備份和還原模塊用到的主要控件是textbox,并且設置為只讀屬性,其主要功能是數據庫名和備份還原路徑顯示。并且三個界面都用了button控件,用于控制選擇。其主要代碼如下:(1)系統(tǒng)權限管理主要代碼
24、: string userpower = ; switch(combobox2.selecteditem.tostring() case 超級管理員: userpower = 0; break; case 經理: userpower = 1; break; case 一般用戶: userpower = 2; break; sqlconnection conn = publicclass.databaselink.dataconn(); conn.open(); sqlcommand cmd = new sqlcommand(update users set user_power=+userpo
25、wer+where user_id=+combobox1.selecteditem.tostring()+,conn); cmd.executenonquery(); if(messagebox.show(權限修改成功,提示,messageboxbuttons.ok,messageboxicon.exclamation)=dialogresult.ok) this.close(); 界面顯示:圖14 權限管理運行界面(2)系統(tǒng)備份主要代碼: private void button1_click(object sender, eventargs e) try /備份路徑設置 string str
26、g = application.startuppath.tostring(); strg = strg.substring(0, strg.lastindexof(); strg = strg.substring(0, strg.lastindexof(); strg += data; string sqltext = backup database cmdb to disk=+strg+textboxpath.text.trim()+.bak+ with init; /數據庫連接并寫入 sqlconnection conn = publicclass.databaselink.datacon
27、n(); conn.open(); sqlcommand cmd = new sqlcommand(sqltext, conn); cmd.executenonquery(); conn.close(); if (messagebox.show(備份成功,提示,messageboxbuttons.ok,messageboxicon.exclamation) = dialogresult.ok) this.close(); catch (exception ex) messagebox.show(ex.message.tostring(); 運行結果顯示:圖15 數據庫備份運行界面(3)系統(tǒng)還原
28、模塊核心代碼: private void button1_click(object sender, eventargs e) try string str = use master restore database cmdb from disk= + textbox1.text.trim() + with replace; sqlconnection conn = publicclass.databaselink.dataconn(); conn.open(); sqlcommand cmd = new sqlcommand(str,conn); cmd.executenonquery();
29、if (messagebox.show(恢復成功,提示,messageboxbuttons.ok,messageboxicon.exclamation) = dialogresult.ok) this.close(); catch (exception ex) messagebox.show(ex.message.tostring(); 運行結果顯示:圖16 數據庫恢復模塊運行結果顯示4.5系統(tǒng)設置模塊設計餐飲管理系統(tǒng)的系統(tǒng)設置模塊主要功能是用戶可以對自己的密碼進行重置,并可以對自己正在使用的系統(tǒng)進行鎖定,當鎖定系統(tǒng)時,用戶不可以進行其它任何操作。從而增加了系統(tǒng)的安全性。其主要用到的控件有bu
30、tton和textbox,功能分別是事件確定和密碼輸入。其中對于系統(tǒng)鎖定窗口的formborderstyle屬性應設置為none,目的是不顯示窗體的邊框。密碼重置的核心代碼如下: private void button1_click(object sender, eventargs e) if (textboxpwd1.text = ) messagebox.show(請輸入密碼); textboxpwd1.focus(); else if (textboxpwd2.text != textboxpwd1.text) messagebox.show(兩次密碼不一致); textboxpwd2.
31、focus(); else sqlconnection conn = publicclass.databaselink.dataconn(); conn.open(); sqlcommand cmd = new sqlcommand(update users set user_pwd=+textboxpwd1.text+ where user_id=+names+,conn); cmd.executenonquery(); if (messagebox.show(密碼修改成功,提示,messageboxbuttons.ok,messageboxicon.asterisk) = dialogre
32、sult.ok) this.close(); 結果顯示:圖17 密碼修改頁面顯示系統(tǒng)鎖定解鎖的核心代碼:private void buttonunlock_click(object sender, eventargs e) sqlconnection conn = publicclass.databaselink.dataconn(); conn.open(); sqlcommand cmd = new sqlcommand(select count(*) from users where user_pwd=+textbox1.text.trim()+ and user_id=+owner+,
33、conn); int i = convert.toint32(cmd.executescalar(); if (i 0) this.close(); else if (messagebox.show(密碼錯誤,警告,messageboxbuttons.okcancel,messageboxicon.warning) = dialogresult.ok) textbox1.text = ; textbox1.focus(); 運行結果顯示:圖18 系統(tǒng)鎖定運行效果4.6開臺模塊設計當顧客要進行消費時,首先要看一下是否有可用的桌臺,這在主窗體的圖形化界面可以很容易的看出來。如果有空閑的桌臺,那么就
34、可以為顧客開臺,只有在開臺后才能為顧客點菜、查詢和結賬,所以開臺模塊在整個系統(tǒng)中非常重要。在某個桌臺上選擇其右鍵中的【開臺】命令。根據提示,輸入相應的開臺信息,如顧客人數和服務員等,然后【保存】,則開臺便完成了。其用到的主要控件有button、textbox、combobox和datetimepicker,分別用于功能選擇,信息錄入和服務員及選擇日期顯示等功能。其核心代碼如下: /窗口頁面加載 private void formopen_load(object sender, eventargs e) conn = publicclass.databaselink.dataconn(); co
35、nn.open(); sqlcommand cmd = new sqlcommand(select * from tables where table_name=+name+,conn); sqldatareader sdr = cmd.executereader(); while (sdr.read() textboxname.text = sdrtable_name.tostring().trim(); sdr.close(); cmd = new sqlcommand(select * from waiters,conn); sdr = cmd.executereader(); whil
36、e (sdr.read() comboboxwn.items.add(sdrwaiter_name.tostring().trim(); comboboxwn.selectedindex = 0; sdr.close(); private void buttonsave_click(object sender, eventargs e) if (textboxperson.text = | convert.toint32(textboxperson.text) = 0) messagebox.show(請輸入用餐人數!); else /消費信息寫入 string roomname = text
37、boxname.tostring(); sqlcommand cmd1 = new sqlcommand(update tables set table_guest=+textboxguest.text+,table_start=+datetimepicker1.value.tostring()+,table_person=+convert.toint32(textboxperson.text)+,table_status=使用 where table_name=+name+,conn); cmd1.executenonquery(); this.close(); 運行結果顯示:圖19 開臺模
38、塊運行顯示4.7點菜模塊設計當顧客選定好桌臺后,會根據顧客的需要點菜和點酒水飲料等食物。在點菜窗口中,會根據菜品的不同類別顯示餐廳里可以提供的食物,用戶可以對不同的食物進行選擇。系統(tǒng)的點菜模塊主要利用了treeview控件顯示所有的菜系,利用datagridview控件顯示顧客消費的所有信息,當單擊某個菜品時,右側將出現(xiàn)次食品的所有信息,選擇菜品后單擊“添加”按鈕完成添加食品的操作。6個textbox控件分別用于顯示餐廳所有菜品,顯示某個菜品的編號、名稱、單價、數量、點菜后的總價格和備注等信息。combox控件用于選擇服務員。三個button按鈕功能分別為保存、刪除和退出。模塊運行結果顯示:圖
39、20 點菜模塊運行顯示程序核心代碼:點菜界面加載核心代碼: /界面加載,顯示所有可以點的菜品 private void formdc_load(object sender, eventargs e) /采用樹形圖分類顯示,增加了點菜界面的直觀性 this.text = rname + 點/加菜; /根節(jié)點 treenode newnode1 = treeviewfood.nodes.add(鍋底); treenode newnode2 = treeviewfood.nodes.add(涼菜); treenode newnode3 = treeviewfood.nodes.add(熱菜); tr
40、eenode newnode4 = treeviewfood.nodes.add(酒水); treenode newnode5 = treeviewfood.nodes.add(主食); sqlconnection conn = publicclass.databaselink.dataconn(); conn.open(); sqlcommand cmd = new sqlcommand(select * from foods where food_type=1,conn); sqldatareader sdr = cmd.executereader(); while (sdr.read() newnode1.nodes.add(sdr1.tostring().trim(); sdr.close(); cmd = new sqlcommand(select * from foods where food_type=2, conn); sdr =
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年江蘇省中等職業(yè)學校學生學業(yè)水平考試機械CAD繪圖試卷(含5張圖)
- 2024屆襄樊市重點中學高三下學期第一次診斷性考試數學試題試卷
- 蝴蝶舞會小班課件
- 輪胎行業(yè)可行性報告
- 2024年蚌埠大客車從業(yè)資格證考試
- 2024年客運資格證考試實際操作試題答案
- 2024年安徽駕駛員客運從業(yè)資格證模擬考試題答案
- 2024年湖南駕駛員客運從業(yè)資格證考試題庫
- 2024年呼倫貝爾道路客運輸從業(yè)資格證培訓資料
- 2025屆湖南省湘西土家族苗族自治州高三生物第一學期期末達標檢測模擬試題含解析
- 函數的單調性與最值-完整課件
- s和m關系協(xié)議書
- 空分裝備安全檢查表
- 安全風險隱患排查表國家隱患排查導則版
- 停車場施工方案及技術措施范本
- 分居聲明告知書范本
- 【基于杜邦分析的企業(yè)財務現(xiàn)狀探究國內外文獻綜述5200字】
- 工程圖學(天津大學)智慧樹知到答案章節(jié)測試2023年
- 江蘇省民用建筑施工圖綠色設計專篇參考樣式2021年版
- GB/T 17853-2018不銹鋼藥芯焊絲
- 初中生離父母有多遠
評論
0/150
提交評論