Автоматическое рабочее место для работы со складом

Устанавливает параметры цвета, выводит на экран массив с переменными меню т.е. названиями меню. Опрашивает клавиатуру на нажатие клавиши “Влево”, “Вправо”, “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);

Страница:  1  2  3 


Другие рефераты на тему «Программирование, компьютеры и кибернетика»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы