Eclipse+Java+Swing+Mysql实现学生信息管理系统

Posted 水坚石青

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Eclipse+Java+Swing+Mysql实现学生信息管理系统相关的知识,希望对你有一定的参考价值。

目录

一、系统介绍

1.开发环境

2.技术选型

3.系统功能

4.数据库

二、系统展示

1.注册系统

2.登录系统

3.系统主页面

4.添加学生信息

5.修改学生信息

6.查询学生信息

三、部分代码

LoginFrame.java

RegisterFrame.java

MainFrame.java

AddFrame.java

四、其他

1.更多系统

2.源码下载

3.运行项目

4.备注

5.支持博主


一、系统介绍

1.开发环境

开发工具:Eclipse2021

JDK版本:jdk1.8

mysql版本:8.0.13

2.技术选型

Java+Swing+Mysql

3.系统功能

1.注册

2.登录

3.查询学生信息

4.增加学生信息

5.修改学生信息

6.删除学生信息

4.数据库

/*
 Navicat Premium Data Transfer

 Source Server         : MYSQL
 Source Server Type    : MySQL
 Source Server Version : 80013
 Source Host           : localhost:3306
 Source Schema         : swing_student_message

 Target Server Type    : MySQL
 Target Server Version : 80013
 File Encoding         : 65001

 Date: 25/11/2021 13:46:18
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for t_student
-- ----------------------------
DROP TABLE IF EXISTS `t_student`;
CREATE TABLE `t_student`  (
  `sid` int(11) NOT NULL AUTO_INCREMENT,
  `sno` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `sname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `sgender` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `sage` int(11) NULL DEFAULT NULL,
  `status` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `address` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `grade` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`sid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of t_student
-- ----------------------------
INSERT INTO `t_student` VALUES (1, '100001', '李白', '0', 18, '0', '北京', '大一');
INSERT INTO `t_student` VALUES (2, '100002', '王五', '0', 20, '0', '武汉', '大一');
INSERT INTO `t_student` VALUES (3, '100003', '李四', '0', 18, '0', '武汉', '大三');
INSERT INTO `t_student` VALUES (11, '100004', '赵六', '0', 22, '1', '长沙', '大一');

-- ----------------------------
-- Table structure for t_teacher
-- ----------------------------
DROP TABLE IF EXISTS `t_teacher`;
CREATE TABLE `t_teacher`  (
  `tid` int(11) NOT NULL AUTO_INCREMENT,
  `account` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `pass` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `sex` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `workage` int(11) NULL DEFAULT NULL,
  `retire` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_slovenian_ci NULL DEFAULT NULL,
  `loginstatus` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_slovenian_ci NULL DEFAULT '0' COMMENT '0:未登录,1:已登录',
  PRIMARY KEY (`tid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 35 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_slovenian_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of t_teacher
-- ----------------------------
INSERT INTO `t_teacher` VALUES (35, '200001', 'e10adc3949ba59abbe56e057f20f883e', '张三', '1', 24, '1', '0');

SET FOREIGN_KEY_CHECKS = 1;

二、系统展示

1.注册系统

2.登录系统

3.系统主页面

4.添加学生信息

5.修改学生信息

6.查询学生信息

三、部分代码

LoginFrame.java

package com.zhongbei.eams.ui;

import com.zhongbei.eams.factory.EmasFactory;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import com.zhongbei.eams.ui.MainFrame;
import java.sql.SQLException;

public class LoginFrame extends JFrame 

	private JTextField tfUsername; // 定义一个用户名输入框
	private JPasswordField pfPassword; // 定义一个密码框
	private static boolean isLogin; // 判断是否登录
	private JCheckBox ckbRemember; // 是否记住密码

	private JButton btLogin; // 定义 登录按钮
	private JButton btRegister; // 定义 关闭按钮

	public LoginFrame() 

		this.getContentPane().setLayout(null); // 绝对布局

		JLabel jlUser = new JLabel("登陆账号");// 定义登录账号标签
		jlUser.setBounds(41, 72, 82, 15);// 设置位置
		this.add(jlUser);// 添加到当前界面

		tfUsername = new JTextField(); // 定义用户名输入框
		tfUsername.setBounds(118, 64, 207, 30);// 设置位置
		this.add(tfUsername);// 添加到当前界面

		JLabel jlPassword = new JLabel("登陆密码");// 定义登录密码标签
		jlPassword.setBounds(41, 116, 82, 15);// 设置位置
		this.add(jlPassword);// 添加到当前界面

		pfPassword = new JPasswordField();// 定义密码输入框
		pfPassword.setBounds(118, 108, 207, 30);// 设置位置
		this.add(pfPassword);// 添加到当前界面

		btLogin = new JButton("登  录");// 定义登录按钮
		btLogin.setBounds(63, 206, 93, 30);// 设置位置
		btLogin.addActionListener(new ActionListener()  // 登录按钮的监听事件
			@Override
			public void actionPerformed(ActionEvent e) 
				try 
					btLoginActionPerformed();
				 catch (Exception ex) 
					ex.printStackTrace();
				
			
		);
		this.add(btLogin);// 添加到当前界面

		btRegister = new JButton("注 册");// 定义注册按钮
		btRegister.setBounds(221, 206, 93, 30);// 设置位置
		btRegister.addActionListener(new ActionListener() 

			public void actionPerformed(ActionEvent e) 
				// 打开注册界面
				new RegisterFrame();
				dispose();// 关闭界面
			
		);
		this.add(btRegister);// 添加到当前界面

		setTitle("用户登录界面");
		setSize(400, 300); // 设置界面大小
		setResizable(false); // 设置界面大小不可改变
		setLocationRelativeTo(null); // 设置登录界面居中
		this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // 设置默认关闭操作
		this.setVisible(true);

	

	public void btLoginActionPerformed() throws Exception // 登录方法

		// 获取用户名和密码
		String username = tfUsername.getText().trim();
		String password = new String(pfPassword.getPassword()).trim();

		System.out.println(username + "\\t" + password);
		if ("".equals(username) || null == username || "".equals(password) || null == password) 
			JOptionPane.showMessageDialog(this, "账号和密码均不可以为空");
			return;
		

		// if()
		// JOptionPane.showMessageDialog(this,"密码不可以为空");
		// return;
		// 
		// 登录前判断此刻教师要登录的账户是否存在,如果不存在就没有判断赋号和密码是否止确的必要
		boolean flag = EmasFactory.getTeacherServiceInstance().queryTeacherByAccount(username);
		if (flag) 
			boolean loginStatus = EmasFactory.getTeacherServiceInstance().queryLoginStatusForTeacher(username);
			if (loginStatus) 
				// flag == ture 的话表示教师此刻提交的用户名存在,按下来开始登录
				boolean temp = EmasFactory.getTeacherServiceInstance().teacherLoginSystem(username, password);
				if (temp) 
					EmasFactory.getTeacherServiceInstance().setTeacherLoginStatus(username, "1");
					// temp == ture 的话表示用户名和密码正确,可以进入系统
					JOptionPane.showMessageDialog(this, "账号密码正确,即将进入系统!");// 提示
					// 需要进入系统
					this.dispose();
					new MainFrame(username);
				 else 
					// temp == ture 的话表示用户名和密码错误,需要重新登录
					JOptionPane.showMessageDialog(this, "账号密码错误,请重新登录!");// 提示
				
			 else 
				JOptionPane.showMessageDialog(this, "登录的账号已经处于登陆状态,不能继续登录!");
			

		 else 
			// flag == false的话表示教师测试提交的用户名不存在(没注册,需要他重新输入)
			JOptionPane.showMessageDialog(this, "您输入的用户名不存在,请重新输入或注册!");// 提示

		
	

	
	public static void main(String[] args) 
		new LoginFrame();
	


RegisterFrame.java

package com.zhongbei.eams.ui;

import com.zhongbei.eams.factory.EmasFactory;
import com.zhongbei.eams.teacher.entity.Teacher;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.regex.Pattern;

public class RegisterFrame extends JFrame 

	private JTextField tfUsername; // 定义注册用户名
	private JPasswordField pfPassword; // 定义输入密码框
	private JPasswordField pfRePassword; // 定义确认密码框
	private JTextField tfName;
	private JTextField tfWorkage;
	private JLabel lbRetire;
	private JRadioButton rdoRetire, rdoWork;

	private JButton btRegister; // 定义注册按钮
	private JButton btBack; // 定义返回按钮

	private JLabel lblCity, lblSex; // 定义城市和性别
	private JRadioButton rdoMale, rdoFemale; // 定义性别选择
	// private JComboBox<String> cboCity; //定义城市的多选框

	RegisterFrame() 

		this.setLayout(null); // 绝对布局

		JLabel jlUser = new JLabel("账号"); // 定义用户名文本标签
		jlUser.setBounds(20, 42, 74, 15); // 设置标签文职
		this.add(jlUser);// 添加到本界面

		tfUsername = new JTextField(); // 定义一个文本输入框
		tfUsername.setBounds(104, 40, 148, 25); // 设置位置
		this.add(tfUsername);// 添加到本界面

		JLabel jlPass = new JLabel("密码"); // 定义密码文本标签
		jlPass.setBounds(20, 99, 74, 15); // 设置标签位置
		this.add(jlPass); // 添加到本界面

		pfPassword = new JPasswordField(); // 定义密码1 输入框
		pfPassword.setBounds(104, 94, 148, 25);// 设置输入框位置
		this.add(pfPassword); // 添加到本界面

		JLabel jlRePass = new JLabel("再次输入密码");// 定义密码2标签
		jlRePass.setBounds(20, 156, 80, 15);// 设置位置
		this.add(jlRePass);// 添加到本界面

		pfRePassword = new JPasswordField(); // 定义一个密码2输入框
		pfRePassword.setBounds(104, 152, 148, 25);// 密码输入框位置
		this.add(pfRePassword); // 添加到本界面

		JLabel jlName = new JLabel("姓名"); // 定义一个姓名的文本标签
		jlName.setBounds(20, 208, 74, 15); // 设置位置
		this.add(jlName);// 添加到本界面

		tfName = new JTextField(10); // 定义一个姓名输入框
		tfName.setBounds(104, 204, 148, 25); // 设置位置
		this.add(tfName); // 添加到本界面

		lblSex = new JLabel("性别:"); // 定义一个性别文本标签
		lblSex.setBounds(20, 260, 74, 15);// 设置位置
		this.add(lblSex); // 添加到本界面

		rdoMale = new JRadioButton("男"); // 定义性别选择框
		rdoMale.setSelected(true); // 设置默认选中
		rdoMale.setBounds(104, 256, 50, 25);// 设置位置
		this.add(rdoMale);// 添加到本界面

		rdoFemale = new JRadioButton("女"); // 定义女行选择框
		rdoFemale.setBounds(173, 256, 50, 25);// 设置位置
		this.add(rdoFemale);// 添加到本界面

		JLabel jlworkage = new JLabel("工龄"); // 定义用户名文本标签
		jlworkage.setBounds(20, 300, 74, 15); // 设置标签文职
		this.add(jlworkage);// 添加到本界面

		tfWorkage = new JTextField(); // 定义一个文本输入框
		tfWorkage.setBounds(104, 296, 148, 25); // 设置位置
		this.add(tfWorkage);

		lbRetire = new JLabel("是否退休:"); // 定义一个性别文本标签
		lbRetire.setBounds(20, 340, 74, 15);// 设置位置
		this.add(lbRetire); // 添加到本界面

		rdoRetire = new JRadioButton("退休"); // 定义性别选择框
		rdoRetire.setSelected(true); // 设置默认选中
		rdoRetire.setBounds(104, 336, 70, 25);// 设置位置
		this.add(rdoRetire);// 添加到本界面

		rdoWork = new JRadioButton("在职"); // 定义女行选择框
		rdoWork.setBounds(173, 336, 70, 25);// 设置位置
		this.add(rdoWork);// 添加到本界面
		ButtonGroup group = new ButtonGroup(); //
		group.add(rdoMale); // 将男行选择框添加到group中
		group.add(rdoFemale);// 将女性选择框添加到group中
		ButtonGroup group2 = new ButtonGroup();
		group2.add(rdoRetire);
		group2.add(rdoWork);

		btRegister = new JButton("注 册"); // 注册按钮
		btRegister.setBounds(33, 370, 90, 35);// 设置位置
		btRegister.addActionListener(new ActionListener()  // 添加监听事件

			public void actionPerformed(ActionEvent e) 
				try 
					btRegisterActionPerformed(); // 注册方法
				 catch (Exception ex) 
					ex.printStackTrace();
				
			
		);
		this.add(btRegister);// 将注册按钮添加到界面

		btBack = new JButton("返 回"); // 定义一个返回按钮
		btBack.setBounds(160, 370, 90, 35);
		btBack.addActionListener(new ActionListener()  // 返回按钮的监听方法
			@Override
			public void actionPerformed(ActionEvent e) 
				new LoginFrame();
				dispose(); // 关闭界面
			
		);
		this.add(btBack); // 将返回按钮添加到界面

		setTitle("学生管理系统注册界面");
		setSize(338, 464); // 设置界面大小
		setResizable(false); // 设置界面大小不可改变
		setLocationRelativeTo(null); // 设置登录界面居中
		this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // 设置默认关闭操作
		this.setVisible(true);
	

	/**
	 * @return void
	 * @Param :
	 * @description 注册方法
	 * @author 优逸客大数据研发部
	 * @date 2020/11/27 13:50
	 */
	public void btRegisterActionPerformed() throws Exception  // 注册方法实现

		String username = tfUsername.getText().trim(); // 获取username的值
		String name = tfName.getText().trim(); // 获取用户名

		String pass = new String(pfPassword.getPassword()).trim(); // 获取第一次输入的密码
		String rePass = new String(pfRePassword.getPassword()).trim(); // 获取第二次输入的密码
		String sex = String.valueOf(rdoMale.isSelected() ? 1 : 0);
		String retire = String.valueOf(rdoRetire.isSelected() ? 0 : 1);
		int workage = Integer.valueOf(tfWorkage.getText().trim());
		System.out
				.println(username + "-" + name + "-" + pass + "-" + rePass + "-" + sex + "-" + retire + "-" + workage);
		if ("".equals(username) || null == username) 
			JOptionPane.showMessageDialog(this, "账号不能为空");
			return;
		 else 
			boolean flag = Pattern.matches("^[A-Za-z0-9]6,12+$", username);
			if (!flag) 
				JOptionPane.showMessageDialog(this, "账号不合法,规则是A-Za-z,长度是6-12位");
				return;
			
		
		if (("".equals(pass) || null == pass) && ("".equals(rePass) || null == rePass)) 
			JOptionPane.showMessageDialog(this, "密码不能为空");
			return;
		 else 
			if (!pass.equals(rePass)) 
				JOptionPane.showMessageDialog(this, "两次密码输入不一致,您需要重新输入!");
				return;
			 else 

				boolean flag = Pattern.matches("^[A-Za-z0-9]6,12+$", pass);
				if (!flag) 
					JOptionPane.showMessageDialog(this, "密码不合法,规则是数字加字母,长度是6-8位");
					return;
				
			
		
		if ("".equals(name) || null == name) 
			JOptionPane.showMessageDialog(this, "名字不能为空");
			return;
		 else 
			boolean flag = Pattern.matches("^[\\\\u4e00-\\\\u9fa5]2,4$", name);
			if (!flag) 
				JOptionPane.showMessageDialog(this, "名字不合法,规则是2-4个字符,必须汉字");
				return;
			
		

		// 我们在获取到用户输入值得情况下将这些值存到数据库
		// 判断老师即将注册的账号是否已经被其他老师注册
		boolean temp = EmasFactory.getTeacherServiceInstance().queryTeacherByAccount(username);
		if (temp) 
			// 表示要注册的账号已经被注册,需要换一个账号
			JOptionPane.showMessageDialog(this, "账号已经被注册,请换一个账号!");
		 else 
			// 表示要注册的账号还没有被注册,可以注册
			// 注册是老师要注册,需要老师这个对象,现在没有,我们造一个出来
			boolean flag = EmasFactory.getTeacherServiceInstance()
					.teacherRegister(new Teacher(null, username, pass, rePass, name, sex, workage, retire));
			// System.out.println("-------->"+flag);
			if (flag) 
				JOptionPane.showMessageDialog(this, "恭喜恭喜,注册成功了!");
			 else 
				JOptionPane.showMessageDialog(this, "系统异常,没有注册成功,请重新注册!");
			
		

		//
		// boolean flag =
		// EamsFactory.getISysServiceIntance().queryTeacherByAccount(username);
		// if (flag) 
		// // 要注册账号已经被注册
		// JOptionPane.showMessageDialog(this, "要注册账号已经被注册,请换一个账号!"); //提示
		//  else 
		// // 可以被注册
		// boolean temp = EamsFactory.getISysServiceIntance().teacherRegister(new
		// Teacher(username,pass,name,sex));
		// if (temp) 
		// // 注册完成
		// JOptionPane.showMessageDialog(this, "注册成功,请登录!"); //提示
		// this.dispose();
		// new LoginFrame();
		//  else 
		// // 注册失败
		// JOptionPane.showMessageDialog(this, "注册失败!"); //提示
		// 
		// 

	


