> 文档中心 > Eclipse+Java+Swing+Mysql实现学生信息管理系统

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() { // 登录按钮的监听事件@Overridepublic 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 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() { // 返回按钮的监听方法@Overridepublic 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() {@Overridepublic void actionPerformed(ActionEvent actionEvent) {AddFrame addFrame = new AddFrame();dispose();}});btnDelete = new JButton("删   除"); // 定义添加按钮btnDelete.setBounds(444, 394, 90, 32); // 设置按钮位置this.add(btnDelete);// 将按钮添加到界面btnDelete.addActionListener((e) -> {// todotry {if (tblStudent.getSelectedRow() <= -1) {JOptionPane.showMessageDialog(null, "您还没有选中任何数据");} else {List 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  {// todoList 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(); // 获取查询的nameSystem.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 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 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("^\\d{2,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.支持博主

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

海量搞笑GIF动态图片