目录
一、系统介绍
1.开发环境
2.技术选型
3.系统功能
4.数据库
二、系统展示
1.注册系统
2.登录系统
3.系统主页面
4.添加学生信息
5.修改学生信息
6.查询学生信息
三、部分代码
LoginFrame.java
RegisterFrame.java
MainFrame.java
AddFrame.java
四、其他
1.更多系统
2.源码下载
3.运行项目
4.备注
5.支持博主
开发工具:Eclipse2021
JDK版本:jdk1.8
Mysql版本:8.0.13
Java+Swing+Mysql
1.注册
2.登录
3.查询学生信息
4.增加学生信息
5.修改学生信息
6.删除学生信息
/*
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;
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();
}
}
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() { // 返回按钮的监听方法
@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, "注册失败!"); //提示
// }
// }
}
}
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 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 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 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();
}
}
}
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();
}
}
更多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
Java+Swing+Mysql实现学生信息管理系统-2
请点击以下链接,部署你的项目。
Eclipse如何导入JavaSwing项目超详细图文教程
Eclipse如何导入JavaSwing项目超详细视频教程
如有侵权请联系我删除。
如果您觉得此文对您有帮助,请点赞加关注加收藏。祝您生活愉快!