点菜系统数据库课程设计

Posted wust_ouyangli

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了点菜系统数据库课程设计相关的知识,希望对你有一定的参考价值。

技术分享
import java.awt.*;
import java.sql.*;
import java.awt.event.*;
import java.util.Vector;
import javax.swing.*;
import java.sql.*;
import javax.swing.border.EmptyBorder;
public class test1 extends JFrame implements ActionListener {
    //private static final String  = null;
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    test1 frame = new test1();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
    int orderid=0;
    public test1() 
    {
        
        setTitle("点菜系统");
        setSize(600,600); //设置窗口大小
        setLocation(100,100); //设置窗口的位置
        
        ImageIcon image = new ImageIcon("Image/huanyingguanglin.PNG"); 
        image.setImage(image.getImage().getScaledInstance(600,530,Image.SCALE_DEFAULT)); 
        // 把背景图片显示在一个标签里面  
        JLabel label = new JLabel(image);  
        // 把标签的大小位置设置为图片刚好填充整个面板  
        label.setBounds(0, 0, this.getWidth(), this.getHeight());  
        // 把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明  
        JPanel imagePanel = (JPanel) this.getContentPane();  
        imagePanel.setOpaque(false);  
        // 把背景图片添加到分层窗格的最底层作为背景  
        this.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE)); 
        
        JButton jb=new JButton();
        jb.addActionListener(this);  //增加监听
        jb.setActionCommand("Welcome"); //监听信号
        jb.setPreferredSize(new Dimension(250,50));
        jb.setFont(new Font("宋体",Font.BOLD,20));
        jb.setText("欢迎顾客点击进入菜单");
       
        JPanel jp=new JPanel();
        jp.setOpaque(false);
        jp.setLayout(new GridBagLayout());
        GridBagConstraints c=new GridBagConstraints();
        c.fill=GridBagConstraints.NONE;
        c.gridx=0; c.gridy=0;
        c.insets=new Insets(300,0,50,50);
        jp.add(jb,c);
        
        jb=new JButton();
        jb.addActionListener(this);
        jb.setActionCommand("Close");
        jb.setPreferredSize(new Dimension(250,50));
        jb.setFont(new Font("宋体",Font.BOLD,20));
        jb.setText("取消订单退出系统");
        c=new GridBagConstraints();
        c.fill=GridBagConstraints.NONE;
        c.gridx=1; c.gridy=0;
        c.insets=new Insets(300,0,50,50);
        jp.add(jb,c);
        
        this.add(jp);
        
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);  //是否显示    
    }
    public void actionPerformed(ActionEvent e)
    {
        try
        {
            String url = "jdbc:mysql://localhost:3306/test" ;  //下面几行都是模板    
            String user = "root" ;   
            String password = "" ;
            Class.forName("com.mysql.jdbc.Driver");
            Connection conn=DriverManager.getConnection(url, user, password);
            PreparedStatement ps=null;
            
            if(e.getActionCommand()=="Welcome")
            {    
                ps=conn.prepareStatement("select count(*) from OrderDish"); 
                ResultSet re=ps.executeQuery();
                while(re.next()) orderid=re.getInt(1);
                orderid++;
                ps=conn.prepareStatement("insert into OrderDish values(?,0)");
                ps.setInt(1, orderid); 
                ps.executeUpdate();
                OrderDish order=new OrderDish(this,"菜单",true,orderid); //新的对话界面
            }
            else if(e.getActionCommand()=="Close")
            { 
                ps=conn.prepareStatement("delete from OrderItem where orderid=?");
                ps.setInt(1, orderid);
                ps.executeUpdate();
                ps=conn.prepareStatement("delete from OrderDish where orderid=?"); 
                ps.setInt(1, orderid);
                ps.executeUpdate();
                this.dispose();
            }    
        }
        catch(Exception exp){ exp.printStackTrace(); }
    }
}

class OrderDish extends JDialog implements ActionListener
{
    JPanel[] jp={null,null,null,null};
    JTabbedPane jtp=null;
    JButton but=null;
    JPanel topPane=null,bottomPane=null,pane=null;
    JPanel[] zhushi={null,null,null,null,null,null,null,null,null,null};
    JLabel lab=null;
    
    JCheckBox[] zhushicheck={null,null,null,null,null,null,null,null,null};
    JCheckBox[] sushicheck={null,null,null,null,null,null,null,null};
    JCheckBox[] xiaochicheck={null,null,null,null,null,null};
    JCheckBox[] yinpincheck={null,null,null,null,null,null};

    JComboBox[] zhushicombo={null,null,null,null,null,null,null,null,null};
    JComboBox[] sushicombo={null,null,null,null,null,null,null,null};
    JComboBox[] xiaochicombo={null,null,null,null,null,null};
    JComboBox[] yinpincombo={null,null,null,null,null,null};
    
    ImageIcon image=null;
    JScrollPane[] jsp={null,null,null,null};
    
