您好,欢迎来到华拓科技网。
搜索
您的当前位置:首页JAVA课程设计《学生成绩管理系统》代码

JAVA课程设计《学生成绩管理系统》代码

来源:华拓科技网

JAVA课程设计《学生成绩管理系统》代码

课设要求:
1.带有图形界面(20%);
2.系统至少能够管理100名学生,每一个学生姓名、学号、班级等个人信息;还有高等数学、大学英语、计算机导论、体育等四项成绩(20%);
3.能够录入、修改、查询、删除任意学生信息(20%);
4.可以查询某课程所有不及格学生名单(20%);
5.能够将学生信息保存到硬盘,下次打开程序时还能够从硬盘读取(20%)。

Administrator类

package edu;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class Administrator implements Serializable {
    //接入接口序列化
    // 定义 serialVersionUID 以确保序列化的兼容性
    private static final long serialVersionUID = 1L;
    /*管理员类,有私有变量账号和密码,
    有个list集合存管理员信息,
    能存储/加载信息*/
    public static List<Administrator> Administrators=new ArrayList<>();
    private String account;//管理员用户名
    private String password;

    public String getAccount() {
        return account;
    }

    public String getPassword(){
        return password;
    }

    public Administrator(String account, String password){
        this.account=account;
        this.password=password;
    }//构造函数

    public static void addAdministrator(Administrator administrator){
        Administrators.add(administrator);
    }//往List集合加成员

    public static Administrator findAdministrator(String account){
        for(Administrator administrator:Administrators){
            if(administrator.getAccount().equals(account)){
                return administrator;
            }
        }
        return null;
    }

    public static boolean isRegistered(String account){
        return findAdministrator(account)!=null;
    }//找管理员是否注册过

    public static boolean verifyPassword(String account,String password){
        Administrator administrator = findAdministrator(account);
        return administrator!=null&&administrator.getPassword().equals(password);
    }

    public static void saveAdministratorsToFile(String filename) throws IOException{
        try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filename))) {
            oos.writeObject(Administrators);// 将静态的管理员列表序列化并写入到指定文件
        }
    }//把集合序列化到文件

    public static void loadAdministratorsFromFile(String filename) throws IOException, ClassNotFoundException {
        try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(filename))) {
            Administrators = (List<Administrator>) ois.readObject();//反序列化到新集合
        }
    }//把文件信息反序列化到集合
}


GenerateStudents类

