基于Java+Swing+mysql餐厅点餐管理系统

news2024/11/16 3:42:39

基于Java+Swing+mysql餐厅点餐管理系统

  • 一、系统介绍
  • 二、功能展示
    • 1.用户登陆
    • 2.用户注册(顾客)
    • 3.顾客可以点餐
    • 4.顾客可以查看订单信息
    • 5.顾客可以修改个人信息
    • 6.新增套餐(管理员)
    • 7.管理套餐(管理员)
    • 8.处理定单(管理员)
  • 三、系统实现
    • 1.order.java
  • 四、其它
    • 1.其他系统实现

一、系统介绍

该系统实现了
(1)管理员和顾客登陆、顾客注册功能
(2)管理员可以新增套餐
(3)管理员可以管理套餐
(4)管理员可以处理订单
(5)管理员可以修改密码
(6)顾客可以点餐
(7)顾客可以查看订单信息
(8)顾客可以修改个人信息。

运行环境:eclipse\idea\mysql8.0以上

二、功能展示

1.用户登陆

在这里插入图片描述

2.用户注册(顾客)

在这里插入图片描述

3.顾客可以点餐

在这里插入图片描述

4.顾客可以查看订单信息

在这里插入图片描述

5.顾客可以修改个人信息

在这里插入图片描述

6.新增套餐(管理员)

在这里插入图片描述

7.管理套餐(管理员)

在这里插入图片描述

8.处理定单(管理员)

在这里插入图片描述

三、系统实现

1.order.java

package cn.student.view;

import java.awt.Dimension;
import java.awt.EventQueue;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane; 
import javax.swing.JPanel; 
import javax.swing.JTable;
import javax.swing.JTextField;

import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color; 
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;

import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;

import cn.student.dao.StudentDao;
import cn.student.model.Student;
import cn.student.view.MainPanel; 
public class StudentFrame extends JFrame
{ 
	// 定义布局
	BorderLayout mainLayout = new BorderLayout();
	
	CardLayout layout = new CardLayout();
	JFrame bamFrame;
	MainPanel mainPanel = new MainPanel();// 主面板
	JPanel upPanel = new JPanel();// 主面板中的---上面板
	JPanel downPanel = new JPanel();// 主面板中的---下面板		
	StudentDao studentdao = new StudentDao();
	AddStudentPanel addStudentPanel = new AddStudentPanel();//添加课程页面
	UpdateStudentPanel updateStudentPanel = new UpdateStudentPanel();//添加课程页面
	final Object[] columnNames = {"学号", "姓名", "性别","学院", "专业", "生日","籍贯", "电话", "邮箱"}; //列名最好用final修饰 
	Object[][] rowData = queryData("");;
	DefaultTableModel model = new DefaultTableModel(rowData,columnNames);
	JTable dataTable = new JTable (model);	
	JScrollPane pane1;
	JScrollPane pane2;
	JScrollPane pane3;
	public StudentFrame() {	
		downPanel.setLayout(layout);
		//dataTable.setPreferredScrollableViewportSize(new Dimension(650, 100));//设置表格的大小 
		dataTable.setRowHeight (30);//设置每行的高度为20 
		dataTable.setRowHeight (0, 20);//设置第1行的高度为15 
		dataTable.setRowMargin (5);//设置相邻两行单元格的距离 
		dataTable.setSelectionBackground (Color.white);//设置所选择行的背景色 
		dataTable.setSelectionForeground (Color.blue);//设置所选择行的前景色 
		//friends.setGridColor (Color.black);//设置网格线的颜色 
		dataTable.selectAll ();//选择所有行 
		//dataTable.setRowSelectionInterval (1,2);//设置初始的选择行,这里是1到3行都处于选择状态 
		dataTable.clearSelection ();//取消选择 
		dataTable.setDragEnabled (false);//不懂这个 
		dataTable.setShowGrid (false);//是否显示网格线 
		dataTable.setShowHorizontalLines (false);//是否显示水平的网格线 
		dataTable.setShowVerticalLines (true);//是否显示垂直的网格线 
		//friends.setValueAt ("tt", 0, 0);//设置某个单元格的值,这个值是一个对象 
		dataTable.doLayout (); 
		dataTable.setBackground (Color.lightGray); 
        // 设置表格中的数据居中显示
        DefaultTableCellRenderer r=new DefaultTableCellRenderer();
        r.setHorizontalAlignment(JLabel.CENTER);
        dataTable.setDefaultRenderer(Object.class,r);
		pane1 = new JScrollPane (addStudentPanel);//JTable最好加在JScrollPane上
		pane1.setPreferredSize(new Dimension (900,500));
		pane2 = new JScrollPane (updateStudentPanel);//JTable最好加在JScrollPane上
		pane2.setPreferredSize(new Dimension (900,500));
		//JScrollPane pane2 = new JScrollPane (example2); 
		pane3 = new JScrollPane (dataTable); 
		pane3.setPreferredSize(new Dimension (900,500));
		
		downPanel.add("cardSelect", pane3);// 卡片一 (查询)
		downPanel.add("cardUpdate", pane2);// 卡片一 (修改)
		downPanel.add("cardAdd", pane1);// 卡片一 (添加)
		
		upPanel.add(mainPanel);
		//downPanel.add(addCoursePanel);
		//downPanel.add(pane1);
		// 定义主窗体
		bamFrame = new JFrame("学生信息管理系统");
		bamFrame.setLayout(mainLayout);
		bamFrame.setSize(1050, 600);// 设定窗体大小
		// 给窗体加面板
		bamFrame.add(upPanel, BorderLayout.NORTH);
		bamFrame.add(downPanel, BorderLayout.SOUTH);
		addListeners();// 调用监听方法
		bamFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//bamFrame.pack();
		bamFrame.setVisible(true);
		//设置窗口居中
		bamFrame.setLocationRelativeTo(null);
	}
	
