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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 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<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("^\\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.html

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


更多JavaWeb系统请关注专栏。


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

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


2.源码下载

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


3.运行项目

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


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


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


4.备注

如有侵权请联系我删除。


5.支持博主

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


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
11天前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
72 26
|
14天前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
|
25天前
|
关系型数据库 MySQL Java
MySQL索引优化与Java应用实践
【11月更文挑战第25天】在大数据量和高并发的业务场景下,MySQL数据库的索引优化是提升查询性能的关键。本文将深入探讨MySQL索引的多种类型、优化策略及其在Java应用中的实践,通过历史背景、业务场景、底层原理的介绍,并结合Java示例代码,帮助Java架构师更好地理解并应用这些技术。
25 2
|
1月前
|
监控 前端开发 Java
【技术开发】接口管理平台要用什么技术栈?推荐:Java+Vue3+Docker+MySQL
该文档介绍了基于Java后端和Vue3前端构建的管理系统的技术栈及功能模块,涵盖管理后台的访问、登录、首页概览、API接口管理、接口权限设置、接口监控、计费管理、账号管理、应用管理、数据库配置、站点配置及管理员个人设置等内容,并提供了访问地址及操作指南。
|
Java Android开发 网络协议
Java开发 Eclipse使用技巧(转)
1、如何设置默认的代码目录为src,默认的输出目录为bin? window->Preferences->java->Buil Path中,右侧选择Folders就可以2、如何为快速局部变量设置getX,setX属性?在代码里->右键->source->Generae Getters and Set...
1128 0
|
6天前
|
安全 Java API
java如何请求接口然后终止某个线程
通过本文的介绍,您应该能够理解如何在Java中请求接口并根据返回结果终止某个线程。合理使用标志位或 `interrupt`方法可以确保线程的安全终止,而处理好网络请求中的各种异常情况,可以提高程序的稳定性和可靠性。
36 6
|
21天前
|
设计模式 Java 开发者
Java多线程编程的陷阱与解决方案####
本文深入探讨了Java多线程编程中常见的问题及其解决策略。通过分析竞态条件、死锁、活锁等典型场景,并结合代码示例和实用技巧,帮助开发者有效避免这些陷阱,提升并发程序的稳定性和性能。 ####
|
19天前
|
存储 监控 小程序
Java中的线程池优化实践####
本文深入探讨了Java中线程池的工作原理,分析了常见的线程池类型及其适用场景,并通过实际案例展示了如何根据应用需求进行线程池的优化配置。文章首先介绍了线程池的基本概念和核心参数,随后详细阐述了几种常见的线程池实现(如FixedThreadPool、CachedThreadPool、ScheduledThreadPool等)的特点及使用场景。接着,通过一个电商系统订单处理的实际案例,分析了线程池参数设置不当导致的性能问题,并提出了相应的优化策略。最终,总结了线程池优化的最佳实践,旨在帮助开发者更好地利用Java线程池提升应用性能和稳定性。 ####
|
21天前
|
缓存 Java 开发者
Java多线程编程的陷阱与最佳实践####
本文深入探讨了Java多线程编程中常见的陷阱,如竞态条件、死锁和内存一致性错误,并提供了实用的避免策略。通过分析典型错误案例,本文旨在帮助开发者更好地理解和掌握多线程环境下的编程技巧,从而提升并发程序的稳定性和性能。 ####
|
14天前
|
安全 算法 Java
Java多线程编程中的陷阱与最佳实践####
本文探讨了Java多线程编程中常见的陷阱,并介绍了如何通过最佳实践来避免这些问题。我们将从基础概念入手,逐步深入到具体的代码示例,帮助开发者更好地理解和应用多线程技术。无论是初学者还是有经验的开发者,都能从中获得有价值的见解和建议。 ####

推荐镜像

更多
下一篇
DataWorks