JAVA实训项目第五次日志

实训目的:让学生综合运用J2SE有关知识开发【学生信息管理系统】。主要涉及程序控制结构、面向对象编程、图形用户界面、Java数据库应用、MySQL数据库这几个方面的内容。通过本项目的开发,让学生了解系统开发的一般流程,初步了解MVC模式与单元测试,巩固所学的Java理论知识,提高Java数据库应用编程的基本技能。

项目说明:本实训案例教学,利用Java SE基本知识是开发【学生信息管理系统】。本系统包括登录注册、系统设置(设置学校信息、设置状态栏信息、修改用户密码)、数据操作(增加学生记录、编辑学生记录、删除学生记录、浏览学生记录)、查询学生(按学号查询、按姓名查询、按班级查询、按系部查询)、人数统计(按性别统计人数、按班级统计人数、按系部统计人数)等功能。

在LoginFrame ,RegisterFrame 的基础上进行添加,首先我们先对LoginFrame的内容进行修改和添加
声明变量

在这里插入图片描述
实例化组件(面板与控件)
在这里插入图片描述
将控件分别添加到小面板,设置主面板三行一列的网络布局,将三个小面板添加到主面板在这里插入图片描述
设置热键字母,设置密码框回显字符
在这里插入图片描述
此时运行得
在这里插入图片描述
解决办法是,设置窗口内容紧凑
在这里插入图片描述
此时运行结果如下:
在这里插入图片描述
单击【确定】按钮,或者当焦点聚焦到确定按钮时,会自动调用login登录方法

在这里插入图片描述
然后编写登录方法
在这里插入图片描述
在这里插入图片描述
在用户名输入完成后敲回车键后光标自动跳到密码框里面,编写用户名文本框按键事件;
密码输入完成后,敲回车,直接调用login()方法
在这里插入图片描述
编写取消按钮单击事件
在这里插入图片描述
编写注册按钮单击事件
在这里插入图片描述
最后运行代码,结果如下:
输入正确的用户名和密码
在这里插入图片描述
点击注册
在这里插入图片描述
现在对RegisterFrame 界面进行修整
首先还是声明变量:
在这里插入图片描述
创建组件(面板和控件)
在这里插入图片描述
将控件添加到小面板上,设置四行一列的主面板,将小面板添加到主面板上去
在这里插入图片描述
设置窗口
在这里插入图片描述
注册窗口监听器,实现继承窗口适配器
在这里插入图片描述
此时运行结果如下:
在这里插入图片描述

编写注册(register)方法
在这里插入图片描述
编写提交单击事件处理
在这里插入图片描述
编写提交按钮案件事件处理,用户按enter键,可直接调用register()方法
在这里插入图片描述
编写取消按钮事件处理
在这里插入图片描述
编写登录按钮单击事件处理
在这里插入图片描述
在用户名输入完成后敲回车键后光标自动跳到密码框里面,编写用户名文本框按键事件;
密码输入完成后,敲回车,光标会跳到电话文本框里面;
电话输入完成后,敲回车,直接调用submit
按钮方法,进行提交信息
在这里插入图片描述
将所有代码编写完成后,再次运行,结果如下:
在这里插入图片描述
在gui里面创建SetCollegeInfoFrame学校信息界面
编写主方法(放在最后)
在这里插入图片描述
声明变量
在这里插入图片描述
编写构造方法
在这里插入图片描述
初始化用户界面(alt+enter)获得
private void initGUI(){}

在这里插入图片描述
创建组件(面板与控件)
在这里插入图片描述
设置大面板布局,将背面板,中面板和南面板都添加到大面板
在这里插入图片描述
设置背面板布局,添加5个小面板
在这里插入图片描述
将控件一次添加到五个小面板
在这里插入图片描述
将滚动面板添加到中面板
在这里插入图片描述
将两个按钮保存和退出添加到南面板
在这里插入图片描述
创建学校服务对象并获取学校对象
在这里插入图片描述
利用学校对象属性值设置相应的控件的内容
在这里插入图片描述
设置窗口
在这里插入图片描述
编写关闭按钮单击事件处理
在这里插入图片描述
编写保存单击事件处理
在这里插入图片描述
此时运行程序,结果如下:
在这里插入图片描述
在这里插入图片描述
创建ChangePasswordFrame修改密码类
编写主方法(放在最后),将需要修改密码的用户的用户ID和用户名标注出来,进行查找
在这里插入图片描述

