Java学生信息管理系统实训第五天总结

一个星期都是Java课,一直敲代码,感觉真的是好累好累啊。但是生活正在苦不一样要继续吗?今天接着码代码吧。说实话打了这么多东西,是真的学到了很多的东西。比如写GUI一般的格式有什么,大概改怎么打还是学到了一些。但是让自己独立写的话还是很难独立完成。毕竟懂的东西要更多一些。
今天接着昨天的打吧,开始写添加学生窗口AddStudentFrame
在这里插入图片描述
package net.lsl.student.gui;

import jdk.nashorn.internal.scripts.JO;
import net.lsl.student.bean.Student;
import net.lsl.student.service.StudentService;
import net.lsl.student.service.impl.StudentServiceImpl;

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

/**

  • 功能:添加学生记录

  • 作者:李世兰

  • 日期:2019年6月22日10:34:09
    */
    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;

    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(800,500);
     //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.WARNING_MESSAGE);
                 txtId.setText("");
                 txtName.setText("");
                 txtSex.setText("");
                 txtAge.setText("");
                 txtDepartment.setText("");
                 txtClass.setText("");
                 txtTelephone.setText("");
                 txtId.requestFocus();
             }else{
                 JOptionPane.showMessageDialog(null,"添加记录失败!","增加学生信息",JOptionPane.WARNING_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("");
         }
     });
     //【退出】按钮单击事件处理
     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();
             }
         }
     });
    

    }

    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;
    }

    public static void main(String[] args) {
    new AddStudentFrame("");
    }
    }

写完了这个以后,接着就写了编辑学生窗口EditStudentFrame
package net.lsl.student.gui;

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