MainFrame.java

package com.zhongbei.eams.ui;

import com.zhongbei.eams.factory.EmasFactory;
import com.zhongbei.eams.student.enity.Student;

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import com.zhongbei.eams.ui.AddFrame;

public class MainFrame extends JFrame 

	private JLabel lblsno; // 学号
	private JLabel lblName; // 姓名
	private JLabel lblGrade; // 年级
	private static JTable tblStudent;// 定义表格
	private JButton btnQuery, btnAdd, btnDelete, btnUpdate; // 查询
	private JScrollPane scrollPane;
	private JTextField txtsno; // 定义商品名文本框
	String acc;
	public static String account;
	private MainFrame browse;

	public MainFrame() throws HeadlessException 

	

	public MainFrame(String account) throws Exception 
		this.account = account;
		acc = account;
		lblsno = new JLabel("学号:"); // 定义商品名标签
		lblsno.setBounds(10, 64, 70, 15);// 设置位置
		this.add(lblsno); // 添加到界面中

		txtsno = new JTextField(10); // 定义商品名输入框
		txtsno.setBounds(71, 59, 159, 25);// 设置位置
		this.add(txtsno);// 添加到界面中

		btnQuery = new JButton("查询"); // 定义查询标签
		btnQuery.setBounds(464, 55, 70, 32); // 设置位置
		this.add(btnQuery);// 添加到界面中

		lblName = new JLabel("您好,欢迎学生信息管理系统"); // 定义一个姓名标签
		lblName.setBounds(10, 10, 200, 15);// 设置位置
		this.add(lblName);// 添加到界面中

		tblStudent = new JTable(); // 定义一个表格
		scrollPane = new JScrollPane();// 设置滚动面板
		scrollPane.setBounds(10, 97, 724, 273);// 设置表格再界面中的位置
		scrollPane.setViewportView(tblStudent); // 传递table列表到界面
		this.add(scrollPane); // 将滚动面板添加到界面

		// initDatas(); //初始化数据
		initStudentTableModel(); // 初始化表格信息
		showStudent();// 展示表格数据

		JSeparator separator = new JSeparator(); // 垂直分割线
		separator.setBounds(10, 35, 724, 2); // 设置位置
		this.add(separator); // 将垂直分割线添加到界面

		btnAdd = new JButton("添  加"); // 定义添加按钮
		btnAdd.setBounds(564, 394, 70, 32); // 设置按钮位置
		this.add(btnAdd);// 将按钮添加到界面
		btnAdd.addActionListener(new ActionListener() 
			@Override
			public void actionPerformed(ActionEvent actionEvent) 
				AddFrame addFrame = new AddFrame();
				dispose();
			
		);

		btnDelete = new JButton("删   除"); // 定义添加按钮
		btnDelete.setBounds(444, 394, 90, 32); // 设置按钮位置
		this.add(btnDelete);// 将按钮添加到界面
		btnDelete.addActionListener((e) -> 
			// todo
			try 
				if (tblStudent.getSelectedRow() <= -1) 
					JOptionPane.showMessageDialog(null, "您还没有选中任何数据");
				 else 

					List<Student> students = EmasFactory.getStudnetServiceInstance().listStudent();
					int m = JOptionPane.showConfirmDialog(null, "确认要删除数据", "删除信息", JOptionPane.YES_NO_OPTION);
					if (m == JOptionPane.YES_OPTION) 
						int selectedRowIndex = tblStudent.getSelectedRow();
						int lastRows = EmasFactory.getStudnetServiceInstance().listStudent().size();
						if (lastRows < selectedRowIndex + 1) 
							JOptionPane.showMessageDialog(null, "要删除的数据已经被别人删除了");
						
						Student s = students.get(tblStudent.getSelectedRow());
						Student studentResilt = EmasFactory.getStudnetServiceInstance()
								.queryStudentByStudentNo(s.getSno());
						if (null != studentResilt) 
							boolean flag = EmasFactory.getStudnetServiceInstance().deleteStudentBySno(s.getSno());
							if (flag) 
								JOptionPane.showMessageDialog(null, "数据成功被删除");

								showStudent();
							 else 
								JOptionPane.showMessageDialog(null, "系统异常请重新删除");
							

						 else 
							JOptionPane.showMessageDialog(null, "您要删除的数据不存在,可能被别人删除了");

						
					
				

			 catch (Exception ex) 
				ex.printStackTrace();
			
		);
		btnUpdate = new JButton("修   改"); // 定义添加按钮
		btnUpdate.setBounds(324, 394, 90, 32); // 设置按钮位置
		this.add(btnUpdate);// 将按钮添加到界面
		btnUpdate.addActionListener((e) -> 
			// todo
			List<Student> students = null;

			try 
				int selectedRowIndex = tblStudent.getSelectedRow();
				students = EmasFactory.getStudnetServiceInstance().listStudent();

				Student s = students.get(tblStudent.getSelectedRow());

				new UpdateFrame(s);
			 catch (Exception ex) 
				JOptionPane.showMessageDialog(null, "您还没有选中任何数据");
			
		);

		JButton btnHome = new JButton("退出"); // 定义home按钮
		btnHome.setBounds(464, 2, 70, 32);// 设置按钮位置
		this.add(btnHome);// 添加到界面中

		btnHome.addActionListener(new ActionListener()  // home 按钮的监听事件
			public void actionPerformed(ActionEvent e) 
				// 返回登录界面
				dispose();// 关闭当前界面
				EmasFactory.getTeacherServiceInstance().setTeacherLoginStatus(acc, "0");
				new LoginFrame(); // 打开登录界面

			
		);

		btnAdd.addActionListener(new ActionListener()  // 添加按钮监听时间
			public void actionPerformed(ActionEvent e) 

				// 添加方法
			
		);

		// 查询按钮点击 - 事件处理程序
		btnQuery.addActionListener((e) ->  // 查询监听事件
			String sno = txtsno.getText().toString(); // 获取查询的name
			System.out.println("studentNo" + sno.trim());
			initStudentTableModel();// 初始化表格
			// showStudent(name); //根据name去查询
			showStudentByCondition(sno);
		);

		setTitle("学生管理系统"); // 界面标题
		setBounds(100, 100, 750, 500);// 设置界面位置大小
		setResizable(false);// 设置界面大小不可改变
		setLocationRelativeTo(null); // 设置登录界面居中
		getContentPane().setLayout(null); // 设置绝对布局
		this.setVisible(true);
		browse = this;
		// this.user = user;
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // 设置默认关闭操作

	

	/**
	 * @return void
	 * @Param :
	 * @description 初始化表格
	 * @author 优逸客大数据研发部
	 * @date 2020/11/27 13:44
	 */
	private void initStudentTableModel() 
		// 创建一个JTable的默认显示模式
		DefaultTableModel dt = new DefaultTableModel();
		// 设置JTable的列的个数和列的名字
		dt.setColumnIdentifiers(new Object[]  "学号", "名字", "性别", "年龄", "年级", "地址", "状态", );

		tblStudent.setBackground(new Color(255, 255, 255));
		// 设置JTable表格对象被选中行的背景色
		tblStudent.setSelectionBackground(new Color(128, 0, 255));
		// 设置JTable表格对象被选中行的字体色
		tblStudent.setSelectionForeground(new Color(255, 255, 255));
		// 为表格设置商品信息表格模型
		tblStudent.setModel(dt);
		// tblStudent.isCellEditable(tblStudent.getSelectedRow(),
		// tblStudent.getSelectedColumn());

		// 设置表格的列
		tblStudent.getColumnModel().getColumn(0).setPreferredWidth(70);
		tblStudent.getColumnModel().getColumn(1).setPreferredWidth(100);
		tblStudent.getColumnModel().getColumn(2).setPreferredWidth(70);
		tblStudent.getColumnModel().getColumn(2).setPreferredWidth(70);
		tblStudent.getColumnModel().getColumn(3).setPreferredWidth(70);
		tblStudent.getColumnModel().getColumn(3).setPreferredWidth(70);
		tblStudent.getColumnModel().getColumn(3).setPreferredWidth(70);

	

	static void showStudent() throws Exception  // 展示所有学生信息

		// 获取所有的学生(通过工厂类)
		List<Student> students = EmasFactory.getStudnetServiceInstance().listStudent();
		DefaultTableModel dt = (DefaultTableModel) tblStudent.getModel();// 在表中增加内容
		dt.setRowCount(0);
		for (int i = 0; i < students.size(); i++) 
			dt.insertRow(i,
					new Object[]  students.get(i).getSno(), students.get(i).getSname(),
							students.get(i).getSgender().equals("0") ? "男" : "女", students.get(i).getSage(),
							students.get(i).getGrade(), students.get(i).getAddress(),
							students.get(i).getStauts().equals("0") ? "正常" : "请假" );
		
	

	static void showStudentByCondition(String sno)  // 展示所有学生信息

		// 获取所有的学生(通过工厂类)

		try 
			List<Student> students = EmasFactory.getStudnetServiceInstance()
					.studentList(sno.trim().replaceAll("\\\\s*", ""));

			DefaultTableModel dt = (DefaultTableModel) tblStudent.getModel();// 在表中增加内容
			dt.setRowCount(0);
			for (int i = 0; i < students.size(); i++) 
				dt.insertRow(i,
						new Object[]  students.get(i).getSno(), students.get(i).getSname(),
								students.get(i).getSgender().equals("0") ? "男" : "女", students.get(i).getSage(),
								students.get(i).getGrade(), students.get(i).getAddress(),
								students.get(i).getStauts().equals("0") ? "正常" : "请假" );
			

		 catch (Exception e) 
			e.printStackTrace();
		

	


