# Programm für Klausuranmeldung



## JJ (17. Jun 2010)

Hallo, 
ich habe folgenes Problem: Ich habe eine Aufgabe von meinem Prof. bekommen und hab keine Ahnung wie ich die lösen soll.
Vielleicht kann mir jemand helfen bzw. das Programm schreiben.

Hier die Aufgabe:

Laboraufgabe: Klausuranmeldung

Erstellen Sie ein Java Programm, das dazu dienen soll eine Klausuranmeldung durchzuführen. 
Das Programm soll eine Klasse Student haben mit den Attributen MatrikelNummer, Name, Studiengang und []Klausuren von Typ Klausur. Die Klausur soll  EDVNr und Name als Attribute haben.
Es soll möglich sein: ein Student einzutragen, zu löschen und zu anzeigen sowie, dass ein Student sich bei einer Klausur anmelden und abmelden soll. Ein Student mit derselben Matrikel Nummer  sollte man nicht eintragen können.
Die Klausuren bei dem sich ein Student anmelden kann werden aus einem File: “klausuren.txt“ ausgelesen.
Bsp. für File zum auslesen der Klausuren:

152001 Informatik
152002 Mathematik
162121 Physik
162131 Reglungstechnik


----------



## fastjack (17. Jun 2010)

Helfen schon, aber lösen ? Das ist doch eine Aufgabe aus einem Informatikstudiengang oder nicht ? Und wahrscheinlich nicht im 1. Semester...

1. Mach Dir ein Daten/Klassenmodell (wird klein sein)
2. Überlege wie die Daten gespeichert werden sollen (im Speicher, in Datei, in Datenbank) bzw. wie die Eingangsdaten gelesen werden. Schnittstellen defineiren, implementieren und testen.
3. Wenn nötig: Überlege Dir eine GUI, die die entsprechenden Abläufe abbildet (Web/Swing etc)
4. Immer den Durchblick behalten, Tests schreiben, nicht zuviele Aufgaben auf einmal anfangen. Klein anfangen.


----------



## Niki (17. Jun 2010)

Weil mir im Moment eh ein wenig fad ist, hier hast du mal das Klassenmodell. Das Hinzufügen verläuft bidirektional. d.h. fügst du eine Klausur zum Student hinzu, wird automatisch zur Klausur auch der Student hinzugefügt und genauso umgekehrt. Damit kann man auch feststellen welche Studenten an der Klausur teilnehmen.

Klausur:

```
import java.util.ArrayList;
import java.util.List;

public class Klausur {
	private int nummer = 0;
	private String name = null;

	private List<Student> studenten = null;

	public Klausur(int nummer, String name) {
		this.nummer = nummer;
		this.name = name;
		studenten = new ArrayList<Student>();		
	}

	public void addStudent(Student s) {
		if(studenten.contains(s))
			return;
		studenten.add(s);
		s.addKlausur(this);
	}

	public void removeStudent(Student s) {		
		if(studenten.remove(s))
			s.removeKlausur(this);
	}

	public int getNummer() {
		return nummer;
	}

	public void setNummer(int nummer) {
		this.nummer = nummer;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
	public void printStudents(){
		for(Student s : studenten)
			System.out.println(s.getMatrikelNr() + " " + s.getName());
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + nummer;
		return result;
	}	

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Klausur other = (Klausur) obj;
		if (nummer != other.nummer)
			return false;
		return true;
	}

}
```

Student

```
import java.util.ArrayList;
import java.util.List;

public class Student {
	private String matrikelNr = null;
	private String name = null;
	private String studienGang = null;
	private List<Klausur> klausuren = null;
	
	public Student(String matrikelNr, String name, String studienGang){
		klausuren = new ArrayList<Klausur>();
		this.matrikelNr = matrikelNr;
		this.name = name;
		this.studienGang = studienGang;
	}
	
	public void addKlausur(Klausur k){
		if(klausuren.contains(k))
			return;
		
		klausuren.add(k);
		k.addStudent(this);
	}
	
	public void removeKlausur(Klausur k){
		if(klausuren.remove(k))
			k.removeStudent(this);
	}
	
	public String getMatrikelNr() {
		return matrikelNr;
	}
	public void setMatrikelNr(String matrikelNr) {
		this.matrikelNr = matrikelNr;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getStudienGang() {
		return studienGang;
	}
	public void setStudienGang(String studienGang) {
		this.studienGang = studienGang;
	}
	
	public void printKlausuren(){
		for(Klausur k : klausuren)
			System.out.println(k.getNummer() + " " + k.getName());
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((matrikelNr == null) ? 0 : matrikelNr.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Student other = (Student) obj;
		if (matrikelNr == null) {
			if (other.matrikelNr != null)
				return false;
		} else if (!matrikelNr.equals(other.matrikelNr))
			return false;
		return true;
	}
}
```


Soll das ganze eigentlich mit einem GUI funktionieren oder als Konsolen-Anwendung?


----------