import javax.swing.;
import java.awt.
;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**

  • 功能:编辑学生记录

  • 作者:李世兰

  • 日期:2019年6月22日13:01:22
    */
    public class EditStudentFrame 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 JPanel pnlSouth1;
    private JPanel pnlSouth2;

    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 JButton btnEdit;
    private JButton btnOK;
    private JButton btnCancel;

    private int currentRow;

    private List students;

    StudentService studentService;

    public EditStudentFrame(String title){
    super(title);
    initGUI();
    }

    private void initGUI() {
    panel = (JPanel) getContentPane();
    pnlCenter = new JPanel();
    pnlSouth = new JPanel();
    pnlSouth.setLayout(new GridLayout(2, 1));

     pnlRow1 = new JPanel();
     pnlRow2 = new JPanel();
     pnlRow3 = new JPanel();
     pnlRow4 = new JPanel();
     pnlRow5 = new JPanel();
     pnlRow6 = new JPanel();
     pnlRow7 = new JPanel();
     pnlSouth1 = new JPanel();
     pnlSouth2 = 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));
     pnlRow5.setLayout(new FlowLayout(FlowLayout.LEFT));
     pnlRow6.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]");
     btnEdit = new JButton("编辑[E]");
     btnOK = new JButton("确定[O]");
     btnCancel = new JButton("取消[C]");
     btnOK.setEnabled(false);
     btnCancel.setEnabled(false);
     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);
     btnEdit.setMnemonic(KeyEvent.VK_E);
     btnOK.setMnemonic(KeyEvent.VK_O);
     btnCancel.setMnemonic(KeyEvent.VK_C);
    
     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(pnlSouth1);
     pnlSouth.add(pnlSouth2);
     pnlSouth1.add(btnTop);
     pnlSouth1.add(btnPrevious);
     pnlSouth1.add(btnNext);
     pnlSouth1.add(btnBottom);
     pnlSouth1.add(btnExit);
     pnlSouth2.add(btnEdit);
     pnlSouth2.add(btnOK);
     pnlSouth2.add(btnCancel);
    
    
     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);
         fillFrameDate(currentRow);
     } else {
         JOptionPane.showMessageDialog(null, "表中没有记录!", "浏览学生表记录", JOptionPane.WARNING_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;
             fillFrameDate(currentRow);
         }
     });
    
     btnPrevious.addActionListener(new ActionListener() {
         @Override
         public void actionPerformed(ActionEvent e) {
             if (currentRow > 1) {
                 currentRow--;
                 fillFrameDate(currentRow);
             } else {
                 JOptionPane.showMessageDialog(null, "已到第一条记录!", "浏览学生表记录", JOptionPane.WARNING_MESSAGE);
             }
         }
     });
    
     btnNext.addActionListener(new ActionListener() {
         @Override
         public void actionPerformed(ActionEvent e) {
             if (currentRow < students.size() - 1){
                 currentRow++;
                 fillFrameDate(currentRow);
             }else{
                 JOptionPane.showMessageDialog(null,"已到最后一条记录","浏览学生表记录",JOptionPane.WARNING_MESSAGE);
             }
         }
     });
    
     btnBottom.addActionListener(new ActionListener() {
         @Override
         public void actionPerformed(ActionEvent e) {
             currentRow = students.size() - 1;
             fillFrameDate(currentRow);
         }
     });
    
     btnExit.addActionListener(new ActionListener() {
         @Override
         public void actionPerformed(ActionEvent e) {
             dispose();
         }
     });
    
     btnEdit.addActionListener(new ActionListener() {
         @Override
         public void actionPerformed(ActionEvent e) {
             setTitle("编辑学生表记录" + "&& 当前记录:" + currentRow);
    
             txtName.setEditable(true);
             txtSex.setEditable(true);
             txtAge.setEditable(true);
             txtDepartment.setEditable(true);
             txtClass.setEditable(true);
             txtTelephone.setEditable(true);
             btnOK.setEnabled(true);
             btnCancel.setEnabled(true);
         }
     });
    
    
     btnOK.addActionListener(new ActionListener() {
         @Override
         public void actionPerformed(ActionEvent e) {
             Student student = students.get(currentRow);
             if (isNumber(txtAge.getText())){
                 if (isLegalTelephone(txtTelephone.getText())){
                     student.setName(txtName.getText());
                     student.setId(txtId.getText());
                     student.setSex(txtSex.getText());
                     student.setAge(Integer.parseInt(txtAge.getText()));
                     student.setDepartment(txtDepartment.getText());
                     student.setClazz(txtClass.getText());
                     student.setTelephone(txtTelephone.getText());
    
                     int count = studentService.updateStudent(student);
    
                     if (count > 0){
                         JOptionPane.showMessageDialog(null,"更新记录成功!","编辑学生记录",JOptionPane.WARNING_MESSAGE);
                         btnOK.setEnabled(false);
                         btnCancel.setEnabled(false);
                         btnEdit.setEnabled(true);
                         txtName.setEditable(false);
                         txtSex.setEditable(false);
                         txtAge.setEditable(false);
                         txtDepartment.setEditable(false);
                         txtClass.setEditable(false);
                         txtTelephone.setEditable(false);
    
                         students = studentService.findAllStudents();
                         setTitle("浏览学生表记录" + "&& 当前记录:" + currentRow);
                     }else{
                         JOptionPane.showMessageDialog(null,"更新记录失败!","编辑学生记录",JOptionPane.WARNING_MESSAGE);
                     }
                 }else{
                     JOptionPane.showMessageDialog(null,"非法手机号!","编辑学生记录",JOptionPane.WARNING_MESSAGE);
                     txtTelephone.selectAll();
                     txtTelephone.requestFocus();
                 }
             }else{
                 JOptionPane.showMessageDialog(null,"年龄必须是数字!","编辑学生记录",JOptionPane.WARNING_MESSAGE);
                 txtAge.selectAll();
                 txtAge.requestFocus();
             }
         }
     });
    
     btnCancel.addActionListener(new ActionListener() {
         @Override
         public void actionPerformed(ActionEvent e) {
             btnOK.setEnabled(false);
             btnCancel.setEnabled(false);
             btnEdit.setEnabled(false);
             txtName.setEditable(false);
             txtSex.setEditable(false);
             txtAge.setEditable(false);
             txtDepartment.setEditable(false);
             txtClass.setEditable(false);
             txtTelephone.setEditable(false);
    
             txtName.setText(students.get(currentRow).getName());
             txtSex.setText(students.get(currentRow).getSex());
             txtAge.setText(students.get(currentRow).getAge() + "");
             txtDepartment.setText(students.get(currentRow).getClazz());
             txtClass.setText(students.get(currentRow).getClazz());
             txtTelephone.setText(students.get(currentRow).getTelephone());
         }
     });
    
     //【学号】文本框按钮事件
     txtId.addKeyListener(new KeyAdapter() {
         @Override
         public void keyPressed(KeyEvent e) {
             if (e.getKeyCode() == KeyEvent.VK_ENTER){
                 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();
             }
         }
     });
    

    }
    private void fillFrameDate(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());
    }
    }
    //判断一个字符串是否全是数字
    private 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;
    }

    private boolean isLegalTelephone(String telephone){
    Pattern p = Pattern.compile("((13[0-9])|(15[4,\D])|(18[0-9]))\d{8}$");
    Matcher m = p.matcher(telephone);
    return m.matches();
    }

    public static void main(String[] args) {
    new EditStudentFrame("");
    }

}

