[ Pobierz całość w formacie PDF ]
.Jeśli zostanie znalezione jakiekolwiek dopasowanie, to zostanie ono dołączone do wyniku wyszukiwania.Funkcje opisujące płytę DVDFilmy (czyli tytuły) i fizyczne płyty DVD traktujemy oddzielnie, ponieważ można wypożyczyć tylko specyficzną płytę, chcemy zaś rezerwować tytuł do wypożyczenia w przyszłości.Rezerwacja nie dotyczy więc konkretnej płyty, lecz tytułu.System obsługujący wypożyczalnię będzie przydzielał fizyczną płytę w momencie wypożyczenia.Każda płyta DVD ma unikatowy identyfikator.Obowiązuje tu zasada, że każda kopia jest oznaczona tym samym numerem.Wpis dla każdej fizycznej płyty w bazie danych zawiera informację o tym, który film znajduje się na danej kopii.Informacja ta musi być wprowadzona przez właściciela wypożyczalni w momencie otrzymania płyt.Wpis zawierający dane płyty jest strukturą publiczną:typedef struct {int disk_id; /* wewn.ID [1.] (nie wiąże się z title_id) */int title_id; /* title_id - ID filmu, którego to dotyczy */} dvd_disk;Interfejs obsługujący tytuł filmu działa w taki sam sposób jak API dla obsługi tytułów.Identyfikator jest przydzielany wewnętrznie.Funkcja wyszukiwania zwraca listę identyfikatorów płyt dla podanego identyfikatora tytułu filmu:int dvd_disk_set(const dvd_disk *disk_record_to_update);int dvd_disk_get(const int disk_id, dvd_disk *disk_record_to_complete);int dvd_disk_create(dvd_disk *disk_record_to_add, int *disk_id);int dvd_disk_delete(const int disk_id);int dvd_disk_search(const int title_id, int *result_ids[], int *count);Funkcje związane z wypożyczaniemKażdy klient wypożyczalni może wypożyczyć dowolną liczbę płyt.Każde wypożyczenie jest rejestrowane, łącznie z datą wypożyczenia.Każdy klient może zarezerwować jeden tytuł na podany dzień.Format daty używany w systemie to YYYYMMDD.Bieżąca data jest uzyskiwana z wywołania funkcji pomocniczej dvd_today.Funkcja ta przekształca przekazany wskaźnik tak, aby wskazywał on na statyczną strukturę przechowującą bieżącą datę w poprawnej postaci:int dvd_today(char **date);Do sprawdzenia, czy dany tytuł będzie dostępny danego dnia, służy funkcja dvd_title_available.Data musi być podana w formacie YYYYMMDD.int dvd_title_available(const int title_id, const char *date, int *count);Argument count po modyfikacji zawiera liczbę kopii filmu, które prawdopodobnie będą dostępne danego dnia (może to być wartość zerowa).Film DVD może być wypożyczony i wiąże się to z przydzieleniem fizycznej płyty za pomocą wywołania dvd_rent_title.int dvd_rent_title(const int member_id, const int title_id, int *disk_id);Kopia filmu o danym identyfikatorze na fizycznej płycie (jeśli jest dostępna) jest przydzielana i zwracana jako wartość argumentu disk_id.Dla klienta o danym identyfikatorze dokonywany jest wówczas wpis wypożyczenia w bazie danych.Jeżeli płyta nie jest dostępna, to będzie zwrócone DVD_ERR_NOT_FOUND.Informacje o wypożyczeniu i zwrot płyty DVD obsługują wywołania dvd_rented_disk_info i dvd_disk_return.int dvd_rented_disk_info(const int disk_id, int *member_id, char *date_rented);int dvd_disk_return(const int disk_id, int *member_id, char *date_rented);Dla podanego identyfikatora płyty powyższe funkcje zwracają identyfikator klienta, który daną płytę wypożyczył, oraz datę wypożyczenia.Przy wywołaniu dvd_disk_return informacja o wypożyczeniu jest usuwana.int dvd_reserve_title(const char *date, const int title_id, const int member_id);int dvd_reserve_title_cancel(const int member_id);Druga rezerwacja dokonana przez klienta spowoduje anulowanie jego poprzedniej rezerwacji.Dane na temat ostatniego żądania rezerwacji dla danego klienta mogą być uzyskane za pomocą wywołania dvd_reserve_title_query_by_member:int dvd_reserve_title_query_by_member(const int member_id, int *title_id);Dodatkowe funkcje, które nie występują w przykładowej aplikacji, lecz nadal są przedmiotem naszego zainteresowania, są następujące:int dvd_reserve_title_query_by_titledate(const int title_id, const char *date, int *member_ids[])Funkcja ta zwraca listę członków, którzy zarezerwowali podany tytuł na dany dzień.Data o wartości NULL oznacza dowolną datę:int dvd_overdue_disks(const char *date1, const char *date2, int *disk_ids[], int *count)Powyższa funkcja przegląda tabelę wypożyczeń szukając płyt, dla których data wypożyczenia zawiera się między date1 a date2.Wartości NULL dla tych dat oznaczają odpowiednio początek odliczania czasu (czyli 1 stycznia 1970 r.) i dzień jutrzejszy [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • igraszki.htw.pl