	// 窗体中部分对象监听方法
	private void addListeners() {
		// 查询按钮
		mainPanel.getSelectButton().addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				String cname = mainPanel.getsnoField().getText();
				System.out.print(cname);
				Object[][] rowData2 = queryData(cname);
				model.setDataVector(rowData2, columnNames);
				layout.show(downPanel, "cardSelect");
			}

		});

		// 添加按钮
		mainPanel.getAddButton().addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				layout.show(downPanel, "cardAdd");
			}
		});
		
		// 添加按钮
		mainPanel.getUpdateButton().addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				int i = dataTable.getSelectedRow();
				if(i>=0) {
					String sno = (String) dataTable.getValueAt(i, 0);
					String name = (String) dataTable.getValueAt(i, 1);
					String sex = (String) dataTable.getValueAt(i, 2);
					String school = (String) dataTable.getValueAt(i, 3);
					String professional = (String) dataTable.getValueAt(i, 4);
					String birthday = (String) dataTable.getValueAt(i, 5);
					String address = (String) dataTable.getValueAt(i, 6);
					String tel = (String) dataTable.getValueAt(i, 7);
					String email = (String) dataTable.getValueAt(i, 8);
					updateStudentPanel.getSnoText().setText(sno);
					updateStudentPanel.getNameText().setText(name);
					updateStudentPanel.getSexText().setText(sex);
					updateStudentPanel.getSchoolText().setText(school);
					updateStudentPanel.getProfessionalText().setText(professional);
					updateStudentPanel.getBirthdayText().setText(birthday);
					updateStudentPanel.getAddressText().setText(address);
					updateStudentPanel.getTelText().setText(tel);
					updateStudentPanel.getEmailText().setText(email);
					layout.show(downPanel, "cardUpdate");
				}else {
					JOptionPane.showMessageDialog(downPanel, "请选择要修改的学生信息!");
					return;
				}				
			}
		});
		
		// 点击《提交》按钮
		addStudentPanel.getOkButton().addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				String sno = addStudentPanel.getSnoText().getText();
				String name = addStudentPanel.getNameText().getText();
				String sex = addStudentPanel.getSexText().getText();
				String school = addStudentPanel.getSchoolText().getText();
				String professional = addStudentPanel.getProfessionalText().getText();
				String birthday = addStudentPanel.getBirthdayText().getText();
				String address = addStudentPanel.getAddressText().getText();
				String tel = addStudentPanel.getTelText().getText();
				String email = addStudentPanel.getEmailText().getText();
				int i = studentdao.addStudent(sno, name, sex, school, professional, birthday, address, tel, email);
				if(i>0) {
					JOptionPane.showMessageDialog(downPanel, "学生信息添加成功!");
					addStudentPanel.getSnoText().setText("");
					addStudentPanel.getNameText().setText("");
					addStudentPanel.getSexText().setText("");
					addStudentPanel.getSchoolText().setText("");
					addStudentPanel.getProfessionalText().setText("");
					addStudentPanel.getBirthdayText().setText("");
					addStudentPanel.getAddressText().setText("");
					addStudentPanel.getTelText().setText("");
					addStudentPanel.getEmailText().setText("");
				}else{
					JOptionPane.showMessageDialog(downPanel, "学生信息添加失败!");
				}
			}
		});
		
		// 点击《返回》按钮
		addStudentPanel.getBackButton().addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				Object[][] rowData2 = queryData("");
				model.setDataVector(rowData2, columnNames);
				layout.show(downPanel, "cardSelect");				
			}
		});
		// 点击《提交》按钮
		updateStudentPanel.getOkButton().addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				String sno = updateStudentPanel.getSnoText().getText();
				String name = updateStudentPanel.getNameText().getText();
				String sex = updateStudentPanel.getSexText().getText();
				String school = updateStudentPanel.getSchoolText().getText();
				String professional = updateStudentPanel.getProfessionalText().getText();
				String birthday = updateStudentPanel.getBirthdayText().getText();
				String address = updateStudentPanel.getAddressText().getText();
				String tel = updateStudentPanel.getTelText().getText();
				String email = updateStudentPanel.getEmailText().getText();
				int i = studentdao.updateStudent(sno, name, sex, school, professional, birthday, address, tel, email);
				if(i>0) {
					JOptionPane.showMessageDialog(downPanel, "学生信息添加成功!");
					Object[][] rowData2 = queryData("");
					model.setDataVector(rowData2, columnNames);
					layout.show(downPanel, "cardSelect");
				}else{
					JOptionPane.showMessageDialog(downPanel, "学生信息添加失败!");
				}
			}
		});
		
		// 点击《返回》按钮
		updateStudentPanel.getBackButton().addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				Object[][] rowData2 = queryData("");
				model.setDataVector(rowData2, columnNames);
				layout.show(downPanel, "cardSelect");				
			}
		});
		// 点击《删除》按钮
		mainPanel.getDelButton().addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				int i = dataTable.getSelectedRow();
				if(i>=0) {
				String sno = (String) dataTable.getValueAt(i, 0);
				int j=studentdao.DelStudent(sno);;
				if(j>0) {
					JOptionPane.showMessageDialog(downPanel, "删除成功!");
					Object[][] rowData2 = queryData("");
					model.setDataVector(rowData2, columnNames);
				}else {
					JOptionPane.showMessageDialog(downPanel, "删除失败!");
					Object[][] rowData2 = queryData("");
					model.setDataVector(rowData2, columnNames);
				}
				}else {
					JOptionPane.showMessageDialog(downPanel, "请选择要删除的信息!");
				}
			}
		});
	}
	
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					StudentFrame frame = new StudentFrame();
					//frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}
	
    //生成表格数据
    /**
     * @return
     */
    public Object[][] queryData(String sno){

        List<Student> list=studentdao.queryStudent(sno);
        rowData=new Object[list.size()][columnNames.length];

        for(int i=0;i<list.size();i++){
            for(int j=0;j<rowData.length;j++){
            	rowData[i][0]=list.get(i).getSno();
            	rowData[i][1]=list.get(i).getName();
            	rowData[i][2]=list.get(i).getSex();
            	rowData[i][3]=list.get(i).getSchool();
            	rowData[i][4]=list.get(i).getProfessional();
            	rowData[i][5]=list.get(i).getBirthday();
            	rowData[i][6]=list.get(i).getAddress();
            	rowData[i][7]=list.get(i).getTel();
            	rowData[i][8]=list.get(i).getEmail();
            }
        }
        return rowData;
    }
}

