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

(Die Seite wurde neu angelegt: „In dieser Aufgabe soll eine kleine Studentendatenbank erstellt werden. == Aufgaben == === Teil a === Schreibe eine Struktur ''student'', die eine Matrikelnummer...“)
 
 
(9 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 4: Zeile 4:
  
 
=== Teil a ===
 
=== Teil a ===
Schreibe eine Struktur ''student'', die eine Matrikelnummer, einen Vornamen und einen Nachnamen mit jeweils passenden Datentypen enthält.
+
Schreibe eine Struktur <tt>student</tt>, die eine Matrikelnummer, einen Vornamen und einen Nachnamen mit jeweils passenden Datentypen enthält.
  
 
=== Teil b ===
 
=== Teil b ===
Deklariere einen Pointer auf einen solchen Student und alloziere ihn passend. Initialisiere seine Matrikelnummenr, seinen Vornamen und Nachnamen mit sinnvollen Werten.
+
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 Student.
+
Schreibe nun eine Funktion <tt>print_student</tt>, 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 ===
 
=== 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.
+
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 keine unvorhersehbaren Studenten befinden. Weise nun dem ersten Element den aus Teil b angelegten Studenten zu.
Schreibe nun einen Funktion ''print_studenten_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.
+
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 18: Zeile 18:
  
 
=== Teil e ===
 
=== 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).
+
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 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 <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.
 +
 
 +
=== 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 ;)
 +
 
 +
<!--
 +
Als kleine Starthilfe folgt ein Beispiel, wie so ein Kommentar formatiert sein könnte. Mit "Vorschau zeigen" kannst du dir ansehen, was deine Änderung bewirken würde, ohne wirklich etwas zu ändern.
 +
Du musst übrigens außerhalb dieses auskommentieren Bereichs schreiben ;)
 +
-->

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 ;)