酒店点菜系统一本系统需完成的功能:酒店点菜系统(菜单:编号,名称,价格;顾客:桌号,菜单编号,份数):在饭店可以按照酒店菜单点菜,实现无服务生点菜服务。
二需求分析:采用JA V A语言程序设计的基本知识,JA V A语言程序设计的基本方法和基本思想,以及运用数据库对表的基本操作,常用查询语句的使用。
ACCESS对表的数据的设计;利用图形化编程和JDBC技术,来实现下列系统的简单运行。
在酒店里有很多种菜谱,每一种菜有一个名称,对应一个唯一的编号和一个固定的单位价格。
当有顾客来酒店时,顾客选择一个桌号(也是唯一的),由于每一个桌子上有一份菜谱,顾客可以按照菜谱上有的菜来点菜。
顾客在结账时应付的钱为:每种菜的单位价格相加为总的付款。
其基本的流程为:顾客来酒店选择桌号——>按照菜谱上的菜的种类选择所需要菜的对应编号——>然后统计所选择菜的价格——>结帐付款为所有菜的编号所相对应的价格相加并验证自己付款是否有误。
根据功能需求,本系统只需要一个类,利用ACCESS建立一个表就可以了。
通过JA V A 与该数据表的连接关系对该表的数据进行输入,然后通过顾客对数据的随机选择来调用数据表的数据,来实现不同的功能。
三设计和编译步骤:本系统采用基本的JA V A语言编写,由于JA V A语言不同与C++语言,它具有其语言的特殊性,包含很多类,基本是每一种功能为一个类。
开始有主框架类,通过按钮监听事件调用别的类,完成功能的实现。
1.本系统的主要功能模快为:(1)。
基本框架类public class jiudian implements ActionListener,ItemListener {}class jiudian1 implements ActionListener {}class jiezhang implements ActionListener{(2)。
单选钮被点击时触发函数public void itemStateChanged(ItemEvent e) {}(3)。
主程序public static void main(String args[])throws Exception{ new jiudian();new jiudian1(f); }2. 根据题目的要求和功能要求语言要调用的包如下:import java.sql.*;import javax.swing.*; //各种组件import java.awt.*;import java.awt.event.*;import javax.swing.border.*;3. 部分类的代码设计public jiudian(){ public jiudian1(JFrame f) //构造方法{ Dialog=new JDialog(); //新建一对话框Dialog.setTitle ("酒店管理系统"); //设置标题Container contentPane=Dialog.getContentPane(); //获得其内容面板JPanel buttonPanel = new JPanel(); //创建一中间容器JPanelJButton b=new JButton("进入系统");//创建一原子组件——按钮b.addActionListener(this);//为按钮添加事件监听器对象buttonPanel.add(b); //将此按钮添加到中间容器b=new JButton("退出系统"); //再创建一按钮b.addActionListener(this);//为按钮增加事件监听器buttonPanel.add(b);//将按钮添加到中间容器buttonPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.green,2),"欢迎光临",TitledBorder.CENTER,TitledBorder.TOP));contentPane.add(buttonPanel,BorderLayout.CENTER);//将中间容器添加到面板Dialog.setBounds(250,250,200,200);Dialog.setVisible (true);this.f=f; }// Dialog = new JDialog(f,"选择您想要的桌号和您喜欢的菜",true);f=new JFrame("选择您想要的桌号和您喜欢的菜");Container dialogPane=f.getContentPane();dialogPane.setLayout(new GridLayout(3,1));JPanel p1=new JPanel(); //新建一个Panelp1.setLayout(new GridLayout(1,5));//设置边框p1.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder( Color.green,4),"选择桌号",TitledBorder.CENTER,TitledBorder.TOP));桌号按钮为:r1=new JRadioButton("one");r2=new JRadioButton("two");r3=new JRadioButton("three");r4=new JRadioButton("four");r5=new JRadioButton("five");菜谱按钮选择项按钮为:c1=new JRadioButton(" 小鸡炖蘑菇,价格为:25元/份");c2=new JRadioButton(" 青椒炒肉,价格为:18元/份");c3=new JRadioButton(" 东北火锅,价格为:36元/份");c4=new JRadioButton(" 豆腐炖鱼头,价格为:36元/份");如下图:为单选按钮增加ItemListener事件监听器r1.addItemListener(this);r2.addItemListener(this);r3.addItemListener(this);r4.addItemListener(this);r5.addItemListener(this);c1.addItemListener(this);c2.addItemListener(this);c3.addItemListener(this);c4.addItemListener(this);数据的输入为:以选择第一桌为例:case 1:{switch(i){ case 1:m=1;val=25;str="小鸡炖蘑菇";SQLOrder="Insert Into jiudian Values ("+m+",'"+str+"',"+val+")";stmt.executeUpdate(SQLOrder);//break;case 2:m=1;val=18;str="青椒炒肉";SQLOrder="Insert Into jiudian Values ("+m+",'"+str+"',"+val+")";stmt.executeUpdate(SQLOrder);//break;case 3:m=1;val=36;str="东北火锅";SQLOrder="Insert Into jiudian Values ("+m+",'"+str+"',"+val+")";stmt.executeUpdate(SQLOrder);//break;case 4:m=1;val=36;str="豆腐炖鱼头";SQLOrder="Insert Into jiudian Values ("+m+",'"+str+"',"+val+")";stmt.executeUpdate(SQLOrder);//break;}break;}结账按钮函数为:class jiezhang implements ActionListener{JDialog Dialog;JLabel L1,L2,L3,L4,L5;JTextField F1=new JTextField();jiezhang(JFrame f){Dialog = new JDialog(f,"结账",true);Container dialogPane=Dialog.getContentPane();dialogPane.setLayout(new GridLayout(4,2));L1=new JLabel("请输入您的桌号",SwingConstants.CENTER);L2=new JLabel("您总共消费了:",SwingConstants.CENTER);L4=new JLabel("您总共点了:",SwingConstants.CENTER);L3=new JLabel("",SwingConstants.CENTER);L5=new JLabel("",SwingConstants.CENTER);dialogPane.add(L1);dialogPane.add(F1);dialogPane.add(L2);dialogPane.add(L3);dialogPane.add(L4);dialogPane.add(L5);JButton b1=new JButton("确定");dialogPane.add(b1);JButton b2=new JButton("取消");dialogPane.add(b2);b1.addActionListener(this);b2.addActionListener(this);Dialog.setBounds(400,400,300,300);Dialog.show();}public void actionPerformed(ActionEvent e){String cmd=e.getActionCommand();if(cmd.equals("确定")){try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConnection("jdbc:odbc:jiudian","test","1234");Statement stmt=con.createStatement();int sa=Integer.parseInt(F1.getText());ResultSet rs=stmt.executeQuery("select sum(values) from jiudian where id="+sa+"");while(rs.next()){L3.setText(""+rs.getInt(1)+"元"); }ResultSet rr=stmt.executeQuery("select * from jiudian");int j=0;while(rr.next()) j=j+1;L5.setText(""+j+" 份菜");stmt.executeUpdate("delete from jiudian wheid="+sa+"");JOptionPane.showMessageDialog (Dialog,"谢谢惠顾!","",JOptionPane.W ARNING_MESSAGE);F1.setText("");stmt.close();con.close();}catch(Exception em){} }if(cmd.equals("取消")){Dialog.dispose();}}如下图:上述过程所对应的数据库中的数据为:四调试分析:首先是看文件是否调入数据库包,是否和数据库建立连接,这一步很关键,关系到后面数据是否插入成功,和查询正确。