3、按学号删除学生窗口DeleteStudentByIdFrame
package net.lsl.student.gui;

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

import javax.swing.;
import javax.swing.border.TitledBorder;
import java.awt.
;
import java.awt.event.*;
import java.util.Vector;
import java.util.List;

public class DeleteStudentByIdFrame extends JFrame {
/**
* 学号标签
/
private JLabel lblInputId;
/
*
* 学号文本框
/
private JTextField txtId;
/
*
* 面板
*/
private JPanel panel;
private JPanel pnlSouth;
private JPanel pnlCenter;
private JPanel pnlNorth;

    /**
     * 按钮
     */
    private JButton btnQuery;
    private JButton btnBrowseAll;
    private JButton btnDelete;
    private JButton btnExit;
    /**
     * 记录行集
     */
    private Vector rows;
    /**
     * 表格列标题
     */
    private Vector<String> colHead;
    /**
     * 表格
     */
    private JTable table;
    /**
     * 滚动面板
     */
    private JScrollPane scroller;
    /**
     * 当前记录行号
     */
    private int currentRow;
    /**
     * 学生列表
     */
    private List<Student> students;
    /**
     * 创建学生服务对象
     */
    private StudentService studentService;

    /**
     * 构造方法
     *
     * @param title
     */
    public DeleteStudentByIdFrame(String title) {
        super(title);
        intiGUI();
    }

