java酒店管理系统课程设计.doc

上传人:jian****018 文档编号:7836876 上传时间:2020-03-24 格式:DOC 页数:34 大小:362KB
返回 下载 相关 举报
java酒店管理系统课程设计.doc_第1页
第1页 / 共34页
java酒店管理系统课程设计.doc_第2页
第2页 / 共34页
java酒店管理系统课程设计.doc_第3页
第3页 / 共34页
点击查看更多>>
资源描述
Java语言程序设计课程设计题 目 酒店管理系统 学 院 南湖学院 专 业 计算机科学与技术 班 级 计科N112 学 号 201145209133 学生姓名 吴威宗 指导教师 李永刚 编写日期 2014/6/26 目录一、需求分析5二、系统运行环境5三、功能需求描述5四、模块结构图6五、数据库设计651数据库分析652数据库概念设计653 数据库逻辑结构设计7六、程序模块设计8七、总结36一、需求分析随着餐饮行业的迅速发展,现有的人工管理方式已经不能呢个满足管理者的需求,广大餐饮业经营者已经意识到使用计算机应用软件的重要性,决定在餐饮企业的经营管理上引入计算机应用软件管理系统。 酒店管理系统的大致功能:1 开台点餐2 菜品管理3 自动结账4 后台菜系菜品管理5 日月年结账报表6 用户设置根据需求分析,本系统采用的语言:(1)本系统采用Java语言,Java是目前使用最为广泛的计算机语言之一。它具有简单,面向对象,稳定,与平台无关等特点。说他简单,并不是说这门语言很干瘪,而是一种清楚更容易理解的方式实现程序。面向对象是基于对象的变成更符合人的思维方式,使人们更容易编写程序。(2)本系统还采用SQL语言,SQL Server具有许多显著优点:易用性、适合分布组织的可伸缩性、用于决策支持的数据仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性价比等。(3) 本系统有效的利用Java和SQL的优点。二、系统运行环境 操作系统为Windows 7、windows XP或windows 2003 使用的集成开发工具Eclipse 数据库采用SQL Server2008,项目运行环境为JDK 7。三、功能需求描述 1开台签单工作区的功能:主要功能有开台、点菜、加菜、签单、查看开台信息和签单信息。 2自动结账工作区的功能:一个功能是自动计算当前选中餐台的消费金额;另一个功能是在结账时自动计算找零金额。 3结账报表工作区功能:日结帐报表,月结账报表,年结账报表。4后天管理工作区功能:管理添加信息四、模块结构图模块结构图五、数据库设计51数据库分析 酒店管理系统的需求包括开台点菜功能、智能化获取菜品功能、自动结账功能、营业额报表功能等。在这些功能总主要涉及的数据表包括台号表、菜品表、消费单表;为了使系统更加的完善,还需要为菜品分类,即需要用到菜系表;为了实现菜品的日销售情况统计,还要建立一个消费项目表,用来记录消费单消费的菜品。52数据库概念设计 数据库设计是系统设计过程中的重要组成部分,它是通过管理系统的整天需求而制定的,数据库设计的好坏直接影响到系统的后期开发。53 数据库逻辑结构设计 台号表菜品表菜系表消费单表消费项目表管理员表六、程序模块设计 功能模块整体设计:用户功能界面:代码:package com.mwq.frame;import java.awt.BorderLayout;import java.awt.Dimension;import java.awt.GridBagConstraints;import java.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 java.net.URL;import java.util.Vector;import javax.swing.BoxLayout;import javax.swing.ImageIcon;import javax.swing.JButton;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 passwordField;/ 密码框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);/ 设置窗口不可以改变大小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();/ 设置面板的布局管理器为网格组布局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.gridy = 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, gridBagConstraints_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);/ 创建并设置用户名下拉菜单usernameComboBox = new JComboBox();/ 创建用户名下拉菜单组件对象usernameComboBox.setMaximumRowCount(5);/ 设置下拉菜单最多可显示的选项数usernameComboBox.addItem(请选择);/ 为下拉菜单添加提示项usernameComboBox.addActionListener(new UsernameComboBoxActionListener();/ 为下拉菜单添加事件监听器final GridBagConstraints gridBagConstraints = new GridBagConstraints();/ 创建网格组布局管理器对象gridBagConstraints.anchor = GridBagConstraints.WEST;/ 设置为靠左侧显示gridBagConstraints.gridy = 1;/ 设置行索引为1gridBagConstraints.gridx = 2;/ 设置列索引为2panel.add(usernameComboBox, gridBagConstraints);/ 将组件按指定的布局管理器添加到面板中/ 创建并设置密码框passwordField = new JPasswordField();/ 创建密码框组件对象passwordField.setColumns(20);/ 设置密码框可显示的字符数passwordField.setText( );/ 设置密码框默认显示6个空格passwordField.addFocusListener(new PasswordFieldFocusListener();/ 为密码框添加焦点监听器final GridBagConstraints gridBagConstraints_1 = new GridBagConstraints();/ 创建网格组布局管理器对象gridBagConstraints_1.insets = new Insets(5, 0, 0, 0);/ 设置组件外部上方的填充量为5像素gridBagConstraints_1.anchor = GridBagConstraints.WEST;/ 设置为靠左侧显示gridBagConstraints_1.gridy = 2;/ 设置行索引为2gridBagConstraints_1.gridx = 2;/ 设置列索引为2panel.add(passwordField, gridBagConstraints_1);/ 将组件按指定的布局管理器添加到面板中/ 创建并设置一个用来添加三个按钮的面板final JPanel buttonPanel = new JPanel();/ 创建一个用来添加按钮的面板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);/ 设置组件外部上方的填充量为10像素gridBagConstraints_4.gridwidth = 2;/ 设置其占两列gridBagConstraints_4.gridy = 3;/ 设置行索引为3gridBagConstraints_4.gridx = 1;/ 设置列索引为1panel.add(buttonPanel, gridBagConstraints_4);/ 将组件按指定的布局管理器添加到面板中/ 创建并设置一个登录按钮,并将其添加到用来添加按钮的面板中final JButton landButton = new JButton();/ 创建登录按钮组件对象landButton.setMargin(new Insets(0, 0, 0, 0);/ 设置按钮边框和标签之间的间隔landButton.setContentAreaFilled(false);/ 设置不绘制按钮的内容区域landButton.setBorderPainted(false);/ 设置不绘制按钮的边框URL landUrl = this.getClass().getResource(land_submit.png);/ 获得默认情况下登录按钮显示图片的URLlandButton.setIcon(new ImageIcon(landUrl);/ 设置默认情况下登录按钮显示的图片URL landOverUrl = this.getClass().getResource(land_submit_over.png);/ 获得当鼠标经过登录按钮时显示图片的URLlandButton.setRolloverIcon(new ImageIcon(land_submit_over.png);/ 设置当鼠标经过登录按钮时显示的图片URL landPressedUrl = this.getClass().getResource(land_submit_pressed.png);/ 获得当登录按钮被按下时显示图片的URLlandButton.setPressedIcon(new ImageIcon(land_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);resetButton.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.getClass().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.setContentAreaFilled(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 exitPressedUrl = 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.size() = 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();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(passwords);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.setSelectedIndex(0);passwordField.setText( );class LandButtonActionListener implements ActionListener public void actionPerformed(ActionEvent e) String username = usernameComboBox.getSelectedItem().toString();/ 获得登录用户的名称if (username.equals(请选择) / 查看是否选择了登录用户JOptionPane.showMessageDialog(null, 请选择登录用户!, 友情提示,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,默认用户“TSoft”的登录密码为“111”!, 友情提示,JOptionPane.INFORMATION_MESSAGE);/ 弹出提示passwordField.setText(111);/ 将密码设置为默认密码 else if (inputPassword.length() = 0) / 用户未输入登录密码JOptionPane.showMessageDialog(null, 请输入登录密码!, 友情提示,JOptionPane.INFORMATION_MESSAGE);/ 弹出提示resetUsernameAndPassword();/ 恢复登录用户和登录密码Vector user = Dao.getInstance().sUserByName(username);/ 查询登录用户String password = user.get(5).toString();/ 获得登录用户的密码if (inputPassword.equals(password) / 查看登录密码是否正确land(user);/ 登录成功 else / 登录密码错误JOptionPane.showMessageDialog(null, 登录密码错误,请确认后重新登录!,友情提示, JOptionPane.INFORMATION_MESSAGE);/ 弹出提示resetUsernameAndPassword();/ 恢复登录用户和登录密码private void resetUsernameAndPassword() / 恢复登录用户和登录密码usernameComboBox.setSelectedIndex(0);/ 恢复选中的登录用户为“请选择”项passwordField.setText( );/ 恢复密码框的默认值为6个空格return;/ 直接返回private void land(Vector user) / 登录成功TipWizardFrame tipWizard = new TipWizardFrame(user);/ 创建主窗体对象tipWizard.setVisible(true);/ 设置主窗体可见setVisible(false);/ 设置登录窗口不可见private String turnCharsToString(char chars) StringBuffer strBuf = new StringBuffer();for (int i = 0; i chars.length; i+) strBuf.append(charsi);return strBuf.toString().trim();数据库连接代码:package com.mwq.dao;import java.sql.Connection;import java.sql.DriverManager;public class JDBC private String JDBC=jdbc:mysql:/localhost:3306/drinkhome; private String dbUserName=root; private String dbPassword=123456; private String jdbcName=com.mysql.jdbc.Driver; /* 获取数据库连接 */ public Connection getCon() throws Exception Class.forName(jdbcName); Connection con=DriverManager.getConnection(JDBC, dbUserName,dbPassword); return con; /* * 关闭数据库连接 * * */ public void closeCon(Connection con) throws Exception if(con!=null) con.close(); public static void main(Stringargs) JDBC JDBC =new JDBC() ; try JDBC.getCon();System.out.println(数据库连接成功); catch (Exception e) / TODO Auto-generated catch blocke.printStackTrace();System.out.println(数据库连接失败); public static Connection getConnection() / TODO Auto-generated method stubreturn null;日期类代码:package com.mwq.tool;import java.util.Calendar;public class Today private static final Calendar NOW = Calendar.getInstance();private static final int YEAR = NOW.get(Calendar.YEAR);private static final int MONTH = NOW.get(Calendar.MONTH) + 1;private static final int DAY = NOW.get(Calendar.DAY_OF_MONTH);private static final int WEEK = NOW.get(Calendar.DAY_OF_WEEK);private static final int HOUR = NOW.get(Calendar.HOUR_OF_DAY);private static final int MINUTE = NOW.get(Calendar.MINUTE);private static final int SECOND = NOW.get(Calendar.SECOND);/public static String getDate() return YEAR + - + MONTH + - + DAY;public static String getDateOfNum() String y = YEAR + ;String m = MONTH + ;String d = DAY + ;if (MONTH 10)m = 0 + MONTH;if (DAY 10)d = 0 + DAY;return y + m + d;public static String getDateOfShow() return YEAR + 年 + MONTH + 月 + DAY + 日;public static String getDayOfWeek() String dayOfWeek = ;switch (WEEK) case 1:dayOfWeek = 星期日;break;case 2:dayOfWeek = 星期一;break;case 3:dayOfWeek = 星期二;break;case 4:dayOfWeek = 星期三;break;case 5:dayOfWeek = 星期四;break;case 6:dayOfWeek = 星期五;case 7:dayOfWeek = 星期六;break;return dayOfWeek;public static String getTime() return HOUR + : + MINUTE + : + SECOND;public static void main(String args) System.out.println(Today.getDayOfWeek();public static int getYEAR() return YEAR;public static int getDAY() return DAY;public static int getMONTH() return MONTH;利用正则表达式验证数据合法性的方法代码:package com.mwq.tool;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Validate public static boolean execute(String rule, String content) Pattern pattern = Pattern.compile(rule);/ 利用验证规则创建Pattern对象Matcher matcher = pattern.matcher(content);/ 利用验证内容获得Matcher对象return matcher.matches();/ 返回验证结果按钮类:package com.mwq.mwing;import java.awt.Insets;import javax.swing.JButton;import javax.swing.JTable;import javax.swing.ListSelectionModel;import javax.swing.table.DefaultTableCellRenderer;import javax.swing.table.DefaultTableModel;import javax.swing.table.JTableHeader;import javax.swing.table.TableCellRenderer;public class MButton extends JButton public MButton() setContentAreaFilled(false);setMargin(new Insets(0, 0, 0, 0);setBorderPainted(false);setFocusPainted(false);表格类:package com.mwq.mwing;import javax.swing.JTable;import javax.swing.ListSelectionModel;import javax.swing.table.DefaultTableCellRenderer;import javax.swing.table.DefaultTableModel;import javax.swing.table.JTableHeader;import javax.swing.table.TableCellRenderer;public class MTable extends JTable /* * */private static final long serialVersionUID = 942647315278424978L;public MTable() super();public MTable(DefaultTableModel tableModel) super(tableModel);/ 表格列值居中显示Overridepublic TableCellRenderer getDefaultRenderer(Class columnClass) / 获得除表格头部分的单元格对象DefaultTableCellRenderer tableRenderer = (DefaultTableCellRenderer) super.getDefaultRenderer(columnClass);/ 设置单元格内容居中显示tableRenderer.setHorizontalAlignment(DefaultTableCellRenderer.CENTER);return tableRenderer;/ 表格列名信息Overridepublic JTableHeader getTableHeader() / 获得表格头对象JTableHeader tableHeader = super.getTableHeader();tableHeader.setReorderingAllowed(false);/ 设置表格列不可重排/ 获得表格头的单元格对象DefaultTableCellRenderer headerRenderer = (DefaultTableCellRenderer) tableHeader.getDefaultRenderer();/ 设置单元格内容(即列名)居中显示headerRenderer.setHorizontalAlignment(DefaultTableCellRenderer.CENTER);return tableHeader;public void setRowSelectionInterval(int i) / TODO Auto-generated method stub图片类:package com.mwq.mwing;import java.awt.Graphics;import java.awt.GridBagLayout;import java.awt.Image;import java.net.URL;import javax.swing.ImageIcon;import javax.swing.JPanel;public class MPanel extends JPanel private ImageIcon imageIcon;/ 声明一个图片对象public MPanel(URL imgUrl) super();/ 继承父类的构造方法setLayout(new GridBagLayout();/ 将布局管理器修改为网格组布局imageIcon = new ImageIcon(imgUrl);/ 根据传入的URL创建ImageIcon对象setSize(imageIcon.getIconWidth(), imageIcon.getIconHeight();/ 设置面板与图片等大protected void paintComponent(Graphics g) / 重写JPanel类的paintComponent()方法super.paintComponent(g);/ 调用JPanel类的paintComponent()方法Image image = imageIcon.getImage();/ 通过ImageIcon对象获得Image对象g.drawImage(image, 0, 0, null);/ 绘制Image对象,即将图片绘制到面板中修改密码对话框:package com.mwq.frame.user;import java.awt.Dimension;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.Insets;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.FocusEvent;import java.awt.event.FocusListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.util.Vector;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPasswordField;import com.mwq.dao.Dao;public class UpdatePasswordDialog extends JDialog private JPasswordField oldPasswordField;private JPasswordField repeatPasswordField;private JPasswordField newPasswordField;private final Dao dao = Dao.getInstance();private Vector user;/* * Launch the application * * param args */public static void main(String args) try UpdatePasswordDialog dialog = new UpdatePasswordDialog();dialog.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0););dialog.setVisible(true); catch (Exception e) e.printStackTrace();/* * Create the dialog */public UpdatePasswordDialog() super();getContentPane().setLayout(new GridBagLayout();setModal(true);setTitle(修改密码);Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();setBounds(screenSize.width - 300) / 2, (screenSize.height - 200) / 2,300, 200);final JLabel oldPasswordLabel = new JLabel();oldPasswordLabel.setText(原 密 码:);final GridBagConstraints gridBagConstraints_7 = new GridBagConstraints();gridBagConstraints_7.gridx = 0;gridBagConstraints_7.gridy = 0;getContentPane().add(oldPasswordLabel, gridBagConstraints_7);oldPasswordField = new JPasswordField();oldPasswordField.setText( );oldPasswordField.addFocusListener(new FocusListener() public void focusGained(FocusEvent e) oldPasswordField.setText();public void focusLost(FocusEvent e) char passwor
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!