Java实训 学生信息管理系统 第七天

今天已经是实训的第七天了,还有明天最后一天实训就完美结束了,今天主要书写了删除学生记录的窗口和查询学生记录的窗口,和统计学生人数的窗口。还剩下统计人数和状态栏信息窗口,预计明天用一个多小时就可以完成了。在今天的书写出现了一个大问题让我有点头大,我的访问接口出错了,找了半天才找到我的
在这里插入图片描述
deleteByDepartment类出了问题。因为这一个导致了系部“系部删除功能”全盘出错,不经让我感叹到什么是‘一失足成千古恨’。

一、按学号删除学生窗口

/*
功能:按学号删除学生记录
作者:宋云鹏
时间:2019.6.23
 */
package net.syp.student.gui;

import net.syp.student.bean.Student;
import net.syp.student.service.Impl.StudentServiceImpl;
import net.syp.student.service.StudentService;

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

public class DeleteStudentByIdFrame extends JFrame {
    //声明部分
    private JLabel lblInputId;
    private JTextField txtId;
    private JPanel panel,pnlSouth,pnlCenter,pnlNorth;
    private JButton btnQuery,btnBrowseAll, btnDelete, btnExit;

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

    //构造方法
    private 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();

        // 【退出】按钮单击事件
        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() {
            @Override
            public void mouseClicked(MouseEvent e) {
                //获取当前记录行数
                int row = table.rowAtPoint(e.getPoint());
                //选择鼠标单击的行
                table.setRowSelectionInterval(row,row);
                //设置文本框内容
                txtId.setText(table.getValueAt(row,0).toString());
            }
        });

        // 设置窗口
        setSize(600, 350);
        setResizable(false);
        setLocationRelativeTo(null);
        setTitle("按学号删除学生记录");
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    //查询方法
    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);
        }
    }

    //填充表格方法
    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);
        }
        //创建表格
        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);
        }
    }

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

Java实训 学生信息管理系统 第七天_第1张图片

二、按系部删除学生记录

/*
功能:按系部删除学生记录
作者:宋云鹏
时间:2019.6.24
 */
package net.syp.student.gui;

import net.syp.student.bean.Student;
import net.syp.student.service.Impl.StudentServiceImpl;
import net.syp.student.service.StudentService;

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

public class DeleteStudentByDepartmentFrame extends JFrame {

     //系部标签
    private JLabel lblInputDepartment;

     // 系部文本框
    private JTextField txtDepartment;

     // 面板
    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;

    // 构造方法
    public DeleteStudentByDepartmentFrame(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();

        lblInputDepartment = new JLabel("输入系部:");
        txtDepartment = new JTextField(10);
        txtDepartment.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(lblInputDepartment);
        pnlNorth.add(txtDepartment);
        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 department = txtDepartment.getText().trim();
                        // 按系部删除学生
                        int count = studentService.deleteStudentByDepartment(department);
                        if (count > 0) {
                            JOptionPane.showMessageDialog(null, "记录删除成功!", "提示", JOptionPane.INFORMATION_MESSAGE);
                            // 重新获取全部学生列表
                            students = studentService.findAllStudents();
                            // 清空待删班级文本框
                            txtDepartment.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);
            }
        });

        // 【系部】文本框按键事件
        txtDepartment.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);
                // 设置文本框内容
                txtDepartment.setText(table.getValueAt(row, 4).toString());
            }
        });
    }

    /**
     * 查询方法
     */
    private void doQuery() {
        // 获取查询系部
        String department = txtDepartment.getText().trim();
        if (!department.equals("")) {
            students = studentService.findStudentsByDepartment(department);
            if (students.size() > 0) {
                // 让删除按钮可用
                btnDelete.setEnabled(true);
            }
            // 填充表格
            fillTableData();
        } else {
            JOptionPane.showMessageDialog(this, "请输入待查系部!", "警告", JOptionPane.WARNING_MESSAGE);
            txtDepartment.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);
            txtDepartment.setText("");
        } else {
            // 让滚动条移到最上方
            scroller.getVerticalScrollBar().setValue(0);
        }
    }


    //主方法

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

Java实训 学生信息管理系统 第七天_第2张图片

三、按班级删除学生记录

/*
功能:按班级删除学生记录
作者:宋云鹏
时间:2019.6.24
 */
package net.syp.student.gui;

import net.syp.student.bean.Student;
import net.syp.student.service.Impl.StudentServiceImpl;
import net.syp.student.service.StudentService;

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

public class DeleteStudentByClassFrame extends JFrame {
    //声明部分
    private JLabel lblInputClass;
    private JTextField txtClass;
    private JPanel panel,pnlSouth,pnlCenter,pnlNorth;
    private JButton btnQuery,btnBrowseAll, btnDelete, btnExit;

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

    //构造方法
    private DeleteStudentByClassFrame(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();

        lblInputClass= new JLabel("输入班级:");
        txtClass = new JTextField(10);
        txtClass.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(lblInputClass);
        pnlNorth.add(txtClass);
        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();

        // 【退出】按钮单击事件
        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 clazz = txtClass.getText().trim();
                        // 按班级删除学生
                        int count = studentService.deleteStudentByClass(clazz);
                        if (count > 0) {
                            JOptionPane.showMessageDialog(null, "记录删除成功!", "提示", JOptionPane.INFORMATION_MESSAGE);
                            // 重新获取全部学生列表
                            students = studentService.findAllStudents();
                            // 清空待删班级文本框
                            txtClass.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);
            }
        });

        //【班级】文本框按键事件
        txtClass.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);
                // 设置文本框内容
                txtClass.setText(table.getValueAt(row, 5).toString());
            }
        });

        // 设置窗口
        setSize(600, 350);
        setResizable(false);
        setLocationRelativeTo(null);
        setTitle("按班级删除学生记录");
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    //查询方法
    private void doQuery() {
        // 获取查询班级
        String clazz = txtClass.getText().trim();
        if (!clazz.equals("")) {
            students = studentService.findStudentsByClass(clazz);
            if (students.size() > 0) {
                // 让删除按钮可用
                btnDelete.setEnabled(true);
            }
            // 填充表格
            fillTableData();
        } else {
            JOptionPane.showMessageDialog(this, "请输入待查班级!", "警告", JOptionPane.WARNING_MESSAGE);
            txtClass.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);
        }
        //创建表格
        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);
            txtClass.setText("");
        } else {
            // 让滚动条移到最上方
            scroller.getVerticalScrollBar().setValue(0);
        }
    }

    //主方法
    public static void main(String[] args) {
        new DeleteStudentByClassFrame("");
    }
}

Java实训 学生信息管理系统 第七天_第3张图片
四、按学号查询学生记录窗口

/*
功能:按学号查询学生记录
作者:宋云鹏
时间:2019-6-24 10:24:05
 */
package net.syp.student.gui;

import net.syp.student.bean.Student;
import net.syp.student.service.Impl.StudentServiceImpl;
import net.syp.student.service.StudentService;

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

public class FindStudentByIdFrame extends JFrame {
    //声明部分
    private JLabel lblInputId;
    private JTextField txtId;
    private JPanel panel,pnlSouth,pnlCenter,pnlNorth;
    private JButton btnQuery,btnBrowseAll,btnPrint,btnExit;
    private  Vector rows;
    private Vector<String> colHead;
    private JTable table;
    private JScrollPane scroller;
    private int currentRow;
    private List<Student> students;
    private StudentService studentService;

    //构造方法
    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 e) {
                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 e) {
                doQuery();
            }
        });
        //【显示全部记录】按钮单击事件
        btnBrowseAll.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                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() {
                    @Override
                    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);
        }
    }
    //主方法
    public static void main(String[] args) {
        new FindStudentByIdFrame("");
    }
}

Java实训 学生信息管理系统 第七天_第4张图片

五、按姓名查询学生记录窗口

/*
功能:按姓名查询学生记录
作者:宋云鹏
时间:2019-6-24
 */
package net.syp.student.gui;

import net.syp.student.bean.Student;
import net.syp.student.service.Impl.StudentServiceImpl;
import net.syp.student.service.StudentService;

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

public class FindStudentByNameFrame extends JFrame {
    //声明部分
    private JLabel lblInputName;
    private JTextField txtName;
    private JPanel panel,pnlSouth,pnlCenter,pnlNorth;
    private JButton btnQuery,btnBrowseAll,btnPrint,btnExit;
    private  Vector rows;
    private Vector<String> colHead;
    private JTable table;
    private JScrollPane scroller;
    private int currentRow;
    private List<Student> students;
    private StudentService studentService;

    //构造方法
    public FindStudentByNameFrame(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();

        lblInputName = new JLabel("输入姓名:");
        txtName = new JTextField(10);
        txtName.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(lblInputName);
        pnlNorth.add(txtName);
        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 e) {
                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 e) {
                doQuery();
            }
        });
        //【显示全部记录】按钮单击事件
        btnBrowseAll.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                students = studentService.findAllStudents();
                fillTableData();
            }
        });
        //【姓名】文本框按键事件
        txtName.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                    doQuery();
                }
            }
        });

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

    //查询方法
    private void doQuery(){
        // 获取查询学号
        String name = txtName.getText().trim();
        if (!name.equals("")) {
            students = studentService.findStudentsByName(name);
            //填充表格
            fillTableData();
        } else {
            JOptionPane.showMessageDialog(this, "请输入待查学生姓名!", "警告", JOptionPane.WARNING_MESSAGE);
            txtName.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);
            txtName.setText("");
        } else {
            // 让滚动条移到最上方
            scroller.getVerticalScrollBar().setValue(0);
        }
    }
    //主方法
    public static void main(String[] args) {
        new FindStudentByNameFrame("");
    }
}

