Java 学生成绩管理系统「建议收藏」

Java 学生成绩管理系统「建议收藏」教学管理系统很适合初学者对于所学语言的练习。本文是javaSE中用文件流写的,这个也可以用数据库写。分析这个项目有1.学生2.老师3.教务人员4.管理员四个角色分别担任不同的任务。1.学生有属性id,密码,性别,年龄,和一个存放成绩的集合(因为一个学生可能会有多个科目,所以用集合来存放学生的所学科目)。2.老师有属性id,密码,性别,年龄,和一成绩类的对象(考虑到老师只

大家好,又见面了,我是你们的朋友全栈君。

教学管理系统很适合初学者对于所学语言的练习。本文是javaSE 中用文件流写的,这个也可以用数据库写。

分析

这个项目有 1.学生 2.老师 3.教务人员 4.管理员四个角色分别担任不同的任务。

1.学生 有属性 id, 密码,性别,年龄,和一个存放成绩的集合(因为一个学生可能会有多个科目,所以用集合来存放学生的所学科目)。
2.老师 有属性 id,密码,性别,年龄,和一成绩类的对象(考虑到老师只教授一科目,所以在老师类中实现一个科目类的对象)。
3.教务人员 有属性 id,密码(教务人员没有考虑自身的信息,主要对老师和学生的管理)。
4.管理员 对学生老师和教务人员进行帐号注册(例如学校的教学网第一次登录不需要注册直接用学号登录然后改密码,这样防止外人注册进入到系统)
只有一个系统管理员,用来添加学生,教师和教务人员帐号,方便学习这里帐号id为111,密码为111。
还要有科目类 有属性 科目名,科目编号,科目分数。
这里写图片描述

代码

基本类创建

1.学生类

package com.file;

import java.io.Serializable;
import java.util.ArrayList;

public class Student implements Serializable { 
   
    private String id = null;   //设为私有属性,区分老师类的属性
    private String password = null;
    private String name = null;
    private String age = null;
    private String sex = null;

    public ArrayList<Course> arr_course = new ArrayList<Course>();
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public Student() {
        super();
    }
    public Student(String id, String password) {
        super();
        this.id = id;
        this.password = password;
    }
    public Student(String id, String password, String name, String age,
            String sex) {
        super();
        this.id = id;
        this.password = password;
        this.name = name;
        this.age = age;
        this.sex = sex;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
}

2.老师类

package com.file;

import java.io.Serializable;

public class Teacher implements Serializable{ 
   

    private String id = null;
    private String name = null;
    private String password = null;
    private String age = null;  
    private String sex = null;
    private Course teaching_course = null;

    public Teacher(String id, String password) {
        super();
        this.id = id;
        this.password = password;
    }
    @Override
    public String toString() {
        return "Teacher [id=" + id + ", name=" + name + ", password="
                + password + ", age=" + age + ", sex=" + sex
                + ", teaching_course=" + teaching_course + "]";
    }
    public Teacher(String id, String name, String password, String age,
            String sex, Course teaching_course) {
        super();
        this.id = id;
        this.name = name;
        this.password = password;
        this.age = age;
        this.sex = sex;
        this.teaching_course = teaching_course;
    }
    public Teacher() {
        super();
        // TODO Auto-generated constructor stub
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }

    public Course getTeaching_course() {
        return teaching_course;
    }
    public void setTeaching_course(Course teaching_course) {
        this.teaching_course = teaching_course;
    }
}

3.教务人员类

package com.file;

import java.io.Serializable;

public class Manage implements Serializable{ 
   
    private String id = null;
    private String name = null;
    private String password = null;
    public Manage() {
        super();
        // TODO Auto-generated constructor stub
    }
    public Manage(String id, String name, String password) {
        super();
        this.id = id;
        this.name = name;
        this.password = password;
    }
    public Manage(String id, String password) {
        super();
        this.id = id;
        this.password = password;
    }
    @Override
    public String toString() {
        return "Manage [id=" + id + ", name=" + name + ", password=" + password
                + "]";
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }

}

4.科目类

package com.file;

import java.io.Serializable;

public class Course implements Serializable{ 
   

    public String courseId = null;  //课程编号
    public String courseName = null;  //课程名
    public String courseMark = null;  //课程分数

    public String getCourseId() {
        return courseId;
    }
    public void setCourseId(String courseId) {
        this.courseId = courseId;
    }
    public String getCourseName() {
        return courseName;
    }
    public Course(String courseName) {
        super();
        this.courseName = courseName;
    }
    public void setCourseName(String courseName) {
        this.courseName = courseName;
    }
    public String getCourseMark() {
        return courseMark;
    }
    public void setCourseMark(String courseMark) {
        this.courseMark = courseMark;
    }
    public Course(String courseId, String courseName, String courseMark) {
        super();
        this.courseId = courseId;
        this.courseName = courseName;
        this.courseMark = courseMark;
    }
    public Course() {
        super();
        // TODO Auto-generated constructor stub
    }
    public int searchCourse(){  
        return 0;
    }
    @Override
    public String toString() {
        return "Course [courseId=" + courseId + ", courseName=" + courseName
                + ", courseMark=" + courseMark + "]";
    }

}

实现输入输出文件流

在实现时用集合来实现所以对学生老师教务人员创建三个集合

package com.file;

import java.util.ArrayList;

public class DB { 
   
    public static ArrayList<Student> arrStu = new ArrayList<Student>();//学生
    public static ArrayList<Teacher> arrTea = new ArrayList<Teacher>();//老师
    public static ArrayList<Manage> arrMan= new ArrayList<Manage>();//教务人员
}

为了方便使用给学生老师和教务人员各建一个输入输出类,代码都类似。

1.学生输入输出流流

package com.file;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;

public class IOStreamStudent { 
   
    public static File file = new File("stu.txt");

    public static void writeToFile() {
        FileOutputStream fo = null;
        ObjectOutputStream objout = null;
        try {
            fo = new FileOutputStream(file);
            objout = new ObjectOutputStream(fo);
            objout.writeObject(DB.arrStu);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                objout.flush();
                objout.close(); 
                fo.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        System.out.println("Write Student to File" + " " + file);
    }

    @SuppressWarnings({ "resource", "unchecked" })
    public static ArrayList<Student> readFromFile(){
        ArrayList<Student> arr = null;
        ObjectInputStream objin = null;
        FileInputStream fin = null;
        try{
            fin = new FileInputStream(file);
            objin = new ObjectInputStream(fin);
            arr = (ArrayList<Student>) objin.readObject();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } 
        return arr;
    }

}

2.老师输入输出流

package com.file;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;

public class IOStreamTeacher { 
   
    public static File file = new File("tea.txt");

    public static void writeToFile() {
        FileOutputStream fo = null;
        ObjectOutputStream objout = null;
        try {
            fo = new FileOutputStream(file);
            objout = new ObjectOutputStream(fo);
            objout.writeObject(DB.arrTea);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                objout.flush();
                objout.close(); 
                fo.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        System.out.println("Write Teacher to File" + " " + file);
    }

    @SuppressWarnings({ "resource", "unchecked" })
    public static ArrayList<Teacher> readFromFile(){
        ArrayList<Teacher> arr = null;
        ObjectInputStream objin = null;
        FileInputStream fin = null;
        try{
            fin = new FileInputStream(file);
            objin = new ObjectInputStream(fin);
            arr = (ArrayList<Teacher>) objin.readObject();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } 
        return arr;
    }

}

3.教务人员输入输出

package com.file;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;

public class IOStreamManage { 
   
    public static File file = new File("manage.txt");

    public static void writeToFile() {
        FileOutputStream fo = null;
        ObjectOutputStream objout = null;
        try {
            fo = new FileOutputStream(file);
            objout = new ObjectOutputStream(fo);
            objout.writeObject(DB.arrMan);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                objout.flush();
                objout.close(); 
                fo.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        System.out.println("Write Manage to File" + " " + file);
    }

    @SuppressWarnings({ "resource", "unchecked" })
    public static ArrayList<Manage> readFromFile(){
        ArrayList<Manage> arr = null;
        ObjectInputStream objin = null;
        FileInputStream fin = null;
        try{
            fin = new FileInputStream(file);
            objin = new ObjectInputStream(fin);
            arr = (ArrayList<Manage>) objin.readObject();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } 
        return arr;
    }

}

在当前项目下创建stu.txt tea.txt manage.txt三个文件用来保存数据。

登录界面

因为是只有管理员才能注册新的用户,所以此页面没有注册按钮,需要注册时点击管理员按钮进入Register类进行注册。
如果要更改为每个随意注册只需添加注册按钮和相应的监听,然后转到Register类即可。

package com.file;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.net.URL;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.ButtonGroup;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
public class Login extends JFrame{ 

static String administration_id = "111";
static String administration_password = "111";
String zhiwu;
JFrame jf;
JLabel jl_id,jl_password,jl3;
public static JTextField jt_id,jt_password;
JPanel jp1,jp2,jp3,jp4,jp_group,jp_img;
JButton jb_login;
JRadioButton radioButton_student,radioButton_teacher,radioButton_manage,radioButton_administration;
ButtonGroup group;
ImageIcon img = null;
public Login(){
jf = new JFrame();
jf.setSize(500,700);
jf.setLocation(500,100);
jf.setDefaultCloseOperation(EXIT_ON_CLOSE);
jf.setLayout(new GridLayout(6,2));
Icon img = new ImageIcon("tu1.gif");
jp_img = new JPanel();
jp_img.add(new JLabel(img));            
jl_id = new JLabel("用户名");
jt_id = new JTextField(15);
jp1  =new JPanel();
jp1.add(jl_id);
jp1.add(jt_id);
jl_password = new JLabel("密码");
jt_password = new JTextField(15);
jp2 = new JPanel();
jp2.add(jl_password);
jp2.add(jt_password);
jl3 = new JLabel("学生管理系统");
jp3 = new JPanel();
jp3.add(jl3);
jp_group = new JPanel();
radioButton_student = new JRadioButton("学生");
jp_group.add(radioButton_student);
radioButton_teacher = new JRadioButton("老师");
jp_group.add(radioButton_teacher);
radioButton_manage = new JRadioButton("教务");
jp_group.add(radioButton_manage);
radioButton_administration = new JRadioButton("管理员");
jp_group.add(radioButton_administration);
group = new ButtonGroup();  //创建按钮组保证3个按钮一次只能按下一个
group.add(radioButton_student);
group.add(radioButton_teacher);
group.add(radioButton_manage);
group.add(radioButton_administration);
jb_login = new JButton("登录");
jp4 = new JPanel();
jp4.add(jb_login);
jf.add(jp_img);
jf.add(jp3);
jf.add(jp1);
jf.add(jp2);
jf.add(jp_group);
jf.add(jp4);
jf.setVisible(true);
//登录按钮监听
jb_login.addActionListener(new ActionListener() {
@SuppressWarnings("unused")
public void actionPerformed(ActionEvent e) {
boolean flow = true;
//学生
if (radioButton_student.isSelected()) {
if (IOStreamStudent.file.length() == 0) {
JOptionPane.showMessageDialog(null, "用户名不存在", "提示信息",JOptionPane.ERROR_MESSAGE);
} else {
ArrayList<Student> arr = IOStreamStudent.readFromFile();
Iterator<Student> it = arr.iterator();
while (it.hasNext()) {
Student newstu = it.next();
if (newstu.getId().equals(jt_id.getText())) {
if (newstu.getPassword().equals(jt_password.getText())) {
new StudentLogin(newstu);                                   
} else {
JOptionPane.showMessageDialog(null,"密码或用户名错误");                                 
}
flow = false;
} 
}if(flow){
JOptionPane.showMessageDialog(null, "用户名不存在");
}
}
}
//老师
if (radioButton_teacher.isSelected()) {
if (IOStreamTeacher.file.length() == 0) {
JOptionPane.showMessageDialog(null, "用户名不存在", "提示信息",JOptionPane.ERROR_MESSAGE);
} else {
ArrayList<Teacher> arr = IOStreamTeacher.readFromFile();
Iterator<Teacher> it = arr.iterator();
while (it.hasNext()) {
Teacher newtea = it.next();
if (newtea.getId().equals(jt_id.getText())) {
if (newtea.getPassword().equals(jt_password.getText())) {
new TeacherLogin(newtea);
} else {
JOptionPane.showMessageDialog(null,"密码或用户名错误");
}
flow = false;
}
}
if (flow) {
JOptionPane.showMessageDialog(null, "用户名不存在");
}
}
}
//教务
if (radioButton_manage.isSelected()) {
if(IOStreamManage.file.length() == 0){
JOptionPane.showMessageDialog(null, "用户名不存在","提示信息",JOptionPane.ERROR_MESSAGE);
}else{                      
ArrayList<Manage> arr = IOStreamManage.readFromFile();
Iterator<Manage> it = arr.iterator();
while (it.hasNext()) {
Manage newman = it.next();
if (newman.getId().equals(jt_id.getText())) {
if (newman.getPassword().equals(jt_password.getText())) {
new ManageLogin(newman);                                        
} else {
JOptionPane.showMessageDialog(null, "密码或用户名错误");
}
flow = false;
}
}if(flow){
JOptionPane.showMessageDialog(null, "用户名不存在");
}
}
}
//系统管理员
if (radioButton_administration.isSelected()) {
if (administration_id.equals(jt_id.getText())) {
if (administration_password.equals(jt_password.getText())) {
new Register();
} else {
JOptionPane.showMessageDialog(null, "密码错误");
}
} else {
JOptionPane.showMessageDialog(null, "请重新登录");
}
}
}
});
}
//学生查寻返回元素下标
public static int searchStudent(){
int index = -1;
String userid = jt_id.getText();
if(IOStreamStudent.file.length() == 0){
return index;
}else{
ArrayList<Student> arr  = IOStreamStudent.readFromFile();
for(int i=0; i<arr.size(); i++){
if(userid.equals(arr.get(i).getId())){
index = i;
return index;
}
}
}
return index;
}
//老师查询返回元素下标
public static int searchTeacher(){
int index = -1;
String userid = jt_id.getText();
if(IOStreamTeacher.file.length() == 0){
return index;
}else{
ArrayList<Teacher> arr  = IOStreamTeacher.readFromFile();
for(int i=0; i<arr.size(); i++){
if(userid.equals(arr.get(i).getId())){
index = i;
return index;
}
}
}
return index;
}
//管理员查询返回下标
public static int searchManage(){
int index = -1;
String userid = jt_id.getText();
if(IOStreamManage.file.length() == 0){
return index;
}else{
ArrayList<Manage> arr  = IOStreamManage.readFromFile();
for(int i=0; i<arr.size(); i++){
if(userid.equals(arr.get(i).getId())){
index = i;
return index;
}
}
}
return index;
}
}

这里写图片描述

注册页面

在登录页面点击管理员按钮后进入到此页面,进行创建角色的创建。

package com.file;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.ButtonGroup;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
public class Register {
JFrame jf;
JLabel jl_id, jl_password, jl_age, jl_sex, jl5;
JTextField jt_id, jt_password, jt_age, jt_sex;
JPanel jp1, jp2, jp3, jp4, jp5, jp6, jp_group, jp_img;
JButton jb1;
ButtonGroup group;
JRadioButton radioButton_student, radioButton_teacher, radioButton_manage;
public Register() {
jf = new JFrame("注册界面");
jf.setSize(500, 700);
jf.setLocation(1300,100);
jf.setVisible(true);
jf.setLayout(new GridLayout(7, 2));
Icon img = new ImageIcon("tu1.gif");
jp_img = new JPanel();
jp_img.add(new JLabel(img));
jl_id = new JLabel("用户名");
jt_id = new JTextField(15);
jp1 = new JPanel();
jp1.add(jl_id);
jp1.add(jt_id);
jl_password = new JLabel("密码");
jt_password = new JTextField(15);
jp2 = new JPanel();
jp2.add(jl_password);
jp2.add(jt_password);
jp_group = new JPanel();
radioButton_student = new JRadioButton("学生");
jp_group.add(radioButton_student);
radioButton_teacher = new JRadioButton("老师");
jp_group.add(radioButton_teacher);
radioButton_manage = new JRadioButton("教务");
jp_group.add(radioButton_manage);
group = new ButtonGroup();
group.add(radioButton_student);
group.add(radioButton_teacher);
group.add(radioButton_manage);
jb1 = new JButton("完成");
jp5 = new JPanel();
jp5.add(jb1);
jl5 = new JLabel("注册成功");
jp6 = new JPanel();
jf.add(jp_img);
jf.add(jp1);
jf.add(jp2);
jf.add(jp_group);
jf.add(jp5);
jf.add(jp6);
jb1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//学生
if (radioButton_student.isSelected()) {
Student stu = new Student(jt_id.getText(), jt_password
.getText());
if (IOStreamStudent.file.length() == 0) {
DB.arrStu.add(stu);
IOStreamStudent.writeToFile();
jp6.add(jl5);
jf.setVisible(true);
jt_id.setText("");
jt_password.setText("");
} else {
DB.arrStu.clear();
DB.arrStu = IOStreamStudent.readFromFile();
Iterator<Student> it = DB.arrStu.iterator();
boolean flag = true;
while (it.hasNext()) {
Student newstu = it.next();
if (newstu.getId().equals(jt_id.getText())) {
flag = false;
JOptionPane.showMessageDialog(null,
"此用户名已存在,请重新输入");
}
}
if (flag) {
if (!(jt_id.getText().isEmpty() || jt_password
.getText().isEmpty())) {
DB.arrStu.add(stu);
IOStreamStudent.writeToFile();
jp6.add(jl5);
jf.setVisible(true);
jt_id.setText("");
jt_password.setText("");
} else {
JOptionPane.showMessageDialog(null,
"密码,用户名不能为空");
}
}
}
}
//老师
if (radioButton_teacher.isSelected()) {
Teacher tea = new Teacher(jt_id.getText(), jt_password
.getText());
if (IOStreamTeacher.file.length() == 0) {
DB.arrTea.add(tea);
IOStreamTeacher.writeToFile();
jp6.add(jl5);
jf.setVisible(true);
jt_id.setText("");
jt_password.setText("");
} else {
DB.arrTea.clear();
DB.arrTea = IOStreamTeacher.readFromFile();
Iterator<Teacher> it = DB.arrTea.iterator();
boolean flag = true;
while (it.hasNext()) {
Teacher newtea = it.next();
if (newtea.getId().equals(jt_id.getText())) {
flag = false;
JOptionPane.showMessageDialog(null,
"此用户名已存在,请重新输入");
}
}
if (flag) {
if (!(jt_id.getText().isEmpty() || jt_password
.getText().isEmpty())) {
DB.arrTea.add(tea);
IOStreamTeacher.writeToFile();
jp6.add(jl5);
jf.setVisible(true);
jt_id.setText("");
jt_password.setText("");
} else {
JOptionPane.showMessageDialog(null,
"密码,用户名不能为空");
}
}
}
}
//管理员
if (radioButton_manage.isSelected()) {
Manage man = new Manage(jt_id.getText(), jt_password
.getText());
if (IOStreamManage.file.length() == 0) {
DB.arrMan.add(man);
IOStreamManage.writeToFile();
jp6.add(jl5);
jf.setVisible(true);
jt_id.setText("");
jt_password.setText("");
} else {
DB.arrMan.clear();
DB.arrMan = IOStreamManage.readFromFile();
Iterator<Manage> it = DB.arrMan.iterator();
boolean flag = true;
while (it.hasNext()) {
Manage newman = it.next();
if (newman.getId().equals(jt_id.getText())) {
flag = false;
JOptionPane.showMessageDialog(null,
"此用户名已存在,请重新输入");
}
}
if (flag) {
if (!(jt_id.getText().isEmpty() || jt_password
.getText().isEmpty())) {
DB.arrMan.add(man);
IOStreamManage.writeToFile();
jp6.add(jl5);
jf.setVisible(true);
jt_id.setText("");
jt_password.setText("");
} else {
JOptionPane.showMessageDialog(null,
"密码,用户名不能为空");
}
}
}
}
}
});
}
}

这里我们注册学生1,老师1,教务1,密码都是1
这里写图片描述

显示界面

每个角色的显示界面不一样所以创建3个类,显示界面里包括了需要的内容。

1.学生的显示界面 StudentLogin

创建菜单选项,下设信息,成绩。

package com.file;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
public class StudentLogin {
JFrame jf;
JLabel jl_name, jl11, jl_age, jl21, jl_sex, jl31, jl_ReviseOK,jl_old_password,jl_new_password1,jl_new_password2,jl_inpassword_err;
JTextField jt_name, jt_age, jt_sex;
JPasswordField jp_old_password,jpassword1,jpassword2;
JPanel jp1, jp2, jp3, jp4, jp_jb, jp_img,jp_scroll,jp_center;
JButton jb,jb_revise_password;
static JTable table;
JScrollPane scrollPane;
static DefaultTableModel model;
JMenuBar jmb;
JMenuItem jmb1find,jmb2find,jmb1revisePassword;
public StudentLogin(final Student stu) {
jf = new JFrame("欢迎 " + stu.getId() + " 同学,你好!");
jf.setSize(1000, 700);
jf.setLocation(800, 100);
jf.setLayout(new BorderLayout(0,0));
Icon img = new ImageIcon("tu2.jpg");
jf.add(new JLabel(img),BorderLayout.NORTH);
jmb = new JMenuBar(); //创建菜单
jf.setJMenuBar(jmb); 
JMenu jmb1 = new JMenu("个人信息");
jmb.add(jmb1);
jmb1find = new JMenuItem("查看个人信息");
jmb1.add(jmb1find); 
jmb1revisePassword = new JMenuItem("修改账户密码");
jmb1.add(jmb1revisePassword); 
JMenu jmb2 = new JMenu("我的成绩");
jmb.add(jmb2);
jmb2find = new JMenuItem("查看所有");
jmb2.add(jmb2find);
jp_center = new JPanel();//中心的面板
jf.setVisible(true);
jmb1find.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jp_center.removeAll();
jp_center.setLayout(new GridLayout(7,2));
jf.add(jp_center,BorderLayout.CENTER);
jl_name = new JLabel("姓名");
jt_name = new JTextField(20);
jt_name.setText(stu.getName());
jp1 = new JPanel();
jp1.add(jl_name);
jp1.add(jt_name);
jl_age = new JLabel("年龄");
jt_age = new JTextField(20);
jt_age.setText(stu.getAge());
jp2 = new JPanel();
jp2.add(jl_age);
jp2.add(jt_age);
jl_sex = new JLabel("性别");
jt_sex = new JTextField(20);
jt_sex.setText(stu.getSex());
jp3 = new JPanel();
jp3.add(jl_sex);
jp3.add(jt_sex);
jl_ReviseOK = new JLabel("修改成功");
jp4 = new JPanel();
jb = new JButton("修改信息");
jp_jb = new JPanel();
jp_jb.add(jb);
jp_center.add(jp1);
jp_center.add(jp2);
jp_center.add(jp3);
jp_center.add(jp_jb);
jp_center.add(jp4);
jf.setVisible(true);
jb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
stu.setName(jt_name.getText());
stu.setAge(jt_age.getText());
stu.setSex(jt_sex.getText());
Student newstu = stu;
DB.arrStu.clear();
DB.arrStu = IOStreamStudent.readFromFile();
DB.arrStu.set(Login.searchStudent(), newstu);
IOStreamStudent.writeToFile();
jp4.add(jl_ReviseOK);
jf.setVisible(true);
}
});
}
});
jmb1revisePassword.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jp_center.removeAll();
jp_center.setLayout(new GridLayout(6,2));
jf.add(jp_center, BorderLayout.CENTER);
jl_old_password = new JLabel("原密码");
jp_old_password = new JPasswordField(20);
jl_new_password1 = new JLabel("新密码");
jpassword1 = new JPasswordField(20);
jl_new_password2 = new JLabel("再次输入新密码");
jpassword2 = new JPasswordField(20);
jb_revise_password = new JButton("保存");
jl_inpassword_err = new JLabel("密码输入错误,请重新输入");
jl_inpassword_err.setForeground(Color.red);
jl_inpassword_err.setFont(new Font("宋体",Font.ITALIC,16));
JPanel jp1 = new JPanel();
JPanel jp2 = new JPanel();
JPanel jp3 = new JPanel();
final JPanel jp4 = new JPanel();
final JPanel jp5 = new JPanel();
JPanel jp_jb = new JPanel();
jp1.add(jl_old_password);
jp1.add(jp_old_password);
jp_center.add(jp1);
jp2.add(jl_new_password1);
jp2.add(jpassword1);
jp_center.add(jp2);
jp3.add(jl_new_password2);
jp3.add(jpassword2);
jp_center.add(jp3);
jp_center.add(jp4);
jp_jb.add(jb_revise_password);
jp_center.add(jp_jb);
jp_center.add(jp5);
jf.setVisible(true);
jb_revise_password.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (String.valueOf(jp_old_password.getPassword()).equals(stu.getPassword())
&& (!(String.valueOf(jpassword2.getPassword())).equals(""))
&& ((String.valueOf(jpassword1.getPassword())).equals(String.valueOf(jpassword2.getPassword())))) {
stu.setPassword(String.valueOf(jpassword2.getPassword()));
Student newstu = stu;
DB.arrStu.clear();
DB.arrStu = IOStreamStudent.readFromFile();
DB.arrStu.set(Login.searchStudent(), newstu);
IOStreamStudent.writeToFile();
jp5.removeAll();
jp5.add(new JLabel("修改密码成功"));
jf.setVisible(true);
} else {
jp4.removeAll();
jp4.add(jl_inpassword_err);
jf.setVisible(true);
}
}
}); 
}
});
jmb2find.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("查看所有成绩");
jp_center.removeAll();
jp_center.setLayout(new GridLayout());
scrollPane = new JScrollPane();
jp_center.add(scrollPane);
jf.add(jp_center, BorderLayout.CENTER);
table = new JTable(); //创建一个表显示数据
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
table.setFont(new Font("微软雅黑", Font.PLAIN, 14));
table.setRowHeight(30);
JTableHeader header = table.getTableHeader(); // 获取 JTable 的头的对象
header.setFont(new Font("微软雅黑", Font.PLAIN, 16));
header.setPreferredSize(new Dimension(header.getWidth(), 35)); // 设置此组件的首选大小
scrollPane.setViewportView(table);
model = (DefaultTableModel) table.getModel();
model.setColumnIdentifiers(new Object[] { "课程编号", "课程名", "成绩","任课老师" });
CourseManage.findOneStudentAllCourseMark(stu);
jf.setVisible(true);
}
});
}
}

