|
ÂÂåäåíèå.
Äàííàÿ ïðîãðàììà àâòîìàòèçèðîâàííîãî ðàáî÷åãî ìåñòà ðàçðàáîòàíà äëÿ ðàáîòíèêîâ ñêëàäñêèõ ïîìåùåíèé, åñòåñòâåííî åñëè ó íèõ èìååòñÿ êîìïüþòåð êëàññîì íå íèæå Pentium. Ñåé÷àñ íà ðûíêå ïðîãðàììíîãî îáåñïå÷åíèÿ ïîÿâëÿþòñÿ âñå áîëüøå è áîëüøå ðàçëè÷íûõ ïðîãðàìì äëÿ ðàáîòû íå òîëüêî ñî ñêëàäîì, íî è ðàçëè÷íûå äðóãèå ïðîãðàììíûå ñðåäñòâà àâòîìàòèçèðîâàííîãî ðàáî÷åãî ìåñòà, íî ñòîèìîñòü èõ ëèöåíçèîííûõ êîïèé äîõîäèò ïîðîé äî íåñêîëüêèõ äåñÿòêîâ òûñÿ÷, à ìîÿ ïðîãðàììà ìîæåò áûòü êîíå÷íî ìàëåíüêî åùå “ñûðîâàòà”, íî â ïðîöåññå ðàáîòû ñ íåþ å¸ ìîæíî “äîâåñòè åå äî óìà” è âñå ýòî ëèøü çà ïÿòåðêó ïî ïðîãðàììèðîâàíèþ öåíà íå âåëèêà çà ïðîèçâåäåíèå ïðîãðàììíîãî èñêóññòâà. Êàêîâû å¸ ïëþñû: íó ýòî åñòåñòâåííî ïðîñòîòà è ïîíÿòíîñòü (äëÿ ðóññêîãî ÷åëîâåêà) èíòåðôåéñà ïðîãðàììû, ÷òî íå òðåáóåò äîïîëíèòåëüíîãî îáó÷åíèÿ èëè ïðîõîæäåíèÿ ñïåöèàëüíûõ êóðñîâ, îñîáåííî äëÿ æåíùèí, ðàáîòàþùèõ íà ñêëàäàõ è íå ïîñâÿùåííûõ â àçû êîìïüþòåðîâ è ïðîãðàììíîãî îáåñïå÷åíèÿ; íå òðåáîâàòåëüíîñòü ê ñèñòåìíûì ðåñóðñàì ìàøèíû; ëåãêîñòü ââîäà è îòñëåæèâàíèÿ; ïðîñòîòà ðåçåðâèðîâàíèÿ áàçû äàííûõ (âñåãî 1 ôàéë), ÷òî íå ìàëîâàæíî äëÿ òàêîé ïðîãðàììû.
Ïðè íàïèñàíèè è ðàçðàáîòêå êóðñîâîãî ïðîåêòà ÿ íàó÷èëñÿ ðàáîòàòü ñ Borland Pascal, Microsoft Windows 95OSR2, Microsoft Word 97 SR-2 êîòîðûå èñïîëüçîâàëèñü äëÿ ðàáîòû íàä êóðñîâûì ïðîåêòîì, íàó÷èëñÿ èñïîëüçîâàòü ñïðàâêó è äðóãèå ôóíêöèè Borland Pascal ïðè ýòîì äàæå ðàçîáðàëñÿ ñ àíãëèéñêèì ÿçûêîì è èñïîëüçîâàíèåì ýëåêòðîííûõ ñëîâàðåé ïåðåâîä÷èêîâ òàêèõ êàê Promt, Stylus, Magic Gooddy 98. Îãðîìíîå ñïàñèáî Âîëêîâó À.È. – çà îòëè÷íîå ïðåïîäàâàíèå ïðåäìåòîâ, Billó Gaits – çà òî ÷òî îí óìååò çàðàáàòûâàòü äåíüãè ñîáñòâåííûì óìîì, Ìåðçëÿêîâó Ä.Ñ. – çà ïîääåðæêó â òðóäíóþ ìèíóòó, Áàðûøåâó À.À. – çà òåõíè÷åñêóþ ïîääåðæêó, Ðóññêèõ À.È. – çà ïðîãðàììíóþ ïîääåðæêó, Êàçàêîâó Â.Ñ. – çà ðàçðåøåíèå ðàáîòàòü íà êîìïüþòåðå, Sting, Queen, è äðóãèì çà õîðîøóþ ìóçûêó âî âðåìÿ ðàáîòû íàä êóðñîâûì.
Çàäàíèå.
Ñîñòàâèòü ïðîãðàììó àâòîìàòè÷åñêîãî ðàáî÷åãî ìåñòà äëÿ ðàáîòû ñî ñêëàäîì.
Ïðîãðàììà äîëæíà ïðåäîñòàâëÿòü ïîëüçîâàòåëþ âîçìîæíîñòü:
Îïèñàíèå ïåðåìåííûõ.
Êðîìå ïåðåìåííûõ â ïðîãðàììå èñïîëüçóþòñÿ ïðîöåäóðû è ôóíêöèè îïèñàíèå êîòîðûõ ïðèâåäåíî íèæå;
Ôóíêöèÿ probel;
Èñïîëüçóåòñÿ äëÿ äîïîëíåíèÿ òåêñòà òðåáóåìûìè êîëè÷åñòâàìè ïðîáåëîâ.
Âõîä: Òåêñò, òðåáóåìàÿ äëèíà.
Âûõîä: Òåêñò òðåáóåìîé äëèíû.
Ôóíêöèÿ Edtext;
Èñïîëüçóåòñÿ äëÿ âûâîäà íà ýêðàí â íóæíóþ ïîçèöèþ òåêñòà è åãî ïîñëåäóþùåãî ðåäàêòèðîâàíèÿ
Ôóíêöèÿ ðàáîòàåò ñëåäóþùèì îáðàçîì:
Çàöèêëèâàåòñÿ äî òåõ ïîð ïîêà íå áóäåò íàæàòèÿ Enter èëè Esc. Â ýòî âðåìÿ âûâîäèò íà ýêðàí òåêñò â íóæíóþ ïîçèöèþ, îáíîâëÿåòñÿ , îæèäàåò íàæàòèÿ êëàâèø èëè delete.
Âõîä: Êîîðäèíàòû, òåêñò, äëèíà òåêñòà, ôëàæîê.
Âûõîä: Âûâîä íà ýêðàí òåêñòà, îòðåäàêòèðîâàííûé òåêñò.
Ôóíêöèÿ Cifri;
Ïîäîáíà ôóíêöèè Edtext òîëüêî ââîä òåêñòà îãðàíè÷åí öèôðàìè.
Ðàáîòàåò òàêæå.
Ïðîöåäóðà Prishlo;
Ïðèìåíÿåòñÿ äëÿ âûâîäà íà ýêðàí ìåíþ “Ïðèõîä” è çàíåñåíèÿ äàííûõ â ïîçèöèþ áàçû.
Îïèñàíèå ðàáîòû: Ðàáîòàåò ñî ñòðîêîé ìàññèâà áàçû. Âûâîäèò íà ýêðàí ìåíþ “Ïðèõîä”, ïðåîáðàçóåò òåêñòîâûå ïåðåìåííûå ïîñëå ââîäà â ñòðîêè ìåíþ.
Ïðîöåäóðà Ushlo;
Àíàëîãè÷íà ïðîöåäóðå Prishlo .Çàìåíåíà òîëüêî ôîðìóëà âû÷èñëåíèÿ êîëè÷åñòâà.
Ïðîöåäóðà Vvodnov;
Ïðîöåäóðà îáåñïå÷èâàþùàÿ âûâîä íà ýêðàí ìåíþ “Íîâûé òîâàð”, ââîä íîâîé ñòðîêè â áàçó.
Ðàáîòàåò: Îãðàíè÷èâàåòñÿ ñòðîêîé, äëÿ ðàáîòû ñ ïåðåìåííûìè çàïèñè, âûâîäèò íà ýêðàí ìåíþ, ïîëüçîâàòåëåì ðåäàêòèðóþòñÿ ñòðîêè ìåíþ, ïðåîáðàçóþòñÿ, óâåëè÷èâàåòñÿ ñ÷åò÷èê ÷èñëà ñòðîê áàçû íà 1.
Ïðîöåäóðà Edzapic;
Èñïîëüçóåòñÿ äëÿ ðåäàêòèðîâàíèÿ çàïèñè â òåêóùåé ïîçèöèè êóðñîðà ëèñòèíãà ïåðå÷íÿ òîâàðîâ.
Âõîä: Ïîçèöèÿ
Âûõîä: îòðåäàêòèðîâàííûé òåêñò â äàííîé ïîçèöèè.
Ïðîöåäóðà Ekran;
Îòîáðàæàåò íà ýêðàíå çàãîëîâîê òàáëèöû áàçû è çàïîëíÿåò òàáëèöó, ðàññ÷èòûâàåò è îòîáðàæàåò íà ýêðàíå íèæíþþ ñòðîêó ñîñòîÿíèÿ áàçû îáùóþ ñóììó, îáùèé ïðèõîä, îáùèé ðàñõîä, îáùåå êîëè÷åñòâî òîâàðîâ.
Îïèñàíèå: Ôîðìèðóåò îêíî äëÿ ðàáîòû, îòîáðàæàåò çàãîëîâîê òàáëèöû, öèêë äëÿ âûâîäà ïåðâûõ äâàäöàòè ñòðîê áàçû â îêíî, îáíóëåíèå ñ÷åò÷èêîâ ñóìì, öèêë íà âñå ïîçèöèè áàçû, ðàñ÷åò ñóìì â ýòîì öèêëå âûâîä ðåçóëüòàòà íà ýêðàí â âèäå ñòðîêè ñîñòîÿíèÿ.
Ôóíêöèÿ Vivstr;
Ôîðìèðóåò ñòðîêó ïî ïîçèöèè â áàçå.
Îáíóëÿåòñÿ. Ðàáîòàåò ñî ñòðîêîé â ìàññèâå áàçû. Ïðîèçâîäèò ïðåîáðàçîâàíèå â ñòðèíãîâûå ïåðåìåííûå ÷èñëîâûõ çíà÷åíèé áàçû (êîëè÷åñòâà öåíû, ïðèõîä, ðàñõîä), ñóììà ôîðìèðóåòñÿ ïóòåì âû÷èñëåíèÿ. Äîáàâëåíèå íóæíûìè ïðîáåëàìè ôóíêöèåé Probel.
Ïðîöåäóðà Vivlist;
Îáåñïå÷èâàåò ôîðìèðîâàíèå ýêðàíà ñ ïîìîùüþ ïðîöåäóðû Ekran, âûâîä ïîÿñíÿþùåé ñòðîêè. Ïîäêðàøèâàíèå ñòðîêè â ïîçèöèè êóðñîðà, îïðîñ êëàâèø êóðñîðà è ñëóæåáíûõ (äëÿ ââîäà íîâîé, êîððåêòèðîâêè, óäàëåíèÿ). Ðàáîòàåò ñëåäóþùèì îáðàçîì: Âûïîëíÿåò ïðîöåäóðó Ekran, ïðîðèñîâûâàåò ñòðîêó ïîÿñíåíèÿ, öèêë ïîêà íå íàæàòà êëàâèøà “âëåâî”, “âïðàâî”, “Enter”, “Esc” – îïðàøèâàåò êëàâèàòóðó ñ ïîìîùüþ ôóíêöèè “Readkey” åñëè íàæàòà “Âíèç” èëè “Ââåðõ” óìåíüøàåòÿ èëè óâåëè÷èâàåòñÿ ñîîòâåòñòâåííî òåêóùèé ñ÷åò÷èê ïîçèöèé ìåíþ
Ôóíêöèÿ Vstroca;
Ôóíêöèÿ îðãàíèçóåò ãëàâíîå ìåíþ â âåðõíåé ñòðîêå ýêðàíà.
Óñòàíàâëèâàåò ïàðàìåòðû öâåòà, âûâîäèò íà ýêðàí ìàññèâ ñ ïåðåìåííûìè ìåíþ ò.å. íàçâàíèÿìè ìåíþ. Îïðàøèâàåò êëàâèàòóðó íà íàæàòèå êëàâèøè “Âëåâî”, “Âïðàâî”, “Enter” âûïîëíÿåò ñîîòâåòñòâóþùèå ýòèì êëàâèøàì êîìàíäû. Çàòåì åñëè áûëî íàæàòî “Esc” ôóíêöèÿ ïðèíèìàåò çíà÷åíèå ìåíüøåå 1 è çàòåì â ãîëîâíîé ïðîãðàììå ïðîèñõîäèò âûõîä.
Ïðîöåäóðà Sortirovka;
Ñîðòèðóåò äàííûå ïî çàäàííîé êîëîíêå.
Îðãàíèçóåòñÿ öèêë íà âñå ïîçèöèè ìàññèâà áàçû. Áàçà ïåðåíîñèò äàííûå â ñòîðîííþþ áàçó. Âûáèðàåò ñòîëáåö ñîðòèðîâêè ñðàâíèâàåò ñî ñòîðîííåé áàçîé åñëè áîëüøå òî ïåðåíîñèò â ñòîðîííþþ áàçó çàïîìèíàåò ïîçèöèþ. Â êîíöå öèêëà ïåðåñòàâëÿåò ïîçèöèè îñíîâíîé áàçû.
Îïèñàíèå àëãîðèòìà ðàáîòû ïðîãðàììû.
Î÷èùàåòñÿ ýêðàí âûâîäèòñÿ ìåíþ äëÿ óêàçàíèÿ ìåñòîðàñïîëîæåíèÿ è íàçâàíèÿ ôàéëà áàçû ïî óìîë÷àíèþ ýòî “Ñ:\base.dat” çàòåì ïðîâåðÿåòñÿ ñîçäàí ëè ôàéë åñëè íåò òî ñîçäàåòñÿ. Îðãàíèçóåòñÿ öèêë äî êîíöà ôàéëà ïåðåïèñûâàþòñÿ äàííûå â ìàññèâ áàçû. Îáíóëÿþòñÿ ïåðåìåííûå. îðãàíèçóåòñÿ ìåíþ ïî äàííûì ôóíêöèè Vstroka çàòåì ïðîèñõîäè âûáîð ñ ïîìîùüþ îïåðàòîðà Case ïî êîòîðîìó îñóùåñòâëÿþòñÿ ïåðåõîäû.  ñëó÷àå “1” ïðèõîäà ôóíêöèè Vstroka âûâîäèòñÿ ëèñòèíã äàííûõ áàçû è çàãîëîâêîâ, îðãàíèçàöèÿ äâèæåíèÿ êóðñîðà ïî ñòðîêàì áàçû ïðè ïîìîùè ïðîöåäóðû Vivlist.  ñëó÷àå ðåçóëüòàòà “2” ôîðìèðóåòñÿ îêíî ñ òåíüþ “Ïðèøëî”, çàïîëíÿåòñÿ îêíî ñ ïîìîùüþ ïðîöåäóðû Prishlo ïî òåêóùåé ïîçèöèè êóðñîðà ýêðàíà è ëèñòèíãà. “3” ôîðìèðóåòñÿ îêíî “Ðàñõîä”, çàïîëíÿåòñÿ ñ ïîìîùüþ ïðîöåäóðû Ushlo. “4” îðãàíèçóåòñÿ îêíî “Íàéòè íàèìåíîâàíèå” ââîäèòñÿ òåêñò ñ ïîìîùüþ ôóíêöèè Edtext. ñðàâíèâàåòñÿ ñ íàèìåíîâàíèÿìè áàçû åñëè íàõîäèò óñòàíàâëèâàåò êóðñîð íà ýòî ìåñòî. Åñëè íå íàõîäèò âûâîäèò ñîîáùåíèå è óñòàíàâëèâàåò íà êîíå÷íóþ ïîçèöèþ. “5” Îêíî ñîðòèðîâêè. Âûïîëíÿåòñÿ ïðîöåäóðà Sortirovka. Ïðè äðóãèõ çíà÷åíèÿõ ôóíêöèè Vstroca ïðîèñõîäèò çàïèñü ôàéëà áàçû, çàêðûòèå ôàéëà.
Àëãîðèòì ïðîãðàììû.
IV. Òåêñò ïðîãðàììû.
Program kursovoi;
uses crt;
type basskl = record
naim:string[40];
kol:integer;
price:single;
kol_p:integer;
date_p:string[8];
kol_r:integer;
date_r:string[8];
end;
var f:file of basskl;
List:array[0..255] of basskl;
Schet:Integer;
curs,stran,i,mcurs:integer;
k:char;
Res,da,er,seter:Integer;
Tx,files:String;
key:boolean;
const
mnu:array[1..6] of string[13]=(
' Ââîä ',
' Ïðèõîä ',
' Ðàñõîä ',
' Íàéòè ',
' Ñîðòèðîâêà ',
' Âûõîä ');
function Probel(Text:String;Len:Integer):String;
begin
While length(Text)<Len do Text:=Text+' ';
Probel:=copy(Text,1,len)
end;
function Edtext(x,y:Integer; Text:String;Len:Integer;var key:boolean):String;
var c:char;
begin
key:=true;
Edtext:='';
repeat
gotoxy(x,y);
write(Text);
write(Probel('',len));
gotoxy(x,y);
write(Text);
c:=Readkey;
if c=#8 then delete(Text,length(Text),1);
if c in ['A'..'z',' ','.','0'..'9','À'..'ÿ','-'] then Text:=Text+c;
Text:=copy(Text,1,len);
until (c=#27) or (c=#13);
if c=#13 then Edtext:=Text else key:=false;
end;
function Cifri(x,y:Integer; Text:String;Len:Integer;var key:boolean):String;
var c:char;
begin
key:=true;
Cifri:='';
repeat
gotoxy(x,y);
write(Text);
write(Probel('',len));
gotoxy(x,y);
write(Text);
c:=Readkey;
if c=#8 then delete(Text,length(Text),1);
if c in ['.','0'..'9','-'] then Text:=Text+c;
Text:=copy(Text,1,len);
until (c=#27) or (c=#13);
if c=#13 then Cifri:=Text else key:=false;
end;
procedure Prishlo(posiz:integer);
var Tx:String;
er:integer;
key:Boolean;
kl:integer;
begin
clrscr;
With List[Posiz] do begin
writeln(' Ïðèõîä');
writeln(' Êîëè÷åñòâî ->');
writeln(' Äàòà ïðèõîäà ÄÄ.ÌÌ.ÃÃ->');
val(Cifri(25,2,'',6,key),kl,er); if NOT key then exit;
kol_p:=kol_p+kl; kol:=kol+kl;
Date_p:=Cifri(25,3,'',8,key); if NOT key then exit;
end;
end;
procedure Ushlo(posiz:integer);
var er:integer;
key:Boolean;
kl:integer;
begin
clrscr;
With List[Posiz] do begin
writeln(' Ðàñõîä');
writeln(' Êîëè÷åñòâî ->');
writeln(' Äàòà ðàñõîäà ÄÄ.ÌÌ.ÃÃ->');
val(Cifri(25,2,'',6,key),kl,er); if NOT key then exit;
kol_r:=kol_r+kl; kol:=kol-kl;
Date_r:=Cifri(25,3,'',8,key); if NOT key then exit;
end;
end;
procedure Vvodnov;
var Tx:String;
er:integer;
key:Boolean;
begin
clrscr;
With List[Schet] do begin
writeln(' Íîâûé òîâàð');
writeln(' Íàèìåíîâàíèå òîâàðà :');
writeln(' Êîëè÷åñòâî :');
writeln(' Öåíà :');
writeln(' Äàòà ïðèõîäà ÄÄ.ÌÌ.ÃÃ:'); {readln(date_p);}
Naim:=Edtext(25,2,'',20,key); if NOT key then exit;
val(Cifri(25,3,'',6,key),kol,er); if NOT key then exit;
kol_p:=kol;
val(Cifri(25,4,'',10,key),price,er); if NOT key then exit;
Date_p:=Cifri(25,5,'',8,key); if NOT key then exit;
inc(Schet);
end;
end;
procedure Edzapic(posiz:integer);
var Tx:String;
er:integer;
key:Boolean;
begin
clrscr;
With List[posiz] do begin
writeln(' Ðåäàêòèðîâàíèå òîâàðà');
writeln(' Íàèìåíîâàíèå òîâàðà :');
writeln(' Öåíà :');
Tx:=Edtext(25,2,Naim,20,key); if key then Naim:=tx;
str(price:0:2,tx);
tx:=Cifri(25,3,tx,10,key); if key then val(tx,price,er);
end;
end;
function vstroca(var curs:integer):integer;
var i:integer;
begin
Textbackground(15);
TextColor(0);
gotoxy(1,1); write(Probel('',80));
for i:=0 to 5 do
begin
gotoxy(i*13+1,1); write(mnu[i+1]);
end;
Textbackground(0);
TextColor(14);
gotoxy((curs-1)*13+1,1); write(mnu[curs]);
repeat
k:=readkey;
Textbackground(15);
TextColor(0);
gotoxy((curs-1)*13+1,1); write(mnu[curs]);
if k=#0 then k:=readkey;
case k of
#75: if curs>1 then dec(curs) else curs:=6;
#77: if curs<6 then inc(curs) else curs:=1;
end;
Textbackground(0);
TextColor(14);
gotoxy((curs-1)*13+1,1); write(mnu[curs]);
if k=#13 then vstroca:=curs;
until (k=#27) or (k=#13);
if k=#27 then vstroca:=-1;
end;
function VIVSTR(nstr:integer):String;
var Skol,sprice,summ,
Pkol,Rkol:String[10];
begin
VIVSTR:='';
if (nstr<Schet) and (nstr>=0) then
With List[nstr] do
begin
str(kol,skol);
str(price:9:2,sprice);
str(price*kol:9:2,summ);
str(kol_p,pkol);
str(kol_r,rkol);
VIVSTR:=Probel(naim,20)+Probel(skol,6)+Probel(sprice,11)+Probel(summ,11)+
Probel(Pkol,6)+Probel(Date_p,10)+Probel(Rkol,6)+Probel(Date_r,9);
end;
end;
procedure Ekran;
var i:integer;
Summ_,Sum_p,Sum_r:Double;
begin
Window(1,2,80,25);
Textbackground(5);
TextColor(10);
Clrscr;
gotoxy(1,1);
Textbackground(3);
write(Probel('Íàèìåíîâàíèå',20)+Probel('Êîë-âî',9)+Probel('Öåíà',10)+
Probel('Ñóììà',7)+Probel('Ïðèõîä ',7)+Probel('Äàòà ïîñò',10)+Probel('Ðàñõîä',6)
+Probel(' Äàòà âûä',9));
Textbackground(5);
TextColor(14);
for i:=0 to 20 do
begin
gotoxy(1,2+i); Write(Vivstr(i+stran));
end;
Textbackground(15);
TextColor(0);
gotoxy(1,1+curs); write(VIVSTR(curs+stran-1));
Summ_:=0; Sum_p:=0; Sum_r:=0;
for i:=0 to Schet-1 do
begin
Summ_:=Summ_+(List[i].price*List[i].kol);
Sum_p:=Sum_p+(List[i].price*List[i].kol_p);
Sum_r:=Sum_r+(List[i].price*List[i].kol_r);
end;
Textbackground(4);
TextColor(15);
gotoxy(1,23); write(Probel('',80));
gotoxy(1,23); write(' Èòîãî: ',
Summ_:12:2,' ðóá. Ïðèõîä: ',Sum_p:0:2,' ðóá. Ðàñõîä:',Sum_r:0:2,' ðóá.');
gotoxy(15,24); write ('Îáùåå êîëè÷åñòâî íàèìåíîâàíèé òîâàðà: ',schet,' øò');
end;
procedure Sortirovka(num:Integer);
var i,j,k:Integer;
Bas:Basskl;
begin
for i:=0 to Schet-1 do
begin
Bas:=List[i];
for j:=i+1 to Schet-1 do
begin
case Num of
1: if Bas.Naim>List[j].naim then begin Bas:=List[j]; k:=j end;
2: if Bas.kol>List[j].kol then begin Bas:=List[j]; k:=j end;
3: if Bas.price>List[j].price then begin Bas:=List[j]; k:=j end;
5: if Bas.kol_p>List[j].kol_p then begin Bas:=List[j]; k:=j end;
6: if Bas.date_p>List[j].date_p then begin Bas:=List[j]; k:=j end;
7: if Bas.kol_r>List[j].kol_r then begin Bas:=List[j]; k:=j end;
8: if Bas.date_r>List[j].date_r then begin Bas:=List[j]; k:=j end;
end;
end;
List[k]:=List[i]; List[i]:=Bas;
end;
end;
procedure Vivlist(var seek,curs:integer);
var c,k:char;
i:integer;
begin
Ekran;
Textbackground(3);
gotoxy(1,24); write(Probel(' <- -> - ìåíþ | Ins - Äîáàâèòü | Ctrl+F8 - Óäàëèòü | Ctrl+Enter - Èçìåíèòü',79));
Textbackground(15);
TextColor(1);
gotoxy(1,1+curs); write(VIVSTR(curs+stran-1));
repeat
c:=readkey;
Textbackground(5);
TextColor(14);
gotoxy(1,1+curs); write(VIVSTR(curs+stran-1));
if c=#0 then k:=readkey;
case k of
#72: begin {Ââåðõ êóðñîð}
if (curs=1) and (stran>0) then begin dec(stran); Ekran end;
if (curs>1) then dec(curs);
end;
#80: begin {Âíèç êóðñîð}
if (curs=20) and (stran+20<Schet) then
begin inc(stran); Ekran end;
if ((curs<20) and (Schet>=20))
or ((Schet<20) and (curs<Schet)) then inc(curs);
end;
#101: begin{Óäàëèòü} {Ctrl+F8}
if Schet>0 then
for i:=curs+stran-1 to Schet-1 do
begin
List[i]:=List[i+1];
end;
dec(Schet);
dec(curs);
Ekran;
end;
#82: begin {Ins - íîâàÿ çàïèñü}
Window(12,12,72,17);
Textbackground(0);
clrscr;
Window(10,11,70,16);
Textbackground(7);
clrscr;
{íîâîÿ çàïèñü}
Vvodnov;
Sortirovka(1);
Window(1,1,80,25);
Ekran;
end;
end;
if c=#10 then {Ctrl+Enter}
begin
Window(12,12,72,17);
Textbackground(0);
clrscr;
Window(10,11,70,16);
Textbackground(7);
clrscr;
{íîâîÿ çàïèñü}
Edzapic(Curs+stran-1);
Sortirovka(1);
Window(1,1,80,25);
Ekran;
end;
Textbackground(15);
TextColor(1);
gotoxy(1,1+curs); write(VIVSTR(curs+stran-1));
until (k=#27) or (k=#13) or (k=#75)or (k=#77);
Window(1,1,80,25);
end;
begin
clrscr;
Window(16,12,66,15);
Textbackground(9);
textcolor (3);
clrscr;
write (' Ââåäèòå íàçâàíèå è ïîëíûé ïóòü áàçû');
gotoxy (3,3);
readln (files);
if files='' then files:='c:\base.dat';
assign(f,files);
{$I-}
reset(f);
{$I+}
if IOResult<>0 then rewrite(f);
Schet:=0;
While not eof(f) do
begin
inc(Schet);
read(f,List[Schet-1]);
end;
Textbackground(0);
clrscr;
curs:=1; stran:=0; mcurs:=1; seter:=15;
repeat
Ekran;
Window(1,1,80,25);
res:=vstroca(mcurs);
case res of
1:begin
Vivlist(stran,curs);
Window(1,1,80,25);
end;
2:begin
Window(16,12,66,15);
Textbackground(0);
clrscr;
Window(14,11,64,14);
Textbackground(7);
clrscr;
{Çàïóñê íîâîé çàïèñè}
Prishlo(Curs+stran-1);
Window(1,1,80,25);
end;
3:begin
Window(16,12,66,15);
Textbackground(0);
clrscr;
Window(14,11,64,14);
Textbackground(7);
clrscr;
{Çàïóñê íîâîé çàïèñè}
Ushlo(Curs+stran-1);
Window(1,1,80,25);
end;
4:begin {Ïîèñê}
Window(16,12,66,14);
Textbackground(7);
clrscr;
Window(14,11,64,13);
Textbackground(8);
clrscr;
Gotoxy(2,2); Write('Íàéòè íàèìåíîâàíèå:');
Tx:=Edtext(25,2,'',20,key);
for i:=0 to Schet-1 do
if List[i].naim=tx then begin seter:=1; break; end;
if i>20 then begin curs:=1; stran:=i end
else begin curs:=i+1; stran:=0; end;
if seter<>1 then
begin
Window(16,12,66,14);
Textbackground(7);
clrscr;
Window(14,11,64,13);
Textbackground(8);
clrscr;
Gotoxy(2,2); Write('Íàèìåíîâàíèå íåíàéäåíî'); readln; stran:=1; curs:=1;
end;
Vivlist(stran,curs);
Window(1,1,80,25);
end;
5:begin {Ñîðòèðîâêà}
Window(16,12,66,14);
Textbackground(0);
clrscr;
Window(14,11,64,13);
Textbackground(7);
clrscr;
Gotoxy(2,2); Write('Ââåäèòå ïîëå äëÿ ñîðòèðîâêè (1..8):');
val(Cifri(38,2,'',1,key),da,er);
if da in [1..8] then Sortirovka(da);
Window(1,1,80,25);
end;
end;
until (res<1) or (res=6);
Rewrite(f);
Sortirovka(1);
for i:=0 to Schet-1 do Write(f,List[i]);
close(f);
end.