    String[] zhushiAL={ "zhushi0","zhushi1","zhushi2","zhushi3","zhushi4","zhushi5","zhushi6","zhushi7","zhushi8" };
    String[] sushiAL={ "sushi0","sushi1","sushi2","sushi3","sushi4","sushi5","sushi6","sushi7" };
    String[] xiaochiAL={ "xiaochi0","xiaochi1","xiaochi2","xiaochi3","xiaochi4","xiaochi5" };
    String[] yinpinAL={ "yinpin0","yinpin1","yinpin2","yinpin3","yinpin4","yinpin5" };
    
    String[] zhushinumAL={ "zhushinum0","zhushinum1","zhushinum2","zhushinum3","zhushinum4","zhushinum5","zhushinum6","zhushinum7","zhushinum8" };
    String[] sushinumAL={ "sushinum0","sushinum1","sushinum2","sushinum3","sushinum4","sushinum5","sushinum6","sushinum7" };
    String[] xiaochinumAL={ "xiaochinum0","xiaochinum1","xiaochinum2","xiaochinum3","xiaochinum4","xiaochinum5" };
    String[] yinpinnumAL={ "yinpinnum0","yinpinnum1","yinpinnum2","yinpinnum3","yinpinnum4","yinpinnum5" };
    int orderid=0,zhushinum=9,sushinum=8,xiaochinum=6,yinpinnum=6;
    
    OrderDish(Frame a,String b,boolean c,int oid)
    {
        super(a,b,c);
        orderid=oid;
        this.setTitle("菜单");
        this.setSize(600,600);
        this.setLocation(200,100);
        
        
        //右上角碗碟图片
        image = new ImageIcon("Image/碗碟.PNG"); 
        image.setImage(image.getImage().getScaledInstance(300,100,Image.SCALE_DEFAULT)); 
        lab=new JLabel(image);
        //左上角查看当前订单按钮
        but=new JButton();
        but.setForeground(Color.RED);
        but.setFont(new Font("宋体",Font.BOLD,25));
        but.setText("点击查看当前订单");
        but.setBackground(Color.WHITE);
        but.setPreferredSize(new Dimension(280,90));
        but.addActionListener(this);
        but.setActionCommand("ViewOrder"); //点击查看当前订单监听器
        pane=new JPanel();
        pane.setBackground(Color.WHITE);
        pane.add(but);
        
        //上部分面板
        topPane=new JPanel();
        topPane.setLayout(new GridLayout(1,2));
        topPane.add(pane);
        topPane.add(lab);
        this.add(topPane,BorderLayout.NORTH);
        
        //四个选项卡面板
        jp[0]=new JPanel();
        jp[1]=new JPanel();
        jp[2]=new JPanel();
        jp[3]=new JPanel();

        //给第0个面板添加内容
        jp[0].setLayout(new GridLayout(3,3,10,10));
        for(int i=0;i<zhushinum;i++) zhushi[i]=new JPanel(); //多个面板存放不同的菜
        
        String[] num={"1","2","3","4","5"};
        String[] zhushiname={"水煮肉片  20元/份 ", "农家小炒肉  19元/份", "回锅牛肉 28元/份",
                "红烧鱼块 24元/份", "干烧刁子鱼 24元/份", "干锅手撕鸡 22元/份",
                "香菇焖鸡 26元/份", "四季豆牛肚丝 26元/份", "鱼香肉丝 19元/份"};
        String[] zhushitp={
               "Image/shuizhuroupian.PNG","Image/nongjiaxiaochaorou.PNG","Image/huiguoniurou.PNG",
               "Image/hongshaoyukuai.PNG","Image/ganshaodiaoziyu.PNG","Image/ganguoshousiji.PNG",
               "Image/xianggumenji.PNG","Image/sijidouniudusi.PNG","Image/yuxiangrousi.PNG"
        };
        //给每个菜的面板添加内容
        for(int i=0;i<zhushinum;i++)
        {
            bottomPane=new JPanel();
            bottomPane.setLayout(new GridLayout(2,1));
            
            zhushicheck[i]=new JCheckBox("选中");
            zhushicheck[i].addActionListener(this);
            zhushicheck[i].setActionCommand(zhushiAL[i]); //增加监听器
            
            lab=new JLabel(zhushiname[i]);
            bottomPane.add(lab); 
            
            zhushicombo[i]=new JComboBox(num); //下拉列表框
            zhushicombo[i].setSelectedIndex(0); //设置默认为1(第0个数)
            zhushicombo[i].addActionListener(this);
            zhushicombo[i].setActionCommand(zhushinumAL[i]);
            
            lab=new JLabel("份");
            pane=new JPanel();
            pane.add(zhushicheck[i]); pane.add(zhushicombo[i]); pane.add(lab);
            bottomPane.add(pane); 
            
            image= new ImageIcon(zhushitp[i]); 
            image.setImage(image.getImage().getScaledInstance(180,120,Image.SCALE_DEFAULT));
            lab=new JLabel(image);
            
            zhushi[i].add(lab,BorderLayout.CENTER);
            zhushi[i].add(bottomPane,BorderLayout.SOUTH);
        }
        
        //把所有菜的面板加入到大面板中去
        for(int i=0;i<zhushinum;i++) jp[0].add(zhushi[i]);
        jp[0].setPreferredSize(new Dimension(560,600));
        jsp[0]=new JScrollPane(jp[0]);
     
        //给第1个面板添加内容
        String[] sushiname={
           "酸辣土豆丝 12元/份","番茄炒蛋 13元/份","豆角炒茄子 13元/份",
           "麻婆豆腐 12元/份","手撕包菜 10元/份","小炒香干 13元/份",
           "小炒千叶豆腐 16元/份","口味黑木耳 16元/份"
        };
        String[] sushitp={
            "sushi/suanlatudousi.PNG","sushi/fanqiechaodan.PNG","sushi/doujiaochaoqiezi.PNG",
            "sushi/mapodoufu.PNG","sushi/shousibaocai.PNG","sushi/xiaochaoxianggan.PNG",
            "sushi/xiaochaoqianyedoufu.PNG","sushi/kouweiheimuer.PNG"
        };
        jp[1].setLayout(new GridLayout(3,3,10,10));
        for(int i=0;i<sushinum;i++) zhushi[i]=new JPanel(); //多个面板存放不同的菜
    
        //给每个菜的面板添加内容
        for(int i=0;i<sushinum;i++)
        {
            bottomPane=new JPanel();
            bottomPane.setLayout(new GridLayout(2,1));
            
            sushicheck[i]=new JCheckBox("选中");
            sushicheck[i].addActionListener(this);
            sushicheck[i].setActionCommand(sushiAL[i]); //增加监听器
            
            lab=new JLabel(sushiname[i]);
            bottomPane.add(lab); 
            
            sushicombo[i]=new JComboBox(num); //下拉列表框
            sushicombo[i].setSelectedIndex(0); //设置默认为1(第0个数)
            sushicombo[i].addActionListener(this);
            sushicombo[i].setActionCommand(sushinumAL[i]);
            
            lab=new JLabel("份");
            pane=new JPanel();
            pane.add(sushicheck[i]); pane.add(sushicombo[i]); pane.add(lab);
            bottomPane.add(pane); 
            
            image= new ImageIcon(sushitp[i]); 
            image.setImage(image.getImage().getScaledInstance(180,120,Image.SCALE_DEFAULT));
            lab=new JLabel(image);
            
            zhushi[i].add(lab,BorderLayout.CENTER);
            zhushi[i].add(bottomPane,BorderLayout.SOUTH);
        }
        for(int i=0;i<sushinum;i++) jp[1].add(zhushi[i]);
        jp[1].setPreferredSize(new Dimension(560,600));
        jsp[1]=new JScrollPane(jp[1]);
        
        //给第2个面板添加内容
        String[] xiaochiname={
            "鸡米花  10元/份","无骨鸡柳 10元/份","骨肉相连 10元/份",
            "薯条 8元/份","川香鸡柳 10元/份","香酥鸡块 15元/份"
        };
        String[] xiaochitp={
                "xiaochi/jimihua.PNG","xiaochi/wugujiliu.PNG","xiaochi/gurouxianglian.PNG",
                "xiaochi/shutiao.PNG","xiaochi/chuanxiangjiliu.PNG","xiaochi/xiangsujikuai.PNG"
        };
        jp[2].setLayout(new GridLayout(2,3,10,10));
        for(int i=0;i<xiaochinum;i++) zhushi[i]=new JPanel(); //多个面板存放不同的菜
    
        //给每个菜的面板添加内容
        for(int i=0;i<xiaochinum;i++)
        {
            bottomPane=new JPanel();
            bottomPane.setLayout(new GridLayout(2,1));
            
            xiaochicheck[i]=new JCheckBox("选中");
            xiaochicheck[i].addActionListener(this);
            xiaochicheck[i].setActionCommand(xiaochiAL[i]); //增加监听器
            
            lab=new JLabel(xiaochiname[i]);
            bottomPane.add(lab); 
            
            xiaochicombo[i]=new JComboBox(num); //下拉列表框
            xiaochicombo[i].setSelectedIndex(0); //设置默认为1(第0个数)
            xiaochicombo[i].addActionListener(this);
            xiaochicombo[i].setActionCommand(xiaochinumAL[i]);
            
            lab=new JLabel("份");
            pane=new JPanel();
            pane.add(xiaochicheck[i]); pane.add(xiaochicombo[i]); pane.add(lab);
            bottomPane.add(pane); 
            
            image= new ImageIcon(xiaochitp[i]); 
            image.setImage(image.getImage().getScaledInstance(180,120,Image.SCALE_DEFAULT));
            lab=new JLabel(image);
            
            zhushi[i].add(lab,BorderLayout.CENTER);
            zhushi[i].add(bottomPane,BorderLayout.SOUTH);
        }
        for(int i=0;i<xiaochinum;i++) jp[2].add(zhushi[i]);
        jp[2].setPreferredSize(new Dimension(560,400));
        jsp[2]=new JScrollPane(jp[2]);
        
        //给第3个面板添加内容
        String[] yinpinname={
                "红豆奶茶  10元/份","芒果奶昔 10元/份","蜜桃奶昔 10元/份",
                "姜母茶 15元/份","原味奶茶 10元/份","咖啡奶茶 10元/份"
            };
        String[] yinpintp={
            "yinpin/hongdounaicha.PNG","yinpin/mangguonaixi.PNG","yinpin/mitaonaixi.PNG",
            "yinpin/jiangmucha.PNG","yinpin/yuanweinaicha.PNG","yinpin/kafeinaicha.PNG"
        };
            jp[3].setLayout(new GridLayout(2,3,10,10));
            for(int i=0;i<yinpinnum;i++) zhushi[i]=new JPanel(); //多个面板存放不同的菜
        
            //给每个菜的面板添加内容
            for(int i=0;i<yinpinnum;i++)
            {
                bottomPane=new JPanel();
                bottomPane.setLayout(new GridLayout(2,1));
                
                yinpincheck[i]=new JCheckBox("选中");
                yinpincheck[i].addActionListener(this);
                yinpincheck[i].setActionCommand(yinpinAL[i]); //增加监听器
                
                lab=new JLabel(yinpinname[i]);
                bottomPane.add(lab); 
                
                yinpincombo[i]=new JComboBox(num); //下拉列表框
                yinpincombo[i].setSelectedIndex(0); //设置默认为1(第0个数)
                yinpincombo[i].addActionListener(this);
                yinpincombo[i].setActionCommand(yinpinnumAL[i]);
                
                lab=new JLabel("份");
                pane=new JPanel();
                pane.add(yinpincheck[i]); pane.add(yinpincombo[i]); pane.add(lab);
                bottomPane.add(pane); 
                
                image= new ImageIcon(yinpintp[i]); 
                image.setImage(image.getImage().getScaledInstance(180,120,Image.SCALE_DEFAULT));
                lab=new JLabel(image);
                
                zhushi[i].add(lab,BorderLayout.CENTER);
                zhushi[i].add(bottomPane,BorderLayout.SOUTH);
            }
        
        //把所有菜的面板加入到大面板中去
        for(int i=0;i<yinpinnum;i++) jp[3].add(zhushi[i]);
        jp[3].setPreferredSize(new Dimension(560,400));
        jsp[3]=new JScrollPane(jp[3]);
        
        jtp=new JTabbedPane();
        jtp.add("主食",jsp[0]);
        jtp.add("素食",jsp[1]);
        jtp.add("小吃",jsp[2]);
        jtp.add("饮品",jsp[3]);
        
        
        
        this.add(jtp,BorderLayout.CENTER);
        
        JPanel bottomPane=new JPanel();
        but=new JButton();
        but.setFont(new Font("宋体",Font.BOLD,20));
        but.setText(" 前往结账   ");
        but.addActionListener(this);
        but.setActionCommand("jiezhang");
        bottomPane.add(but);
        
        but=new JButton();
        but.setFont(new Font("宋体",Font.BOLD,20));
        but.setText(" 重新选菜   ");
        but.addActionListener(this);
        but.setActionCommand("chongxuan");
        bottomPane.add(but);
        
        but=new JButton();
        but.setFont(new Font("宋体",Font.BOLD,20));
        but.setText("   返回     ");
        but.addActionListener(this);
        but.setActionCommand("Close");
        bottomPane.add(but);
        
        this.add(bottomPane,BorderLayout.SOUTH);
        
        setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
        setVisible(true);  //是否显示    
    }
    public int Getzhushi(String s)
    {
        for(int i=0;i<zhushinum;i++) if(s==zhushiAL[i]) return i;
        return -1;
    }
    public int Getzhushinum(String s)
    {
        for(int i=0;i<zhushinum;i++) if(s==zhushinumAL[i]) return i;
        return -1;
    }
    public int Getsushi(String s)
    {
        for(int i=0;i<sushinum;i++) if(s==sushiAL[i]) return i;
        return -1;
    }
    public int Getsushinum(String s)
    {
        for(int i=0;i<sushinum;i++) if(s==sushinumAL[i]) return i;
        return -1;
    }
    public int Getxiaochi(String s)
    {
        for(int i=0;i<xiaochinum;i++) if(s==xiaochiAL[i]) return i;
        return -1;
    }
    public int Getxiaochinum(String s)
    {
        for(int i=0;i<xiaochinum;i++) if(s==xiaochinumAL[i]) return i;
        return -1;
    }
    public int Getyinpin(String s)
    {
        for(int i=0;i<yinpinnum;i++) if(s==yinpinAL[i]) return i;
        return -1;
    }
    public int Getyinpinnum(String s)
    {
        for(int i=0;i<yinpinnum;i++) if(s==yinpinnumAL[i]) return i;
        return -1;
    }
    public void actionPerformed(ActionEvent e)
    {
        if(e.getActionCommand()=="Close") this.dispose(); //关闭窗口
        else if(e.getActionCommand()=="jiezhang") { Check ck=new Check(this,"结账",true,orderid); }//产生结账窗口
        else if(e.getActionCommand()=="chongxuan")
        {
            //把所有的选择取消,并删除数据库中所有选菜内容
            for(int i=0;i<zhushinum;i++) 
            { 
                if(zhushicheck[i].isSelected())    zhushicheck[i].setSelected(false);
                zhushicombo[i].setSelectedIndex(0);
            }
            for(int i=0;i<sushinum;i++) 
            {
                 if(sushicheck[i].isSelected()) sushicheck[i].setSelected(false);
                 zhushicombo[i].setSelectedIndex(0);
            }
            for(int i=0;i<xiaochinum;i++) 
            {
                if(xiaochicheck[i].isSelected()) xiaochicheck[i].setSelected(false);
                xiaochicombo[i].setSelectedIndex(0);
            }
            for(int i=0;i<yinpinnum;i++)
            {
                if(yinpincheck[i].isSelected()) yinpincheck[i].setSelected(false);
                yinpincombo[i].setSelectedIndex(0);
            }
            try
            {
                String url = "jdbc:mysql://localhost:3306/test" ;  //下面几行都是模板    
                String user = "root" ;   
                String password = "" ;
                Class.forName("com.mysql.jdbc.Driver");
                Connection conn=DriverManager.getConnection(url, user, password);
                PreparedStatement ps=null; 
                
                ps=conn.prepareStatement("delete from OrderItem where orderid=?"); 
                ps.setInt(1, orderid);
                ps.executeUpdate();        
            }
            catch(Exception exp)
            {
                 exp.printStackTrace();
            }
            return;
        }
        else if(e.getActionCommand()=="ViewOrder"){ View view=new View(this,"当前订单",true,orderid); }
        else
        {
            try
            {
                String url = "jdbc:mysql://localhost:3306/test" ;  //下面几行都是模板    
                String user = "root" ;   
                String password = "" ;
                Class.forName("com.mysql.jdbc.Driver");
                Connection conn=DriverManager.getConnection(url, user, password);

                PreparedStatement ps=null; 
                int a=Getzhushi(e.getActionCommand());
                if(a!=-1)
                {
                    if(zhushicheck[a].isSelected()) 
                    {
                        ps=conn.prepareStatement("insert into OrderItem values(?,?,?)");
                        ps.setInt(1,orderid); ps.setString(2, zhushiAL[a]);
                        int num=zhushicombo[a].getSelectedIndex()+1;
                        ps.setInt(3, num);
                        ps.executeUpdate();
                    }
                    else
                    {
                        ps=conn.prepareStatement("delete from OrderItem where orderid=? and id=?");
                        ps.setInt(1, orderid); ps.setString(2, zhushiAL[a]);
                        ps.executeUpdate();
                    }
                    return;
                }
                a=Getsushi(e.getActionCommand());
                if(a!=-1)
                {
                    
                    if(sushicheck[a].isSelected()) 
                    {
                        ps=conn.prepareStatement("insert into OrderItem values(?,?,?)");
                        ps.setInt(1,orderid); ps.setString(2, sushiAL[a]);
                        int num=sushicombo[a].getSelectedIndex()+1;
                        ps.setInt(3, num);
                        ps.executeUpdate();
                    }
                    else
                    {
                        ps=conn.prepareStatement("delete from OrderItem where orderid=? and id=?");
                        ps.setInt(1, orderid); ps.setString(2, sushiAL[a]);
                        ps.executeUpdate();
                    }
                    return;
                }
                a=Getxiaochi(e.getActionCommand());
                if(a!=-1)
                {
                    if(xiaochicheck[a].isSelected()) 
                    {
                        ps=conn.prepareStatement("insert into OrderItem values(?,?,?)");
                        ps.setInt(1,orderid); ps.setString(2, xiaochiAL[a]);
                        int num=xiaochicombo[a].getSelectedIndex()+1;
                        ps.setInt(3, num);
                        ps.executeUpdate();
                    }
                    else
                    {
                        ps=conn.prepareStatement("delete from OrderItem where orderid=? and id=?");
                        ps.setInt(1, orderid); ps.setString(2, xiaochiAL[a]);
                        ps.executeUpdate();
                    }
                    return;
                }
                a=Getyinpin(e.getActionCommand());
                if(a!=-1)
                {
                    if(yinpincheck[a].isSelected()) 
                    {
                        ps=conn.prepareStatement("insert into OrderItem values(?,?,?)");
                        ps.setInt(1,orderid); ps.setString(2, yinpinAL[a]);
                        int num=yinpincombo[a].getSelectedIndex()+1;
                        ps.setInt(3, num);
                        ps.executeUpdate();
                    }
                    else
                    {
                        ps=conn.prepareStatement("delete from OrderItem where orderid=? and id=?");
                        ps.setInt(1, orderid); ps.setString(2, yinpinAL[a]);
                        ps.executeUpdate();
                    }
                    return;
                }
                a=Getzhushinum(e.getActionCommand());
                if(a!=-1)
                {
                    if(zhushicheck[a].isSelected())
                    {
                        ps=conn.prepareStatement("update OrderItem set num=? where orderid=? and id=?");
                        int num=zhushicombo[a].getSelectedIndex()+1;
                        ps.setInt(1, num);    ps.setInt(2, orderid); ps.setString(3, zhushiAL[a]);    
                        ps.executeUpdate();
                    }
                }
                a=Getsushinum(e.getActionCommand());
                if(a!=-1)
                {
                    if(sushicheck[a].isSelected())
                    {
                        ps=conn.prepareStatement("update OrderItem set num=? where orderid=? and id=?");
                        int num=sushicombo[a].getSelectedIndex()+1;
                        ps.setInt(1, num);    ps.setInt(2, orderid); ps.setString(3, sushiAL[a]);    
                        ps.executeUpdate();
                    }
                }
                a=Getxiaochinum(e.getActionCommand());
                if(a!=-1)
                {
                    if(xiaochicheck[a].isSelected())
                    {
                        ps=conn.prepareStatement("update OrderItem set num=? where orderid=? and id=?");
                        int num=xiaochicombo[a].getSelectedIndex()+1;
                        ps.setInt(1, num);    ps.setInt(2, orderid); ps.setString(3, xiaochiAL[a]);    
                        ps.executeUpdate();
                    }
                }
                a=Getyinpinnum(e.getActionCommand());
                if(a!=-1)
                {
                    if(yinpincheck[a].isSelected())
                    {
                        ps=conn.prepareStatement("update OrderItem set num=? where orderid=? and id=?");
                        int num=yinpincombo[a].getSelectedIndex()+1;
                        ps.setInt(1, num);    ps.setInt(2, orderid); ps.setString(3, yinpinAL[a]);    
                        ps.executeUpdate();
                    }
                } 
                
            }
            catch(Exception exp)
            {
                exp.printStackTrace();
            }
            
        }
    }
}

class View extends JDialog implements ActionListener
{
    JScrollPane[] jsp={null,null,null,null,null};
    int orderid=0;
    View(JDialog a,String b,boolean c,int oid)
    {
        super(a,b,c);
        orderid=oid;
        this.setSize(600,600);
        this.setLocation(300,100);
        //连接数据库把选菜信息显示出来
        JTabbedPane jtp=new JTabbedPane();
        String[] sql={
            "select name,price,num from Dish,OrderItem where orderid=? and OrderItem.id=Dish.id",
            "select name,price,num from Dish,OrderItem where orderid=? and OrderItem.id=Dish.id and Dish.id like ‘zhushi%‘",
            "select name,price,num from Dish,OrderItem where orderid=? and OrderItem.id=Dish.id and Dish.id like ‘sushi%‘",
            "select name,price,num from Dish,OrderItem where orderid=? and OrderItem.id=Dish.id and Dish.id like ‘xiaochi%‘",
            "select name,price,num from Dish,OrderItem where orderid=? and OrderItem.id=Dish.id and Dish.id like ‘yinpin%‘"
        };
        try
        {
            String url = "jdbc:mysql://localhost:3306/test" ;  //下面几行都是模板    
            String user = "root" ;   
            String password = "" ;
            Class.forName("com.mysql.jdbc.Driver");
            Connection conn=DriverManager.getConnection(url, user, password);
            PreparedStatement ps=null; 
            
            for(int i=0;i<5;i++)
            {
                Vector ziduan=new Vector();
                ziduan.add("菜名"); ziduan.add("单价"); ziduan.add("数量");
                Vector jilu=new Vector(); //集合类      
                //这里就要连接数据库把信息显示出来
                ps=conn.prepareStatement(sql[i]); 
                ps.setInt(1, orderid);
                ResultSet re=ps.executeQuery();
                while(re.next())
                {
                    String name=re.getString(1);
                    String price =String.format("%d", re.getInt(2));
                    String num=String.format("%d", re.getInt(3));
                    Vector v=new Vector();
                    v.add(name); v.add(price); v.add(num);
                    jilu.add(v);
                }
                JTable tab=new JTable(jilu,ziduan);//JTable是表格,里面的参数是先记录后字段
                tab.setFont(new Font("楷体",Font.BOLD,20));
                tab.setBackground(Color.CYAN);
                tab.setRowHeight(30);
                jsp[i]=new JScrollPane(tab); //滚动条
                
            }
        }
        catch(Exception exp)
        {
             exp.printStackTrace();
        }
        
        jtp.add("所有",jsp[0]);
        jtp.add("主食",jsp[1]);
        jtp.add("素食",jsp[2]);
        jtp.add("小吃",jsp[3]);
        jtp.add("饮品",jsp[4]);
        this.add(jtp,BorderLayout.CENTER);
        
        JButton but=new JButton();
        but.setFont(new Font("宋体",Font.BOLD,20));
        but.setText(" 返回  ");
        but.addActionListener(this);
        but.setActionCommand("exit");
        JPanel pane=new JPanel();
        pane.add(but,BorderLayout.CENTER);
        this.add(pane,BorderLayout.SOUTH);
        setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
        setVisible(true);  //是否显示
    }
    public void actionPerformed(ActionEvent e)
    {
        if(e.getActionCommand()=="exit")
        {
            this.dispose();
        }
    }
}
class Check extends JDialog implements ActionListener
{
    JButton[] jb={null,null};
    int orderid=0,sum=0;
    Check(JDialog a,String b,boolean c,int oid)
    {
        super(a,b,c);
        orderid=oid;
        this.setTitle("结账");
        this.setSize(600,600);
        this.setLocation(300,100);
        
        //连接数据库把所有选菜信息显示出来
        Vector ziduan=new Vector();
        ziduan.add("菜名"); ziduan.add("单价"); ziduan.add("数量");
        Vector jilu=new Vector();
        //连接数据库得到信息
        try
        {
            String url = "jdbc:mysql://localhost:3306/test" ;  //下面几行都是模板    
            String user = "root" ;   
            String password = "" ;
            Class.forName("com.mysql.jdbc.Driver");
            Connection conn=DriverManager.getConnection(url, user, password);
            PreparedStatement ps=null; 
            
            ps=conn.prepareStatement("select name,price,num from Dish,OrderItem where orderid=? and OrderItem.id=Dish.id"); 
            ps.setInt(1, orderid);
            ResultSet re=ps.executeQuery();
            while(re.next())
            {
                String name=re.getString(1);
                int p=re.getInt(2);
                int t=re.getInt(3);
                sum+=p*t;
                String price =String.format("%d", p);
                String num=String.format("%d", t);
                Vector v=new Vector();
                v.add(name); v.add(price); v.add(num);
                jilu.add(v);
            }
            
        }
        catch(Exception exp)
        {
             exp.printStackTrace();
        }
        //加总价标签
        JLabel lab=new JLabel();
        lab.setFont(new Font("宋体",Font.BOLD,20));
        lab.setText("总计 "+sum+"元");
        lab.setHorizontalAlignment(JLabel.CENTER);
        this.add(lab,BorderLayout.NORTH);
        //加表格记录
        JTable tab=new JTable(jilu,ziduan);//JTable是表格,里面的参数是先记录后字段
        tab.setFont(new Font("楷体",Font.BOLD,20));
        tab.setBackground(Color.CYAN);
        tab.setRowHeight(30);
        JScrollPane jsp=new JScrollPane(tab); //滚动条    
        this.add(jsp,BorderLayout.CENTER);
        //加按钮
        jb[0]=new JButton();
        jb[0].setFont(new Font("宋体",Font.BOLD,20));
        jb[0].setText("  确认支付   ");
        jb[0].addActionListener(this);
        jb[0].setActionCommand("Pay");
        
        jb[1]=new JButton();
        jb[1].setFont(new Font("宋体",Font.BOLD,20));
        jb[1].setText("  返回    ");
        jb[1].addActionListener(this);
        jb[1].setActionCommand("Close");
        
        JPanel bottomPane=new JPanel();
        bottomPane.add(jb[0]); bottomPane.add(jb[1]);
        this.add(bottomPane,BorderLayout.SOUTH);
        
        setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
        setVisible(true);  //是否显示
    }
    public void actionPerformed(ActionEvent e)
    {
        //
        if(e.getActionCommand()=="Close")
        {
            this.dispose();
        }
        else if(e.getActionCommand()=="Pay")
        {
            try
            {
                String url = "jdbc:mysql://localhost:3306/test" ;  //下面几行都是模板    
                String user = "root" ;   
                String password = "" ;
                Class.forName("com.mysql.jdbc.Driver");
                Connection conn=DriverManager.getConnection(url, user, password);

                PreparedStatement ps=null; 
                ps=conn.prepareStatement("update OrderDish set money=? where orderid=?");
                ps.setInt(1, sum); ps.setInt(2, orderid);
                ps.executeUpdate();                
            }
            catch(Exception exp)
            {
                 exp.printStackTrace();
            }
            Pay pay=new Pay(this,"支付",true);
        }
    }
}

class Pay extends JDialog implements ActionListener
{
    JTabbedPane jtp=null;
    JButton jb=null;
    JPanel bottomPane=null;
    JLabel[] jl={null,null,null,null};
    ImageIcon image=null;
    Pay(JDialog a,String b,boolean c)
    {
        super(a,b,c);
        this.setSize(600,600);
        this.setLocation(400,100);
        image= new ImageIcon("Image/zhifubao.PNG"); 
        image.setImage(image.getImage().getScaledInstance(600,500,Image.SCALE_DEFAULT));
        jl[0]=new JLabel(image);
        image= new ImageIcon("Image/weixin.PNG"); 
        image.setImage(image.getImage().getScaledInstance(600,500,Image.SCALE_DEFAULT));
        jl[1]=new JLabel(image);
        image= new ImageIcon("Image/wangyin.PNG"); 
        image.setImage(image.getImage().getScaledInstance(600,500,Image.SCALE_DEFAULT));
        jl[2]=new JLabel(image);
        image= new ImageIcon("Image/xianjing.PNG"); 
        image.setImage(image.getImage().getScaledInstance(600,500,Image.SCALE_DEFAULT));
        jl[3]=new JLabel(image);
        
        jtp=new JTabbedPane();
        jtp.add("支付宝支付",jl[0]);
        jtp.add(" 微信支付  ",jl[1]);
        jtp.add(" 网银支付  ",jl[2]);
        jtp.add(" 现金支付  ",jl[3]);
        
        this.add(jtp,BorderLayout.CENTER);
        
        jb=new JButton();
        jb.setFont(new Font("宋体",Font.BOLD,20));
        jb.setText("   完成退出      ");
        jb.addActionListener(this);
        jb.setActionCommand("exit");
        
        bottomPane=new JPanel();
        bottomPane.add(jb);
        this.add(bottomPane,BorderLayout.SOUTH);
        
        setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
        setVisible(true);  
    }
    public void actionPerformed(ActionEvent e)
    {
        if(e.getActionCommand()=="exit")
        {
            this.dispose();
        }
    }
}
View Code

需要添加n多图片,加载连接mysql的驱动器

数据库建表

技术分享
CREATE TABLE OrderDish
(
    orderid int not null,
    money int,
    primary key(orderid)
);


CREATE TABLE Dish
(
    id varchar(20) not null,
    name nchar(10),
    price int,
    type nchar(10),
    primary key(id)
);
insert into Dish values(zhushi0,水煮肉片,20,主食);
insert into Dish values(zhushi1,农家小炒肉,19,主食);
insert into Dish values(zhushi2,回锅牛肉,28,主食);
insert into Dish values(zhushi3,红烧鱼块,24,主食);
insert into Dish values(zhushi4,干烧刁子鱼,24,主食);
insert into Dish values(zhushi5,干锅手撕鸡,22,主食);
insert into Dish values(zhushi6,香菇焖鸡,26,主食);
insert into Dish values(zhushi7,四季豆牛肚丝,26,主食);
insert into Dish values(zhushi8,鱼香肉丝,19,主食);  
  
insert into Dish values(sushi0,酸辣土豆丝,12,素食);
insert into Dish values(sushi1,番茄炒蛋,13,素食);
insert into Dish values(sushi2,豆角炒茄子,13,素食);
insert into Dish values(sushi3,麻婆豆腐,12,素食);
insert into Dish values(sushi4,手撕包菜,10,素食);
insert into Dish values(sushi5,小炒香干,13,素食);
insert into Dish values(sushi6,小炒千叶豆腐,16,素食);
insert into Dish values(sushi7,口味黑木耳,16,素食);

insert into Dish values(xiaochi0,鸡米花,10,小吃);
insert into Dish values(xiaochi1,无骨鸡柳,10,小吃);
insert into Dish values(xiaochi2,骨肉相连,10,小吃);
insert into Dish values(xiaochi3,薯条,8,小吃);
insert into Dish values(xiaochi4,川香鸡柳,10,小吃);
insert into Dish values(xiaochi5,香酥鸡块,15,小吃);

insert into Dish values(yinpin0,红豆奶茶,10,饮品);
insert into Dish values(yinpin1,芒果奶昔,10,饮品);
insert into Dish values(yinpin2,蜜桃奶昔,10,饮品);
insert into Dish values(yinpin3,姜母茶,15,饮品);
insert into Dish values(yinpin4,原味奶茶,10,饮品);
insert into Dish values(yinpin5,咖啡奶茶,10,饮品);

CREATE TABLE OrderItem
(
    orderid int not null,
    id varchar(20) not null,
    num int,
    primary key(orderid,id),
    foreign key(orderid) references OrderDish(orderid),
    foreign key(id) references Dish(id)
);

drop table OrderItem;
drop table Dish;
drop table OrderDish;


try
{
                    
}
catch(Exception exp)
{
     exp.printStackTrace();
}

String url = "jdbc:mysql://localhost:3306/test" ;  //下面几行都是模板    
String user = "root" ;   
String password = "" ;
Class.forName("com.mysql.jdbc.Driver");
Connection conn=DriverManager.getConnection(url, user, password);

PreparedStatement ps=null; 
ps=conn.prepareStatement("select count(*) from OrderDish"); 
ResultSet re=ps.executeQuery();
View Code

 

以上是关于点菜系统数据库课程设计的主要内容,如果未能解决你的问题,请参考以下文章

餐馆管理之点菜

HTML5期末大作业:餐饮美食网站设计——咖啡(10页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 咖啡网页设计 美食餐饮网页设计...(代码片段

手把手教你写一个点菜系统(附源码)

医院管理系统数据库,课程设计,SQLserver,纯代码设计

课程设计管理系统/小游戏/数据结构课程设计C++/C代码

C语言课程设计:学生学籍管理系统。有谁有代码给我做个参考吗?谢谢了,C语言和C++的都可以。