Смекни!
smekni.com

Создание справочника Парфюмерный магазин при помощи программы Turbo Pascal (стр. 5 из 7)


Схема 4 – Перемещение по меню


Enter F1


F3


Схема 5 – Выбор режима работы


нет


Да


Вход

Вниз


Схема 6 - События по нажатию Enter


1 3


2



нет


Да



Да


нет


Схема 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од товара ');