JAVA連接數(shù)據(jù)庫酒店管理系統(tǒng)_第1頁
JAVA連接數(shù)據(jù)庫酒店管理系統(tǒng)_第2頁
JAVA連接數(shù)據(jù)庫酒店管理系統(tǒng)_第3頁
JAVA連接數(shù)據(jù)庫酒店管理系統(tǒng)_第4頁
JAVA連接數(shù)據(jù)庫酒店管理系統(tǒng)_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、酒店管理系統(tǒng)設(shè)計(jì)湖南文理學(xué)院芙蓉學(xué)院數(shù)據(jù)庫原理及應(yīng)用課程設(shè)計(jì)報(bào)告題目:酒店管理系統(tǒng)學(xué)生姓名:羅杰學(xué)號(hào): 13250110 專業(yè)班級(jí):網(wǎng)絡(luò)工程1301班同組姓名:冷迅、何易升指導(dǎo)教師:王興柱設(shè)計(jì)時(shí)間: 2015年上學(xué)期第18周指導(dǎo)老師意見:評(píng)定成績(jī): 簽名: 日期:目錄一、需求分析 . . . . 3二、系統(tǒng)運(yùn)行環(huán)境 . . 3三、功能需求描述 . .3四、模塊結(jié)構(gòu)圖 . 4五、數(shù)據(jù)庫設(shè)計(jì) . 45.1數(shù)據(jù)庫分析 . 45.2數(shù)據(jù)庫概念設(shè)計(jì) . . 45.3 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì) . . 55.4數(shù)據(jù)庫字典 . 7六、程序模塊設(shè)計(jì) . 66.1功能模塊設(shè)計(jì). 96.2界面設(shè)計(jì) . 106.3程序運(yùn)

2、行. 11七、模塊的實(shí)現(xiàn).127.1 JDBC數(shù)據(jù)庫連接部分 .137.2 開臺(tái)、點(diǎn)餐功能的實(shí)現(xiàn) .157.3 結(jié)賬功能的實(shí)現(xiàn) .19八、總結(jié) . 22一、需求分析隨著餐飲行業(yè)的迅速發(fā)展現(xiàn)有的人工管理方式已經(jīng)不能滿足管理者的需求,廣大餐飲業(yè)經(jīng)營(yíng)者已經(jīng)意識(shí)到使用計(jì)算機(jī)應(yīng)用軟件的重要性,決定在餐飲企業(yè)的經(jīng)營(yíng)管理上引入計(jì)算機(jī)應(yīng)用軟件管理系統(tǒng)。酒店管理系統(tǒng)的大致功能:1.開臺(tái)點(diǎn)餐2.自動(dòng)結(jié)賬3.菜品管理4.后臺(tái)菜系菜品管理5.日月年結(jié)賬報(bào)表6.用戶設(shè)置本系統(tǒng)采用的語言(1)本系統(tǒng)采用Java語言,Java是目前使用最為廣泛的計(jì)算機(jī)語言之一。它具有簡(jiǎn)單面向?qū)ο?、穩(wěn)定、與平臺(tái)無關(guān)等特點(diǎn)。說他簡(jiǎn)單并不是說這

3、門語言很干癟、而是一種清楚更容易理解的方式實(shí)現(xiàn)程序。面向?qū)ο笫腔趯?duì)象的變成更符合人的思維方式使人們更容易編寫程序。(2)本系統(tǒng)還采用SQL語言SQL Server具有許多顯著優(yōu)點(diǎn)、易用性、適合分布組織的可伸縮性、用于決策支持的數(shù)據(jù)倉庫功能、與許多其他服務(wù)器軟件緊密關(guān)聯(lián)的集成性、良好的性價(jià)比等。(3)本系統(tǒng)有效的利用Java和SQL的優(yōu)點(diǎn)。二、系統(tǒng)運(yùn)行環(huán)境操作系統(tǒng)為Windows 8、windows 7或windows XP使用的集成開發(fā)工具Eclipse 數(shù)據(jù)庫采用SQL Server2005項(xiàng)目運(yùn)行環(huán)境為JDK 8。三、功能需求描述1開臺(tái)簽單工作區(qū)的功能:主要功能有開臺(tái)、點(diǎn)菜、加菜、簽單、

