实训第五天(学生信息管理系统)

实训第五天(学生信息管理系统)
按住alt+insert建立构造方法
在今天不再像之前一样copy 老师的代码,而是按照老师之前讲的思路,自己慢慢按照进程来写,虽然速度比较慢,但是自己也学到了许多读东西,还有一些快捷键,还有老师教给我们的命名方法,后面,跟着老师上课的时候所讲的,自己再回来写博客的时候,能够按照自己的写出来,虽然每天晚上有点晚睡但是过得很充足,不再是像之前那样虚度自己的时光。还有自己一点都不细心,老师说过一句话:作为一个程序员需要耐得住寂寞,才能够走得更远,我正在 往这方向上前进,希望通过自己的努力可以获得自己想要的结果。
一、设置学生记录信息

1.先在这里创建设置学生信息类SetCollegeInfoFrame在这里插入图片描述
然后是构造方法然后是主方法
在这里插入图片描述
2.这里是非常重要的不然后面容易报错。
添加面板
在这里插入图片描述
3.添加标签在这里插入图片描述
4.添加按钮、文本框、滚动面板、学校服务

在这里插入图片描述
然后是初始化用户界面,创建组件面板与控件
在这里插入图片描述
5.设置大面板布局,将北面板、中面板与南面板添加到大面板、设置大面板布局,将北面板、中面板与南面板添加到大面板、将滚动面板添加到中面板、将两个按钮添加到南面板、创建学校服务对象、获取学校对象、利用学校对象属性值设置相应控件的内容
在这里插入图片描述
在这里插入图片描述
6、利用学校对象属性值设置相应控件的内容、设置窗口大小、设置窗口不可调整大小、设置窗口刚好容纳组件、设置窗口标题、设置窗口可见、设置窗口默认关闭操作。
在这里插入图片描述
7.【关闭】按钮单击事件处理,【保存】按钮单击事件处理、 修改学校对象属性、修改学校对象属性。
在这里插入图片描述
8.运行结果:
在这里插入图片描述
二、创建一个修改密码的类1.ChangePasswordFrame
在这里插入图片描述
2.先是构造方法 然后是主方法、控制面板、标签、文本框 、按钮用户服务对象、初始化用户界面、设置面板布局、按钮的单击事件、取消时间、确定事件、按键的事件处理、文本框的事件处理、修改密码的用户、获取用户信息、保存用户输入的旧密码与两个新密码、创建学生服务对象。
完整的代码如下:
package net.zxk.student.gui;

import net.zxk.student.app.Application;
import net.zxk.student.bean.User;
import net.zxk.student.service.UserService;
import net.zxk.student.service.impl.UserServiceImpl;

import javax.swing.;
import java.awt.
;
import java.awt.event.*;

