『Java课设』JavaSwing+MySQL实现医院智慧点餐系统

👨‍🎓作者简介:一位喜欢写作,计科专业大三菜鸟

🏡个人主页:starry陆离

如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦

1.功能介绍

这个是大二的Java的课程设计的完整版,功能相对之前发的半成品稍稍丰富些。一开始我们还是按照MVC结构写的,写着写着就视图,用户操作逻辑,数据库数据操作就都写在一起了,比如管理员操作界面(View层)就嵌入了SQL语句直接操作数据库了,好在是一个学习过程。

  1. 系统角色分为用户与管理员

  2. 用户登录系统可以选购餐品并支付

  3. 管理员可以登陆系统管理所有的菜品(增删改查)

  4. 管理所有的订单信息(未完成)

2.项目包结构

image-20221228133554959

image-20221228125833221

3.数据库设计

数据库设计了5个表,分别是用户信息表,管理员信息表,菜品信息表,订单信息表,订单详情表

image-20221228130022269

4.JDBC数据库连接类

不同数据库的连接方式的大同小异,根据开发场景灵活变动就好,我这里用的MySQL8.0所以使用如下两行配置。

		private static final String USER = "root";//数据库用户名,一般是root
		private static final String PWD = "lx0411";//数据库密码
//      连接mysql5.7
//		private static final String URL="jdbc:mysql://localhost:3306/studentgrade";
//		private static final String DRIVER="com.mysql.jdbc.Driver"; //mysql5.7
//      如果用的是mysql8.0,
		private static final String DRIVER="com.mysql.cj.jdbc.Driver";
		private static final String URL= "jdbc:mysql://localhost:3306/catersystem?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true"; 
		
//      如果用的sqlServer数据库连接
//		private static final String URL="jdbc:sqlserver://localhost:1433;DataBaseName=StudentGrade";
//		private static final String DRIVER="com.microsoft.sqlserver.jdbc.SQLServerDriver";
//		private static final String USER="sa";
//		private static final String PWD="lxloveth0411";

5.登录选择界面(系统入口)

image-20221228130840108

package view;

import java.awt.AWTException;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.SystemTray;
import java.awt.TrayIcon;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.net.URL;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

import handler.LoginChoiceHandler;

public class LoginChoiceView extends JFrame{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	JLabel titleNameLabel=new JLabel("医院智慧选餐系统",JLabel.CENTER);
	
	JPanel jp1=new JPanel();
	JPanel jp2=new JPanel(new GridLayout(5,1));
	
	JButton userBtn=new JButton ("用户 登录");
	JButton adminBtn=new JButton("管理员登录");
	
	//声明桌面系统托盘SystemTray
    public SystemTray systemTray;
    public TrayIcon trayIcon;
	
    LoginChoiceHandler loginChoiceHandler;
	public LoginChoiceView() {
		super("医院智慧选餐系统");
		
		loginChoiceHandler=new LoginChoiceHandler(this);
		//设置标题的字体,格式,大小
        titleNameLabel.setFont(new Font("华文行楷",Font.PLAIN,40));
        titleNameLabel.setPreferredSize(new Dimension(0,80));
        
        Font centerFont=new Font("楷体",Font.PLAIN,20);
        userBtn.setFont(centerFont);
        adminBtn.setFont(centerFont);
        
        jp1.add(userBtn);
        jp1.add(new JPanel());
        jp1.add(adminBtn);
        
        jp2.add(new JPanel());
        jp2.add(titleNameLabel);
        jp2.add(new JPanel());
        jp2.add(jp1);
        jp2.add(new JPanel());
        
        this.add(jp2);
        
        userBtn.addActionListener(loginChoiceHandler);
        adminBtn.addActionListener(loginChoiceHandler);
        
        //判断当前系统是否支持系统托盘
        if(SystemTray.isSupported()){
            systemTray=SystemTray.getSystemTray();//初始化系统托盘
            URL imgUrl = UserLoginView.class.getClassLoader().getResource("LoginView.jpg");
            trayIcon=new TrayIcon(new ImageIcon(imgUrl).getImage());//初始化托盘图标
            trayIcon.setImageAutoSize(true);//托盘图标可以自动缩放大小
            try {
                systemTray.add(trayIcon);//将托盘图标加入到系统托盘组件中,并抛出异常
            } catch (AWTException e) {
                e.printStackTrace();
            }
            //创建一个事件响应,最小化时销毁资源
            this.addWindowListener(new WindowAdapter() {
                @Override
                public void windowIconified(WindowEvent e) {
                	LoginChoiceView.this.dispose();
                }
            });

            //托盘事件监听(鼠标单击一次托盘,窗口将会正常显示)
            trayIcon.addMouseListener(new MouseAdapter() {
                @Override
                public void mouseClicked(MouseEvent e) {
                    int clickCont=e.getClickCount();
                    if(clickCont==1){
                        LoginChoiceView.this.setExtendedState(JFrame.NORMAL);
                    }
                    LoginChoiceView.this.setVisible(true);
                }
            });
        }
        
        //设置窗口图片
	    URL imgUrl=UserLoginView.class.getClassLoader().getResource("LoginView.jpg");
	    setIconImage(new ImageIcon(imgUrl).getImage());
	    //设置窗口基本参数
	    setSize(600,400);
	    setDefaultCloseOperation(EXIT_ON_CLOSE);
	    setLocationRelativeTo(null);
	    setResizable(false);
	    setVisible(true);
        
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new LoginChoiceView();
	}

}

