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

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() { // 返回按钮的监听方法

@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(“1{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(“2{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(“3{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 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();

}

}

}

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(“4{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(“5{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系统请关注专栏。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Java)

我的面试宝典:一线互联网大厂Java核心面试题库

以下是我个人的一些做法,希望可以给各位提供一些帮助:

整理了很长一段时间,拿来复习面试刷题非常合适,其中包括了Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等,且还会持续的更新…可star一下!

image

283页的Java进阶核心pdf文档

Java部分:Java基础,集合,并发,多线程,JVM,设计模式

数据结构算法:Java算法,数据结构

开源框架部分:Spring,MyBatis,MVC,netty,tomcat

分布式部分:架构设计,Redis缓存,Zookeeper,kafka,RabbitMQ,负载均衡等

微服务部分:SpringBoot,SpringCloud,Dubbo,Docker

image

还有源码相关的阅读学习

image

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
n.net/helongqiang/category_6229101.html](https://blog.csdn.net/helongqiang/category_6229101.html “https://blog.csdn.net/helongqiang/category_6229101.html”)

更多JavaWeb系统请关注专栏。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。[外链图片转存中…(img-pJeaauZg-1713836574981)]

[外链图片转存中…(img-OguYlrb4-1713836574982)]

[外链图片转存中…(img-m2SRC9rd-1713836574982)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Java)

[外链图片转存中…(img-LwrzSLOl-1713836574982)]

我的面试宝典:一线互联网大厂Java核心面试题库

以下是我个人的一些做法,希望可以给各位提供一些帮助:

整理了很长一段时间,拿来复习面试刷题非常合适,其中包括了Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等,且还会持续的更新…可star一下!

[外链图片转存中…(img-fQSzG9h8-1713836574983)]

283页的Java进阶核心pdf文档

Java部分:Java基础,集合,并发,多线程,JVM,设计模式

数据结构算法:Java算法,数据结构

开源框架部分:Spring,MyBatis,MVC,netty,tomcat

分布式部分:架构设计,Redis缓存,Zookeeper,kafka,RabbitMQ,负载均衡等

微服务部分:SpringBoot,SpringCloud,Dubbo,Docker

[外链图片转存中…(img-xzhkbdjF-1713836574983)]

还有源码相关的阅读学习

[外链图片转存中…(img-tCLKUn3s-1713836574983)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!


  1. A-Za-z0-9 ↩︎

  2. A-Za-z0-9 ↩︎

  3. \u4e00-\u9fa5 ↩︎

  4. A-Za-z0-9 ↩︎

  5. \u4e00-\u9fa5 ↩︎

  • 20
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值