看图,顺便把学生信息修改。

这里写图片描述

这里成绩是没有的,因为老师还没有分配科目。

这里写图片描述

2.老师的显示界面

老师这里包含了个人信息显示和修改,修改学生成绩和查看所有学生成绩

package com.file;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
public class TeacherLogin {
static JFrame jf;
JLabel jl_name,jl11,jl_age,jl21,jl_sex,jl31,jl4,jl_course,jl_old_password,jl_new_password1,jl_new_password2,jl_inpassword_err;
JTextField jt_name,jt_age,jt_sex;
JPasswordField jp_old_password,jpassword1,jpassword2;
JPanel jp1,jp2,jp3,jp4,jp_jb;
static JPanel jp_center,jp_south;
JPanel jp_course;
JButton jb,jb_revise,jb_revise_password;
static JScrollPane scrollPane;
static JTable table;
static DefaultTableModel model;
JMenuBar jmb;
JMenuItem jmb1find,jmb2find,jmb2revise,jmb1revisePassword;
JMenu jmb1,jmb2;
public TeacherLogin(){}
public TeacherLogin(final Teacher tea){ 
jf = new JFrame(tea.getId()+" 老师,您好!");
jf.setSize(1000,700);
jf.setLocation(800,100);
jf.setLayout(new BorderLayout(0,0));
Icon img = new ImageIcon("tu2.jpg");
JLabel jl = new JLabel(img);
jf.add(jl,BorderLayout.NORTH); 
jmb = new JMenuBar();
jf.setJMenuBar(jmb); 
JMenu jmb1 = new JMenu("个人信息");
jmb.add(jmb1);
jmb1find = new JMenuItem("查看个人信息");
jmb1.add(jmb1find);
jmb1revisePassword = new JMenuItem("修改账户密码");
jmb1.add(jmb1revisePassword); 
JMenu jmb2 = new JMenu("学生成绩");
jmb.add(jmb2);
jmb2find = new JMenuItem("查看所有");
jmb2.add(jmb2find);
jmb2revise = new JMenuItem("修改成绩");
jmb2.add(jmb2revise);
jp_center = new JPanel();
jp_south = new JPanel();
jf.setVisible(true);
//查看并修改个人信息
jmb1find.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jp_center.removeAll();
jp_center.setLayout(new GridLayout(7,2));
jf.add(jp_center,BorderLayout.CENTER);
jl_name = new JLabel("姓名");
jt_name = new JTextField(20);
jt_name.setText(tea.getName());
jp1  =new JPanel();
jp1.add(jl_name);
jp1.add(jt_name);
jl_age = new JLabel("年龄");
jt_age = new JTextField(20);
jt_age.setText(tea.getAge());
jp2 =new JPanel();
jp2.add(jl_age);
jp2.add(jt_age);
jl_sex = new JLabel("性别");
jt_sex = new JTextField(20);
jt_sex.setText(tea.getSex());
jp3 =new JPanel();
jp3.add(jl_sex);
jp3.add(jt_sex);
if( tea.getTeaching_course() == null ){ 
jl_course = new JLabel("教授课程 "+"无");
jl_course.setForeground(Color.red);
jl_course.setFont(new Font("宋体",Font.ITALIC,16)); 
}else if(tea.getTeaching_course().equals("无")){
jl_course = new JLabel("教授课程 "+"无");
jl_course.setForeground(Color.red);
jl_course.setFont(new Font("宋体",Font.ITALIC,16)); 
} else {
jl_course = new JLabel("教授课程 "+tea.getTeaching_course().getCourseName()); 
}           
jp_course = new JPanel();
jp_course.add(jl_course);
jl4 = new JLabel("修改成功");
jp4 = new JPanel();
jb = new JButton("修改信息");
jp_jb = new JPanel();
jp_jb.add(jb);
jp_center.add(jp1);
jp_center.add(jp2);
jp_center.add(jp3); 
jp_center.add(jp_course);
jp_center.add(jp_jb);
jp_center.add(jp4);
jf.setVisible(true);
jb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {    
System.out.println(tea.toString());
tea.setName(jt_name.getText());
tea.setAge(jt_age.getText());
tea.setSex(jt_sex.getText());
if(tea.getTeaching_course() == null){
tea.setTeaching_course(new Course());
}else{
tea.setTeaching_course(tea.getTeaching_course());
}                       
Teacher newtea = tea;
DB.arrTea.clear();
DB.arrTea = IOStreamTeacher.readFromFile();
DB.arrTea.set(Login.searchTeacher(),newtea);
IOStreamTeacher.writeToFile(); 
jp4.add(jl4);
jf.setVisible(true);
}                                       
});
}
});
//修改密码
jmb1revisePassword.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jp_center.removeAll();
jp_center.setLayout(new GridLayout(6,2));
jf.add(jp_center, BorderLayout.CENTER);
jl_old_password = new JLabel("原密码");
jp_old_password = new JPasswordField(20);
jl_new_password1 = new JLabel("新密码");
jpassword1 = new JPasswordField(20);
jl_new_password2 = new JLabel("再次输入新密码");
jpassword2 = new JPasswordField(20);
jb_revise_password = new JButton("保存");
jl_inpassword_err = new JLabel("密码输入错误,请重新输入");
jl_inpassword_err.setForeground(Color.red);
jl_inpassword_err.setFont(new Font("宋体",Font.ITALIC,16));
JPanel jp1 = new JPanel();
JPanel jp2 = new JPanel();
JPanel jp3 = new JPanel();
final JPanel jp4 = new JPanel();
final JPanel jp5 = new JPanel();
JPanel jp_jb = new JPanel();
jp1.add(jl_old_password);
jp1.add(jp_old_password);
jp_center.add(jp1);
jp2.add(jl_new_password1);
jp2.add(jpassword1);
jp_center.add(jp2);
jp3.add(jl_new_password2);
jp3.add(jpassword2);
jp_center.add(jp3);
jp_center.add(jp4);
jp_jb.add(jb_revise_password);
jp_center.add(jp_jb);
jp_center.add(jp5);
jf.setVisible(true);
jb_revise_password.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (String.valueOf(jp_old_password.getPassword()).equals(tea.getPassword())
&& (!(String.valueOf(jpassword2.getPassword())).equals(""))
&& ((String.valueOf(jpassword1.getPassword())).equals(String.valueOf(jpassword2.getPassword())))) {
tea.setPassword(String.valueOf(jpassword2.getPassword()));
Teacher newstu = tea;
DB.arrTea.clear();
DB.arrTea = IOStreamTeacher.readFromFile();
DB.arrTea.set(Login.searchTeacher(), newstu);
IOStreamTeacher.writeToFile();
jp5.removeAll();
jp5.add(new JLabel("修改密码成功"));
jf.setVisible(true);
} else {
jp4.removeAll();
jp4.add(jl_inpassword_err);
jf.setVisible(true);
}
}
}); 
}
});
//查看所有学生这门课成绩
jmb2find.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("查看所有学生成绩");
TeacherLogin.Excel();
model = (DefaultTableModel) table.getModel();
model.setColumnIdentifiers(new Object[] { "学生学号","学生姓名","《"+tea.getTeaching_course().getCourseName()+"》 成绩"});
CourseManage.allStudentOneCourse_mark(tea);
jf.setVisible(true);
}
});
//老师给学生打分
jmb2revise.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("修改成绩");
if (tea.getTeaching_course().courseName == null
|| tea.getTeaching_course().courseName.equals("null")) {
JOptionPane.showMessageDialog(null, "请先让教务人员为您分配科目", "",
JOptionPane.WARNING_MESSAGE);
} else {
TeacherLogin.Excel();
model = (DefaultTableModel) table.getModel();
model.setColumnIdentifiers(new Object[] { "学生学号","学生姓名","《"+tea.getTeaching_course().getCourseName()+"》 成绩"});
CourseManage.allStudentOneCourse_mark(tea); 
jb_revise = new JButton("修改成绩");
jp_south.add(jb_revise);
jf.add(jp_south,BorderLayout.SOUTH);
jf.setVisible(true);
jb_revise.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
CourseManage.teacherReviseCourse_mark(tea); 
}
}); 
}
}
});
}
//表格
public static void Excel(){
jp_center.removeAll();
jp_south.removeAll();
jp_center.setLayout(new GridLayout());
scrollPane = new JScrollPane(); 
jp_center.add(scrollPane);
jf.add(jp_center,BorderLayout.CENTER);
table = new JTable();
// 将表的选择模式设置为只允许单个选择、单个连续间隔选择或多间隔选择。 
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
table.setShowGrid(true);
table.setFont(new Font("微软雅黑", Font.PLAIN, 14));
table.setRowHeight(30);
JTableHeader header = table.getTableHeader(); // 获取 JTable 的头的对象
header.setFont(new Font("微软雅黑", Font.PLAIN, 16));
header.setPreferredSize(new Dimension(header.getWidth(), 35)); // 设置此组件的首选大小
scrollPane.setViewportView(table);
}
}