6.管理员页面

image-20221228131020048

package view;
 
import javax.swing.*;


import ext.MainViewTable;
import ext.MainViewTableModel;
import handler.AdminMainHandler;
import req.UserRequest;
import res.TableDTO;
import service.FoodService;
import service.FoodServiceImpl;
import util.DBUtil;
import util.DimensionUtil;

import java.awt.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;

public class AdminOperateFrame extends JFrame {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	String adminName;
	String adminId;
	public String lastPressKey;
	
    JLabel adminNameLabel = new JLabel("管理员名:", JLabel.CENTER);
 
    JPanel centerPanel = new JPanel(new BorderLayout());
    JPanel panel1 = new JPanel();
    JPanel panel2 = new JPanel();
    JPanel panel3 = new JPanel();
    JPanel panel4 = new JPanel();
    
    //增删改查按钮
    public JButton btnAdd = new JButton("增加菜品");
    public JButton btnSave = new JButton("保存菜品");
    JButton btnDelete = new JButton("删除菜品");
    JButton btnAlter = new JButton("更改菜品");
    JButton btnSearch_Food = new JButton("查看菜品");
    //JButton btnSearch_Order = new JButton("查看订单");
    
    //设置字体大小
    Font font=new Font("楷体",Font.PLAIN,20);
    Dimension dimension = new Dimension(130,30);
 
    //创建一个MainViewTable对象
  	public MainViewTable mianViewTable=new MainViewTable();
  	public MainViewTableModel mainViewTableModel;
  	
  	//创建一个MainOrderTable订单table对象
  	public MainViewTable mianOrderTable=new MainViewTable();
  	public MainViewTableModel mainOrderTableModel;
  	//声明一个MainHandler对象
  	AdminMainHandler adminMainHandler;
    private int pageNow=1;//默认显示第一页
	private int pageSize=10;//默认每页显示十条记录
	
 
    //搜索框与搜索按钮
    public JTextField searchField = new JTextField();
    JButton searchBt = new JButton("搜索");
 
    JButton exitBt = new JButton("退出");
 
    public AdminOperateFrame(String adminId) {
        setTitle("医院营养配餐系统");
        this.adminId=adminId;
        adminMainHandler = new AdminMainHandler(this);
 
        layNorth(adminId);
 
        layCenter();
 
        layEast();
 
        laySouth();
 
        centerPanel.add(panel1, BorderLayout.NORTH);
        centerPanel.add(panel2, BorderLayout.CENTER);
        centerPanel.add(panel3, BorderLayout.EAST);
        centerPanel.add(panel4, BorderLayout.SOUTH);
        add(centerPanel);
        
        init();
    }

	private void init() {
		setSize(600, 400);
        setLocationRelativeTo(null);
        setBounds(DimensionUtil.getBounds());
        //设置窗体完全充满整个屏幕
        setExtendedState(JFrame.MAXIMIZED_BOTH);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
	}

