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

这是这个星期Java实训的最后一天了。下个星期还剩下两天。但是我还有很多没有完成。自己应该抓紧一些了。感觉时间还长,但是却因为培训的原因导致后面的课我不能去上,只能在培训至于自己去写。所以我决定今天把所有的代码敲完,然后之后就找时间写实训报告。
接着昨天的开始
最后好像还剩下统计人数了吧,看了一下老师的课件好像不是很难。然后就开始了敲代码的一天。
1、按性别统计人数窗口CountStudentsBySex
package net.lsl.student.gui;

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

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

public class CountStudentBySexFrame extends JFrame {

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

public CountStudentBySexFrame(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 CountStudentBySexFrame("");
}

}

2、按班级统计人数窗口CountStudentsByClassFrame
package net.lsl.student.gui;

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

import javax.swing.*;

import javax.swing.border.TitledBorder;
import java.awt.*;
import java.awt.event.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;
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 CountStudentByClassFrame(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 CountStudentByClassFrame("");
}

}

3、按系部统计人数窗口CountStudentsByDepartmentFrame
package net.lsl.student.gui;

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

import javax.swing.*;

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

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<String> 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("");
}

}

统计写完了,最后就只剩下设置状态栏信息窗口
4、设置状态栏信息窗口SetStatusBarFrame
package net.lsl.student.gui;

import net.lsl.student.app.Application;
import net.lsl.student.bean.Status;
import net.lsl.student.service.StatusService;
import net.lsl.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;

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

}

最后一个竟然还有难处。和主界面有一些相连的地方。
代码是打完了。系统也可以完全运行出来了,自己还是学到了一些系统的东西。但是真的觉得好难。我可能与编程无缘。写完 了这个小小的程序感觉轻松多了。接下来就需要完成实训报告接下来。虽然很累,但有时候也乐在其中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值