四、其它

1.其他系统实现

Java+Swing实现学生选课管理系统
Java+Swing实现学校教务管理系统
Java+Swing+sqlserver学生成绩管理系统
Java+Swing用户信息管理系统
Java+Swing实现的五子棋游戏
基于JavaSwing 银行管理系统
Java+Swing+mysql仿QQ聊天工具
Java+Swing 聊天室
Java+Swing+dat文件存储实现学生选课管理系统
Java+Swing可视化图像处理软件
Java+Swing学生信息管理系统
Java+Swing图书管理系统
Java+Swing图书管理系统2.0
基于java+swing+mysql图书管理系统3.0
大作业-基于java+swing+mysql北方传统民居信息管理系统

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/114009.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring整合Activemq

目录 一、Pom.xml 二、Spring配置文件 三、队列 四、主题 一、Pom.xml <dependencies><!-- activemq核心依赖包 --><dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-all</artifactId><version>…

安全分析开发环境一键部署

安全分析开发环境一键部署 Gartner 报告中指出 [7]&#xff0c;Platfor m Ops for AI 是一种编排和扩展运营人工智能的方法&#xff0c;利用跨数据、机器学习、人工智能和应用程序 开发管道的多种最佳实践&#xff0c;为基于人工智能的系统创建一个高效的交付模型。Platform O…

