JAVA连接数据库酒店管理系统.doc
《JAVA连接数据库酒店管理系统.doc》由会员分享,可在线阅读,更多相关《JAVA连接数据库酒店管理系统.doc(22页珍藏版)》请在咨信网上搜索。
酒店管理系统设计 湖南文理学院芙蓉学院 数据库原理及应用课程设计报告 题目:酒店管理系统 学生姓名:罗杰 学号: 13250110 专业班级:网络工程1301班 同组姓名:冷迅、何易升 指导教师:王兴柱 设计时间: 2015年上学期第18周 指导老师意见: 评定成绩: 签名: 日期: 目录 一、需求分析 .......................... ... ... ........... 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 一、需求分析 随着餐饮行业的迅速发展现有的人工管理方式已经不能满足管理者的需求,广大餐饮业经营者已经意识到使用计算机应用软件的重要性,决定在餐饮企业的经营管理上引入计算机应用软件管理系统。 酒店管理系统的大致功能: 1.开台点餐 2.自动结账 3.菜品管理 4.后台菜系菜品管理 5.日月年结账报表 6.用户设置 本系统采用的语言 (1)本系统采用Java语言,Java是目前使用最为广泛的计算机语言之一。它具有简单面向对象、稳定、与平台无关等特点。说他简单并不是说这门语言很干瘪、而是一种清楚更容易理解的方式实现程序。面向对象是基于对象的变成更符合人的思维方式使人们更容易编写程序。 (2)本系统还采用SQL语言SQL Server具有许多显著优点、易用性、适合分布组织的可伸缩性、用于决策支持的数据仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性价比等。 (3)本系统有效的利用Java和SQL的优点。 二、系统运行环境 操作系统为Windows 8、windows 7或windows XP使用的集成开发工具Eclipse 数据库采用SQL Server2005项目运行环境为JDK 8。 三、功能需求描述 1开台签单工作区的功能:主要功能有开台、点菜、加菜、签单、查看开台信息和签单信息。 2.自动结账工作区的功能:一个功能是自动计算当前选中餐台的消费金额,另一个功能是在结账时自动计算找零金额。 3.结账报表工作区功能:日结帐报表、月结账报表、年结账报表。 4.后天管理工作区功能:管理添加信息。 四、模块结构图 模块结构图 五、数据库设计 5.1数据库分析 酒店管理系统的需求包括开台点菜功能、智能化获取菜品功能、自动结账功能、营业额报表功能等。主要涉及的数据表包括台号表、菜品表、消费单表,为了使系统更加的完善还需要为菜品分类,即需要用到菜系表;为了实现菜品的日销售情况统计,还要建立一个消费项目表,用来记录消费单消费的菜品。 5.2数据库概念设计 数据库设计是系统设计过程中的重要组成部分,它是通酒店管理程序设计,通过管理系统的整天需求而制定的,数据库设计的好坏直接影响到系统的后期开发。 5.3 数据库逻辑结构设计 (1)餐台和菜系在本系统中的最简单的实体,在本系统中用来描述餐台信息的只有台号和座位数,而描述菜系的主要是名称。餐台信息表(tb_desk)和菜系信息表(tb_sort)的E-R图如下。 餐台 状态 台号 座位号 餐台信息表的E-R图 菜系 名称 状态 序号 菜系信息表的E-R图 (2)在描述菜品实体时加入了助记码,目的是为了实现智能化获取菜品功能。通过这一功能,系统操作员可以快速的获取顾客所点的菜品信息。菜品信息表(tb_menu)的E-R图如图所示。 菜品 编号 助记码码 系属菜系 名称 状态 单价 单位 菜品信息表的E-R图 (3)消费单信息表(tb_order_form)用来记录每次消费的相关信息,例如消费时使用的餐台、时间、金额等。消费单信息表的E-R图如图所示。 消费单 操作用户 消费时间 消费金额 消费台号 编号 消费信息表的E-R图 消费项目 (4)消费项目信息表(tb_order_item)用来记录每个消费单消费的菜品,记录的主要信息有所属消费单、消费菜品、消费数量、消费额。消费项目信息表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 序号 字段名 数据类型 约束 备注 1 num varchar(6) 非空 台号 2 seating int 非空 座位数 3 state char(4) 非空 状态 5.4.2.管理员表 表名 tb.manager 序号 字段名 数据类型 约束 备注 1 id int 非空 编号 2 record_num char(9) 非空 用户名 3 password varchar(20) 非空 登陆密码 4 purview_system char(2) 允许空 系统维修权限 5 purview_sell char(2) 允许空 销售统计权限 6 purview_personnel char(2) 允许空 人员管理权限 7 purview_init char(2) 允许空 初始化系统权限 5.4.3.菜品信息表 表名 tb.menu 序号 字段名 数据类型 约束 备注 1 num char(9) 非空 编号 2 sort_id int 非空 所属菜系 3 name varchar(20) 非空 名称 4 code varchar(10) 非空 主机名 5 unit varchar(4) 非空 单位 6 unit_price int 非空 单价 7 state char(4) 非空 状态 5.4.4.消费单信息表 表名 tb_order_form 序号 字段名 数据类型 约束 备注 1 num char(11) 非空 编号 2 Desk_num varchar(6) 非空 消费餐台 3 Consume_date datetime 非空 消费时间 4 expenditure int 非空 消费金额 5 Record_num char(9) 非空 操作用户 5.4.5.消费项目信息表 表名 tb_order_item 序号 字段名 数据类型 约束 备注 1 id int 非空 编号 2 Order_form_num char(11) 非空 所属消费单 3 Menu_num char(9) 非空 消费菜品 4 amount int 非空 消费数量 5 total int 非空 消费额 5.4.6.员工表 表名 tb_record 序号 字段名 数据类型 约束 备注 1 num char(9) 非空 编号 2 name varchar(8) 非空 员工姓名 3 sex char(2) 非空 性别 4 birthday datetime 非空 出生日期 5 Id_card varchar(20) 非空 身份证号 6 address varchar(100) 非空 地址 7 state char(4) 非空 状态 5.4.7.菜系信息表 表名 th.sort 序号 字段名 数据类型 约束 备注 1 id int 非空 序号 2 name varchar(20) 非空 名称 3 state char(4) 非空 状态 六、程序模块设计 6.1功能模块设计: 6.2界面设计: 登入界面设计 管理员界面设计 6.3程序运行: 登入界面 管理界面 管理员界面 七、模块的实现 7.1 JDBC数据库连接部分 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:1433;DatabaseName=db_DrinkeryManage"; private static final String USERNAME = "luojie"; private static final String PASSWORD = "123456"; private static final ThreadLocal<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.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 booleancloseConnection() {// 关闭数据库连接的方法 booleanisClosed = 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 开台点餐功能的实现 7.2.1 台号选择框的创建 numComboBox = newJComboBox(); // 创建台号选择框 numComboBox.setNextFocusableComponent(codeTextField); // 设置下一个将要获得焦点的组件 initNumComboBox(); // 初始化台号选择框 numComboBox.addActionListener(newActionListener() { publicvoidactionPerformed(ActionEvent e) { introwCount = rightTable.getRowCount(); // 获得已开台数 if (rowCount == 0) // 没有开台 return; // 不执行任何操作 Object selectedDeskNum = numComboBox.getSelectedItem(); // 获得“台号”选择框中的选中项 intneedSelectedRow = -1; // 默认选中的台号未开台 for (int row = 0; row <rowCount; row++) { // 查看选中的台号是否已经开台 if (selectedDeskNum.equals(rightTable.getValueAt(row, 1))) { // 已经开台 needSelectedRow = row; // 保存其在“开台列表” 中的所在行 break; // 跳出循环 } } if (needSelectedRow == -1) { // 选中的台号尚未开台,即将要开台 rightTable.clearSelection(); // 取消选择“开台列表”中的选中行 leftTableDataV.removeAllElements(); // 清空“签单列表”中的所有行 leftTableModel.setDataVector(leftTableDataV, leftTableColumnV); // 刷新“签单列表”表格模型的数据 } else { // 选中的台号已经开台,即将要添加消费项目 rightTable.setRowSelectionInterval(needSelectedRow);// 在“开台列表”中选中该台号 leftTableDataV.removeAllElements(); // 清空“签单列表”中的现有项目 leftTableDataV.addAll(itemOfDeskV.get(needSelectedRow)); // 向“签单列表”添加新选中餐台的消费项目 leftTableModel.setDataVector(leftTableDataV, leftTableColumnV); // 刷新“签单列表”表格模型的数据 leftTable.setRowSelectionInterval(0); // 选中“签单列表”中的第一行 } } }); 7.2.2开单功能的实现 finalJButtonaddButton = newMButton(); addButton.setIcon(newImageIcon(TipWizardFrame.class .getResource("/img/main_add.png"))); addButton.setRolloverIcon(newImageIcon(TipWizardFrame.class .getResource("/img/main_add_on.png"))); addButton.addActionListener(newActionListener() { publicvoidactionPerformed(ActionEvent e) { makeOutAnInvoice(); codeTextField.requestFocus(); } }); orderDishesButtonPanel.add(addButton); orderDishesPanel.add(numComboBox); 7.2.3签单功能的实现 finalJButtonsubButton = newMButton();// 创建按钮 subButton.setIcon(newImageIcon(getClass().getResource( "/img/main_sub.png")));// 按钮默认时显示的图片 subButton.setRolloverIcon(newImageIcon(getClass().getResource( "/img/main_sub_on.png")));// 光标移入时显示的图片 subButton.addActionListener(newActionListener() { publicvoidactionPerformed(ActionEvent e) { intselectedRow = rightTable.getSelectedRow();// 获得“开台列表”中的选中行 if (selectedRow< 0) {// 未选中任何行 JOptionPane.showMessageDialog(null, "请选择要签单的台号!", "友情提示", JOptionPane.INFORMATION_MESSAGE); return; } else { intlastRowIndex = leftTable.getRowCount() - 1;// 获得最后一个消费项目的索引 Object lastRowSign = leftTable.getValueAt(lastRowIndex, 0);// 获得最后一个消费项目的标记 if (lastRowSign.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; row >= 0; row--) { if (leftTable.getValueAt(row, 0).equals("NEW"))// 为未签单项目 leftTable.setValueAt("", row, 0);// 签单 else // 为已签单项目,即为新添加菜品签单完成 break; } } } } } }); orderDishesButtonPanel.add(subButton); 7.3 结账功能的实现 finalJButtoncheckOutButton = newJButton(); checkOutButton.setText("结 账"); checkOutButton.addActionListener(newActionListener() { publicvoidactionPerformed(ActionEvent e) { intselectedRow = rightTable.getSelectedRow(); if (selectedRow< 0) {// 未选中任何餐台 JOptionPane.showMessageDialog(null, "请选择要结账的餐台!", "友情提示", JOptionPane.INFORMATION_MESSAGE);// 弹出提示 return; } introwCount = leftTable.getRowCount();// 获得结账餐台的点菜数量 if (leftTable.getValueAt(rowCount - 1, 0).equals("NEW")) {// 存在未签单菜品 JOptionPane.showMessageDialog(null, "请先确定未签单商品的处理方式!", "友情提示", JOptionPane.INFORMATION_MESSAGE);// 弹出提示 return; } int expenditure = Integer.valueOf(expenditureTextField .getText());// 获得消费金额 intrealWages = Integer.valueOf(realWagesTextField.getText());// 获得实收金额 if (realWages< expenditure) {// 查看实收金额是否小于消费金额 if (realWages == 0)// 未输入实收金额 JOptionPane.showMessageDialog(null, "请输入实收金额!", "友情提示", JOptionPane.INFORMATION_MESSAGE);// 弹出提示 else // 实收金额小于消费金额 JOptionPane.showMessageDialog(null, "实收金额不能小于消费金额!", "友情提示", JOptionPane.INFORMATION_MESSAGE);// 弹出提示 realWagesTextField.requestFocus();// 为“实收金额”文本框请求获得焦点 return; } changeTextField.setText((realWages - expenditure) + "");// 计算并设置“找零金额” 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();// 获得菜品消费金额 dao.iOrderItem(orderItemData);// 持久化到数据库 } JOptionPane.showMessageDialog(null, rightTable.getValueAt( selectedRow, 1) + " 结账完成!", "友情提示", JOptionPane.INFORMATION_MESSAGE);// 弹出提示 // rightTableModel.removeRow(selectedRow);// 从“开台列表”中移除结账餐台 leftTableDataV.removeAllElements();// 清空“签单列表” leftTableModel.setDataVector(leftTableDataV, leftTableColumnV);// 刷新“签单列表” realWagesTextField.setText("0");// 清空“实收金额”文本框 changeTextField.setText("0");// 清空“找零金额”文本框 itemOfDeskV.remove(selectedRow);// 从数据集中移除结账餐台 } }); checkOutButton.setMargin(new Insets(2, 14, 2, 14)); checkOutButton.setFont(new Font("", Font.BOLD, 12)); finalGridBagConstraints gridBagConstraints_10 = newGridBagConstraints(); gridBagConstraints_10.anchor = GridBagConstraints.EAST; gridBagConstraints_10.gridwidth = 2; gridBagConstraints_10.insets = newInsets(10, 0, 0, 0); gridBagConstraints_10.gridy = 2; gridBagConstraints_10.gridx = 1; 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页- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 连接 数据库 酒店 管理 系统
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文