package edu;

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class GenerateStudents {

    public static void main(String[] args) {
        List<IStudent> students = new ArrayList<>();
        Random random = new Random();

        String[] names = {"张三", "李四", "王五", "赵六", "孙七", "周八", "吴九", "郑十"};
        String[] sexes = {"男", "女"};
        String[] classnames = {"一班", "二班", "三班", "四班"};

        for (int i = 0; i < 100; i++) {
            String name = names[random.nextInt(names.length)] + (i + 1);
            String sex = sexes[random.nextInt(sexes.length)];
            int age = 18 + random.nextInt(5);
            String id = "S" + (1000 + i);
            String classname = classnames[random.nextInt(classnames.length)];
            double math = 50 + random.nextDouble() * 50;
            double english = 50 + random.nextDouble() * 50;
            double computer = 50 + random.nextDouble() * 50;
            double pe = 50 + random.nextDouble() * 50;

            students.add(new Student(name, sex, age, id, classname, math, english, computer, pe));
        }

        try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("students.dat"))) {
            oos.writeObject(students);
            System.out.println("100个学生信息已生成并保存到 students.dat 文件中");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

IStudent接口

package edu;

public interface IStudent {
    //这里抽象/接口都可以,主要是为了写一个接口
    //主要有学生信息的方法
    String getName();
    String getSex();
    int getAge();
    String getId();
    String getClassName();
    double getMath();
    double getEnglish();
    double getComputer();
    double getPe();

    void setName(String name);
    void setSex(String sex);
    void setAge(int age);
    void setId(String studentId);
    void setClassName(String className);
    void setMath(double math);
    void setEnglish(double english);
    void setComputer(double computer);
    void setPe(double pe);
}

IStudentManager接口

package edu;

import java.io.IOException;
import java.util.List;

public interface IStudentManager {
    //添加删除等等管理学生的接口
    void addStudent(IStudent student);//传接口,松耦合
    void removeStudent(String studentId);
    IStudent findStudent(String studentId);
    List<IStudent> getAllStudents();
    List<IStudent> getFailingStudents(String subject);
    void saveToFile(String filename) throws IOException;
    void loadFromFile(String filename) throws IOException, ClassNotFoundException;
}

LoginJframe类

package edu;

import javax.swing.*;
import java.awt.*;
import java.io.IOException;

public class LoginJframe extends JFrame{
    /* 登陆界面
       管理员可以凭借特殊密码登录
       密码为“账号+xnxx”
       如果没有注册过就自动注册记录 */
    private static final String FILENAME = "administrator.dat";//管理员信息保存文件

    public LoginJframe(){
        // 获取内容面板
        Container container = this.getContentPane();
        // 设置内容面板的布局管理器为 FlowLayout,让组件自动排列
        container.setLayout(new FlowLayout());

        //建立文本字段,输入账号密码
        JTextField accountField = new JTextField(16);
        JTextField passwordField = new JTextField(16);

        //加载管理员信息
        loadAdministrators();

        while(true){
            Object[] message= {
                    "账号:",accountField,
                    "密码",passwordField,
            };
            //显示确认对话框,用户可以选择确定或取消
            int option = JOptionPane.showConfirmDialog(null, message, "西南小学学生成绩管理系统", JOptionPane.OK_CANCEL_OPTION);
            //对话框居中,加载message输入框,标题,显示确定和取消选项
            if(option==JOptionPane.OK_OPTION){
                //确认,然后读取输入信息
                String account = accountField.getText();
                String password = passwordField.getText();
                String expectedpassword = account + "xnxx";

                if(Administrator.isRegistered(account)){
                    if(Administrator.verifyPassword(account,password)){
                        JOptionPane.showMessageDialog(null,"欢迎管理员"+account,"西南小学学生成绩管理系统",JOptionPane.INFORMATION_MESSAGE);
                        new MainJframe();
                        this.dispose();//关闭当前窗口
                        break;//退出循环
                    }else{
                        // 密码错误,显示错误消息并清空输入框
                        JOptionPane.showMessageDialog(null, "密码错误,请重新输入", "错误警告!!!", JOptionPane.ERROR_MESSAGE);
                        accountField.setText("");
                        passwordField.setText("");
                    }
                }else{
                    //还没注册,自动注册
                    if(expectedpassword.equals(password)){
                        //用户输入密码符合规定密码格式,认为是新管理员,自动注册账号
                        Administrator.addAdministrator(new Administrator(account,password));
                        JOptionPane.showMessageDialog(null, "注册成功,欢迎管理员 " + account ,"西南小学学生成绩管理系统",JOptionPane.INFORMATION_MESSAGE);
                        saveAdministrators();//保存新用户信息
                        new MainJframe();
                        this.dispose();//关闭当前窗口
                        break;//退出循环
                    }else{
                        //密码不符合预期
                        JOptionPane.showMessageDialog(null, "非法注册信息", "注册失败", JOptionPane.ERROR_MESSAGE);
                        accountField.setText("");
                        passwordField.setText("");
                    }
                }
            }else{
                break;//用户点击取消
            }
        }
    }

    private void loadAdministrators(){
        try{
            Administrator.loadAdministratorsFromFile(FILENAME);
            //对Administrator类进行调用
        } catch (IOException | ClassNotFoundException e) {
            System.out.println("Warning:加载管理员信息失败,请尝试重新进入系统");
        }
    }//加载管理员信息

    private void saveAdministrators(){
        try{
            Administrator.saveAdministratorsToFile(FILENAME);
        }catch (IOException e) {
            System.out.println("Warning:保存管理员数据失败:" + e.getMessage());
        }
    }
}

Main类

package edu;

import javax.swing.*;

public class Main {
    public static void main(String[] args) {
        new LoginJframe();
    }
}

MainJframe类

package edu;

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.io.IOException;
import java.util.List;
import java.util.Locale;

public class MainJframe extends JFrame {

    private static IStudentManager studentManager;
    private static JTable jTable;
    private static DefaultTableModel tableModel;

    public MainJframe(){

        studentManager = new StudentManager();

        this.setTitle("西南中学学生成绩管理系统");
        //直接退出
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        this.setSize(800,600);

        this.setLocationRelativeTo(null);
        //表格表头
        String[] headers = {"姓名","性别","年龄", "学号", "班级", "高等数学", "大学英语", "计算机导论", "体育"};
        tableModel = new DefaultTableModel(headers,0);//只有个表头没有行
        jTable = new JTable(tableModel);//实例化表格

        JScrollPane jScrollPane = new JScrollPane(jTable);
        jScrollPane.setPreferredSize(new Dimension(700,500));
//        jScrollPane.setVisible(true);//添加滚动轮


        JPanel jPanel=new JPanel();
        jPanel.setLayout(new BorderLayout());//五分界面

        JButton addButton = new JButton("添加学生");
        JButton deleteButton = new JButton("删除学生");
        JButton updateButton = new JButton("更新学生");
        JButton searchButton = new JButton("查询学生");
        JButton failingButton = new JButton("查询不及格学生");
        JButton saveButton = new JButton("保存到文件");
        JButton loadButton = new JButton("从文件加载");
        //操作按钮

        JPanel buttonPanel = new JPanel();
        buttonPanel.setLayout(new GridLayout());
        buttonPanel.add(addButton);
        buttonPanel.add(deleteButton);
        buttonPanel.add(updateButton);
        buttonPanel.add(searchButton);
        buttonPanel.add(failingButton);
        buttonPanel.add(saveButton);
        buttonPanel.add(loadButton);

        // 将表格和按钮面板添加到主面板
        //jPanel.add(new JScrollPane(jTable),BorderLayout.CENTER);//表格放中间
        jPanel.add(jScrollPane, BorderLayout.CENTER);
        jPanel.add(buttonPanel,BorderLayout.SOUTH);//底部按钮

        addButton.addActionListener(e -> addStudent());
        deleteButton.addActionListener(e -> deleteStudent());
        updateButton.addActionListener(e -> updateStudent());
        searchButton.addActionListener(e -> searchStudent());
        failingButton.addActionListener(e -> searchFailingStudents());
        saveButton.addActionListener(e -> saveToFile());
        loadButton.addActionListener(e -> loadFromFile());

        this.add(jPanel);
        this.setVisible(true);


        Container container = this.getContentPane();
        container.setLayout(new BorderLayout());

        JLabel welcomeLabel = new JLabel("欢迎进入管理员主界面", JLabel.CENTER);
        container.add(welcomeLabel, BorderLayout.CENTER);

        this.setVisible(true);
    }

    //添加操作
    private static void addStudent(){
        JTextField nameField = new JTextField();
        JTextField sexField = new JTextField();
        JTextField ageField = new JTextField();
        JTextField idField = new JTextField();
        JTextField classnameField = new JTextField();
        JTextField mathField = new JTextField();
        JTextField englishField = new JTextField();
        JTextField computerField = new JTextField();
        JTextField peField = new JTextField();

        Object[] message = {
                "姓名:", nameField,
                "性别 (男/女):", sexField,
                "年龄:", ageField,
                "学号:", idField,
                "班级:", classnameField,
                "高等数学 (0-100):", mathField,
                "大学英语 (0-100):", englishField,
                "计算机导论 (0-100):", computerField,
                "体育 (0-100):", peField,
        };

        while(true){
            int option = JOptionPane.showConfirmDialog(null, message, "添加学生", JOptionPane.OK_CANCEL_OPTION);
            if(option==JOptionPane.OK_OPTION){
                try{
                    String sex = sexField.getText();
                    if (!sex.equals("男") && !sex.equals("女")) {
                        throw new IllegalArgumentException("性别必须为男或女");
                    }

                    double math = Double.parseDouble(mathField.getText());
                    double english = Double.parseDouble(englishField.getText());
                    double computer = Double.parseDouble(computerField.getText());
                    double pe = Double.parseDouble(peField.getText());

                    if (math < 0 || math > 100 || english < 0 || english > 100 || computer < 0 || computer > 100 || pe < 0 || pe > 100) {
                        throw new IllegalArgumentException("学生成绩必须在0到100之间");
                    }

                    IStudent student = new Student(
                        nameField.getText(),
                        sexField.getText(),
                        Integer.parseInt(ageField.getText()),
                        idField.getText(),
                        classnameField.getText(),
                        math,
                        english,
                        computer,
                        pe
                    );
                    studentManager.addStudent(student);
                    updateTable();
                    break; // 添加成功,跳出循环
                }catch (NumberFormatException e) {
                    JOptionPane.showMessageDialog(null, "请输入正确的数字格式", "错误", JOptionPane.ERROR_MESSAGE);
                } catch(IllegalArgumentException e){
                    JOptionPane.showMessageDialog(null, e.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);
                }
            }else{
                break;//取消操作,退出程序
            }
        }
    }

    //删除学生
    private static void deleteStudent(){
        String studentId = JOptionPane.showInputDialog("输入要删除的学生学号:");
        studentManager.removeStudent(studentId);
        updateTable();//更新硬盘信息
        saveToFile();
    }

    //更新学生
    private  static void updateStudent(){
        String studentId = JOptionPane.showInputDialog("输入要更新的学生学号:");
        IStudent student = studentManager.findStudent(studentId);
        if(student!=null){
            JTextField nameField = new JTextField(student.getName());
            JTextField sexField = new JTextField(student.getSex());
            JTextField ageField = new JTextField(String.valueOf(student.getAge()));
            JTextField idField = new JTextField(student.getId());
            JTextField roomField = new JTextField(student.getClassName());
            JTextField mathField = new JTextField(String.valueOf(student.getMath()));
            JTextField englishField = new JTextField(String.valueOf(student.getEnglish()));
            JTextField computerField = new JTextField(String.valueOf(student.getComputer()));
            JTextField peField = new JTextField(String.valueOf(student.getPe()));
            //把需要修改人员的信息加载到文本框

            Object[] message = {
                    "姓名:", nameField,
                    "性别 (男/女):", sexField,
                    "年龄:", ageField,
                    "学号:", idField,
                    "班级:", roomField,
                    "高等数学 (0-100):", mathField,
                    "大学英语 (0-100):", englishField,
                    "计算机导论 (0-100):", computerField,
                    "体育 (0-100):", peField,
            };
            while (true) {
                int option = JOptionPane.showConfirmDialog(null, message, "更新学生", JOptionPane.OK_CANCEL_OPTION);
                if (option == JOptionPane.OK_OPTION) {
                    try {
                        String sex = sexField.getText();
                        if (!sex.equals("男") && !sex.equals("女")) {
                            throw new IllegalArgumentException("性别必须为男或女");
                        }

                        double math = Double.parseDouble(mathField.getText());
                        double english = Double.parseDouble(englishField.getText());
                        double computer = Double.parseDouble(computerField.getText());
                        double pe = Double.parseDouble(peField.getText());

                        if (math < 0 || math > 100 || english < 0 || english > 100 || computer < 0 || computer > 100 || pe < 0 || pe > 100) {
                            throw new IllegalArgumentException("成绩必须在0到100之间");
                        }

                        student.setName(nameField.getText());
                        student.setSex(sex);
                        student.setAge(Integer.parseInt(ageField.getText()));
                        student.setId(idField.getText());
                        student.setClassName(roomField.getText());
                        student.setMath(math);
                        student.setEnglish(english);
                        student.setComputer(computer);
                        student.setPe(pe);
                        updateTable();
                        break; // 更新成功,跳出循环
                    }catch (NumberFormatException e) {
                        JOptionPane.showMessageDialog(null, "请输入正确的数字格式", "错误", JOptionPane.ERROR_MESSAGE);
                    }  catch (IllegalArgumentException e) {
                        JOptionPane.showMessageDialog(null, e.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);
                    }
                } else {
                    break; // 用户取消操作,退出循环
                }
            }
        } else {
            JOptionPane.showMessageDialog(null, "未找到学生!");
        }
    }

    //查找学生
    private static void searchStudent(){
        String studentId = JOptionPane.showInputDialog("输入要查询的学生学号:");
        IStudent student = studentManager.findStudent(studentId);
        if(student!=null){
            //有这个人
            JOptionPane.showMessageDialog(null,String.format("姓名: %s\n性别:%s\n年龄:%d\n学号: %s\n班级: %s\n高等数学: %.2f\n大学英语: %.2f\n计算机导论: %.2f\n体育: %.2f",
                    student.getName(), student.getSex(),student.getAge(),student.getId(), student.getClassName(), student.getMath(),
                    student.getEnglish(), student.getComputer(), student.getPe()));
        }else{
            JOptionPane.showMessageDialog(null,"未查询到学生");
        }
    }

    //查询不及格人数
    private static void searchFailingStudents(){
        String subject = JOptionPane.showInputDialog("输入课程名称(高等数学、大学英语、计算机导论、体育):");
        List<IStudent> failingStudents = studentManager.getFailingStudents(subject);
        if(failingStudents.isEmpty()){
            JOptionPane.showMessageDialog(null,subject+"没有不及格学生。");
        }else{
            StringBuilder message = new StringBuilder();
            for(IStudent student:failingStudents){
                message.append(String.format("姓名: %s 学号: %s 班级: %s %s: %.2f\n", student.getName(), student.getId(), student.getClassName(), subject, getScoreBySubject(student, subject)));
            }
            JTextArea textArea = new JTextArea(message.toString());
            textArea.setEditable(false);//文本区域只显示,不编辑
            JScrollPane scrollPane = new JScrollPane(textArea);
            scrollPane.setPreferredSize(new Dimension(500, 200)); // 设置滚动窗口的大小

            JOptionPane.showMessageDialog(null, scrollPane, subject + "不及格学生", JOptionPane.INFORMATION_MESSAGE);
            //JOptionPane.showMessageDialog(null, message.toString());
        }
    }

    private static double getScoreBySubject(IStudent student, String subject){
        switch (subject.toLowerCase()) {
            case "高等数学":
                return student.getMath();
            case "大学英语":
                return student.getEnglish();
            case "计算机导论":
                return student.getComputer();
            case "体育":
                return student.getPe();
            default:
                return 0;
        }
    }

    //保存
    private static void saveToFile() {
        try {
            studentManager.saveToFile("students.dat");
            JOptionPane.showMessageDialog(null, "保存成功!");
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(null, "请输入正确的数字格式", "错误", JOptionPane.ERROR_MESSAGE);
        } catch (IOException e) {
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, "保存失败!");
        }
    }

    //加载
    private static void loadFromFile() {
        try {
            studentManager.loadFromFile("students.dat");
            updateTable();
            JOptionPane.showMessageDialog(null, "加载成功!");
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, "加载失败!");
        }
    }
    //更新硬盘信息
    private static void updateTable(){
        tableModel.setRowCount(0);
        for (IStudent student : studentManager.getAllStudents()) {
            tableModel.addRow(new Object[]{
                    student.getName(),
                    student.getSex(),
                    student.getAge(),
                    student.getId(),
                    student.getClassName(),
                    student.getMath(),
                    student.getEnglish(),
                    student.getComputer(),
                    student.getPe()
            });
        }
    }
}

