Мегаобучалка Главная | О нас | Обратная связь


Приложение 1 - Графическое описание данных



2019-07-03 235 Обсуждений (0)
Приложение 1 - Графическое описание данных 0.00 из 5.00 0 оценок




 

                                          Разделы

               

 

 

                  

Подразделы у каждого раздела
  

                               
             


                                           Товара у каждого подраздела

 

 

 


Схема 1 – Общая схема описания хранения данных

 

 

Каждый раздел имеет иерархическою структуру представленную на схеме 2

 

 

Раздел
                                     

 

 

 


Схема 2 – структура раздела

 

Приложение 2 - Представление данных в памяти ЭВМ

nomer:integer; - 2 байта;

i:integer; - 2 байта;

ch:char; - 1 байт;

Rozd:string; - 2 байта;

nabor:integer; - 2 байта;

men:array[1..16] of integer; - 2х16 - 32 байта;

strok:integer; - 2 байта;

lom:integer; - 2 байта;

vof:boolean; - 1 байт;

Razdel:integer; - 2 байта;

PodRazd:integer; - 2 байта;

MRazdel:integer; - 2 байта;

ScetRP:integer; - 2 байта;

hod:integer; - 2 байта;

kolvo:integer; - 2 байта;

Text1:string[19]; - 2 байта;

Text2:string[19]; - 2 байта;

Text3:string[19]; - 2 байта;

Text4:string[19]; - 2 байта;

f1:integer; - 2 байта;

f2:integer; - 2 байта;

f3:integer; - 2 байта;

f4:integer; - 2 байта;

f8:integer; - 2 байта;

pd:integer; - 2 байта;

pu:integer; - 2 байта;

f10:integer; - 2 байта;

Prin:boolean; - 1 байт;

Fsim:string; - 2 байта;

FKod:integer; - 2 байта;

FRazdel:integer; - 2 байта;

FPodRazdel:integer; - 2 байта;

FName:String; - 2 байта;

FSeria:string; - 2 байта;

FProizvod:string; - 2 байта;

FOpisan:string; - 2 байта;

FMany:string; - 2 байта;

MainName:string; - 2 байта;

PodRaz:array[1..16] of string; - 2 х 16 – 32 байта;

z:integer; - 2 байта;

d:string; - 2 байта;

opis1:string; - 2 байта;

opis2:string; - 2 байта;

opis3:string; - 2 байта;

Good,Nal:boolean; - 1 байт;

zed:integer; - 2 байта;

fname1:string; - 2 байта;

fname2:string; - 2 байта;

fname3:string; - 2 байта;

kod:integer; - 2 байта;

hod:integer; - 2 байта;

punkt:integer; - 2 байта;

NSP:string; - 2 байта;

fol:integer; - 2 байта;

k:string; - 2 байта;

n:integer; - 2 байта;

 

В итоге 168 байт.

 

Приложение 3 - Рисунок списковой структуры

Рисунок – 1 -  схема списковой структуры - стек

 

Приложение 4 – Формат выходного документа.

 

Рисунок 1 – Разметка экрана

 

 

Рисунок 2 – Просмотр товаров

 

 

Рисунок 3 – Помощь

 

Рисунок 4 – Добавление товара

 

Рисунок 5 – Критерии поиска

 

 

Рисунок 6 – Отчет

 

 

Рисунок 7 – Выходной документ в файл

Приложение 5 – Схема последовательности обработки данных.

 

 

 


Схема 1 – Общая схема

 

 

 

 


Схема 2 – Разметка экрана

 

 

 

 


Схема 3 – вывод разделов и подразделов

 


                                                                                       Вверх

 

                                                  Вниз

 

 


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

 

 

 

 


                                   Enter                                      F1

     
 

 


F3

 

 

 


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

 

 

 


нет

 


                                        Да                    

 

 


Вход

 

                                   Вниз                     

 


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

 


                                                1                            3

     
 


                                                                                           

                                                                          2


                                                          

 

 


                                                                                       нет

 


                                                       Да

 


                                                                                           

 


                                                  Да

                                                   


                                                                                нет

 


                                              Схема 7 - Поиск

 

 


                                                                                 Да

 


                                                Нет

 


