Prosty katalog książek, czyli mała zabawa na rekordach.
program zad3;
uses crt;
type karta=record
imie,nazwisko,tytul:string;
rok_wyd,strony:integer;
dostepnosc:boolean;
end;
Tkarta=file of karta;
function test(plik:string):boolean; {test istnienia pliku}
var f:file of karta;
begin
assign(f,plik);
{$I-} {wylaczenie dyrektywy kompilatora}
reset(f); {proba otwarcia pliku}
{$I+}
test:=true;
if IOResult = 0 then close(f) {jesli udana}
else test:=false; {w przeciwnym przypadku}
end;
procedure dodaj(var baza:Tkarta);
var zm:karta;
begin
seek(baza,filesize(baza));
write('Podaj imie: ');
readln(zm.imie);
write('Podaj nazwisko: ');
readln(zm.nazwisko);
write('Podaj tytul: ');
readln(zm.tytul);
write('Podaj rok wydania: ');
readln(zm.rok_wyd);
write('Podaj ilosc stron: ');
readln(zm.strony);
zm.dostepnosc:=true;
write(baza,zm);
end;
procedure wyszukaj(var baza:Tkarta);
var zm:karta;
i:integer;
nazwisko:string;
begin
write('Podaj nazwisko autora: ');
read(nazwisko);
seek(baza,0);
i:=1;
repeat
read(baza,zm);
if nazwisko=zm.nazwisko then begin
writeln(i,'. ',zm.nazwisko,' ',zm.imie,' "',zm.tytul,'" ',zm.rok_wyd,' str.',zm.strony);
inc(i);
end;
until eof(baza);
writeln('Znalezionych pozycji: ',i-1);
readln;
readln;
end;
procedure wyswietl(var baza:Tkarta);
var zm:karta;
i:integer;
begin
seek(baza,0);
i:=1;
repeat
read(baza,zm);
writeln(i,'. ',zm.imie,' ',zm.nazwisko,' "',zm.tytul,'", rok ',zm.rok_wyd,', str. ',zm.strony);
i:=i+1;
until eof(baza);
readln;
end;
procedure glowna; {procedura zarzadzajaca odczytem i tworzeniem pliku}
var baza:Tkarta;
nazwa:string;
key:char;
begin
if (ParamCount=1) and test(ParamStr(1)) then begin
assign(baza,ParamStr(1)); {jesli byl 1 parametr i plik istnieje}
reset(baza);
end else begin
write('Podaj nazwe pliku: '); readln(nazwa);
assign(baza,nazwa); {prosimy o nazwe pliku}
if test(nazwa) then reset(baza) {jesli istnieje otwieramy}
else rewrite(baza); {w p.p. tworzymy}
end;
repeat
clrscr;
writeln(',-----------------------.');
writeln('| Menu programu: |');
writeln('|-(1) - Dodaj ksiazke |');
writeln('|-(2) - Wyszukaj autora |');
writeln('|-(3) - Wyswietl liste |');
writeln('|-(4) - Wyjscie |');
writeln('`-----------------------`');
key:=readkey;
case key of
'1':dodaj(baza);
'2':wyszukaj(baza);
'3':wyswietl(baza);
end;
until key='4';
close(baza);
end;
begin
glowna;
end.Wynik z konsoli:
maniek@maniek:~$ ./zad3
,-----------------------.
| Menu programu: |
|-(1) - Dodaj ksiazke |
|-(2) - Wyszukaj autora |
|-(3) - Wyswietl liste |
|-(4) - Wyjscie |
`-----------------------`
Podaj nazwisko autora: Mickiewicz
1. Mickiewicz Adam "Pan Tadeusz" 1999 str.500
Znalezionych pozycji: 1HTML w komentarzach jest wyłączony, możesz jednak skorzystać z Textile Lite.