stramik
Administrator
Dołączył: 02 Gru 2007
Posty: 126
Przeczytał: 0 tematów
Skąd: Grodków
|
Wysłany: Pon 18:44, 14 Sty 2008 Temat postu: lista 6 zad3 dudek |
|
|
Moja wersja zadania. Baza danych tworzy sie po wybraniu opcji zapisz baze. tworzy sie plik baza.bin Pozniej mozna juz zaladowywac ta baze. Po ponownym wlczeniu programy baza jest nie zaladowana i dopiero zaladowanie sprawi ze sie pojawi .
Kod: |
program zad3;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
TCzas=record
minuta:byte;
sekunda:byte;
end;
TData=record
dzien:byte;
miesiac:byte;
rok:byte;
end;
TUtwor=record
wykonawca:string[20];
tytul:string[20];
czas:Tczas;
end;
TCd=record
autor:string[20];
tytul:string[20];
data:TData;
cena:real;
liczba:1..20;
utwor:array [1..20] of TUtwor;
end;
baza=array [1..10] of TCd;
procedure menu(var q:char);
begin
repeat
writeln('Wybierz jedna z opcji:');
writeln('1. Dodaj do bazy');
writeln('2. Usun z bazy');
writeln('3. Wyswietl liste plyt z bazy');
writeln('4. Wyswietl konkretna plyte cd z bazy');
writeln('5. Zaladuj baze danych');
writeln('6. Zapisz plik bazy danych');
writeln('7. Wyjdz z programu');
write(' Twoj wybor to: ');
readln(q);
if q>'7' then
begin
if q<'1' then
writeln('Bledna opcja, wybierz jeszcze raz');
end;
writeln;
writeln;
until (q>'0') and (q<'8');
end;
procedure dodaj(var n:byte;var dane:baza);
var
i:byte;
begin
n:=n+1;
write('Podaj wykonawce, jezeli skladanka nacisnij enter ');
readln(dane[n].autor);
if dane[n].autor='' then dane[n].autor:='Rozni wykonawcy';
write('Podaj tytul plyty: ');
readln(dane[n].tytul);
write('Podaj date wydania w formacie DD MM RR : ');
readln(dane[n].data.dzien,dane[n].data.miesiac,dane[n].data.rok);
write('Podaj cene plyty w pln PLN.GR : ');
readln(dane[n].cena);
write('Podaj liczbe utworow na plycie : ');
readln(dane[n].liczba);
for i:=1 to dane[n].liczba do
begin
if dane[n].autor='Rozni wykonawcy' then
begin
write('Podaj wykonawce ',i,' utworu: ');
readln(dane[n].utwor[i].wykonawca);
end;
write('Podaj tytul ',i,' utworu: ');
readln(dane[n].utwor[i].tytul);
write('Podaj czas utworu w formacie MM SS ');
readln(dane[n].utwor[i].czas.minuta,dane[n].utwor[i].czas.sekunda);
end;
end;
procedure lista(n:byte;dane:baza);
var
i:byte;
begin
if n>0 then
begin
writeln('PLYTY W BAZIE:');
for i:=1 to n do
writeln(i:2,'.WYKONAWCA: ',dane[i].autor:22,' TYTUL PLYTY: ',dane[i].tytul:22);
end;
if n=0 then
writeln('Baza jest pusta!!!!');
end;
procedure usun(var n:byte;var dane:baza);
var
i:byte;
begin
i:=0;
writeln('Wybierz plyte do skasowania');
lista(n,dane);
readln(i);
if n<>0 then
n:=n-1;
for i:=i to n do
dane[i]:=dane[i+1];
end;
procedure szczegol(n:byte;dane:baza);
var
i,p:byte;
begin
lista(n,dane);
writeln('Ktora plyte wyswietlic?? ');
readln(p);
writeln('WYKONAWCA: ',dane[p].autor,' TYTUL PLYTY: ',dane[p].tytul);
writeln('DATA WYDANIA: ',dane[p].data.dzien,'.',dane[p].data.miesiac,'.',dane[p].data.rok,'r.');
writeln('CENA: ',dane[p].cena:3:2);
writeln('LISTA UTWOROW:');
for i:=1 to dane[p].liczba do
begin
write(i:3);
if dane[p].autor='Rozni wykonawcy' then
write(dane[p].utwor[i].wykonawca:22);
write(dane[p].utwor[i].tytul:22);
write(dane[p].utwor[i].czas.minuta:4,':',dane[p].utwor[i].czas.sekunda);
writeln;
end;
end;
var
n:byte;
p,j:byte;
q:char;
dane:baza;
plik:file of baza;
begin
n:=0;
repeat
menu(q);
case q of
'1':dodaj(n,dane);
'2':usun(n,dane);
'3':lista(n,dane);
'4':szczegol(n,dane);
end;
if q='5' then
begin
assignfile(plik,'baza.bin');
if fileexists ('baza.bin') then
begin
p:=0;
reset(plik);
read(plik,dane);
writeln('Baza zaladowana!!!');
for j:=1 to 10 do
begin
if dane[j].autor<>'' then
begin
inc(p);
end
end;
n:=p;
end
else writeln('Brak bazy danych do zaladowania');
end;
if q='6' then
begin
assignfile(plik,'baza.bin');
rewrite(plik);
write(plik,dane);
close(plik);
writeln('ZAPISANO BAZE DANYCH');
end;
writeln;
writeln;
until q='7';
{ TODO -oUser -cConsole Main : Insert code here }
end. |
|
|