【发布时间】:2020-06-12 04:16:37
【问题描述】:
我的任务是用 Java 创建一个学校系统编码作业。 以下是项目要求:
我们需要保持所学的课程及其各自的成绩;添加带有成绩的课程,打印所有课程和平均成绩。假设一个学生在整个课程中学习的课程不超过 30 门。对于教师来说,我们需要维护当前教授的课程,并且能够添加或删除所教授的课程。假设一名教师同时教授的课程不超过 5 门。
我是 Java 新手。
这是我的代码:
主类
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";}
}
老师类
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;
}
}
问题
所以我目前遇到的问题是,当我尝试打印课程、老师或学员的名称时,它不会正确打印。如果我将“将教师或受训者或课程方法添加到他们自己班级中各自的位置但随后受训者标记的打印停止工作,则可以解决此问题。
编辑
输出:
https://photos.app.goo.gl/btsFQPCiHP9NgeVq5
因此,我也需要将程序添加到受训者、老师和课程列表中。与标记系统一起保持完整。
【问题讨论】:
-
我不明白你的问题。你能展示一些示例输出吗?
-
请分享样本输入、预期输出和实际输出。 “它不会正确打印”并没有告诉读者任何这些关键信息。
-
添加的输出图像
标签: java inheritance multiple-inheritance