Program obsługujący pliki elementowe
Transkrypt
Program obsługujący pliki elementowe
Informatyka II – MPZI 2 Laboratorium 5 Delphi - Program obsługujący pliki elementowe Poniżej przykładowy kod programu korzystającego z procedur selekcjonujących działania na pliku elementowym: program baza_ksiazek; {$APPTYPE CONSOLE} uses SysUtils; type ksiazka= record autor:String[15]; tytul: String[20]; cena: real; end; var operacja:char; plik:file of ksiazka; egz: ksiazka; //procedury procedure menu(var znak:char); begin writeln('Wybierz dzialanie'); writeln('1 - Zalozenie pliku'); writeln('2 - Dopisanie rekordu'); writeln('3 - Odczyt danych'); writeln('k/K - Koniec'); writeln; write('Twoj wybor:'); readln (znak); end; procedure utworz; begin assignfile(plik,'ksiazki.bin'); rewrite(plik); writeln('Utworzono plik'); closefile(plik); end; procedure dopisz; begin assignfile(plik,'ksiazki.bin'); reset(plik); //przewiniecie pliku na koniec while not eof(plik) do read(plik,egz); write('Autor:'); readln(egz.autor); write('Tytul:'); readln(egz.tytul); write(plik, egz); closefile(plik); end; procedure pokaz; begin assignfile(plik,'ksiazki.bin'); reset(plik); write('Autor:':20); writeln('Tytul:':20); while not eof(plik) do begin read(plik,egz);//odczyt rekordu z pliku write(egz.autor:20); writeln(egz.tytul:20); end; write('Powrot do menu?'); readln; closefile(plik); end; //program glowny begin repeat menu(operacja); case operacja of '1': utworz; '2': dopisz; '3': pokaz; end; until (operacja='k') or (operacja='K'); end. Ćwiczenie Bazując na powyższym pliku: 1. Zapoznać się z działaniem programu. Przetestować jego funkcjonowanie. 2. Uzupełnić program o dopisywanie cen dla każdej książki i wyświetlanie jej w spisie obok autora i tytułu. 3. Przy pomocy programu założyć niewielką bazę książek w pliku - około 10 rekordów. 4. Dopisać do programu nową procedurę, której rolą będzie wyszukanie w pliku i wypisywanie na ekranie danych książek o wpisanym na konsoli nazwisku autora. Umieścić odpowiednią pozycję w menu. Trudniejsze: Aby program działał prawidłowo wówczas, gdy jako wzorzec wpisujemy tylko początek nazwiska autora, można wykorzystać: funkcję length(tekst):integer – wyznaczenie długości łańcucha testowego, procedurę delete(tekst, pozycja, dlugosc) – usuwanie z tekstu ciągu znaków o długości długosc od znaku pozycja. 5. Dopisać procedurę znajdywania w pliku i wypisywania na ekranie danych dla książek o cenach większych od 20. Umieścić odpowiednią pozycję w menu. 6. Dopisać procedurę sumującą i wyświetlającą na ekranie ceny wszystkich książek. Umieścić odpowiednią pozycję w menu. 7. Ponieważ opcja 1 zakłada nowy plik niszcząc istniejące dane, utworzyć zabezpieczenie w postaci: a. badania czy plik istnieje przy pomocy predefiniowanej funkcji: FileExists(ścieżka\nazwa:string):boolean b. komunikatu ostrzegawczego (jeśli plik istnieje), z decyzją akceptacji lub odmowy.