学校系统Java代码:无法将数据从一个类传输到另一个类

问题描述 投票:-1回答:1

我受命用Java创建学校系统编码作业。这是项目要求:

我们需要保持所修课程及其各自的成绩;添加带有年级的课程,打印所有已修课程和平均成绩。假设一个学生学习整个课程的课程不超过30门。对于教师,我们需要保持当前教授的课程,并能够添加或删除所教授的课程。假设一位老师同时教授不超过5门课程。

我是Java新手。

这是我的代码:

Main Class

package com.company;
import java.util.Scanner;

interface getTheName {

    String getName();
    String getRole();

}

public class Main {

    public static void main(String[] args) {
        Information sys = new Information();
        Sensei sys1 = new Sensei();
        Trainee sys2 = new Trainee();
        Courses sys3 = new Courses();
        Scanner sc = new Scanner(System.in);
        System.out.println("Welcome to Alan's Dojo begin the process for building your own ninja school!");
        while (true) {
            try {

                System.out.println("[1] Add Trainee");
                System.out.println("[2] Add Sensei");
                System.out.println("[3] Add course");
                System.out.println("[4] assign teacher");
                System.out.println("[5] Enroll Trainee");
                System.out.println("[6] Show courses");
                System.out.println("[7] Show Trainees");
                System.out.println("[8] Show Senseis");
                System.out.println("[9] Show all Ninjas");
                System.out.println("[10] Add marks");
                System.out.println("[11] Show marks");
                System.out.println("[12] exit program");
                int menu = sc.nextInt();
                sc.nextLine();

                int senseiID, traineeID, courseID, mark;
                switch (menu) {
                    case 1:
                        System.out.println("Enter trainee name: ");
                        sys.addTrainee(sc.nextLine());
                        //sys2.addTrainee(sc.nextLine());
                        break;
                    case 2:
                        System.out.println("Enter sensei name: ");
                        //sys.addSensei(sc.nextLine());
                        sys.addSensei(sc.nextLine());
                        break;
                    case 3:
                        System.out.println("Enter course name : ");
                        sys.addCourses(sc.nextLine());
                        //sys3.addCourses(sc.nextLine());
                        break;
                    case 4:
                        System.out.println("Enter sensei id : ");
                        senseiID = sc.nextInt();
                        System.out.println("Enter course id : ");
                        courseID = sc.nextInt();
                        //sys.teachCourse(senseiID, courseID);

                        sys1.teachCourse(senseiID, courseID);
                        break;
                    case 5:
                        System.out.println("Enter trainee id : ");
                        traineeID = sc.nextInt();
                        System.out.println("Enter course id : ");
                        courseID = sc.nextInt();
                        //sys.enrollTrainee(traineeID, courseID);
                        sys2.enrollTrainee(traineeID, courseID);
                        break;
                    case 6:
                        //sys.showCourses();
                        sys3.showCourses();
                        break;
                    case 7:
                        //sys.showTrainees();
                        sys2.showTrainees();
                        break;
                    case 8:
                        //sys.showSenseis();
                        sys1.showSenseis();
                        break;
                    case 9:
                        sys.showNames();
                        break;
                    case 10:
                         System.out.println("Enter course id : ");
                         courseID = sc.nextInt();
                         System.out.println("Enter trainee id : ");
                         traineeID = sc.nextInt();
                         System.out.println("Enter mark : ");
                         mark = sc.nextInt();
                         sys.markTrainee(courseID, traineeID, mark);
                         break;
                    case 11:
                         System.out.println("Enter trainee id : ");
                         traineeID = sc.nextInt();
                         System.out.println("Enter course id : ");
                         courseID = sc.nextInt();
                         sys.showMarks(traineeID, courseID);
                         break;
                    case 12:
                         System.out.println("Please come back to Alan's Dojo soon!");
                         return;
                    default:
                        sc.nextLine();
                }
                sc.nextLine();
            } catch (Exception ex) {
                sc.nextLine();
            }

        }
    }
}

