Menu
Archwium
Kategorie
Miniblog
Szukaj

[3]

13 Mar 2008, 16:34:13, Infa, Projekty | Trackback

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: 1

Komentarze:

Dodaj komentarz:

HTML w komentarzach jest wyłączony, możesz jednak skorzystać z Textile Lite.

<< Powrót do reszty wpisów