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

Информация - Компьютеры, программирование

Другие материалы по предмету Компьютеры, программирование

ется счетчик числа строк базы на 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);