Spis treści

Struktury

Deklaracja typu strukturalnego

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

Tworzenie i używanie zmiennej strukturalnej

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;

Instrukcja typedef

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;

Przykład

struct.c
#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);
}

Ćwiczenia

Ćwiczenie: baza danych

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:

  1. wyswietl - wyświetlenie całej bazy danych
  2. dodaj - dodanie nowego rekordu do bazy danych
  3. usun - usunięcie rekordu z bazy danych wskazanego przez numer
  4. zamien - modyfikacja zawartości rekordu wskazanego przez numer
  5. zamknij - zamkniecie programu

Zaimplementuj 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.

Zadanie

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