Modulrechner für Hochschule

aikon3

Mitglied
Hallo zusammen :),

Ich habe mal eine kurze Frage wie ich ein Projekt am Besten starten soll.
Ich möchte gerne aus Übungszwecken einen Modulrechner für die Hochschule schreiben.
Also ein Modul hat 1 bis 4 Veranstaltungen die jeweils eine Note, ects usw. beinhaltet.
Aus diesen Veranstaltungen soll dann jeweils die Moduklnote berechnet werden.

Jetzt ist meine Frage ob ich die einzelnen Module in eine Datenbank schreiben soll oder es intern mit Listen usw. programmieren soll. Mir ist klar das es auf beide Arten funktioniert, aber ich habe immer beim Beginn von Programmen probleme eine geeignete datenstruktur zu finden.

Wie würdet ihr es angehen.?

mfg,

aikon3
 
Zuletzt bearbeitet von einem Moderator:

Andi_CH

Top Contributor
Wir sind hier in einem Java Forum - wenn du eine DB designen willst - na ja

Such doch erst mal die Klassen - überleg was die Klassen für Daten und Methoden brauchen und wie die zusammenhängen.

So nebenbei entsteht auch die Datenstruktur.

Dann kannst du dran gehen einen Persistenzlayer einzuplanen -> Ob der dann eine DB ansteuert oder seiralisiert oder eine XML Datei schreibt oder sonst was ist vorerst egal
 

fastjack

Top Contributor
Das Modell hast Du ja schon beschrieben, natürlich kann man es jetzt noch aufmalen. Ich denke Du braucht sowieso beides. Eine Liste mit Modulen in der Anwendung und gespeicherte Module in der DB. Aber die DB-Seite würde ich später machen.
Wenn Du nicht weist, wie Du anfangen sollst es zu implementieren, fange doch testdriven an. Dann merkst Du beim Entwickeln eines Testfalls schon, wie man später die Module usw. anwendet.
 

aikon3

Mitglied
Okay ich habe mir jetzt auch gedacht das ich beides verwenden werde.
Jetzt hab ich aber doch schon angefangen die Datenbank zu designen für die Stammdaten.
Ich will zwei Tabellen machen mit Modul und Veranstaltung.
Aber ein Modul kann ja bis zu vier Veranstaltungen haben. Ich habe mir jetzt gedacht das ich dann Spalte Veranstaltung1...Veranstaltung4 mache und als Fremdschlüssel verwende. Und wenn ich jetzt z.B. nur zwei Veranstaltungen in einem Modul habe, werde ich die zwei übrigen spalten mit einem String wie "none" oder so füllen.
Ist der Ansatz in Ordnung oder gehts auch besser.

Ich hoffe die Frage ist in Ordnung in einem Java Forum ???:L
 

Andi_CH

Top Contributor
Ich wollte damit vor allem ausdrücken dass ich keine javaspezifisches Problem erkennen kann, was ich allerdings immer noch nicht behaupten kann :bahnhof:

Aber vielleicht kannst du ja mit den Hinweisen der anderen etwas anfangen.
 

fastjack

Top Contributor
Das ist aber nicht schön... Wenn eine Veranstaltung auch zu mehreren Modulen zugeordnet werden soll, würde ich eine N:M Relation machen. Also Tabelle ModuleVeranstaltung (module_id, veranstaltung_id, ...).
Ansonsten, wenn eine Veranstaltung nur einem Modul zugeordnet werden kann, eine 1:N. Also Tabelle Veranstaltung (module_id, ...).
 

jgh

Top Contributor
auch wenn du schon angefangen hast, deine db zu designen, oder "aufzusetzen", kann ich dir nur empfehlen, den Post von Andi_CH zu befolgen:

Es nützt dir nichts -in Abhänigkeit von deinem Ziel- wenn du die beste DB designed hast, aber außer Ein- und Auslesen von Datensätzen funktioniert nichts^^

Mal so als nicht zu Ende gedachtes Bsp:
Du willst also einen Modulrechner bauen, wie der mit Modulen rechnet weiß ich ja nicht, also brauchst du eine Klasse Modul, die u.a. aus 1-4 Veranstaltungen besteht. =>
Java:
import java.util.List;


public class Modul {
	
	private List<Veranstaltungen> veranstaltungen;

}

die konkrete Implentierung von [c]List[/c], ob nun [c]ArrayList, LinkedList, Vector[/c] oder was auch immer du nimmst, soll für den Anfang erstmal egal sein.

Also brauchst du auch noch eine Klasse Veranstaltungen...evtl auch ein Noten-Objekt?!
Java:
public class Veranstaltungen {
	
	private int note;
     // private Note note;
	

}

zusätzlich überlegst du dir, welch weiteren -für deine relevanten Berechnungen- Attribute diese Objekte benötigen...und nebenbei entsteht eine Datenstruktur.

Wichtig ist, dass du dein eigenes Ziel nicht aus den Augen verlierst:
Du willst einen Modulrechner bauen...

Ist natürlich auch ein wenig Geschmackssache, ich würde es in diese Richtung machen.

Datenspeicherung ist bei einer Aufgabe die du selbst als "Modulrechner" definierst, imho ein späterer Schritt...
 

fastjack

Top Contributor
eben testdriven anfangen, dann siehst Du was Du brauchst, wie Du es später benutzt und baust auch keinen Ballast ein.

Beispiel:

Java:
Module module = new Module();

@Test
void shouldHaveZeroVeranstaltungen() {
    assertEquals(0, modul.getVeranstaltungen().size());
}

=> Kompilerfehler

Klasse Modul erzeugen:
Java:
class Module {
}

Methode getVeranstaltungen erzeugen:
Java:
class Module {
    List<Veranstaltung> getVeranstaltungen() {
        return null;
    }
}

Klasse Veranstaltung erzeugen:
Java:
class Veranstaltung {
}

Test starten => NullPointerException
Java:
class Module {
    List<Veranstaltung> getVeranstaltungen() {
        return new ArrayList<Veranstaltung>();
    }
}

Test starten => Test OK.

und so weiter...
 

Andi_CH

Top Contributor
Ich habe noch nie tesdriven geargeitet, aber es ist sicher ein sehr guter Ansatz, denn man muss sich von Anfang an genau überlegen WAS man will bzw. WIE sich das System verhalten soll.
 

aikon3

Mitglied
danke schonmal an die Antworten,
Ich habe halt am Anfang erst die ganze Persitenzschicht im Kopf gehabt, weil ich nen Projekt machen wollte mit ner eingebettetn DB.
Aber jetzt werd ich erst meine Unit Tests schreiben und dann die ganze Logik aufbauen.

mfg
 

Neue Themen


Oben