用java开发一个学生管理系统

  1. 该系统由学生、教师、课程和系统管理员四个对象组成。
    2.系统管理员(用户名:admin,密码: 123456) 登录系统后,具有录入学生信息、录入课程信息、录入教师信息、录入学生成绩和统计学生成绩5个方法。
    3.学生对象有学号、学生姓名属性,具有显示学生信息的方法。
  2. 课程对象有课程号、课程名属性,具有显示课程信息的方法。
  3. 教师对象有教师工号、教师姓名属性,具有显示教师信息的方法。
  4. 程序运行后,显示“登录界面(图 1)”,如果输入的系统管理员用户名和密码正确,则进入系统‘主界面(图2)”,否则,提示“用户名或密码错误,重新输入”,可以多次重复输入,直到输入正确为止。
    具体如图所示

    img

img

img

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String username = "";
        String password = "";
        System.out.println("登录界面");
        while(true) {
            System.out.println("请输入用户名:");
            username = scanner.nextLine();
            System.out.println("请输入密码:");
            password = scanner.nextLine();
            if(username.equals("admin") && password.equals("123456")) {
                System.out.println("登录成功!");
                break;
            }
            System.out.println("用户名或密码错误,请重新输入!");
        }
        //已登录,进入主界面
        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("请输入操作编号:");
        int chooseNo = scanner.nextInt();
        switch(chooseNo) {
            case 1:
                //录入学生信息
                ArrayList<Student> students = new ArrayList<>();
                System.out.println("请依次输入学生学号和姓名,输入\"end\"结束:");
                String id, name;
                while(true) {
                    id = scanner.nextLine();
                    if(id.equals("end"))
                        break;
                    name = scanner.nextLine();
                    Student student = new Student(id, name);
                    students.add(student);
                }
                System.out.println("录入成功!");
                break;
            case 2:
                //录入课程信息
                ArrayList<Course> courses = new ArrayList<>();
                System.out.println("请依次输入课程号和名称,输入\"end\"结束:");
                String code, cname;
                while(true) {
                    code = scanner.nextLine();
                    if(code.equals("end"))
                        break;
                    cname = scanner.nextLine();
                    Course course = new Course(code, cname);
                    courses.add(course);
                }
                System.out.println("录入成功!");
                break;
            case 3:
                //录入教师信息
                ArrayList<Teacher> teachers = new ArrayList<>();
                System.out.println("请依次输入教师工号和姓名,输入\"end\"结束:");
                String tId, tName;
                while(true) {
                    tId = scanner.nextLine();
                    if(tId.equals("end"))
                        break;
                    tName = scanner.nextLine();
                    Teacher teacher = new Teacher(tId, tName);
                    teachers.add(teacher);
                }
                System.out.println("录入成功!");
                break;
            case 4:
                //录入学生成绩
                System.out.println("请依次输入学生学号、课程号、分数,输入\"end\"结束:");
                String sId, cCode;
                double score;
                while(true) {
                    sId = scanner.nextLine();
                    if(sId.equals("end"))
                        break;
                    cCode = scanner.nextLine();
                    score = scanner.nextDouble();
                    Student student = findStudentById(sId, students);
                    Course course = findCourseByCode(cCode, courses);
                    if(student == null || course == null) {
                        System.out.println("输入有误,请重新输入!");
                        continue;
                    }
                    student.addScore(new Score(course, score));
                }
                System.out.println("录入成功!");
                break;
            case 5:
                //统计学生成绩
                System.out.println("请输入要统计成绩的学生学号:");
                sId = scanner.nextLine();
                Student student = findStudentById(sId, students);
                if(student == null) {
                    System.out.println("学生不存在!");
                } else {
                    System.out.println(student.getInfo());
                }
                break;
            default:
                System.out.println("输入有误,请重新输入!");
                break;
        }
    }

    //根据学号查找学生
    public static Student findStudentById(String id, ArrayList<Student> students) {
        for(Student student : students) {
            if(student.getId().equals(id)) {
                return student;
            }
        }
        return null;
    }

    //根据课程号查找课程
    public static Course findCourseByCode(String code, ArrayList<Course> courses) {
        for(Course course : courses) {
            if(course.getCode().equals(code)) {
                return course;
            }
        }
        return null;
    }
}

class Student {
    private String id;
    private String name;
    private ArrayList<Score> scores = new ArrayList<>();

    public Student(String id, String name) {
        this.id = id;
        this.name = name;
    }

    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 void addScore(Score score) {
        scores.add(score);
    }

    public String getInfo() {
        StringBuilder sb = new StringBuilder();
        sb.append("学号:").append(id).append("\n");
        sb.append("姓名:").append(name).append("\n");
        sb.append("成绩:\n");
        for(Score score : scores) {
            sb.append(score.getCourse().getName()).append(": ").append(score.getScore()).append("\n");
        }
        return sb.toString();
    }
}

class Course {
    private String code;
    private String name;

    public Course(String code, String name) {
        this.code = code;
        this.name = name;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getName() {
        return name;
    }

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

    public String getInfo() {
        StringBuilder sb = new StringBuilder();
        sb.append("课程号:").append(code).append("\n");
        sb.append("课程名:").append(name).append("\n");
        return sb.toString();
    }
}

class Teacher {
    private String id;
    private String name;

    public Teacher(String id, String name) {
        this.id = id;
        this.name = name;
    }

    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 getInfo() {
        StringBuilder sb = new StringBuilder();
        sb.append("教师工号:").append(id).append("\n");
        sb.append("教师姓名:").append(name).append("\n");
        return sb.toString();
    }
}

class Score {
    private Course course;
    private double score;

    public Score(Course course, double score) {
        this.course = course;
        this.score = score;
    }

    public Course getCourse() {
        return course;
    }

    public void setCourse(Course course) {
        this.course = course;
    }

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }
}