AddFrame.java

package com.zhongbei.eams.ui;

import com.zhongbei.eams.factory.EmasFactory;
import com.zhongbei.eams.factory.EmasFactory;
import com.zhongbei.eams.student.enity.Student;
import com.zhongbei.eams.student.enity.Student;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.regex.Pattern;

public class AddFrame extends JFrame 

	private JTextField tfSname; // 定义注册用户名
	private JTextField sno; // 定义输入密码框
	private JTextField age; // 年龄
	private JTextField tfAddress;// 地址

	private JButton btAdd; // 定义注册按钮
	private JButton btBack; // 定义返回按钮

	private JLabel grade, lblSex; // 定义城市和性别
	private JRadioButton rdoMale, rdoFemale, status1, status2; // 定义性别选择
	private JComboBox cboGrade; // 定义城市的多选框

	AddFrame() 
		this.setLayout(null); // 绝对布局

		JLabel jlSno = new JLabel("学号"); // 定义用户名文本标签
		jlSno.setBounds(30, 42, 74, 15); // 设置标签文职
		this.add(jlSno);// 添加到本界面

		sno = new JTextField(); // 定义一个文本输入框
		sno.setBounds(104, 40, 148, 25); // 设置位置
		this.add(sno);// 添加到本界面

		JLabel jlSname = new JLabel("姓名"); // 定义密码文本标签
		jlSname.setBounds(30, 99, 74, 15); // 设置标签位置
		this.add(jlSname); // 添加到本界面

		tfSname = new JTextField(); // 定义密码1 输入框
		tfSname.setBounds(104, 94, 148, 25);// 设置输入框位置
		this.add(tfSname); // 添加到本界面

		JLabel status = new JLabel("状态");// 定义密码2标签
		status.setBounds(30, 156, 74, 15);// 设置位置
		this.add(status);// 添加到本界面

		status1 = new JRadioButton("正常"); // 定义性别选择框
		status1.setSelected(true); // 设置默认选中
		status1.setBounds(104, 152, 75, 25);// 设置位置
		this.add(status1);// 添加到本界面

		status2 = new JRadioButton("请假"); // 定义女行选择框
		status2.setBounds(183, 152, 75, 25);// 设置位置
		this.add(status2);// 添加到本界面

		ButtonGroup group1 = new ButtonGroup(); //
		group1.add(status1); // 将男行选择框添加到group中
		group1.add(status2);// 将女性选择框添加到group中

		JLabel jlage = new JLabel("年龄"); // 定义一个姓名的文本标签
		jlage.setBounds(30, 208, 74, 15); // 设置位置
		this.add(jlage);// 添加到本界面

		age = new JTextField(10); // 定义一个姓名输入框
		age.setBounds(104, 204, 148, 25); // 设置位置
		this.add(age); // 添加到本界面

		lblSex = new JLabel("性别:"); // 定义一个性别文本标签
		lblSex.setBounds(30, 260, 74, 15);// 设置位置
		this.add(lblSex); // 添加到本界面

		rdoMale = new JRadioButton("男"); // 定义性别选择框
		rdoMale.setSelected(true); // 设置默认选中
		rdoMale.setBounds(104, 256, 50, 25);// 设置位置
		this.add(rdoMale);// 添加到本界面

		rdoFemale = new JRadioButton("女"); // 定义女行选择框
		rdoFemale.setBounds(173, 256, 50, 25);// 设置位置
		this.add(rdoFemale);// 添加到本界面

		ButtonGroup group = new ButtonGroup(); //
		group.add(rdoMale); // 将男行选择框添加到group中
		group.add(rdoFemale);// 将女性选择框添加到group中

		grade = new JLabel("年级"); // 定义一个所在地 文本标签
		grade.setBounds(30, 312, 74, 15);  设置位置
		this.add(grade); // 添加到本界面

		cboGrade = new JComboBox(); // 定义一个年级选择框
		cboGrade.setModel(new DefaultComboBoxModel(new String[]  "大一", "大二", "大三", "大四" ));
		cboGrade.setBounds(104, 308, 148, 25);// 设置位置
		this.add(cboGrade); // 添加到本界面中

		JLabel jlAddress = new JLabel("地址"); // 定义用户名文本标签
		jlAddress.setBounds(30, 364, 74, 15); // 设置标签文职
		this.add(jlAddress);// 添加到本界面

		tfAddress = new JTextField(); // 定义一个文本输入框
		tfAddress.setBounds(104, 360, 148, 25); // 设置位置
		this.add(tfAddress);// 添加到本界面

		btAdd = new JButton("添 加"); // 添加按钮
		btAdd.setBounds(33, 400, 90, 35);// 设置位置
		btAdd.addActionListener(new ActionListener()  // 添加监听事件
			public void actionPerformed(ActionEvent e) 
				try 
					AddActionPerformed(); // 注册方法
				 catch (Exception ex) 
					ex.printStackTrace();
				
			
		);
		this.add(btAdd);// 将注册按钮添加到界面

		btBack = new JButton("返 回"); // 定义一个返回按钮
		btBack.setBounds(160, 400, 90, 35);
		btBack.addActionListener(new ActionListener()  // 返回按钮的监听方法
			public void actionPerformed(ActionEvent e) 
				dispose(); // 关闭界面
				try 
					new MainFrame(MainFrame.account);
				 catch (Exception ex) 
					ex.printStackTrace();
				
			
		);
		this.add(btBack); // 将返回按钮添加到界面

		setTitle("学生信息添加界面");
		setSize(330, 524); // 设置界面大小
		this.setVisible(true);
		setResizable(false); // 设置界面大小不可改变
		setLocationRelativeTo(null); // 设置登录界面居中
		this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // 设置默认关闭操作

	

	public void AddActionPerformed() throws Exception 
		String xuehao = sno.getText();
		String xingming = tfSname.getText();
		String zhuangtai = String.valueOf(status1.isSelected() ? 0 : 1);

		String nianji = cboGrade.getSelectedItem().toString();
		String xingbie = String.valueOf(rdoMale.isSelected() ? 0 : 1);

		String dizhi = tfAddress.getText();
		if ("".equals(xuehao) || null == xuehao) 
			JOptionPane.showMessageDialog(this, "学号不能为空");
			return;
		 else 
			boolean flag = Pattern.matches("^[A-Za-z0-9]6,12+$", xuehao);
			if (!flag) 
				JOptionPane.showMessageDialog(this, "学号不合法,规则是6-12个字符,由数字加字母组成");
				return;
			
		
		if ("".equals(xingming) || null == xingming) 
			JOptionPane.showMessageDialog(this, "姓名不能为空");
			return;
		 else 
			boolean flag = Pattern.matches("^[\\\\u4e00-\\\\u9fa5]2,4$", xingming);
			if (!flag) 
				JOptionPane.showMessageDialog(this, "姓名不合法,规则是2-4个字符,必须是汉字");
				return;
			
		
		if ("".equals(age.getText()) || null == age.getText()) 
			JOptionPane.showMessageDialog(this, "年龄不能空");
			return;
		 else 
			boolean flag = Pattern.matches("^\\\\d2,3$", age.getText());
			if (!flag) 
				JOptionPane.showMessageDialog(this, "年龄不合法,长度2-3个字符,必须数字\\n");
				return;
			
		
		int nianling = Integer.parseInt(age.getText());

		if ("".equals(dizhi) || null == dizhi) 
			JOptionPane.showMessageDialog(this, "地址不能为空");
			return;
		

		System.out.println(xuehao + "\\t" + xingming + "\\t" + zhuangtai + "\\t" + nianling + "\\t" + xingbie + "\\t"
				+ nianji + "\\t" + dizhi);
		// 获取到信息后对学生信息进行封装
		Student student = new Student(null, xuehao, xingming, xingbie, nianling, zhuangtai, dizhi, nianji);
		// 封装过后使用工厂调用业务层执行DAO的函数执行添加操作(执行查询学号是否存在,执行添加操作)
		boolean flag = EmasFactory.getStudnetServiceInstance().queryStudentBySno(xuehao);
		if (flag) 
			// flag == true 表示的是学号已经被占用
			JOptionPane.showMessageDialog(this, "当前要添加的学号:[" + xuehao + "]已经被占用,需要换一个!");
		 else 
			// flag == false 表示学号未被占用
			boolean temp = EmasFactory.getStudnetServiceInstance().addStudnet(student);
			if (temp) 
				// temp == true 表示学生添加完成
				JOptionPane.showMessageDialog(this, "当前要添加的学生:[" + xingming + "]添加成功,点击确认继续。");
				dispose();
				new MainFrame(MainFrame.account);
			 else 
				// temp == false 表示学生添加失败
				JOptionPane.showMessageDialog(this, "当前要添加的学生:[" + xingming + "]添加失败,请重新添加!");
			
		
	

	public static void main(String[] args) 
		new AddFrame();
	

