1、java酒店管理系统课程设计 Java语言程序设计课程设计题 目 酒店管理系统 学 院 南湖学院 专 业 计算机科学与技术 班 级 计科N112 学 号 201145209133 学生姓名 吴威宗 指导教师 李永刚 编写日期 2014/6/26 一、需求分析随着餐饮行业的迅速发展,现有的人工管理方式已经不能呢个满足管理者的需求,广大餐饮业经营者已经意识到使用计算机应用软件的重要性,决定在餐饮企业的经营管理上引入计算机应用软件管理系统。 酒店管理系统的大致功能:1开台点餐2菜品管理3自动结账4后台菜系菜品管理5日月年结账报表6用户设置根据需求分析,本系统采用的语言:(1)本系统采用Java语言,
2、Java是目前使用最为广泛的计算机语言之一。它具有简单,面向对象,稳定,与平台无关等特点。说他简单,并不是说这门语言很干瘪,而是一种清楚更容易理解的方式实现程序。面向对象是基于对象的变成更符合人的思维方式,使人们更容易编写程序。(2)本系统还采用SQL语言,SQL Server具有许多显著优点:易用性、适合分布组织的可伸缩性、用于决策支持的数据仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性价比等。(3)本系统有效的利用Java和SQL的优点。二、系统运行环境 操作系统为Windows 7、windows XP或windows 2003 使用的集成开发工具Eclipse 数据库采用SQ
3、L Server2008,项目运行环境为JDK 7。三、功能需求描述 1开台签单工作区的功能:主要功能有开台、点菜、加菜、签单、查看开台信息和签单信息。 2自动结账工作区的功能:一个功能是自动计算当前选中餐台的消费金额;另一个功能是在结账时自动计算找零金额。 3结账报表工作区功能:日结帐报表,月结账报表,年结账报表。4后天管理工作区功能:管理添加信息四、模块结构图模块结构图五、数据库设计51数据库分析 酒店管理系统的需求包括开台点菜功能、智能化获取菜品功能、自动结账功能、营业额报表功能等。在这些功能总主要涉及的数据表包括台号表、菜品表、消费单表;为了使系统更加的完善,还需要为菜品分类,即需要用
4、到菜系表;为了实现菜品的日销售情况统计,还要建立一个消费项目表,用来记录消费单消费的菜品。52数据库概念设计 数据库设计是系统设计过程中的重要组成部分,它是通过管理系统的整天需求而制定的,数据库设计的好坏直接影响到系统的后期开发。53 数据库逻辑结构设计 台号表菜品表菜系表消费单表消费项目表管理员表六、程序模块设计 功能模块整体设计:用户功能界面:代码:package com.mwq.frame;import java.awt.BorderLayout;import java.awt.Dimension;import java.awt.GridBagConstraints;import jav
5、a.awt.GridBagLayout;import java.awt.Insets;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.FocusEvent;import java.awt.event.FocusListener;import .URL;import java.util.Vector;import javax.swing.BoxLayout;import javax.swing.ImageIcon;import javax.swing.JBut
6、ton;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JPasswordField;import com.mwq.dao.Dao;import com.mwq.mwing.MPanel;public class LandFrame extends JFrame private JPasswordField passwordFiel
7、d;/ 密码框 private JComboBox usernameComboBox;/ 用户名下拉菜单 public static void main(String args) try LandFrame frame = new LandFrame(); frame.setVisible(true); catch (Exception e) e.printStackTrace(); public LandFrame() / 首先设置窗口的相关信息 super();/ 调用父类的构造方法 setTitle( 小组:吴威宗 周志远);/ 设置窗口的标题 setResizable(false);/
8、 设置窗口不可以改变大小 setAlwaysOnTop(true);/ 设置窗口总在最前方 setBounds(100, 100, 428, 292);/ 设置窗口的大小 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/ 设置当关闭窗口时执行的动作 / 下面将创建一个面板对象并添加到窗口的容器中 final MPanel panel = new MPanel(this.getClass().getResource( land_background.jpg);/ 创建一个面板对象 panel.setLayout(new GridBagLayout(
9、);/ 设置面板的布局管理器为网格组布局 getContentPane().add(panel, BorderLayout.CENTER);/ 将面板添加到窗体中 final JLabel topLabel = new JLabel(); topLabel.setPreferredSize(new Dimension(0, 126); final GridBagConstraints gridBagConstraints_5 = new GridBagConstraints(); gridBagConstraints_5.gridx = 0; gridBagConstraints_5.grid
10、y = 0; panel.add(topLabel, gridBagConstraints_5); final JLabel leftLabel = new JLabel(); leftLabel.setPreferredSize(new Dimension(140, 0); final GridBagConstraints gridBagConstraints_3 = new GridBagConstraints(); gridBagConstraints_3.gridy = 1; gridBagConstraints_3.gridx = 0; panel.add(leftLabel, gr
11、idBagConstraints_3); final JLabel rightLabel = new JLabel(); rightLabel.setPreferredSize(new Dimension(55, 0); final GridBagConstraints gridBagConstraints_2 = new GridBagConstraints(); gridBagConstraints_2.gridy = 1; gridBagConstraints_2.gridx = 1; panel.add(rightLabel, gridBagConstraints_2); / 创建并设
12、置用户名下拉菜单 usernameComboBox = new JComboBox();/ 创建用户名下拉菜单组件对象 usernameComboBox.setMaximumRowCount(5);/ 设置下拉菜单最多可显示的选项数 usernameComboBox.addItem(请选择);/ 为下拉菜单添加提示项 usernameComboBox .addActionListener(new UsernameComboBoxActionListener();/ 为下拉菜单添加事件监听器 final GridBagConstraints gridBagConstraints = new Gr
13、idBagConstraints();/ 创建网格组布局管理器对象 gridBagConstraints.anchor = GridBagConstraints.WEST;/ 设置为靠左侧显示 gridBagConstraints.gridy = 1;/ 设置行索引为1 gridBagConstraints.gridx = 2;/ 设置列索引为2 panel.add(usernameComboBox, gridBagConstraints);/ 将组件按指定的布局管理器添加到面板中 / 创建并设置密码框 passwordField = new JPasswordField();/ 创建密码框组
14、件对象 passwordField.setColumns(20);/ 设置密码框可显示的字符数 passwordField.setText( );/ 设置密码框默认显示6个空格 passwordField.addFocusListener(new PasswordFieldFocusListener();/ 为密码框添加焦点监听器 final GridBagConstraints gridBagConstraints_1 = new GridBagConstraints();/ 创建网格组布局管理器对象 gridBagConstraints_1.insets = new Insets(5, 0
15、, 0, 0);/ 设置组件外部上方的填充量为5像素 gridBagConstraints_1.anchor = GridBagConstraints.WEST;/ 设置为靠左侧显示 gridBagConstraints_1.gridy = 2;/ 设置行索引为2 gridBagConstraints_1.gridx = 2;/ 设置列索引为2 panel.add(passwordField, gridBagConstraints_1);/ 将组件按指定的布局管理器添加到面板中 / 创建并设置一个用来添加三个按钮的面板 final JPanel buttonPanel = new JPanel
16、();/ 创建一个用来添加按钮的面板 buttonPanel.setOpaque(false);/ 设置面板的背景为透明 buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.X_AXIS);/ 设置面板采用水平箱布局 final GridBagConstraints gridBagConstraints_4 = new GridBagConstraints();/ 创建网格组布局管理器对象 gridBagConstraints_4.insets = new Insets(10, 0, 0, 0);/ 设置组件外部上方的填充量为1
17、0像素 gridBagConstraints_4.gridwidth = 2;/ 设置其占两列 gridBagConstraints_4.gridy = 3;/ 设置行索引为3 gridBagConstraints_4.gridx = 1;/ 设置列索引为1 panel.add(buttonPanel, gridBagConstraints_4);/ 将组件按指定的布局管理器添加到面板中 / 创建并设置一个登录按钮,并将其添加到用来添加按钮的面板中 final JButton landButton = new JButton();/ 创建登录按钮组件对象 landButton.setMargi
18、n(new Insets(0, 0, 0, 0);/ 设置按钮边框和标签之间的间隔 landButton.setContentAreaFilled(false);/ 设置不绘制按钮的内容区域 landButton.setBorderPainted(false);/ 设置不绘制按钮的边框 URL landUrl = this.getClass().getResource(land_submit.png);/ 获得默认情况下登录按钮显示图片的URL landButton.setIcon(new ImageIcon(landUrl);/ 设置默认情况下登录按钮显示的图片 URL landOverUr
19、l = this.getClass().getResource( land_submit_over.png);/ 获得当鼠标经过登录按钮时显示图片的URL landButton.setRolloverIcon(new ImageIcon(land_submit_over.png);/ 设置当鼠标经过登录按钮时显示的图片 URL landPressedUrl = this.getClass().getResource( land_submit_pressed.png);/ 获得当登录按钮被按下时显示图片的URL landButton.setPressedIcon(new ImageIcon(la
20、nd_submit_pressed.png);/ 设置当登录按钮被按下时显示的图片 landButton.addActionListener(new LandButtonActionListener();/ 为登录按钮添加事件监听器 buttonPanel.add(landButton);/ 将登录按钮添加到用来添加按钮的面板中 final JButton resetButton = new JButton(); resetButton.setMargin(new Insets(0, 0, 0, 0); resetButton.setContentAreaFilled(false); rese
21、tButton.setBorderPainted(false); URL resetUrl = this.getClass().getResource(land_reset.png); resetButton.setIcon(new ImageIcon(resetUrl); URL resetOverUrl = this.getClass().getResource( land_reset_over.png); resetButton.setRolloverIcon(new ImageIcon(land_reset_over.png); URL resetPressedUrl = this.g
22、etClass().getResource( land_reset_pressed.png); resetButton.setPressedIcon(new ImageIcon(resetPressedUrl); resetButton.addActionListener(new ResetButtonActionListener(); buttonPanel.add(resetButton); final JButton exitButton = new JButton(); exitButton.setMargin(new Insets(0, 0, 0, 0); exitButton.se
23、tContentAreaFilled(false); exitButton.setBorderPainted(false); URL exitUrl = this.getClass().getResource(land_exit.png); exitButton.setIcon(new ImageIcon(exitUrl); URL exitOverUrl = this.getClass() .getResource(land_exit_over.png); exitButton.setRolloverIcon(new ImageIcon(exitOverUrl); URL exitPress
24、edUrl = this.getClass().getResource( land_exit_pressed.png); exitButton.setPressedIcon(new ImageIcon(exitPressedUrl); exitButton.addActionListener(new ExitButtonActionListener(); buttonPanel.add(exitButton); / / 初始化用户名下拉菜单 Vector userNameV = Dao.getInstance().sUserNameOfNotFreeze(); if (userNameV.si
25、ze() = 0) usernameComboBox.addItem(TSoft); else for (int i = 0; i userNameV.size(); i+) usernameComboBox.addItem(userNameV.get(i); class UsernameComboBoxActionListener implements ActionListener public void actionPerformed(ActionEvent e) String userName = (String) usernameComboBox.getSelectedItem();
26、if (userName.equals(TSoft) passwordField.setText(111); class PasswordFieldFocusListener implements FocusListener public void focusGained(FocusEvent e) passwordField.setText(); public void focusLost(FocusEvent e) char passwords = passwordField.getPassword(); String password = turnCharsToString(passwo
27、rds); if (password.length() = 0) passwordField.setText( ); class ExitButtonActionListener implements ActionListener public void actionPerformed(ActionEvent arg0) System.exit(0); class ResetButtonActionListener implements ActionListener public void actionPerformed(ActionEvent arg0) usernameComboBox.s
28、etSelectedIndex(0); passwordField.setText( ); class LandButtonActionListener implements ActionListener public void actionPerformed(ActionEvent e) String username = usernameComboBox.getSelectedItem().toString();/ 获得登录用户的名称 if (username.equals(请选择) / 查看是否选择了登录用户 JOptionPane.showMessageDialog(null, 请选择
29、登录用户!, 友情提示, JOptionPane.INFORMATION_MESSAGE);/ 弹出提示 resetUsernameAndPassword();/ 恢复登录用户和登录密码 char passwords = passwordField.getPassword();/ 获得登录用户的密码 String inputPassword = turnCharsToString(passwords);/ 将密码从char型数组转换成字符串 if (username.equals(JAVA) / 查看是否为默认用户登录 if (inputPassword.equals(123456) / 查看密码是否为默认密码 land(null);/ 登录成功 String infos = 请立刻单击“用户管理”按钮添加用户!, 添加用户后需要重新登录,本系统才能正常使用! ;/ 组织提示信息 JOptionPane.showMessageDialog(null, infos, 友情提示, JOptionPane.INFORMATION_MESSAGE);/ 弹出提示 else / 密码错误 JOptionPane.showMessageDialog(null, 默认用户“TS
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1