    private void intiGUI() {
        // 创建组件
        panel = (JPanel) getContentPane();
        pnlNorth = new JPanel();
        pnlCenter = new JPanel();
        pnlSouth = new JPanel();

        rows = new Vector();
        colHead = new Vector();

        lblInputId = new JLabel("输入学号:");
        txtId = new JTextField(10);
        txtId.setHorizontalAlignment(JTextField.CENTER);
        btnQuery = new JButton("查询[Q]");
        btnQuery.setMnemonic(KeyEvent.VK_Q);
        btnBrowseAll = new JButton("显示全部记录[A]");
        btnBrowseAll.setMnemonic(KeyEvent.VK_A);
        btnDelete = new JButton("删除查询的记录[D]");
        btnDelete.setEnabled(false);// 删除按钮不可用
        btnDelete.setMnemonic(KeyEvent.VK_D);
        btnExit = new JButton("退出[X]");
        btnExit.setMnemonic(KeyEvent.VK_X);

        // 添加组件
        panel.add(pnlSouth, BorderLayout.SOUTH);
        panel.add(pnlCenter, BorderLayout.CENTER);
        panel.add(pnlNorth, BorderLayout.NORTH);

        pnlNorth.add(lblInputId);
        pnlNorth.add(txtId);
        pnlNorth.add(btnQuery);
        pnlNorth.add(btnBrowseAll);
        pnlSouth.setLayout(new FlowLayout(FlowLayout.RIGHT));
        pnlSouth.add(btnDelete);
        pnlSouth.add(btnExit);
        pnlCenter.setLayout(new BorderLayout());

        // 创建标题边框对象
        TitledBorder tb = new TitledBorder("查询结果");
        pnlCenter.setBorder(tb);

        // 创建学生服务对象
        studentService = new StudentServiceImpl();
        // 获取全部学生列表
        students = studentService.findAllStudents();
        // 填充表格数据
        fillTableData();

        // 设置窗口大小
        setSize(600, 350);
        // 设置窗口不可调整大小
        setResizable(false);
        // 设置窗口屏幕居中
        setLocationRelativeTo(null);
        // 设置窗口标题
        setTitle("按学号删除学生记录");
        // 设置窗口可见
        setVisible(true);
        // 设置窗口默认关闭操作
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

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

        // 【删除】按钮单击事件
        btnDelete.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (!rows.isEmpty()) {
                    long choice = JOptionPane.showConfirmDialog(null, "是否要删除记录?");
                    if (choice == JOptionPane.OK_OPTION) {
                        // 获取待删学生学号
                        String id = txtId.getText().trim();
                        // 按学号删除学生
                        int count = studentService.deleteStudentById(id);
                        if (count > 0) {
                            JOptionPane.showMessageDialog(null, "记录删除成功!", "提示", JOptionPane.INFORMATION_MESSAGE);
                            // 重新获取全部学生列表
                            students = studentService.findAllStudents();
                            // 清空待删学生学号文本框
                            txtId.setText("");
                            // 填充数据
                            fillTableData();
                            // 删除按钮不可用
                            btnDelete.setEnabled(false);
                        } else {
                            JOptionPane.showMessageDialog(null, "记录删除失败!", "警告", JOptionPane.WARNING_MESSAGE);
                        }
                    }
                }
            }
        });

        // 【查询】按钮单击事件
        btnQuery.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent event) {
                doQuery();
            }
        });

        // 【显示全部记录】按钮单击事件
        btnBrowseAll.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent event) {
                // 获取全部学生记录
                students = studentService.findAllStudents();
                // 填充表格数据
                fillTableData();
                // 删除按钮不可用
                btnDelete.setEnabled(false);
            }
        });

        // 【学号】文本框按键事件
        txtId.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                    doQuery();
                }
            }
        });

        // 表格单击事件
        table.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                // 获取当前行的行数
                int row = table.rowAtPoint(e.getPoint());
                // 选中鼠标单击的行
                table.setRowSelectionInterval(row, row);
                // 设置文本框内容
                txtId.setText(table.getValueAt(row, 0).toString());
            }
        });
    }

    /**
     * 查询方法
     */
    private void doQuery() {
        // 获取查询学号
        String id = txtId.getText().trim();
        if (!id.equals("")) {
            students.clear();
            Student student = studentService.findStudentById(id);
            if (student != null) {
                // 将查询到的学生添加到列表
                students.add(student);
                // 让删除按钮可用
                btnDelete.setEnabled(true);
            }
            // 填充表格
            fillTableData();
        } else {
            JOptionPane.showMessageDialog(this, "请输入待查学生学号!", "警告", JOptionPane.WARNING_MESSAGE);
            txtId.requestFocus();
        }
    }

    /**
     * 填充表格方法
     */
    private void fillTableData() {
        // 填充表头
        colHead.clear();
        colHead.add("学号");
        colHead.add("姓名");
        colHead.add("性别");
        colHead.add("年龄");
        colHead.add("系部");
        colHead.add("班级");
        colHead.add("电话");

        // 填充表记录
        rows.clear();
        for (Student student : students) {
            Vector<String> currentRow = new Vector<String>();
            currentRow.addElement(student.getId());
            currentRow.addElement(student.getName());
            currentRow.addElement(student.getSex());
            currentRow.addElement(student.getAge() + "");
            currentRow.addElement(student.getDepartment());
            currentRow.addElement(student.getClazz());
            currentRow.addElement(student.getTelephone());
            // 将当前行添加到记录行集
            rows.add(currentRow);
        }

        // 创建表格(参数1:记录集;参数2:表头)
        table = new JTable(rows, colHead);

        // 定义滚动面板
        scroller = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
                JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        // 将滚动面板添加到中心面板
        pnlCenter.add(scroller, BorderLayout.CENTER);

        // 重绘窗体
        repaint();

        // 判断是否有记录行
        if (rows.isEmpty()) {
            JOptionPane.showMessageDialog(this, "没有符合条件的记录!", "错误提示", JOptionPane.WARNING_MESSAGE);
            txtId.setText("");
        } else {
            // 让滚动条移到最上方
            scroller.getVerticalScrollBar().setValue(0);
        }
    }

    /**
     * 主方法
     *
     * @param args
     */


