Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

C-Kurs/Studentendatenbank: Unterschied zwischen den Versionen

(Teil f)
 
(Eine dazwischenliegende Version von einem anderen Benutzer wird nicht angezeigt)
Zeile 28: Zeile 28:
  
 
=== Teil g ===
 
=== Teil g ===
Schreibe eine Funktion <tt>del_student</tt>, die eine Matrikelnummer und die Studentendatenbank übergeben bekommt. Sie soll den entsprechenden Studenten löschen. Verwende den Rückgabewert ebenfalls, um erfolgreichen Löschen anzuzeigen.
+
Schreibe eine Funktion <tt>del_student</tt>, die eine Matrikelnummer und die Studentendatenbank übergeben bekommt. Sie soll den entsprechenden Studenten löschen. Verwende den Rückgabewert ebenfalls, um erfolgreiches Löschen anzuzeigen.
  
 
Teste die Funktion, indem du einen vorher eingefügten Studenten wieder löscht.
 
Teste die Funktion, indem du einen vorher eingefügten Studenten wieder löscht.

Aktuelle Version vom 5. März 2013, 17:37 Uhr

In dieser Aufgabe soll eine kleine Studentendatenbank erstellt werden.

Aufgaben

Teil a

Schreibe eine Struktur student, die eine Matrikelnummer, einen Vornamen und einen Nachnamen mit jeweils passenden Datentypen enthält.

Teil b

Deklariere einen Pointer auf einen solchen Student und alloziere ihn passend. Initialisiere seine Martrikelnummer, seinen Vornamen und Nachnamen mit sinnvollen Werten. Schreibe nun eine Funktion print_student, die einen Pointer auf einen Studenten übergeben bekommt und seine Details in einer Zeile ausgeben soll. Teste diese Funktion jetzt mit dem zuvor angelegten Studenten.

Teil c

Lege jetzt ein Array von Pointern auf Studenten der Größe 10 an. Initialisiere zunächst alle Elemente mit NULL, damit sich darin keine unvorhersehbaren Studenten befinden. Weise nun dem ersten Element den aus Teil b angelegten Studenten zu. Schreibe nun einen Funktion print_students_db, die ein Pointer auf ein Array aus Studenten-Pointern übergeben bekommt, und alle Studenten ausgeben soll. Prüfe dabei, ob das jeweilige Element nicht NULL ist und benutzte dann die vorher geschriebene Funktion print_student. Wende nun die Funktion auf die Studentendatenbank an.

Teil d

Lege nun mindestens zwei weitere Studenten in der Datenbank an und lösche den ersten (dabei nicht vergessen, den Speicher wieder freizugeben). Gebe erneut die Studentendatenbank aus und überprüfe das Ergebnis.

Teil e

Am Ende wollen wir wieder aufräumen. Schreibe dazu eine Funktion clear_db, die die Studentendatenbank (wieder ein Pointer auf das Studenten-Pointer-Array) übergeben bekommt, und darin alle Einträge, die nicht NULL sind, löscht (also deren Speicher freigibt).

Teil f

Schreibe eine Funktion get_student_index, die eine Matrikelnummer und die Studentendatenbank übergeben bekommt. Sie soll die Indexposition im Array zurückgeben, an der der gesuchte Student zu finden ist. Falls es keinen Student gibt, der die Matrikelnummer hat, soll -1 zurückgegeben werden.

Schreibe anschließend eine Funktion add_student, die Matrikelnummer, Vor- und Nachname des hinzuzufügenden Studenten und die Studentendatenbank übergeben bekommt. Benutzte darin die Funktion get_student_index, um sicherzustellen, dass du nicht mehrere Studenten mit derselben Matrikelnummer in der Datenbank hast. Füge den neuen Studenten im Array an der ersten Position, die NULL enthält, ein. Überlege dir auch einen passenden Rückgabewert, der angibt, ob der Student erfolgreich eingefügt wurde.

Teste die Funktion, indem du mindestens drei Studenten einfügst, von denen zwei die gleiche Matrikelnummer haben.

Teil g

Schreibe eine Funktion del_student, die eine Matrikelnummer und die Studentendatenbank übergeben bekommt. Sie soll den entsprechenden Studenten löschen. Verwende den Rückgabewert ebenfalls, um erfolgreiches Löschen anzuzeigen.

Teste die Funktion, indem du einen vorher eingefügten Studenten wieder löscht.

Zusatzaufgabe

Schreibe jetzt eine menügesteuerte Benutzerschnittstelle, die Hinzufügen und Löschen eines Studenten, und Ausgeben der kompletten Datenbank, ermöglicht.

Kommentare

Wenn du Anmerkungen zur Aufgabe hast oder Lob und Kritik loswerden möchtest, ist hier die richtige Stelle dafür. Klicke einfach ganz rechts auf "bearbeiten" und schreibe deinen Kommentar direkt ins Wiki. Keine Scheu, es geht nichts kaputt ;)