信息分类] >>

package com.company;

public class Information {

    public getTheName allNames[];
    public int n_name;
    public Trainee allTrainees[];
    public int n_trainee;
    public Sensei allSenseis[];
    public Courses allCourses[];
    public int n_sensei;
    public int n_course;
    public int allMarks[];
    public int n_mark;
    public int mark;


    public Information()
    {
        allNames = new getTheName[30];
        allTrainees = new Trainee[30];
        allCourses = new Courses[30];
        allSenseis = new Sensei[5];
        allMarks = new int[100];
        n_course = 0;
        n_name = 0;
        n_sensei = 0;
        n_trainee = 0;
        n_mark = 0;
    }
    public void addTrainee(String name)
    {
        allTrainees[n_trainee++] = new Trainee(name);
        allNames[n_name++] = allTrainees[n_trainee-1];
    }
    public void addSensei(String name)
    {
        allSenseis[n_sensei++] = new Sensei(name);
        allNames[n_name++] = allSenseis[n_trainee-1];
    }
    public void addCourses(String name)
    {
        allCourses[n_course++] = new Courses(name);

    }


    public void teachCourse(int senseiID,int courseID)
    {
        allCourses[courseID].setSensei(allSenseis[senseiID]);
    }

    public void enrollTrainee(int traineeID,int courseID)
    {
        allCourses[courseID].addTrainee(allTrainees[traineeID]);
    }

    public void markTrainee(int courseID,int traineeID,int mark)
    {
        allCourses[courseID].addTraineeMark(allTrainees[traineeID]);
        this.mark = mark;
    }


    public void showCourses()
    {
        System.out.println("Course list:");
        for(int i = 0; i<n_course; i++)
        {
            System.out.println("Course id" + i + " :" + allCourses[i].getName());
        }
    }

    public void showTrainees()
    {
        System.out.println("Trainees list:");
        for(int i = 0; i <n_trainee; i++)
        {
            System.out.println("Trainees id" + i + " :" + allTrainees[i].getName());
        }
    }
    public void showSenseis()
    {
        System.out.println("Sensei list:");
        for(int i = 0; i<n_sensei; i++)
        {
            System.out.println("Sensei id" + i + " :" + allSenseis[i].getName());
        }
    }
    public void showNames()
    {
        System.out.println("Name list:");
        for(int i = 0; i<n_name; i++)
        {
            System.out.println(allNames[i].getRole() + ":" + allNames[i].getName());
        }
    }

    public void showMarks(int traineeID, int courseID)
    {
        System.out.println("Marks:");

        System.out.println(allCourses[courseID].getName() + " " + allTrainees[traineeID].getName() + " " + mark);
    }
}

忍者职业

] >>
package com.company;

public class Ninja implements getTheName{

    public getTheName allNames[];
    public int n_name;
    public Trainee allTrainees[];
    public int n_trainee;
    public Sensei allSenseis[];
    public Courses allCourses[];
    public int n_sensei;
    public int n_course;
    public int allMarks[];
    public int n_mark;
    public int mark;

    public int id;
    protected  String name;

    public Ninja(String p_name) {
        name=p_name;
    }

    public Ninja() {
        allNames = new getTheName[30];
        allTrainees = new Trainee[30];
        allCourses = new Courses[30];
        allSenseis = new Sensei[5];
        allMarks = new int[100];
        n_course = 0;
        n_name = 0;
        n_sensei = 0;
        n_trainee = 0;
        n_mark = 0;
    }




    public void addTrainee(String name)
    {
        allTrainees[n_trainee++] = new Trainee(name);
        allNames[n_name++] = allTrainees[n_trainee-1];
    }
    public void addSensei(String name)
    {
        allSenseis[n_sensei++] = new Sensei(name);
        allNames[n_name++] = allSenseis[n_trainee-1];
    }
    public void addCourses(String name)
    {
        allCourses[n_course++] = new Courses(name);

    }


    public void teachCourse(int senseiID,int courseID)
    {
        allCourses[courseID].setSensei(allSenseis[senseiID]);
    }

    public void enrollTrainee(int traineeID,int courseID)
    {
        allCourses[courseID].addTrainee(allTrainees[traineeID]);
    }

    public void markTrainee(int courseID,int traineeID,int mark)
    {
        allCourses[courseID].addTraineeMark(allTrainees[traineeID]);
        this.mark = mark;
    }


    public void showCourses()
    {
        System.out.println("Course list:");
        for(int i = 0; i<n_course; i++)
        {
            System.out.println("Course id" + i + " :" + allCourses[i].getName());
        }
    }

    public void showTrainees()
    {
        System.out.println("Trainees list:");
        for(int i = 0; i <n_trainee; i++)
        {
            System.out.println("Trainees id" + i + " :" + allTrainees[i].getName());
        }
    }
    public void showSenseis()
    {
        System.out.println("Sensei list:");
        for(int i = 0; i<n_sensei; i++)
        {
            System.out.println("Sensei id" + i + " :" + allSenseis[i].getName());
        }
    }
    public void showNames()
    {
        System.out.println("Name list:");
        for(int i = 0; i<n_name; i++)
        {
            System.out.println(allNames[i].getRole() + ":" + allNames[i].getName());
        }
    }

    public void showMarks(int traineeID, int courseID)
    {
        System.out.println("Marks:");

        System.out.println(allCourses[courseID].getName() + " " + allTrainees[traineeID].getName() + " " + mark);
    }





    public  String getName(){
        return name;
    }

    @Override
public String getRole() {
    return null;
}

    //public  void setName(String p_name){name=p_name;}
    //public  String get_role(){return"Ninja";}
}

Sensei Class

]
package com.company;

public class Sensei extends Ninja implements getTheName{

    public getTheName allNames[];
    public int n_name;
    public Trainee allTrainees[];
    public int n_trainee;
    public Sensei allSenseis[];
    public Courses allCourses[];
    public int n_sensei;
    public int n_course;
    public int allMarks[];
    public int n_mark;


    public Sensei() {
        super();
        allNames = new getTheName[30];
        allTrainees = new Trainee[30];
        allCourses = new Courses[30];
        allSenseis = new Sensei[5];
        allMarks = new int[100];
        n_course = 0;
        n_name = 0;
        n_sensei = 0;
        n_trainee = 0;
        n_mark = 0;
    }


    public  String getName(){
        return name;
    }

    public void addSensei(String name)
    {
        allSenseis[n_sensei++] = new Sensei(name);
        allNames[n_name++] = allSenseis[n_trainee-1];
    }


    public void teachCourse(int senseiID,int courseID)
    {
        allCourses[courseID].setSensei(allSenseis[senseiID]);
    }

    public void showSenseis()
    {
        System.out.println("Sensei list:");
        for(int i = 0; i<n_sensei; i++)
        {
            System.out.println("Sensei id" + i + " :" + allSenseis[i].getName());
        }
    }

    public  String getRole() {
        return"Sensei";
    }

    public Sensei(String p_name) {
        super(p_name);
    }
}

实习生课程

package com.company;

public class Trainee extends Ninja implements getTheName{

    public getTheName allNames[];
    public int n_name;
    public Trainee allTrainees[];
    public int n_trainee;
    public Sensei allSenseis[];
    public Courses allCourses[];
    public int n_sensei;
    public int n_course;
    public int allMarks[];
    public int n_mark;
    public int mark;

    public Trainee() {
        super();
        allNames = new getTheName[30];
        allTrainees = new Trainee[30];
        allCourses = new Courses[30];

        allMarks = new int[100];
        n_course = 0;
        n_name = 0;

        n_trainee = 0;
        n_mark = 0;


        //listTrainees = new Trainee[30];
    }

