Diese Applikation beinhaltet ein Managementsystem zur Studentenverwaltung. Es ermöglicht das Abspeichern und Einlesen persönlicher Daten, wie etwa Name, Geburtsdatum, Matrikelnummer usw., ebenso wie das Ausgeben fraglicher Daten in sortierter, strukturierter Form.
Es handelt sich um eine reine Konsolenanwendung. Daten zum Importieren müssen einer bestimmten From entsprechen, welche in der Dokumentation genauer beschrieben ist. Die Datenbank wird lokal gespeichert. Es besteht die Möglichkeit, Backups und Version Controls beim Speichern zu erstellen.
Link zur GitHub-Repo: https://github.com/ComTols/c_student_management
Das Program wird hier gestartet.
Parameter | Typ | Beschreibung |
---|---|---|
argc | int | Anzahl der Argumente |
argv | char[] | Übergebene Argumente |
Rückgabewert:
int
: Exitcode
Konstruktor für die Struct Student zum einfachen Erstellen eines Datensatzes.
Parameter | Typ | Beschreibung |
---|---|---|
vname | char* | Vorname |
nname | char* | Nachname |
id | int | Matrikelnummer |
gtag | Datum | Geburtstag |
beginn | Datum | Imatrukulationsdatum |
ende | Datum | Exmatrikulationsdatum |
Konstruktor für die Struct Datum zum einfachen Erstellen eines Datums.
Parameter | Typ | Beschreibung |
---|---|---|
tag | int | Tag |
monat | int | Monat (numerisch) |
jahr | int | Jahr |
Verschiebt den Cursor auf der Konsole an die angegebene Position.
Parameter | Typ | Beschreibung |
---|---|---|
x | int | Horizontale |
y | int | Vertikale |
Gibt das Logo auf der Konsole aus.
Parameter | Typ | Beschreibung |
---|---|---|
line | int* | Zeile unter dem Logo |
Gibt den Rahmen auf der Konsole aus.
Parameter | Typ | Beschreibung |
---|---|---|
height | int | Die Höhe des Fensters |
fistLine | int* | Erste Zeile, in die geschrieben werden kann |
Gibt das Menü auf der Konsole aus.
Parameter | Typ | Beschreibung |
---|---|---|
items | MenuItem* | Die auszugebenden Menüpunkte |
length | int | Die Länge des Array |
pos | int* | Die Zeigerposition |
Konstruktor für das Menü.
Parameter | Typ | Beschreibung |
---|---|---|
size | int* | Die Größe des Arrays |
Fängt die Tastendrücke des Nutzers ab und ruft die entsprechende Methode auf.
Parameter | Typ | Beschreibung |
---|---|---|
items | MenuItem* | Alle Menüpunkte |
length | int | Länge des Arrays |
pos | int* | Position des Zeigers |
students | LinkedList* | Liste aller gespeicherten Studenten |
Lässt einen Wert zwischen 0 und bewegen.
Parameter | Typ | Beschreibung |
---|---|---|
in | int* | Zu beschränkende Variable |
max | int | Maximal zulässiger Wert (exklusiv) |
Lädt alle Daten aus einer Datei.
In dieser Funktion gibt es einen Bug! Nachdem die Werte aus der Datei gelesen wurden und in einen JSON-Tree konvertiert wurden, werden die Keys nicht korrekt behalten. Wahrscheinlich wird der Wert aus Versehen auf einen Pointer gesetzt. Alle Keys sind nach dem Beenden der Funktion json_read() gleich lang und unleserlich. Aus Zeitmangel konnten wir diesen Bug nicht fixen. Daher kann das Programm keine Daten beim öffnen automatisch laden. Um dies zu simulieren werden statische Daten am Anfang anstelle der Daten aus der Datei geladen.
Speichert die Liste der Studenten in einer Datei ab.
Parameter | Typ | Beschreibung |
---|---|---|
data | LinkedList* | Zu speichernde Daten |
Vergleicht zwei Studenten anhand ihrer Nachnamen. Gibt 0 bei Gleichheit, > 0 wenn das erste vor dem zweiten kommt und < 0 wenn das zweite vor dem ersten Kommt.
Parameter | Typ | Beschreibung |
---|---|---|
first | Item* | Erster Student |
sec | Item* | Zweiter Student |
Konstruktor der Struct Json zum schnellen Erstellen eines Json-Objekts des entsprechenden Typs.
Parameter | Typ | Beschreibung |
---|---|---|
type | char | Der Typ des Objekts |
Erstellt ein Json-Objekt des Typs .
Erstellt ein Json-Objekt des Typs
Parameter | Typ | Beschreibung |
---|---|---|
val | char* | Wert |
Erstellt ein Json-Objekt des Typs
Parameter | Typ | Beschreibung |
---|---|---|
val | char* | Wert |
Erstellt ein Json-Objekt des Typs
Parameter | Typ | Beschreibung |
---|---|---|
val | char* | Wert |
Erstellt ein Json-Objekt des Typs
Parameter | Typ | Beschreibung |
---|---|---|
val | char* | Wert |
Fügt ein Json-Objekt zu einer Json-Liste hinzu.
Parameter | Typ | Beschreibung |
---|---|---|
list | Json* | Liste zum hinzufügen |
val | Json* | Hinzuzufügendes Json-Objekt |
Fügt ein Element einem Json-Objekt hinzu.
Parameter | Typ | Beschreibung |
---|---|---|
obj | Json* | Objekt zu dem hinzugefügt wird |
key | char* | Schlüssel |
val | Json* | Hinzuzufügendes Json-Objekt |
Fügt einen String zu einem Json-Objekt hinzu.
Parameter | Typ | Beschreibung |
---|---|---|
obj | Json* | Objekt zu dem hinzugefügt wird |
key | char* | Schlüssel |
val | char* | Wert |
Fügt einen Integer zu einem Json-Objekt hinzu.
Parameter | Typ | Beschreibung |
---|---|---|
obj | Json* | Objekt zu dem hinzugefügt wird |
key | char* | Schlüssel |
val | int | Wert |
Gibt den Stringstream zu einem Json-Tree zurück.
Parameter | Typ | Beschreibung |
---|---|---|
j | Json | Zu interpretierdenes Json-Objekt |
Gibt eine Zeichenkette im Json-Format eines Json-Trees zurück.
Parameter | Typ | Beschreibung |
---|---|---|
j | Json | Zu interpretierdendesJson-Objekt |
Liest eine Json-Datei ein.
Parameter | Typ | Beschreibung |
---|---|---|
path | char* | Pfad zur Datei |
Gibt das Json-Objekt hinter dem übergebenene Key zurück.
Parameter | Typ | Beschreibung |
---|---|---|
obj | Json* | Json-Objekt in dem gesucht wird |
key | char* | Schlüssel |
Gibt den Speicher frei.
Parameter | Typ | Beschreibung |
---|---|---|
j | Json* | Zu löschendes Json-Objekt |
Konstruktor zum erstellen einer verketteten Liste
Erstellt ein Element einer verketteten Liste mit bestimmten Wert.
Parameter | Typ | Beschreibung |
---|---|---|
value | void* | Der Wert des Elements |
Fügt ein Element am Anfang hinzu und gibt die neue Länge zurück
Parameter | Typ | Beschreibung |
---|---|---|
list | LinkedList* | Die zu verändernde Liste |
value | void* | Hinzuzufügendes Element |
Fügt ein Element am Ende hinzu und gibt die neue Länge zurück
Parameter | Typ | Beschreibung |
---|---|---|
list | LinkedList* | Die zu verändernde Liste |
value | void* | Hinzuzufügendes Element |
Fügt ein Element an einer bestimmten Position hinzu und gibt die neue Länge zurück
Parameter | Typ | Beschreibung |
---|---|---|
list | LinkedList* | Die zu verändernde Liste |
value | void* | Hinzuzufügedes Element |
index | int | Position, an der hinzugefügt werden soll |
Entfernt das letzte Element und gibt es zurück
Parameter | Typ | Beschreibung |
---|---|---|
list | LinkedList* | Die zu verändernde Liste |
Entfernt das erste Element und gibt es zurück
Parameter | Typ | Beschreibung |
---|---|---|
list | LinkedList* | Die zu verändernde Liste |
Sortiert die Liste
Parameter | Typ | Beschreibung |
---|---|---|
list | LinkedList* | Die zu verändernde Liste |
compare | int(Item*, Item*) | Funktion zum vergleichen der Elemente |
Gibt ein Element an einer bestimmten Stelle zurück
Parameter | Typ | Beschreibung |
---|---|---|
list | LinkedList* | Die zu verändernde Liste |
index | int | Index des gesuchten Elements |
Gibt eine Liste auf der Konsole aus.
Parameter | Typ | Beschreibung |
---|---|---|
list | LinkedList* | Die auszugebende Liste |
Rückgabewert:
void
Dieses Projekt basiert auf verschiedenen Quellen im Internet. Alle enthaltenden Dateien wurden von uns selber geschrieben, basieren jedoch auf algorithmen und Strukturen, die sich bewährt haben. Ebenso wurden verschiedene Codefragmente aus Recherchen zu bestimmten Themen verwendet. Insbesondere die Umsetzung des Json-Interpreters, der Hash-Map und der Stringstreams basieren auf Codes von StackOverflow und YouTube. Genaue Quellen können wir leider nicht nennen, da wir den Code selber geschrieben und für unsere Bedürfnisse angepasst haben. Daher ist nicht mehr klar zu differenzieren, welcher Teil des Codes aus welcher Quelle kommt. Es ist ein Gesamtwerk, das auf unseren eigenen Recherchen basiert.