4、查看開臺(tái)信息和簽單信息。2.自動(dòng)結(jié)賬工作區(qū)的功能:一個(gè)功能是自動(dòng)計(jì)算當(dāng)前選中餐臺(tái)的消費(fèi)金額,另一個(gè)功能是在結(jié)賬時(shí)自動(dòng)計(jì)算找零金額。3.結(jié)賬報(bào)表工作區(qū)功能:日結(jié)帳報(bào)表、月結(jié)賬報(bào)表、年結(jié)賬報(bào)表。4.后天管理工作區(qū)功能:管理添加信息。四、模塊結(jié)構(gòu)圖模塊結(jié)構(gòu)圖五、數(shù)據(jù)庫設(shè)計(jì)5.1數(shù)據(jù)庫分析酒店管理系統(tǒng)的需求包括開臺(tái)點(diǎn)菜功能、智能化獲取菜品功能、自動(dòng)結(jié)賬功能、營(yíng)業(yè)額報(bào)表功能等。主要涉及的數(shù)據(jù)表包括臺(tái)號(hào)表、菜品表、消費(fèi)單表,為了使系統(tǒng)更加的完善還需要為菜品分類,即需要用到菜系表;為了實(shí)現(xiàn)菜品的日銷售情況統(tǒng)計(jì),還要建立一個(gè)消費(fèi)項(xiàng)目表,用來記錄消費(fèi)單消費(fèi)的菜品。5.2數(shù)據(jù)庫概念設(shè)計(jì)數(shù)據(jù)庫設(shè)計(jì)是系統(tǒng)設(shè)計(jì)過程中的

5、重要組成部分,它是通酒店管理程序設(shè)計(jì),通過管理系統(tǒng)的整天需求而制定的,數(shù)據(jù)庫設(shè)計(jì)的好壞直接影響到系統(tǒng)的后期開發(fā)。5.3 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì)(1)餐臺(tái)和菜系在本系統(tǒng)中的最簡(jiǎn)單的實(shí)體,在本系統(tǒng)中用來描述餐臺(tái)信息的只有臺(tái)號(hào)和座位數(shù),而描述菜系的主要是名稱。餐臺(tái)信息表(tb_desk)和菜系信息表(tb_sort)的E-R圖如下。餐臺(tái)狀態(tài)臺(tái)號(hào)座位號(hào)餐臺(tái)信息表的E-R圖菜系名稱狀態(tài)序號(hào)菜系信息表的E-R圖(2)在描述菜品實(shí)體時(shí)加入了助記碼,目的是為了實(shí)現(xiàn)智能化獲取菜品功能。通過這一功能,系統(tǒng)操作員可以快速的獲取顧客所點(diǎn)的菜品信息。菜品信息表(tb_menu)的E-R圖如圖所示。菜品編號(hào)助記碼碼系屬菜系名

6、稱狀態(tài)單價(jià)單位菜品信息表的E-R圖(3)消費(fèi)單信息表(tb_order_form)用來記錄每次消費(fèi)的相關(guān)信息,例如消費(fèi)時(shí)使用的餐臺(tái)、時(shí)間、金額等。消費(fèi)單信息表的E-R圖如圖所示。消費(fèi)單操作用戶消費(fèi)時(shí)間消費(fèi)金額消費(fèi)臺(tái)號(hào)編號(hào)消費(fèi)信息表的E-R圖消費(fèi)項(xiàng)目(4)消費(fèi)項(xiàng)目信息表(tb_order_item)用來記錄每個(gè)消費(fèi)單消費(fèi)的菜品,記錄的主要信息有所屬消費(fèi)單、消費(fèi)菜品、消費(fèi)數(shù)量、消費(fèi)額。消費(fèi)項(xiàng)目信息表E-R圖如圖所示。所屬消費(fèi)單編號(hào)消費(fèi)數(shù)量消費(fèi)菜品消費(fèi)額消費(fèi)項(xiàng)目信息表的E-R圖(5)管理員信息表(tb_manager)用來記錄系統(tǒng)的管理員的賬號(hào)、密碼、權(quán)限等信息。管理員信息表E-R圖如圖所示。管理員

7、初始化系統(tǒng)權(quán)限系統(tǒng)維修權(quán)限銷售統(tǒng)計(jì)權(quán)限人員管理權(quán)限編號(hào)用戶名密碼管理員信息表的E-R圖(6)員工信息表(tb_record)用來記錄職工的信息,編號(hào)、姓名、性別、出生日期、地址等等。職工信息表E-R圖如圖所示。員工信息地址出生日期碼身份證號(hào)狀態(tài)編號(hào)員工姓名性別員工信息表的E-R圖5.4數(shù)據(jù)庫字典5.4.1.餐臺(tái)信息表表名tb_desk序號(hào)字段名數(shù)據(jù)類型約束備注1numvarchar(6)非空臺(tái)號(hào)2seatingint非空座位數(shù)3statechar(4)非空狀態(tài)5.4.2.管理員表表名tb.manager序號(hào)字段名數(shù)據(jù)類型約束備注1idint非空編號(hào)2record_numchar(9)非空用戶名

8、3passwordvarchar(20)非空登陸密碼4purview_systemchar(2)允許空系統(tǒng)維修權(quán)限5purview_sellchar(2)允許空銷售統(tǒng)計(jì)權(quán)限6purview_personnelchar(2)允許空人員管理權(quán)限7purview_initchar(2)允許空初始化系統(tǒng)權(quán)限5.4.3.菜品信息表表名tb.menu序號(hào)字段名數(shù)據(jù)類型約束備注1numchar(9)非空編號(hào)2sort_idint非空所屬菜系3namevarchar(20)非空名稱4codevarchar(10)非空主機(jī)名5unitvarchar(4)非空單位6unit_priceint非空單價(jià)7statec

9、har(4)非空狀態(tài)5.4.4.消費(fèi)單信息表表名tb_order_form序號(hào)字段名數(shù)據(jù)類型約束備注1numchar(11)非空編號(hào)2Desk_numvarchar(6)非空消費(fèi)餐臺(tái)3Consume_datedatetime非空消費(fèi)時(shí)間4expenditureint非空消費(fèi)金額5Record_numchar(9)非空操作用戶5.4.5.消費(fèi)項(xiàng)目信息表表名tb_order_item序號(hào)字段名數(shù)據(jù)類型約束備注1idint非空編號(hào)2Order_form_numchar(11)非空所屬消費(fèi)單3Menu_numchar(9)非空消費(fèi)菜品4amountint非空消費(fèi)數(shù)量5totalint非空消費(fèi)額5.4.

10、6.員工表表名tb_record序號(hào)字段名數(shù)據(jù)類型約束備注1numchar(9)非空編號(hào)2namevarchar(8)非空員工姓名3sexchar(2)非空性別4birthdaydatetime非空出生日期5Id_cardvarchar(20)非空身份證號(hào)6addressvarchar(100)非空地址7statechar(4)非空狀態(tài)5.4.7.菜系信息表表名th.sort序號(hào)字段名數(shù)據(jù)類型約束備注1idint非空序號(hào)2namevarchar(20)非空名稱3statechar(4)非空狀態(tài)六、程序模塊設(shè)計(jì)6.1功能模塊設(shè)計(jì):6.2界面設(shè)計(jì):登入界面設(shè)計(jì)管理員界面設(shè)計(jì)6.3程序運(yùn)行:登入界面

11、管理界面管理員界面七、模塊的實(shí)現(xiàn)7.1 JDBC數(shù)據(jù)庫連接部分packagecom.mwq.dao;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;public class JDBC private static final String DRIVERCLASS = com.microsoft.sqlserver.jdbc.SQLServerDriver;private static final String URL = jdbc:sqlserver:/localhost:14

12、33;DatabaseName=db_DrinkeryManage;private static final String USERNAME = luojie;private static final String PASSWORD = 123456;private static final ThreadLocalthreadLocal = new ThreadLocal();static / 在靜態(tài)代碼塊中加載數(shù)據(jù)庫驅(qū)動(dòng)try Class.forName(DRIVERCLASS).newInstance();/ 加載數(shù)據(jù)庫驅(qū)動(dòng) catch (Exception e) System.out.p

13、rintln(數(shù)據(jù)庫連接不成功);e.printStackTrace();public static Connection getConnection() / 創(chuàng)建數(shù)據(jù)庫連接的方法System.out.println(數(shù)據(jù)庫連接成功);Connection conn = threadLocal.get();/ 從線程中獲得數(shù)據(jù)庫連接if (conn = null) / 沒有可用的數(shù)據(jù)庫連接try conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);/ 創(chuàng)建新的數(shù)據(jù)庫連接threadLocal.set(conn);/ 將數(shù)據(jù)庫連

14、接保存到線程中 catch (SQLException e) e.printStackTrace();return conn;/ 返回?cái)?shù)據(jù)庫連接public static booleancloseConnection() / 關(guān)閉數(shù)據(jù)庫連接的方法booleanisClosed = true;/ 默認(rèn)關(guān)閉成功Connection conn = threadLocal.get();/ 從線程中獲得數(shù)據(jù)庫連接if (conn != null) / 數(shù)據(jù)庫連接可用threadLocal.set(null);/ 清空線程中的數(shù)據(jù)庫連接try conn.close();/ 關(guān)閉數(shù)據(jù)庫連接 catch (S

15、QLException e) isClosed = false;/ 關(guān)閉失敗e.printStackTrace();return isClosed;/ 返回關(guān)閉結(jié)果7.2 開臺(tái)點(diǎn)餐功能的實(shí)現(xiàn)7.2.1 臺(tái)號(hào)選擇框的創(chuàng)建numComboBox = newJComboBox(); / 創(chuàng)建臺(tái)號(hào)選擇框numComboBox.setNextFocusableComponent(codeTextField); / 設(shè)置下一個(gè)將要獲得焦點(diǎn)的組件initNumComboBox(); / 初始化臺(tái)號(hào)選擇框numComboBox.addActionListener(newActionListener() pub

16、licvoidactionPerformed(ActionEvent e) introwCount = rightTable.getRowCount(); / 獲得已開臺(tái)數(shù)if (rowCount = 0) / 沒有開臺(tái)return; / 不執(zhí)行任何操作Object selectedDeskNum = numComboBox.getSelectedItem(); / 獲得“臺(tái)號(hào)”選擇框中的選中項(xiàng)intneedSelectedRow = -1; / 默認(rèn)選中的臺(tái)號(hào)未開臺(tái)for (int row = 0; row rowCount; row+) / 查看選中的臺(tái)號(hào)是否已經(jīng)開臺(tái)if (selecte

17、dDeskNum.equals(rightTable.getValueAt(row, 1) / 已經(jīng)開臺(tái)needSelectedRow = row; / 保存其在“開臺(tái)列表” 中的所在行break; / 跳出循環(huán)if (needSelectedRow = -1) / 選中的臺(tái)號(hào)尚未開臺(tái),即將要開臺(tái)rightTable.clearSelection(); / 取消選擇“開臺(tái)列表”中的選中行l(wèi)eftTableDataV.removeAllElements(); / 清空“簽單列表”中的所有行l(wèi)eftTableModel.setDataVector(leftTableDataV,leftTableC

18、olumnV); / 刷新“簽單列表”表格模型的數(shù)據(jù) else / 選中的臺(tái)號(hào)已經(jīng)開臺(tái),即將要添加消費(fèi)項(xiàng)目rightTable.setRowSelectionInterval(needSelectedRow);/ 在“開臺(tái)列表”中選中該臺(tái)號(hào)leftTableDataV.removeAllElements(); / 清空“簽單列表”中的現(xiàn)有項(xiàng)目leftTableDataV.addAll(itemOfDeskV.get(needSelectedRow); / 向“簽單列表”添加新選中餐臺(tái)的消費(fèi)項(xiàng)目leftTableModel.setDataVector(leftTableDataV,leftTab

19、leColumnV); / 刷新“簽單列表”表格模型的數(shù)據(jù)leftTable.setRowSelectionInterval(0); / 選中“簽單列表”中的第一行);7.2.2開單功能的實(shí)現(xiàn)finalJButtonaddButton = newMButton();addButton.setIcon(newImageIcon(TipWizardFrame.class.getResource(/img/main_add.png);addButton.setRolloverIcon(newImageIcon(TipWizardFrame.class.getResource(/img/main_ad

20、d_on.png);addButton.addActionListener(newActionListener() publicvoidactionPerformed(ActionEvent e) makeOutAnInvoice();codeTextField.requestFocus(););orderDishesButtonPanel.add(addButton);orderDishesPanel.add(numComboBox);7.2.3簽單功能的實(shí)現(xiàn)finalJButtonsubButton = newMButton();/ 創(chuàng)建按鈕subButton.setIcon(newIma

21、geIcon(getClass().getResource(/img/main_sub.png);/ 按鈕默認(rèn)時(shí)顯示的圖片subButton.setRolloverIcon(newImageIcon(getClass().getResource(/img/main_sub_on.png);/ 光標(biāo)移入時(shí)顯示的圖片subButton.addActionListener(newActionListener() publicvoidactionPerformed(ActionEvent e) intselectedRow = rightTable.getSelectedRow();/ 獲得“開臺(tái)列表

22、”中的選中行if (selectedRow= 0; row-) leftTable.setValueAt(, row, 0);/ 簽單 else / 為已簽單項(xiàng)目,即為新添加菜品簽單for (int row = lastRowIndex; row = 0; row-) if (leftTable.getValueAt(row, 0).equals(NEW)/ 為未簽單項(xiàng)目leftTable.setValueAt(, row, 0);/ 簽單else/ 為已簽單項(xiàng)目,即為新添加菜品簽單完成break;);orderDishesButtonPanel.add(subButton);7.3 結(jié)賬功能

23、的實(shí)現(xiàn)finalJButtoncheckOutButton = newJButton();checkOutButton.setText(結(jié) 賬);checkOutButton.addActionListener(newActionListener() publicvoidactionPerformed(ActionEvent e) intselectedRow = rightTable.getSelectedRow();if (selectedRow 0) / 未選中任何餐臺(tái)JOptionPane.showMessageDialog(null, 請(qǐng)選擇要結(jié)賬的餐臺(tái)!, 友情提示,JOption

24、Pane.INFORMATION_MESSAGE);/ 彈出提示return;introwCount = leftTable.getRowCount();/ 獲得結(jié)賬餐臺(tái)的點(diǎn)菜數(shù)量if (leftTable.getValueAt(rowCount - 1, 0).equals(NEW) / 存在未簽單菜品JOptionPane.showMessageDialog(null, 請(qǐng)先確定未簽單商品的處理方式!,友情提示, JOptionPane.INFORMATION_MESSAGE);/ 彈出提示return;int expenditure = Integer.valueOf(expenditu

25、reTextField.getText();/ 獲得消費(fèi)金額intrealWages = Integer.valueOf(realWagesTextField.getText();/ 獲得實(shí)收金額if (realWages expenditure) / 查看實(shí)收金額是否小于消費(fèi)金額if (realWages = 0)/ 未輸入實(shí)收金額JOptionPane.showMessageDialog(null, 請(qǐng)輸入實(shí)收金額!, 友情提示,JOptionPane.INFORMATION_MESSAGE);/ 彈出提示else/ 實(shí)收金額小于消費(fèi)金額JOptionPane.showMessageDia

26、log(null, 實(shí)收金額不能小于消費(fèi)金額!,友情提示, JOptionPane.INFORMATION_MESSAGE);/ 彈出提示realWagesTextField.requestFocus();/ 為“實(shí)收金額”文本框請(qǐng)求獲得焦點(diǎn)return;changeTextField.setText(realWages - expenditure) + );/ 計(jì)算并設(shè)置“找零金額”String orderFormData = getNum(),rightTable.getValueAt(selectedRow, 1).toString(),Today.getDate() + + right

27、Table.getValueAt(selectedRow, 2),expenditureTextField.getText(),TipWizardFrame.this.managerV.get(0).toString() ;/ 組織消費(fèi)單信息dao.iOrderForm(orderFormData);/ 持久化到數(shù)據(jù)庫String orderItemData = new String4;/ 用來存儲(chǔ)消費(fèi)項(xiàng)目信息orderItemData0 = dao.sOrderFormOfMaxId();/ 獲得消費(fèi)單編號(hào)for (int row = 0; row rowCount; row+) / 通過循

28、環(huán)持久化消費(fèi)項(xiàng)目信息orderItemData1 = leftTable.getValueAt(row, 2).toString();/ 獲得菜品編號(hào)orderItemData2 = leftTable.getValueAt(row, 5).toString();/ 獲得菜品數(shù)量orderItemData3 = leftTable.getValueAt(row, 7).toString();/ 獲得菜品消費(fèi)金額dao.iOrderItem(orderItemData);/ 持久化到數(shù)據(jù)庫JOptionPane.showMessageDialog(null, rightTable.getValueAt(selectedRow, 1)+ 結(jié)賬完成!, 友情提示, JOptionPane.INFORMATION_MESSAGE);/ 彈出提示/rightTableModel.removeRow(selectedRow);/ 從“開臺(tái)列表”中移除結(jié)賬餐臺(tái)leftTableDataV.removeAllElements();/ 清空“簽單列表”leftTableModel.setDataVector(lef

溫馨提示

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