看图,显示信息,因为教务人员没有给老师分配教授的科目,所以科目一栏为无。

这里写图片描述

查看学生成绩,这里只有注册的学生1,点击修改成绩,显示错误,因为教务人员没有给老师分配教授的科目。

这里写图片描述

3.教务人员界面

有菜单选项自己信息,学生(查看,修改,删除),老师(查看,修改,删除)。

package com.file;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
public class ManageLogin {
static JFrame jf;
JLabel jl_name, jl11, jl21,jl31, jl4,jl_password;
JPasswordField jpassword;
JTextField jt_name;
JPanel jp1, jp2, jp4, jp_jb, jp_img,jp_scroll;
static JPanel jp_center,jp_south;
JButton jb,jb_revise_teacher;
static JTable table;
static JScrollPane scrollPane;
static DefaultTableModel model;
JMenuBar jmb;
JMenuItem jmb1findStudentMessage,jmb2findTeacherMessage,jmb1reviseStudentMessage,jmb2revise,jmb0message,jmb1deleteStudent,jmb2deleteTeacher;
public ManageLogin(final Manage man) {
jf = new JFrame("欢迎 " + man.getId() + " 教务管理员,你好!");
jf.setSize(1000, 700);
jf.setLocation(800, 100);
jf.setLayout(new BorderLayout(0,0));
Icon img = new ImageIcon("tu2.jpg");
jf.add(new JLabel(img),BorderLayout.NORTH);
jmb = new JMenuBar();
jf.setJMenuBar(jmb); 
JMenu jmb0 = new JMenu("我的信息");
jmb.add(jmb0);
jmb0message = new JMenuItem("查看和修改");
jmb0.add(jmb0message); 
JMenu jmb1 = new JMenu("学生管理");
jmb.add(jmb1);
jmb1findStudentMessage = new JMenuItem("查看学生信息");
jmb1.add(jmb1findStudentMessage); 
jmb1reviseStudentMessage = new JMenuItem("修改学生信息");
jmb1.add(jmb1reviseStudentMessage);
jmb1deleteStudent = new JMenuItem("删除学生信息");
jmb1.add(jmb1deleteStudent);
JMenu jmb2 = new JMenu("老师管理");
jmb.add(jmb2);
jmb2findTeacherMessage = new JMenuItem("查看老师信息");
jmb2.add(jmb2findTeacherMessage);
jmb2revise = new JMenuItem("修改老师信息");
jmb2.add(jmb2revise);
jmb2deleteTeacher = new JMenuItem("删除老师信息");
jmb2.add(jmb2deleteTeacher);
jp_center = new JPanel();//中心的面板
jp_south = new JPanel();//下方的面板
jf.setVisible(true);
//查看和修改自己信息
jmb0message.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jp_center.removeAll();
jp_center.setLayout(new GridLayout(7,2));
jf.add(jp_center,BorderLayout.CENTER);
jl_name = new JLabel("姓名");
jt_name = new JTextField(20);
jt_name.setText(man.getName());
jp1 = new JPanel();
jp1.add(jl_name);
jp1.add(jt_name);
jl_password = new JLabel("密码");
jpassword = new JPasswordField(20);
jpassword.setText(man.getPassword());
jp2 = new JPanel();
jp2.add(jl_password);
jp2.add(jpassword);
jl4 = new JLabel("修改成功");
jp4 = new JPanel();
jb = new JButton("修改信息");
jp_jb = new JPanel();
jp_jb.add(jb);
jp_center.add(jp1);
jp_center.add(jp2);
jp_center.add(jp_jb);
jp_center.add(jp4);
jf.setVisible(true);
jb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
man.setName(jt_name.getText());
man.setPassword(String.valueOf(jpassword.getPassword()));
Manage newman = man;
DB.arrMan.clear();
DB.arrMan = IOStreamManage.readFromFile();
DB.arrMan.set(Login.searchManage(), newman);
IOStreamManage.writeToFile();
jp4.add(jl4);
jf.setVisible(true);
}
});
}
});
//查看学生信息
jmb1findStudentMessage.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("查看所有学生信息");
ManageLogin.Excel();
model = (DefaultTableModel) table.getModel();
model.setColumnIdentifiers(new Object[] { "用户名", "姓名", "年龄","性别" });
CourseManage.findAllStudentMessage();
jp_center.add(scrollPane);
jf.setVisible(true);
}
});
//修改学生信息
jmb1reviseStudentMessage.addActionListener(new ActionListener() {           
public void actionPerformed(ActionEvent e) {
CourseManage.jmb1reviseStudentMessage(); 
}
});
//删除学生
jmb1deleteStudent.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
CourseManage.deleteStudent(); 
}
});
//查看老师信息
jmb2findTeacherMessage.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("查看所有老师信息");
ManageLogin.Excel();
model = (DefaultTableModel) table.getModel();
model.setColumnIdentifiers(new Object[] { "用户名", "姓名", "年龄", "性别", "课程编号" ,"教授课程" });
CourseManage.findAllTeacherMessage();
jp_center.add(scrollPane);
jf.setVisible(true);
}
});
//修改老师信息
jmb2revise.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ManageLogin.Excel();
model = (DefaultTableModel) table.getModel();
model.setColumnIdentifiers(new Object[] { "用户名", "姓名", "年龄","性别", "课程编号", "教授课程" });
CourseManage.findAllTeacherMessage(); 
jb_revise_teacher = new JButton("修改");
jp_south.add(jb_revise_teacher);
jf.add(jp_south,BorderLayout.SOUTH);
jf.setVisible(true);
jb_revise_teacher.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
CourseManage.teacherReviseJudge(); 
}
}); 
}
});
//删除老师
jmb2deleteTeacher.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
CourseManage.deleteTeacher(); 
}
}); 
}
//表格模型
public static void Excel(){
jp_center.removeAll();
jp_south.removeAll();
jp_center.setLayout(new GridLayout());
scrollPane = new JScrollPane();
jp_center.add(scrollPane);
jf.add(jp_center, BorderLayout.CENTER);
jf.setVisible(true);
table = new JTable();
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
table.setFont(new Font("微软雅黑", Font.PLAIN, 14));
table.setRowHeight(30);
JTableHeader header = table.getTableHeader(); // 获取 JTable 的头的对象
header.setFont(new Font("微软雅黑", Font.PLAIN, 16));
header.setPreferredSize(new Dimension(header.getWidth(), 35)); // 设置此组件的首选大小
scrollPane.setViewportView(table);
}
}