Java实训 学生信息管理系统 第七天_第5张图片
六、按班级查询学生记录窗口

/*
功能:按班级查询学生记录
作者:宋云鹏
时间:2019-6-24
 */
package net.syp.student.gui;

import net.syp.student.bean.Student;
import net.syp.student.service.Impl.StudentServiceImpl;
import net.syp.student.service.StudentService;

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

public class FindStudentByClassFrame extends JFrame {
    //声明部分
    private JLabel lblInputClass;
    private JTextField txtClass;
    private JPanel panel,pnlSouth,pnlCenter,pnlNorth;
    private JButton btnQuery,btnBrowseAll,btnPrint,btnExit;
    private  Vector rows;
    private Vector<String> colHead;
    private JTable table;
    private JScrollPane scroller;
    private int currentRow;
    private List<Student> students;
    private StudentService studentService;

    //构造方法
    public FindStudentByClassFrame(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();

        lblInputClass = new JLabel("输入班级:");
        txtClass = new JTextField(10);
        txtClass.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(lblInputClass);
        pnlNorth.add(txtClass);
        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 e) {
                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 e) {
                doQuery();
            }
        });
        //【显示全部记录】按钮单击事件
        btnBrowseAll.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                students = studentService.findAllStudents();
                fillTableData();
            }
        });
        //【姓名】文本框按键事件
        txtClass.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                if (e.getKeyCode() == KeyEvent.VK_ENTER) {
                    doQuery();
                }
            }
        });

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

    //查询方法
    private void doQuery(){
        // 获取查询学号
        String clazz = txtClass.getText().trim();
        if (!clazz.equals("")) {
            students = studentService.findStudentsByClass(clazz);
            //填充表格
            fillTableData();
        } else {
            JOptionPane.showMessageDialog(this, "请输入待查班级!", "警告", JOptionPane.WARNING_MESSAGE);
            txtClass.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);
            txtClass.setText("");
        } else {
            // 让滚动条移到最上方
            scroller.getVerticalScrollBar().setValue(0);
        }
    }
    //主方法
    public static void main(String[] args) {
        new FindStudentByClassFrame("");
    }
}

Java实训 学生信息管理系统 第七天_第6张图片
七、按系部查询学生窗口记录

/*
功能:按系部删除学生记录
作者:宋云鹏
时间:2019.6.24
 */
package net.syp.student.gui;

import net.syp.student.bean.Student;
import net.syp.student.service.Impl.StudentServiceImpl;
import net.syp.student.service.StudentService;

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

public class DeleteStudentByDepartmentFrame extends JFrame {

     //系部标签
    private JLabel lblInputDepartment;

     // 系部文本框
    private JTextField txtDepartment;

     // 面板
    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;

    // 构造方法
    public DeleteStudentByDepartmentFrame(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();

        lblInputDepartment = new JLabel("输入系部:");
        txtDepartment = new JTextField(10);
        txtDepartment.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(lblInputDepartment);
        pnlNorth.add(txtDepartment);
        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 department = txtDepartment.getText().trim();
                        // 按系部删除学生
                        int count = studentService.deleteStudentByDepartment(department);
                        if (count > 0) {
                            JOptionPane.showMessageDialog(null, "记录删除成功!", "提示", JOptionPane.INFORMATION_MESSAGE);
                            // 重新获取全部学生列表
                            students = studentService.findAllStudents();
                            // 清空待删班级文本框
                            txtDepartment.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);
            }
        });

        // 【系部】文本框按键事件
        txtDepartment.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);
                // 设置文本框内容
                txtDepartment.setText(table.getValueAt(row, 4).toString());
            }
        });
    }

    /**
     * 查询方法
     */
    private void doQuery() {
        // 获取查询系部
        String department = txtDepartment.getText().trim();
        if (!department.equals("")) {
            students = studentService.findStudentsByDepartment(department);
            if (students.size() > 0) {
                // 让删除按钮可用
                btnDelete.setEnabled(true);
            }
            // 填充表格
            fillTableData();
        } else {
            JOptionPane.showMessageDialog(this, "请输入待查系部!", "警告", JOptionPane.WARNING_MESSAGE);
            txtDepartment.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);
            txtDepartment.setText("");
        } else {
            // 让滚动条移到最上方
            scroller.getVerticalScrollBar().setValue(0);
        }
    }


    //主方法

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

