JAVA项目学生教师系统

现有M(M=2)位教师,N名同学,每名同学有3科成绩(语文,数学,英语),其中一位收师农授2门课程,另一位教师教授一门课程。请随机生成学生的结,并实现以下功能。
(一)教师具备的功能
1.查看、修改自己的信息(教师流号不可修改):
2.成绩查询
(1)查询自己救授课程的全班成绩、是高成绩、最低成绩、平均成绩等.
(2)根据学生的学号成姓名,查询该生自己放授课程的成绩。
(3)实现对学生成绩的排序,升序降序
3.教师信息和所教授的课程成绩保存到文件中。(二)学生具备的功能
1.查看、修改自己的信息(学生学号不可修改)
2.成绩查询
(1)查询自己所有科目的成绩、平均分等。
(2)查询自己某科目的成绩。
3.学生信息和学生个人成绩的保存,保存到文件中。
(三)系统管理员
1.对学生、教师的增加、迎除、修改、查看。教师编号和学生学号自动生成,不能修改。
2.对成绩的查看 (合所有科目,所有学生,单个科目,单个学生的成绩查询等)、排序等。
3.实现对教师信息、学生信息、学生成绩的保存(保存到文件中。可根据不同的内容保存的不同的文件中)
(四)主类实现的功能根8A入的值选择相应的单,执行湘应的损作.
四、项目要求
-)项目开发要求
1.定义父类Person,学生类、教师类继承Person类,课程类。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7777850
  • 除此之外, 这篇博客: C语言实现八大排序算法详解及其性能之间的中的 我们老师给我们花了100个星星的重要,那就是非常重要,快速排序。名字就很嚣张。。。言归正传,快排采用了分治算法。把大问题,分解成小问题。首先我们先找一个基准值,基准值的寻找法,有很多,这里我先用一个取边上值得方法,找到基准值以后呢拿着这个基准值和所有数组比较,使这个数组中比基准值小的都放左边,比基准值大的都放到右边,然后就把原来数组分成三块,中间基准值,左边都是比它小的,右边都是比它大的。然后这两个数组,继续分,一直分。直到他的终止条件,也就是小数组有序了就停止,那么什么时候有序停止呢?小区间长度为1或者长度为0的时候,就是有序了。所有小数组都有序了,那么就是整个数组有序了。只是原理,那么问题,又来了,怎么放左放右呢?我目前会三种。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    算法思想

  • 以下回答来自chatgpt:

    首先,我们需要根据问题的要求定义一个父类Person,学生类和教师类继承自Person类,并定义一个课程类。然后,我们可以根据用户的输入选择相应的功能单元,执行相应的操作。

    首先是定义Person类,其中包括学号和姓名这两个属性,再定义一个构造函数用于初始化学生或教师对象。

    class Person {
        private String id;  // 学号或教师工号
        private String name;  // 姓名
    
        public Person(String id, String name) {
            this.id = id;
            this.name = name;
        }
    
        public String getId() {
            return id;
        }
    
        public String getName() {
            return name;
        }
    
        // 可以根据需要添加其他属性和方法
    }
    

    接下来,我们定义一个课程类,其中包括科目名称和成绩这两个属性。我们可以根据需要添加其他属性和方法。

    class Course {
        private String name;  // 科目名称
        private float score;  // 成绩
    
        public Course(String name, float score) {
            this.name = name;
            this.score = score;
        }
    
        public String getName() {
            return name;
        }
    
        public float getScore() {
            return score;
        }
    
        // 可以根据需要添加其他属性和方法
    }
    

    然后,我们定义学生类,继承自Person类,并包括所学课程和成绩这两个属性。

    class Student extends Person {
        private List<Course> courses;  // 所学课程和成绩
    
        public Student(String id, String name) {
            super(id, name);
            courses = new ArrayList<>();
        }
    
        public void addCourse(Course course) {
            courses.add(course);
        }
    
        public List<Course> getCourses() {
            return courses;
        }
    
        // 可以根据需要添加其他属性和方法
    }
    

    接下来,我们定义教师类,继承自Person类,并包括所教课程和成绩这两个属性。

    class Teacher extends Person {
        private List<Course> courses;  // 所教课程和成绩
    
        public Teacher(String id, String name) {
            super(id, name);
            courses = new ArrayList<>();
        }
    
        public void addCourse(Course course) {
            courses.add(course);
        }
    
        public List<Course> getCourses() {
            return courses;
        }
    
        // 可以根据需要添加其他属性和方法
    }
    

    接下来,我们定义一个主类,实现各类功能。

    ```java import java.util.*;

    public class Main { private static List students; // 学生列表 private static List teachers; // 教师列表

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
    
        students = new ArrayList<>();
        teachers = new ArrayList<>();
    
        while (true) {
            System.out.println("请选择操作:");
            System.out.println("1. 登录教师账号");
            System.out.println("2. 登录学生账号");
            System.out.println("3. 登录系统管理员账号");
            System.out.println("4. 退出");
    
            int choice = scanner.nextInt();
    
            switch (choice) {
                case 1:
                    teacherMenu(scanner);
                    break;
                case 2:
                    studentMenu(scanner);
                    break;
                case 3:
                    adminMenu(scanner);
                    break;
                case 4:
                    scanner.close();
                    System.exit(0);
                default:
                    System.out.println("无效的选择,请重新输入");
                    break;
            }
        }
    }
    
    private static void teacherMenu(Scanner scanner) {
        System.out.println("请输入教师工号:");
        String id = scanner.next();
    
        Teacher teacher = findTeacherById(id);
        if (teacher == null) {
            System.out.println("教师不存在");
            return;
        }
    
        while (true) {
            System.out.println("请选择操作:");
            System.out.println("1. 查看和修改个人信息");
            System.out.println("2. 查询全班成绩");
            System.out.println("3. 查询个人成绩");
            System.out.println("4. 对学生成绩排序");
            System.out.println("5. 保存信息到文件");
            System.out.println("6. 返回");
    
            int choice = scanner.nextInt();
    
            switch (choice) {
                case 1:
                    editTeacherInfo(scanner, teacher);
                    break;
                case 2:
                    queryClassScores(scanner, teacher);
                    break;
                case 3:
                    queryPersonalScores(scanner, teacher);
                    break;
                case 4:
                    sortStudentScores(scanner, teacher);
                    break;
                case 5:
                    saveToFile(scanner, teacher);
                    break;
                case 6:
                    return;
                default:
                    System.out.println("无效的选择,请重新输入");
                    break;
            }
        }
    }
    
    private static void editTeacherInfo(Scanner scanner, Teacher teacher) {
        System.out.println("姓名:" + teacher.getName());
        System.out.println("请输入新的姓名:");
        String name = scanner.next();
    
        // 修改姓名
        teacher.setName(name);
    }
    
    private static void queryClassScores(Scanner scanner, Teacher teacher) {
        List<Student> classStudents = getAllStudents();
    
        for (Course course : teacher.getCourses()) {
            List<Float> scores = new ArrayList<>();
    
            for (Student student : classStudents) {
                List<Course> studentCourses = student.getCourses();
    
                // 查找学生在当前课程中的成绩
                for (Course studentCourse : studentCourses) {
                    if (studentCourse.getName().equals(course.getName())) {
                        scores.add(studentCourse.getScore());
                    }
                }
            }
    
            float maxScore = Collections.max(scores);
            float minScore = Collections.min(scores);
            float averageScore = (float) scores.stream().mapToDouble(Float::doubleValue).average().orElse(0);
    
            System.out.println("课程:" + course.getName());
            System.out.println("最高成绩:" + maxScore);
            System.out.println("最低成绩:" + minScore);
            System.out.println("平均成绩:" + averageScore);
        }
    }
    
    private static void queryPersonalScores(Scanner scanner, Teacher teacher) {
        System.out.println("请输入学生学号:");
        String studentId = scanner.next();
    
        List<Student> classStudents = getAllStudents();
    
        Student student = findStudentById(studentId);
        if (student == null) {
            System.out.println("学生不存在");
            return;
        }
    
        for (Course course : teacher.getCourses()) {
            List<Course> studentCourses = student.getCourses();
    
            // 查找学生在当前课程中的成绩
            for (Course studentCourse : studentCourses) {
                if (studentCourse.getName().equals(course.getName())) {
                    System.out.println("课程:" + course.getName() + ",成绩:" + studentCourse.getScore());
                    break;
                }
            }
        }
    }
    
    private static void sortStudentScores(Scanner scanner, Teacher teacher) {
        List<Student> classStudents = getAllStudents();
    
        for (Course course : teacher.getCourses()) {
            List<Float> scores = new ArrayList<>();
    
            for (Student student : classStudents) {
                List<Course> studentCourses = student.getCourses();
    
                // 查找学生在当前课程中的成绩
                for (Course studentCourse : studentCourses) {
                    if (studentCourse.getName().equals(course.getName())) {
                        scores.add(studentCourse.getScore());
                    }
                }
            }
    
            scores.sort(Comparator.naturalOrder());
    
            System.out.println("课程:" + course.getName() + ",成绩排序:");
            for (Float score : scores) {
                System.out.println(score);
            }
        }
    }
    
    private static void saveToFile(Scanner scanner, Teacher teacher) {
        // TODO: 将教师信息和所教授的课程成绩保存到文件中
    }
    
    private static void studentMenu(Scanner scanner) {
        System.out.println("请输入学生学号:");
        String id = scanner.next();
    
        Student student = findStudentById(id);
        if (student == null) {
            System.out.println("学生不存在");
            return;
        }
    
        while (true) {
            System.out.println("请选择操作:");
            System.out.println("1. 查看和修改个人信息");
            System.out.println("2. 查询所有科目成绩");
            System.out.println("3. 查询单个科目成绩");
            System.out.println("4. 保存信息到文件");
            System.out.println("5. 返回");
    
            int choice = scanner.nextInt();
    
            switch (choice) {
                case 1:
                    editStudentInfo(scanner, student);
                    break;
                case 2:
                    queryAllCourseScores(student);
                    break;
                case 3:
                    querySingleCourseScores(scanner, student);
                    break;
                case 4:
                    saveToFile(scanner, student);
                    break;
                case 5:
                    return;
                default:
                    System.out.println("无效的选择,请重新输入");
                    break;
            }
        }
    }
    
    private static void editStudentInfo(Scanner scanner, Student student) {
        System.out.println("姓名:" + student.getName());
        System.out.println("请输入新的姓名:");
        String name = scanner.next();
    
        // 修改姓名
        student.setName(name);
    }
    
    private static void queryAllCourseScores(Student student) {
        List<Course> courses = student.getCourses();
        float sum = 0;
        int count = 0;
    
        for (Course course : courses) {
            sum += course.getScore();
            count++;
        }
    
        float averageScore = sum / count;
    
        System.out.println("总成绩:" + sum);
        System.out.println("平均成绩:" + averageScore);
    }
    
    private static void querySingleCourseScores(Scanner scanner, Student student) {
        System.out.println("请输入课程名称:");
        String courseName = scanner.next();
    
        List<Course> courses = student.getCourses();
    
        for (Course course : courses) {
            if (course.getName().equals(courseName)) {
                System.out.println("科目:" + course.getName() + ",成绩:" + course.getScore());
                return;
            }
        }
    
        System.out.println("未找到该课程成绩");
    }
    
    private static void saveToFile(Scanner scanner, Student student) {
        // TODO: 将学生信息和个人成绩保存到文件中
    }
    
    private static void adminMenu(Scanner scanner) {
        while (true) {
            System.out.println("请选择操作:");
            System.out.println("1. 添加学生");
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

参考:https://peakchen.blog.csdn.net/article/details/131568233?spm=1001.2014.3001.5502