我对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;
}
}
}
```
答案 0 :(得分:0)
我不是很擅长解决别人的问题,但是从我的角度来看,最简单的方法是:设置3个类,例如,运行应用程序的1个主类,1个考试类和1个学生班。如您所言,ExamClass
将具有name
和id
; StudentClass
将具有name
,exam
(id
或name
-对应于现有考试)和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模式!