Java实训 学生信息管理系统 第七天_第7张图片

八、按性别统计人数

/*
功能:按性别统计学生人数
作者:宋云鹏
时间:2019年6月25日
 */
package net.syp.student.gui;

import net.syp.student.service.Impl.StudentServiceImpl;
import net.syp.student.service.StudentService;

import javax.swing.*;
import javax.swing.border.TitledBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.print.PrinterException;
import java.util.Vector;

public class CountStudentBySexFrame extends JFrame {
    //声明部分
    private JPanel panel,pnlSouth,pnlCenter;
    private JButton btnPrint,btnExit;
    private Vector rows;
    private Vector<String> colHead;
    private JTable table;
    private JScrollPane scroller;
    private StudentService studentService;

    //构造方法
    public CountStudentBySexFrame(String title){
        super(title);
        intiGUI();
    }

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

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

        btnPrint = new JButton("打印[P]");
        btnPrint.setMnemonic(KeyEvent.VK_P);
        btnExit = new JButton("退出[X]");
        btnExit.setMnemonic(KeyEvent.VK_X);

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

        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();
        rows = studentService.findRowsBySex();
        //创建表头
        colHead.add("性别");
        colHead.add("人数");

        //创建表格
        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);
        }

        // 设置窗口
        setSize(300, 200);
        setResizable(false);
        setLocationRelativeTo(null);
        setTitle("按性别统计学生人数");
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

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

    //主方法

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

Java实训 学生信息管理系统 第七天_第8张图片

九、按班级统计人数

/*
功能:按班级统计学生人数
作者:宋云鹏
时间:2019年6月25日
 */
package net.syp.student.gui;

import net.syp.student.service.Impl.StudentServiceImpl;
import net.syp.student.service.StudentService;

import javax.swing.*;
import javax.swing.border.TitledBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.print.PrinterException;
import java.util.Vector;

public class CountStudentByClassFrame extends JFrame {
    //声明部分
    private JPanel panel,pnlSouth,pnlCenter;
    private JButton btnPrint,btnExit;
    private Vector rows;
    private Vector<String> colHead;
    private JTable table;
    private JScrollPane scroller;
    private StudentService studentService;

    //构造方法
    public CountStudentByClassFrame(String title){
        super(title);
        intiGUI();
    }

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

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

        btnPrint = new JButton("打印[P]");
        btnPrint.setMnemonic(KeyEvent.VK_P);
        btnExit = new JButton("退出[X]");
        btnExit.setMnemonic(KeyEvent.VK_X);

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

        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();
        rows = studentService.findRowsByClass();
        //创建表头
        colHead.add("班级");
        colHead.add("人数");

        //创建表格
        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);
        }

        // 设置窗口
        setSize(300, 200);
        setResizable(false);
        setLocationRelativeTo(null);
        setTitle("按班级统计学生人数");
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

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

    //主方法

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

Java实训 学生信息管理系统 第七天_第9张图片

十、按系部统计人数

/*
功能:按系部统计学生人数
作者:宋云鹏
时间:2019年6月25日
 */
package net.syp.student.gui;

import net.syp.student.service.Impl.StudentServiceImpl;
import net.syp.student.service.StudentService;

import javax.swing.*;
import javax.swing.border.TitledBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.print.PrinterException;
import java.util.Vector;

public class CountStudentByDepartmentFrame extends JFrame {
    //声明部分
    private JPanel panel,pnlSouth,pnlCenter;
    private JButton btnPrint,btnExit;
    private Vector rows;
    private Vector<String> colHead;
    private JTable table;
    private JScrollPane scroller;
    private StudentService studentService;

    //构造方法
    public CountStudentByDepartmentFrame(String title){
        super(title);
        intiGUI();
    }

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

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

        btnPrint = new JButton("打印[P]");
        btnPrint.setMnemonic(KeyEvent.VK_P);
        btnExit = new JButton("退出[X]");
        btnExit.setMnemonic(KeyEvent.VK_X);

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

        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();
        rows = studentService.findRowsByDepartment();
        //创建表头
        colHead.add("系部");
        colHead.add("人数");

        //创建表格
        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);
        }

        // 设置窗口
        setSize(300, 200);
        setResizable(false);
        setLocationRelativeTo(null);
        setTitle("按系部统计学生人数");
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

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

    //主方法

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

Java实训 学生信息管理系统 第七天_第10张图片

你可能感兴趣的:(学生信息管理系统)