Student类

package edu;

import java.io.Serializable;

public class Student implements IStudent, Serializable {
    private String name;
    private String sex;
    private int age;
    private String id;
    private String classname;
    private double math;
    private double english;
    private double computer;
    private double pe;

    public Student() {
    }

    public Student(String name, String sex, int age, String id, String classname, double math, double english, double computer, double pe) {
        this.name = name;
        this.setSex(sex);
        this.age = age;
        this.id = id;
        this.classname = classname;
        this.setMath(math);
        this.setEnglish(english);
        this.setComputer(computer);
        this.setPe(pe);
    }

    @Override
    public String getName() {
        return name;
    }

    @Override
    public String getSex() {
        return sex;
    }

    @Override
    public int getAge() {
        return age;
    }

    @Override
    public String getId() {
        return id;
    }

    @Override
    public String getClassName() {
        return classname;
    }

    @Override
    public double getMath() {
        return math;
    }

    @Override
    public double getEnglish() {
        return english;
    }

    @Override
    public double getComputer() {
        return computer;
    }

    @Override
    public double getPe() {
        return pe;
    }

    @Override
    public void setName(String name) {
        this.name=name;
    }

    @Override
    public void setSex(String sex) {
        this.sex=sex;
    }

    @Override
    public void setAge(int age) {
        this.age=age;
    }