查看学生

这里写图片描述

修改学生信息

这里写图片描述

删除学生

这里写图片描述

查看老师,此时老师没有安排课程

这里写图片描述

修改老师信息,顺便安排课程,这里安排老师1上《高等数学》,这里要是想要修改别的都可以加

这里写图片描述

修改之后,老师科目已经安排,老师1教高等数学

这里写图片描述

这时登录老师1的界面给学生修改成绩,科目栏已经变为《高等数学》。

这里写图片描述

登录学生1端口查看成绩

这里写图片描述

工具处理类

package com.file;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class CourseManage {
static JFrame jf ;
static JPanel jp ;
static JLabel jl ;
static JButton jb ;
static JTextField jt_name,jt_id,jt_pass; 
//老师查找所有学生单科成绩
public static void allStudentOneCourse_mark(Teacher tea) {
ArrayList<Student> arr = IOStreamStudent.readFromFile();
Iterator<Student> itarr = arr.iterator();
String course_mark = null;// 查找的课程
while (itarr.hasNext()) {       
Student stu = itarr.next(); //一个循环内不能存在2个.next()方法
String id = stu.getId();
String name = stu.getName();
for(int i = 0;i<stu.arr_course.size();i++){ 

if (tea.getTeaching_course().getCourseName()
.equals(stu.arr_course.get(i).getCourseName())) {
course_mark = stu.arr_course.get(i).getCourseMark();
break;
}
}       
TeacherLogin.model.addRow(new Object[] { id, name, course_mark });
TeacherLogin.table.setModel(TeacherLogin.model);
}
}
//老师修改学生单科成绩
public static void teacherReviseCourse_mark(Teacher tea) {
if (tea.getTeaching_course().courseName == null
|| tea.getTeaching_course().courseName.equals("null")) {
JOptionPane.showMessageDialog(null, "请先让教务人员为您分配科目", "",
JOptionPane.WARNING_MESSAGE);
} else {
int index = 0;
String student_course_mark = null;
Course newcourse = null;
index = TeacherLogin.table.getSelectedRow();
if (index == -1) {
JOptionPane.showMessageDialog(null, "请选择要修改成绩的学生", "",
JOptionPane.WARNING_MESSAGE);
} else {
String id = (String) TeacherLogin.table.getValueAt(index, 0);
DB.arrStu.clear();
DB.arrStu = IOStreamStudent.readFromFile();
student_course_mark = JOptionPane.showInputDialog("成绩=", 0);
for (int i = 0; i < DB.arrStu.size(); i++) { 

if (id.equals(DB.arrStu.get(i).getId())) {
if (DB.arrStu.get(i).arr_course.size() == 0) {       //成绩集合为空,添加第一个数据
newcourse = new Course(tea.getTeaching_course()
.getCourseId(), tea.getTeaching_course()
.getCourseName(), student_course_mark);
DB.arrStu.get(i).arr_course.add(newcourse);
} else {
for (int j = 0; j < DB.arrStu.get(i).arr_course.size(); j++) { //这门课程已经创建,进行修改
if (DB.arrStu.get(i).arr_course.get(j).getCourseName()
.equals(tea.getTeaching_course().getCourseName())) {
newcourse = new Course(
tea.getTeaching_course()
.getCourseId(), tea
.getTeaching_course()
.getCourseName(),
student_course_mark);
DB.arrStu.get(i).arr_course.set(j,newcourse);
break;
} else {        //这门课程没有创建时,进行添加
newcourse = new Course(tea.getTeaching_course()
.getCourseId(), tea.getTeaching_course()
.getCourseName(), student_course_mark);
DB.arrStu.get(i).arr_course.add(newcourse);
}
}
}
IOStreamStudent.writeToFile();
TeacherLogin.model.removeRow(TeacherLogin.table.getSelectedRow());
TeacherLogin.model.insertRow(index,new Object[] { DB.arrStu.get(i).getId(),DB.arrStu.get(i).getName(),student_course_mark });
TeacherLogin.table.setModel(TeacherLogin.model);
break;
}
}
}
}
}
//一个学生的所有成绩
public static void findOneStudentAllCourseMark(Student stu) {
ArrayList<Student> arrStu = IOStreamStudent.readFromFile();
Iterator<Student> it = arrStu.iterator(); 
String teacher_name  = null;
if(stu.arr_course == null) {
JOptionPane.showMessageDialog(null, "无成绩,请等待老师给定", "",JOptionPane.WARNING_MESSAGE);
} else {
ArrayList<Teacher> arrTea = IOStreamTeacher.readFromFile();
while(it.hasNext()) {
Student newstu = it.next();
if(newstu.getId().equals(stu.getId())) {
for(int i = 0;i<newstu.arr_course.size();i++) { 
String course_id = newstu.arr_course.get(i).getCourseId();
String course_name = newstu.arr_course.get(i).getCourseName();
String course_mark = newstu.arr_course.get(i).getCourseMark(); 
for(int j = 0;j<arrTea.size();j++) { 

if(course_name.equals(arrTea.get(j).getTeaching_course().getCourseName())) {
teacher_name = arrTea.get(j).getName();
StudentLogin.model.addRow(new Object[] {course_id,course_name,course_mark,teacher_name});
StudentLogin.table.setModel(StudentLogin.model); 
}
}                   
}               
break;
}           
}       
}
} 
//查看所有学生信息
public static void findAllStudentMessage(){
ArrayList<Student> arr = IOStreamStudent.readFromFile();
Iterator<Student> it = arr.iterator();//next()方法不能在循环内使用2次
while(it.hasNext()){    
Student stu = it.next();
String id = stu.getId();
String name = stu.getName();
String sex = stu.getSex();
String age = stu.getAge(); 
ManageLogin.model.addRow(new Object[] {id,name,sex,age});
ManageLogin.table.setModel(ManageLogin.model); 
}   
}
//修改学生信息
public static void jmb1reviseStudentMessage(){
jf = new JFrame("修改学生信息");
jf.setLocation(1000, 200);
jf.setSize(400, 300);
jf.setLayout(new GridLayout(4, 1));
jp = new JPanel();
jl = new JLabel("输入要修改的用户名:");
jt_id = new JTextField(15);
jp.add(jl);
jp.add(jt_id);
jf.add(jp);
jl = new JLabel("用户密码:");
jt_pass = new JTextField(15);
jp = new JPanel();
jp.add(jl);
jp.add(jt_pass);
jf.add(jp);
jb = new JButton("确定修改");
jp = new JPanel();
jp.add(jb);
jf.add(jp);
jf.setVisible(true);
jb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jf.dispose(); 
DB.arrStu.clear();
DB.arrStu = IOStreamStudent.readFromFile();
for(int i = 0;i<DB.arrStu.size();i++){ 

if(DB.arrStu.get(i).getId().equals(jt_id.getText())){
DB.arrStu.get(i).setId(jt_id.getText());
DB.arrStu.get(i).setPassword(jt_pass.getText()); 
IOStreamStudent.writeToFile(); 
}
}
}
});
} 
//删除学生账户
public static void deleteStudent(){
String id = JOptionPane.showInputDialog("要删除的用户名", 0);
DB.arrStu.clear();
DB.arrStu = IOStreamStudent.readFromFile();
for(int i = 0;i<DB.arrStu.size();i++){ 

if(DB.arrStu.get(i).getId().equals(id)){
DB.arrStu.remove(i); 
IOStreamStudent.writeToFile(); 
}
}
}
//删除老师账户
public static void deleteTeacher(){
String id = JOptionPane.showInputDialog("要删除的用户名", 0);
DB.arrTea.clear();
DB.arrTea = IOStreamTeacher.readFromFile();
for(int i = 0;i<DB.arrTea.size();i++){ 

if(DB.arrTea.get(i).getId().equals(id)){
DB.arrTea.remove(i); 
IOStreamTeacher.writeToFile(); 
}
}
}
//查看所有老师信息
@SuppressWarnings("unused")
public static void findAllTeacherMessage() {
if (IOStreamTeacher.file.length() == 0) {
ManageLogin.model.addRow(new Object[] { "无" });
ManageLogin.table.setModel(ManageLogin.model);
} else {
ArrayList<Teacher> arr = IOStreamTeacher.readFromFile();
Iterator<Teacher> it = arr.iterator();
while (it.hasNext()) {
Teacher tea = it.next();
String id = tea.getId();
String name = tea.getName();
String sex = tea.getSex();
String age = tea.getAge();
if (tea.getTeaching_course() == null) {
ManageLogin.model.addRow(new Object[] { id, name, sex, age,
"无","无" });
ManageLogin.table.setModel(ManageLogin.model);
} else {
String teaching_course_id = tea.getTeaching_course()
.getCourseId();
String teaching_course_name = tea.getTeaching_course().getCourseName();
ManageLogin.model.addRow(new Object[] { id, name, sex, age,
teaching_course_id, teaching_course_name });
ManageLogin.table.setModel(ManageLogin.model);
}
}
}
}
//教务修改老师信息
//第一步教务修改老师信息判断条件
public static void teacherReviseJudge() {
int index = 0;
index = ManageLogin.table.getSelectedRow();
if (index == -1) {
JOptionPane.showMessageDialog(null, "请选择要修改的老师", "",
JOptionPane.WARNING_MESSAGE);
} else {
CourseManage.teacherReviseFrame(index);
}
}
//第二步教务修改老师信息面板
public static void teacherReviseFrame(final int index) {
jf = new JFrame("修改老师信息");
jf.setLocation(1000, 200);
jf.setSize(300, 400);
jf.setLayout(new GridLayout(4, 1));
JPanel jp1 = new JPanel();
JPanel jp2 = new JPanel();
JPanel jp3 = new JPanel();
JPanel jp4 = new JPanel();
jl = new JLabel("修改用户密码:");
jt_pass = new JTextField(15);
jp1.add(jl);
jp1.add(jt_pass);
jf.add(jp1);
jl = new JLabel("安排课程编号");
jt_id = new JTextField(15);
jp2.add(jl);
jp2.add(jt_id);
jf.add(jp2);
jl = new JLabel("课程名称");
jt_name = new JTextField(15);
jp3.add(jl);
jp3.add(jt_name);
jf.add(jp3);
jb = new JButton("确定修改");
jp4.add(jb);
jf.add(jp4);
jf.setVisible(true);
jb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jf.dispose();
CourseManage.teacherRevise(index);
}
});
}
//第三步教务修改老师信息
public static void teacherRevise(int index) {
String teacher_course_id = null;
String teacher_course_name = null;
String id = (String) ManageLogin.table.getValueAt(index, 0);
DB.arrTea.clear();
DB.arrTea = IOStreamTeacher.readFromFile();
teacher_course_id = jt_id.getText();
teacher_course_name = jt_name.getText();
for (int i = 0; i < DB.arrTea.size(); i++) { 

if (id.equals(DB.arrTea.get(i).getId())) {
if(!(jt_pass.getText().equals(""))){
DB.arrTea.get(i).setPassword(jt_pass.getText());
}           
DB.arrTea.get(i).getTeaching_course()
.setCourseName(teacher_course_name);
DB.arrTea.get(i).getTeaching_course()
.setCourseId(teacher_course_id);
IOStreamTeacher.writeToFile();
ManageLogin.model.removeRow(index);
ManageLogin.model.insertRow(index, new Object[] {
DB.arrTea.get(i).getId(), DB.arrTea.get(i).getName(),
DB.arrTea.get(i).getAge(), DB.arrTea.get(i).getSex(),
teacher_course_id, teacher_course_name });
ManageLogin.table.setModel(ManageLogin.model);
break;
}
}
}
}