public class ChangePasswordFrame extends JFrame {
/**
* 面板
/
private JPanel panel;
private JPanel pnlRow1;
private JPanel pnlRow2;
private JPanel pnlRow3;
private JPanel pnlRow4;
private JPanel pnlRow5;
/
*
* 标签
/
private JLabel lblUsername;
private JLabel lblPassword;
private JLabel lblNewPassword1;
private JLabel lblNewPassword2;
/
*
* 文本框
*/
private JTextField txtUsername;
private JPasswordField txtPassword;
private JPasswordField txtNewPassword1;
private JPasswordField txtNewPassword2;

/**
 * 按钮
 */
private JButton btnOK;
private JButton btnCancel;
/**
 * 用户服务对象
 */
private UserService userService;

/**
 * 构造方法
 *
 * @param title
 */
public ChangePasswordFrame(String title) {
    super(title);
    initGUI();
}
/**
 * 初始化用户界面
 */
private void initGUI() {
    //创建组件(面板与控件)
    panel=(JPanel) getContentPane();
    pnlRow1 =new JPanel();
    pnlRow2 =new JPanel();
    pnlRow3 =new JPanel();
    pnlRow4 =new JPanel();
    pnlRow5 =new JPanel();

    lblUsername =new JLabel("用户名");
    lblPassword =new JLabel("旧密码");
    lblNewPassword1 =new JLabel("新密码");
    lblNewPassword2 =new JLabel("确 认");


    txtUsername = new JTextField(20);
    txtUsername.setEditable(false);
    txtPassword = new JPasswordField(20);
    txtNewPassword1 = new JPasswordField(20);
    txtNewPassword2 = new JPasswordField(20);

    btnOK = new JButton("确定[O]");
    btnOK.setMnemonic(KeyEvent.VK_O);
    btnCancel = new JButton("取消[C]");
    btnCancel.setMnemonic(KeyEvent.VK_C);

    // 设置大面板布局,添加五个小面板
    panel.setLayout(new GridLayout(5, 1));
    panel.add(pnlRow1);
    panel.add(pnlRow2);
    panel.add(pnlRow3);
    panel.add(pnlRow4);
    panel.add(pnlRow5);

    // 将控件添加到五个小面板
    pnlRow1.add(lblUsername);
    pnlRow1.add(txtUsername);
    pnlRow2.add(lblPassword);
    pnlRow2.add(txtPassword);
    pnlRow3.add(lblNewPassword1);
    pnlRow3.add(txtNewPassword1);
    pnlRow4.add(lblNewPassword2);
    pnlRow4.add(txtNewPassword2);
    pnlRow5.add(btnOK);
    pnlRow5.add(btnCancel);

    // 设置窗口不可调整大小
    setResizable(false);
    // 设置窗口刚好容纳组件
    pack();
    // 设置窗口屏幕居中
    setLocationRelativeTo(null);
    // 设置窗口标题
    setTitle("修改用户密码");
    // 设置窗口可见
    setVisible(true);
    // 设置窗口默认关闭操作
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    // 设置控件属性
    txtUsername.setEditable(false);
    txtUsername.setText(Application.username);

    // 【取消】按钮单击事件处理
    btnCancel.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            dispose();
        }
    });

    // 【确定】按钮单击事件处理
    btnOK.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            changePassword();
        }
    });

    // 【确定】按钮按键事件处理
    btnOK.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == 10) {
                changePassword();
            }
        }
    });

    // 【用户名】文本框按键事件处理
    txtUsername.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                txtPassword.requestFocus();
            }
        }
    });

    // 【密码】文本框按键事件处理
    txtPassword.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                txtNewPassword1.requestFocus();
            }
        }
    });

    // 【新密码1】文本框按键事件处理
    txtNewPassword1.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                txtNewPassword2.requestFocus();
            }
        }
    });

    // 【新密码2】文本框按键事件处理
    txtNewPassword2.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                btnOK.requestFocus();
            }
        }
    });
}

/**
 * 修改密码方法
 */
private void changePassword() {
    // 获取用户信息
    int id = Application.id;
    String username = Application.username;

    // 保存用户输入的旧密码与两个新密码
    String password = new String(txtPassword.getPassword());
    String newPassword1 = new String(txtNewPassword1.getPassword());
    String newPassword2 = new String(txtNewPassword2.getPassword());

    // 创建学生服务对象
    userService = new UserServiceImpl();

    if (userService.login(username, password) == null) {
        JOptionPane.showMessageDialog(null, "旧密码错误,请重新输入!", "错误提示", JOptionPane.ERROR_MESSAGE);
        txtPassword.requestFocus();
        txtPassword.selectAll();
    } else if (newPassword1.equals("")) {
        JOptionPane.showMessageDialog(null, "新密码不能为空!", "错误提示", JOptionPane.ERROR_MESSAGE);
        txtNewPassword1.requestFocus();
    } else if (newPassword2.equals("")) {
        JOptionPane.showMessageDialog(null, "确认密码不能为空!", "错误提示", JOptionPane.ERROR_MESSAGE);
        txtNewPassword2.requestFocus();
    } else if (!newPassword1.equals(newPassword2)) {
        JOptionPane.showMessageDialog(null, "两次密码不一致,请重新输入!", "错误提示", JOptionPane.ERROR_MESSAGE);
        txtNewPassword1.setText("");
        txtNewPassword2.setText("");
        txtNewPassword1.requestFocus();
    } else {
        // 按标识符获取用户
        User user = userService.findUserById(id);
        // 修改用户的密码属性
        user.setPassword(newPassword1);
        // 调用用户服务对象的更新方法,更新用户信息
        int count = userService.updateUser(user);
        if (count > 0) {
            JOptionPane.showMessageDialog(null, "密码修改成功!", "设置密码", JOptionPane.INFORMATION_MESSAGE);
            dispose();
        } else {
            JOptionPane.showMessageDialog(null, "密码修改失败!", "设置密码", JOptionPane.WARNING_MESSAGE);
        }
    }
}

