酒店管理系统
更新时间:2024-01-09 18:11:01 阅读量: 教育文库 文档下载
酒店管理系统设计
湖南文理学院芙蓉学院
数据库原理及应用课程设计报告
题目:酒店管理系统 学生姓名: 学号:
专业班级:网络工程1301班 同组姓名: 指导教师:
设计时间: 2015年上学期第18周
指导老师意见: 评定成绩: 签名: 日期: 1页
酒店管理系统设计
目录
一、需求分析 .......................... ... ... ........... 3 二、系统运行环境 ................................. ........ 3 三、功能需求描述 ...................................... ...3 四、模块结构图 ........................................... 4 五、数据库设计 ........................................... 4 5.1数据库分析 ........................................ 4 5.2数据库概念设计 ...................... .............. 4 5.3 数据库逻辑结构设计 ................... ............ 5 5.4数据库字典 ......... ........... .................. 7 六、程序模块设计 ......................................... 6 6.1功能模块设计......... ........... .................. 9 6.2界面设计 ......... ... .............. .. ........... 10 6.3程序运行............... ........ ... ............. 11 七、模块的实现............ ........... ........... .. .....12 7.1 JDBC数据库连接部分 .. .. .. .. .. .. .. .. .. .. .. ..13 7.2 开台、点餐功能的实现 .. .. .. .. .. .. .. .. .. .. ..15 7.3 结账功能的实现 ........... ........... ...........19 八、总结 ................................................ 22
2页
酒店管理系统设计
一、需求分析
随着餐饮行业的迅速发展现有的人工管理方式已经不能满足管理者的需求,广大餐饮业经营者已经意识到使用计算机应用软件的重要性,决定在餐饮企业的经营管理上引入计算机应用软件管理系统。 酒店管理系统的大致功能:
1.开台点餐 2.自动结账 3.菜品管理
4.后台菜系菜品管理 5.日月年结账报表 6.用户设置 本系统采用的语言
(1)本系统采用Java语言,Java是目前使用最为广泛的计算机语言之一。它具有简单面向对象、稳定、与平台无关等特点。说他简单并不是说这门语言很干瘪、而是一种清楚更容易理解的方式实现程序。面向对象是基于对象的变成更符合人的思维方式使人们更容易编写程序。
(2)本系统还采用SQL语言SQL Server具有许多显著优点、易用性、适合分布组织的可伸缩性、用于决策支持的数据仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性价比等。
(3)本系统有效的利用Java和SQL的优点。
二、系统运行环境
操作系统为Windows 8、windows 7或windows XP 使用的集成开发工具Eclipse 数据库采用SQL Server2008项目运行环境为JDK 8。
三、功能需求描述
1开台签单工作区的功能:主要功能有开台、点菜、加菜、签单、查看开台
3页
酒店管理系统设计
信息和签单信息。
2.自动结账工作区的功能:一个功能是自动计算当前选中餐台的消费金额,另一个功能是在结账时自动计算找零金额。
3.结账报表工作区功能:日结帐报表、月结账报表、年结账报表。 4.后天管理工作区功能:管理添加信息。
四、模块结构图
模块结构图
五、数据库设计
5.1数据库分析
酒店管理系统的需求包括开台点菜功能、智能化获取菜品功能、自动结账功能、营业额报表功能等。主要涉及的数据表包括台号表、菜品表、消费单表,为了使系统更加的完善还需要为菜品分类,即需要用到菜系表;为了实现菜品的日销售情况统计,还要建立一个消费项目表,用来记录消费单消费的菜品。
5.2数据库概念设计
4页
酒店管理系统设计
数据库设计是系统设计过程中的重要组成部分,它是通酒店管理程序设计,通过管理系统的整天需求而制定的,数据库设计的好坏直接影响到系统的后期开发。
5.3 数据库逻辑结构设计
(1)餐台和菜系在本系统中的最简单的实体,在本系统中用来描述餐台信息的只有台号和座位数,而描述菜系的主要是名称。餐台信息表(tb_desk)和菜系信息表(tb_sort)的E-R图如下。
台号 座位号 状态 餐台 餐台信息表的E-R图
菜系信息表的E-R图
(2)在描述菜品实体时加入了助记码,目的是为了实现智能化获取菜品功能。通过这一功能,系统操作员可以快速的获取顾客所点的菜品信息。菜品信息表(tb_menu)的E-R图如图所示。
5页
菜系 序号 名称 状态
酒店管理系统设计
菜品 编号 系属菜系 名称 助记码 码 单位 单价 状态
菜品信息表的E-R图
(3)消费单信息表(tb_order_form)用来记录每次消费的相关信息,例如消费时使用的餐台、时间、金额等。消费单信息表的E-R图如图所示。
编号 消费台号 消费时间 消费金额 操作用户 消费单
消费信息表的E-R图
(4)消费项目信息表(tb_order_item)用来记录每个消费单消费的菜品,记录的主要信息有所属消费单、消费菜品、消费数量、消费额。消费项目信息表E-R图如图所示。 编号 所属消费单 消费菜品 消费数量 消费额 消费项目 消费项目信息表的E-R图
6页
酒店管理系统设计
(5)管理员信息表(tb_manager)用来记录系统的管理员的账号、密码、权限等信息。管理员信息表E-R图如图所示。
管理员 编号 用户名 密码 系统维修 权限
销售统计权限 人员管理权限 初始化系统权限 管理员信息表的E-R图
(6)员工信息表(tb_record)用来记录职工的信息,编号、姓名、性别、出生日期、地址等等。职工信息表E-R图如图所示。
员工信息 编号 员工姓名 性别 出生日期码 身份证号 地址 状态
员工信息表的E-R图
5.4 数据库字典
5.4.1.餐台信息表
表名 序号 1 2 3
7页
tb_desk 字段名 num seating state 数据类型 varchar(6) int char(4) 约束 非空 非空 非空 备注 台号 座位数 状态 酒店管理系统设计
5.4.2.管理员表 表名 序号 1 2 3 4 5 6 7 5.4.3.菜品信息表 表名 序号 1 2 3 4 5 6 7
5.4.4.消费单信息表
表名 序号 1 2 3 4 5 字段名 num Desk_num Consume_date expenditure Record_num tb_order_form 数据类型 char(11) varchar(6) datetime int char(9) 约束 非空 非空 非空 非空 非空 备注 编号 消费餐台 消费时间 消费金额 操作用户 字段名 num sort_id name code unit unit_price state char(9) int varchar(20) varchar(10) varchar(4) int char(4) tb.menu 数据类型 约束 非空 非空 非空 非空 非空 非空 非空 备注 编号 所属菜系 名称 主机名 单位 单价 状态 字段名 id record_num password purview_system purview_sell purview_personnel purview_init tb.manager 数据类型 int char(9) varchar(20) char(2) char(2) char(2) char(2) 约束 非空 非空 非空 允许空 允许空 允许空 允许空 备注 编号 用户名 登陆密码 系统维修权限 销售统计权限 人员管理权限 初始化系统权限 5.4.5.消费项目信息表 表名 序号 1 2 3 4 5
tb_order_item 字段名 id Order_form_num Menu_num amount total 数据类型 int char(11) char(9) int int 8页
约束 非空 非空 非空 非空 非空 备注 编号 所属消费单 消费菜品 消费数量 消费额 酒店管理系统设计
5.4.6.员工表 表名 序号 1 2 3 4 5 6 7
5.4.7.菜系信息表
表名 序号 1 2 3 字段名 id name state int varchar(20) char(4) th.sort 数据类型 约束 非空 非空 非空 备注 序号 名称 状态 字段名 num name sex birthday Id_card address state tb_record 数据类型 char(9) varchar(8) char(2) datetime varchar(20) varchar(100) char(4) 约束 非空 非空 非空 非空 非空 非空 非空 备注 编号 员工姓名 性别 出生日期 身份证号 地址 状态
六、程序模块设计
6.1功能模块设计:
管理员前台服务开始点菜添加菜单结账后台服务日销售统计结账报表月销售统计年销售统计系统安全管理员管理初始化系统台号管理菜系管理菜品管理修改密码档案管理
9页
酒店管理系统设计
6.2界面设计:
登入界面设计
管理员界面设计
10页
酒店管理系统设计
6.3程序运行:
登入界面
11页
酒店管理系统设计
管理界面
管理员界面
七、模块的实现
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
=
\
private
static
final
12页
String URL =
酒店管理系统设计
\
private static final ThreadLocal
ThreadLocal
public static Connection getConnection() {// 创建数据库连接的方法
System.out.println(\数据库连接成功\
Connection conn = threadLocal.get();// 从线程中获得数据库连接 if (conn == null) {// 没有可用的数据库连接
try {
conn
=
DriverManager.getConnection(URL,
USERNAME,
static {// 在静态代码块中加载数据库驱动 }
try {
Class.forName(DRIVERCLASS).newInstance();// 加载数据库驱动
} catch (Exception e) { }
System.out.println(\数据库连接不成功\e.printStackTrace();
PASSWORD);// 创建新的数据库连接
threadLocal.set(conn);// 将数据库连接保存到线程中
} catch (SQLException e) {
e.printStackTrace();
13页
酒店管理系统设计
}
}
}
}
return conn;// 返回数据库连接
public static boolean closeConnection() {// 关闭数据库连接的方法 }
boolean isClosed = true;// 默认关闭成功
Connection conn = threadLocal.get();// 从线程中获得数据库连接 if (conn != null) {// 数据库连接可用 }
return isClosed;// 返回关闭结果
threadLocal.set(null);// 清空线程中的数据库连接 try {
conn.close();// 关闭数据库连接
} catch (SQLException e) { }
isClosed = false;// 关闭失败 e.printStackTrace();
7.2 开台点餐功能的实现
7.2.1 台号选择框的创建
numComboBox = newJComboBox(); // 创建台号选择框
numComboBox.setNextFocusableComponent(codeTextField); // 设置
下一个将要获得焦点的组件
initNumComboBox(); // 初始化台号选择框
numComboBox.addActionListener(new ActionListener() {
publicvoid actionPerformed(ActionEvent e) {
14页
酒店管理系统设计
int rowCount = rightTable.getRowCount(); // 获得已开台数 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; // 保存其在“开台列表” 中
的所在行
}
if (needSelectedRow == -1) { // 选中的台号尚未开台,即将
}
break; // 跳出循环
要开台
rightTable.clearSelection(); // 取消选择“开台列表”
中的选中行
leftTableDataV.removeAllElements(); // 清空“签单列
表”中的所有行
leftTableModel.setDataVector(leftTableDataV,
leftTableColumnV); // 刷新“签单列表”表格模
型的数据
} else { // 选中的台号已经开台,即将要添加消费项目
rightTable.setRowSelectionInterval(needSelectedRow);// 在“开台列
表”中选中该台号
leftTableDataV.removeAllElements(); // 清空“签单列
15页
酒店管理系统设计
表”中的现有项目
leftTableDataV.addAll(itemOfDeskV.get(needSelectedRow)); // 向“签
单列表”添加新选中餐台的消费项目
leftTableModel.setDataVector(leftTableDataV,
leftTableColumnV); // 刷新“签单列表”表格模
型的数据
leftTable.setRowSelectionInterval(0); // 选中“签单
列表”中的第一行
7.2.2开单功能的实现
final JButton addButton = new MButton();
7.2.3签单功能的实现
16页
}
}
});
addButton.setIcon(new ImageIcon(TipWizardFrame.class
.getResource(\
addButton.setRolloverIcon(new ImageIcon(TipWizardFrame.class
.getResource(\
addButton.addActionListener(new ActionListener() {
publicvoid actionPerformed(ActionEvent e) { }
makeOutAnInvoice();
codeTextField.requestFocus();
});
orderDishesButtonPanel.add(addButton); orderDishesPanel.add(numComboBox);
酒店管理系统设计
final JButton subButton = new MButton();// 创建按钮
subButton.setIcon(new ImageIcon(getClass().getResource(
\按钮默认时显示的图片
subButton.setRolloverIcon(new
ImageIcon(getClass().getResource(
\光标移入时显示的图片
subButton.addActionListener(new ActionListener() {
publicvoid actionPerformed(ActionEvent e) {
int selectedRow = rightTable.getSelectedRow();// 获得
“开台列表”中的选中行
if (selectedRow < 0) {// 未选中任何行
JOptionPane.showMessageDialog(null, \请选择要签单的
台号!\友情提示\
JOptionPane.INFORMATION_MESSAGE);
return;
} else {
int lastRowIndex = leftTable.getRowCount() - 1;// 获
得最后一个消费项目的索引
Object lastRowSign =
leftTable.getValueAt(lastRowIndex, 0);// 获得最后一个消费项目的标记
if (lastRowSign.equals(\为未签单项目
Object firstRowSign = leftTable.getValueAt(0,
0);// 获得第一个消费项目的标记
if (firstRowSign.equals(\{// 为未签单项目,
即为新开台签单 {
leftTable.setValueAt(\签单
17页
for (int row = lastRowIndex; row >= 0; row--)
酒店管理系统设计
{
}
} else {// 为已签单项目,即为新添加菜品签单
for (int row = lastRowIndex; row >= 0; row--)
if (leftTable.getValueAt(row,
0).equals(\为未签单项目 单 成
7.3 结账功能的实现
final JButton checkOutButton = new JButton();
checkOutButton.setText(\结 账\
checkOutButton.addActionListener(new ActionListener() {
publicvoid actionPerformed(ActionEvent e) {
int selectedRow = rightTable.getSelectedRow(); if (selectedRow < 0) {// 未选中任何餐台
JOptionPane.showMessageDialog(null, \请选择要结账的
}
}
}
}
}
break;
else
// 为已签单项目,即为新添加菜品签单完
leftTable.setValueAt(\签
});
orderDishesButtonPanel.add(subButton);
餐台!\友情提示\
18页
酒店管理系统设计
}
JOptionPane.INFORMATION_MESSAGE);// 弹出提示
return;
int rowCount = leftTable.getRowCount();// 获得结账餐台的
点菜数量
if (leftTable.getValueAt(rowCount - 1, 0).equals(\
{// 存在未签单菜品
JOptionPane.showMessageDialog(null, \请先确定未签单
商品的处理方式!\
\友情提示\
JOptionPane.INFORMATION_MESSAGE);// 弹出提示
}
int expenditure = Integer.valueOf(expenditureTextField
.getText());// 获得消费金额 return;
int realWages =
Integer.valueOf(realWagesTextField.getText());// 获得实收金额
if (realWages < expenditure) {// 查看实收金额是否小于消
费金额
if (realWages == 0)// 未输入实收金额
JOptionPane.showMessageDialog(null, \请输入实收
金额!\友情提示\
JOptionPane.INFORMATION_MESSAGE);// 弹出
提示
else
// 实收金额小于消费金额
JOptionPane.showMessageDialog(null, \实收金额不
能小于消费金额!\
\友情提示\
19页
酒店管理系统设计
JOptionPane.INFORMATION_MESSAGE);// 弹出提示
realWagesTextField.requestFocus();// 为“实收金额”
文本框请求获得焦点
}
changeTextField.setText((realWages - expenditure) +
return;
\计算并设置“找零金额”
String[] orderFormData = {
getNum(),
rightTable.getValueAt(selectedRow,
1).toString(),
Today.getDate() + \
+ rightTable.getValueAt(selectedRow, 2),
expenditureTextField.getText(),
TipWizardFrame.this.managerV.get(0).toString() };// 组织消费单信息
dao.iOrderForm(orderFormData);// 持久化到数据库 String[] orderItemData = new String[4];// 用来存储消费项
目信息
orderItemData[0] = dao.sOrderFormOfMaxId();// 获得消费单
编号
for (int row = 0; row < rowCount; row++) {// 通过循环持
久化消费项目信息
orderItemData[1] = leftTable.getValueAt(row,
2).toString();// 获得菜品编号
orderItemData[2] = leftTable.getValueAt(row,
5).toString();// 获得菜品数量
orderItemData[3] = leftTable.getValueAt(row,
7).toString();// 获得菜品消费金额
20页
酒店管理系统设计
}
dao.iOrderItem(orderItemData);// 持久化到数据库
JOptionPane.showMessageDialog(null,
rightTable.getValueAt(
selectedRow, 1)
+ \结账完成!\友情提示\
JOptionPane.INFORMATION_MESSAGE);// 弹出提示
//
rightTableModel.removeRow(selectedRow);// 从“开台列表”
中移除结账餐台
leftTableDataV.removeAllElements();// 清空“签单列表” leftTableModel.setDataVector(leftTableDataV,
leftTableColumnV);// 刷新“签单列表” 框 台
}
changeTextField.setText(\清空“找零金额”文本框 itemOfDeskV.remove(selectedRow);// 从数据集中移除结账餐
realWagesTextField.setText(\清空“实收金额”文本
});
checkOutButton.setMargin(new Insets(2, 14, 2, 14)); checkOutButton.setFont(new Font(\BOLD, 12)); final GridBagConstraints gridBagConstraints_10 = new
GridBagConstraints();
gridBagConstraints_10.anchor = GridBagConstraints.EAST; gridBagConstraints_10.gridwidth = 2;
gridBagConstraints_10.insets = new Insets(10, 0, 0, 0); gridBagConstraints_10.gridy = 2; gridBagConstraints_10.gridx = 1;
21页
酒店管理系统设计
checkOutPanel.add(checkOutButton, gridBagConstraints_10);
八、总结
经过这次的学习。了解了关于数据库程序设计,学习了JDBC的连接方法,更加深入的学习了SQL Server的使用,通过对Eclipse中Windows Builder插件的学习和使用,方便快捷的进行可视化界面开发,大大提高了系统开发的效率。
参考文献
1.李俊山 ,罗蓉,赵方舟,数据库原理及应用(SQL sever).北京:清华大学出版社,2009
2.李俊山,罗蓉,叶霞,杨百龙。数据库系统原理与设计-内容解释与习题解答。西安:西安交通大学出版社,2006.
3.刘金岭,冯万利,周泓。数据库系统及应用实验与课程设计指导-SQL Server 2008.清华大学出版社,2014.
4.梁竞敏,黄华林,宋广科。SQL Server 2005 数据库任务化教程。中国水利水电出版社。2009.
22页
正在阅读:
酒店管理系统01-09
2006年云南省公务员录用考试行政职业能力测验真题及答案04-28
关于医院法制宣传日活动总结12-31
高考第一轮复习教案11-恒定电流07-10
高中数学人教版必修一知识点总结梳理01-02
金属材料力学性能检测样品制样作业指导书02-26
初一数学 完全平方公式教案06-03
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 管理系统
- 酒店
- 天地源 梦想课堂
- 企业内部物流与市场营销的关系
- vb试题总集
- 海事行政处罚中证据采用研究
- 项目管理第3阶段测试题
- 2015-2016学年湖北省孝感高级中学高二下学期期中考试地理(解析版)
- 幼儿教师资格证考试幼儿教育学模拟试题含参考答案
- 中专数学试卷A
- 浅谈高海拔高寒隧道施工技术
- 浅谈小学《品德与生活》课中有效性活动的策略
- 中国传统手工艺品讲座
- 经典诵读与演讲比赛评分细则与规则
- 异步电动机变频调速控制系统设计毕业设计论文
- 中考零距离-新课标最新2018年河南省中考化学模拟试题及答案详解二
- 居安逸精神(第二周)
- 高中地理五三真题(电子版)中国地理填图-完美定稿
- 优化实施方案3篇
- 第四章 网络传播的总体特征
- Verilog HDL语言设计实验指导书(2004)
- 04 现在分词功能 形式变化 思维导图(改进版)