Jsem ochotná zaplatit.
Potřebuji napsat program na následující zadání:
Vytvořte program, který bude realizovat následující operace se seznamem knih v knihovně:
vložení nové knihy do seznamu (realizováno procedurou VLOZ bez parametru)
vyhledaní knihy (realizováno procedurou HLEDEJ, jejímž parametrem bude řetezec, který mají obsahovat údaje o knize)
vymazání knihy ze seznamu (procedura VYMAZ, kniha určena signaturou)
opravu údajů o knize (procedura OPRAV)
uložení seznamu na disk (procedura NaDisk, jejímž parametrem bude jméno souboru)
načtení uloženého seznamu z disku (procedura ZDisku, jejímž parametrem bude jméno souboru)
O každé knize budou v seznamu následující informace:
název
autor
signatura (např. 123456g)
poznámka (max 80 znaků)
Program realizujte pomocí dynamické struktury.
Zasílám, co mám:
Program Knihovna;
Const HMez = 3;
Type TPocknih = 0..HMez;
Type Tkniha = record
nazev: string[30];
autor: string [30];
signatura: string[11];
poznamka:string[30];
end;
Pkniha = ^Tkniha;
Tknihy = array[1..HMez] of Pkniha;
var Seznam: Tknihy;
Pocet: TPocknih;
a:Pkniha;
Procedure Menu(var Sezn: Tknihy; var Pocknih: TPocknih); forward;
Procedure Nactiknihy(var Sezn: Tknihy; var Pocknih: TPocknih);
var Zaplneno: boolean;
Jm: string;
begin
writeln('Zadani knih');
writeln('---------------');
writeln;
Zaplneno:=false;
repeat
if Pocknih>=HMez then Zaplneno:=true
else begin
inc(Pocknih);
write('Nazev knihy: ');
readln(Jm);
if Jm<>'' then begin
new(Seznam[Pocknih]);
if Seznam[Pocknih]<>nil then
with Sezn[Pocknih]^ do begin
nazev:=Jm;
write('Autor: ');
readln(autor);
write('Signatura: ');
readln(signatura);
write('Poznamka: ');
readln(poznamka);
end
else begin
writeln('Chyba pri alokaci polozky seznamu!');
Jm:=''; {dojde k ukonceni cyklu}
end;
end;
end;
writeln;
until (Zaplneno) or (Jm='');
if Jm='' then dec(Pocknih);
writeln('Udaje byly nacteny.');
Menu(Seznam, Pocet);
end;
Procedure Vypisknihy(var Sezn: Tknihy; var Pocknih: TPocknih);
var i: TPocknih;
begin
writeln('Vypis knih');
writeln('--------------');
writeln;
writeln('nazev knihy | autor | signatura | poznamka' );
writeln('-----------------------------------------------------------');
for i:=1 to Pocknih do
with Sezn[i]^ do begin
write(nazev,' ');
write(autor:20,' ');
write(signatura:10,' ');
write(poznamka:20,' ');
writeln();
end;
writeln('-----------------------------------------------------------');
writeln('Celkem knih: ',Pocknih);
Menu(Seznam, Pocet);
end;
Procedure ZapisDoTXT(var Sezn: Tknihy; var Pocknih: TPocknih);
var i: TPocknih;
stxt: text;
JmSouboru: string;
chyba: boolean;
begin
writeln('Ulozeni seznamu do textoveho souboru');
writeln('------------------------------------');
writeln;
{$I-}
repeat
writeln('Zadejte nazev souboru: ');
readln(JmSouboru);
assign(stxt, JmSouboru);
append(stxt);
chyba:=(IOResult<>0);
if chyba then writeln('Chyba!');
until not chyba;
for i:=1 to Pocknih do
with Sezn[i]^ do begin
write(stxt, nazev,' ');
write(stxt, autor,' ');
write(stxt, signatura,' ');
write(stxt, poznamka,' ');
end;
close(stxt);
{$I+}
Menu(Seznam, Pocet);
end;
Procedure nacteniTXT(var Sezn: Tknihy; var Pocknih: TPocknih);
var i: TPocknih;
stxt: text;
JmSouboru: string;
chyba: boolean;
begin
writeln('Nacteni seznamu z textoveho souboru');
writeln('------------------------------------');
writeln;
{$I-}
repeat
writeln('Zadejte nazev souboru: ');
readln(JmSouboru);
assign(stxt, JmSouboru);
reset(stxt);
chyba:=(IOResult<>0);
if chyba then writeln('Chyba!');
until not chyba;
writeln('Vypis knih');
writeln('--------------');
writeln;
writeln('nazev knihy | autor | signatura | poznamka' );
writeln('-----------------------------------------------------------');
for i:=1 to Pocknih do
with Sezn[i]^ do begin
read(stxt, nazev);
read(stxt, autor);
read(stxt, signatura);
read(stxt, poznamka);
write(nazev,' ');
write(autor:20,' ');
write(signatura:10,' ');
write(poznamka:20,' ');writeln();
end;
close(stxt);
{$I+}
Menu(Seznam, Pocet);
end;
Procedure VymazSeznam(var Sezn: Tknihy; var Pocknih: TPocknih);
var i: TPocknih;
begin
for i:=1 to Pocknih do begin
dispose(Seznam[i]);
Seznam[i]:=nil;
end;
Pocknih:=0;
writeln('Seznam byl vymazan.');
Menu(Seznam, Pocet);
end;
Procedure Vymaz(var Sezn: Tknihy; var Pocknih: TPocknih);
var i: TPocknih;
begin
for i:=1 to Pocknih do begin
dispose(Seznam[i]);
Seznam[i]:=nil;
end;
Pocknih:=0;
end;
Procedure Menu(var Sezn: Tknihy; var Pocknih: TPocknih);
var polozka: string;
begin
repeat
writeln('Evidence knih');
writeln('-----------------');
writeln;
writeln('1) Vkladani knih');
writeln('2) Vypis knih');
writeln('3) Ulozeni seznamu na disk');
writeln('4) Oprava udaju o knize');
writeln('5) Vymazani knihy dle signatury');
writeln('6) Vyhledani knihy dle nazvu');
writeln('7) Nacteni seznamu z disku');
writeln('8) Vymazani seznamu');
writeln('9) Konec programu');
writeln;
write('Vyberte pozadovanou akci (1-9): ');
readln(polozka);
if Length(polozka)=1 then
case polozka[1] of
'1': Nactiknihy(Seznam, pocet);
'2': Vypisknihy(Seznam, pocet);
'3': ZapisDoTXT(Seznam, pocet);
'4': ;
'5': ;
'6': ;
'7': nacteniTXT(Seznam,pocet);
'8': VymazSeznam(Seznam, pocet);
end;
until (polozka[1] in ['1'..'9']) and (Length(polozka)=1);
end;
begin
Pocet:=0;
Menu(Seznam, Pocet);
end.
Neumím vypsat obsah uloženého souboru a vůbec nevím, zda půjde vyhledávat, mazat atd. Prosím o poskytnutí podobného programu, příp. koupím vyřešení této blbiny.