/**
 * 主方法
 *
 * @param args
 */
public static void main(String[] args) {
    Application.id = 1;
    Application.username = "李刚";
    new ChangePasswordFrame("");
}





}

3.运行结果如下:
在这里插入图片描述
在这里插入图片描述
三、创建一个浏览学生信息的窗口
1.BrowseStudentsFrame
在这里插入图片描述
2.先是构造方法然后是主方法,后面是用户界面、添加一些主键、声明面板、声明标签、声明文本框、按钮、当前记录号、学生列表、创建学生服务对象、设置窗口的大小、浏览当前记录号、按钮单击事件、下一条按钮单击事件、上一条按钮单击事件、将当前记录数据填充窗口各文本框。
完整代码如下:
package net.zxk.student.gui;
import net.zxk.student.bean.Student;
import net.zxk.student.service.StudentService;
import net.zxk.student.service.impl.StudentServiceImpl;

import javax.swing.;
import java.awt.
;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.util.List;

/**

  • 功能:浏览学生记录

  • 作者:周许苛

  • 日期:2019年6月21日
    /
    public class BrowseStudentsFrame extends JFrame {
    /
    *

    • 声明面板
      /
      private JPanel panel;
      private JPanel pnlCenter;
      private JPanel pnlRow1;
      private JPanel pnlRow2;
      private JPanel pnlRow3;
      private JPanel pnlRow4;
      private JPanel pnlRow5;
      private JPanel pnlRow6;
      private JPanel pnlRow7;
      private JPanel pnlSouth;
      /
      *
    • 声明标签
      /
      private JLabel lblId;
      private JLabel lblName;
      private JLabel lblSex;
      private JLabel lblAge;
      private JLabel lblDepartment;
      private JLabel lblClass;
      private JLabel lblTelephone;
      /
      *
    • 声明文本框
      /
      private JTextField txtId;
      private JTextField txtName;
      private JTextField txtSex;
      private JTextField txtAge;
      private JTextField txtDepartment;
      private JTextField txtClass;
      private JTextField txtTelephone;
      /
      *
    • 声明按钮
      */
      private JButton btnTop;
      private JButton btnPrevious;
      private JButton btnNext;
      private JButton btnBottom;
      private JButton btnExit;

    /**

    • 当前记录行号
      /
      private int currentRow;
      /
      *
    • 学生列表
      /
      private List students;
      /
      *
    • 创建学生服务对象
      */
      StudentService studentService;

    /**

    • 构造方法
    • @param title
      */
      public BrowseStudentsFrame(String title) {
      super(title);
      initGUI();
      }

    /**

    • 初始化用户界面
      */
      private void initGUI() {
      // 创建组件
      panel = (JPanel) getContentPane();
      pnlCenter = new JPanel();
      pnlSouth = new JPanel();

      pnlRow1 = new JPanel();
      pnlRow2 = new JPanel();
      pnlRow3 = new JPanel();
      pnlRow4 = new JPanel();
      pnlRow5 = new JPanel();
      pnlRow6 = new JPanel();
      pnlRow7 = new JPanel();

      pnlRow1.setLayout(new FlowLayout(FlowLayout.LEFT));
      pnlRow2.setLayout(new FlowLayout(FlowLayout.LEFT));
      pnlRow3.setLayout(new FlowLayout(FlowLayout.LEFT));
      pnlRow4.setLayout(new FlowLayout(FlowLayout.LEFT));
      pnlRow5.setLayout(new FlowLayout(FlowLayout.LEFT));
      pnlRow6.setLayout(new FlowLayout(FlowLayout.LEFT));
      pnlRow7.setLayout(new FlowLayout(FlowLayout.LEFT));

      lblId = new JLabel(“学号:”);
      lblName = new JLabel(“姓名:”);
      lblSex = new JLabel(“性别:”);
      lblAge = new JLabel(“年龄:”);
      lblDepartment = new JLabel(“系部:”);
      lblClass = new JLabel(“班级:”);
      lblTelephone = new JLabel(“电话:”);

      txtId = new JTextField(40);
      txtName = new JTextField(40);
      txtSex = new JTextField(40);
      txtAge = new JTextField(40);
      txtDepartment = new JTextField(40);
      txtClass = new JTextField(40);
      txtTelephone = new JTextField(40);
      txtId.setEditable(false);
      txtName.setEditable(false);
      txtSex.setEditable(false);
      txtAge.setEditable(false);
      txtDepartment.setEditable(false);
      txtClass.setEditable(false);
      txtTelephone.setEditable(false);

      btnTop = new JButton(“第一条[T]”);
      btnPrevious = new JButton(“上一条[P]”);
      btnNext = new JButton(“下一条[N]”);
      btnBottom = new JButton(“最后一条[B]”);
      btnExit = new JButton(“退出[X]”);
      btnTop.setMnemonic(KeyEvent.VK_T);
      btnPrevious.setMnemonic(KeyEvent.VK_P);
      btnNext.setMnemonic(KeyEvent.VK_N);
      btnBottom.setMnemonic(KeyEvent.VK_B);
      btnExit.setMnemonic(KeyEvent.VK_X);

      // 添加组件
      panel.setLayout(new BorderLayout());
      panel.add(pnlCenter, BorderLayout.CENTER);
      panel.add(pnlSouth, BorderLayout.SOUTH);
      pnlCenter.setLayout(new GridLayout(7, 1));

      pnlCenter.add(pnlRow1);
      pnlCenter.add(pnlRow2);
      pnlCenter.add(pnlRow3);
      pnlCenter.add(pnlRow4);
      pnlCenter.add(pnlRow5);
      pnlCenter.add(pnlRow6);
      pnlCenter.add(pnlRow7);

      pnlRow1.add(lblId);
      pnlRow1.add(txtId);
      pnlRow2.add(lblName);
      pnlRow2.add(txtName);
      pnlRow3.add(lblSex);
      pnlRow3.add(txtSex);
      pnlRow4.add(lblAge);
      pnlRow4.add(txtAge);
      pnlRow5.add(lblDepartment);
      pnlRow5.add(txtDepartment);
      pnlRow6.add(lblClass);
      pnlRow6.add(txtClass);
      pnlRow7.add(lblTelephone);
      pnlRow7.add(txtTelephone);

      pnlSouth.add(btnTop);
      pnlSouth.add(btnPrevious);
      pnlSouth.add(btnNext);
      pnlSouth.add(btnBottom);
      pnlSouth.add(btnExit);

      // 设置窗口属性
      setSize(500, 300);
      // 设置窗口不可调整大小
      setResizable(false);
      // 设置窗口刚好容纳组件
      pack();
      // 设置窗口屏幕居中
      setLocationRelativeTo(null);
      // 设置窗口可见
      setVisible(true);
      // 设置窗口默认关闭操作
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      // 创建学生服务对象
      studentService = new StudentServiceImpl();
      // 获取全部学生列表
      students = studentService.findAllStudents();
      // 判断是否有学生记录
      if (students.size() > 0) {
      // 设置当前记录号
      currentRow = 1;
      // 设置窗口标题
      setTitle(“浏览学生表记录” + " && 当前记录:" + currentRow);
      // 填充窗口各文本框数据
      fillFrameData(currentRow);
      } else {
      JOptionPane.showMessageDialog(null, “表中没有记录!”, “浏览学生表记录”, JOptionPane.ERROR_MESSAGE);
      btnTop.setEnabled(false);
      btnPrevious.setEnabled(false);
      btnNext.setEnabled(false);
      btnBottom.setEnabled(false);
      }

      // 【第一条】按钮单击事件
      btnTop.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
      // 设置当前记录号
      currentRow = 1;
      // 填充当前记录数据
      fillFrameData(currentRow);
      }
      });

      // 【上一条】按钮单击事件
      btnPrevious.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
      if (currentRow > 1) {
      // 设置当前记录号
      currentRow–;
      // 填充当前记录数据
      fillFrameData(currentRow);
      } else {
      JOptionPane.showMessageDialog(null, “已到第一条记录!”, “浏览学生表记录”, JOptionPane.WARNING_MESSAGE);
      }
      }
      });

      // 【下一条】按钮单击事件
      btnNext.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
      if (currentRow < students.size() - 1) {
      // 设置当前记录号
      currentRow++;
      // 填充当前记录数据
      fillFrameData(currentRow);
      } else {
      JOptionPane.showMessageDialog(null, “已到最后一条记录!”, “浏览学生表记录”, JOptionPane.WARNING_MESSAGE);
      }
      }
      });

      // 【最后一条】按钮单击事件
      btnBottom.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
      // 设置当前记录号
      currentRow = students.size() - 1;
      // 填充当前记录数据
      fillFrameData(currentRow);
      }
      });

      // 【退出】按钮单击事件
      btnExit.addActionListener(new ActionListener() {

       @Override
       public void actionPerformed(ActionEvent e) {
           dispose();
       }
      

      });
      }

    /**

    • 将当前记录数据填充窗口各文本框
    • @param currentRow
      */
      private void fillFrameData(int currentRow) {
      if (currentRow > 0) {
      setTitle(“浏览学生表记录” + " && 当前记录:" + currentRow);
      txtId.setText(students.get(currentRow).getId());
      txtName.setText(students.get(currentRow).getName());
      txtSex.setText(students.get(currentRow).getSex());
      txtAge.setText(students.get(currentRow).getAge() + “”);
      txtDepartment.setText(students.get(currentRow).getDepartment());
      txtClass.setText(students.get(currentRow).getClazz());
      txtTelephone.setText(students.get(currentRow).getTelephone());
      }
      }

    /**

    • 主方法
    • @param args
      */
      public static void main(String[] args) {
      new BrowseStudentsFrame("");
      }

}