主类

package com.file;
/*2017年12月 * 《教学管理系统》有学生,教师,教务3个角色。 * 只有一个系统管理员,用来添加学生,教师和教务人员帐号,帐号id为111,密码为111,请妥善保存。 * */
public class MainText {
public static void main(String[] args) {
new Login();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/158439.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 挖矿病毒处理记录「建议收藏」

    挖矿病毒处理记录「建议收藏」wnTKYg进程发现 执行top 会发现此进程。wnTKYg应该是利用redis漏洞入侵,加了定时任务,每一段时间向固定地址发送请求,执行挖矿程序后导致cpu和带宽升高,kill进程会自动重启。检查authorized_keys、known_hosts文件[root@zfr~]#cd/root/.ssh[root@zfr~]#catauth…

  • java删除文件,重命名文件

    java删除文件,重命名文件在做项目时,遇到需要对文件做一些删除重命名等操作。基于java语言,保存代码段如下。//文件重命名,缩小数据量,将对应的文件列为一张2维的表,方便对摘要文档等的操作 publicstaticbooleanrenameFile(Stringpath,Stringoldname,Stringnewname){ Fileoldfile=newFile(path+oldnam

  • 至少使用两种方式运行pycharm_python还是java

    至少使用两种方式运行pycharm_python还是java要!!!下了pycharm但是没下载python也是运行不了的原文链接:Python环境搭建—安利Python小白的Python和Pycharm安装详细教程-知乎工欲善其事,必先利其器。首先我们先来安装Python,在这里安利一下:其实在没有安装Python之前也可以安装Pycharm的,两者并没有什么冲突关系。但是话说回来,如果没有Python编译器,那么Pycharm其实只是个驱壳,即便你编好程序之后,也并不能运行。举个栗子,Python相当于子弹,Pycharm相当于手枪,如果手

  • JAVA链表中的回文链表结构

    JAVA链表中的回文链表结构作为一个java初学者,最近遇到了回文链表结构这个难题,经过一番学习总算搞清楚个大概。先来说一下什么是回文链表,会问链表在我们生活中经常能够遇到。会问链表的结构就是例如:1->2->3->2->1。我们将它反转过来还是与原链表相同,这种就称为回文结构。具体方法:1.先找到链表的中间位置2.然后将中间位置的链表反转3.从两边向中间遍历代码如图classNode{publi…

  • java中定义常量_形参可以是表达式吗

    java中定义常量_形参可以是表达式吗如here所述,javac和其他Java编译器可能为条件为“ConstantExpression”的if语句提供代码消除功能.如果我的代码使用依赖于不同包中定义的其他常量表达式的常量表达式,那么这将如何影响?例如,假设我在相应的指定包中有以下类:packagefoo;publicclassFoo{publicstaticfinalbooleanCONDITION=false;…

  • 302状态码解决方法_常见的状态码有哪些

    302状态码解决方法_常见的状态码有哪些http状态码301和302详解及区别

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号