program file_cd;
uses crt;
type
compactdisk=record
titolo:string[20];
numerotracce:integer;
prezzo:real;
autore:string[20];
end;
cd=file of compactdisk;
Tcd = array of compactdisk;
var
f:cd;
rec:Tcd;
i : longword;
x:char;
sce:integer;
procedure crea(var f1:cd);
begin
setlength(rec,1);
repeat
writeln('INSERISCI I DATI DEL CD');
writeln('-------------------------------------------------');
with rec[high(rec)] do begin
writeln('inserisci il titolo dell album');
readln(titolo); { inserimento campo }
writeln('inserisci il numero delle tracce presenti nel cd');
readln(numerotracce); { inserimento campo }
writeln('inserisci l autore del cd');
readln(autore); { inserimento campo }
writeln('inserisci il prezzo del cd');
readln(prezzo); { inserimento campo }
end;
writeln('--------------------------------------------------');
writeln('vuoi inserire un altro cd? s/n'); {richiesta di un nuovo elemento}
readln(x); { lettura scelta}
if x<>'n' then setlength(rec,high(rec)+2);
clrscr;
until x='n'; {scalta}
rewrite(f1);
for i := 0 to high(rec) do write(f,rec[i]);
close(f1);
end; {fine}
procedure stampa(var f1:cd); {procedura stampa}
var rec:compactdisk;
begin
clrscr; {inizio}
reset(f1); {apertura file}
while not eof(f1) do begin
read (f1,rec);
writeln('titolo dell album: ',rec.titolo); {stampa album}
writeln('numero tracce: ',rec.numerotracce); {stampa numero delle tracce}
writeln('autore del cd: ',rec.autore); {stampa del nome dell'autore}
writeln('prezzo del cd: ',rec.prezzo:2:2 ,' euro'); {stampa del prezzo}
writeln('');
end;
close(f1); {chiusura}
end;
procedure inserimento(var f1:cd);
begin
clrscr; {inizio}
reset(f1);
setlength(rec,1);
while not eof(f1) do begin
read(f1,rec[high(rec)]);
setlength(rec,high(rec)+2);
end;
Close(f1);
with rec[high(rec)]do begin
writeln('inserisci il titolo del nuovo album'); {lettura campo}
readln(titolo);
writeln('inserisci il numero delle tracce presenti nel nuovo cd');{lettura campo}
readln(numerotracce);
writeln('inserisci l autore del nuovo cd'); {lettura campo}
readln(autore);
writeln('inserisci il prezzo del nuovo cd'); {lettura campo}
readln(prezzo);
end;
rewrite(f1);
for i := 0 to high(rec) do write(f,rec[i]);
close(f1);
end; {fine}
procedure inserimento_al_centro(var f1:cd);
var a : word;
begin
clrscr;
reset(f1);
setlength(rec,1);
while not eof(f1) do begin
read(f1,rec[high(rec)]);
setlength(rec,high(rec)+2);
end;
Close(f1);
writeln('CD : ci sono ',high(rec),' elementi');
writeln('dopo quale elemento vuoi inserire il nuovo cd?');
repeat readln(a); until (a <= high(rec));
for i := a to (high(rec)-1) do rec[i+1]:=rec[i];
with rec[a-1] do begin
writeln('inserisci il titolo del nuovo album'); {lettura campo}
readln(titolo);
writeln('inserisci il numero delle tracce presenti nel nuovo cd');{lettura campo}
readln(numerotracce);
writeln('inserisci l autore del nuovo cd'); {lettura campo}
readln(autore);
writeln('inserisci il prezzo del nuovo cd'); {lettura campo}
readln(prezzo);
end;
rewrite(f1);
for i := 0 to high(rec) do write(f,rec[i]);
close(f1);
end;
// MAIN
BEGIN
clrscr;
assign(f,'cd.dat'); {assegnazione dello spazio nella memoria di massa}
crea(f); {creazione}
clrscr;
repeat {ripeti}
clrscr;
writeln('MENU DI SCELTA CD-ROM'); {menu al video}
writeln('---------------------');
writeln(' 1)inserisci un nuovo cd');
writeln(' 2)stampa lista dei cd');
writeln(' 3)inserimento al centro');
writeln(' 8)uscire');
writeln('---------------------');
writeln('');
repeat {ripeti}
writeln('quale paragrafo vuoi consultare?'); {scelta}
readln(sce); {lettura variabile scelta}
until (sce>0) and (sce<4) or (sce=8); {fine ciclo fino a che}
case sce of {case}
1: begin
clrscr;
inserimento(f);
writeln('...premere invio per continuare...');
readln();
end; {procudure scelte}
2: begin
clrscr;
stampa(f);
readln;
writeln('...premere invio per continuare...');
readln();
end;
3:begin
clrscr;
inserimento_al_centro(f);
readln;
writeln('...premere invio per continuare...');
readln();
end;
end;
until (sce=8); {fine ciclo finoa che sce =8}
END. {fine}