Умова задачі: Створити програму, яка працює з базою даних. В заданому файлі містяться відомості про іграшки: назва, їх ціна та вікові межі дітей, для яких вони створені. Програма повинна створювати базу, доповнювати її новими записами, вилучати старі записи, вставляти нові, сортирувати по назві, записувати на диск та читати з диску.
uses crt;
type toy=record { тип запису, що мiстить назву}
titl:string; {цiну та вiковi межi }
price:Integer;
age:integer;
end;
mas=array[1..20] of toy;
var a:mas; { заданий масив записiв }
f:file of mas; { заданий файл }
w,i1,l,J,k,i:integer; { робочi змiннi)
t:toy; {тимчасовий запис}
s:char; {змiнна для закiнчення вводу}
{ процедура вводу}
procedure vvod_1;
begin
writeln(' Створення бази:');
i:=0;
repeat {поки не натиснута клавiша 'n'}
clrscr;
i:=i+1;
with a[i] do begin
gotoxy(10,6);write('title of toy '); readln(titl);
gotoxy(10,8);write('price '); readln(price);
gotoxy(10,10);write('children age '); readln(age);
end;
writeln('continue? y/n');
s:=readkey;
until s='n';
i1:=i;
end;
procedure file_input;
begin
assign(f,'lab5_1.dat');
reset(f);
i:=0;
while not eof(f) do begin
i:=i+1;
with a[i] do read(f,a);
end;
i1:=i;
close(f);
end;
procedure file_output;
begin
assign(f,'lab5_1.dat');
rewrite(f);
for i:=1 to i1 do begin
with a[i] do write(f,a);
end;
close(f);
end;
procedure vvod_2;
begin
writeln('Доповнення бази:');
i:=i1;
repeat {поки не натиснута клавiша 'n'}
clrscr;
i:=i+1;
with a[i] do begin
gotoxy(10,6);write('title of toy '); readln(titl);
gotoxy(10,8);write('price '); readln(price);
gotoxy(10,10);write('children age '); readln(age);
end;
writeln('continue? y/n');
s:=readkey;
until s='n';
i1:=i;
end;
{--------вивiд на екран------}
procedure vivod;
begin
clrscr;
writeln('n-------Name--------price---age----');
for j:=1 to i1 do
begin
gotoxy(5,5+j); write(j:4);
with a[j] do
{для кожного запису вивести}
begin
gotoxy(10,5+j); write(titl);
gotoXY(20,5+j); write(price);
gotoXY(30,5+j); write(age);
end;
writeln;
end;
end;
procedure del;
begin
write('n=');readln(j);
for i:= j to i1-1 do a[i]:=a[i+1];
i1:=i1-1;
end;
procedure insert;
begin
write('n=');readln(j);
for i:= i1 downto j do a[i+1]:=a[i];
i1:=i1+1;
with a[j] do begin
clrscr;
gotoxy(10,6);write('title of toy '); readln(titl);
gotoxy(10,8);write('price '); readln(price);
gotoxy(10,10);write('children age '); readln(age);
end;
end;
procedure sort;
var
t:toy;
begin
for i:= 1 to i1-1 do
for j:= i+1 to i1 do
if a[i].titl>a[j].titl then begin
t:=a[i];
a[i]:=a[j];
a[j]:=t;
end;
end;
label 1;
begin {головна програма }
clrscr;
gotoxy(30,7);writeln('lab. work S.I');
gotoxy(30,8);writeln('varlant N30,student ');
i1:=0;
gotoxy(30,10);write('файл є-1 , немає-0');
readln(w);
if w=1 then file_input;
1:clrscr;
gotoxy(30,9);writeln(' головне меню');
gotoxy(30,10);writeln('----------------------------');
if i1=0 then begin gotoxy(30,11);writeln(' створення бази -0');end;
if i1<>0 then begin gotoxy(30,12);writeln('доповнення бази -1');
gotoxy(30,13);writeln('перегляд бази -2');
gotoxy(30,14);writeln('вилучення елемента бази -3');
gotoxy(30,15);writeln('вставка елемента бази -4');
gotoxy(30,16);writeln('упорядкування бази за ім'ям -5');
gotoxy(30,17);writeln('запис бази на диск -6');
gotoxy(30,18);writeln('вихід з програми (запис бази на диск) -7');
gotoxy(30,19);writeln('віихід з програми (без запису бази на диск -8');end;
readln(w);
case w of
0: begin vvod_1; vivod; file_output; readln; end;
1: begin vvod_2; vivod; readln; end;
2: begin vivod; readln;end;
3: begin vivod; del; vivod;readln; end;
4: begin vivod;insert; vivod;readln;end;
5: begin sort; vivod; readln;end;
6: begin file_output; end;
7: begin file_output;halt;end;
8: begin halt;end;
end;
goto 1;
end.