Схема 8 - Помощь

 

 

 


 Поиск следующего товара, схема 1000
                                                                                      

 

                                                                                  Операции

                                                                                         с товарами

 


                                  

                              Передвижение

 

 

     
 

 


                                 

     
 


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

     GoToXY(33,3);Textcolor(11);writeln(Baza.FKod);

     GoToXY(43,3);Textcolor(10);writeln('Раздел ');

     GoToXY(50,3);Textcolor(11);writeln(Baza.FRazdel);

     GoToXY(60,3);Textcolor(10);writeln('Подраздел ');

     GoToXY(70,3);Textcolor(11);writeln(Baza.FPodRazdel);

     GoToXY(22,5);Textcolor(10);writeln('Название: ');

     opis1:=copy(Baza.FName,1,58);

     opis2:=copy(Baza.FName,59,117);

     opis3:=copy(Baza.FName,118,126);

     GoToXY(22,6);Textcolor(11);writeln(Opis1);

     GoToXY(22,7);Textcolor(11);writeln(Opis2);

     GoToXY(22,8);Textcolor(11);writeln(Opis3);

     GoToXY(22,10);Textcolor(10);writeln('Серия:');

     GoToXY(30,10);Textcolor(11);writeln(Baza.FSeria);

     GoToXY(22,12);Textcolor(10);writeln('Производитель:');

     GoToXY(22,13);Textcolor(11);writeln(Baza.FProizvod);

     opis1:=copy(Baza.FOpisan,1,58);

     opis2:=copy(Baza.FOpisan,59,117);

     opis3:=copy(Baza.FOpisan,118,126);

     GoToXY(22,15);Textcolor(10);writeln('Описание:');

     GoToXY(22,16);Textcolor(11);writeln(Opis1);

     GoToXY(22,17);Textcolor(11);writeln(Opis2);

     GoToXY(22,18);Textcolor(11);writeln(Opis3);

     GoToXY(22,20);Textcolor(10);writeln('Стоимость');

     GoToXY(35,20);Textcolor(11);writeln(Baza.FMany);

end;

 

procedure writeSpisok; {Процедура вывода позиций товара чей код

                  последним записан в список}

var f:text;

begin

if ScetRP<>0 then

begin

tek:=nach;{Считать первый элемент списка и найти в файле товар с

                таким кодом}

assign(f,'e:\prog\bd.dat');

reset(f);

while not Eof(f) do {Считываем из файла бд}

begin

readln(f,Baza.FKod);

readln(f,Baza.FRazdel);

readln(f,Baza.FPodRazdel);

readln(f,Baza.FName);

readln(f,Baza.FSeria);

readln(f,Baza.FProizvod);

readln(f,Baza.FOpisan);

readln(f,Baza.FMany);

readln(f,Baza.FSim);

if Baza.FKod=tek^.nomer Then {Если код товара из списка = коду товара

                        из файла значит вывести на экран позиции товара}

begin

   clrscr;

     shapka; podRazdel;

     GoToXY(1,1); {write ('MRazdel=',MRazdel,' Podrazd=',lom);}

     GoToXY(60,1); Write('Всего позиций: ',ScetRP);

     Tablo;

end;

end;

close(f);

end

else

 begin

GoToXY(22,11);Textcolor(10);writeln('Товаров нет, для выхода из данной категории нажмите ESC');

f1:=7;f2:=11;f3:=7;f4:=7;f8:=7;pu:=7;pd:=7;f10:=7; {Цвета нижних кнопок}

  Text1:='Двигайтесь кнопками';

  Text2:='PageDown,PageUp ';  {Подсказки}

  Text3:='Для выхода нажмите ';

  Text4:='ESC           ';

shapka;podrazdel;

 

{writeln('Enter');

readln;}

 end;

end;

 

procedure DelSpisok; {Удаляет последний элемент списка}

begin

tek:=nach; {Переходим в начало}

nach:=tek^.next; {Связываем}

dispose(tek); {Удаляем}

