Java 食堂管理系统-MySQL数据库,窗体程序 有详细设计文档

今天为大家分享一个java 编写的食堂管理系统,目前系统功能已经完善,后续会进一步完善。整个系统界面漂亮,有完整得源码,希望大家可以喜欢。喜欢的帮忙点赞和关注。一起编程、一起进步。

开发环境

开发语言为Java,开发环境Eclipse或者IDEA都可以。数据库采用:MySQL。运行主程序,或者执行打开JAR文件即可以运行本程序。

系统框架

利用JDK自带的SWING框架开发,不需要安装第三方JAR包。MySQL数据库,纯窗体模式,直接运行Main文件即可以。同时带有详细得设计文档。运行命令为JAR shitang.jar

主要功能

食堂管理系统分系统管理员和普通用户两种。系统管理员具备得主要功能有,实现系统登录、用户管理、食堂管理、菜谱管理、公告管理管理。普通用户只具有查看得权限,无法对系统进行任何修改。

(1)系统登陆:用户登陆输入用户名和密码,点击登陆按钮。系统校验成功后,进入系统主界面,否则提示用户名和密码错,要求用户重新输入。系统管理员进入系统后,能对

(2)用户管理:系统管理员可以对用户进行管理。用户增加、用户删除、用户修改。用户信息得字段信息包括:用户名、密码、电话、地址、性别、邮箱、用户类型字段等信息。

(3)食堂管理:系统管理员可以对食堂进行管理。食堂增加、食堂删除、食堂修改。 食堂信息包括食堂ID、食堂名称

(4)菜谱管理:系统管理员可以对菜谱进行管理。菜谱增加、菜谱删除、菜谱修改。 菜谱信息包括:菜谱ID、菜谱名称、菜谱简介、价格、所属食堂

(5)新闻公告:系统管理员可以对公告进行管理。菜谱增加、菜谱删除、菜谱修改。

(6)权限管理:系统管理员可以对公告进行管理。菜谱增加、菜谱删除、菜谱修改。 普通用户没有用户管理得权限;其他权限只具有查看权限,无法对系统进行任何修改。

运行效果

1 登陆界面

2 用户管理

3 添加用户

4 菜品管理

5 菜品添加

6 公告管理

7 公告添加

7 查看公告

普通用户智能进行查看,无法对信息进行任何修改

核心代码

package com.View;
import com.SqlConnection.SqlConn;
import com.Tools.*;//引入自定义的工具包(字体)
import com.model.DishModel;
import com.model.ShitangModel;
import com.model.NewsModel;
import com.model.UserModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class ManageView extends JFrame implements ActionListener {
    // 定义菜单需要要的组件
    JMenuBar jmb;
    JMenu jm1, jm3,jm4,jm5,jm6;
    JMenuItem jm1_1;
    JMenuItem jm3_1, jm3_2, jm3_3, jm3_4;
    JMenuItem jm4_1, jm4_2, jm4_3, jm4_4;
    JMenuItem jm5_1, jm5_2, jm5_3, jm5_4;
    JMenuItem jm6_1, jm6_2, jm6_3, jm6_4,jm6_5;
    JTable jtb;
    // 定义一个滚动面板,用于存放表格
    JScrollPane jsp;

    // 定义设置窗口初始位置的变量
    int width, height;

    
    UserModel pvm;
    NewsModel newsm;
    ShitangModel shitangm;
    DishModel bookmodel;
    
    // 把菜单封装成一个函数
    public void menuInit() {
        jm1 = new JMenu("系统");
        jm1.setFont(MyFont.f1);
        jm1_1 = new JMenuItem("<-退出系统->");
        jm1_1.addActionListener(this);
        jm1_1.setFont(MyFont.f2);
        jm1.add(jm1_1);

        

        jm3 = new JMenu("用户管理");
        jm3.setFont(MyFont.f1);
        jm3_1 = new JMenuItem("所有用户");
        jm3_1.setFont(MyFont.f2);
        jm3_1.addActionListener(this);
        jm3_2 = new JMenuItem("新增用户");
        jm3_2.setFont(MyFont.f2);
        jm3_2.addActionListener(this);
        jm3_3 = new JMenuItem("修改用户");
        jm3_3.setFont(MyFont.f2);
        jm3_3.addActionListener(this);

        jm3_4 = new JMenuItem("删除用户");
        jm3_4.setFont(MyFont.f2);
        jm3_4.addActionListener(this);

        jm3.add(jm3_1);
        if (MyFont.usertype.equalsIgnoreCase("系统管理员")) {
           jm3.add(jm3_2);
           jm3.add(jm3_3);
           jm3.add(jm3_4);
        }
        
        jm4 = new JMenu("食堂管理");
        jm4.setFont(MyFont.f1);
        jm4_1 = new JMenuItem("显示所有食堂");
        jm4_1.setFont(MyFont.f2);
        jm4_1.addActionListener(this);
        jm4_2 = new JMenuItem("新增食堂");
        jm4_2.setFont(MyFont.f2);
        jm4_2.addActionListener(this);
        jm4_3 = new JMenuItem("修改食堂");
        jm4_3.setFont(MyFont.f2);
        jm4_3.addActionListener(this);

        jm4_4 = new JMenuItem("删除食堂");
        jm4_4.setFont(MyFont.f2);
        jm4_4.addActionListener(this);
        
        jm4.add(jm4_1);
        if (MyFont.usertype.equalsIgnoreCase("系统管理员")) {
          jm4.add(jm4_2);
          jm4.add(jm4_3);
          jm4.add(jm4_4);
        }
        
        jm5 = new JMenu("菜品管理");
        jm5.setFont(MyFont.f1);
        jm5_1 = new JMenuItem("显示所有菜品");
        jm5_1.setFont(MyFont.f2);
        jm5_1.addActionListener(this);
        jm5_2 = new JMenuItem("新增菜品");
        jm5_2.setFont(MyFont.f2);
        jm5_2.addActionListener(this);
        jm5_3 = new JMenuItem("修改菜品");
        jm5_3.setFont(MyFont.f2);
        jm5_3.addActionListener(this);

        jm5_4 = new JMenuItem("删除菜品");
        jm5_4.setFont(MyFont.f2);
        jm5_4.addActionListener(this);
        
        jm5.add(jm5_1);
        if (MyFont.usertype.equalsIgnoreCase("系统管理员")) {
          jm5.add(jm5_2);
          jm5.add(jm5_3);
          jm5.add(jm5_4);
        }
        
        jm6 = new JMenu("公告管理");
        jm6.setFont(MyFont.f1);
        jm6_1 = new JMenuItem("显示所有公告");
        jm6_1.setFont(MyFont.f2);
        jm6_1.addActionListener(this);
        jm6_2 = new JMenuItem("新增公告");
        jm6_2.setFont(MyFont.f2);
        jm6_2.addActionListener(this);
        jm6_3 = new JMenuItem("修改公告");
        jm6_3.setFont(MyFont.f2);
        jm6_3.addActionListener(this);

        jm6_4 = new JMenuItem("删除公告");
        jm6_4.setFont(MyFont.f2);
        jm6_4.addActionListener(this);
        
        
        jm6_5 = new JMenuItem("查看公告");
        jm6_5.setFont(MyFont.f2);
        jm6_5.addActionListener(this);
        
        jm6.add(jm6_1);
        if (MyFont.usertype.equalsIgnoreCase("系统管理员")) {
           jm6.add(jm6_2);
           jm6.add(jm6_3);
           jm6.add(jm6_4);
        }
        
        jm6.add(jm6_5);
        
        // 设置菜单条
        jmb = new JMenuBar();
        // 把菜单添加到菜单条
        jmb.add(jm1);

        if (MyFont.usertype.equalsIgnoreCase("系统管理员")) {
           jmb.add(jm3);
        }
        jmb.add(jm4);
        jmb.add(jm5);
        jmb.add(jm6);
    
        // 把菜单条添加到窗体
        this.setJMenuBar(jmb);
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        // ManageView manageview=new ManageView();
    }

    public ManageView(String usertype) {
        // 调用菜单函数
        this.menuInit();

        // 当登陆进入界面时,最初显示的界面
        jtb = new JTable();
        // 在刚登陆进去的时候不让数据显示出来,如果即时显示,当数据量大时,影响速度,也不太符合常规 ,因此在这里不用更新数据模型
        jsp = new JScrollPane(jtb);
        this.add(jsp, "Center");

        // 设置窗体属性
        this.setSize(800, 600);
        this.setTitle("食堂管理系统-->" + usertype);
        // 设置窗口的初始位置
        width = Toolkit.getDefaultToolkit().getScreenSize().width;
        height = Toolkit.getDefaultToolkit().getScreenSize().height;
        this.setLocation(width / 2 - 280, height / 2 - 250);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);

    }

    // ***************事件响应********************//
    @Override
    public void actionPerformed(ActionEvent arg0) {
        // TODO Auto-generated method stub
        // 退出系统
        if (arg0.getSource() == jm1_1) {
            Object[] options = { "确定", "取消" };
            int respose = JOptionPane.showOptionDialog(this, "你确认要退出系统吗?",
                    "退出系统确认对话框", JOptionPane.DEFAULT_OPTION,
                    JOptionPane.WARNING_MESSAGE, null, options, options[0]);
            if (respose == 0) {
                System.out.println("你按下了确认按钮!");
                System.exit(0);// 退出系统
            } else if (respose == 1) {
                System.out.println("你按下了取消按钮!");
                return;
            }

        }

    
        
        // *****************用户管理********************************************************//
        else if (arg0.getSource() == jm3_1) {
            pvm = new UserModel(null);
            jtb.setModel(pvm);
            jtb.setVisible(true);
        }
        
        // *********新增用户***************************************************************//
        else if (arg0.getSource() == jm3_2) {
            System.out.println("新增按钮被点击了");

            AddUser addstu = new AddUser(this, "添加用户信息", true);
            addstu.setLocationRelativeTo(null);
            if (addstu.falg() == 1) {
                
                pvm = new UserModel(null);
                jtb.setModel(pvm);
            } else {

            }
        }
        // **************修改用户*********************************************************//
        else if (arg0.getSource() == jm3_3) {
            System.out.println("修改用户被点击了");
            // 先判断是否选择了一行,没有选中,则返回-1,如果选中,则返回选中的那一行的序号,也就是第几行
            int rowNo = jtb.getSelectedRow();
            if (rowNo == -1) {
                // 没有选中,提示信息
                JOptionPane.showMessageDialog(this, "你没有选中一行!");
                return;
            } else {
            
                UpdateUser updateStu = new UpdateUser(this, "修改用户信息",
                        pvm, rowNo, true);
                updateStu.setLocationRelativeTo(null);
                pvm = new UserModel(null);
                jtb.setModel(pvm);
                
            }
        }
       //******************修改用户数据******************************************************//
        else if (arg0.getSource() == jm3_4) {
            int rowNo = jtb.getSelectedRow();
            // 判断是否已经选择一行,如果没有选择,则弹出一个对话框,当等于-1时,表示没有选择
            if (rowNo == -1) {
                JOptionPane.showMessageDialog(this, "你没有选择一行!");
                return;
            } else {
                // 得到选择的那一行的学号
                String id = (String) pvm.getValueAt(rowNo, 0);// 某一行的第0列就是学号,因为得到的学号是字符串,所以得转型
                System.out.println("id=" + id);
                String sql = "delete  from t_user where id='" + id + "'";
                Object[] options = { "确定", "取消" };
                int respose = JOptionPane.showOptionDialog(this,
                        "你确认要删除改用户的信息吗?", "删除信息确认对话框",
                        JOptionPane.DEFAULT_OPTION,
                        JOptionPane.WARNING_MESSAGE, null, options, options[0]);
                if (respose == 0) {
                    System.out.println("你按下了确认按钮!");
                    // 连接数据库
                    SqlConn sqlconn = new SqlConn();
                    sqlconn.sqlDelete(sql);
                    // 注意:********这在里必须调用关闭数据库连接的方法,在这里,如果没有关闭资源,则表模型无法更新成功,切记!!!!!
                    sqlconn.closeSqlConn();
                    pvm = new UserModel(null);
                    jtb.setModel(pvm);
                } else if (respose == 1) {
                    System.out.println("你按下了取消按钮!");
                    return;
                }

            }
        }
     
        
        
        // *****************食堂管理********************************************************//
                else if (arg0.getSource() == jm4_1) {
                    shitangm = new ShitangModel(null);
                    jtb.setModel(shitangm);
                    jtb.setVisible(true);
                }
                
         //*********新增食堂***************************************************************//
                else if (arg0.getSource() == jm4_2) {
                    System.out.println("新增按钮被点击了");

                    AddShitang addcatelog = new AddShitang(this, "添加食堂信息", true);
                    addcatelog.setLocationRelativeTo(null);
                    if (addcatelog.falg() == 1) {
                        
                        shitangm = new ShitangModel(null);
                        jtb.setModel(shitangm);
                    } else {

                    }
                }
           // **************修改食堂*********************************************************//
                else if (arg0.getSource() == jm4_3) {
                    
                    // 先判断是否选择了一行,没有选中,则返回-1,如果选中,则返回选中的那一行的序号,也就是第几行
                    int rowNo = jtb.getSelectedRow();
                    if (rowNo == -1) {
                        // 没有选中,提示信息
                        JOptionPane.showMessageDialog(this, "你没有选中一行!");
                        return;
                    } else {
                        
                        UpdateShitang updateshitang = new UpdateShitang(this, "修改食堂信息",
                                shitangm, rowNo, true);
                        updateshitang.setLocationRelativeTo(null);
                        shitangm = new ShitangModel(null);
                        jtb.setModel(shitangm);
                        
                    }
                }
               //******************删除食堂******************************************************//
                else if (arg0.getSource() == jm4_4) {
                    int rowNo = jtb.getSelectedRow();
                    // 判断是否已经选择一行,如果没有选择,则弹出一个对话框,当等于-1时,表示没有选择
                    if (rowNo == -1) {
                        JOptionPane.showMessageDialog(this, "你没有选择一行!");
                        return;
                    } else {
                        // 得到选择的那一行的学号
                        String id = (String) shitangm.getValueAt(rowNo, 0);// 某一行的第0列就是学号,因为得到的学号是字符串,所以得转型
                        System.out.println("id=" + id);
                        String sql = "delete  from t_shitang where shitang_id='" + id + "'";
                        Object[] options = { "确定", "取消" };
                        int respose = JOptionPane.showOptionDialog(this,
                                "你确认要删除该食堂的信息吗?", "删除信息确认对话框",
                                JOptionPane.DEFAULT_OPTION,
                                JOptionPane.WARNING_MESSAGE, null, options, options[0]);
                        if (respose == 0) {
                            System.out.println("你按下了确认按钮!");
                            // 连接数据库
                            SqlConn sqlconn = new SqlConn();
                            sqlconn.sqlDelete(sql);
                            // 注意:********这在里必须调用关闭数据库连接的方法,在这里,如果没有关闭资源,则表模型无法更新成功,切记!!!!!
                            sqlconn.closeSqlConn();
                            shitangm = new ShitangModel(null);
                            jtb.setModel(shitangm);
                        } else if (respose == 1) {
                            System.out.println("你按下了取消按钮!");
                            return;
                        }

                    }
                }
        
        
        
        // *****************公告管理********************************************************//
                else if (arg0.getSource() == jm6_1) {
                    newsm = new NewsModel(null);
                    jtb.setModel(newsm);
                    jtb.setVisible(true);
                }
                
         
         //*********新增公告***************************************************************//
                else if (arg0.getSource() == jm6_2) {
                    System.out.println("新增按钮被点击了");

                    AddNews addnews = new AddNews(this, "添加公告信息", true);
                    addnews.setLocationRelativeTo(null);
                    if (addnews.falg() == 1) {
                        
                        newsm = new NewsModel(null);
                        jtb.setModel(newsm);
                    } else {

                    }
                }
           // **************修改公告*********************************************************//
                else if (arg0.getSource() == jm6_3) {
                    
                    // 先判断是否选择了一行,没有选中,则返回-1,如果选中,则返回选中的那一行的序号,也就是第几行
                    int rowNo = jtb.getSelectedRow();
                    if (rowNo == -1) {
                        // 没有选中,提示信息
                        JOptionPane.showMessageDialog(this, "你没有选中一行!");
                        return;
                    } else {
                    
                        UpdateNews updatenews = new UpdateNews(this, "修改公告信息",
                                newsm, rowNo, true);
                        updatenews.setLocationRelativeTo(null);
                        newsm = new NewsModel(null);
                        jtb.setModel(newsm);
                        
                    }
                }
               //******************删除公告******************************************************//
                else if (arg0.getSource() == jm6_4) {
                    int rowNo = jtb.getSelectedRow();
                    // 判断是否已经选择一行,如果没有选择,则弹出一个对话框,当等于-1时,表示没有选择
                    if (rowNo == -1) {
                        JOptionPane.showMessageDialog(this, "你没有选择一行!");
                        return;
                    } else {
                        // 得到选择的那一行的学号
                        String id = (String) newsm.getValueAt(rowNo, 0);// 某一行的第0列就是学号,因为得到的学号是字符串,所以得转型
                        System.out.println("id=" + id);
                        String sql = "delete  from t_news where id='" + id + "'";
                        Object[] options = { "确定", "取消" };
                        int respose = JOptionPane.showOptionDialog(this,
                                "你确认要删除该公告信息吗?", "删除信息确认对话框",
                                JOptionPane.DEFAULT_OPTION,
                                JOptionPane.WARNING_MESSAGE, null, options, options[0]);
                        if (respose == 0) {
                            System.out.println("你按下了确认按钮!");
                            // 连接数据库
                            SqlConn sqlconn = new SqlConn();
                            sqlconn.sqlDelete(sql);
                            // 注意:********这在里必须调用关闭数据库连接的方法,在这里,如果没有关闭资源,则表模型无法更新成功,切记!!!!!
                            sqlconn.closeSqlConn();
                            newsm = new NewsModel(null);
                            jtb.setModel(newsm);
                        } else if (respose == 1) {
                            System.out.println("你按下了取消按钮!");
                            return;
                        }

                    }
                }
        
        
                else if (arg0.getSource() == jm6_5) {
                    
                    // 先判断是否选择了一行,没有选中,则返回-1,如果选中,则返回选中的那一行的序号,也就是第几行
                    int rowNo = jtb.getSelectedRow();
                    if (rowNo == -1) {
                        // 没有选中,提示信息
                        JOptionPane.showMessageDialog(this, "你没有选中一行!");
                        return;
                    } else {
                    
                        SeeNews updatenews = new SeeNews(this, "查看公告信息",
                                newsm, rowNo, true);
                        updatenews.setLocationRelativeTo(null);
                        newsm = new NewsModel(null);
                        jtb.setModel(newsm);
                    }
            }
        
        //*****************菜品管理********************************************************//
                else if (arg0.getSource() == jm5_1) {
                    bookmodel = new DishModel(null);
                    jtb.setModel(bookmodel);
                    jtb.setVisible(true);
                }
         //*********新增菜品***************************************************************//
                else if (arg0.getSource() == jm5_2) {
                    System.out.println("新增按钮被点击了");

                    AddDish adddish = new AddDish(this, "添加菜品信息", true);
                    adddish.setLocationRelativeTo(null);
                    if (adddish.falg() == 1) {
                        
                        bookmodel = new DishModel(null);
                        jtb.setModel(bookmodel);
                    } else {

                    }
                }
           // **************修改菜品*********************************************************//
                else if (arg0.getSource() == jm5_3) {
                    
                    // 先判断是否选择了一行,没有选中,则返回-1,如果选中,则返回选中的那一行的序号,也就是第几行
                    int rowNo = jtb.getSelectedRow();
                    if (rowNo == -1) {
                        // 没有选中,提示信息
                        JOptionPane.showMessageDialog(this, "你没有选中一行!");
                        return;
                    } else {
                    
                        UpdateDish updatedish = new UpdateDish(this, "修改菜品信息",
                                bookmodel, rowNo, true);
                        updatedish.setLocationRelativeTo(null);
                        bookmodel = new DishModel(null);
                        jtb.setModel(bookmodel);
                        
                    }
                }
               //******************删除菜品******************************************************//
                else if (arg0.getSource() == jm5_4) {
                    int rowNo = jtb.getSelectedRow();
                    // 判断是否已经选择一行,如果没有选择,则弹出一个对话框,当等于-1时,表示没有选择
                    if (rowNo == -1) {
                        JOptionPane.showMessageDialog(this, "你没有选择一行!");
                        return;
                    } else {
                        // 得到选择的那一行的学号
                        String id = (String) bookmodel.getValueAt(rowNo, 0);// 某一行的第0列就是学号,因为得到的学号是字符串,所以得转型
                        System.out.println("id=" + id);
                        String sql = "delete  from t_dish where id='" + id + "'";
                        Object[] options = { "确定", "取消" };
                        int respose = JOptionPane.showOptionDialog(this,
                                "你确认要删除该菜品信息吗?", "删除信息确认对话框",
                                JOptionPane.DEFAULT_OPTION,
                                JOptionPane.WARNING_MESSAGE, null, options, options[0]);
                        if (respose == 0) {
                            System.out.println("你按下了确认按钮!");
                            // 连接数据库
                            SqlConn sqlconn = new SqlConn();
                            sqlconn.sqlDelete(sql);
                            // 注意:********这在里必须调用关闭数据库连接的方法,在这里,如果没有关闭资源,则表模型无法更新成功,切记!!!!!
                            sqlconn.closeSqlConn();
                            bookmodel = new DishModel(null);
                            jtb.setModel(bookmodel);
                        } else if (respose == 1) {
                            System.out.println("你按下了取消按钮!");
                            return;
                        }

                    }
                }
        //------------------    
    }

}
  • 3
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

计算机程序

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值