May 15, 2024, Wednesday, 135

C/Zadanie7 2015

From MJanik

Jump to: navigation, search

Na laboratoriach ponownie pojawią się struktury, tym razem również zagnieżdżone. Z nowości równeż: Makefile, podział na pliki .c i .h oraz enum. Powtórzymy również funkcje i tablice struktur.


Zadanie polega na stworzeniu bazy danych studentów Politechniki Warszawskiej. Zakładamy, że każdy student może być opisany przez następujący zestaw danych: char imie[30], char nazwisko[100], int wiek, int rokStudiow, int ECTS, int wydzial. Zauważmy, że imię, nazwisko oraz wiek pełnią rolę danych osobowych, zatem możemy je umieścić w jednej strukturze o nazwie DaneOsobowe. Z kolei struktura Student będzie zawierała DaneOsobowe, rok studiów, punkty ECTS oraz wydział. Do wykonania:


  • Stwórz strukturę DaneOsobowe zawierającą składniki: char imie[30], char nazwisko[100], int wiek. Umieść definicję struktury w pliku DaneOsobowe.h. Stwórz 2 funkcje powiązane ze strukturą DaneOsobowe: void UstawDaneOsobowe(DaneOsbowe *dane, char *imie, char *nazwisko, int wiek) oraz void WypiszDaneOsobowe(DaneOsobowe *dane) ustawiające i wypisujące składniki struktury DaneOsobowe. Umieść deklaracje funkcji w pliku DaneOsobowe.h a ich definicje w pliku DaneOsobowe.c. Ustawiamy poleceniem typedef nazwę struktury na DaneOsobowe. (1.5 p.)


  • Stwórz strukturę Student zawierającą składniki: DaneOsobowe dane, int rokStudiow, int ECTS, int wydzial. Umieść strukturę w pliku Student.h. Stwórz 2 funkcje powiązane ze strukturą Student:
    • void UstawStudent(Student *student, char *imie, char *nazwisko, int wiek, int rokStudiow, int ECTS, int wydzial) oraz
    • void WypiszStudent(Student *student) ustawiające i wypisujące składniki struktury DaneOsobowe.

Uwaga! Funkcje powinny wywoływać odpowiednie funkcje ustawiające i wypisujące ze struktury DaneOsobowe. Umieść deklaracje funkcji w pliku Student.h a ich definicje w pliku Student.c. Dla ułatwienia zakładmy, że wydział może być typu wyliczeniowego enum. Stworzyć w pliku Student typ wyliczeniowy: enum wydzialy{FIZYKI, MINI, CHEMICZNY, MEIL, EITI}; Typ wyliczeniowy wykorzystujemy w funkcji WypiszStudent, gdy wypisujemy nazwę wydziału (instrukcja switch-case). Ustawiamy poleceniem typedef nazwę struktury na Student. (2 p.)


  • W funkcji głównej (main) tworzymy dynamicznie tablicę obiektów typu Student. Tablicę wypełniamy danymi z pliku studenci.txt, w którym w pierwszej linijce przechowywana jest liczba studentów zawartych w pliku. Po wypełnieniu tablicy danymi z pliku wypisujemy studentów na ekran. (1 p.)
  • Całość kompilujemy w linii poleceń używając pliku Makefile oraz polecenia make. (0.5 p)
  • Zrozumienie, analiza treści, projekt programu + poprawność i estetyka kodu (oraz wypisywanych informacji). (1 p.)