База данных любителя игр. Создайте базу данных, содержащую сведения об имеющихся играх на компакт дисках

Составить программу управления базой данных с операциями: Добавление, Поиск, Редактирование, Просмотр всех записей в сортированном виде, Выход. Одна игра содержит 4 сведения: наименование игры, сколько она весит, параметры для игры (в 1 строку параметры), название компании разработчиков.

code: #pascal
program PascalGuru;
uses crt;
 
type igra=record
                name  :string;
                razmer:string;
                param :string;
                avtor :string;
          end;
 
var all:array[1..50] of igra;
    n:integer;
 
procedure menu;   forward;
 
{--------------------------------------}
procedure read_all; {считывает всю БД с файла}
var f:text;
begin
n:=0;
assign(f,'db.txt'); reset(f);
while not eof(f) do
      begin
      inc(n);
      readln(f,all[n].name);
      readln(f,all[n].razmer);
      readln(f,all[n].param);
      readln(f,all[n].avtor);
      readln(f);
      end;
close(f);
end;
{--------------------------------------}
procedure save_all; {сохраняет отредактированную БД в файл}
var i:integer;
    f:text;
begin
assign(f,'db.txt'); rewrite(f);
 
for i:=1 to n do
     begin
      writeln(f,all[i].name);
      writeln(f,all[i].razmer);
      writeln(f,all[i].param);
      writeln(f,all[i].avtor);
      writeln(f);
     end;
close(f);
end;
{--------------------------------------}
procedure add;
var i:integer;
 
begin
clrscr;
inc(n);
writeln('Dobavlenie novoi zapisi:');
writeln('________________________');
writeln;
write('Naimenovanie igry: '); readln(all[n].name);
write('Razmer: ');            readln(all[n].razmer);
write('Parametry: ');         readln(all[n].param);
write('Razrabotchik: ');      readln(all[n].avtor);
 
save_all;
clrscr;
writeln('Novaya zapisi uspeshno dobavlena v BD');
readln; menu;
end;
{--------------------------------------}
procedure write_all; {вывод всей базы на экран}
var i,j:integer;
    s1,s2,s3:string;
 
begin
clrscr;
writeln('Vse igry v baze:');
writeln('________________');
writeln;
 
for i:=1 to n do
    begin
    s1:=''; s2:=''; s3:='';
    for j:=1 to 18-length(all[i].name) do s1:=s1+' ';
    for j:=1 to 8-length(all[i].razmer) do s2:=s2+' ';
    for j:=1 to 18-length(all[i].param) do s3:=s3+' ';
    writeln(all[i].name,s1,' ; ',all[i].razmer,s2,' ; ',all[i].param,s3,' ; ',all[i].avtor);
    end;
 
readln; menu;
end;
{--------------------------------------}
procedure search; {поиск}
var p:string;
    i,j:integer;
    s1,s2,s3:string;
    b:boolean;
 
begin
clrscr;
writeln('Poisk (po nazvaniyu igry - vy mozhete posmotreti ee parametry)');
writeln('______________________________________________________________');
writeln;
write('Vvedite nazvanie igry:');  readln(p);
writeln;
b:=false;
for i:=1 to n do
    if all[i].name=p then
    begin
    s1:=''; s2:=''; s3:='';
    for j:=1 to 18-length(all[i].name) do s1:=s1+' ';
    for j:=1 to 8-length(all[i].razmer) do s2:=s2+' ';
    for j:=1 to 18-length(all[i].param) do s3:=s3+' ';
    writeln(all[i].name,s1,' ; ',all[i].razmer,s2,' ; ',all[i].param,s3,' ; ',all[i].avtor);
    b:=true;
    end;
 
if not b then writeln('Igry s takim naimenovaniem v baze ne nashlosi...');
readln; menu;
end;
{--------------------------------------}
procedure sort; {вывод отсортированной базы на экран}
 
                procedure exchange(var a,b:string);
                var c:string;
                begin
                c:=a; a:=b; b:=c; end;
 
var i,bukva,nn:integer;
    swop:boolean;
    vrs1,vrs2:string;
 
begin
clrscr;
 
for bukva:=5 downto 1 do {сортируем с 5 по 1 букву названия}
begin
       nn:=n;
       repeat
       swop:=false;
       for i:=1 to nn-1 do begin
       vrs1:=all[i].name;
       vrs2:=all[i+1].name;
       if ord(vrs1[bukva])>ord(vrs2[bukva]) then begin         {esli "<" togda po ubivaniiu }
       exchange(all[i].name,all[i+1].name);
       exchange(all[i].razmer,all[i+1].razmer);
       exchange(all[i].param,all[i+1].param);
       exchange(all[i].avtor,all[i+1].avtor);
       swop:=true;                               end;
                          end;
       nn:=nn-1;
       until not swop;
end;
{***}
write_all;
readln; menu;
end;
 {--------------------------------------}
procedure update; {Редактирование}
var i,j:integer;
    s1,s2,s3:string;
    b:boolean;
 
begin
clrscr;
writeln('Redaktirovanie zapisei BD:');
writeln('__________________________');
writeln;
for i:=1 to n do
    begin
    s1:=''; s2:=''; s3:='';
    for j:=1 to 18-length(all[i].name) do s1:=s1+' ';
    for j:=1 to 8-length(all[i].razmer) do s2:=s2+' ';
    for j:=1 to 18-length(all[i].param) do s3:=s3+' ';
    writeln(i,') ',all[i].name,s1,' ; ',all[i].razmer,s2,' ; ',all[i].param,s3,' ; ',all[i].avtor);
    end;
writeln;
write('Vvedite nomer zapisi, kotoruyu hotite izmeniti: ');  readln(i);
    s1:=''; s2:=''; s3:='';
    clrscr;
    writeln('Izmenyaem:');
    for j:=1 to 18-length(all[i].name) do s1:=s1+' ';
    for j:=1 to 8-length(all[i].razmer) do s2:=s2+' ';
    for j:=1 to 18-length(all[i].param) do s3:=s3+' ';
    writeln(i,') ',all[i].name,s1,' ; ',all[i].razmer,s2,' ; ',all[i].param,s3,' ; ',all[i].avtor);
    writeln;
    writeln('Vvedite novye znacheniya:');
write('*Naimenovanie igry: '); readln(all[i].name);
write('*Razmer: ');            readln(all[i].razmer);
write('*Parametry: ');         readln(all[i].param);
write('*Razrabotchik: ');      readln(all[i].avtor);
 
save_all; read_all;
writeln('Otredaktirovannaya informatsiya uspeshno sohranena v fail...');
readln; menu;
end;
{--------------------------------------}
procedure menu; {меню}
var option:char;
begin
clrscr;
 read_all; {сначала считываем с файла всю БД}
 
writeln('MENU');
writeln('____'); writeln;
   writeln('1) Dobavlenie');
   writeln('2) Poisk');
   writeln('3) Redaktirovanie');
   writeln('4) Prosmotr vseh zapisei');
   writeln('5) Prosmotr vseh zapisei v sortirovannom vide');
   writeln;
   writeln('0) Exit (vyhod)');
 
   readln(option);
   case option of
   '1':add;
   '2':search;
   '3':update;
   '4':write_all;
   '5':sort;
   '0':exit;
   else menu;
   end;
 
{save_all; = сохраняет отредактированную БД в файл --- если надо использовать не только при Редактировании  }
end;
{--------------------------------------}
begin
menu;
end.      
Поделиться:

Похожие статьи: