今天为大家分享一个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;
}
}
}
//------------------
}
}