    public void addTrainee(String name)
    {
        allTrainees[n_trainee++] = new Trainee(name);
        allNames[n_name++] = allTrainees[n_trainee-1];
    }



    public void enrollTrainee(int traineeID,int courseID)
    {
        allCourses[courseID].addTrainee(allTrainees[traineeID]);
    }

    public void markTrainee(int courseID,int traineeID,int mark)
    {
        allCourses[courseID].addTraineeMark(allTrainees[traineeID]);
        this.mark = mark;
    }




    public void showTrainees()
    {
        System.out.println("Trainees list:");
        for(int i = 0; i <n_trainee; i++)
        {
            System.out.println("Trainees id" + i + " :" + allTrainees[i].getName());
        }
    }

    public void showNames()
    {
        System.out.println("Name list:");
        for(int i = 0; i<n_name; i++)
        {
            System.out.println(allNames[i].getRole() + ":" + allNames[i].getName());
        }
    }
    public void showMarks(int traineeID, int courseID)
    {
        System.out.println("Marks:");
        System.out.println(allCourses[courseID].getName() + " " + allTrainees[traineeID].getName() + " " + mark);
    }

    public Trainee(String p_name) {
        super(p_name);
    }
}

课程类别

]
package com.company;

public class Courses {

    public getTheName allNames[];
    public int n_name;
    public Trainee allTrainees[];
    public int n_trainee;
    public Sensei allSenseis[];
    public Courses allCourses[];
    public int n_sensei;
    public int n_course;
    public int allMarks[];
    public int n_mark;
    public int mark;

    private String name;
    public Sensei SenseiAssigned;
    public Trainee listTrainees[];
    public int n_student;

    public Courses(String p_name) {


        name = p_name;
        listTrainees = new Trainee[10000];
        n_student = 0;
    }

    public Courses() {
        allNames = new getTheName[50];
        allTrainees = new Trainee[30];
        allCourses = new Courses[50];
        allSenseis = new Sensei[5];
        allMarks = new int[100];
        n_course = 0;
        n_name = 0;
        n_sensei = 0;
        n_trainee = 0;
        n_mark = 0;
    }

    public void addCourses(String name)
    {
        allCourses[n_course++] = new Courses(name);

    }


    public void showCourses()
    {
        System.out.println("Course list:");
        for(int i = 0; i<n_course; i++)
        {
            System.out.println("Course id" + i + " :" + allCourses[i].getName());
        }
    }


    public String getName(){
        return name;
    }


    // public  void setName(String p_name){name=p_name;}
    public void setSensei(Sensei prof) {
        SenseiAssigned = prof;
    }

    public void addTrainee(Trainee t) {
        for (int i = 0; i < n_student; ++i) {
            if (listTrainees[i] == t)
                return;
        }
        listTrainees[n_student++] = t;
    }

    public void addTraineeMark(Trainee t) {
        listTrainees[n_student++] = t;
    }

}

问题

因此,我目前遇到的问题是,当我尝试打印课程,老师或受训者的姓名时,它们无法正确打印。如果我将“添加Senseis,受训者或Course方法移到各自班级中的相应位置,但是随后将受训者的标记打印停止,则可以解决此问题。

编辑

输出:

https://photos.app.goo.gl/btsFQPCiHP9NgeVq5

所以我也需要该程序到受训者,老师和课程列表中。连同标记系统保持完整。

我受命用Java创建学校系统编码作业。这是项目要求:我们需要保持所学课程及其相应的成绩;用...

java inheritance multiple-inheritance
1个回答
0
投票

我对您的Main类进行了重新设计,以使其能够正常执行,并使用方法来最大程度地减少调试和理解的代码量。

我重命名了您的界面,使其更符合Java准则。

© www.soinside.com 2019 - 2024. All rights reserved.