Скачиваний:
23
Добавлен:
10.12.2013
Размер:
21.4 Кб
Скачать
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.
Соседние файлы в папке Курсовая Pascal Компьютерная фирма