База данных любителя игр. Создайте базу данных, содержащую сведения об имеющихся играх на компакт дисках
Категория: Delphi/Pascal
2012-01-12 23:23:18
Составить программу управления базой данных с операциями: Добавление, Поиск, Редактирование, Просмотр всех записей в сортированном виде, Выход. Одна игра содержит 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.
Поделиться: