Описание алгоритма работы программы.
Очищается экран выводится меню для указания месторасположения и названия файла базы по умолчанию это “С:\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)
function Edtext(x,y:Integer; Text:String;Len:Integer;var key:boolean):String;
var c:char;
key:=true;
Edtext:='';
repeat
gotoxy(x,y);
write(Text);
write(Probel('',len));
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;
function Cifri(x,y:Integer; Text:String;Len:Integer;var key:boolean):String;
Cifri:='';
if c in ['.','0'..'9','-'] then Text:=Text+c;
if c=#13 then Cifri:=Text else key:=false;
procedure Prishlo(posiz:integer);
var Tx:String;
er:integer;
key:Boolean;
kl:integer;
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;
procedure Ushlo(posiz:integer);
var er:integer;
writeln(' Расход');
writeln(' Дата расхода ДД.ММ.ГГ->');
kol_r:=kol_r+kl; kol:=kol-kl;
Date_r:=Cifri(25,3,'',8,key); if NOT key then exit;
procedure Vvodnov;
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);
procedure Edzapic(posiz:integer);
With List[posiz] do begin
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);
function vstroca(var curs:integer):integer;
var i:integer;
Textbackground(15);
TextColor(0);
gotoxy(1,1); write(Probel('',80));
for i:=0 to 5 do
gotoxy(i*13+1,1); write(mnu[i+1]);
Textbackground(0);
TextColor(14);
gotoxy((curs-1)*13+1,1); write(mnu[curs]);
k:=readkey;
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;
if k=#13 then vstroca:=curs;
until (k=#27) or (k=#13);
if k=#27 then vstroca:=-1;
function VIVSTR(nstr:integer):String;
var Skol,sprice,summ,
Pkol,Rkol:String[10];
VIVSTR:='';
if (nstr<Schet) and (nstr>=0) then
With List[nstr] do
str(kol,skol);
str(price:9:2,sprice);
str(price*kol:9:2,summ);
str(kol_p,pkol);
str(kol_r,rkol);
Страницы: 1, 2, 3