版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上 Java语言程序设计课程设计题 目 酒店管理系统 学 院 南湖学院 专 业 计算机科学与技术 班 级 计科N112 学 号 3 学生姓名 吴威宗 指导教师 李永刚 编写日期 2014/6/26 目录一、需求分析随着餐饮行业的迅速发展,现有的人工管理方式已经不能呢个满足管理者的需求,广大餐饮业经营者已经意识到使用计算机应用软件的重要性,决定在餐饮企业的经营管理上引入计算机应用软件管理系统。 酒店管理系统的大致功能:1 开台点餐2 菜品管理3 自动结账4 后台菜系菜品管理5 日月年结账报表6 用户设置根据需求分析,本系统采用的语言:(1)本系统采用Java语言,Java
2、是目前使用最为广泛的计算机语言之一。它具有简单,面向对象,稳定,与平台无关等特点。说他简单,并不是说这门语言很干瘪,而是一种清楚更容易理解的方式实现程序。面向对象是基于对象的变成更符合人的思维方式,使人们更容易编写程序。(2)本系统还采用SQL语言,SQL Server具有许多显著优点:易用性、适合分布组织的可伸缩性、用于决策支持的数据仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性价比等。(3) 本系统有效的利用Java和SQL的优点。二、系统运行环境 操作系统为Windows 7、windows XP或windows 2003 使用的集成开发工具Eclipse 数据库采用SQL S
3、erver2008,项目运行环境为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 java.a
5、wt.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.JButton
6、;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;/
7、 密码框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 GridBag
9、Layout();/ 设置面板的布局管理器为网格组布局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.gri
10、dy = 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, gridBagC
11、onstraints_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);/ 创建并设置用户名下拉菜单usern
12、ameComboBox = new JComboBox();/ 创建用户名下拉菜单组件对象usernameComboBox.setMaximumRowCount(5);/ 设置下拉菜单最多可显示的选项数usernameComboBox.addItem("请选择");/ 为下拉菜单添加提示项usernameComboBox.addActionListener(new UsernameComboBoxActionListener();/ 为下拉菜单添加事件监听器final GridBagConstraints gridBagConstraints = new GridBagCo
13、nstraints();/ 创建网格组布局管理器对象gridBagConstraints.anchor = GridBagConstraints.WEST;/ 设置为靠左侧显示gridBagConstraints.gridy = 1;/ 设置行索引为1gridBagConstraints.gridx = 2;/ 设置列索引为2panel.add(usernameComboBox, gridBagConstraints);/ 将组件按指定的布局管理器添加到面板中/ 创建并设置密码框passwordField = new JPasswordField();/ 创建密码框组件对象passwordFi
14、eld.setColumns(20);/ 设置密码框可显示的字符数passwordField.setText(" ");/ 设置密码框默认显示6个空格passwordField.addFocusListener(new PasswordFieldFocusListener();/ 为密码框添加焦点监听器final GridBagConstraints gridBagConstraints_1 = new GridBagConstraints();/ 创建网格组布局管理器对象gridBagConstraints_1.insets = new Insets(5, 0, 0, 0
15、);/ 设置组件外部上方的填充量为5像素gridBagConstraints_1.anchor = GridBagConstraints.WEST;/ 设置为靠左侧显示gridBagConstraints_1.gridy = 2;/ 设置行索引为2gridBagConstraints_1.gridx = 2;/ 设置列索引为2panel.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);/ 设置组件外部上方的填充量为10像素gridBagConstr
17、aints_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
18、);/ 设置按钮边框和标签之间的间隔landButton.setContentAreaFilled(false);/ 设置不绘制按钮的内容区域landButton.setBorderPainted(false);/ 设置不绘制按钮的边框URL landUrl = this.getClass().getResource("land_submit.png");/ 获得默认情况下登录按钮显示图片的URLlandButton.setIcon(new ImageIcon(landUrl);/ 设置默认情况下登录按钮显示的图片URL landOverUrl = this.getClas
19、s().getResource("land_submit_over.png");/ 获得当鼠标经过登录按钮时显示图片的URLlandButton.setRolloverIcon(new ImageIcon("land_submit_over.png");/ 设置当鼠标经过登录按钮时显示的图片URL landPressedUrl = this.getClass().getResource("land_submit_pressed.png");/ 获得当登录按钮被按下时显示图片的URLlandButton.setPressedIcon(n
20、ew 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.setContentA
21、reaFilled(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
22、_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();e
23、xitButton.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&q
24、uot;);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);/ 初始化用户名下拉菜单
25、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 ac
26、tionPerformed(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("");
27、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) Syste
28、m.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 usern
29、ame = usernameComboBox.getSelectedItem().toString();/ 获得登录用户的名称if (username.equals("请选择") / 查看是否选择了登录用户JOptionPane.showMessageDialog(null, "请选择登录用户!", "友情提示",JOptionPane.INFORMATION_MESSAGE);/ 弹出提示resetUsernameAndPassword();/ 恢复登录用户和登录密码char passwords = passwordField.ge
30、tPassword();/ 获得登录用户的密码String inputPassword = turnCharsToString(passwords);/ 将密码从char型数组转换成字符串if (username.equals("JAVA") / 查看是否为默认用户登录if (inputPassword.equals("") / 查看密码是否为默认密码land(null);/ 登录成功String infos = "请立刻单击“用户管理”按钮添加用户!","添加用户后需要重新登录,本系统才能正常使用!" ;/ 组织
31、提示信息JOptionPane.showMessageDialog(null, infos, "友情提示",JOptionPane.INFORMATION_MESSAGE);/ 弹出提示 else / 密码错误JOptionPane.showMessageDialog(null,"默认用户“TSoft”的登录密码为“111”!", "友情提示",JOptionPane.INFORMATION_MESSAGE);/ 弹出提示passwordField.setText("111");/ 将密码设置为默认密码 else
32、if (inputPassword.length() = 0) / 用户未输入登录密码JOptionPane.showMessageDialog(null, "请输入登录密码!", "友情提示",JOptionPane.INFORMATION_MESSAGE);/ 弹出提示resetUsernameAndPassword();/ 恢复登录用户和登录密码Vector user = Dao.getInstance().sUserByName(username);/ 查询登录用户String password = user.get(5).toString();
33、/ 获得登录用户的密码if (inputPassword.equals(password) / 查看登录密码是否正确land(user);/ 登录成功 else / 登录密码错误JOptionPane.showMessageDialog(null, "登录密码错误,请确认后重新登录!","友情提示", JOptionPane.INFORMATION_MESSAGE);/ 弹出提示resetUsernameAndPassword();/ 恢复登录用户和登录密码private void resetUsernameAndPassword() / 恢复登录用户和
34、登录密码usernameComboBox.setSelectedIndex(0);/ 恢复选中的登录用户为“请选择”项passwordField.setText(" ");/ 恢复密码框的默认值为6个空格return;/ 直接返回private void land(Vector user) / 登录成功TipWizardFrame tipWizard = new TipWizardFrame(user);/ 创建主窗体对象tipWizard.setVisible(true);/ 设置主窗体可见setVisible(false);/ 设置登录窗口不可见private Stri
35、ng 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="jd
36、bc:mysql:/localhost:3306/drinkhome" private String dbUserName="root" private String dbPassword="" private String jdbcName="com.mysql.jdbc.Driver" /* 获取数据库连接 */ public Connection getCon() throws Exception Class.forName(jdbcName); Connection con=DriverManager.getConn
37、ection(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
38、-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();
39、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
40、);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 + "
41、;"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
42、= ""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 = "星期六"brea
43、k;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() retu
44、rn 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 = Ppile(rule);/ 利用验证规则创建Pattern对象Matcher matcher = pattern.matcher(content);/ 利用验证内容获得Match
45、er对象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.JTabl
46、eHeader;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.ListSelectionMod
47、el;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 = L;public MTable() super();public MTa
48、ble(DefaultTableModel tableModel) super(tableModel);/ 表格列值居中显示Overridepublic TableCellRenderer getDefaultRenderer(Class<?> columnClass) / 获得除表格头部分的单元格对象DefaultTableCellRenderer tableRenderer = (DefaultTableCellRenderer) super.getDefaultRenderer(columnClass);/ 设置单元格内容居中显示tableRenderer.setHorizo
49、ntalAlignment(DefaultTableCellRenderer.CENTER);return tableRenderer;/ 表格列名信息Overridepublic JTableHeader getTableHeader() / 获得表格头对象JTableHeader tableHeader = super.getTableHeader();tableHeader.setReorderingAllowed(false);/ 设置表格列不可重排/ 获得表格头的单元格对象DefaultTableCellRenderer headerRenderer = (DefaultTableC
50、ellRenderer) 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.Gri
51、dBagLayout;import java.awt.Image;import .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);/
52、根据传入的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
53、, 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.Focu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 进行性延髓麻痹病因介绍
- T-CIE 232-2024 液气换热型水冷板式间接液冷数据中心设计规范
- 中考地理总复习七下第七章了解地区第九课时教材知识梳理
- 呼吸道职业暴露
- (报批版)塑料造粒环评报告书
- 商务励志工作报告汇报模板33
- 重庆2020-2024年中考英语5年真题回-教师版-专题01 语法选择
- 云南省曲靖市沾益区2024-2025学年七年级9月月考道德与法治试题(解析版)-A4
- 2023年汽车电喷项目融资计划书
- 2023年变压器、整流器和电感器项目融资计划书
- 新教材人教A版高中数学选择性必修第一册全册教学课件
- IEC60335-1-2020中文版-家用和类似用途电器的安全第1部分:通用要求(中文翻译稿)
- 《HSK标准教程1》-HSK1-L8课件
- 幼儿园小班绘本:《藏在哪里了》 课件
- 上册外研社六年级英语复习教案
- 替班换班登记表
- 社会保险法 课件
- 阿利的红斗篷 完整版课件PPT
- 桥梁工程挡土墙施工
- 供应商质量问题处理流程范文
- 实验室生物安全手册(完整版)资料
评论
0/150
提交评论