	private void laySouth() {
		exitBt.setFont(font);
		exitBt.setPreferredSize(new Dimension(200,50));
        panel4.add(exitBt);
        
        exitBt.addActionListener(adminMainHandler);
	}

	private void layEast() {
		panel3.setLayout(new FlowLayout());
		panel3.setPreferredSize(new Dimension(200,100));
        btnAdd.setFont(font);
        btnAdd.setPreferredSize(dimension);
        btnSave.setFont(font);
        btnSave.setPreferredSize(dimension);
        btnDelete.setFont(font);
        btnDelete.setPreferredSize(dimension);
        btnAlter.setFont(font);
        btnAlter.setPreferredSize(dimension);
        btnSearch_Food.setFont(font);
        btnSearch_Food.setPreferredSize(dimension);
        //btnSearch_Order.setFont(font);
        //btnSearch_Order.setPreferredSize(dimension);
        panel3.add(btnAdd);
        panel3.add(btnSave);
        btnSave.setVisible(false);
        panel3.add(btnDelete);
        panel3.add(btnAlter);
        panel3.add(btnSearch_Food);
        //panel3.add(btnSearch_Order);
        
        btnAdd.addActionListener(adminMainHandler);
        btnSave.addActionListener(adminMainHandler);
        btnDelete.addActionListener(adminMainHandler);
        btnAlter.addActionListener(adminMainHandler);
        btnSearch_Food.addActionListener(adminMainHandler);
        //btnSearch_Order.addActionListener(adminMainHandler);
	}

	private void layNorth(String adminId) {
		panel1.setLayout(new BorderLayout());
        selectAdminName(adminId);
        adminNameLabel.setText("管理员名:"+adminName);
        adminNameLabel.setFont(font);
        searchField.setFont(font);
        searchField.setPreferredSize(dimension);
        searchBt.setFont(font);
        searchBt.setPreferredSize(new Dimension(200,50));
        panel1.add(adminNameLabel, BorderLayout.WEST);
        panel1.add(searchField, BorderLayout.CENTER);
        panel1.add(searchBt, BorderLayout.EAST);
        
        searchBt.addActionListener(adminMainHandler);
	}
    
	private void layCenter() {
		//调用数据库数据,创建一个FoodService和UserRequest实例
  		//获取从数据库中查询到的data与totalCount
  		FoodService foodService=new FoodServiceImpl();
  		UserRequest request=new UserRequest();
  		request.setPageNow(pageNow);
  		request.setPageSize(pageSize);
  		request.setSearchKey(searchField.getText().trim());
  		TableDTO tableDTO = foodService.retrieveFoods(request);
  		Vector<Vector<Object>> data = tableDTO.getData();
  		
  		//自定义的MainViewTableModel
  		mainViewTableModel=MainViewTableModel.assembleModel(data);
  		//将Table与TableModel关联
  		mianViewTable.setModel(mainViewTableModel);
  		//设置渲染方式
  		mianViewTable.renderRule();
  		JScrollPane jScrollPane = new JScrollPane(mianViewTable);
  		
        panel2.setLayout(new BorderLayout());
        panel2.add(jScrollPane, BorderLayout.CENTER);
	}
	
	private void selectAdminName(String adminId) {
		String sql = "select manaName from managerInfo where manaId = ?";
		Connection conn=null;
		PreparedStatement ps=null;
		ResultSet rs=null;
		try {
			//连接数据库,获取数据库连接,getConn()方法已经提前在DBUtil中写好
			conn = DBUtil.getConn();
			System.out.println("数据库连接成功");
			//如果连接失败,则返回false
			if(conn==null) {
				System.out.println("数据库连接失败");
			}
			
			ps = conn.prepareStatement(sql);
			ps.setString(1, adminId);
			
			rs = ps.executeQuery();
			
			//查询遍历
			while(rs.next()) {
				adminName = rs.getString(1);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			//关闭资源
			DBUtil.closeRs(rs);
			DBUtil.closeConn(conn);
			DBUtil.closePs(ps);
		}
	}
	
	public void setPageNow(int pageNow) {
		this.pageNow = pageNow;
	}

	public int getPageSize() {
		return pageSize;
	}

	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}

	public int getPageNow() {
		return pageNow;
	}
	
