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

实训第七天(学生信息管理系统)
一、创建一个按性别统计学生人数
1、CountStudentsBySexFrame

在这里插入图片描述
2、先是构造方法、主方法。
在这里插入图片描述
在这里插入图片描述
3、初始化用户界面、创建组件、添加组件、创建学生服务对象、创建表格
在这里插入图片描述
4、设置窗口的大小、属性
在这里插入图片描述
5、退出按钮单击事件、打印按钮单击事件
在这里插入图片描述
6.代码如下:
package net.zxk.student.gui;

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

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;

/**

  • 功能:按性别统计学生人数

  • 作者:周许苛

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

    • 面板
      /
      private JPanel panel ;
      private JPanel pnlSouth;
      private JPanel pnlCenter;
      /
      *
    • 按钮
      /
      private JButton btnPrint;
      private JButton btnExit;
      /
      *
    • 记录行集
      /
      private Vector rows;
      /
      *
    • 表格列标题
      /
      private Vector colHead;
      /
      *
    • 表格
      /
      private JTable table;
      /
      *
    • 滚动面板
      /
      private JScrollPane scroller;
      /
      *
    • 创建学生服务对象
      */
      private StudentService studentService;

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

    /**

    • 初始化用户界面
      */
      private void initGUI() {
      // 创建组件
      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(“人数”);

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

      // 设置窗口大小
      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();
      }
      }
      });
      }

    /**

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

7、运行结果如下:
在这里插入图片描述
二、创建一个按班级统计人数
1、CountStudentsByClassFrame

在这里插入图片描述
2、先是构造方法、主方法、然后是初始化用户界面。
3、设置面板、按钮、记录行集、表格列标题、表格、滚动面板、创建学生服务对象
在这里插入图片描述
3、创建组件、添加组件、创建学生服务对象、获取班级统计结果记录行集、设置表头、创建表格
在这里插入图片描述
4、按钮单击事件、打印按钮单击事件在这里插入图片描述
5、代码入下:
package net.zxk.student.gui;
import net.zxk.student.service.StudentService;
import net.zxk.student.service.impl.StudentServiceImpl;

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;

/**

  • 功能:按班级统计学生人数

  • 作者:周许苛

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

    • 面板
      /
      private JPanel panel;
      private JPanel pnlSouth;
      private JPanel pnlCenter;
      /
      *
    • 按钮
      /
      private JButton btnPrint;
      private JButton btnExit;
      /
      *
    • 记录行集
      /
      private Vector rows;
      /
      *
    • 表格列标题
      /
      private Vector colHead;
      /
      *
    • 表格
      /
      private JTable table;
      /
      *
    • 滚动面板
      /
      private JScrollPane scroller;
      /
      *
    • 创建学生服务对象
      */
      private StudentService studentService;

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

    /**

    • 初始化用户界面
      */
      private void initGUI() {
      // 创建组件
      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(“人数”);

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

      // 设置窗口大小
      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();
      }
      }
      });
      }

    /**

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

    }

}

7、运行结果如下:
在这里插入图片描述
三、创建一个按系部统计人数
1.CountStudentsByDepartmentFrame
在这里插入图片描述
2、构造方法、主方法、
在这里插入图片描述3、初始化用户界面、面板、按钮、记录行集、表格列标题、表格、滚动面板、创建组件、添加组件、获取学生服务对象、按系部统计学生人数、设置表头、创建表格、设置窗口的大小、
在这里插入图片描述4、退出按钮单击事件、打印按钮单击事件。
在这里插入图片描述
5、完整的代码如下:
package net.zxk.student.gui;
import net.zxk.student.service.StudentService;
import net.zxk.student.service.impl.StudentServiceImpl;

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;

/**

  • 功能:按系部统计学生人数

  • 作者:周许苛

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

    • 面板
      /
      private JPanel panel;
      private JPanel pnlSouth;
      private JPanel pnlCenter;
      /
      *
    • 按钮
      /
      private JButton btnPrint;
      private JButton btnExit;
      /
      *
    • 记录行集
      /
      private Vector rows;
      /
      *
    • 表格列标题
      /
      private Vector colHead;
      /
      *
    • 表格
      /
      private JTable table;
      /
      *
    • 滚动面板
      /
      private JScrollPane scroller;
      /
      *
    • 创建学生服务对象
      */
      private StudentService studentService;

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

    /**

    • 初始化用户界面
      */
      private void initGUI() {
      // 创建组件
      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(“人数”);

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

      // 设置窗口大小
      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();
      }
      }
      });
      }

    /**

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

6.运行结果如下:
在这里插入图片描述
四、创建一个设置状态栏信息
1.SetStatusBarFrame
在这里插入图片描述
2.构造方法、主方法
在这里插入图片描述
3、初始化用户界面、创建组件、添加组件、创建状态服务对象
在这里插入图片描述
在这里插入图片描述
4、按标识符获取状态对象、设置窗口属性、关闭按钮事件处理、获取状态信息对象、修改属性值、更新状态记录。
在这里插入图片描述
5、代码如下:
package net.zxk.student.gui;
import net.zxk.student.app.Application;
import net.zxk.student.bean.Status;
import net.zxk.student.service.StatusService;
import net.zxk.student.service.impl.StatusServiceImpl;

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

/**

  • 功能:设置状态栏信息

  • 作者:周许苛

  • 日期:2019年6月20日
    /
    public class SetStatusBarFrame extends JFrame {
    /
    *

    • 面板
      /
      private JPanel panel;
      private JPanel panel1;
      private JPanel panel2;
      private JPanel panel3;
      private JPanel panel4;
      private JPanel panel5;
      /
      *
    • 标签
      /
      private JLabel lblCollege;
      private JLabel lblVersion;
      private JLabel lblAuthor;
      private JLabel lblTelephone;
      private JLabel lblAddress;
      private JLabel lblEmail;
      /
      *
    • 文本框
      /
      private JTextField txtCollege;
      private JTextField txtVersion;
      private JTextField txtAuthor;
      private JTextField txtTelephone;
      private JTextField txtAddress;
      private JTextField txtEmail;
      /
      *
    • 按钮
      /
      private JButton btnSave;
      private JButton btnExit;
      /
      *
    • 状态服务对象
      */
      private StatusService statusService;

    /**

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

    /**

    • 初始化用户界面
      */
      private void initGUI() {
      // 创建组件
      panel = (JPanel) getContentPane();
      panel1 = new JPanel();
      panel2 = new JPanel();
      panel3 = new JPanel();
      panel4 = new JPanel();
      panel5 = new JPanel();

      lblCollege = new JLabel(“校名:”);
      lblVersion = new JLabel(“版本:”);
      lblAuthor = new JLabel(“作者:”);
      lblTelephone = new JLabel(“电话:”);
      lblAddress = new JLabel(“地址:”);
      lblEmail = new JLabel(“邮件:”);

      txtCollege = new JTextField(12);
      txtVersion = new JTextField(12);
      txtAuthor = new JTextField(12);
      txtTelephone = new JTextField(12);
      txtAddress = new JTextField(29);
      txtEmail = new JTextField(29);

      btnSave = new JButton(“保存[S]”);
      btnSave.setMnemonic(KeyEvent.VK_S);
      btnExit = new JButton(“退出[X]”);
      btnExit.setMnemonic(KeyEvent.VK_X);

      // 添加组件
      panel.setLayout(new GridLayout(5, 1));
      panel.add(panel1);
      panel.add(panel2);
      panel.add(panel3);
      panel.add(panel4);
      panel.add(panel5);

      panel1.add(lblCollege);
      panel1.add(txtCollege);
      panel1.add(lblVersion);
      panel1.add(txtVersion);

      panel2.add(lblAuthor);
      panel2.add(txtAuthor);
      panel2.add(lblTelephone);
      panel2.add(txtTelephone);

      panel3.add(lblAddress);
      panel3.add(txtAddress);
      panel4.add(lblEmail);
      panel4.add(txtEmail);

      panel5.add(btnSave);
      panel5.add(btnExit);

      // 创建状态服务对象
      statusService = new StatusServiceImpl();
      // 按标识符获取状态对象
      Status status = statusService.findStatusById(1);
      if (status != null) {
      txtCollege.setText(status.getCollege());
      txtVersion.setText(status.getVersion());
      txtAuthor.setText(status.getAuthor());
      txtAddress.setText(status.getAuthor());
      txtTelephone.setText(status.getTelephone());
      txtAddress.setText(status.getAddress());
      txtEmail.setText(status.getEmail());
      }

      // 设置窗口属性
      setResizable(false);
      pack();
      setLocationRelativeTo(null);
      setVisible(true);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      // 【关闭】按钮事件处理
      btnExit.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent arg0) {
      dispose();
      }
      });

      // 【保存】按钮事件处理
      btnSave.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
      // 获取状态信息对象
      Status status = statusService.findStatusById(1);
      // 修改属性值
      status.setCollege(txtCollege.getText());
      status.setVersion(txtVersion.getText());
      status.setAuthor(txtAuthor.getText());
      status.setTelephone(txtTelephone.getText());
      status.setAddress(txtAddress.getText());
      status.setEmail(txtEmail.getText());
      // 更新状态记录
      int count = statusService.updateStatus(status);
      // 判断是否更新成功
      if (count > 0) {
      Application.mainFrame.setStatusBar();
      Application.mainFrame.setTitle(“学生信息管理系统” + status.getVersion());
      }
      }
      });
      }

}

五、主界面窗口通过菜单系统调用各个模块
1.
在这里插入图片描述
2.先是构造方法然后是主方法、初始化图形用户界面
在这里插入图片描述3.
在这里插入图片描述
4.包括菜单部分、设置菜单、操作菜单、删除菜单、查询、帮助
5.还有面板、状态栏标签、背景标签、按钮、状态服务对象
6.代码如下:
https://pan.baidu.com/s/1M-eR1ofFanY9LQuOOAm40Q
提取码:1v1f
运行结果如下:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值