zmienna.pole
. wskaznik–>pole
a=b
). Struktura może być argumentem funkcji oraz wartością zwracaną z funkcji
Poniższy fragment kodu deklaruje nowy typ o nazwie struct student
składający się z 4 pól
struct student { char nazwisko[30]; char imie[30]; int indeks; float ocena; };
Definicja zmiennej o nazwie stefan
, która jest typu struct student
struct student stefan;
Przypisanie wartości 4.5 do pola ocena
stefan.ocena = 4.5;
Odczyt wartości z pola indeks
x = stefan.indeks;
Za pomocą typedef możemy zdefiniować nową nazwę typu. Przykładowo, pozwala ona skrócić nazwę typu strukturalnego.
Poniższa instrukcja definiuje typ o nazwie STUDENT
, który jest od teraz równoważny typowi struct student
.
typedef struct student STUDENT;
Deklaracja nowej zmiennej zenon
typu struct student
może teraz wyglądać w taki sposób:
STUDENT zenon;
#include <stdio.h> #include <string.h> #define MAX 256 // deklaracja typu struct osoba struct osoba { char nazwisko[MAX]; char imie[MAX]; int wiek; }; typedef struct osoba DANE; int main() { struct osoba agent; DANE student; struct osoba *wsk; strcpy(agent.nazwisko, "Bond"); strcpy(agent.imie, "James"); agent.wiek = 33; strcpy(student.nazwisko, "Kowalski"); strcpy(student.imie, "Jan"); student.wiek = 21; printf("Imie %s\nNazwisko %s\nWiek %d\n\n", agent.imie, gent.nazwisko, agent.wiek); printf("Imie %s\nNazwisko %s\nWiek %d\n\n", student.imie, student.nazwisko, student.wiek); wsk = &agent; strcpy((*wsk).nazwisko, "Kloss"); strcpy(wsk->imie, "Hans"); wsk->wiek--; printf("Imie %s\nNazwisko %s\nWiek %d\n\n", agent.imie, agent.nazwisko, agent.wiek); }
wyswietl
, która wypisuje na standardowym wyjściu wartości wszystkich pól zmiennej strukturalnej typu struct osoba
.wczytaj
, która zwraca zmienną typu struct osoba
wypełnioną wartościami podanymi przez użytkownika na standardowym wejściu (terminalu)Zaimplementuj prostą bazę danych osobowych składającą się z sekwencji rekordów zawierających dane osobowe: imię, nazwisko i wiek osób umieszczonych w bazie danych. Struktury zawierające dane przechowuj w odpowiedniej tablicy. Dla uproszczenia zakładamy, że maksymalna ilość rekordów nie przekroczy 1000. Program po uruchomieniu wypisuje menu z możliwymi akcjami do wykonania po podaniu liczby od 1 do 5:
wyswietl
- wyświetlenie całej bazy danychdodaj
- dodanie nowego rekordu do bazy danychusun
- usunięcie rekordu z bazy danych wskazanego przez numer zamien
- modyfikacja zawartości rekordu wskazanego przez numer zamknij
- zamkniecie programuZaimplementuj wszystkie funkcjonalności opisane w powyższym menu. Zadbaj o obsługę sytuacji wyjątkowych, np. gdy podczas usuwania rekordu użytkownik poda niepoprawny numer. Po wykonaniu akcji 1, 2, 3 lub 4 menu ponownie jest wyświetlane i użytkownik ponownie może wykonać jedną z akcji. Wybranie pozycji nr 5 kończy działanie programu.
Rozszerz działanie programu z zajęć realizującego prosta bazę danych osobowych (zob. ćwiczenie: baza danych) dodając następujące funkcjonalności:
Do rozwiązania zadania można wykorzystać plik baza.c, który zawiera program realizujący treść ćwiczenia z laboratorium.
Rozwiązanie umieść w Moodle pod adresem: https://moodle.umk.pl/WFAIIS/mod/assign/view.php?id=2182