	public void reloadTable() {
		/*
		 *调用数据库数据,创建一个FoodService和UserRequest实例
		 *获取从数据库中查询到的data与totalCount
		 *查询完后要更新Model的数据
		 */
		FoodService foodService=new FoodServiceImpl();
		UserRequest request=new UserRequest();
		request.setPageNow(pageNow);
		request.setPageSize(pageSize);
		request.setSearchKey(searchField.getText().trim());
		TableDTO tableDTO = foodService.retrieveFoods(request);
		Vector<Vector<Object>> data = tableDTO.getData();
		
		// 更新调用updataModel实现更新Model
		MainViewTableModel.uptadaModel(data);
		// 设置渲染方式
		mianViewTable.renderRule();
	}
	
    public static void main(String[] args) {
        new AdminOperateFrame("202016");
    }
}

7.用户选餐界面

室友在这里做了一个有趣的处理,点击支付的时候弹出他的微信收款码😁。如果用户想白嫖不支付就退出系统还会有窗口提示(当然并不是真正的需要支付money才能退出系统,你任务管理器一杀我们也没辙,只是考虑了这个场景就实现了这个逻辑)

image-20221228132422330

image-20221228132544580

image-20221228132749950

package view;
/*
 * 待解决问题:
 * 1.关闭窗口提示还没支付
 * 2.同一用户可以选同一个菜品
 * 3.list没有实现更新
 * 4.table里的库存量没有实现更新
 * 5.没有选餐应提示不能实现支付
 */
import javax.swing.*;


import ext.MainViewTable;
import ext.MainViewTableModel;
import handler.UserMainHandler;
import req.UserRequest;
import res.TableDTO;
import service.FoodService;
import service.FoodServiceImpl;
import util.DBUtil;
import util.DimensionUtil;

import java.awt.*;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;

public class UserSelectionFrame extends JFrame {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	public String userName;
	public int totalMoney;
	public int selId = 1;
	public String userId;
	
    JLabel userNameLabel = new JLabel("用户名:", JLabel.CENTER);
 
    JPanel centerPanel = new JPanel(new BorderLayout());
    JPanel panel1 = new JPanel();
    JPanel panel2 = new JPanel();
    JPanel panel3 = new JPanel();
    JPanel panel4 = new JPanel();
    JPanel panel5 = new JPanel();
 
    //创建一个MainViewTable对象
  	public MainViewTable mianViewTable=new MainViewTable();
  	public MainViewTableModel mainViewTableModel;
  	//声明一个MainHandler对象
  	UserMainHandler userMainHandler;
    private int pageNow=1;//默认显示第一页
	private int pageSize=10;//默认每页显示十条记录
	JButton btSelect = new JButton("选购");
 
    //搜索框与搜索按钮
    Font centerFont=new Font("楷体",Font.PLAIN,20);
    Dimension dimension = new Dimension(200,50);
    JTextField searchField = new JTextField();
    JButton searchBt = new JButton("搜索");
 
    public DefaultListModel<Object> listModel = new DefaultListModel<Object>();
    public JList<Object> selectedList = new JList<Object>(listModel);
    JLabel selectedLabel = new JLabel("已选菜品:",JLabel.CENTER);
 
    public JLabel totalPriceLabel = new JLabel("总价: 0");
    JButton payBt = new JButton("支付");
 
    public UserSelectionFrame(String userId) {
        setTitle("医院营养配餐系统");
        this.userId = userId;
        userMainHandler = new UserMainHandler(this);
        
        //根据用户Id查询出用户名userName,显示在userNameLabel上
        selectUesrName(userId);
 
        layNorth();
 
        layCenter();
 
        layWest();
 
        laySouth();
        
        init();
    }