tek:=nach;

kolvo:=kolvo-1; {Уменьшаем количество элементов в списке на 1}

end;

 

procedure RP; {Считывает из файла первый товар соответствующий разделу

         и подразделу}

{var lon:boolean;

{ f:text;}

begin

{lon:=false;{}

assign (f,'e:\prog\bd.dat');

reset(f);

while (not Eof(f)) do

begin

readln(f,Baza.FKod);

readln(f,Baza.FRazdel);

readln(f,Baza.FPodRazdel);

readln(f,Baza.FName);

readln(f,Baza.FSeria);

readln(f,Baza.FProizvod);

readln(f,Baza.FOpisan);

readln(f,Baza.FMany);

readln(f,Baza.FSim);

{Если раздел из файла = выбранному разделу и подраздел

из файла=выбранному подразделу}

If (Baza.FRazdel=MRazdel) and (Baza.FPodRazdel=Podrazd) then

begin

    addspisok; {Добавляем в список}

    break;

end;

end;

end;

 

procedure PoiskFPR; {Поиск элемента соответствующей разделу и

               подразделу в списке и в файле}

var {f:text;}

Good,Nal:boolean;

zed:integer;

begin

assign (f,'e:\prog\bd.dat');

reset(f);

nal:=false;

while (not Eof(f)) or (nal=false) do {Считывает данные из файла бд}

begin

readln(f,Baza.FKod);

readln(f,Baza.FRazdel);

readln(f,Baza.FPodRazdel);

readln(f,Baza.FName);

readln(f,Baza.FSeria);

readln(f,Baza.FProizvod);

readln(f,Baza.FOpisan);

readln(f,Baza.FMany);

readln(f,Baza.FSim);

If ((Baza.FRazdel=MRazdel) and (Baza.FPodRazdel=Podrazd)) then

begin    {Если очередной товар в бд соответствует разделу и

              подразделу тогда проверяется есть ли очередной код товара

              в списке, если есть то ищет в бд следующий товар, если

              нет то добавляет в список}

     zed:=0;

     Good:=false;

     d:=nil;

     tek:=nach;

     while (tek<>NIL) or (Good=false) do

     begin

          if tek^.nomer = Baza.FKod then Good:=true;

          d:=tek;

          tek:=tek^.next;

          zed:=zed+1;

          if zed=kolvo then break;

     end;

     if Good<>true then

     begin

          nal:=true;

          break;

     end;

end;

end;

close(f);

end;

 

procedure schet; {Процедура выводит количество позиций в выбранном разделе

            и подразделе}

{var f:text;{}

begin

ScetRP:=0;

assign(f,'e:\prog\bd.dat');

reset(f);

while not Eof(f) do

begin

     readln(f,Baza.FKod);

     readln(f,Baza.FRazdel);

     readln(f,Baza.FPodRazdel);

     readln(f,Baza.FName);

     readln(f,Baza.FSeria);

     readln(f,Baza.FProizvod);

     readln(f,Baza.FOpisan);

     readln(f,Baza.FMany);

     readln(f,Baza.FSim);

     if (Baza.FRazdel=MRazdel) and (Baza.FPodRazdel=Podrazd) then

     ScetRP:=ScetRP+1;

end;

close(f);

end;

 

Procedure Del; {Процедура удаление товара}

var FDel:text;{Временный файл для не удаленных товаров}

begin

GoToXY(27,21);Textcolor(21);

writeln('Вы действительно хотите удалить файл Y/N');

ch:=readkey;

if (ord(ch)=121) or (ord(ch)=173) then

begin

assign(f,'e:\prog\bd.dat');

assign(fDel,'e:\prog\bdvr.dat');

reset(f);

rewrite(fdel);

 

while not Eof(f) do {Считывается очередной товар из бд}

    begin

    readln(f,Baza.FKod);

    readln(f,Baza.FRazdel);

    readln(f,Baza.FPodRazdel);

    readln(f,Baza.FName);

    readln(f,Baza.FSeria);

    readln(f,Baza.FProizvod);

    readln(f,Baza.FOpisan);

    readln(f,Baza.FMany);

    readln(f,Baza.FSim);

        If Baza.FKod<>tek^.nomer then {Если текущая позиция в списке не

       равно текущему коду товара то все позиции товара переносятся

       во временный файл bddvr}

       begin

            writeln(fdel,Baza.FKod);

            writeln(fdel,Baza.FRazdel);

            writeln(fdel,Baza.FPodrazdel);

            writeln(fdel,Baza.FName);

            writeln(fdel,Baza.FSeria);

            writeln(fdel,Baza.FProizvod);

            writeln(fdel,Baza.FOpisan);

            writeln(fdel,Baza.FMany);

            writeln(fdel,Baza.FSim);

       end

    end;

close(f);

close(fDel);

reset(fDel);

rewrite(f);

while not Eof(fDel) do {После переноса во временный файл, но уже без

     удаленного элемента происходит перезапись файла бд из временного}

    begin

            readln(fDel,Baza.FKod);   writeln(f,Baza.FKod);

            readln(fDel,Baza.FRazdel); writeln(f,Baza.FRazdel);

            readln(fDel,Baza.FPodRazdel); writeln(f,Baza.FPodrazdel);

            readln(fDel,Baza.FName);  writeln(f,Baza.FName);

            readln(fDel,Baza.FSeria); writeln(f,Baza.FSeria);

            readln(fDel,Baza.FProizvod); writeln(f,Baza.FProizvod);

            readln(fDel,Baza.FOpisan); writeln(f,Baza.FOpisan);

            readln(fDel,Baza.FMany);  writeln(f,Baza.FMany);

            readln(fDel,Baza.FSim);   writeln(f,Baza.FSim);

    end;

close(fdel);

close(f);

 

 

GoToXY(27,21);Textcolor(21); writeln('Запись удалена для продолжения работы нажмите ESC');

end;

if ord(ch)=110 then begin

GoToXY(27,21);Textcolor(21); writeln('Удаление отменено для продолжения работы нажмите ESC');

end;

end;

 

Procedure PrintF; {Процедура Печать в файл}

var fname1,fname2,fname3:string; {Переменные указывающие путь к файлу}

fotchet:text; {переменная файла отчета}

begin

clrscr;

GoToXY(10,10); Textcolor(11);writeln('Для печати всех позиций текущего подраздела нажмите F3');

GoToXY(10,12);writeln('Для печати текущей позиций нажмите F5');

GoToXY(10,14);writeln('Для выхода нажмите Backspace');

repeat

ch:=readkey;

       if (ord(ch)=61) or (ord(ch)=63) then {Вводится имя будущего

                          файла и создается шапка в файле отчета}

       begin

         fname1:='e:\prog\';

         fname3:='.txt';

         GoToXY(10,16);writeln('Введите имя файла в который необходимо сохранить отчет');

         GoToXY(10,17);writeln('и нажмите ввод. Файл отчета находится в корневой папке');

         GoToXY(10,19);readln(fname2);

         assign(fotchet,fname1+fname2+fname3);

         assign(f,'e:\prog\bd.dat');

         reset(f);

         rewrite(fotchet);

       end;

 

if ord(ch)=61 then {Если нажата F3 то создается отчет состоящий из

                       товаров текущего подраздела}

begin

   writeln(fotchet,'Отчет по подразделу ');

   writeln;

   writeln(fotchet,'---------------------------------------------------------');

   while not Eof(f) do

   begin

    readln(f,Baza.FKod);

    readln(f,Baza.FRazdel);

    readln(f,Baza.FPodRazdel);

    readln(f,Baza.FName);

    readln(f,Baza.FSeria);

    readln(f,Baza.FProizvod);

    readln(f,Baza.FOpisan);

    readln(f,Baza.FMany);

    readln(f,Baza.FSim);

    if (Baza.FRazdel=MRazdel) and (Baza.FPodRazdel=Podrazd) then

    begin

         write (fotchet,'Код товара '); writeln(fotchet,Baza.FKod);

         write (fotchet,'Название ');writeln(fotchet,Baza.FName);

         write (fotchet,'Серия    ');writeln(fotchet,Baza.FSeria);

         write (fotchet,'Производитель ');writeln(fotchet,Baza.FProizvod);

         write (fotchet,'Описание ');writeln(fotchet,Baza.FOpisan);

         write (fotchet,'Цена     ');writeln(fotchet,Baza.FMany);

         writeln(fotchet,'-----------------------------------------');

    end;

   end;

close(fotchet);

close(f);

end;

if ord(ch)=63 then {Если нажата F5 то в файл отчета добавляется только

                 текущая позиция}

begin

   tek:=nach;

   writeln(fotchet,'Отчет по текущему товару');

   writeln;

   writeln(fotchet,'---------------------------------------------------------');

   while not Eof(f) do

   begin

    readln(f,Baza.FKod);

    readln(f,Baza.FRazdel);

    readln(f,Baza.FPodRazdel);

    readln(f,Baza.FName);

    readln(f,Baza.FSeria);

    readln(f,Baza.FProizvod);

    readln(f,Baza.FOpisan);

    readln(f,Baza.FMany);

    readln(f,Baza.FSim);

    if (Baza.FKod=tek^.nomer) then

    begin

         write (fotchet,'Код товара '); writeln(fotchet,Baza.FKod);

         write (fotchet,'Название ');writeln(fotchet,Baza.FName);

         write (fotchet,'Серия    ');writeln(fotchet,Baza.FSeria);

         write (fotchet,'Производитель ');writeln(fotchet,Baza.FProizvod);

         write (fotchet,'Описание ');writeln(fotchet,Baza.FOpisan);

         write (fotchet,'Цена     ');writeln(fotchet,Baza.FMany);

         writeln(fotchet,'-----------------------------------------');

    end;

   end;

close(fotchet);

close(f);

end;

 

until (ord(ch)=8) or (ord(ch)=61) or (ord(ch)=63);

{Закрыте файлов и вывод на прежнее место}

   clrscr;

   shapka;

   writespisok;

end;

 

procedure NewTovar; {Процедура добавления нового товара}

var f1,f2,f3:text; {Файловые переменные}

kod:integer; {Переменная которой присваивается новый код товара}

begin

clrscr;

Baza.FRazdel:=MRazdel; Baza.FPodRazdel:=PodRazd;

{Форма заполнения данных о новом товаре}

GoToXY(10,1); Textcolor(10); Writeln('Заполните форму. После заполнение очередного пункта нажмите ввод');

GoToXY(3,4); writeln('Раздел ',Baza.FRazdel);

GoToXY(3,5); writeln('Подраздел ',Baza.FPodRazdel);

GoToXY(3,6); Writeln('Опешите назначение товара');

GoToXY(3,8); Writeln('Введите серию товара, если нет то введите символ "-" ');

GoToXY(3,10); Writeln('Введите производителя');

GoToXY(3,12); Writeln('Опешите товар подробнее');

GoToXY(3,22); Writeln('Цена товара');

GoToXY(3,5); Textcolor(11);

GoToXY(3,7);readln(Baza.FName);

GoToXY(3,9);readln(Baza.FSeria);

GoToXY(3,11);readln(Baza.FProizvod);

GoToXY(3,13);readln(Baza.FOpisan);

GoToXY(20,22);readln(Baza.FMany);

GoToXY(10,23);Textcolor(10); Writeln('Сохранить Y, Отмена N');

ch:=readkey;

if (ord(ch)= 121) or (ord(ch)= 173) then {Если нажата Y на английском

и Н на русском, то считывается из файла, который хранит коды товаров,

запоминает последний, увеличивает на единицу и добавляет новый код

в файл кодов}

begin

       clrscr;

       assign(f2,'e:\prog\kod.dat');

       reset(f2);

       while not Eof(f2) do readln(f2,Kod);

       close(f2);

       Baza.FKod:=Kod+1;

       append(f2);

       write(f2,'');

       writeln(f2,Baza.FKod);

       close(f2);

       assign(f3,'e:\prog\bd.dat');

       {Записывает в БД информацию о новом товаре}

       append(f3);

       writeln(f3,Baza.FKod);

       writeln(f3,Baza.FRazdel);

       writeln(f3,Baza.FPodRazdel);

       writeln(f3,Baza.FName);

       writeln(f3,Baza.FSeria);

       writeln(f3,Baza.FProizvod);

       writeln(f3,Baza.FOpisan);

       writeln(f3,Baza.FMany);

       writeln(f3,'*');

       close(f3);

       GoToXY(18,12); writeln('Запись сохранена для продолжения нажмите ввод');

       readln;

end;

clrscr;

shapka;

podRazdel;

GoToXY(27,21);Textcolor(21); writeln('Для продолжения работы нажмите ESC');

end;

 

procedure vivod; {Основная процедура вывода}

{Общий принцип: На экране появляется первый элемент выбранного раздела и подраздела

Далее пользователь при помощи кнопок PageUp PageDown перемещается по всем товарам}

var hod:integer; {Счетчик ходв}

begin

schet; {Считать общее количество позиций}

  f1:=7;f2:=11;f3:=7;f4:=11;f8:=11;pu:=11;pd:=11;f10:=7; {Переменные цвета нижних кнопок}

  Text1:='Двигайтесь кнопками';

  Text2:='PageDown,PageUp';  {Подсказки}

  Text3:='Для выхода нажмите';

  Text4:='ESC';

RP; {Выводится первый товар}

hod:=1; {Сделан первый ход}

 

writeSpisok; {Вывести на экран товар соответствующий коду товара из списка}

repeat

ch:=readkey;

if (ord(ch)=81) and (ScetRP<>0) then {Если нажата PageDown}

begin

      if ScetRP<>hod then

      begin

        hod:=hod+1;

        PoiskFPR; {Считывается весь файл и проверяется соответствие каждого товара

                  разделу и подразделу и проверяет входит ли код товара в список

                  если входит то ищет дальше если нет то...}

        addspisok; {Если нет то добавляет в список}

        writeSpisok; {Выводит товар соответствующий коду товара из списка}

      end;

end;

if (ord(ch)=73) and (ScetRP<>0) then {Если нажата PageUp}

begin

     if hod<>1 then

     begin

       hod:=hod-1;

       DelSpisok; {Удаляет последний элемент списка}

       writeSpisok; {Выводит уже другой последний элемент}

     end;

end;

 

if ord(ch)=60 then NewTovar; {Если нажата F2 то в данный раздел и подраздел ввести новый товар}

if (ord(ch)=66) and (ScetRP<>0) then Del;{Если нажата клавиша F8, то процедура удаление товара}

if (ord(ch)=62) and (ScetRP<>0) then PrintF;{Если нажата клавиша F4, то процедура создания отчета}

until ord(ch)=27;

end;

 

procedure Vhod; {Процедура обработки события по нажатию клавише ввод}

begin

 

Lom:=1;

if ord(ch)=13 then {Если нажат ввод}

begin

   for i:=1 to nabor do

   begin

      if (men[i]=15) then {Если текущий цвет белый то... }

      begin

           if razdel=1 then {Если открыт подраздел...}

           begin

                podrazd:=Lom; {Присвоить подразделу его порядковый номер}

                vivod;   {Вывод на экран}

                kolvo:=0;

           end;

           if (Lom=1) and (razdel=0) then

           begin

                rozd:='1'; {Номер раздела}

                MRazdel:=1;{Номер подраздела}

                razdel:=1; {Показывает что открыт подраздел, а не раздел}

           end;{Далее аналогично}

           if (Lom=2) and (razdel=0) then begin rozd:='2'; MRazdel:=2; razdel:=1; end;

           if (Lom=3) and (razdel=0) then begin rozd:='3'; MRazdel:=3; razdel:=1; end;

           if (Lom=4) and (razdel=0) then begin rozd:='4'; MRazdel:=4; razdel:=1; end;

           if (Lom=5) and (razdel=0) then begin rozd:='5'; MRazdel:=5; razdel:=1; end;

           if (Lom=6) and (razdel=0) then begin rozd:='6'; MRazdel:=6; razdel:=1; end;

           if (Lom=7) and (razdel=0) then begin rozd:='7'; MRazdel:=7; razdel:=1; end;

           if (Lom=8) and (razdel=0) then begin rozd:='8'; MRazdel:=8; razdel:=1; end;

           if (Lom=9) and (razdel=0) then begin rozd:='9'; MRazdel:=9; razdel:=1; end;

      end;

      Lom:=Lom+1;

   end;

end;

if ord(ch)=8 then {Если нажата <- то вернутся назад}

begin

   rozd:='0'; {Открывает раздел}

   razdel:=0; {Показывает что открыт раздел}

end;

podRazdel; {Процедура создание подразделов}

end;

 

procedure Poisk;

var punkt:integer; {Переменная ввода выбранного критерия поиска}

NSP:string; {Переменная условия поиска}

fol:integer; {Переменная счетчик}

begin

clrscr;

fol:=0; {Счетчик указывающий количество найденных позиций}

 

GoToXY(10,2); Textcolor(10); Writeln('Выберете критерии поиска');

{GoToXY(10,3); Writeln('и нажмите ввод');}

Textcolor(11); GoToXY(12,6); Writeln('1: Название');

GoToXY(12,8); Writeln('2: Серия');

GoToXY(12,10); Writeln('3: Производитель');

GoToXY(12,12); Writeln('4: Отмена');

repeat

ch:=readkey;

if (ord(ch)=49) or (ord(ch)=50) or (ord(ch)=51) then

begin

 {GoToXY(12,14); readln(punkt);}

 GoToXY(12,14);writeln('Введите условие и нажмите ввод');

 GoToXY(12,16);readln(nsp);

 

 assign(f,'e:\prog\bd.dat');

 reset(f);

 

while (not Eof(f)) do {Считывает очередной товар}

    begin

       readln(f,Baza.FKod);

       readln(f,Baza.FRazdel);

       readln(f,Baza.FPodRazdel);

       readln(f,Baza.FName);

       readln(f,Baza.FSeria);

       readln(f,Baza.FProizvod);

       readln(f,Baza.FOpisan);

       readln(f,Baza.FMany);

       readln(f,Baza.FSim);

       If (Baza.FName=NSP) or (Baza.FSeria=Nsp) or (Baza.FProizvod=Nsp) then

       begin

          clrscr;

          Tablo;

          f1:=7;f2:=7;f3:=7;f4:=7;f8:=7;pu:=7;pd:=11; f10:=7; {Цвета нижних кнопок}

          Text1:='Двигайтесь кнопкой';

          Text2:='PageDown';   {Подсказка}

          Text3:='Для выхода нажмите';

          Text4:='ESC';

          Shapka;

          fol:=fol+1;

          repeat

          ch:=readkey;

          until (ord(ch)=81) or (ord(ch)=27);

          f1:=11;f2:=7;f3:=11;f4:=7;f8:=7;pu:=7;pd:=11;f10:=11; {Цвета нижних кнопок}

          if ord(ch)=27 then break;

       end;

    end;

 

 close(f);

 clrscr;

 GoToXY(15,12);Textcolor(4);

    if fol>0 then writeln('Больше совпадений нет, для продолжения работы нажмите ввод')

    else writeln('Cовпадений нет, для продолжения работы нажмите ввод');

 readln;

 break;

end;

until ord(ch)=52;

 clrscr;

 Text1:='Двигайтесь курсором';

 Text2:='до нужного раздела';   {Подсказка}

 Text3:='и нажмите ВВОД';

 Text4:='Для возврата <-';

 Shapka;

 podRazdel;

 

end;

 

procedure help;

var k:string;

n:integer;

begin

clrscr;

n:=0;

assign(f,'e:\prog\help.dat');

reset(f);

while not Eof(f) do {Считывает очередной товар}

begin



2019-07-03 235 Обсуждений (0)
Приложение 1 - Графическое описание данных 0.00 из 5.00 0 оценок









Обсуждение в статье: Приложение 1 - Графическое описание данных

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы...
Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (235)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.011 сек.)