一、系统介绍
实现学生信息的管理,学生学习包括:学生姓名、学号、班级、高等数学、大学英语、计算机导论、体育等四项成绩;能够录入、修改、查询、删除任意学生信息;可以查询某课程所有不及格学生名单;能够将学生信息保存到硬盘,下次打开程序时能够从硬盘读取。
系统类图如下:
二、运行截图
1.进入系统加载文件
2.添加操作
3.删除操作
4.修改操作
5.查询操作
6.查询不及格科目操作
三、系统代码
package com.student;
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.List;
public class ShowInfoFrame extends JFrame {
JTextArea InfoListJTA = null;
Handle handle=new Handle();
Method method=new Method();
List<Student> list=method.getList();
private JTable table;
//显示所有学生信息
public void showAllStudentInfo(){
InfoListJTA.setText("");
for(Student student:list) {
String id = student.getId();
String name = student.getName();
String grade = student.getGrade();
String score1 = student.getScore1()+"";
String score2 = student.getScore2()+"";
String score3 = student.getScore3()+"";
String score4 = student.getScore4()+"";
InfoListJTA.setText(InfoListJTA.getText()
+ id + handle.setStringLen(id.getBytes().length)
+ name + handle.setStringLen(name.getBytes().length)
+ grade + handle.setStringLen(grade.getBytes().length)
+ score1 + handle.setStringLen(score1.getBytes().length)
+ score2 + handle.setStringLen(score2.getBytes().length)
+ score3 + handle.setStringLen(score3.getBytes().length)
+ score4 + handle.setStringLen(score4.getBytes().length)
+ "\n");
}
}
public void queryInfoByName(String queryName){
InfoListJTA.setText("");
List<Student> listQuery = method.queryByName(queryName);
for(Student student:listQuery) {
String id = student.getId();
String name = student.getName();
String grade = student.getGrade();
String score1 = student.getScore1()+"";
String score2 = student.getScore2()+"";
String score3 = student.getScore3()+"";
String score4 = student.getScore4()+"";
InfoListJTA.setText(InfoListJTA.getText()
+ id + handle.setStringLen(id.getBytes().length)
+ name + handle.setStringLen(name.getBytes().length)
+ grade + handle.setStringLen(grade.getBytes().length)
+ score1 + handle.setStringLen(score1.getBytes().length)
+ score2 + handle.setStringLen(score2.getBytes().length)
+ score3 + handle.setStringLen(score3.getBytes().length)
+ score4 + handle.setStringLen(score4.getBytes().length)
+ "\n");
}
}
public void queryInfoById(String queryId){
InfoListJTA.setText("");
List<Student> listQuery = method.queryById(queryId);
for(Student student:listQuery) {
String id = student.getId();
String name = student.getName();
String grade = student.getGrade();
String score1 = student.getScore1()+"";
String score2 = student.getScore2()+"";
String score3 = student.getScore3()+"";
String score4 = student.getScore4()+"";
InfoListJTA.setText(InfoListJTA.getText()
+ id + handle.setStringLen(id.getBytes().length)
+ name + handle.setStringLen(name.getBytes().length)
+ grade + handle.setStringLen(grade.getBytes().length)
+ score1 + handle.setStringLen(score1.getBytes().length)
+ score2 + handle.setStringLen(score2.getBytes().length)
+ score3 + handle.setStringLen(score3.getBytes().length)
+ score4 + handle.setStringLen(score4.getBytes().length)
+ "\n");
}
}
//显示不及格学生信息
public void showFailStudentInfo(Integer state){
List<Student> failList = method.getFailList(state);
System.out.println(failList);
InfoListJTA.setText("");
for(Student student:failList) {
String id = student.getId();
String name = student.getName();
String grade = student.getGrade();
String score1 = student.getScore1()+"";
String score2 = student.getScore2()+"";
String score3 = student.getScore3()+"";
String score4 = student.getScore4()+"";
InfoListJTA.setText(InfoListJTA.getText()
+ id + handle.setStringLen(id.getBytes().length)
+ name + handle.setStringLen(name.getBytes().length)
+ grade + handle.setStringLen(grade.getBytes().length)
+ score1 + handle.setStringLen(score1.getBytes().length)
+ score2 + handle.setStringLen(score2.getBytes().length)
+ score3 + handle.setStringLen(score3.getBytes().length)
+ score4 + handle.setStringLen(score4.getBytes().length)
+ "\n");
}
}
//构造函数
public ShowInfoFrame() {
method.readStudent();
this.setTitle("学生成绩管理系统");
this.setSize(880, 600);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLayout(null);
//界面标题部分
JLabel titleJL = new JLabel("学生成绩管理系统");
Font font = new Font("微软雅黑", 1, 20);
titleJL.setFont(font);
titleJL.setLayout(null);
titleJL.setBounds(350, 10, 300, 20);
//按钮部分
JPanel buttonJP = new JPanel();
buttonJP.setLayout(null);
buttonJP.setBounds(0, 50, 880, 40);
JButton jbAdd = new JButton("添加学生信息");
jbAdd.setBounds(25, 10, 120, 30);
JButton jbDelete = new JButton("删除学生信息");
jbDelete.setBounds(170, 10, 120, 30);
JButton jbModify = new JButton("修改学生信息");
jbModify.setBounds(315, 10, 120, 30);
JButton jbQueryName = new JButton("查询学生信息");
jbQueryName.setBounds(455, 10, 120, 30);
JButton jbQuery = new JButton("查询不及格信息");
jbQuery.setBounds(455, 10, 120, 30);
buttonJP.setLayout(new FlowLayout());
buttonJP.add(jbAdd);
buttonJP.add(jbDelete);
buttonJP.add(jbModify);
buttonJP.add(jbQuery);
buttonJP.add(jbQueryName);
JPanel listHeadJP = new JPanel();
listHeadJP.setLayout(null);
listHeadJP.setBounds(0, 120, 880, 30);
JLabel idHeadJL = new JLabel("学号");
idHeadJL.setBackground(Color.gray);
idHeadJL.setBounds(20, 0, 150, 25);
JLabel nameHeadJL = new JLabel("姓名");
nameHeadJL.setBounds(140, 0, 150, 25);
JLabel gradeHeadJL = new JLabel("班级");
gradeHeadJL.setBounds(260, 0, 150, 25);
JLabel score1HeadJL = new JLabel("高等数学成绩");
score1HeadJL.setBounds(380, 0, 150, 25);
JLabel score2HeadJL = new JLabel("大学英语成绩");
score2HeadJL.setBounds(500, 0, 150, 25);
JLabel score3HeadJL = new JLabel("计算机导论成绩");
score3HeadJL.setBounds(620, 0, 150, 25);
JLabel score4HeadJL = new JLabel("体育成绩");
score4HeadJL.setBounds(740, 0, 150, 25);
listHeadJP.add(idHeadJL);
listHeadJP.add(nameHeadJL);
listHeadJP.add(gradeHeadJL);
listHeadJP.add(score1HeadJL);
listHeadJP.add(score2HeadJL);
listHeadJP.add(score3HeadJL);
listHeadJP.add(score4HeadJL);
Font GoosInfoListFont = new Font("微软雅黑", 0, 13);
InfoListJTA = new JTextArea(20,20);
InfoListJTA.setBounds(10, 152, 880, 400);
InfoListJTA.setBorder (BorderFactory.createEmptyBorder (1,1,1,5));
InfoListJTA.setColumns (20);
InfoListJTA.setRows (20);//相当于设置文本区组件的初始大小,并不是说一行只能写0
InfoListJTA.setFont(GoosInfoListFont);
this.add(titleJL);
this.add(buttonJP);
this.add(listHeadJP);
this.add(InfoListJTA);
showAllStudentInfo();
this.setVisible(true);
//添加学生信息
jbAdd.addMouseListener(new MouseAdapter(){
JTextField idJTF = null;
JTextField nameJTF = null;
JTextField gradeJTF = null;
JTextField score1JTF = null;
JTextField score2JTF = null;
JTextField score3JTF = null;
JTextField score4JTF = null;
@Override
public void mouseClicked(MouseEvent e) {
final JFrame addJF = new JFrame();
addJF.setSize(300, 400);
addJF.setBackground(Color.gray);
addJF.setLocationRelativeTo(null);
addJF.setVisible(true);
addJF.setLayout(new FlowLayout());
JLabel idJL = new JLabel("学号:");
idJTF = new JTextField(20);
JLabel nameJL = new JLabel("姓名:");
nameJTF = new JTextField(20);
JLabel gradeJL = new JLabel("班级:");
gradeJTF = new JTextField(20);
JLabel score1JL = new JLabel("数学:");
score1JTF = new JTextField(20);
JLabel score2JL = new JLabel("英语:");
score2JTF = new JTextField(20);
JLabel score3JL = new JLabel("导论:");
score3JTF = new JTextField(20);
JLabel score4JL = new JLabel("体育:");
score4JTF = new JTextField(20);
//addJF.dispose();//销毁子窗口
addJF.add(idJL);
addJF.add(idJTF);
addJF.add(nameJL);
addJF.add(nameJTF);
addJF.add(gradeJL);
addJF.add(gradeJTF);
addJF.add(score1JL);
addJF.add(score1JTF);
addJF.add(score2JL);
addJF.add(score2JTF);
addJF.add(score3JL);
addJF.add(score3JTF);
addJF.add(score4JL);
addJF.add(score4JTF);
JButton addJB = new JButton("添加");
addJF.add(addJB);
addJB.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
//输入的信息为空的处理
if(idJTF.getText().equals("")
|| nameJTF.getText().equals("")
|| gradeJTF.getText().equals("")
|| score1JTF.getText().equals("")
|| score2JTF.getText().equals("")
|| score3JTF.getText().equals("")
|| score4JTF.getText().equals("")) {
addJF.dispose();
JFrame tipJF = new JFrame("提示");
tipJF.setLocationRelativeTo(null);
tipJF.setSize(260,100);
tipJF.setLayout(new FlowLayout());
JLabel tipJL = new JLabel("请填入了所有的信息之后再点击提交");
tipJF.setVisible(true);
tipJF.add(tipJL);
}else {
String id = idJTF.getText();
String name = nameJTF.getText();
String grade=gradeJTF.getText();
double score1 = Double.parseDouble(score1JTF.getText());
double score2 = Double.parseDouble(score2JTF.getText());
double score3 = Double.parseDouble(score3JTF.getText());
double score4 = Double.parseDouble(score4JTF.getText());
if(method.queryById(id).size()>0){
addJF.dispose();
JFrame tipJF = new JFrame("提示");
tipJF.setLocationRelativeTo(null);
tipJF.setSize(260,100);
tipJF.setLayout(new FlowLayout());
JLabel tipJL = new JLabel("存在该信息,请重新输入!");
tipJF.setVisible(true);
tipJF.add(tipJL);
showAllStudentInfo();
}else{
Student student = new Student(id, name, grade,score1,score2, score3,score4);
method.addStudent(student);
addJF.dispose();
JFrame addSuccessfulJF = new JFrame("提示");
addSuccessfulJF.setLocationRelativeTo(null);
addSuccessfulJF.setSize(260, 100);
addSuccessfulJF.setVisible(true);
addSuccessfulJF.setLayout(new FlowLayout());
JLabel SuccessfulJL = new JLabel("添加学生信息成功!");
method.saveStudent();
addSuccessfulJF.add(SuccessfulJL);
showAllStudentInfo();
}
}
}
});
JButton addJB1 = new JButton("重置");
addJF.add(addJB1);
addJB1.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
idJTF.setText("");
nameJTF.setText("");
gradeJTF.setText("");
score1JTF.setText("");
score2JTF.setText("");
score3JTF.setText("");
score4JTF.setText("");
}
});
}
});
//删除学生信息
jbDelete.addMouseListener(new MouseAdapter() {
JTextField idJTF = null;
@Override
public void mouseClicked(MouseEvent e) {
final JFrame deleteJF = new JFrame("删除学生信息");
deleteJF.setLayout(new FlowLayout());
deleteJF.setSize(300, 80);
deleteJF.setVisible(true);
deleteJF.setLocationRelativeTo(null);
JLabel idJL = new JLabel("编号:");
idJTF = new JTextField(15);
JButton numJB = new JButton("提交");
deleteJF.add(idJL);
deleteJF.add(idJTF);
deleteJF.add(numJB);
numJB.addMouseListener(new MouseAdapter(){
@Override
public void mouseClicked(MouseEvent e) {
if(idJTF.getText().equals("")){
deleteJF.dispose();
JFrame deleteFalseJF = new JFrame("提示");
deleteFalseJF.setLocationRelativeTo(null);
deleteFalseJF.setSize(260, 100);
deleteFalseJF.setVisible(true);
deleteFalseJF.setLayout(new FlowLayout());
JLabel FalseJL = new JLabel("请先输入需要删除的学生编号,删除失败!");
deleteFalseJF.add(FalseJL);
showAllStudentInfo();
}else{
String id = idJTF.getText().toString();
if(method.queryById(id).size()>0){
method.deleteStudent(id);
deleteJF.dispose();
JFrame deleteSuccessfulJF = new JFrame("提示");
deleteSuccessfulJF.setLocationRelativeTo(null);
deleteSuccessfulJF.setSize(260, 100);
deleteSuccessfulJF.setVisible(true);
deleteSuccessfulJF.setLayout(new FlowLayout());
JLabel SuccessfulJL = new JLabel("删除学生信息成功!");
method.saveStudent();
deleteSuccessfulJF.add(SuccessfulJL);
showAllStudentInfo();
}else{
deleteJF.dispose();
JFrame deleteFalseJF = new JFrame("提示");
deleteFalseJF.setLocationRelativeTo(null);
deleteFalseJF.setSize(260, 100);
deleteFalseJF.setVisible(true);
deleteFalseJF.setLayout(new FlowLayout());
JLabel FalseJL = new JLabel("没有该学生编号,删除失败!");
deleteFalseJF.add(FalseJL);
showAllStudentInfo();
}
}
}
});
}
});
//修改学生信息
jbModify.addMouseListener(new MouseAdapter(){
JTextField num1JTF = null;
@Override
public void mouseClicked(MouseEvent e) {
final JFrame modifyJF = new JFrame("修改学生信息");
modifyJF.setSize(300, 120);
modifyJF.setLocationRelativeTo(null);
modifyJF.setLayout(new FlowLayout());
modifyJF.setVisible(true);
JLabel idJL = new JLabel("编号:");
num1JTF = new JTextField(15);
JButton numJB = new JButton("提交");
modifyJF.add(idJL);
modifyJF.add(num1JTF);
modifyJF.add(numJB);
numJB.addMouseListener(new MouseAdapter() {
JTextField idJTF = null;
JTextField nameJTF = null;
JTextField gradeJTF = null;
JTextField score1JTF = null;
JTextField score2JTF = null;
JTextField score3JTF = null;
JTextField score4JTF = null;
@Override
public void mouseClicked(MouseEvent e) {
if(num1JTF.getText().equals("")){
modifyJF.dispose();
JFrame tipJF = new JFrame("提示");
tipJF.setLocationRelativeTo(null);
tipJF.setSize(260,100);
tipJF.setLayout(new FlowLayout());
JLabel tipJL = new JLabel("请先输入修改的学生编号,修改失败!");
tipJF.setVisible(true);
tipJF.add(tipJL);
showAllStudentInfo();
}else {
//显示编号对应的学生信息
final JFrame modifyJF1 = new JFrame();
modifyJF1.setSize(300, 400);
modifyJF1.setBackground(Color.gray);
modifyJF1.setLocationRelativeTo(null);
modifyJF1.setLayout(new FlowLayout());
JLabel idJL = new JLabel("编号:");
idJTF = new JTextField(20);
JLabel nameJL = new JLabel("名称:");
nameJTF = new JTextField(20);
JLabel gradeJL = new JLabel("班级:");
gradeJTF = new JTextField(20);
JLabel score1JL = new JLabel("数学:");
score1JTF = new JTextField(20);
JLabel score2JL = new JLabel("英语:");
score2JTF = new JTextField(20);
JLabel score3JL = new JLabel("导论:");
score3JTF = new JTextField(20);
JLabel score4JL = new JLabel("体育:");
score4JTF = new JTextField(20);
modifyJF1.add(idJL);
modifyJF1.add(idJTF);
modifyJF1.add(nameJL);
modifyJF1.add(nameJTF);
modifyJF1.add(gradeJL);
modifyJF1.add(gradeJTF);
modifyJF1.add(score1JL);
modifyJF1.add(score1JTF);
modifyJF1.add(score2JL);
modifyJF1.add(score2JTF);
modifyJF1.add(score3JL);
modifyJF1.add(score3JTF);
modifyJF1.add(score4JL);
modifyJF1.add(score4JTF);
//查询学生信息
String id = num1JTF.getText().toString();
List<Student> studentList = method.queryById(id);
if(studentList.size()>0) {
modifyJF1.setVisible(true);
idJTF.setText(studentList.get(0).getId());
nameJTF.setText(studentList.get(0).getName());
gradeJTF.setText(studentList.get(0).getGrade());
score1JTF.setText(studentList.get(0).getScore1()+"");
score2JTF.setText(studentList.get(0).getScore2()+"");
score3JTF.setText(studentList.get(0).getScore3()+"");
score4JTF.setText(studentList.get(0).getScore4()+"");
//提交修改后的信息
JButton submitJB = new JButton("提交修改");
modifyJF1.add(submitJB);
submitJB.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
String id = idJTF.getText();
String name = nameJTF.getText();
String grade = gradeJTF.getText();
double score1 = Double.parseDouble(score1JTF.getText());
double score2 = Double.parseDouble(score2JTF.getText());
double score3 = Double.parseDouble(score3JTF.getText());
double score4 = Double.parseDouble(score4JTF.getText());
Student goods1 = new Student(id, name, grade,score1, score2,score3,score4);
method.updateStudent(id,goods1);
modifyJF1.dispose();
JFrame updateSucessfulJF = new JFrame("提示");
updateSucessfulJF.setLocationRelativeTo(null);
updateSucessfulJF.setSize(260, 100);
updateSucessfulJF.setVisible(true);
updateSucessfulJF.setLayout(new FlowLayout());
JLabel SuccessfulJL = new JLabel("修改学生信息成功!");
method.saveStudent();
updateSucessfulJF.add(SuccessfulJL);
showAllStudentInfo();
}
});
JButton submitJB1 = new JButton("重置");
modifyJF1.add(submitJB1);
submitJB1.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
String id = idJTF.getText();
nameJTF.setText("");
gradeJTF.setText("");
score1JTF.setText("");
score2JTF.setText("");
score3JTF.setText("");
score4JTF.setText("");
}
});
}else {
modifyJF.dispose();
JFrame tipJF = new JFrame("提示");
tipJF.setLocationRelativeTo(null);
tipJF.setSize(260,100);
tipJF.setLayout(new FlowLayout());
JLabel tipJL = new JLabel("没有该学生编号,修改失败!");
tipJF.setVisible(true);
tipJF.add(tipJL);
showAllStudentInfo();
}
modifyJF.dispose();
}
}
});
}
});
//查询学生不及格信息
jbQuery.addMouseListener(new MouseAdapter() {
JComboBox<String> subjectJC = null;
@Override
public void mouseClicked(MouseEvent e) {
final JFrame deleteJF = new JFrame("查询不及格科目信息");
deleteJF.setLayout(new FlowLayout());
deleteJF.setSize(500, 120);
deleteJF.setVisible(true);
deleteJF.setLocationRelativeTo(null);
// 创建下拉框 高等数学、大学英语、计算机导论、体育
String[] subjects = {"高等数学", "大学英语", "计算机导论","体育"};
subjectJC = new JComboBox<>(subjects);
JButton numJB = new JButton("提交");
deleteJF.add(new JLabel("学科:"));
deleteJF.add(subjectJC);
deleteJF.add(numJB);
numJB.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
// 查询不及格信息
if (subjectJC.getSelectedIndex() == 0) {
showFailStudentInfo(0);
deleteJF.dispose();
} if (subjectJC.getSelectedIndex() == 1) {
System.out.println("选择:"+subjectJC.getSelectedIndex());
showFailStudentInfo(1);
deleteJF.dispose();
} if (subjectJC.getSelectedIndex() == 2) {
showFailStudentInfo(2);
deleteJF.dispose();
}if (subjectJC.getSelectedIndex() == 3) {
showFailStudentInfo(3);
deleteJF.dispose();
}
}
});
}
});
//查询学生信息
jbQueryName.addMouseListener(new MouseAdapter() {
JTextField idJTF = null;
@Override
public void mouseClicked(MouseEvent e) {
final JFrame deleteJF = new JFrame("查询学生信息");
deleteJF.setLayout(new FlowLayout());
deleteJF.setSize(300, 80);
deleteJF.setVisible(true);
deleteJF.setLocationRelativeTo(null);
JLabel idJL = new JLabel("学号:");
idJTF = new JTextField(15);
JButton numJB = new JButton("提交");
deleteJF.add(idJL);
deleteJF.add(idJTF);
deleteJF.add(numJB);
numJB.addMouseListener(new MouseAdapter(){
@Override
public void mouseClicked(MouseEvent e) {
if(idJTF.getText().equals("")){
showAllStudentInfo();
deleteJF.dispose();
}else{
String id = idJTF.getText().toString();
queryInfoById(id);
deleteJF.dispose();
}
}
});
}
});
}
}