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 prostą bazę danych osobowych (zob. ćwiczenie: baza danych) dodając następujące funkcjonalności:
Do rozwiązania zadania można wykorzystać plik z zajęć baza.c zawierający rozwiązanie ćwiczenia baza danych.
Rozwiązanie umieść w Moodle pod adresem: https://moodle.umk.pl/WFAIIS/mod/assign/view.php?id=7594