C-Kurs/Studentendatenbank: Unterschied zwischen den Versionen
K |
|||
Zeile 12: | Zeile 12: | ||
=== Teil c === | === Teil c === | ||
Lege jetzt ein Array von Pointern auf Studenten der Größe 10 an. Initialisiere zunächst alle Elemente mit <tt>NULL</tt>, damit sich darin unvorhersehbaren Studenten befinden. Weise nun dem ersten Element den aus Teil b angelegten Studenten zu. | Lege jetzt ein Array von Pointern auf Studenten der Größe 10 an. Initialisiere zunächst alle Elemente mit <tt>NULL</tt>, damit sich darin unvorhersehbaren Studenten befinden. Weise nun dem ersten Element den aus Teil b angelegten Studenten zu. | ||
− | Schreibe nun einen Funktion <tt> | + | Schreibe nun einen Funktion <tt>print_students_db</tt>, die ein Pointer auf ein Array aus Studenten-Pointern übergeben bekommt, und alle Studenten ausgeben soll. Prüfe dabei, ob das jeweilige Element nicht <tt>NULL</tt> ist und benutzte dann die vorher geschriebene Funktion <tt>print_student</tt>. Wende nun die Funktion auf die Studentendatenbank an. |
=== Teil d === | === Teil d === | ||
Zeile 19: | Zeile 19: | ||
=== Teil e === | === Teil e === | ||
Am Ende wollen wir wieder aufräumen. Schreibe dazu eine Funktion <tt>clear_db</tt>, die die Studentendatenbank (wieder ein Pointer auf das Studenten-Pointer-Array) übergeben bekommt, und darin alle Einträge, die nicht <tt>NULL</tt> sind, löscht (also deren Speicher freigibt). | Am Ende wollen wir wieder aufräumen. Schreibe dazu eine Funktion <tt>clear_db</tt>, die die Studentendatenbank (wieder ein Pointer auf das Studenten-Pointer-Array) übergeben bekommt, und darin alle Einträge, die nicht <tt>NULL</tt> sind, löscht (also deren Speicher freigibt). | ||
+ | |||
+ | === Teil f === | ||
+ | Schreibe eine Funktion <tt>get_student_index</tt>, 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 <tt>add_student</tt>, die Matrikelnummer, Vor- und Nachname des hinzuzufügenden Studenten und die Studentendatenbank übergeben bekommt. Benutzte darin die Funktion <tt>get_student_index</tt>, 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 <tt>NULL</tt> enthält, ein. Überlege die auch einen passenden Rückgabewert, der angibt, ob der Student erfolgreich eingefügt werden soll. | ||
+ | |||
+ | Teste die Funktion, indem du mindestens drei Studenten einfügst, von denen zwei die gleiche Matrikelnummer haben. | ||
+ | |||
+ | === 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. | ||
+ | |||
+ | 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 == | == Kommentare == |
Version vom 21. September 2009, 17:53 Uhr
In dieser Aufgabe soll eine kleine Studentendatenbank erstellt werden.
Inhaltsverzeichnis
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 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 die auch einen passenden Rückgabewert, der angibt, ob der Student erfolgreich eingefügt werden soll.
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 erfolgreichen 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 ;)