    @Override
    public void setId(String studentId) {
        this.id=id;
    }

    @Override
    public void setClassName(String className) {
        this.classname=className;
    }

    @Override
    public void setMath(double math) {
        this.math=math;
    }

    @Override
    public void setEnglish(double english) {
        this.english=english;
    }

    @Override
    public void setComputer(double computer) {
        this.computer=computer;
    }

    @Override
    public void setPe(double pe) {
        this.pe=pe;
    }
}

StudentManager类

package edu;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class StudentManager implements IStudentManager{
    //实现接口

    //学生集合
    private List<IStudent> students = new ArrayList<>();

    @Override
    public void addStudent(IStudent student) {
        students.add(student);
    }//添加

    @Override
    public void removeStudent(String studentId) {
        students.removeIf(student->student.getId().equals(studentId));
    }//删除

    @Override
    public IStudent findStudent(String studentId) {
        for(IStudent student:students){//面向抽象
            if(student.getId().equals(studentId)){
                return student;
            }
        }
        return null;
    }//查找

    @Override
    public List<IStudent> getAllStudents() {
        return students;
    }

    @Override
    public List<IStudent> getFailingStudents(String subject) {
        List<IStudent>failingStudents = new ArrayList<>();
        for(IStudent student:students){
            switch (subject.toLowerCase()){
                case "高等数学":
                    if (student.getMath() < 60) {
                        failingStudents.add(student);
                    }
                    break;
                case "大学英语":
                    if (student.getEnglish() < 60) {
                        failingStudents.add(student);
                    }
                    break;
                case "计算机导论":
                    if (student.getComputer() < 60) {
                        failingStudents.add(student);
                    }
                    break;
                case "体育":
                    if (student.getPe() < 60) {
                        failingStudents.add(student);
                    }
                    break;
            }
        }
        return failingStudents;
    }

    @Override
    public void saveToFile(String filename) throws IOException {
        try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(filename))) {
            out.writeObject(students);
        }
    }

    @Override
    public void loadFromFile(String filename) throws IOException, ClassNotFoundException {
        try (ObjectInputStream in = new ObjectInputStream(new FileInputStream(filename))) {
            students = (List<IStudent>) in.readObject();
        }
    }
}