	private void selectUesrName(String userId) {
		String sql = "select userName from userInfo where userId = ?";
		Connection conn=null;
		PreparedStatement ps=null;
		ResultSet rs=null;
		try {
			//连接数据库,获取数据库连接,getConn()方法已经提前在DBUtil中写好
			conn = DBUtil.getConn();
			System.out.println("数据库连接成功");
			//如果连接失败,则返回false
			if(conn==null) {
				System.out.println("数据库连接失败");
			}
			
			ps = conn.prepareStatement(sql);
			ps.setString(1, userId);
			
			rs = ps.executeQuery();
			
			//查询遍历
			while(rs.next()) {
				userName = rs.getString(1);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			//关闭资源
			DBUtil.closeRs(rs);
			DBUtil.closeConn(conn);
			DBUtil.closePs(ps);
		}
	}

	private void init() {
		add(centerPanel);
        setSize(600, 400);
        setLocationRelativeTo(null);
        setBounds(DimensionUtil.getBounds());
        //设置窗体完全充满整个屏幕
        setExtendedState(JFrame.MAXIMIZED_BOTH);
        setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
        //在关闭窗口的时候强制支付,应该改成提示“暂时还没支付”
        addWindowListener(new UserMainHandler(this));
        setVisible(true);
	}
	
	private void layNorth() {
		
        panel1.setLayout(new BorderLayout());
        userNameLabel.setText("用户名:"+userName);
        
        panel1.add(userNameLabel, BorderLayout.WEST);
        userNameLabel.setPreferredSize(dimension);
        userNameLabel.setFont(centerFont);
        
        panel1.add(searchField, BorderLayout.CENTER);
        searchField.setPreferredSize(dimension);
        searchField.setFont(centerFont);
        
        panel1.add(searchBt, BorderLayout.EAST);
        searchBt.setPreferredSize(new Dimension(200,50));
        searchBt.setFont(centerFont);
        
        centerPanel.add(panel1, BorderLayout.NORTH);
        
        searchBt.addActionListener(userMainHandler);
	}
	
	private void layCenter() {
		//调用数据库数据,创建一个FoodService和UserRequest实例
		//获取从数据库中查询到的data与totalCount
		FoodService foodService=new FoodServiceImpl();
		UserRequest request=new UserRequest();
		request.setPageNow(pageNow);
		request.setPageSize(pageSize);
		request.setSearchKey(searchField.getText().trim());
		TableDTO tableDTO = foodService.retrieveFoods(request);
		Vector<Vector<Object>> data = tableDTO.getData();
		showPreNext(tableDTO.getTotalCount());
				
		panel2.setLayout(new BorderLayout());
        //自定义的MainViewTableModel
  		mainViewTableModel=MainViewTableModel.assembleModel(data);
  		//将Table与TableModel关联
  		mianViewTable.setModel(mainViewTableModel);
  		//设置渲染方式
  		mianViewTable.renderRule();
  		JScrollPane jScrollPane = new JScrollPane(mianViewTable);
  		panel2.add(jScrollPane,BorderLayout.CENTER);
  		
  		btSelect.setPreferredSize(new Dimension(150,50));
  		btSelect.setFont(centerFont);
  		panel5.add(btSelect);
  		panel2.add(panel5, BorderLayout.EAST);
  		centerPanel.add(panel2, BorderLayout.CENTER);
  		btSelect.addActionListener(userMainHandler);
	}
	
    private void layWest() {
		panel3.setLayout(new BorderLayout());
        selectedList.setPreferredSize(dimension);
        selectedList.setFont(centerFont);
        panel3.add(selectedLabel, BorderLayout.NORTH);
        selectedLabel.setPreferredSize(dimension);
        selectedLabel.setFont(centerFont);
        panel3.add(selectedList, BorderLayout.CENTER);
        centerPanel.add(panel3, BorderLayout.WEST);
	}
    
	private void laySouth() {
		totalPriceLabel.setFont(centerFont);
		panel4.add(totalPriceLabel);
		
		payBt.setFont(centerFont);
        panel4.add(payBt);
        
        centerPanel.add(panel4, BorderLayout.SOUTH);
        payBt.addActionListener(userMainHandler);
	}
	
	private void showPreNext(int totalCount) {
		if(totalCount%pageSize==0) {
		}else {
		}
	}
	
	public void setPageNow(int pageNow) {
		this.pageNow = pageNow;
	}

	public int getPageSize() {
		return pageSize;
	}

	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}

