Схема 4 – Перемещение по меню
Enter F1
Схема 5 – Выбор режима работы
нет
Да
Вход
ВнизСхема 6 - События по нажатию Enter
1 3
нет
Да
нет
Схема 7 - Поиск
Да
Схема 8 - Помощь
PageDown PageUp
ESC
Схема 9 – Вывод товара на экран
Схема 10 – Вывод общего количества товаров
Схема 11 – Найти первый товар
Схема 12 – Добавить код товара в список
Да
нетСхема 13 – Поиск следующего товара
Нет
Да
Схема 14 – Добавление нового товара
Нет
Да
Схема 15 – Удаление товара
По товару По подразделу
Схема 16 – Отчет по товарам
Приложение 6 Листинг программы
program parfum;
uses crt;
type {Список в котором содержатся код товаров}
integ=^int;
int=record
nomer:integer; {Код товара}
next:integ; {Ссылка на следующий элемент}
end;
var Nach:integ; {Начало списка}
tek:integ; {Текущий элемент списка}
d:integ; {Переменная для работы со списком}
i:integer; {Счетчик}
ch:char; {Ввод с клавиатуры}
Rozd:string; {Выбранный раздел}
nabor:integer; {Счетчик числа элементов меню}
men:array[1..16] of integer;{Массив вывода элементы Главного меню}
strok, stolb:integer;{Пункты меню}
lom:integer; {Переменная для работы с Главным меню}
vof:boolean; {Переменная указывает что массив цветов уже заполнен}
Razdel:integer;{Переменная которая указывает открытую главу}
PodRazd:integer; {Переменная которая указывает открыт подраздел}
MRazdel:integer; {Переменная которая указывает открыт раздел}
stek:text;{Файл в который добавляется код товара}
{KodStek:integer;}
ScetRP:integer; {Счетчик позиций в указанном разделе и подразделе}
hod:integer; {Ходы вверх вниз в списке}
kolvo:integer; {Количество элементов в списке}
Text1,Text2,Text3,Text4:string[19]; {Комментарии}
f:text; {Файловая переменная}
f1,f2,f3,f4,f8,pd,pu,f10:integer; {Цвета пунктов внизу экрана}
Prin:boolean;{логическая переменная для печать текущей позиции}
Baza:record {Переменные для работы с файлами}
Fsim:string; {Символ-разделитель}
FKod:integer; {Код товара}
FRazdel:integer; {Раздел}
FPodRazdel:integer; {Подраздел}
FName:String; {Название}
FSeria:string; {Серия}
FProizvod:string; {Производитель}
FOpisan:string; {Описание товара}
FMany:string; {Цена}
end;
procedure shapka; {Выводит разметку на экран, а именно горизонтальные и
вертикальные линии и кнопки управления внизу экрана,
а так же заголовок раздела и подраздела}
var MainName:string; {Название подраздела}
begin
GoToXY(30,1); Textcolor(14);
GoToXY(1,2); Textcolor(11); For i:=1 to 80 do write('-');
for i:=3 to 21 do
begin
GoToXY(20,i); Textcolor(11); writeln('|');
end;
GoToXY(1,22); For i:=1 to 80 do write('-');
GoToXY(1,23); Textcolor(F1); writeln('Помощь F1|');
GoToXY(11,23); Textcolor(F2); writeln('Новый F2|');
GoToXY(20,23); Textcolor(f3); writeln('Поиск F3|');
GoToXY(29,23); Textcolor(f4); writeln('Отчет F4|');
GoToXY(38,23); Textcolor(f8); writeln('Удалить F8|');
GoToXY(49,23); Textcolor(pu); writeln('Назад PUp|');
GoToXY(59,23); Textcolor(pd); writeln('Далее PDown|');
GoToXY(71,23); Textcolor(f10); writeln('Выход F10');
GoToXY(1,24); For i:=1 to 80 do write('-');
GoToXY(1,17); Textcolor(11); writeln('-------------------');
if rozd='0'Then MainName:='ПАРФЮМЕРНЫЙ МАГАЗИН';
if rozd='1'Then MainName:='УХОД ЗА ЛИЦОМ';
if rozd='2'Then MainName:='УХОД ЗА КОЖЕЙ';
if rozd='3'Then MainName:='ДЕТСКИЕ ТОВАРЫ';
if rozd='4'Then MainName:='МАНИКЮР';
if rozd='5'Then MainName:='ПАРФЮМЕРИЯ';
if rozd='6'Then MainName:='УХОД ЗА ТЕЛОМ';
if rozd='7'Then MainName:='ТОВАРЫ ДЛЯ МУЖЧИН';
if rozd='8'Then MainName:='УХОД ЗА ВОЛОСАМИ';
if rozd='9'Then MainName:='ДРУГИЕ ТОВАРЫ';
GoToXY(30,1); Textcolor(13);writeln(MainName);
GoToXY(1,18); Textcolor(12); writeln(Text1);
GoToXY(1,19); Textcolor(12); writeln(Text2);
GoToXY(1,20); Textcolor(12); writeln(Text3);
GoToXY(1,21); Textcolor(12); writeln(Text4);
end;
procedure podRazdel; {Считывает из файла разделы и подразделы в
зависимости от выбранного и выводит на экран}
var PodRaz:array[1..16] of string;{Массив разделов и под разделов}
z:integer; {Строка с которой начинается вывод пунктов меню}
f:text; {Файловая переменная}
d:string; {Переменная которой присваивается очередное считанное значение из файла}
begin
assign (f,'e:\prog\razdel.dat'); {Файл который содержит разделы и подразделы}
reset(f);
nabor:=0;
while not Eof(f) do
{До тех пор пока не конец файла делать
если очередная строка файла соответствует выбранному разделу то
записать ее в массив}
begin
Readln(f,d);
if d=rozd then
begin
nabor:=nabor+1;
Readln(f,d);
PodRaz[nabor]:=d;
end
else Readln(f,d);
end;
close(f);
{Вывод на экран пунктов и подпунктов меню из массива, закрашенных цветами
из массива цветов}
z:=3;
for i:=1 to nabor do
begin
Textcolor(men[i]);
GoToXY(2,z);
writeln(PodRaz[i]);
z:=z+1
end;
end;
procedure ADDSpisok;{Добавляет в динамический список код товара, для
дальнейшего перемещения}
begin
new(tek); {создаем новый элемент}
tek^.nomer:=Baza.FKod;{записываем данное}
tek^.next:=nach;{устанавливаем указатели}
nach:=tek; {для поддержания целостности списка}
kolvo:=kolvo+1; {Увеличиваем количество добавленных элементов}
end;
procedure Tablo;
{Процедура выводит позиции товаров на экран}
var opis1,opis2,opis3:string; {Разбивает строку на три части т.к. не влезает}
begin
GoToXY(22,3);Textcolor(10);writeln('Kод товара ');