Android 8~12蓝牙架构组件介绍

一. Android 蓝牙架构图 可以看到Android蓝牙一共分为几层&#xff1a; APPLICATION FRAMEWORKBLUETOOTH PROCESSJNIBLUETOOTH STACKHIDL INTERFACESVENDOR IMPLEMENTATAION 生成内容路径以rk3399举例,在更新的过程中会遇到这个问题&#xff0c;解决方式是&#xff1a; root a…

node.js+uni计算机毕设项目基于微信小程序的图书管理系统(程序+小程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等…

【前端设计】寄存器复位对综合面积的影响

我们的目标是┏ (゜ω゜)=☞芯片前端全栈工程师~喵! 前言 之前在写代码的时候呢,就一直被要求尽量使用不带复位的寄存器,理由是节约面积和降低功耗。因此我一直有两个疑问:能省多少面积?能降低多少功耗? 鉴于我一直没能掌握功耗测试的技能,因此这次先来看看面积的影响…

k8s本地联调工具kt-connect

1、Kt Connect简介 KT Connect &#xff08; Kubernetes Developer Tool &#xff09; 是轻量级的面向 Kubernetes 用户的开发测试环境治理辅助工具。其核心是通过建立本地到集群以及集群到本地的双向通道&#xff0c;从而提升在持续交付生命周期中开发环节的效率问题以及开发测…

[Linux]多线程的同步和互斥(线程池 | 单例模式 | 其他常见的锁 | 读者写者问题)

文章目录线程池线程安全的单例模式单例模式的特点饿汉方式和懒汉方式单例模式实现线程池其他常见的锁读者写者问题线程池 线程池是一种线程使用模式。线程过多会带来调度开销&#xff0c;进而影响缓存局部性和整体性能。而线程池维护着多个线程&#xff0c;等待着监督管理者分…

K26 SOM从emmc启动linux——2

问题 在K26 SOM从emmc启动linux文章中&#xff0c;使用EMMC启动后&#xff0c;出现下图打印&#xff1a; 这里本身是存在问题的&#xff0c;没有显示系统名称&#xff0c;打印中有错误提示。 解决办法 在Image Packaging Configuration中将petalinux-initramfs-image修改成p…

教你快速实现“基于Docker快速构建基于Prometheus的MySQL监控系统”

&#x1f341; 个人网站&#xff1a;知识浅谈 &#x1f4cc; 资料分享群&#xff1a;资源分享 &#x1f356;400多套PPT模板&#xff1a;商务模板&学生答辩 &#x1f91e;这次都给他拿下&#x1f91e; 基于Docker快速构建基于Prometheus的MySQL监控系统 先来捋一下数据流的…

Java Lambda表达式原理解析

前言 java中有lambda,在使用java的过程中我们没少用(啥?用的kotlin?你别说话)但是你知道lambda的实现原理吗? 接下来就来解析lambda实现,不过在lambda之前我们与一个熟悉的老伙计谈谈心————匿名类,为什么因为他们有点类似. 匿名类的实现方式 从字节码的层面上来说ne…

长光卫星冲刺科创板上市,预计2025年底前实现300颗卫星在轨

近日&#xff0c;长光卫星技术股份有限公司&#xff08;下称“长光卫星”&#xff09;在上海证券交易所递交招股书&#xff0c;准备在科创板上市。 本次冲刺科创板上市&#xff0c;长光卫星计划募资26.83亿元&#xff0c;将用于“吉林一号”卫星星座建设项目&#xff08;二期&a…

第五章:数据完整性

一、实体、参照、用户自定义完整性 1、【单选题】CREATE TABLE时定义属性上的约束条件&#xff0c;检查列值是否满足一个条件表达式的定义关键词为&#xff1a; 正确答案&#xff1a; A 2、【多选题】创建患者住院主记录表pat_visit&#xff0c;并定义主码{patient_id,visit_…

《图解TCP/IP》阅读笔记(第七章 7.1、7.2、7.3)—— 路由控制概念与路由控制算法

第七章 路由协议 本章旨在将详细介绍路由控制以及实现路由控制功能的相关协议 7.1 路由控制的定义 在互联网这片汪洋大海中&#xff0c;数据就好似一叶扁舟&#xff0c;没有灯塔的指引&#xff0c;是难以寻得目的地的。这种进行正确方向引导的转发数据的处理&#xff0c;就叫…

[LeetCode周赛复盘] 第 94 场双周赛20221225

[LeetCode周赛复盘] 第 94 场双周赛20221225 一、本周周赛总结二、 [Easy] 6273. 最多可以摧毁的敌人城堡数目1. 题目描述2. 思路分析3. 代码实现三、[Medium] 6274. 奖励最顶尖的 K 名学生1. 题目描述2. 思路分析3. 代码实现四、[Medium] 6295. 最小化两个数组中的最大值1. 题…

从入门到项目实战 - Vue 键盘事件

Vue 中键盘事件的使用上一节&#xff1a;《 Vue 事件处理 》| 下一节&#xff1a;《 Vue 中鼠标事件的使用 》jcLee95 邮箱 &#xff1a;291148484163.com CSDN 主页&#xff1a;https://blog.csdn.net/qq_28550263?spm1001.2101.3001.5343 本文地址&#xff1a;https:/…

【TypeScript】TS泛型讲解及其使用

目录 泛型 泛型函数使用 泛型约束 多泛型使用 泛型接口 泛型类 泛型工具类型 泛型 泛型是可以在保证类型安全的前提下&#xff0c;让函数等与多种类型一起工作&#xff0c;从而实现复用&#xff0c;常用于&#xff1a;函数、接口、class中。日常我们创建的函数&#xf…

车牌检测模型训练(含源码和数据集)

车牌检测模型训练(含源码和数据集) 本教程利用NVIDIA TAO进行车牌检测模型的训练: 模型框架:SSD数据集: CRPD, 连接:https://github.com/yxgong0/CRPD训练框架: NVIDIA TAO, 安装教程连接: https://docs.nvidia.com/tao/tao-toolkit/text/tao_toolkit_quick_start_guide.html…

目标检测之YOLOv3算法分析

基本原理 特征网络 输入输出 输入416∗416∗3416*416*3416∗416∗3大小的图片&#xff08;不唯一&#xff0c;但图片大小必为32的倍数&#xff09;&#xff0c;输出3个尺度的feature map,分别为13∗13∗25513*13*25513∗13∗255&#xff0c;26∗26∗25526*26*25526∗26∗255…

RV1126笔记十九:吸烟行为检测及部署<六>

若该文为原创文章,转载请注明原文出处。 模型测试 一、pt文件测试 pt文件是在windows下训练生成的,测试环境为py3.8 1、首先查看虚拟环境列表,然后切换于是py3.8的虚拟环境。 conda env list // 查看虚拟环境列表 conda activate yolo // 切换虚拟环境 2…

leetcode:1739. 放置盒子【找规律!】

目录题目截图题目分析ac code总结题目截图 题目分析 样例有规律&#xff0c;它希望我们先按每层1, 3, 6这样叠起来&#xff0c;比如能跌i层那么至少有i * ( i 1) // 2个底层多出来的东西再做考虑多出来的东西考虑1 2 3…能加到多少个比如说如果多出来3个的话&#xff0c;放…