	public int getPageNow() {
		return pageNow;
	}
	
	
	public void reloadTable() {
		
		/*
		 *调用数据库数据,创建一个FoodService和UserRequest实例
		 *获取从数据库中查询到的data与totalCount
		 *查询完后要更新Model的数据
		 */
		FoodService foodService=new FoodServiceImpl();
		UserRequest request=new UserRequest();
		request.setPageNow(pageNow);
		request.setPageSize(pageSize);
		request.setSearchKey(searchField.getText().trim());
		TableDTO tableDTO = foodService.retrieveFoods(request);
		Vector<Vector<Object>> data = tableDTO.getData();
		
		
		// 更新调用updataModel实现更新Model
		MainViewTableModel.uptadaModel(data);
		// 设置渲染方式
		mianViewTable.renderRule();
		// 调用上一页与下一页按钮是否可见
		showPreNext(tableDTO.getTotalCount());
	}    
}
 {
		return pageNow;
	}
	
	
	public void reloadTable() {
		
		/*
		 *调用数据库数据,创建一个FoodService和UserRequest实例
		 *获取从数据库中查询到的data与totalCount
		 *查询完后要更新Model的数据
		 */
		FoodService foodService=new FoodServiceImpl();
		UserRequest request=new UserRequest();
		request.setPageNow(pageNow);
		request.setPageSize(pageSize);
		request.setSearchKey(searchField.getText().trim());
		TableDTO tableDTO = foodService.retrieveFoods(request);
		Vector<Vector<Object>> data = tableDTO.getData();
		
		
		// 更新调用updataModel实现更新Model
		MainViewTableModel.uptadaModel(data);
		// 设置渲染方式
		mianViewTable.renderRule();
		// 调用上一页与下一页按钮是否可见
		showPreNext(tableDTO.getTotalCount());
	}    
}
  • 13
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
员工工资管理系统是一个常见的软件应用程序,可以帮助公司管理员工的基本信息、薪资、考勤、福利等方面的内容。本文将介绍如何使用 Eclipse+Java+Swing+Mysql 实现员工工资管理系统。 步骤1:创建数据库 首先,我们需要在 Mysql 中创建一个名为 salary 的数据库,并在其中创建三个表:employee、salary_record 和 department。 employee 表用于存储员工的基本信息,包括员工编号、姓名、性别、部门编号等字段。salary_record 表用于存储员工的薪资记录,包括员工编号、发放日期、基本工资、奖金、扣款等字段。department 表用于存储部门的基本信息,包括部门编号、部门名称等字段。 步骤2:创建 Java 项目 在 Eclipse 中创建一个新的 Java 项目,命名为 SalaryManagementSystem。在项目中创建三个包:entity、dao 和 view。 entity 包用于存储实体类,包括 Employee、SalaryRecord 和 Department 等类。dao 包用于存储数据访问对象,包括 EmployeeDao、SalaryRecordDao 和 DepartmentDao 等类。view 包用于存储界面类,包括 LoginFrame、MainFrame 和 AddEmployeeFrame 等类。 步骤3:编写实体类 在 entity 包中创建 Employee、SalaryRecord 和 Department 等类,并为每个类添加相应的属性和方法。例如,Employee 类包括员工编号、姓名、性别、所属部门等属性,以及获取和设置这些属性的方法。 步骤4:编写数据访问对象 在 dao 包中创建 EmployeeDao、SalaryRecordDao 和 DepartmentDao 等类,并实现相应的数据访问方法。例如,EmployeeDao 类包括添加员工、删除员工、更新员工信息、查询员工信息等方法。 步骤5:编写界面类 在 view 包中创建 LoginFrame、MainFrame 和 AddEmployeeFrame 等类,并实现相应的界面和事件处理方法。例如,LoginFrame 类用于显示登录界面,并处理用户登录事件;AddEmployeeFrame 类用于显示添加员工界面,并处理添加员工事件。 步骤6:连接数据库 使用 JDBC 连接 Mysql 数据库,为每个数据访问对象创建相应的连接和预编译语句,实现数据库的增删改查操作。 步骤7:测试程序 在 Eclipse 中运行程序,测试各个功能是否正常。例如,登录功能、员工信息查询功能、添加员工功能等。 总结 本文介绍了如何使用 Eclipse+Java+Swing+Mysql 实现员工工资管理系统。通过实现实体类、数据访问对象和界面类等模块,实现对员工信息、薪资、部门信息等数据的管理。这个项目可以作为 Java 开发入门的练手项目,帮助初学者熟悉 Java 开发、Swing 界面设计和 Mysql 数据库操作等技术。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小园豆知识日记

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

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

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

打赏作者

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

抵扣说明:

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

余额充值