public static void main(String[] args) {
    new DeleteStudentByIdFrame("");
}

}

写完了这个GUI以后,我突然觉得里面的内容至少有一般以上是相同或者相类似的,其实自己可以不用那么累,可以复制粘贴,但是又想到复制粘贴对自己有什么用呢,自己一样学不到然后东西。于是又接着一个一个 的开始码代码。
在这里插入图片描述
这三个删除类其实差不多,只是有一些地方有一些不一样而已。写完了这三个删除类的界面,接着就写查询窗口
在这里插入图片描述
查询有四种方法,按学号查询,按姓名查询,按班级查询,按系部查询。
四种查询方法都是差不多的,代码也就差不多。
按学号查询学生窗口FindStudentById
package net.lsl.student.gui;

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

import javax.swing.;
import javax.swing.border.TitledBorder;
import java.awt.
;
import java.awt.event.*;
import java.awt.print.PrinterException;
import java.util.Vector;
import java.util.List;

public class FindStudentByIdFrame extends JFrame {

/**
 * 学号标签
 */
private JLabel lblInputId;
/**
 * 学号文本框
 */
private JTextField txtId;
/**
 * 面板
 */
private JPanel panel;
private JPanel pnlSouth;
private JPanel pnlCenter;
private JPanel pnlNorth;
/**
 * 按钮
 */
private JButton btnQuery;
private JButton btnBrowseAll;
private JButton btnPrint;
private JButton btnExit;
/**
 * 记录行集
 */
private Vector rows;
/**
 * 表格列标题
 */
private Vector<String> colHead;
/**
 * 表格
 */
private JTable table;
/**
 * 滚动面板
 */
private JScrollPane scroller;
/**
 * 当前记录行号
 */
private int currentRow;
/**
 * 学生列表
 */
private List<Student> students;
/**
 * 创建学生服务对象
 */
private StudentService studentService;

/**
 * 构造方法
 *
 * @param title
 */
public FindStudentByIdFrame(String title) {
    super(title);
    intiGUI();
}

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

    rows = new Vector();
    colHead = new Vector();

    lblInputId = new JLabel("输入学号:");
    txtId = new JTextField(10);
    txtId.setHorizontalAlignment(JTextField.CENTER);
    btnQuery = new JButton("查询[Q]");
    btnQuery.setMnemonic(KeyEvent.VK_Q);
    btnBrowseAll = new JButton("显示全部记录[A]");
    btnBrowseAll.setMnemonic(KeyEvent.VK_A);
    btnPrint = new JButton("打印[P]");
    btnPrint.setMnemonic(KeyEvent.VK_D);
    btnExit = new JButton("退出[X]");
    btnExit.setMnemonic(KeyEvent.VK_X);

    // 添加组件
    panel.add(pnlSouth, BorderLayout.SOUTH);
    panel.add(pnlCenter, BorderLayout.CENTER);
    panel.add(pnlNorth, BorderLayout.NORTH);

    pnlNorth.add(lblInputId);
    pnlNorth.add(txtId);
    pnlNorth.add(btnQuery);
    pnlNorth.add(btnBrowseAll);
    pnlSouth.setLayout(new FlowLayout(FlowLayout.RIGHT));
    pnlSouth.add(btnPrint);
    pnlSouth.add(btnExit);
    pnlCenter.setLayout(new BorderLayout());