CS类图

PS: 此处非JAVA代码,为PlantUml语法,在idea内置PlantUml图绘制插件可以使用(需要配置环境)

@startuml
'https://plantuml.com/class-diagram

class Administrator
interface Serializable<<interface>>
interface IStudent<<interface>>
interface IStudentManager<<interface>>
class GenerateStudents
class LoginJframe
class Main
class MainJframe
class Student
class StudentManager


Serializable<|..Administrator

JFrame<|-- LoginJframe
LoginJframe-->Administrator
LoginJframe<..Main
LoginJframe..>MainJframe

JFrame<|-- MainJframe
MainJframe-->IStudentManager

IStudentManager-->IStudent
Student..|>IStudent
Student..|>Serializable
StudentManager..|>IStudentManager


class Administrator{
+{static}Administrators:List<Administrator>
-account:String
-password:String

+(Strng,String):Administrator
+getAccount():String
+getPasswoed():String
+{static}addAdministraror(Administor):void
+{static}findAdministraror(String):Administrator
+{static}isRegistered(String)):boolean
+{static}verifyPassword(String):boolean
+{static}saveAdministrarorToFile(String):void
+{static}loadAdministrarorToFile(String):void
}

interface IStudent<<interface>>{
+getName():String
+setName():void
+getSex():String
+setSex():void
+getAge():int
+setAge():void
+getId():String
+setId()():void
+getClassName():String
+setClassName():void
+getMath():double
+setMath():void
+getEnglish():double
+setEnglish():void
+getComputer():double
+setComputer():void
+getPe():double
+setPe():void
}