3.运行结果:
在这里插入图片描述
四、在这个包下面创建一个类(添加学生记录)AddStudentFrame
1.
在这里插入图片描述
2.先是构造方法,然后是主方法,后面是初始化界面、面板、标签、文本框、按钮、创建组件、添加主键、按钮单击事件、创建学生实体、设置学生实体属性、创建学生服务对象、添加学生记录、判断是否添加成功、取消按钮单击事件处理、退出按钮单击事件处理、学号文本框按键事件处理、姓名文本框按键事件处理、性别文本框按键事件处理、年龄、系部、班级、判断一个字符串是否全是数字。
完整代码如下:
package net.zxk.student.gui;

import net.zxk.student.bean.Student;
import net.zxk.student.service.StudentService;
import net.zxk.student.service.impl.StudentServiceImpl;

import javax.swing.;
import java.awt.
;
import java.awt.event.*;
import java.util.List;

/**

  • 添加学生记录

  • 作者:周许苛

  • 日期:2019年6月21日
    /
    public class AddStudentFrame extends JFrame {
    /
    *

    • 声明面板
      /
      private JPanel panel;
      private JPanel pnlCenter;
      private JPanel pnlRow1;
      private JPanel pnlRow2;
      private JPanel pnlRow3;
      private JPanel pnlRow4;
      private JPanel pnlRow5;
      private JPanel pnlRow6;
      private JPanel pnlRow7;
      private JPanel pnlSouth;
      /
      *
    • 声明标签
      /
      private JLabel lblId;
      private JLabel lblName;
      private JLabel lblSex;
      private JLabel lblAge;
      private JLabel lblDepartment;
      private JLabel lblClass;
      private JLabel lblTelephone;
      /
      *
    • 声明文本框
      /
      private JTextField txtId;
      private JTextField txtName;
      private JTextField txtSex;
      private JTextField txtAge;
      private JTextField txtDepartment;
      private JTextField txtClass;
      private JTextField txtTelephone;
      /
      *
    • 声明按钮
      /
      private JButton btnExit;
      private JButton btnOK;
      private JButton btnCancel;
      /
      *
    • 当前记录行号
      /
      private int currentRow;
      /
      *
    • 学生列表
      */
      private List students;

    /**

    • 构造方法
    • @param title
      */
      public AddStudentFrame(String title) {
      super(title);
      initGUI();
      }

    /**

    • 初始化用户界面
      */
      private void initGUI() {
      // 创建组件
      panel = (JPanel) getContentPane();
      pnlCenter = new JPanel();
      pnlSouth = new JPanel();

      pnlRow1 = new JPanel();
      pnlRow2 = new JPanel();
      pnlRow3 = new JPanel();
      pnlRow4 = new JPanel();
      pnlRow5 = new JPanel();
      pnlRow6 = new JPanel();
      pnlRow7 = new JPanel();

      pnlRow1.setLayout(new FlowLayout(FlowLayout.LEFT));
      pnlRow2.setLayout(new FlowLayout(FlowLayout.LEFT));
      pnlRow3.setLayout(new FlowLayout(FlowLayout.LEFT));
      pnlRow4.setLayout(new FlowLayout(FlowLayout.LEFT));
      pnlRow5.setLayout(new FlowLayout(FlowLayout.LEFT));
      pnlRow6.setLayout(new FlowLayout(FlowLayout.LEFT));
      pnlRow7.setLayout(new FlowLayout(FlowLayout.LEFT));

      lblId = new JLabel(“学号:”);
      lblName = new JLabel(“姓名:”);
      lblSex = new JLabel(“性别:”);
      lblAge = new JLabel(“年龄:”);
      lblDepartment = new JLabel(“系部:”);
      lblClass = new JLabel(“班级:”);
      lblTelephone = new JLabel(“电话:”);

      txtId = new JTextField(20);
      txtName = new JTextField(20);
      txtSex = new JTextField(20);
      txtAge = new JTextField(20);
      txtDepartment = new JTextField(20);
      txtClass = new JTextField(20);
      txtTelephone = new JTextField(20);
      btnOK = new JButton(“确定[O]”);
      btnCancel = new JButton(“取消[C]”);
      btnExit = new JButton(“退出[X]”);
      btnOK.setMnemonic(KeyEvent.VK_O);
      btnCancel.setMnemonic(KeyEvent.VK_C);
      btnExit.setMnemonic(KeyEvent.VK_X);

      // 添加组件
      panel.setLayout(new BorderLayout());
      panel.add(pnlCenter, BorderLayout.CENTER);
      panel.add(pnlSouth, BorderLayout.SOUTH);
      pnlCenter.setLayout(new GridLayout(7, 1));
      pnlCenter.add(pnlRow1);
      pnlCenter.add(pnlRow2);
      pnlCenter.add(pnlRow3);
      pnlCenter.add(pnlRow4);
      pnlCenter.add(pnlRow5);
      pnlCenter.add(pnlRow6);
      pnlCenter.add(pnlRow7);

      pnlRow1.add(lblId);
      pnlRow1.add(txtId);
      pnlRow2.add(lblName);
      pnlRow2.add(txtName);
      pnlRow3.add(lblSex);
      pnlRow3.add(txtSex);
      pnlRow4.add(lblAge);
      pnlRow4.add(txtAge);
      pnlRow5.add(lblDepartment);
      pnlRow5.add(txtDepartment);
      pnlRow6.add(lblClass);
      pnlRow6.add(txtClass);
      pnlRow7.add(lblTelephone);
      pnlRow7.add(txtTelephone);

      pnlSouth.add(btnOK);
      pnlSouth.add(btnCancel);
      pnlSouth.add(btnExit);

      // 设置窗口属性
      setSize(500, 300);
      // 设置窗口不可调整大小
      setResizable(false);
      // 设置窗口刚好容纳组件
      pack();
      // 设置窗口屏幕居中
      setLocationRelativeTo(null);
      // 设置窗口标题
      setTitle(“添加学生记录”);
      // 设置窗口可见
      setVisible(true);
      // 设置窗口默认关闭操作
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      // 【确定】按钮单击事件
      btnOK.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
      // 学号非空校验
      if (txtId.getText().trim().equals("")) {
      JOptionPane.showMessageDialog(null, “学号不能为空!”, “增加学生记录”, JOptionPane.WARNING_MESSAGE);
      txtId.requestFocus();
      return;
      }

           // 年龄数字校验
           if (!isNumber(txtAge.getText().trim())) {
               JOptionPane.showMessageDialog(null, "注意:年龄全由数字构成!", "增加学生记录", JOptionPane.WARNING_MESSAGE);
               txtAge.setText("");
               txtAge.requestFocus();
               return;
           }
      
           // 创建学生实体
           Student student = new Student();
           // 设置学生实体属性
           student.setId(txtId.getText().trim());
           student.setName(txtName.getText().trim());
           student.setSex(txtSex.getText().trim());
           student.setAge(Integer.parseInt(txtAge.getText()));
           student.setDepartment(txtDepartment.getText().trim());
           student.setClazz(txtClass.getText().trim());
           student.setTelephone(txtTelephone.getText().trim());
      
           // 创建学生服务对象
           StudentService studentService = new StudentServiceImpl();
           // 添加学生记录
           int count = studentService.addStudent(student);
           // 判断是否添加成功
           if (count > 0) {
               JOptionPane.showMessageDialog(null, "添加记录成功!", "增加学生记录", JOptionPane.INFORMATION_MESSAGE);
               txtId.setText("");
               txtName.setText("");
               txtSex.setText("");
               txtAge.setText("");
               txtDepartment.setText("");
               txtClass.setText("");
               txtTelephone.setText("");
               txtId.requestFocus();
           } else {
               JOptionPane.showMessageDialog(null, "添加记录失败!", "增加学生记录", JOptionPane.ERROR_MESSAGE);
           }
       }
      

      });

      // 【取消】按钮单击事件处理
      btnCancel.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
      txtId.setText("");
      txtName.setText("");
      txtSex.setText("");
      txtAge.setText("");
      txtDepartment.setText("");
      txtClass.setText("");
      txtTelephone.setText("");
      txtId.requestFocus();
      }
      });

      // 【退出】按钮单击事件处理
      btnExit.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
      dispose();
      }
      });

      // 【学号】文本框按键事件处理
      txtId.addKeyListener(new KeyAdapter() {
      @Override
      public void keyPressed(KeyEvent e) {
      if (e.getKeyCode() == KeyEvent.VK_ENTER) {
      if (!txtId.getText().trim().equals("")) {
      txtName.requestFocus();
      }
      }
      }
      });

      // 【姓名】文本框按键事件处理
      txtName.addKeyListener(new KeyAdapter() {
      @Override
      public void keyPressed(KeyEvent e) {
      if (e.getKeyCode() == KeyEvent.VK_ENTER) {
      txtSex.requestFocus();
      }
      }
      });

      // 【性别】文本框按键事件处理
      txtSex.addKeyListener(new KeyAdapter() {
      @Override
      public void keyPressed(KeyEvent e) {
      if (e.getKeyCode() == KeyEvent.VK_ENTER) {
      txtAge.requestFocus();
      }
      }
      });

      // 【年龄】文本框按键事件处理
      txtAge.addKeyListener(new KeyAdapter() {
      @Override
      public void keyPressed(KeyEvent e) {
      if (e.getKeyCode() == KeyEvent.VK_ENTER) {
      txtDepartment.requestFocus();
      }
      }
      });

      // 【系部】文本框按键事件处理
      txtDepartment.addKeyListener(new KeyAdapter() {
      @Override
      public void keyPressed(KeyEvent e) {
      if (e.getKeyCode() == KeyEvent.VK_ENTER) {
      txtClass.requestFocus();
      }
      }
      });

      // 【班级】文本框按键事件处理
      txtClass.addKeyListener(new KeyAdapter() {
      @Override
      public void keyPressed(KeyEvent e) {
      if (e.getKeyCode() == KeyEvent.VK_ENTER) {
      txtTelephone.requestFocus();
      }
      }
      });
      }

    /**

    • 判断一个字符串是否全是数字
    • @param str
    • @return
      */
      boolean isNumber(String str) {
      for (int i = 0; i < str.length(); i++) {
      if (str.charAt(i) < ‘0’ || str.charAt(i) > ‘9’) {
      return false;
      }
      }
      return true;
      }

    /**

    • 主方法
    • @param args
      */
      public static void main(String[] args) {
      new AddStudentFrame("");

    }

}
3.运行结果如下:
这里报错的原因在前面命名的时候出现错误,并不能调用前面的方法,这里是自己不细心导致出现这样低级的错误。在之后一定会好好 提醒自己哪里报错了。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值