    // 创建标题边框对象
    TitledBorder tb = new TitledBorder("查询结果");
    pnlCenter.setBorder(tb);

    // 创建学生服务对象
    studentService = new StudentServiceImpl();
    // 获取全部学生列表
    students = studentService.findAllStudents();
    // 填充表格数据
    fillTableData();

    // 设置窗口大小
    setSize(600, 350);
    // 设置窗口不可调整大小
    setResizable(false);
    // 设置窗口屏幕居中
    setLocationRelativeTo(null);
    // 设置窗口标题
    setTitle("按学号查询学生记录");
    // 设置窗口可见
    setVisible(true);
    // 设置窗口默认关闭操作
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


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

    // 【打印】按钮单击事件
    btnPrint.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            try {
                table.print();
            } catch (PrinterException e1) {
                e1.printStackTrace();
            }
        }
    });

    // 【查询】按钮单击事件
    btnQuery.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            doQuery();
        }
    });

    // 【显示全部记录】按钮单击事件
    btnBrowseAll.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent event) {
            // 获取全部学生记录
            students = studentService.findAllStudents();
            // 填充表格数据
            fillTableData();
            // 删除按钮不可用
            btnPrint.setEnabled(false);
        }
    });

    // 【学号】文本框按键事件
    txtId.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                doQuery();
            }
        }
    });

    // 表格单击事件
    table.addMouseListener(new MouseAdapter() {
        public void mouseClicked(MouseEvent e) {
            // 获取当前行的行数
            int row = table.rowAtPoint(e.getPoint());
            // 选中鼠标单击的行
            table.setRowSelectionInterval(row, row);
            // 设置文本框内容
            txtId.setText(table.getValueAt(row, 0).toString());
        }
    });
}

/**
 * 查询方法
 */
private void doQuery() {
    // 获取查询学号
    String id = txtId.getText().trim();
    if (!id.equals("")) {
        students.clear();
        Student student = studentService.findStudentById(id);
        if (student != null) {
            // 将查询到的学生添加到列表
            students.add(student);
        }
        // 填充表格
        fillTableData();
    } else {
        JOptionPane.showMessageDialog(this, "请输入待查学生学号!", "警告", JOptionPane.WARNING_MESSAGE);
        txtId.requestFocus();
    }
}

/**
 * 填充表格方法
 */
private void fillTableData() {
    // 填充表头
    colHead.clear();
    colHead.add("学号");
    colHead.add("姓名");
    colHead.add("性别");
    colHead.add("年龄");
    colHead.add("系部");
    colHead.add("班级");
    colHead.add("电话");

    // 填充表记录
    rows.clear();
    for (Student student : students) {
        Vector<String> currentRow = new Vector<String>();
        currentRow.addElement(student.getId());
        currentRow.addElement(student.getName());
        currentRow.addElement(student.getSex());
        currentRow.addElement(student.getAge() + "");
        currentRow.addElement(student.getDepartment());
        currentRow.addElement(student.getClazz());
        currentRow.addElement(student.getTelephone());
        // 将当前行添加到记录行集
        rows.add(currentRow);
    }

    // 创建表格(参数1:记录集;参数2:表头)
    table = new JTable(rows, colHead);

    // 定义滚动面板
    scroller = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
            JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    // 将滚动面板添加到中心面板
    pnlCenter.add(scroller, BorderLayout.CENTER);

    // 重绘窗体
    repaint();

    // 判断是否有记录行
    if (rows.isEmpty()) {
        JOptionPane.showMessageDialog(this, "没有符合条件的记录!", "错误提示", JOptionPane.WARNING_MESSAGE);
        txtId.setText("");
    } else {
        // 让滚动条移到最上方
        scroller.getVerticalScrollBar().setValue(0);
    }
}

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

}

其他查询也是和这个相类似的所有就不写在博客上面了。看了一下老师的代码发现好像剩下的不是很多了,而且自己今天也差不多接近下课了,就觉得不写了。正好晚上也还有事情就歇一下明天写吧。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值