interface IStudentManager<<interface>>{
+addStudent(IStudent):void
+removeStudent(IStudent):void
+findStudent(String):IStudent
+getAllStudents():List<IStudent>
+getFailingStudents():List<IStudent>
+saveToFile(String):void
+loadFromFile(String):void
}

class GenerateStudents{
}

class LoginJframe{
+():LoginJframe
-{static}FILENAME:String
-loadAdministraror():void
-saveAdministraror():void
}
note left of LoginJframe:FILENAME = "administrator.dat";\n//管理员信息保存文件名

class Main{
}

class MainJframe{
-{static}studentManager:IStudentManager
-{static}jTable:jTable
-{static}tableModel:DefaultTableModel

+():MainJframe
+addStudent():void
+deleteStudent():void
+updateStudent():void
+searchStudent(String):IStudent
+searchFailingStudents():List<IStudent>
+getScoreBySubject(IStudent,String):double
+saveToFile():void
+loadFromFile():void
}
note bottom of MainJframe://通过方法里面的判断\n选择是否通过实现的\nstudengManager调用\nStudengManager方法

class Student{
-name:String
-sex:String
-age:int
-id:String
-classname:String
-math:double
-english:double
-computer:double
-pe:double

+(String,String,int,String,
double,doule,double,doule) :Student
}

class StudentManager{
-students:List<IStudent>

}

@enduml

效果图:

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo6.cn 版权所有 赣ICP备2024042791号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务