Zadanie zaliczeniowe z laboratorium Pascala i C. ZSI1. 00/01 Termin opublikowania: tydzien 8.01-12.01 Termin oddania: tydzien 22.01-26.01 Baza danych z indeksami (4 pkt) Napisz program umozliwiajacy tworzenie bazy danych o osobach i wyszukiwanie w niej informacji. Dla kazdej osoby w bazie beda przechowywane nastepujace informacje: - imie (napis max. 15 znakow) - nazwisko (napis max. 40 znakow) - plec (wartosc typu wyliczeniowego ze stalymi "kobieta" i "mezczyzna") - rok urodzenia (liczba calkowita) Program powinien umozliwiac wykonywanie nastepujacych operacji: 1. Otworzenie bazy danych o podanej nazwie lub stworzenie nowej (poczatkowo pustej) bazy. 2. Dodanie do bazy danych nowego rekordu 3. Wyszukanie wszystkich osob, ktorych nazwiska rozpoczynaja sie od wskazanego napisu (np. dla 'Kow' powinnismy odnalezc osoby o nazwiskach 'Kowalski' i 'Kowalik'). 4. Wyszukanie wszystkich osob urodzonych w podanym roku. 5. Zamkniecie bazy danych i zakonczenie pracy. Baza danych powinna byc przechowywana w postaci pliku (nazwa z rozszerzeniem .DAT) rekordow opisujacych poszczegolne osoby. Dodatkowo, by usprawnic wyszukiwanie rekordow, nalezy utworzyc tzw. indeksy, ktore beda przechowywane w plikach o nazwie takiej jak nazwa bazy danych i rozszerzeniu .IXN (w przypadku indeksu ulatwiajacego wyszukiwanie wg nazwiska) lub .IXU (w przypadku indeksu ulatwiajacego wyszukiwanie wg daty urodzenia). Indeks nazwisk bedzie plikiem numerow rekordow uporzadkowanym wg nazwisk (leksykograficznie), indeks dat urodzenia bedzie przechowywal numery rekordow w kolejnosci wyznaczonej przez daty urodzenia. Np. dla bazy zawierajacej dane o nastepujacych osobach: Michal Zalewski, mezczyzna, 1963 Jan Kowalski, mezczyzna, 1974 Stanislaw Nowak, mezczyzna, 1973 Piotr Nowak, nezczyzna, 1974 indeks nazwisk powinien miec postac: 1, 2, 3, 0 lub 1, 3, 2, 0 a indeks dat urodzenia: 0, 2, 1, 3 lub 0, 2, 3, 1 Kiedy uzytkownik poprosi o odnalezienie osob urodzonych w danym roku, wyszukujemy w indeksie numery odpowiednich rekordow stosujac wyszukiwanie binarne a nastepnie wypisujemy zawartosc tych rekordow. Analogicznie postepujemy w przypadku pytania o nazwiska. Operacja dodania rekordu do bazy danych wymaga oczywiscie takze modyfikacji indeksow. Rekord jest dopisywany na koniec a jego numer we wlasciwe miejsca wszystkich (obu) plikow indeksowych. Zakladamy, ze operacja ta bedzie wykonywana bardzo rzadko, wiec jej nieefektywnosc (w przypadku pesymistycznym - gdy numer indeksu mamy wstawic na poczatek - musimy przepisac caly indeks) nie ma dla nas znaczenia.