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.

Podobne dokumenty