四、其他

1.更多系统

更多JavaSwing系统请关注专栏。

https://blog.csdn.net/helongqiang/category_6229101.htmlhttps://blog.csdn.net/helongqiang/category_6229101.html

更多JavaWeb系统请关注专栏。

https://blog.csdn.net/helongqiang/category_10020130.htmlhttps://blog.csdn.net/helongqiang/category_10020130.html

2.源码下载

Java+Swing+Mysql实现学生信息管理系统-2

3.运行项目

 请点击以下链接,部署你的项目。

Eclipse如何导入JavaSwing项目超详细图文教程

Eclipse如何导入JavaSwing项目超详细视频教程

4.备注

如有侵权请联系我删除。

5.支持博主

如果您觉得此文对您有帮助,请点赞加关注加收藏。祝您生活愉快!

以上是关于Eclipse+Java+Swing+Mysql实现学生信息管理系统的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse+Java+Swing+Mysql实现超市管理系统

Eclipse+Java+Swing+Mysql实现酒店管理系统

Eclipse+Java+Swing+Mysql实现学生信息管理系统

Eclipse+Java+Swing+Mysql实现进销存管理系统建议收藏

Eclipse+Java+Swing+Mysql实现自助存取款机(ATM)系统

Eclipse+Java+Swing+Mysql实现仓库管理系统