声明变量
在这里插入图片描述
创建用户服务对象,初始化用户界面
在这里插入图片描述
用<Alt+Enter>获取
private void initGUI(){}
创建对象
在这里插入图片描述
添加组件
在这里插入图片描述
设置窗口
在这里插入图片描述
设置控件属性
在这里插入图片描述
编写修改密码方法changePassword()
在这里插入图片描述
在这里插入图片描述
编写取消按钮单击事件
在这里插入图片描述
编写确定按钮单击事件及按键事件处理
在这里插入图片描述
用户名文本框按键事件处理
在这里插入图片描述
密码文本框按键事件处理
在这里插入图片描述
新密码1文本框按键事件处理
在这里插入图片描述
新密码2文本框按键事件处理
在这里插入图片描述
此时测试结果如下
在这里插入图片描述
密码输入错误
在这里插入图片描述
输入正确的密码
在这里插入图片描述
创建BrowseStudentsFrame浏览学生信息类
编写主方法(放在最后)
在这里插入图片描述
声明变量
在这里插入图片描述
在这里插入图片描述
创建服务对象
在这里插入图片描述
创建构造方法
在这里插入图片描述
初始化用户界面
<Alt+Enter>获取 private void initGUI() {}
创建组件:
在这里插入图片描述
在这里插入图片描述
添加组件
在这里插入图片描述
在这里插入图片描述
设置窗口属性
在这里插入图片描述
创建学生服务对象,获取全部学生列表并判断是否有学生记录
在这里插入图片描述
将当前记录数据填充窗口到各文本框
在这里插入图片描述
编写按钮单击事件
在这里插入图片描述
在这里插入图片描述
此时运行得:
第一条:
在这里插入图片描述
最后一条:在这里插入图片描述
上一条:
在这里插入图片描述
下一条:
在这里插入图片描述
创建AddStudentFrame类
编写主方法
在这里插入图片描述
声明变量
在这里插入图片描述
在这里插入图片描述
创建构造方法
在这里插入图片描述
<Alt+Enter> 获取 private void initGUI() {}
创建组件
在这里插入图片描述
在这里插入图片描述
添加组件
在这里插入图片描述
设置窗口属性
在这里插入图片描述
判断一个字符串是否全是数字(放在主方法前面)
在这里插入图片描述
确定按钮单击事件
在这里插入图片描述
创建学生实体,设置学生实体属性
在这里插入图片描述
创建学生服务对象,及添加学生记录
在这里插入图片描述
取消按钮单击事件处理
在这里插入图片描述
退出按钮单击事件
在这里插入图片描述
学号文本框按键事件处理
在这里插入图片描述
姓名和性别文本框按键事件处理
在这里插入图片描述
在这里插入图片描述
运行结果如下:
在这里插入图片描述
创建EditStudentFrame编辑学生记录类
编写主方法
在这里插入图片描述
声明变量
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建学生服务对象
在这里插入图片描述
创建构造方法
在这里插入图片描述
<Alt+Enter> 获取private void initGUI() {}
创建组件
在这里插入图片描述
在这里插入图片描述
添加组件
在这里插入图片描述
在这里插入图片描述
设置窗口属性
在这里插入图片描述
创建服务对象,获取全部学生列表,判断是否有学生记录
在这里插入图片描述
将当前记录数据填充窗口各文本框
在这里插入图片描述
// 判断一个字符串是否全是数字

在这里插入图片描述
判断是否合法手机号
在这里插入图片描述
设置按钮单击事件(第一条,上一条,下一条,最后一条)
在这里插入图片描述
在这里插入图片描述
退出按钮单击事件
在这里插入图片描述
编辑按钮单击事件
在这里插入图片描述
确定按钮单击事件
在这里插入图片描述
在这里插入图片描述
取消按钮单击事件
在这里插入图片描述
文本框按键事件
在这里插入图片描述
在这里插入图片描述
此时运行程序如下:
点击编辑,得到如下界面
在这里插入图片描述
在这里插入图片描述
创建DeleteStudentByIdFrame类,按学号删除学生
代码如下:
package net.qf.student.gui;

/**

  • 包名:net.qf.student.gui
  • 类名:DeleteStudentByIdFrame
  • 描述:按学号删除学生
  • 作者:秦芳
  • 日期:2019年6月21日
    */

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.List;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;

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

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() == 10) {
                doQuery();
            }
        }
    });

    // JTable单击事件
    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("");
}

}

运行效果如下:
在这里插入图片描述
在这里插入图片描述
创建DeleteStudentByClass类,按班级删除学生
代码如下:
package net.qf.student.gui;

import net.qf.student.bean.Student;
import net.qf.student.service.StudentService;
import net.qf.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;

/**

  • 功能:按班级删除学生记录

  • 作者:秦芳

  • 日期:2019年6月22日
    /
    public class DeleteStudentsByClassFrame extends JFrame {
    /
    *

    • 班级标签
      /
      private JLabel lblInputClass;
      /
      *
    • 班级文本框
      /
      private JTextField txtClass;
      /
      *
    • 面板
      /
      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 colHead;
      /
      *
    • 表格
      /
      private JTable table;
      /
      *
    • 滚动面板
      */
      private JScrollPane scroller;

    /**

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

    /**

    • 构造方法
    • @param title
      */
      public DeleteStudentsByClassFrame(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();
    
     // 设置窗口大小
     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 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());
         }
     });
    

    }

    /**

    • 查询方法
      */
      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 currentRow = new Vector();
      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);
      }
      }

    /**

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

运行结果如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建DeleteStudentByDepartment类,按系部删除学生记录
package net.qf.student.gui;

import net.qf.student.bean.Student;
import net.qf.student.service.StudentService;
import net.qf.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;

/**

  • 功能:按系部删除学生记录

  • 作者:秦芳

  • 日期:2019年6月22日
    /
    public class DeleteStudentsByDepartmentFrame 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 colHead;
      /
      *
    • 表格
      /
      private JTable table;
      /
      *
    • 滚动面板
      */
      private JScrollPane scroller;

    /**

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

    /**

    • 构造方法
    • @param title
      */
      public DeleteStudentsByDepartmentFrame(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 currentRow = new Vector();
      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);
      }
      }

    /**

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

运行结果如下:
在这里插入图片描述
在这里插入图片描述
今天主要是完成了主界面注册界面的修改和添加,然后为添加方法,修改密码方法,浏览学生信息方法,设置学校信息方法,设置状态方法,编辑方法和删除方法编写了界面代码,从而得到我们想到的界面效果。最重要的就是单个运行主界面或者注册界面会报错,应该再登录界面里面运行才不会报错,因为在主界面和注册界面里面运行,界面无法跳回登录界面,就会报错。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值