卡在JAVA学校项目上

时间:2019-04-24 19:18:59

标签: java

我对Java有点陌生,所以请问我任何愚蠢的问题。

我和另外2位学生正在从事一个名为“考试管理程序”的学校项目,我们需要能够:

  • 添加学生<完成
  • 显示学生名单<完成
  • 显示考试列表<完成
  • 删除学生<完成

  • 让学生参加考试

  • 显示学生是否通过了考试
  • 显示哪个学生通过那里考试
  • 显示哪个学生的考试通过率最高。

希望您能帮助我解决我们将不会出现的问题:

我们如何将班级学生与他的考试结果,他的尝试和他的结果联系起来?

到目前为止,这是我们的程序:

public class Exam {

    static ArrayList<Exam> listOfExam = new ArrayList<>();

    private String nameExam;
    private int id;

    public Exam(int id, String nameExam) {
        //this.student = student;
        this.id = id;
        this.nameExam = nameExam;

    }

    public String getNameExam() {
        return this.nameExam;
    }

    public String toString() {
        return "["+this.id+"]"+" "+ this.nameExam;
    }

    public static void getExams() {
        System.out.println(listOfExam.get(0));
        System.out.println(listOfExam.get(1));
        System.out.println();

    }

    public static void getExamCategory() {

        System.out.println("Examenlijst ");

        System.out.println("1. VerkeersExamen ");
        System.out.println("2. TaalExamen  ");

        Scanner reader = new Scanner(System.in);
        int choice = -1;
        while (true) {

            if (choice < 2) {
                try {

                    System.out.println("Voer nummer in van het examen dat u wilt afnemen: ");
                    choice = Integer.parseInt(reader.nextLine());
                    System.out.println("Succes met het examen!");
                    System.out.println();

                    ExamQuestions.Test();

                } catch (NumberFormatException e) {
                    System.out.println("Verkeerde keuze. Probeer alsjeblieft opnieuw");
                }

            } else if (choice < 3) {

                System.out.println("Voer nummer in van het examen dat u wilt afnemen: ");
                choice = Integer.parseInt(reader.nextLine());
                System.out.println("Succes met het examen!");
                System.out.println();
                ExamQuestions.Test();

            }
        }

    }
}



```
public class Student {

    private String nameStudent;
    private String randomString;

    public Student(String nameStudent, String randomString) {
        this.nameStudent = nameStudent;
        this.randomString = randomString;


    }
        public String getrandomString() {
            return this.randomString;
        }
        public String getnameStudent () {
        return this.nameStudent;
        }
            public String toString () {

            return "(" + this.randomString +")"+" - "+" " + this.nameStudent;

        }
    }
}
```

2 个答案:

答案 0 :(得分:0)

我不是很擅长解决别人的问题,但是从我的角度来看,最简单的方法是:设置3个类,例如,运行应用程序的1个主类,1个考试类和1个学生班。如您所言,ExamClass将具有nameidStudentClass将具有nameexamidname-对应于现有考试)和passed({{1} }。 boolean将具有方法MainClass(或doExam(studentName,examID)而非examName)。

examID将返回一个doExam,然后您将其提供给学生,例如boolean。然后,您有了一种方法student.setPassed(true)(或checkPassed(examName, studentName)而不是examID-您更喜欢哪种方法),该方法用examName遍历学生列表。它会查找具有给定for loop的学生对象,一旦找到该对象,它将检查examName并返回例如带有学生姓名的passed boolean以及布尔值。

String方法的示例为:

checkPassed()

您可以将其用于(当然要进行某些修改-但从您的代码中,我可以看到您自己具有相关知识):

  • 显示学生是否通过了考试
  • 显示哪个学生通过了考试
  • 显示哪个学生通过的考试最多。

希望我有所帮助。

答案 1 :(得分:-1)

您应该在学生和考试之间建立关联。例如:

public interface Entity {
    public long getId();
    public void setId(long id);

}

public class Student implements Entity{
    private long id;
    private ArrayList<ExamStudent> exams;
}

public class ExamStudent implements Entity {
    private long id;
    private Student student;
    private Exam exam;
    private double grade;

}

public class Exam {
    private long id;
    private String description;

}

以这种形式,您可以映射多对多关联。另一个建议,尝试分离责任。搜索MVC模式!