Добавил:
bagiwow
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Паскаль / курсовые / Курсовая Pascal Компьютерная фирма / ZXXXX
.PAS Program RZD;
uses crt;
const
norm=6; {梥⠯гЄв ¬Ґо}
sel=96; {梥⠢뤥«Ґ®Ј® ЇгЄв ¬Ґо}
status=112; {梥в бва®ЄЁ б®бв®пЁп}
cwork=$17; {梥в а Ў®зҐЈ® ®Є }
n=7; {Є®«ЁзҐбвў® ЇгЄв®ў ў ¬Ґо}
type
pswork = ^work; {Ёд®а¬ жЁп ® Ї бб ¦Ёа е}
swork=record
fam : string[20]; {д ¬Ё«Ёп}
io : string[30]; {Ё¬п, ®взҐбвў®}
pasp : string[15]; {Ї бЇ®авлҐ ¤ лҐ}
punktnazn : string[10]; {ЇгЄв § 票п}
npoezd : string[5]; {®¬Ґа Ї®Ґ§¤ }
kolvo : integer; {Є®«ЁзҐбвў® ЎЁ«Ґв®ў}
lw,rw : pswork; {ббл«ЄЁ бЇЁбЄ Ї бб ¦Ёа®ў}
end;
psroad = ^road;
road = record
numpoezd : string[5]; {®¬Ґа Ї®Ґ§¤ }
punkt : string[10]; {ЇгЄв § 票п}
time : string[14]; {ўаҐ¬п ®вЇа ў«ҐЁп}
svob : integer; {Є®«ЁзҐбвў® бў®Ў®¤ле ¬Ґбв}
cena : real; {жҐ ЎЁ«Ґв }
lr,rr : psroad; {ббл«ЄЁ бЇЁбЄ ¤®а®Ј}
end;
var
menu : array[1..n] of string[11]; {¬ ббЁў §ў Ё© ЇгЄв®ў ¬Ґо}
hint : array[1..n] of string; {¬ ббЁў Ї®¤бЄ §®Є ¤«п ¬Ґо}
punkt : integer; {⥪гйЁ© ЇгЄв ¬Ґо}
oldattr : integer; {ўаҐ¬Ґ®Ґ еа ҐЁҐ бв але вваЁЎгв®ў}
ch : char; {бЁ¬ў®« ¦ в®© Є« ўЁиЁ}
x, y : integer; {Ї®§ЁжЁп ЇҐз вЁ нЄа Ґ}
i : integer; {Ї а ¬Ґва жЁЄ« }
fwork : file of work;
froad : file of road;
bufwork : work;
bufroad : road;
topw, tw, pw : pswork; {гЄ § ⥫Ё бЇЁбЄ work}
topr, tr, pr : psroad; {гЄ § ⥫Ё бЇЁбЄ road}
bflag : integer; {д« Ј ®вўҐв ЁбЇ®«м§гҐ¬л© ў Їа®жҐ¤гॠbilet}
procedure oknowork;
{§ ¤ ЁҐ а Ў®зҐЈ® ®Є }
var tempattr : integer;
begin
tempattr:=textattr; {б®еа 塞 бв алҐ вваЁЎгвл}
textattr:=cwork; _ _{Ё гбв ў«Ёў Ґ¬ ®ўлҐ}
window(12,1,80,23); {§ ¤ Ґ¬ а Ў®зго ®Ў« бвм}
clrscr;
end;
procedure oknomenu(a,b:integer);
{ўе®¤лҐ Ї а ¬Ґвал - Є®®а¤Ё вл Єгаб®а }
begin
window(1,1,11,23);
gotoxy(a,b);
end;
procedure statusmsg(msg:string);
var tempattr : integer;
begin
tempattr:=textattr;
window(1,24,80,25); {§ ¤ Ґ¬ Ї а ¬Ґвал ®Є }
textattr:=status;
clrscr;
write(msg); {ЇҐз в Ґ¬ Ї®¤бЄ §Єг}
textattr:=tempattr;
end;
procedure showmsg(msg:string); {Ї®Є § б®®ЎйҐЁп}
var tempattr, xmsg : integer;
begin
tempattr:=textattr;
xmsg:=(39-trunc(length(msg)/2)); {ўлзЁб«пҐ¬ ЇҐаўго Є®®а¤Ё вг ®Є }
window(xmsg,10,xmsg+length(msg)+3,12); {§ ¤ Ґ¬ ®Є®}
textbackground(4);
textcolor(15);
clrscr;
gotoxy(3,2); write(msg); {ЇҐз в Ґ¬ б®®ЎйҐЁҐ}
textattr:=tempattr;
statusmsg('Ќ ¦¬ЁвҐ «оЎго Є« ўЁиг');
readkey;
end;
procedure createlist; {ᮧ¤ ЁҐ а Ў®зЁе бЇЁбЄ®ў ў Ї ¬пвЁ}
var nw : pswork;
nr : psroad;
begin
statusmsg('‡ Јаг§Є ¤ ле...');
reset (fwork); {®вЄалў Ґ¬ д ©«л}
reset (froad);
topw:=nil; topr:=nil; tw:=topw; tr:=topr;
while not eof(fwork) do {бЇЁб®Є Ї бб ¦Ёа®ў}
begin
read (fwork, bufwork);
new(nw);
nw^.fam := bufwork.fam;
nw^.io := bufwork.io;
nw^.pasp := bufwork.pasp;
nw^.punktnazn := bufwork.punktnazn;
nw^.npoezd := bufwork.npoezd;
nw^.kolvo := bufwork.kolvo;
if topw=nil then
begin
nw^.lw:=nil; nw^.rw:=nil; topw:=nw; tw:=topw;
end
else
begin
tw^.rw:=nw; nw^.lw:=tw; nw^.rw:=nil; tw:=nw;
end;
end;
while not eof(froad) do {бЇЁб®Є Ї®Ґ§¤®ў}
begin
read (froad, bufroad);
new(nr);
nr^.numpoezd := bufroad.numpoezd;
nr^.punkt := bufroad.punkt;
nr^.time := bufroad.time;
nr^.svob := bufroad.svob;
nr^.cena := bufroad.cena;
if topr=nil then
begin
nr^.lr:=nil; nr^.rr:=nil; topr:=nr; tr:=topr;
end
else
begin
tr^.rr:=nr; nr^.lr:=tr; nr^.rr:=nil; tr:=nr;
end;
end;
end;
procedure savelist; {б®еа ҐЁҐ бЇЁбЄ®ў}
begin
tw:=topw;
tr:=topr;
rewrite (fwork);
rewrite (froad);
while tw<>nil do {бЇЁб®Є Ї бб ¦Ёа®ў}
begin
bufwork.fam := tw^.fam;
bufwork.io := tw^.io;
bufwork.pasp := tw^.pasp;
bufwork.punktnazn := tw^.punktnazn;
bufwork.npoezd := tw^.npoezd;
bufwork.kolvo := tw^.kolvo;
write (fwork, bufwork);
tw:=tw^.rw;
end;
while tr<>nil do {бЇЁб®Є Ї®Ґ§¤®ў}
begin
bufroad.numpoezd := tr^.numpoezd;
bufroad.punkt := tr^.punkt;
bufroad.time := tr^.time;
bufroad.svob := tr^.svob;
bufroad.cena := tr^.cena;
write (froad, bufroad);
tr:=tr^.rr;
end;
end;
procedure menutoscr;
{ўлў®¤ ¬Ґо нЄа }
var i : integer;
begin
oknomenu(1,1);
clrscr;
textattr:=sel;
write('_ _ЊҐо_ _ ');
textattr:=norm;
for i:=1 to n do {ЇҐз в Ґ¬ ўбҐ ЇгЄвл}
begin
gotoxy(x,y+i-1);
write(menu[i]);
end;
textattr:=sel; {ўл¤Ґ«пҐ¬ 梥⮬}
gotoxy(x,y+punkt-1);
write(menu[punkt]); {Ё ЇҐз в Ґ¬ ўл¤Ґ«Ґл© ЇгЄв}
satusmsg(hint[punkt]); {Ї®Є §лў Ґ¬ Ї®¤бЄ §Єг}
textattr:=norm; {ў®§ўа й Ґ¬ Ёбе®¤л© жўҐв}
end;
procedure cxema;
begin
oknowork;
tr:=topr;
if filesize(froad)<>0 then {Ґб«Ё ў д ©«Ґ Ґбвм ¤ лҐ, в® ЇҐз в Ґ¬}
while (tr<>nil) and (ch<>chr(68)) do
begin
oknowork;
gotoxy(5,5); textcolor(7);
write('Ќ®¬Ґа Ї®Ґ§¤ : '); textcolor(14); write(tr^.numpoezd);
gotoxy(5,6); textcolor(7);
write('ЏгЄв § 票п: '); textcolor(14); write(tr^.punkt);
gotoxy(5,7); textcolor(7);
write('‚аҐ¬п ®вЇа ў«ҐЁп: '); textcolor(14); write(tr^.time);
gotoxy(5,8); textcolor(7);
write('Љ®«ЁзҐбвў® бў®Ў®¤ле ¬Ґбв: '); textcolor(14); write(tr^.svob);
gotoxy(5,9); textcolor(7);
write('–Ґ ЎЁ«Ґв : '); textcolor(14); write(tr^.cena:8:2);
tr:=tr^.rr;
if tr=nil then
begin
gotoxy(5,11); textcolor(3); write('Љ®Ґж бЇЁбЄ , ¦¬ЁвҐ «оЎго Є« ўЁиг');
end;
statusmsg('Џа®б¬®ва ¤ «ҐҐ - «оЎ п Є« ўЁи , ўл室 - F10');
ch:=readkey;
end
else showmsg('ЌҐв Ёд®а¬ жЁЁ ® Ї®Ґ§¤ е !'); {Ё зҐ б®®Ўй Ґ¬}
textattr:=oldattr; {ў®ббв ў«Ёў Ґ¬ бв алҐ вваЁЎгвл}
end;
procedure inspoezd;
{б®авЁа®ўЄ - Ї® ў®§а бв Ёо ®¬Ґа }
var num : string[5];
nr : psroad;
begin
statusmsg('‚ў®¤ § ўҐаи Ґвбп Ї®б«Ґ ўў®¤ Ї®б«Ґ¤ҐЈ® § 票п');
oknowork;
gotoxy(5,5); textcolor(7); write('Ќ®¬Ґа Ї®Ґ§¤ : ');
textcolor(14); readln(num);
if length(num)<>0 then begin
{Ґб«Ё ®¬Ґа ўўҐ¤Ґ, в® § ¤ Ґ¬ ¤ «миҐ}
new(nr); {ўлҐ«пҐ¬ Ї ¬пвм}
nr^.numpoezd:=num;
gotoxy(5,6); textcolor(7); write('ЏгЄв § 票п: ');
textcolor(14); readln(nr^.punkt);
gotoxy(5,7); textcolor(7); write('‚аҐ¬п ®вЇа ў«ҐЁп: ');
textcolor(14); readln(nr^.time);
gotoxy(5,8); textcolor(7); write('Љ®«ЁзҐбвў® бў®Ў®¤ле ¬Ґбв: ');
textcolor(14); readln(nr^.svob);
gotoxy(5,9); textcolor(7); write('–Ґ ЎЁ«Ґв : ');
textcolor(14); readln(nr^.cena);
tr:=topr; pr:=nil;
if (topr=nil) or (nr^.numpoezd<topr^.numpoezd) then
begin
nr^.lr:=nil;
nr^.rr:=topr;
topr^.lr:=nr; topr:=nr;
end
else
while (nr^.numpoezd > tr^.numpoezd) and (tr<>nil) do
begin
pr:=tr; tr:=tr^.rr;
end;
if nr^.numpoezd=tr^.numpoezd then showmsg('’ Є®© Ї®Ґ§¤ 㦥 бгйҐбвўгҐв')
else
if pr<>nil then
begin
nr^.rr:=tr; nr^.lr:=pr; pr^.rr:=nr; tr^.lr:=nr;
end;
end;
end;
procedure delpoezd; {г¤ «ҐЁҐ Ї®Ґ§¤ Ё§ бЇЁбЄ Ї® ҐЈ® ®¬Ґаг}
var numpoezd : string[5];
dflag : boolean; {д« Ј, гЄ §лў Ґв Ўл« «Ё г¤ «Ґ Ї®Ґ§¤}
begin
_ _ _clrscr;
_ _ _tr:=topr; pr:=nil; dflag:=false;
_ _ _gotoxy(5,5); write('‚ўҐ¤ЁвҐ ®¬Ґа Ї®Ґ§¤ : ');
_ _ _textcolor(14); readln(numpoezd);
_ _ _while tr<>nil do
_ _ _ _ _ _if tr^.numpoezd=numpoezd then
_ _ _ _ _ _ _ begin
_ _ _ _ _ _ _ if tr=topr then begin topr:=topr^.rr; topr^.lr:=nil; end {Ґб«Ё ЇҐаўл© н«Ґ¬Ґв}
_ _ _ _ _ _ _ else
_ _ _ _ _ _ _ _ _ if (tr^.rr=nil) and (tr^.lr=nil) then begin topr:=nil; end {Ґб«Ё Ґ¤Ёб⢥л©}
_ _ _ _ _ _ _ _ _ _ _else
_ _ _ _ _ _ _ _ _ _ _ _ _if tr^.rr=nil then pr^.rr:=nil {Ї®б«Ґ¤Ё©}
_ _ _ _ _ _ _ _ _ _ _ _ _ _ else
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ begin pr^.rr:=tr^.rr; tr^.rr^.lr:=pr; end; {Ё зҐ «оЎ®© ¤агЈ®©}
_ _ _ _ _ _ _ _ _ tr:=nil; {г¤ «пҐ¬ н«Ґ¬Ґв}
_ _ _ _ _ _ _ _ _ dflag:=true; {Ё гбв ў«Ёў Ґ¬ д« Ј}
_ _ _ _ _ _ _ end
_ _ _ _ _ _else begin pr:=tr; tr:=tr^.rr; end;
_ _ _ _ _ _if dflag then showmsg('Џ®Ґ§¤ г¤ «Ґ Ё§ бЇЁбЄ ')
_ _ _ _ _ _ _ else showmsg('Џ®Ґ§¤ б в ЄЁ¬ ®¬Ґа®¬ Ґ ©¤Ґ!');
end;
procedure izm; {ўҐбҐЁҐ Ё§¬ҐҐЁ© ў б奬㠦Ґ«Ґ§®© ¤®а®ЈЁ}
begin
_ _ _oldattr:=textattr;
_ _ _repeat
_ _ _statusmsg('„®Ў ўЁвм Ї®Ґ§¤ - F1, г¤ «Ёвм Ї®Ґ§¤ - F2, ўл室 - F10');
_ _ _oknowork;
_ _ _gotoxy(5,5); write('‚ н⮬ ०Ё¬Ґ ў®§¬®¦® г¤ «ҐЁҐ Ё ¤®Ў ў«ҐЁҐ Ї®Ґ§¤®ў');
_ _ _ch:=readkey;
_ _ _case ch of
_ _ _ _ _ chr(59) : inspoezd; { ¦ вЁҐ F1, ўл§лў Ґв ¤®Ў ў«ҐЁҐ}
_ _ _ _ _ chr(60) : delpoezd; { ¦ вЁҐ F2, ўл§лў Ґв г¤ «ҐЁҐ}
_ _ _ _ _ end;
_ _ _until ch=chr(68); { ¦ вЁҐ F10 _ ўл室 ў ¬Ґо}
_ _ _savelist; {б®еа 塞 бЇЁбЄЁ}
_ _ _textattr:=oldattr;
end;
procedure bilet(kol:integer; num, mode:string);
{Ї а ¬Ґвал _ Є®«ЁзҐбвў® ЎЁ«Ґв®ў, ®¬Ґа Ї®Ґ§¤ Ё ०Ё¬ а Ў®вл Їа®жҐ¤гал (sale _ Їа®¤ ¦ ЎЁ«Ґв®ў, back _ ў®§ўа в)}
begin
tr:=topr; bflag:=0;
_ _ _if mode='sale' then {Ґб«Ё Їа®¤ Ґ¬}
_ _ _ _ repeat
_ _ _ _ _ _ _ begin
_ _ _ _ _ _ _ if tr^.numpoezd=num then
_ _ _ _ _ _ _ _ _if tr^.svob<kol then
_ _ _ _ _ _ _ _ _ _ begin
_ _ _ _ _ _ _ _ _ _ bflag:=0; {Ґ¤®бв в®з® бў®Ў®¤ле ¬Ґбв}
_ _ _ _ _ _ _ _ _ _ end
_ _ _ _ _ _ _ _ _ _ else
_ _ _ _ _ _ _ _ _ _ _ _ begin
_ _ _ _ _ _ _ _ _ _ _ _ tr^.svob:=tr^.svob - kol; bflag:=1;
_ __ _{Ґб«Ё ЎЁ«Ґв®ў еў в Ґв Ё Ї®Ґ§¤ ©¤Ґ, в® д« Ј=1}
_ _ _ _ _ _ _ _ _ _ _ _ end
_ _ _ _ _ _ _ _ _else bflag:=2; {д« Ј=2 _ Ї®Ґ§¤ Ґ ©¤Ґ}
_ _ _ _ _ _ _ tr:=tr^.rr;
_ _ _ _ _ _ _ end;
_ _ _ _ until (tr=nil) or (bflag = 1)
_ _ _ _ else
_ _ _ _ _ _ if mode='back' then {Ґб«Ё ў®§ўа й Ґ¬}
_ _ _ _ _ _ begin
_ _ _ _ _ _ repeat
_ _ _ _ _ _ _ _if tr^.numpoezd=num then
_ _ _ _ _ _ _ _ _ _ _ begin
_ _ _ _ _ _ _ _ _ _ _ tr^.svob := tr^.svob + kol; bflag := 4;
{д« Ј=4 _ ЎЁ«Ґвл ў®§ўа йҐл гбЇҐи®}
_ _ _ _ _ _ _ _ _ _ _ end
_ _ _ _ _ _ _ _else bflag:=2; {д« Ј=2 _ Ї®Ґ§¤ Ґ ©¤Ґ}
_ _ _ _ _ _ tr:=tr^.rr;
_ _ _ _ _ _ until (tr=nil) or (bflag = 4)
_ _ _ _ _ _ end;
_ _ _ _ case bflag of
{Їа®ўҐа塞 б®бв®пЁҐ д« Ј Ё Ї®Є §лў Ґ¬ б®®ЎйҐЁҐ}
_ _ _ _ _ _ _0 : showmsg('ЌҐ¤®бв в®з® бў®Ў®¤ле ¬Ґбв!');
_ _ _ _ _ _ _1 : showmsg('Џа®¤ ®, Ї бб ¦Ёа ¤®Ў ў«Ґ ў Ў §г');
_ _ _ _ _ _ _2 : showmsg('„ л© Ї®Ґ§¤ Ґ ©¤Ґ!');
_ _ _ _ _ _ _4 : showmsg('‚®§ўа 饮');
_ _ _ _ _ _ _end;
end;
procedure prodazha; {Їа®¤ ¦ ЎЁ«Ґв }
var fam : string[20];
_ _ nw : pswork;
_ _ np : string[5]; {®¬Ґа Ї®Ґ§¤ }
_ _ kl : integer; {Є®«ЁзҐбвў® ЎЁ«Ґв®ў}
begin
_ _ _oldattr:=textattr;
_ _ _statusmsg('‚ў®¤ § ўҐаи Ґвбп Ї®б«Ґ ўў®¤ Ї®б«Ґ¤ҐЈ® § 票п');
_ _ _oknowork;
_ _ _gotoxy(5,5); textcolor(7); write('” ¬Ё«Ёп: ');
_ _ _textcolor(14); readln(fam);
_ _ _if length(fam)<>0 then begin {Ґб«Ё д ¬Ё«Ёп ўўҐ¤Ґ }
_ _ _ _ new(nw); {ўл¤Ґ«пҐ¬ Ї ¬пвм}
_ _ _ _ nw^.fam:=fam;
_ _ _ _ gotoxy(5,6); textcolor(7); write('€¬п, ®взҐбвў®: ');
_ _ _ _ textcolor(14); readln(nw^.io);
_ _ _ _ gotoxy(5,7); textcolor(7); write('Џ бЇ®ав: ');
_ _ _ _ textcolor(14); readln(nw^.pasp);
_ _ _ _ gotoxy(5,8); textcolor(7); write('ЏгЄв § 票п: ');
_ _ _ _ textcolor(14); readln(nw^.punktnazn);
_ _ _ _ gotoxy(5,9); textcolor(7); write('Ќ®¬Ґа Ї®Ґ§¤ : ');
_ _ _ _ textcolor(14); readln(nw^.npoezd);
_ _ _ _ gotoxy(5,10); textcolor(7); write('Љ®«ЁзҐбвў® ЎЁ«Ґв®ў: ');
_ _ _ _ textcolor(14); readln(nw^.kolvo);
_ _ _ _ np:=nw^.npoezd; kl:=nw^.kolvo;
_ _ _ _ tw:=topw; pw:=nil;
_ _ _ _ bilet(kl, np, 'sale'); {ўл§лў Ґ¬ ў ०Ё¬Ґ Їа®¤ ¦Ё}
_ _ _ _ if bflag = 1 then
{Ґб«Ё гЇҐи® Їа®¤ ®, в® ¤®Ў ў«пҐ¬ § ЇЁбм ў бЇЁб®Є}
_ _ _ _ begin
_ _ _ _ if (topw=nil) or (nw^.fam<topw^.fam) then
_ _ _ _ _ _begin
_ _ _ _ _ _nw^.lw:=nil;
_ _ _ _ _ _nw^.rw:=topw;
_ _ _ _ _ _topw^.lw:=nw; topw:=nw;
_ _ _ _ _ _end
_ _ _ _ else
_ _ _ _ _ _ while (nw^.fam > tw^.fam) and (tw<>nil) do
_ _ _ _ _ _ _ _ _ begin
_ _ _ _ _ _ _ _ _ pw:=tw; tw:=tw^.rw;
_ _ _ _ _ _ _ _ _ end;
_ _ _ _ _ _ if pw<>nil then
_ _ _ _ _ _ _ _ _ _begin
_ _ _ _ _ _ _ _ _ _nw^.rw:=tw; nw^.lw:=pw; pw^.rw:=nw; tw^.lw:=nw;
_ _ _ _ _ _ _ _ _ _end;
_ _ _ _ end;
_ _ _ _ end;
_ _ _ _ savelist; {б®еа 塞 бЇЁбЄЁ}
_ _ _ _ textattr:=oldattr;
end;
procedure vozvrat; {ў®§ўа в ЎЁ«Ґв }
var fam:string[20]; {д ¬Ё«Ёп Ї бб ¦Ёа }
_ _ dflag:boolean; {д« Ј б®бв®пЁп}
_ _ kl:integer; {Є®«ЁзҐбвў® ЎЁ«Ґв®ў}
_ _ np:string[5]; {®¬Ґа Ї®Ґ§¤ }
begin
_ _ _statusmsg('“¤ «ҐЁҐ Ї бб ¦Ёа б ў®§ўа ⮬ ЎЁ«Ґв®ў');
_ _ _oknowork;
_ _ _gotoxy(5,5); textcolor(7); write('‚ўҐ¤ЁвҐ д ¬Ё«Ёо: ');
_ _ _textcolor(14); readln(fam);
_ _ _tw:=topw; pw:=nil; dflag:=false;
_ _ _while tw<>nil do
_ _ _ _ _ _if tw^.fam=fam then
_ _ _ _ _ _ _ begin
_ _ _ _ _ _ _ kl:=tw^.kolvo; np:=tw^.npoezd;
_ _ _ _ _ _ _ bilet(kl, np, 'back'); {ўл§лў Ґ¬ ў ०Ё¬Ґ ў®§ўа в }
_ _ _ _ _ _ _ if bflag = 4 then
{Ґб«Ё ўҐаг«Ё гбЇҐи®, в® г¤ «пҐ¬ Ї бб ¦Ёа Ё§ бЇЁбЄ }
_ _ _ _ _ _ _ if tw=topw then begin topw:=topw^.rw; topw^.lw:=nil; end {Ґб«Ё ЇҐаў п § ЇЁбм}
_ _ _ _ _ _ _ else
_ _ _ _ _ _ _ _ _ if (tw^.rw=nil) and (tw^.lw=nil) then begin topw:=nil; end {Ґб«Ё ЇҐаў п Ё Ґ¤Ёб⢥ п}
_ _ _ _ _ _ _ _ _ _ _else
_ _ _ _ _ _ _ _ _ _ _ _ _if tw^.rw=nil then pw^.rw:=nil {Ї®б«Ґ¤пп}
_ _ _ _ _ _ _ _ _ _ _ _ _ _ else
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ begin pw^.rw:=tw^.rw; tw^.rw^.lw:=pw; end; {Ё зҐ «оЎ п ¤агЈ п § ЇЁбм}
_ _ _ _ _ _ _ _ _ tw:=nil; {г¤ «пҐ¬ § ЇЁбм}
_ _ _ _ _ _ _ _ _ dflag:=true; {Ё бв ўЁ¬ д« Ј}
_ _ _ _ _ _ _ end
_ _ _ _ _ _else begin pw:=tw; tw:=tw^.rw; end;
_ _ _ _ _ _if dflag then showmsg('Џ бб ¦Ёа г¤ «Ґ Ё§ бЇЁбЄ ')
_ _ _ _ _ _ _ else showmsg('Џ бб ¦Ёа б в Є®© д ¬Ё«ЁҐ© Ґ ©¤Ґ!');
_ _ _savelist; {б®еа 塞 бЇЁбЄЁ}
_ _ _textattr:=oldattr;
end;
procedure showpass; {Ї®Є §лў Ґ¬ ўбҐе Ї бб ¦Ёа®ў}
begin
tw:=topw;
if filesize(fwork)<>0 then {Ґб«Ё Ёд®а¬ жЁп Ґбвм, в® Ї®Є §лў Ґ¬}
repeat
_ _ _ oknowork;
_ _ _ gotoxy(5,5); textcolor(7); write('” ¬Ё«Ёп: ');
_ _ _ textcolor(14); write(tw^.fam);
_ _ _ gotoxy(5,6); textcolor(7); write('€¬п, ®взҐбвў®: ');
_ _ _ textcolor(14); write(tw^.io);
_ _ _ gotoxy(5,7); textcolor(7); write('Џ бЇ®ав: ');
_ _ _ textcolor(14); write(tw^.pasp);
_ _ _ gotoxy(5,8); textcolor(7); write('Ќ Їа ў«пҐвбп ў: ');
_ _ _ textcolor(14); write(tw^.punktnazn);
_ _ _ gotoxy(5,9); textcolor(7); write('Џ®Ґ§¤ ь ');
_ _ _ textcolor(14); write(tw^.npoezd);
_ _ _ gotoxy(5,10); textcolor(7); write('ЃЁ«Ґв®ў: ');
_ _ _ textcolor(14); write(tw^.kolvo);
_ _ _ tw:=tw^.rw;
_ _ _ if tw=nil then
_ _ _ _ _begin
_ _ _ _ _ _ _ gotoxy(5,12); textcolor(3); write('Љ®Ґж бЇЁбЄ , ¦¬ЁвҐ «оЎго Є« ўЁиг');
_ _ _ _ _end;
_ _ _ statusmsg('Џа®б¬®ва ¤ «ҐҐ - «оЎ п Є« ўЁи , ўл室 - F10');
_ _ _ ch:=readkey;
until (tw=nil) or (ch=chr(68))
else showmsg(_ЌҐв Ёд®а¬ жЁЁ ® Ї бб ¦Ёа е!_); {Ё зҐ ЇаҐ¤гЇаҐ¦¤ Ґ¬}
end;
procedure poisk; {Ї®ЁбЄ Ї бб ¦Ёа }
var fam:string[20]; {д ¬Ё«Ёп Ї бб ¦Ёа }
_ _ fflag : boolean; {д« Ј б®бв®пЁп Ї®ЁбЄ }
begin
_ _ _tw:=topw;
_ _ _oldattr:=textattr;
_ _ _fflag:=false;
_ _ _statusmsg('Џ®ЁбЄ Ї бб ¦Ёа ');
_ _ _oknowork;
_ _ _gotoxy(5,5); textcolor(7); write('‚ўҐ¤ЁвҐ д ¬Ё«Ёо: ');
_ _ _textcolor(14); readln(fam);
_ _ _clrscr;
_ _ _if fam='Ї®Є § вм ўбҐе' then begin showpass; fflag:=true; end else
_ _ _while tw<>nil do
_ _ _ _ _ _begin
_ _ _ _ _ _if tw^.fam=fam then
_ _ _ _ _ _ _ begin
_ _ _ _ _ _ _ gotoxy(5,5); textcolor(7); write('” ¬Ё«Ёп: ');
_ _ _ _ _ _ _ textcolor(14); write(tw^.fam);
_ _ _ _ _ _ _ gotoxy(5,6); textcolor(7); write('€¬п, ®взҐбвў®: ');
_ _ _ _ _ _ _ textcolor(14); write(tw^.io);
_ _ _ _ _ _ _ gotoxy(5,7); textcolor(7); write('Џ бЇ®ав: ');
_ _ _ _ _ _ _ textcolor(14); write(tw^.pasp);
_ _ _ _ _ _ _ gotoxy(5,8); textcolor(7); write('Ќ Їа ў«пҐвбп ў: ');
_ _ _ _ _ _ _ textcolor(14); write(tw^.punktnazn);
_ _ _ _ _ _ _ gotoxy(5,9); textcolor(7); write('Џ®Ґ§¤ ь ');
_ _ _ _ _ _ _ textcolor(14); write(tw^.npoezd);
_ _ _ _ _ _ _ gotoxy(5,10); textcolor(7); write('ЃЁ«Ґв®ў: ');
_ _ _ _ _ _ _ textcolor(14); write(tw^.kolvo);
_ _ _ _ _ _ _ fflag:=true;
_ _ _ _ _ _ _ end;
_ _ _ _ _ _tw:=tw^.rw;
_ _ _ _ _ _end;
_ _ _if not fflag then showmsg('Џ бб ¦Ёа Ґ ©¤Ґ!');
_ _ _textattr:=oldattr;
end;
procedure analiz; { «Ё§ ¤Ґп⥫м®бвЁ}
var num : string[5]; {®¬Ґа Ї®Ґ§¤ }
_ _ kol, koltotal : integer; {Є®«ЁзҐбвў® ЎЁ«Ґв®ў Є®ЄаҐв®Ј® Ї®Ґ§¤ Ё ®ЎйҐҐ Є®«ЁзҐбвў® ЎЁ«Ґв®ў б® ўбҐе Ї®Ґ§¤®ў}
_ _ find : boolean; {д« Ј Ї®ЁбЄ }
_ _ sum, sumtotal : real; {б㬬 Їа®¤ ле ЎЁ«Ґв®ў Є®ЄаҐв®Ј® Ї®Ґ§¤ Ё ®Ўй п б㬬 ўбҐе Їа®¤ ле ЎЁ«Ґв®ў}
begin
tw:=topw; tr:=topr; find:=false; kol:=0; sum:=1; sumtotal:=0; koltotal:=0;
_ _ _statusmsg('Џа®б¬®ва бв вЁбвЁЄЁ Ї® Їа®¤ ¦ ¬');
_ _ _oknowork;
_ _ _gotoxy(5,5); textcolor(7); write('‚ўҐ¤ЁвҐ ®¬Ґа Ї®Ґ§¤ : ');
_ _ _textcolor(14); readln(num);
if num<>'ўбҐ' then {Ґб«Ё Ї®Є § вм Ї® Є®ЄаҐв®¬г Ї®Ґ§¤г}
begin
repeat
_ _ _ if tw^.npoezd=num then kol:=kol+tw^.kolvo; {бзЁв Ґ¬ Є®«-ў®}
_ _ _ tw:=tw^.rw;
until tw=nil;
_ _ _ if kol<>0 then {Ґб«Ё Ўл«Ё Їа®¤ л ЎЁ«Ґвл}
_ _ _ _ _repeat
_ _ _ _ _if tr^.numpoezd=num then
_ _ _ _ _ _ begin
_ _ _ _ _ _ _ _ _sum:=kol*tr^.cena; {в® ўлзЁб«пҐ¬ б㬬г}
_ _ _ _ _ _ _ _ _find:=true; {Ё бв ўЁ¬ д« Ј}
_ _ _ _ _ _ end
_ _ _ _ _ _ else
_ _ _ _ _ _ _ _ begin
_ _ _ _ _ _ _ _ find:=false; {Ї®Ґ§¤ Ґ ©¤Ґ}
_ _ _ _ _ _ _ _ tr:=tr^.rr;
_ _ _ _ _ _ _ _ end;
_ _ _ _ _until (tr=nil) or (find);
_ _ _ if kol<>0 then begin {ЇҐз в Ґ¬ १г«мв вл}
_ _ _ _ _gotoxy(5,7); textcolor(7); write('‚ᥣ® Їа®¤ ® ЎЁ«Ґв®ў: ');
_ _ _ _ _textcolor(14); write(kol,' ив');
_ _ _ _ _gotoxy(5,8); textcolor(7); write('Ќ ®Ўйго б㬬г: ');
_ _ _ _ _textcolor(14); write(sum:8:2,' агЎ');
_ _ _ _ _end
_ _ _ _ _ _ else
_ _ _ _ _ _ _ _ showmsg('Ќ ¤ л© Ї®Ґ§¤ ЎЁ«Ґвл Ґ Їа®¤ ў «Ёбм');
end
_ _else {Ё зҐ Ґб«Ё Ґ®Ўе®¤Ё¬® Ї®Є § вм ®Ўйго б㬬㠨 Є®«ЁзҐбвў®}
_ _ _ _begin
_ _ _ _ _ _ repeat
_ _ _ _ _ _ _ _ _ kol:=tw^.kolvo;
_ _ _ _ _ _ _ _ _ num:=tw^.npoezd;
_ _ _ _ _ _ _ _ _ koltotal:=koltotal+kol; {®ЎйҐҐ Є®«ЁзҐбвў®}
_ _ _ _ _ _ _ _ _ tr:=topr; find:=false;
_ _ _ _ _ _ _ _ _ repeat
_ _ _ _ _ _ _ _ _ _ _ _ if tr^.numpoezd=num then
_ _ _ _ _ _ _ _ _ _ _ _ _ _begin
_ _ _ _ _ _ _ _ _ _ _ _ _ _sumtotal:=sumtotal+kol*tr^.cena;
_ __ __ __ __ __ _{®Ўй п бв®Ё¬®бвм}
_ _ _ _ _ _ _ _ _ _ _ _ _ _find:=true;
_ _ _ _ _ _ _ _ _ _ _ _ _ _end;
_ _ _ _ _ _ _ _ _ _ _ _ tr:=tr^.rr;
_ _ _ _ _ _ _ _ _ until (tr=nil) or (find);
_ _ _ _ _ _ _ _ _ tw:=tw^.rw;
_ _ _ _ _ _ until tw=nil;
_ _ _ _ _ _ gotoxy(5,7); textcolor(7); write('‚ᥣ® Їа®¤ ® ЎЁ«Ґв®ў: ');
_ _ _ _ _ _ textcolor(14); write(koltotal,' ив');
_ _ _ _ _ _ gotoxy(5,8); textcolor(7); write('Ќ ®Ўйго б㬬г: ');
_ _ _ _ _ _ textcolor(14); write(sumtotal:8:2,' агЎ');
_ _end;
textattr:=oldattr;
end;
begin {®б®ў п Їа®Ја ¬¬ }
_ _ _textattr:=cwork;
_ _ _clrscr;
_ _ _assign (fwork,'C:\work.dat'); {бўп§лў Ґ¬ fwork б д ©«®¬ work.dat}
_ _ _assign (froad,'C:\road.dat'); {бўп§лў Ґ¬ froad б д ©«®¬ road.dat}
_ _ _createlist; {ᮧ¤ Ґ¬ а Ў®зЁҐ бЇЁбЄЁ б ¤ л¬Ё Ё§ д ©«®ў}
_ _ _menu[1]:=' ‘奬 _ _ _';
_ _ _hint[1]:='‚лў®¤ Ёд®а¬ жЁЁ ® ўбҐе ¤®бвгЇле Їа ў«ҐЁпе';
_ _ _menu[2]:=' €§¬ҐҐЁп ';
_ _ _hint[2]:='‚ҐбҐЁҐ Ё§¬ҐҐЁ© ў б奬㠦Ґ«Ґ§®© ¤®а®ЈЁ';
_ _ _menu[3]:=' Џа®¤ ¦ _ _';
_ _ _hint[3]:='Џа®¤ ¦ ЎЁ«Ґв б ॣЁбва жЁҐ© Ї бб ¦Ёа ў Ў §Ґ';
_ _ _menu[4]:=' ‚®§ўа в_ _';
_ _ _hint[4]:='“¤ «ҐЁҐ Ї бб ¦Ёа ўҐагўиҐЈ® ЎЁ«Ґв Ё§ Ў §л';
_ _ _menu[5]:=' Џ®ЁбЄ_ _ _';
_ _ _hint[5]:='Џ®ЁбЄ Ї бб ¦Ёа Ї® д ¬Ё«ЁЁ Ё ўлў®¤ ўбҐе ¤ ле ® Ґ¬';
_ _ _menu[6]:=' Ђ «Ё§_ _ ';
_ _ _hint[6]:='Ђ «Ё§ ¤Ґп⥫м®бвЁ, в Є®© Є Є Є®«ЁзҐбвў® Їа®¤ ле ЎЁ«Ґв®ў ®ЇаҐ¤Ґ«Ґл©_ _ _¬ аиагв Ё Ёе бв®Ё¬®бвм';
_ _ _menu[7]:=' ‚л室_ _ _';
_ _ _hint[7]:='‡ ўҐа襨Ґ а Ў®вл б Їа®Ја ¬¬®©';
_ _ _punkt:=1;
_ _ _x:=1;
_ _ _y:=3;
_ _ _textattr:=norm;
_ _ _menutoscr; {ўлў®¤Ё¬ ¬Ґо}
_ _ _repeat
_ _ _ _ _ _ch:=readkey;
_ _ _ _ _ _if ch = chr(0) then
_ _ _ _ _ _ _ begin
_ _ _ _ _ _ _ _ _ _ch:=readkey;
_ _ _ _ _ _ _ _ _ _case ch of
_ _ _ _ _ _ _ _ _ _ _ _ chr(80) : if punkt<n then begin
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ oknomenu(x,y+punkt-1);
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ write(menu[punkt]);
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ statusmsg(hint[punkt]);
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ punkt:=punkt+1;
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ textattr:=sel;
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ oknomenu(x,y+punkt-1);
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ write(menu[punkt]);
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ statusmsg(hint[punkt]);
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ textattr:=norm;
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ end;
_ _ _ _ _ _ _ _ _ _ _ _ chr(72) : if (punkt<=n) and (punkt>1) then begin
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ oknomenu(x,y+punkt-1);
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ write(menu[punkt]);
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ statusmsg(hint[punkt]);
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ punkt:=punkt-1;
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ textattr:=sel;
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ oknomenu(x,y+punkt-1);
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ write(menu[punkt]);
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ statusmsg(hint[punkt]);
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ textattr:=norm;
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ end;
_ _ _ _ _ _ _ _ _ _end;
_ _ _ _ _ _ _ end
_ _ _ _ _ _else
_ _ _ _ _ _ _ _if ch = chr(13) then begin
_ _ _ _ _ _ _ _ _ case punkt of
_ _ _ _ _ _ _ _ _ 1 : cxema;
_ _ _ _ _ _ _ _ _ 2 : izm;
_ _ _ _ _ _ _ _ _ 3 : prodazha;
_ _ _ _ _ _ _ _ _ 4 : vozvrat;
_ _ _ _ _ _ _ _ _ 5 : poisk;
_ _ _ _ _ _ _ _ _ 6 : analiz;
_ _ _ _ _ _ _ _ _ 7 : ch:=chr(27);
_ _ _ _ _ _ _ _ _ end;
_ _ _ _ _ _menutoscr;
_ _ _ _ _ _end;
_ _ _until ch = chr(27);
close (fwork); {§ Єалў Ґ¬ д ©«л}
close (froad);
end.
uses crt;
const
norm=6; {梥⠯гЄв ¬Ґо}
sel=96; {梥⠢뤥«Ґ®Ј® ЇгЄв ¬Ґо}
status=112; {梥в бва®ЄЁ б®бв®пЁп}
cwork=$17; {梥в а Ў®зҐЈ® ®Є }
n=7; {Є®«ЁзҐбвў® ЇгЄв®ў ў ¬Ґо}
type
pswork = ^work; {Ёд®а¬ жЁп ® Ї бб ¦Ёа е}
swork=record
fam : string[20]; {д ¬Ё«Ёп}
io : string[30]; {Ё¬п, ®взҐбвў®}
pasp : string[15]; {Ї бЇ®авлҐ ¤ лҐ}
punktnazn : string[10]; {ЇгЄв § 票п}
npoezd : string[5]; {®¬Ґа Ї®Ґ§¤ }
kolvo : integer; {Є®«ЁзҐбвў® ЎЁ«Ґв®ў}
lw,rw : pswork; {ббл«ЄЁ бЇЁбЄ Ї бб ¦Ёа®ў}
end;
psroad = ^road;
road = record
numpoezd : string[5]; {®¬Ґа Ї®Ґ§¤ }
punkt : string[10]; {ЇгЄв § 票п}
time : string[14]; {ўаҐ¬п ®вЇа ў«ҐЁп}
svob : integer; {Є®«ЁзҐбвў® бў®Ў®¤ле ¬Ґбв}
cena : real; {жҐ ЎЁ«Ґв }
lr,rr : psroad; {ббл«ЄЁ бЇЁбЄ ¤®а®Ј}
end;
var
menu : array[1..n] of string[11]; {¬ ббЁў §ў Ё© ЇгЄв®ў ¬Ґо}
hint : array[1..n] of string; {¬ ббЁў Ї®¤бЄ §®Є ¤«п ¬Ґо}
punkt : integer; {⥪гйЁ© ЇгЄв ¬Ґо}
oldattr : integer; {ўаҐ¬Ґ®Ґ еа ҐЁҐ бв але вваЁЎгв®ў}
ch : char; {бЁ¬ў®« ¦ в®© Є« ўЁиЁ}
x, y : integer; {Ї®§ЁжЁп ЇҐз вЁ нЄа Ґ}
i : integer; {Ї а ¬Ґва жЁЄ« }
fwork : file of work;
froad : file of road;
bufwork : work;
bufroad : road;
topw, tw, pw : pswork; {гЄ § ⥫Ё бЇЁбЄ work}
topr, tr, pr : psroad; {гЄ § ⥫Ё бЇЁбЄ road}
bflag : integer; {д« Ј ®вўҐв ЁбЇ®«м§гҐ¬л© ў Їа®жҐ¤гॠbilet}
procedure oknowork;
{§ ¤ ЁҐ а Ў®зҐЈ® ®Є }
var tempattr : integer;
begin
tempattr:=textattr; {б®еа 塞 бв алҐ вваЁЎгвл}
textattr:=cwork; _ _{Ё гбв ў«Ёў Ґ¬ ®ўлҐ}
window(12,1,80,23); {§ ¤ Ґ¬ а Ў®зго ®Ў« бвм}
clrscr;
end;
procedure oknomenu(a,b:integer);
{ўе®¤лҐ Ї а ¬Ґвал - Є®®а¤Ё вл Єгаб®а }
begin
window(1,1,11,23);
gotoxy(a,b);
end;
procedure statusmsg(msg:string);
var tempattr : integer;
begin
tempattr:=textattr;
window(1,24,80,25); {§ ¤ Ґ¬ Ї а ¬Ґвал ®Є }
textattr:=status;
clrscr;
write(msg); {ЇҐз в Ґ¬ Ї®¤бЄ §Єг}
textattr:=tempattr;
end;
procedure showmsg(msg:string); {Ї®Є § б®®ЎйҐЁп}
var tempattr, xmsg : integer;
begin
tempattr:=textattr;
xmsg:=(39-trunc(length(msg)/2)); {ўлзЁб«пҐ¬ ЇҐаўго Є®®а¤Ё вг ®Є }
window(xmsg,10,xmsg+length(msg)+3,12); {§ ¤ Ґ¬ ®Є®}
textbackground(4);
textcolor(15);
clrscr;
gotoxy(3,2); write(msg); {ЇҐз в Ґ¬ б®®ЎйҐЁҐ}
textattr:=tempattr;
statusmsg('Ќ ¦¬ЁвҐ «оЎго Є« ўЁиг');
readkey;
end;
procedure createlist; {ᮧ¤ ЁҐ а Ў®зЁе бЇЁбЄ®ў ў Ї ¬пвЁ}
var nw : pswork;
nr : psroad;
begin
statusmsg('‡ Јаг§Є ¤ ле...');
reset (fwork); {®вЄалў Ґ¬ д ©«л}
reset (froad);
topw:=nil; topr:=nil; tw:=topw; tr:=topr;
while not eof(fwork) do {бЇЁб®Є Ї бб ¦Ёа®ў}
begin
read (fwork, bufwork);
new(nw);
nw^.fam := bufwork.fam;
nw^.io := bufwork.io;
nw^.pasp := bufwork.pasp;
nw^.punktnazn := bufwork.punktnazn;
nw^.npoezd := bufwork.npoezd;
nw^.kolvo := bufwork.kolvo;
if topw=nil then
begin
nw^.lw:=nil; nw^.rw:=nil; topw:=nw; tw:=topw;
end
else
begin
tw^.rw:=nw; nw^.lw:=tw; nw^.rw:=nil; tw:=nw;
end;
end;
while not eof(froad) do {бЇЁб®Є Ї®Ґ§¤®ў}
begin
read (froad, bufroad);
new(nr);
nr^.numpoezd := bufroad.numpoezd;
nr^.punkt := bufroad.punkt;
nr^.time := bufroad.time;
nr^.svob := bufroad.svob;
nr^.cena := bufroad.cena;
if topr=nil then
begin
nr^.lr:=nil; nr^.rr:=nil; topr:=nr; tr:=topr;
end
else
begin
tr^.rr:=nr; nr^.lr:=tr; nr^.rr:=nil; tr:=nr;
end;
end;
end;
procedure savelist; {б®еа ҐЁҐ бЇЁбЄ®ў}
begin
tw:=topw;
tr:=topr;
rewrite (fwork);
rewrite (froad);
while tw<>nil do {бЇЁб®Є Ї бб ¦Ёа®ў}
begin
bufwork.fam := tw^.fam;
bufwork.io := tw^.io;
bufwork.pasp := tw^.pasp;
bufwork.punktnazn := tw^.punktnazn;
bufwork.npoezd := tw^.npoezd;
bufwork.kolvo := tw^.kolvo;
write (fwork, bufwork);
tw:=tw^.rw;
end;
while tr<>nil do {бЇЁб®Є Ї®Ґ§¤®ў}
begin
bufroad.numpoezd := tr^.numpoezd;
bufroad.punkt := tr^.punkt;
bufroad.time := tr^.time;
bufroad.svob := tr^.svob;
bufroad.cena := tr^.cena;
write (froad, bufroad);
tr:=tr^.rr;
end;
end;
procedure menutoscr;
{ўлў®¤ ¬Ґо нЄа }
var i : integer;
begin
oknomenu(1,1);
clrscr;
textattr:=sel;
write('_ _ЊҐо_ _ ');
textattr:=norm;
for i:=1 to n do {ЇҐз в Ґ¬ ўбҐ ЇгЄвл}
begin
gotoxy(x,y+i-1);
write(menu[i]);
end;
textattr:=sel; {ўл¤Ґ«пҐ¬ 梥⮬}
gotoxy(x,y+punkt-1);
write(menu[punkt]); {Ё ЇҐз в Ґ¬ ўл¤Ґ«Ґл© ЇгЄв}
satusmsg(hint[punkt]); {Ї®Є §лў Ґ¬ Ї®¤бЄ §Єг}
textattr:=norm; {ў®§ўа й Ґ¬ Ёбе®¤л© жўҐв}
end;
procedure cxema;
begin
oknowork;
tr:=topr;
if filesize(froad)<>0 then {Ґб«Ё ў д ©«Ґ Ґбвм ¤ лҐ, в® ЇҐз в Ґ¬}
while (tr<>nil) and (ch<>chr(68)) do
begin
oknowork;
gotoxy(5,5); textcolor(7);
write('Ќ®¬Ґа Ї®Ґ§¤ : '); textcolor(14); write(tr^.numpoezd);
gotoxy(5,6); textcolor(7);
write('ЏгЄв § 票п: '); textcolor(14); write(tr^.punkt);
gotoxy(5,7); textcolor(7);
write('‚аҐ¬п ®вЇа ў«ҐЁп: '); textcolor(14); write(tr^.time);
gotoxy(5,8); textcolor(7);
write('Љ®«ЁзҐбвў® бў®Ў®¤ле ¬Ґбв: '); textcolor(14); write(tr^.svob);
gotoxy(5,9); textcolor(7);
write('–Ґ ЎЁ«Ґв : '); textcolor(14); write(tr^.cena:8:2);
tr:=tr^.rr;
if tr=nil then
begin
gotoxy(5,11); textcolor(3); write('Љ®Ґж бЇЁбЄ , ¦¬ЁвҐ «оЎго Є« ўЁиг');
end;
statusmsg('Џа®б¬®ва ¤ «ҐҐ - «оЎ п Є« ўЁи , ўл室 - F10');
ch:=readkey;
end
else showmsg('ЌҐв Ёд®а¬ жЁЁ ® Ї®Ґ§¤ е !'); {Ё зҐ б®®Ўй Ґ¬}
textattr:=oldattr; {ў®ббв ў«Ёў Ґ¬ бв алҐ вваЁЎгвл}
end;
procedure inspoezd;
{б®авЁа®ўЄ - Ї® ў®§а бв Ёо ®¬Ґа }
var num : string[5];
nr : psroad;
begin
statusmsg('‚ў®¤ § ўҐаи Ґвбп Ї®б«Ґ ўў®¤ Ї®б«Ґ¤ҐЈ® § 票п');
oknowork;
gotoxy(5,5); textcolor(7); write('Ќ®¬Ґа Ї®Ґ§¤ : ');
textcolor(14); readln(num);
if length(num)<>0 then begin
{Ґб«Ё ®¬Ґа ўўҐ¤Ґ, в® § ¤ Ґ¬ ¤ «миҐ}
new(nr); {ўлҐ«пҐ¬ Ї ¬пвм}
nr^.numpoezd:=num;
gotoxy(5,6); textcolor(7); write('ЏгЄв § 票п: ');
textcolor(14); readln(nr^.punkt);
gotoxy(5,7); textcolor(7); write('‚аҐ¬п ®вЇа ў«ҐЁп: ');
textcolor(14); readln(nr^.time);
gotoxy(5,8); textcolor(7); write('Љ®«ЁзҐбвў® бў®Ў®¤ле ¬Ґбв: ');
textcolor(14); readln(nr^.svob);
gotoxy(5,9); textcolor(7); write('–Ґ ЎЁ«Ґв : ');
textcolor(14); readln(nr^.cena);
tr:=topr; pr:=nil;
if (topr=nil) or (nr^.numpoezd<topr^.numpoezd) then
begin
nr^.lr:=nil;
nr^.rr:=topr;
topr^.lr:=nr; topr:=nr;
end
else
while (nr^.numpoezd > tr^.numpoezd) and (tr<>nil) do
begin
pr:=tr; tr:=tr^.rr;
end;
if nr^.numpoezd=tr^.numpoezd then showmsg('’ Є®© Ї®Ґ§¤ 㦥 бгйҐбвўгҐв')
else
if pr<>nil then
begin
nr^.rr:=tr; nr^.lr:=pr; pr^.rr:=nr; tr^.lr:=nr;
end;
end;
end;
procedure delpoezd; {г¤ «ҐЁҐ Ї®Ґ§¤ Ё§ бЇЁбЄ Ї® ҐЈ® ®¬Ґаг}
var numpoezd : string[5];
dflag : boolean; {д« Ј, гЄ §лў Ґв Ўл« «Ё г¤ «Ґ Ї®Ґ§¤}
begin
_ _ _clrscr;
_ _ _tr:=topr; pr:=nil; dflag:=false;
_ _ _gotoxy(5,5); write('‚ўҐ¤ЁвҐ ®¬Ґа Ї®Ґ§¤ : ');
_ _ _textcolor(14); readln(numpoezd);
_ _ _while tr<>nil do
_ _ _ _ _ _if tr^.numpoezd=numpoezd then
_ _ _ _ _ _ _ begin
_ _ _ _ _ _ _ if tr=topr then begin topr:=topr^.rr; topr^.lr:=nil; end {Ґб«Ё ЇҐаўл© н«Ґ¬Ґв}
_ _ _ _ _ _ _ else
_ _ _ _ _ _ _ _ _ if (tr^.rr=nil) and (tr^.lr=nil) then begin topr:=nil; end {Ґб«Ё Ґ¤Ёб⢥л©}
_ _ _ _ _ _ _ _ _ _ _else
_ _ _ _ _ _ _ _ _ _ _ _ _if tr^.rr=nil then pr^.rr:=nil {Ї®б«Ґ¤Ё©}
_ _ _ _ _ _ _ _ _ _ _ _ _ _ else
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ begin pr^.rr:=tr^.rr; tr^.rr^.lr:=pr; end; {Ё зҐ «оЎ®© ¤агЈ®©}
_ _ _ _ _ _ _ _ _ tr:=nil; {г¤ «пҐ¬ н«Ґ¬Ґв}
_ _ _ _ _ _ _ _ _ dflag:=true; {Ё гбв ў«Ёў Ґ¬ д« Ј}
_ _ _ _ _ _ _ end
_ _ _ _ _ _else begin pr:=tr; tr:=tr^.rr; end;
_ _ _ _ _ _if dflag then showmsg('Џ®Ґ§¤ г¤ «Ґ Ё§ бЇЁбЄ ')
_ _ _ _ _ _ _ else showmsg('Џ®Ґ§¤ б в ЄЁ¬ ®¬Ґа®¬ Ґ ©¤Ґ!');
end;
procedure izm; {ўҐбҐЁҐ Ё§¬ҐҐЁ© ў б奬㠦Ґ«Ґ§®© ¤®а®ЈЁ}
begin
_ _ _oldattr:=textattr;
_ _ _repeat
_ _ _statusmsg('„®Ў ўЁвм Ї®Ґ§¤ - F1, г¤ «Ёвм Ї®Ґ§¤ - F2, ўл室 - F10');
_ _ _oknowork;
_ _ _gotoxy(5,5); write('‚ н⮬ ०Ё¬Ґ ў®§¬®¦® г¤ «ҐЁҐ Ё ¤®Ў ў«ҐЁҐ Ї®Ґ§¤®ў');
_ _ _ch:=readkey;
_ _ _case ch of
_ _ _ _ _ chr(59) : inspoezd; { ¦ вЁҐ F1, ўл§лў Ґв ¤®Ў ў«ҐЁҐ}
_ _ _ _ _ chr(60) : delpoezd; { ¦ вЁҐ F2, ўл§лў Ґв г¤ «ҐЁҐ}
_ _ _ _ _ end;
_ _ _until ch=chr(68); { ¦ вЁҐ F10 _ ўл室 ў ¬Ґо}
_ _ _savelist; {б®еа 塞 бЇЁбЄЁ}
_ _ _textattr:=oldattr;
end;
procedure bilet(kol:integer; num, mode:string);
{Ї а ¬Ґвал _ Є®«ЁзҐбвў® ЎЁ«Ґв®ў, ®¬Ґа Ї®Ґ§¤ Ё ०Ё¬ а Ў®вл Їа®жҐ¤гал (sale _ Їа®¤ ¦ ЎЁ«Ґв®ў, back _ ў®§ўа в)}
begin
tr:=topr; bflag:=0;
_ _ _if mode='sale' then {Ґб«Ё Їа®¤ Ґ¬}
_ _ _ _ repeat
_ _ _ _ _ _ _ begin
_ _ _ _ _ _ _ if tr^.numpoezd=num then
_ _ _ _ _ _ _ _ _if tr^.svob<kol then
_ _ _ _ _ _ _ _ _ _ begin
_ _ _ _ _ _ _ _ _ _ bflag:=0; {Ґ¤®бв в®з® бў®Ў®¤ле ¬Ґбв}
_ _ _ _ _ _ _ _ _ _ end
_ _ _ _ _ _ _ _ _ _ else
_ _ _ _ _ _ _ _ _ _ _ _ begin
_ _ _ _ _ _ _ _ _ _ _ _ tr^.svob:=tr^.svob - kol; bflag:=1;
_ __ _{Ґб«Ё ЎЁ«Ґв®ў еў в Ґв Ё Ї®Ґ§¤ ©¤Ґ, в® д« Ј=1}
_ _ _ _ _ _ _ _ _ _ _ _ end
_ _ _ _ _ _ _ _ _else bflag:=2; {д« Ј=2 _ Ї®Ґ§¤ Ґ ©¤Ґ}
_ _ _ _ _ _ _ tr:=tr^.rr;
_ _ _ _ _ _ _ end;
_ _ _ _ until (tr=nil) or (bflag = 1)
_ _ _ _ else
_ _ _ _ _ _ if mode='back' then {Ґб«Ё ў®§ўа й Ґ¬}
_ _ _ _ _ _ begin
_ _ _ _ _ _ repeat
_ _ _ _ _ _ _ _if tr^.numpoezd=num then
_ _ _ _ _ _ _ _ _ _ _ begin
_ _ _ _ _ _ _ _ _ _ _ tr^.svob := tr^.svob + kol; bflag := 4;
{д« Ј=4 _ ЎЁ«Ґвл ў®§ўа йҐл гбЇҐи®}
_ _ _ _ _ _ _ _ _ _ _ end
_ _ _ _ _ _ _ _else bflag:=2; {д« Ј=2 _ Ї®Ґ§¤ Ґ ©¤Ґ}
_ _ _ _ _ _ tr:=tr^.rr;
_ _ _ _ _ _ until (tr=nil) or (bflag = 4)
_ _ _ _ _ _ end;
_ _ _ _ case bflag of
{Їа®ўҐа塞 б®бв®пЁҐ д« Ј Ё Ї®Є §лў Ґ¬ б®®ЎйҐЁҐ}
_ _ _ _ _ _ _0 : showmsg('ЌҐ¤®бв в®з® бў®Ў®¤ле ¬Ґбв!');
_ _ _ _ _ _ _1 : showmsg('Џа®¤ ®, Ї бб ¦Ёа ¤®Ў ў«Ґ ў Ў §г');
_ _ _ _ _ _ _2 : showmsg('„ л© Ї®Ґ§¤ Ґ ©¤Ґ!');
_ _ _ _ _ _ _4 : showmsg('‚®§ўа 饮');
_ _ _ _ _ _ _end;
end;
procedure prodazha; {Їа®¤ ¦ ЎЁ«Ґв }
var fam : string[20];
_ _ nw : pswork;
_ _ np : string[5]; {®¬Ґа Ї®Ґ§¤ }
_ _ kl : integer; {Є®«ЁзҐбвў® ЎЁ«Ґв®ў}
begin
_ _ _oldattr:=textattr;
_ _ _statusmsg('‚ў®¤ § ўҐаи Ґвбп Ї®б«Ґ ўў®¤ Ї®б«Ґ¤ҐЈ® § 票п');
_ _ _oknowork;
_ _ _gotoxy(5,5); textcolor(7); write('” ¬Ё«Ёп: ');
_ _ _textcolor(14); readln(fam);
_ _ _if length(fam)<>0 then begin {Ґб«Ё д ¬Ё«Ёп ўўҐ¤Ґ }
_ _ _ _ new(nw); {ўл¤Ґ«пҐ¬ Ї ¬пвм}
_ _ _ _ nw^.fam:=fam;
_ _ _ _ gotoxy(5,6); textcolor(7); write('€¬п, ®взҐбвў®: ');
_ _ _ _ textcolor(14); readln(nw^.io);
_ _ _ _ gotoxy(5,7); textcolor(7); write('Џ бЇ®ав: ');
_ _ _ _ textcolor(14); readln(nw^.pasp);
_ _ _ _ gotoxy(5,8); textcolor(7); write('ЏгЄв § 票п: ');
_ _ _ _ textcolor(14); readln(nw^.punktnazn);
_ _ _ _ gotoxy(5,9); textcolor(7); write('Ќ®¬Ґа Ї®Ґ§¤ : ');
_ _ _ _ textcolor(14); readln(nw^.npoezd);
_ _ _ _ gotoxy(5,10); textcolor(7); write('Љ®«ЁзҐбвў® ЎЁ«Ґв®ў: ');
_ _ _ _ textcolor(14); readln(nw^.kolvo);
_ _ _ _ np:=nw^.npoezd; kl:=nw^.kolvo;
_ _ _ _ tw:=topw; pw:=nil;
_ _ _ _ bilet(kl, np, 'sale'); {ўл§лў Ґ¬ ў ०Ё¬Ґ Їа®¤ ¦Ё}
_ _ _ _ if bflag = 1 then
{Ґб«Ё гЇҐи® Їа®¤ ®, в® ¤®Ў ў«пҐ¬ § ЇЁбм ў бЇЁб®Є}
_ _ _ _ begin
_ _ _ _ if (topw=nil) or (nw^.fam<topw^.fam) then
_ _ _ _ _ _begin
_ _ _ _ _ _nw^.lw:=nil;
_ _ _ _ _ _nw^.rw:=topw;
_ _ _ _ _ _topw^.lw:=nw; topw:=nw;
_ _ _ _ _ _end
_ _ _ _ else
_ _ _ _ _ _ while (nw^.fam > tw^.fam) and (tw<>nil) do
_ _ _ _ _ _ _ _ _ begin
_ _ _ _ _ _ _ _ _ pw:=tw; tw:=tw^.rw;
_ _ _ _ _ _ _ _ _ end;
_ _ _ _ _ _ if pw<>nil then
_ _ _ _ _ _ _ _ _ _begin
_ _ _ _ _ _ _ _ _ _nw^.rw:=tw; nw^.lw:=pw; pw^.rw:=nw; tw^.lw:=nw;
_ _ _ _ _ _ _ _ _ _end;
_ _ _ _ end;
_ _ _ _ end;
_ _ _ _ savelist; {б®еа 塞 бЇЁбЄЁ}
_ _ _ _ textattr:=oldattr;
end;
procedure vozvrat; {ў®§ўа в ЎЁ«Ґв }
var fam:string[20]; {д ¬Ё«Ёп Ї бб ¦Ёа }
_ _ dflag:boolean; {д« Ј б®бв®пЁп}
_ _ kl:integer; {Є®«ЁзҐбвў® ЎЁ«Ґв®ў}
_ _ np:string[5]; {®¬Ґа Ї®Ґ§¤ }
begin
_ _ _statusmsg('“¤ «ҐЁҐ Ї бб ¦Ёа б ў®§ўа ⮬ ЎЁ«Ґв®ў');
_ _ _oknowork;
_ _ _gotoxy(5,5); textcolor(7); write('‚ўҐ¤ЁвҐ д ¬Ё«Ёо: ');
_ _ _textcolor(14); readln(fam);
_ _ _tw:=topw; pw:=nil; dflag:=false;
_ _ _while tw<>nil do
_ _ _ _ _ _if tw^.fam=fam then
_ _ _ _ _ _ _ begin
_ _ _ _ _ _ _ kl:=tw^.kolvo; np:=tw^.npoezd;
_ _ _ _ _ _ _ bilet(kl, np, 'back'); {ўл§лў Ґ¬ ў ०Ё¬Ґ ў®§ўа в }
_ _ _ _ _ _ _ if bflag = 4 then
{Ґб«Ё ўҐаг«Ё гбЇҐи®, в® г¤ «пҐ¬ Ї бб ¦Ёа Ё§ бЇЁбЄ }
_ _ _ _ _ _ _ if tw=topw then begin topw:=topw^.rw; topw^.lw:=nil; end {Ґб«Ё ЇҐаў п § ЇЁбм}
_ _ _ _ _ _ _ else
_ _ _ _ _ _ _ _ _ if (tw^.rw=nil) and (tw^.lw=nil) then begin topw:=nil; end {Ґб«Ё ЇҐаў п Ё Ґ¤Ёб⢥ п}
_ _ _ _ _ _ _ _ _ _ _else
_ _ _ _ _ _ _ _ _ _ _ _ _if tw^.rw=nil then pw^.rw:=nil {Ї®б«Ґ¤пп}
_ _ _ _ _ _ _ _ _ _ _ _ _ _ else
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ begin pw^.rw:=tw^.rw; tw^.rw^.lw:=pw; end; {Ё зҐ «оЎ п ¤агЈ п § ЇЁбм}
_ _ _ _ _ _ _ _ _ tw:=nil; {г¤ «пҐ¬ § ЇЁбм}
_ _ _ _ _ _ _ _ _ dflag:=true; {Ё бв ўЁ¬ д« Ј}
_ _ _ _ _ _ _ end
_ _ _ _ _ _else begin pw:=tw; tw:=tw^.rw; end;
_ _ _ _ _ _if dflag then showmsg('Џ бб ¦Ёа г¤ «Ґ Ё§ бЇЁбЄ ')
_ _ _ _ _ _ _ else showmsg('Џ бб ¦Ёа б в Є®© д ¬Ё«ЁҐ© Ґ ©¤Ґ!');
_ _ _savelist; {б®еа 塞 бЇЁбЄЁ}
_ _ _textattr:=oldattr;
end;
procedure showpass; {Ї®Є §лў Ґ¬ ўбҐе Ї бб ¦Ёа®ў}
begin
tw:=topw;
if filesize(fwork)<>0 then {Ґб«Ё Ёд®а¬ жЁп Ґбвм, в® Ї®Є §лў Ґ¬}
repeat
_ _ _ oknowork;
_ _ _ gotoxy(5,5); textcolor(7); write('” ¬Ё«Ёп: ');
_ _ _ textcolor(14); write(tw^.fam);
_ _ _ gotoxy(5,6); textcolor(7); write('€¬п, ®взҐбвў®: ');
_ _ _ textcolor(14); write(tw^.io);
_ _ _ gotoxy(5,7); textcolor(7); write('Џ бЇ®ав: ');
_ _ _ textcolor(14); write(tw^.pasp);
_ _ _ gotoxy(5,8); textcolor(7); write('Ќ Їа ў«пҐвбп ў: ');
_ _ _ textcolor(14); write(tw^.punktnazn);
_ _ _ gotoxy(5,9); textcolor(7); write('Џ®Ґ§¤ ь ');
_ _ _ textcolor(14); write(tw^.npoezd);
_ _ _ gotoxy(5,10); textcolor(7); write('ЃЁ«Ґв®ў: ');
_ _ _ textcolor(14); write(tw^.kolvo);
_ _ _ tw:=tw^.rw;
_ _ _ if tw=nil then
_ _ _ _ _begin
_ _ _ _ _ _ _ gotoxy(5,12); textcolor(3); write('Љ®Ґж бЇЁбЄ , ¦¬ЁвҐ «оЎго Є« ўЁиг');
_ _ _ _ _end;
_ _ _ statusmsg('Џа®б¬®ва ¤ «ҐҐ - «оЎ п Є« ўЁи , ўл室 - F10');
_ _ _ ch:=readkey;
until (tw=nil) or (ch=chr(68))
else showmsg(_ЌҐв Ёд®а¬ жЁЁ ® Ї бб ¦Ёа е!_); {Ё зҐ ЇаҐ¤гЇаҐ¦¤ Ґ¬}
end;
procedure poisk; {Ї®ЁбЄ Ї бб ¦Ёа }
var fam:string[20]; {д ¬Ё«Ёп Ї бб ¦Ёа }
_ _ fflag : boolean; {д« Ј б®бв®пЁп Ї®ЁбЄ }
begin
_ _ _tw:=topw;
_ _ _oldattr:=textattr;
_ _ _fflag:=false;
_ _ _statusmsg('Џ®ЁбЄ Ї бб ¦Ёа ');
_ _ _oknowork;
_ _ _gotoxy(5,5); textcolor(7); write('‚ўҐ¤ЁвҐ д ¬Ё«Ёо: ');
_ _ _textcolor(14); readln(fam);
_ _ _clrscr;
_ _ _if fam='Ї®Є § вм ўбҐе' then begin showpass; fflag:=true; end else
_ _ _while tw<>nil do
_ _ _ _ _ _begin
_ _ _ _ _ _if tw^.fam=fam then
_ _ _ _ _ _ _ begin
_ _ _ _ _ _ _ gotoxy(5,5); textcolor(7); write('” ¬Ё«Ёп: ');
_ _ _ _ _ _ _ textcolor(14); write(tw^.fam);
_ _ _ _ _ _ _ gotoxy(5,6); textcolor(7); write('€¬п, ®взҐбвў®: ');
_ _ _ _ _ _ _ textcolor(14); write(tw^.io);
_ _ _ _ _ _ _ gotoxy(5,7); textcolor(7); write('Џ бЇ®ав: ');
_ _ _ _ _ _ _ textcolor(14); write(tw^.pasp);
_ _ _ _ _ _ _ gotoxy(5,8); textcolor(7); write('Ќ Їа ў«пҐвбп ў: ');
_ _ _ _ _ _ _ textcolor(14); write(tw^.punktnazn);
_ _ _ _ _ _ _ gotoxy(5,9); textcolor(7); write('Џ®Ґ§¤ ь ');
_ _ _ _ _ _ _ textcolor(14); write(tw^.npoezd);
_ _ _ _ _ _ _ gotoxy(5,10); textcolor(7); write('ЃЁ«Ґв®ў: ');
_ _ _ _ _ _ _ textcolor(14); write(tw^.kolvo);
_ _ _ _ _ _ _ fflag:=true;
_ _ _ _ _ _ _ end;
_ _ _ _ _ _tw:=tw^.rw;
_ _ _ _ _ _end;
_ _ _if not fflag then showmsg('Џ бб ¦Ёа Ґ ©¤Ґ!');
_ _ _textattr:=oldattr;
end;
procedure analiz; { «Ё§ ¤Ґп⥫м®бвЁ}
var num : string[5]; {®¬Ґа Ї®Ґ§¤ }
_ _ kol, koltotal : integer; {Є®«ЁзҐбвў® ЎЁ«Ґв®ў Є®ЄаҐв®Ј® Ї®Ґ§¤ Ё ®ЎйҐҐ Є®«ЁзҐбвў® ЎЁ«Ґв®ў б® ўбҐе Ї®Ґ§¤®ў}
_ _ find : boolean; {д« Ј Ї®ЁбЄ }
_ _ sum, sumtotal : real; {б㬬 Їа®¤ ле ЎЁ«Ґв®ў Є®ЄаҐв®Ј® Ї®Ґ§¤ Ё ®Ўй п б㬬 ўбҐе Їа®¤ ле ЎЁ«Ґв®ў}
begin
tw:=topw; tr:=topr; find:=false; kol:=0; sum:=1; sumtotal:=0; koltotal:=0;
_ _ _statusmsg('Џа®б¬®ва бв вЁбвЁЄЁ Ї® Їа®¤ ¦ ¬');
_ _ _oknowork;
_ _ _gotoxy(5,5); textcolor(7); write('‚ўҐ¤ЁвҐ ®¬Ґа Ї®Ґ§¤ : ');
_ _ _textcolor(14); readln(num);
if num<>'ўбҐ' then {Ґб«Ё Ї®Є § вм Ї® Є®ЄаҐв®¬г Ї®Ґ§¤г}
begin
repeat
_ _ _ if tw^.npoezd=num then kol:=kol+tw^.kolvo; {бзЁв Ґ¬ Є®«-ў®}
_ _ _ tw:=tw^.rw;
until tw=nil;
_ _ _ if kol<>0 then {Ґб«Ё Ўл«Ё Їа®¤ л ЎЁ«Ґвл}
_ _ _ _ _repeat
_ _ _ _ _if tr^.numpoezd=num then
_ _ _ _ _ _ begin
_ _ _ _ _ _ _ _ _sum:=kol*tr^.cena; {в® ўлзЁб«пҐ¬ б㬬г}
_ _ _ _ _ _ _ _ _find:=true; {Ё бв ўЁ¬ д« Ј}
_ _ _ _ _ _ end
_ _ _ _ _ _ else
_ _ _ _ _ _ _ _ begin
_ _ _ _ _ _ _ _ find:=false; {Ї®Ґ§¤ Ґ ©¤Ґ}
_ _ _ _ _ _ _ _ tr:=tr^.rr;
_ _ _ _ _ _ _ _ end;
_ _ _ _ _until (tr=nil) or (find);
_ _ _ if kol<>0 then begin {ЇҐз в Ґ¬ १г«мв вл}
_ _ _ _ _gotoxy(5,7); textcolor(7); write('‚ᥣ® Їа®¤ ® ЎЁ«Ґв®ў: ');
_ _ _ _ _textcolor(14); write(kol,' ив');
_ _ _ _ _gotoxy(5,8); textcolor(7); write('Ќ ®Ўйго б㬬г: ');
_ _ _ _ _textcolor(14); write(sum:8:2,' агЎ');
_ _ _ _ _end
_ _ _ _ _ _ else
_ _ _ _ _ _ _ _ showmsg('Ќ ¤ л© Ї®Ґ§¤ ЎЁ«Ґвл Ґ Їа®¤ ў «Ёбм');
end
_ _else {Ё зҐ Ґб«Ё Ґ®Ўе®¤Ё¬® Ї®Є § вм ®Ўйго б㬬㠨 Є®«ЁзҐбвў®}
_ _ _ _begin
_ _ _ _ _ _ repeat
_ _ _ _ _ _ _ _ _ kol:=tw^.kolvo;
_ _ _ _ _ _ _ _ _ num:=tw^.npoezd;
_ _ _ _ _ _ _ _ _ koltotal:=koltotal+kol; {®ЎйҐҐ Є®«ЁзҐбвў®}
_ _ _ _ _ _ _ _ _ tr:=topr; find:=false;
_ _ _ _ _ _ _ _ _ repeat
_ _ _ _ _ _ _ _ _ _ _ _ if tr^.numpoezd=num then
_ _ _ _ _ _ _ _ _ _ _ _ _ _begin
_ _ _ _ _ _ _ _ _ _ _ _ _ _sumtotal:=sumtotal+kol*tr^.cena;
_ __ __ __ __ __ _{®Ўй п бв®Ё¬®бвм}
_ _ _ _ _ _ _ _ _ _ _ _ _ _find:=true;
_ _ _ _ _ _ _ _ _ _ _ _ _ _end;
_ _ _ _ _ _ _ _ _ _ _ _ tr:=tr^.rr;
_ _ _ _ _ _ _ _ _ until (tr=nil) or (find);
_ _ _ _ _ _ _ _ _ tw:=tw^.rw;
_ _ _ _ _ _ until tw=nil;
_ _ _ _ _ _ gotoxy(5,7); textcolor(7); write('‚ᥣ® Їа®¤ ® ЎЁ«Ґв®ў: ');
_ _ _ _ _ _ textcolor(14); write(koltotal,' ив');
_ _ _ _ _ _ gotoxy(5,8); textcolor(7); write('Ќ ®Ўйго б㬬г: ');
_ _ _ _ _ _ textcolor(14); write(sumtotal:8:2,' агЎ');
_ _end;
textattr:=oldattr;
end;
begin {®б®ў п Їа®Ја ¬¬ }
_ _ _textattr:=cwork;
_ _ _clrscr;
_ _ _assign (fwork,'C:\work.dat'); {бўп§лў Ґ¬ fwork б д ©«®¬ work.dat}
_ _ _assign (froad,'C:\road.dat'); {бўп§лў Ґ¬ froad б д ©«®¬ road.dat}
_ _ _createlist; {ᮧ¤ Ґ¬ а Ў®зЁҐ бЇЁбЄЁ б ¤ л¬Ё Ё§ д ©«®ў}
_ _ _menu[1]:=' ‘奬 _ _ _';
_ _ _hint[1]:='‚лў®¤ Ёд®а¬ жЁЁ ® ўбҐе ¤®бвгЇле Їа ў«ҐЁпе';
_ _ _menu[2]:=' €§¬ҐҐЁп ';
_ _ _hint[2]:='‚ҐбҐЁҐ Ё§¬ҐҐЁ© ў б奬㠦Ґ«Ґ§®© ¤®а®ЈЁ';
_ _ _menu[3]:=' Џа®¤ ¦ _ _';
_ _ _hint[3]:='Џа®¤ ¦ ЎЁ«Ґв б ॣЁбва жЁҐ© Ї бб ¦Ёа ў Ў §Ґ';
_ _ _menu[4]:=' ‚®§ўа в_ _';
_ _ _hint[4]:='“¤ «ҐЁҐ Ї бб ¦Ёа ўҐагўиҐЈ® ЎЁ«Ґв Ё§ Ў §л';
_ _ _menu[5]:=' Џ®ЁбЄ_ _ _';
_ _ _hint[5]:='Џ®ЁбЄ Ї бб ¦Ёа Ї® д ¬Ё«ЁЁ Ё ўлў®¤ ўбҐе ¤ ле ® Ґ¬';
_ _ _menu[6]:=' Ђ «Ё§_ _ ';
_ _ _hint[6]:='Ђ «Ё§ ¤Ґп⥫м®бвЁ, в Є®© Є Є Є®«ЁзҐбвў® Їа®¤ ле ЎЁ«Ґв®ў ®ЇаҐ¤Ґ«Ґл©_ _ _¬ аиагв Ё Ёе бв®Ё¬®бвм';
_ _ _menu[7]:=' ‚л室_ _ _';
_ _ _hint[7]:='‡ ўҐа襨Ґ а Ў®вл б Їа®Ја ¬¬®©';
_ _ _punkt:=1;
_ _ _x:=1;
_ _ _y:=3;
_ _ _textattr:=norm;
_ _ _menutoscr; {ўлў®¤Ё¬ ¬Ґо}
_ _ _repeat
_ _ _ _ _ _ch:=readkey;
_ _ _ _ _ _if ch = chr(0) then
_ _ _ _ _ _ _ begin
_ _ _ _ _ _ _ _ _ _ch:=readkey;
_ _ _ _ _ _ _ _ _ _case ch of
_ _ _ _ _ _ _ _ _ _ _ _ chr(80) : if punkt<n then begin
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ oknomenu(x,y+punkt-1);
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ write(menu[punkt]);
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ statusmsg(hint[punkt]);
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ punkt:=punkt+1;
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ textattr:=sel;
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ oknomenu(x,y+punkt-1);
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ write(menu[punkt]);
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ statusmsg(hint[punkt]);
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ textattr:=norm;
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ end;
_ _ _ _ _ _ _ _ _ _ _ _ chr(72) : if (punkt<=n) and (punkt>1) then begin
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ oknomenu(x,y+punkt-1);
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ write(menu[punkt]);
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ statusmsg(hint[punkt]);
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ punkt:=punkt-1;
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ textattr:=sel;
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ oknomenu(x,y+punkt-1);
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ write(menu[punkt]);
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ statusmsg(hint[punkt]);
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ textattr:=norm;
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ end;
_ _ _ _ _ _ _ _ _ _end;
_ _ _ _ _ _ _ end
_ _ _ _ _ _else
_ _ _ _ _ _ _ _if ch = chr(13) then begin
_ _ _ _ _ _ _ _ _ case punkt of
_ _ _ _ _ _ _ _ _ 1 : cxema;
_ _ _ _ _ _ _ _ _ 2 : izm;
_ _ _ _ _ _ _ _ _ 3 : prodazha;
_ _ _ _ _ _ _ _ _ 4 : vozvrat;
_ _ _ _ _ _ _ _ _ 5 : poisk;
_ _ _ _ _ _ _ _ _ 6 : analiz;
_ _ _ _ _ _ _ _ _ 7 : ch:=chr(27);
_ _ _ _ _ _ _ _ _ end;
_ _ _ _ _ _menutoscr;
_ _ _ _ _ _end;
_ _ _until ch = chr(27);
close (fwork); {§ Єалў Ґ¬ д ©«л}
close (froad);
end.
Соседние файлы в папке Курсовая Pascal Компьютерная фирма