版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、酒店管理系统设计湖南文理学院芙蓉学院数据库原理及应用 课程设计报告题 目: 酒店管理系统 学生姓名: 罗 杰 学 号: 13250110 专业班级: 网络工程1301班 同组姓名: 冷迅、何易升 指导教师: 王兴柱 设计时间: 2015年上学期第18周 指导老师意见:评定成绩: 签名: 日期:目录一、需求分析 . . . . 3二、系统运行环境 . . 3三、功能需求描述 . .3四、模块结构图 . 4五、数据库设计 . 45.1数据库分析 . 45.2数据库概念设计 . . 45.3 数据库逻辑结构设计 . . 55.4 数据库字典 . . . 7六、程序模块设计 . 66.1功能模块设计.
2、 . . 96.2界面设计 . . . . . 106.3程序运行. . . . 11七、模块的实现. . . . .127.1 JDBC数据库连接部分 . . . . . . . . . . . .137.2 开台、点餐功能的实现 . . . . . . . . . . .157.3 结账功能的实现 . . .19八、总结 . 22一、需求分析 随着餐饮行业的迅速发展现有的人工管理方式已经不能满足管理者的需求,广大餐饮业经营者已经意识到使用计算机应用软件的重要性,决定在餐饮企业的经营管理上引入计算机应用软件管理系统。酒店管理系统的大致功能:1.开台点餐2.自动结账3.菜品管理4.后台菜系菜品
3、管理5.日月年结账报表6.用户设置本系统采用的语言(1)本系统采用Java语言,Java是目前使用最为广泛的计算机语言之一。它具有简单面向对象、稳定、与平台无关等特点。说他简单并不是说这门语言很干瘪、而是一种清楚更容易理解的方式实现程序。面向对象是基于对象的变成更符合人的思维方式使人们更容易编写程序。(2)本系统还采用SQL语言SQL Server具有许多显著优点、易用性、适合分布组织的可伸缩性、用于决策支持的数据仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性价比等。(3)本系统有效的利用Java和SQL的优点。 二、系统运行环境 操作系统为Windows 8、windows 7或w
4、indows XP 使用的集成开发工具Eclipse 数据库采用SQL Server2008项目运行环境为JDK 8。 三、功能需求描述 1开台签单工作区的功能:主要功能有开台、点菜、加菜、签单、查看开台信息和签单信息。2.自动结账工作区的功能:一个功能是自动计算当前选中餐台的消费金额,另一个功能是在结账时自动计算找零金额。 3.结账报表工作区功能:日结帐报表、月结账报表、年结账报表。4.后天管理工作区功能:管理添加信息。四、模块结构图模块结构图五、数据库设计5.1数据库分析酒店管理系统的需求包括开台点菜功能、智能化获取菜品功能、自动结账功能、营业额报表功能等。主要涉及的数据表包括台号表、菜品
5、表、消费单表,为了使系统更加的完善还需要为菜品分类,即需要用到菜系表;为了实现菜品的日销售情况统计,还要建立一个消费项目表,用来记录消费单消费的菜品。 5.2数据库概念设计数据库设计是系统设计过程中的重要组成部分,它是通酒店管理程序设计,通过管理系统的整天需求而制定的,数据库设计的好坏直接影响到系统的后期开发。 5.3 数据库逻辑结构设计(1)餐台和菜系在本系统中的最简单的实体,在本系统中用来描述餐台信息的只有台号和座位数,而描述菜系的主要是名称。餐台信息表(tb_desk)和菜系信息表(tb_sort)的E-R图如下。餐台状态台号座位号餐台信息表的E-R图菜系名称状态序号菜系信息表的E-R图
6、(2)在描述菜品实体时加入了助记码,目的是为了实现智能化获取菜品功能。通过这一功能,系统操作员可以快速的获取顾客所点的菜品信息。菜品信息表(tb_menu)的E-R图如图所示。菜品编号助记码码系属菜系名称状态单价单位菜品信息表的E-R图(3)消费单信息表(tb_order_form)用来记录每次消费的相关信息,例如消费时使用的餐台、时间、金额等。消费单信息表的E-R图如图所示。消费单操作用户消费时间消费金额消费台号编号消费信息表的E-R图消费项目(4)消费项目信息表(tb_order_item)用来记录每个消费单消费的菜品,记录的主要信息有所属消费单、消费菜品、消费数量、消费额。消费项目信息表
7、E-R图如图所示。所属消费单编号消费数量消费菜品消费额消费项目信息表的E-R图(5)管理员信息表(tb_manager)用来记录系统的管理员的账号、密码、权限等信息。管理员信息表E-R图如图所示。管理员初始化系统权限系统维修权限销售统计权限人员管理权限编号用户名密码管理员信息表的E-R图(6)员工信息表(tb_record)用来记录职工的信息,编号、姓名、性别、出生日期、地址等等。职工信息表E-R图如图所示。员工信息地址出生日期码身份证号状态编号员工姓名性别员工信息表的E-R图5.4 数据库字典5.4.1.餐台信息表表名tb_desk序号字段名数据类型约束备注1numvarchar(6)非空台
8、号2seatingint非空座位数3statechar(4)非空状态5.4.2.管理员表表名tb.manager序号字段名数据类型约束备注1idint非空编号2record_numchar(9)非空用户名3passwordvarchar(20)非空登陆密码4purview_systemchar(2)允许空系统维修权限5purview_sellchar(2)允许空销售统计权限6purview_personnelchar(2)允许空人员管理权限7purview_initchar(2)允许空初始化系统权限5.4.3.菜品信息表表名tb.menu序号字段名数据类型约束备注1numchar(9)非空编号
9、2sort_idint非空所属菜系3namevarchar(20)非空名称4codevarchar(10)非空主机名5unitvarchar(4)非空单位6unit_priceint非空单价7statechar(4)非空状态5.4.4.消费单信息表表名tb_order_form序号字段名数据类型约束备注1numchar(11)非空编号2Desk_numvarchar(6)非空消费餐台3Consume_datedatetime非空消费时间4expenditureint非空消费金额5Record_numchar(9)非空操作用户5.4.5.消费项目信息表表名tb_order_item序号字段名数据
10、类型约束备注1idint非空编号2Order_form_numchar(11)非空所属消费单3Menu_numchar(9)非空消费菜品4amountint非空消费数量5totalint非空消费额5.4.6.员工表表名tb_record序号字段名数据类型约束备注1numchar(9)非空编号2namevarchar(8)非空员工姓名3sexchar(2)非空性别4birthdaydatetime非空出生日期5Id_cardvarchar(20)非空身份证号6addressvarchar(100)非空地址7statechar(4)非空状态5.4.7.菜系信息表表名th.sort序号字段名数据类型
11、约束备注1idint非空序号2namevarchar(20)非空名称3statechar(4)非空状态六、程序模块设计6.1功能模块设计:6.2界面设计:登入界面设计管理员界面设计6.3程序运行:登入界面管理界面管理员界面七、模块的实现7.1 JDBC数据库连接部分package com.mwq.dao;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class JDBC private static final String DRIVERCLASS = &
12、quot;com.microsoft.sqlserver.jdbc.SQLServerDriver"private static final String URL = "jdbc:sqlserver:/localhost:1433;DatabaseName=db_DrinkeryManage"private static final String USERNAME = "luojie"private static final String PASSWORD = "123456"private static final Thr
13、eadLocal<Connection> threadLocal = new ThreadLocal<Connection>();static / 在静态代码块中加载数据库驱动try Class.forName(DRIVERCLASS).newInstance();/ 加载数据库驱动 catch (Exception e) System.out.println("数据库连接不成功");e.printStackTrace();public static Connection getConnection() / 创建数据库连接的方法System.out.
14、println("数据库连接成功");Connection conn = threadLocal.get();/ 从线程中获得数据库连接if (conn = null) / 没有可用的数据库连接try conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);/ 创建新的数据库连接threadLocal.set(conn);/ 将数据库连接保存到线程中 catch (SQLException e) e.printStackTrace();return conn;/ 返回数据库连接public static boo
15、lean closeConnection() / 关闭数据库连接的方法boolean isClosed = true;/ 默认关闭成功Connection conn = threadLocal.get();/ 从线程中获得数据库连接if (conn != null) / 数据库连接可用threadLocal.set(null);/ 清空线程中的数据库连接try conn.close();/ 关闭数据库连接 catch (SQLException e) isClosed = false;/ 关闭失败e.printStackTrace();return isClosed;/ 返回关闭结果7.2 开
16、台点餐功能的实现7.2.1 台号选择框的创建numComboBox = new JComboBox(); / 创建台号选择框numComboBox.setNextFocusableComponent(codeTextField); / 设置下一个将要获得焦点的组件initNumComboBox(); / 初始化台号选择框numComboBox.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) int rowCount = rightTable.getRowCount(); / 获得
17、已开台数if (rowCount = 0) / 没有开台return; / 不执行任何操作Object selectedDeskNum = numComboBox.getSelectedItem(); / 获得“台号”选择框中的选中项int needSelectedRow = -1; / 默认选中的台号未开台for (int row = 0; row < rowCount; row+) / 查看选中的台号是否已经开台if (selectedDeskNum.equals(rightTable.getValueAt(row, 1) / 已经开台needSelectedRow = row; /
18、 保存其在“开台列表” 中的所在行break; / 跳出循环if (needSelectedRow = -1) / 选中的台号尚未开台,即将要开台rightTable.clearSelection(); / 取消选择“开台列表”中的选中行leftTableDataV.removeAllElements(); / 清空“签单列表”中的所有行leftTableModel.setDataVector(leftTableDataV,leftTableColumnV); / 刷新“签单列表”表格模型的数据 else / 选中的台号已经开台,即将要添加消费项目rightTable.setRowSelect
19、ionInterval(needSelectedRow);/ 在“开台列表”中选中该台号leftTableDataV.removeAllElements(); / 清空“签单列表”中的现有项目leftTableDataV.addAll(itemOfDeskV.get(needSelectedRow); / 向“签单列表”添加新选中餐台的消费项目leftTableModel.setDataVector(leftTableDataV,leftTableColumnV); / 刷新“签单列表”表格模型的数据leftTable.setRowSelectionInterval(0); / 选中“签单列表
20、”中的第一行);7.2.2开单功能的实现final JButton addButton = new MButton();addButton.setIcon(new ImageIcon(TipWizardFrame.class.getResource("/img/main_add.png");addButton.setRolloverIcon(new ImageIcon(TipWizardFrame.class.getResource("/img/main_add_on.png");addButton.addActionListener(new Actio
21、nListener() public void actionPerformed(ActionEvent e) makeOutAnInvoice();codeTextField.requestFocus(););orderDishesButtonPanel.add(addButton);orderDishesPanel.add(numComboBox);7.2.3签单功能的实现final JButton subButton = new MButton();/ 创建按钮subButton.setIcon(new ImageIcon(getClass().getResource("/img
22、/main_sub.png");/ 按钮默认时显示的图片subButton.setRolloverIcon(new ImageIcon(getClass().getResource("/img/main_sub_on.png");/ 光标移入时显示的图片subButton.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) int selectedRow = rightTable.getSelectedRow();/ 获得“开台列表”中的选中行if (s
23、electedRow < 0) / 未选中任何行JOptionPane.showMessageDialog(null, "请选择要签单的台号!", "友情提示",JOptionPane.INFORMATION_MESSAGE);return; else int lastRowIndex = leftTable.getRowCount() - 1;/ 获得最后一个消费项目的索引Object lastRowSign = leftTable.getValueAt(lastRowIndex, 0);/ 获得最后一个消费项目的标记if (lastRowSig
24、n.equals("NEW") / 为未签单项目Object firstRowSign = leftTable.getValueAt(0, 0);/ 获得第一个消费项目的标记if (firstRowSign.equals("NEW") / 为未签单项目,即为新开台签单for (int row = lastRowIndex; row >= 0; row-) leftTable.setValueAt("", row, 0);/ 签单 else / 为已签单项目,即为新添加菜品签单for (int row = lastRowIndex
25、; row >= 0; row-) if (leftTable.getValueAt(row, 0).equals("NEW")/ 为未签单项目leftTable.setValueAt("", row, 0);/ 签单else/ 为已签单项目,即为新添加菜品签单完成break;);orderDishesButtonPanel.add(subButton);7.3 结账功能的实现final JButton checkOutButton = new JButton();checkOutButton.setText("结 账");ch
26、eckOutButton.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) int selectedRow = rightTable.getSelectedRow();if (selectedRow < 0) / 未选中任何餐台JOptionPane.showMessageDialog(null, "请选择要结账的餐台!", "友情提示",JOptionPane.INFORMATION_MESSAGE);/ 弹出提示return;int
27、 rowCount = leftTable.getRowCount();/ 获得结账餐台的点菜数量if (leftTable.getValueAt(rowCount - 1, 0).equals("NEW") / 存在未签单菜品JOptionPane.showMessageDialog(null, "请先确定未签单商品的处理方式!","友情提示", JOptionPane.INFORMATION_MESSAGE);/ 弹出提示return;int expenditure = Integer.valueOf(expenditureTex
28、tField.getText();/ 获得消费金额int realWages = Integer.valueOf(realWagesTextField.getText();/ 获得实收金额if (realWages < expenditure) / 查看实收金额是否小于消费金额if (realWages = 0)/ 未输入实收金额JOptionPane.showMessageDialog(null, "请输入实收金额!", "友情提示",JOptionPane.INFORMATION_MESSAGE);/ 弹出提示else/ 实收金额小于消费金额J
29、OptionPane.showMessageDialog(null, "实收金额不能小于消费金额!","友情提示", JOptionPane.INFORMATION_MESSAGE);/ 弹出提示realWagesTextField.requestFocus();/ 为“实收金额”文本框请求获得焦点return;changeTextField.setText(realWages - expenditure) + "");/ 计算并设置“找零金额”String orderFormData = getNum(),rightTable.ge
30、tValueAt(selectedRow, 1).toString(),Today.getDate() + " "+ rightTable.getValueAt(selectedRow, 2),expenditureTextField.getText(),TipWizardFrame.this.managerV.get(0).toString() ;/ 组织消费单信息dao.iOrderForm(orderFormData);/ 持久化到数据库String orderItemData = new String4;/ 用来存储消费项目信息orderItemData0 = da
31、o.sOrderFormOfMaxId();/ 获得消费单编号for (int row = 0; row < rowCount; row+) / 通过循环持久化消费项目信息orderItemData1 = leftTable.getValueAt(row, 2).toString();/ 获得菜品编号orderItemData2 = leftTable.getValueAt(row, 5).toString();/ 获得菜品数量orderItemData3 = leftTable.getValueAt(row, 7).toString();/ 获得菜品消费金额dao.iOrderItem(orderItemData);/ 持久化到数据库JOptionPane.showMessageDialog(null, rightTable.getValueAt(selectedRow, 1)+ " 结账完成!", "友情提示", JOptionPane.INFORMATION_MESSAGE);/ 弹出提示/rightTableModel.removeRow(selectedRow);/ 从“开台列表”中移除结账餐台leftTableDat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026浙江温州桐君堂药材有限公司招聘营业员1人备考题库及完整答案详解(考点梳理)
- 2026浙江事业单位统考丽水市松阳县招聘39人备考题库含答案详解【考试直接用】
- 2026广东深圳市宝安区翻身实验学校(西校区)诚聘初中道法、高中历史教师2人备考题库带答案详解(a卷)
- 2026广东深圳市宝安区翻身实验学校(西校区)诚聘初中道法、高中历史教师2人备考题库附答案详解(综合题)
- 2026高校区域技术转移转化中心高端科学仪器深圳分中心招聘10人备考题库(第一批)附答案详解(轻巧夺冠)
- 2026广东惠州博罗县园洲镇九潭卫生院招聘编外工作人员1人备考题库含答案详解【培优b卷】
- 2026四川绵阳市长虹缤纷时代商业管理有限公司招聘招商营运主管岗位1人备考题库【研优卷】附答案详解
- 2026广东茂名信宜市朱砂镇旺沙卫生院招聘编外人员1人备考题库及答案详解(考点梳理)
- 2026江西省人力资源有限公司招聘生产服务一线人员16人备考题库【突破训练】附答案详解
- 2026陕西西安市西北工业大学材料学院高温功能材料团队招聘1人备考题库含答案详解【研优卷】
- 肺部真菌感染诊疗规范与临床实践
- 2025年贵州省高考物理试卷真题(含答案)
- 2026贵州省气象部门第二批公开招聘应届毕业生22人笔试备考试题及答案解析
- 昆明市公安局盘龙分局2026年第一批勤务辅警招聘(120人)笔试模拟试题及答案解析
- 医院感染预防护理培训课件
- 医护一体化业务查房制度
- 第2课 幸福生活是奋斗出来的 课件+视频-2025-2026学年道德与法治三年级下册统编版
- 2026年c语言考试题库100道【历年真题】
- 2025-2026学年统编版七年级道德与法治下册全册教案
- GB/T 18302-2026国旗升挂装置基本要求
- 2026年春季学期小学五年级下册信息科技(清华版·贵州)教学计划含进度表
评论
0/150
提交评论