Дипломы, курсовые, рефераты, контрольные...
Срочная помощь в учёбе

Создание справочника «Парфюмерный магазин» при помощи программы Turbo Pascal

КурсоваяПомощь в написанииУзнать стоимостьмоей работы

В итоге сортировка предусматривает деление на разделы и подразделы. Каждый товар должен находиться только в одном определенном разделе и соответственно подразделе. Когда пользователю появится необходимость найти нужный ему товар не обязательно прибегать к поиску, т.к. условия поиска не всегда удобно записать, достаточно определится к какому разделу, относится товар, который необходимо найти… Читать ещё >

Создание справочника «Парфюмерный магазин» при помощи программы Turbo Pascal (реферат, курсовая, диплом, контрольная)

1. Введение

2. Содержательная постановка и описание задачи

3. Атрибуты объекта и предоставление данных в программ

4. Описание программы создания набора данных

5. Описание программы формирование выходного документа

6. Описание программы формирование списковой структуры

7. Технология обработки данных

8. Заключение

9.

Список литературы

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

Приложение 2 — Представление данных в памяти ЭВМ Приложение Рисунок списковой структуры Приложение 4 — Формат выходного документа

Приложение 5 — Схема последовательности обработки данных Приложение 6 Листинг программы

1. Введение

Цель выполнения курсового проекта состоит в том, чтобы научится описывать предметную область реального мира — объект и его атрибуты, закрепить навыки использования основных структур данных, способов их описания и основных операций над ними. Освоить разработку удобного пользовательского интерфейса.

Действительно при помощи Turbo Pascal достаточно не просто создать программу, которая бы демонстрировала работу с базами данных (далее БД). Для этого в настоящий момент существует огромное количество специализированных программ. Но все-таки основу и саму сущность формирования БД при помощи Turbo Pascal, реализовать, возможно.

К сожалению темы курсовых работ, были не произвольными, а выбирались по общим правилам. В связи с этим моей темой стал Справочник «Парфюмерный магазин». Я, конечно, слабовато знаю данную область, но с другой стороны в дальнейшей работе, придется создавать такие программы, предметной области которых я могу не знать совсем. Поэтому я постарался изучить данную предметную область и реализовать ее в программном продукте.

2. Содержательная постановка и описание задачи

Парфюмерный магазин — это магазин с конкретно ориентированными товарами, предназначенными, в первую очередь, для личной гигиены и уходом за телом.

Программа должна обладать следующими функциями:

— Удобная справочная система и система подсказок;

— Возможность добавление в БД нового товара;

— Возможность поиска по выбранным критериям;

— Возможность удобной сортировки товаров;

— Возможность создания отчетности;

— Возможность удаления ненужного товара.

При этом в конечном программном продукте должен быть интуитивно понятный и доступный любым пользователем, интерфейс, с использованием подсказок. Удобная сортировка, а также удобное управление в режиме работы непосредственно с товарами.

Сортировки товаров в любой БД необходимо уделять особое внимание. Связано это в первую очередь с необходимостью оперативного доступа к требуемой информации из БД.

3. Атрибуты объекта и предоставление данных в программе

Определим необходимый набор атрибутов. Условно их можно разделить на 3 части:

— Сортировка — деление на разделы и подразделы;

— Интерфейс — создание удобного и функционального интерфейса;

— Функции программы — добавление и удаления товара, поиск и отчетность.

3.1 Сортировка.

Наиболее сложной задачей при создании программы — справочника «Парфюмерный магазин» является создание сортировки товаров.

В настоящий момент существует бесчисленное множество различных Интернет — магазинов. Каждый подобный сайт применяет собственную систему сортировки и навигации. Мы возьмем концептуальную основу деления товаров из различных Интернет источников и попробуем создать свою уникальную систему.

Условно все товары парфюмерного (косметического) магазина, можно разделить на 9 разделов:

— Уход за лицом;

— Уход за кожей;

— Детские товары;

— Маникюр;

— Парфюмерия;

— Уход за телом;

— Товары для мужчин;

— Уход за волосами;

— Другие товары.

3.1.1 Уход за лицом;

В данном разделе представляются товары, предназначенные непосредственно для ухода за лицом. Условно данный раздел можно разделить на 13 подразделов:

— Гель;

— Лосьоны и пена;

— Молочко;

— Бальзам;

— Крем;

— Масло;

— Маска, скраб;

— Подводка, карандаш;

— Румяна, тушь

— Тени пудра;

— Помада, маска;

— Блеск;

— Другие товары.

3.1.2 Уход за кожей;

В данном разделе представляются товары, предназначенные непосредственно для ухода за кожей. Условно данный раздел можно разделить на 8 подразделов:

— Гель;

— Лосьоны и пена;

— Молочко;

— Бальзам;

— Крем;

— Масло;

— Другие товары.

3.1.3 Детские товары;

В данном разделе представляются товары, предназначенные непосредственно для детей. На самом деле детям не рекомендуется пользоваться косметикой, по этому подразделов в данном разделе будет всего 3:

— Ароматы;

— Крема и мази;

— Другие товары.

3.1.4 Маникюр;

В данном разделе представляются товары, предназначенные непосредственно для ухода за ногтями. Условно данный раздел можно разделить на 4 подраздела:

— Крем;

— Лак;

— Масло;

— Другие товары.

3.1.5 Парфюмерия;

В данном разделе представляются парфюмерные товары:

— Туалетная вода;

— Духи;

— Дезодорант;

— Одеколон;

— Другие товары.

3.1.6 Уход за телом;

В данном разделе представляются товары, предназначенные непосредственно для ухода за телом. Условно данный раздел можно разделить на 8 подразделов:

— Гель;

— Лосьоны и пена;

— Молочко;

— Мыло;

— Бальзам;

— Крем;

— Масло;

— Другие товары

3.1.7 Товары для мужчин;

В данном разделе представляются товары, предназначенные непосредственно для мужчин. Условно данный раздел можно разделить на 8 подразделов:

— Дезодорант;

— Одеколон;

— Гель;

— Лосьоны и пена;

— Шампунь;

— Бальзам;

— Крем;

— Другие товары.

3.1.8 Уход за волосами;

В данном разделе представляются товары, предназначенные непосредственно для ухода за волосами. Условно данный раздел можно разделить на 9 подразделов:

— Гель;

— Мыло;

— Шампунь;

— Кондиционер;

— Бальзам;

— Спрей;

— Лак;

— Блеск;

— Другие товары.

3.1.9 Другие товары.

Всех товаров не учтешь, особенно с современным, довольно бурным развитием сферой парфюмерии и косметики. В связи с этим необходим раздел, в котором можно добавлять, то новое, что может появиться со временем. Но даже в данном разделе было создано 3 подраздела:

— Бижутерия;

— Технические средства;

— Другие товары.

Нельзя сказать, что была острая необходимость делить данный раздел, впрочем, как и детские товары, но это в первую очередь связано с концепцией работы программы, которая постоянно считывает разделы и подразделы. И без наличия подразделов, программу пришлось бы усложнять.

В итоге сортировка предусматривает деление на разделы и подразделы. Каждый товар должен находиться только в одном определенном разделе и соответственно подразделе. Когда пользователю появится необходимость найти нужный ему товар не обязательно прибегать к поиску, т.к. условия поиска не всегда удобно записать, достаточно определится к какому разделу, относится товар, который необходимо найти. Очень важную роль при этом необходимо отвести к заполнению БД. Товары должны быть грамотно занесены в БД и тогда проблем при поиске нужного товара, недолжно возникать.

3.2 Интерфейс

При создании вышеуказанной сортировки необходимо создать интерфейс пользователя, обладающий следующими свойствами:

— Удобство;

— Простота;

— Интуитивно понятная навигация;

— Отсутствие «захламленности».

Поставленную задачу можно решить следующим образом:

— Создание разметки экрана — линии, которые должны разделять экран, для его целесообразного размещения;

— Создание кнопок управления — как у большинства подобных справочников внизу экрана отображаются кнопки управления, доступные в определенный момент;

— Создание меню разделов и подразделов, при чем так чтоб пользователь при помощи курсора мог осуществить навигацию по разделам и подразделам, а не нажимать цифры меню;

— Создание справочной системы и системы подсказок;

После реализации вышеуказанных позиций, программа — справочник должна получиться удобной и интуитивно понятной.

3.3 Функции программы

Данная программа — справочник должна обладать следующими функциями (помимо сортировки и навигации, которые описаны ранее):

— Добавление нового товара в БД;

— Поиск нужного товара по заданным критериям;

— Создание отчетности по заданным критериям;

— Удаление ненужного товара;

3.4 Поля объекта

Основным объектом в данной программе является товар, все остальные объекты в программе так или иначе связаны с товаром.

Как показало изучение предметной области, критерии товаров должны быть следующими:

— Код товара — целое число, которое должно быть уникальное для каждого товара, т. е. не повторятся;

— Раздел — целое число, которое свидетельствует о принадлежности к определенному разделу, каждое из которых имеет свой уникальный номер;

— Подраздел — целое число, которое свидетельствует о принадлежности к определенному подразделу, каждое из которых имеет свой уникальный номер;

— Название — строковое данное, характеризует общее название товара;

— Серия — это строковое данное, характеризует принадлежность товара к определенной серии;

— Производитель — строковое данное, описывает название производителя;

— Описание — строковое данное, которое описывает товар более подробно;

— Цена товара — это строковое данное указывает цену товара. Цена товара будет именно строковым данным, сделано это для того, чтоб не указывать валюту (рубли, У.Е., евро, доллар США и т. д.) и деление на рубли и копейки.

4. Описание программы создания набора данных

В данной программе записью будет являться товар, а полями записи будет информация о товаре. Поля товаров описаны в п. 3.4.

4.1 Программная организация записи

Программная организация записи описывается следующим образом:

Baza:record

FKod:integer;

FRazdel;

FPodRazdel;

FName:string;

FSeria:string;

FProizvod:string;

FOpisan:string;

FMany:string;

FSim:string; - символ разделитель в БД

End;

4.2 Файлы данных

Файлов данных работающих с программой можно разделить на основные и вспомогательные.

К основным относятся:

— bd. dat;

— Razdel.dat.

К вспомогательным относятся:

— Kod. dat;

— help. dat;

— BDVR.DAT.

4.2.1 bd. dat — это основной файл БД. В данном файле хранится информация о товарах. Каждая позиция товаров хранится в отдельной строке, и товары разделены символом «*».

Пример хранение информации о товаре:

1 — код товара;

1 — раздел «Уход за лицом»;

1 — подраздел «Гель»;

Гель для лица — название товара;

Власть над временем — Серия товара;

Oriflame — производитель;

Гель для лица, замедляющий процесс старения кожи. Почувствуйте моментальный эффект лифтинга. — Описание товара;

200.25 — цена товара;

* — символ разделитель.

4.2.2 Razdel. dat — это файл, хранящий разделы и подразделы. В первой строке стоит код раздела и подраздела, а за ней стоит название раздела и подраздела и т. д.

Пример:

Дезодорант

Это запись означает, что в седьмом разделе есть подраздел «Дезодорант»

4.2.3 Kod. dat — это файл, хранящий коды товара. При создании нового товара программа считывает последний код, увеличивает на единицу и сохраняет в файле. Таким образом, код каждого товара уникален.

4.2.4 help. dat — файл справки.

4.2.5 BDVR. DAT — это файл временной БД. Этот файл необходим при удалении товара, когда товары переносятся во временный файл. За исключением удаленного товара, а затем основной файл БД перезаписывается.

5. Описание программы формирование выходного документа

К выходным документам относятся:

— Вывод информации на экран;

— Вывод информации в файл.

5.1 Вывод информации на экран

Пример формирования выходного документа на экран см. в приложении 4 рис. 2

Экран в данной программе состоит из пяти частей:

— Заголовок. Заголовок находится в верхней части экрана и показывает, в каком разделе пользователь находится в настоящий момент. Так же при выборе пользователем подраздела в правой части заголовка выводится количество позиций (товаров) в данном подразделе.

— Меню. Меню находится в левой части экрана и отображает пользователю существующие разделы и подразделы, перемещение в которых осуществляется при помощи курсора.

— Подсказка. Подсказки находятся в левой части экрана под Меню. Здесь отображается клавиши управления для навигации по программе.

— Клавиши управления. Каждая клавиша имеет свой цвет и доступна только в тех случаях, когда данными функциями можно воспользоваться. Клавиши управления находятся в нижней части экрана и содержат следующие пункты:

1) Помощь F1;

2) Новый F2;

3) Поиск F3;

4) Отчет F4;

5) Удалить F5;

6) Назад PageUp;

7) Далее PageDown;

8) Выход F10.

— Окно. Окно занимает основную часть экрана. Здесь отображается информация о товаре и сообщение, что товаров нет, если таковые отсутствуют в выбранном пользователем подразделе.

5.2 Вывод информации в файл

Информация в файл выводится при создании файла отчета. Отчет создается по двум критериям:

— По текущему товару;

— По текущему подразделу.

Данная опция доступна только при условии, что пользователь находится в режиме работы с товарами. Т. е. пользователь выбрал требуемый подраздел и нажал ввод.

При нажатии в режиме работы с товарами кнопки F4 пользователю предлагается выбрать варианты отчета, по текущему товару или по текущему подразделу. После выбора условия отчета, пользователю предлагается ввести имя файла, в который будет сохранен отчет. Файл будет иметь расширение txt и находится в корневой папке с программой. Данные в файле будут отформатированы и неплохо оформлены.

Пример формирования выходного документа в файл см. в приложении 4 рис. 7.

6 Описание программы формирование списковой структуры

6.1 Область применения списковой структуры

Списковая структура применяется для передвижения по товарам внутри подраздела. Когда пользователь входит в подраздел формируется запрос, результатом которого будут товары, найденные в БД, каждый из которых, будет соответствовать выбранным пользователем раздела и подраздела. Причиной необходимости использования динамической структуры явилось то, что при программировании не известно какое количество товаров будет в выбранном разделе и подразделе. По этому, когда находится очередной товар, удовлетворяющий выбранному пользователем разделом и подразделом, код этого товара просто добавляется в список. А на экран выводится товар, код которого последний в списке.

6.2 Принцип работы

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

— Когда пользователь выбирает нужный ему подраздел, программа ищет в файле БД первый товар, если таковой вообще существует, который удовлетворяет выбранному пользователем разделу и подразделу и код этого товара добавляется в динамический список — стек.

— Далее программа выводит на экран информацию о товаре, код которого находится в вершине стека.

— При нажатии пользователем клавиши PageDown, вновь осуществляется поиск товара в БД, который соответствует выбранному пользователем разделу и подразделу, но уже программа проверяет, не находится ли код этого товара уже в стеке. Если нет, то код товара добавляется в стек и на экран выводится товар, код которого находится в вершине стека, т. е. зашедший в стек последний. При повторном нажатии на PageDown, проделывается все то же самое.

— Если нажата клавиша PageUp, то код товара, который является вершиной стека, просто удаляется и вершиной стека становится, уже предыдущий код товара, если, конечно же, это был не первый товар. А далее, как и в случае с PageDown выводится товар, код которого находится в вершине стека.

Подводя итог можно сказать, что фактически перемещение происходит в стеке, а на экран выводится лишь товар с кодом товара из вершины стека.

6.3 Процедуры, используемые при работе со списком.

Полностью описывать весь алгоритм данных процедур в данном разделе не будем, затронем только те их части, которые взаимодействуют непосредственно со списком.

При работе со списком используются следующие функции:

— Чтение элемента из списка;

— Добавление элемента в список;

— Поиск элемента в списке;

— Удаление элемент из списка.

6.3.1 Описание списка

Type

Integ=^integer;

Int:integer; {код товара}

Next:integ; {ссылка на следующий элемент}

end;

6.3.2 Чтение элемента из списка В данном разделе указатель перемещается на последний элемент и считывается хранящийся там код товара. Далее, с этим кодом товара происходит либо, какое то сравнение, условие, либо присваивается некоторой переменной, либо удаляется код из списка.

6.3.3 Добавление элемента в список Добавление кода товара в список происходит в процедуре AddSpisok, алгоритм которой заключается в следующем (Приложение 5, схема 12):

— Создается новый элемент;

— Записывается код товара из файла в список;

— Устанавливается указатель для поддержания целостности списка;

6.3.4 Поиск элемента в списке Поиск осуществляется в процедуре PoiskFPR. Алгоритм поиска заключается в следующем:

— Переход на последний элемент списка — вершину стека;

— До тех пор пока не конец стека делать;

— Если текущий код товара из файла БД равен коду товара из списка, то условие выполнено, если нет, то считывается следующий элемент из списка и т. д.

6.3.5 Удаление элемента из списка.

Удаления кода товара из списка происходит в процедуре DelSpisok, в данной процедуре удаляется только последний элемент, который являлся вершиной стека, алгоритм данной процедуры заключается в следующем:

— Переход на последний элемент списка — вершина стека;

— Создание связи, со следующим элементом;

— Удаление элемента;

— Присваивание нового последнего элемента.

7 Технология обработки данных

Последовательность операций с данными заключается в следующем (приложение 5 схема 1):

— Создания разметки экрана (Приложение 4, рисунок 1);

— Создания и управление разделами и подразделами;

— Выбор режима работы;

— Вывод на экран товаров соответствующих разделу и подразделу;

— Операции над товарами;

7.1 Разметка экрана.

Разметка экрана реализуется при помощи процедуры Shapka. В данной процедуре реализуется следующее (приложение 5, схема 2):

— Создаются линии, которые разделяют экран;

— Создаются копки управления — кнопки управления с доступными функциями. Если на определенном этапе работы кнопка имеет серый цвет, то данная функция недоступна;

— Создается заголовок — раздел экрана, в котором выводится название раздела, в котором пользователь работает в настоящий момент;

— Создаются окно подсказки — в данном окне выводятся подсказки для пользователя, необходимые для работы в определенный момент.

7.2 Управление разделами и подразделами.

Управление разделами и подразделами реализовано в процедуре Perem, следующим образом:

— Вывод на экран разделов или подразделов;

— Перемещение внутри раздела или подраздела;

— Выбор режима работы.

7.2.1 Вывод на экран разделов или подразделов.

Данный раздел осуществляется при помощи процедуры PodRazdel. Реализация в данной процедуре происходит следующим образом (приложение 5, схема 3):

— Открытие файла razdel. dat для чтения. В данном файле содержится название всех разделов и подразделов и специальные коды для распознавания (структуру файла см. п. 4.2.2). Например, если стоит код 0, то данная позиция относится к разделу, и будет выводиться только, в случае отображение разделов. Если стоит единица, то это означает, что данный подраздел соответствует первому разделу и т. д.

— Программа, считывает доступные разделы и подразделы из файла, который находится в корневой папке с программой и добавляет их в массив PodRaz. Если программа только запущенна, то выводятся разделы из файла имеющие код 0, если, к примеру, выбран раздел «детские товары», то из файла разделов считываются подразделы, которым соответствует код 3.

— Закрытие файла.

— Вывод элементов меню. Вывод элементов меню осуществляется из массива PodRaz и каждый элемент массива закрашивается определенным цветом. Первоначально первый пункт белым цветом, а остальные зеленым.

7.2.2 Перемещение внутри раздела или подраздела.

Операции по перемещению заключаются в следующем (приложение 5, схема 4):

— Первоначально запоминается первая строка. При отображении элементов меню, как уже было сказано ранее, первый элемент меню закрашен белым цветом, а остальные зеленым. Программа подразумевает, что текущая позиция является первым элементом, закрашенным белым цветом.

— Пользователю предлагается ввести при помощи курсора направления перемещения.

— Если, пользователь выбрал направление вниз, то текущий элемент меню становится зеленым, а элемент стоящий внизу, становится белым, и программа запоминает новую текущую строку. Если вверх, то соответственно, текущий становится зеленым, а верхний белым, при условии что это не первый пункт меню.

— При работе с разделами и подразделами у пользователя есть еще три допустимых операций: помощь, поиск и вход (см. п. 7.3).

7.3 Выбор режима работы.

Во время перемещения по позициям меню пользователю доступны три операции (Приложение 5, схема 5):

— Помощь;

— Поиск;

— Вход.

7.3.1 Помощь.

Вход в режим справки осуществляется по нажатию клавиши F1 (Приложение 4, рисунок 3).

Данная операция реализована в процедуре Help, следующим образом (приложение 5, схема 8):

— Открывается файл help. dat для чтения. Данный файл содержит справочную информацию о работе с программой.

— Файл справки достаточно большой и, следовательно, не влезает в одно окно, для этого существует ограничения, когда экран заполнен, то дальнейшее считывание не происходит, до тех пор, пока пользователь не прочтет все и не нажмет клавишу ввод. После этого на экран выводится следующая часть файла справки.

— По завершению работы с файлом справки, он закрывается и на экран выводится разметка, разделы или подразделы, для дальнейшего выбора пользователем.

7.3.2 Поиск.

В ход в режим поиска осуществляется по нажатию клавиши F3 (Приложение 4, рисунок 5).

Данная операция реализована в процедуре Poisk, следующим образом (приложение 5, схема 7):

— Пользователю предлагается выбрать, по каким условиям будет осуществлен поиск: по серии товара, по производителю, или по названию.

— Далее пользователю предлагается ввести текст для поиска.

— После ввода текста поиска, программа открывает файл BD. dat для чтения.

— Далее происходит считывание каждой позиции из БД и сравнение с введенным текстом.

— Если очередная позиция товара соответствует условию поиска, то алгоритм приостанавливается и данный товар выводится на экран при помощи процедуры Tablo (см. п. 7.4.4), и поиск дальнейших товаров продолжается лишь, после того как будет нажата клавиша Page Down (Далее);

— После завершения поиска файл БД закрывается и на экран выводится сообщение, что больше совпадений не найдено.

— Далее на экран выводится разметка и элементы меню для дальнейшей работы.

7.3.3 Вход.

Вход в данный режим осуществляется, после того как пользователь перешел на нужный раздел и подраздел и нажал клавишу Enter.

Обработка действий при нажатии клавиши Enter, осуществляется в процедуре Vhod. Алгоритм данной процедуры заключается в следующем (приложение 5, схема 6):

— Проверяется, если открыт подраздел, а не раздел, то выводится на экран товары данного подраздела. Данный пункт осуществляется при помощи процедуры Vivod (см. п. 7.4);

— Если открыт, радел, то программа считывает, какой раздел был выбран и в зависимости от выбора раздела программа определяет подразделы, которые соответствуют выбранному пользователем разделу. Реализуется данная операция при помощи процедуры Podrazdel (п. 7.2.1);

— Если открыт режим подразделов и нажата клавиша Backspace, то на экран выводятся разделы.

7.4 Вывод на экран товаров соответствующих разделу и подразделу.

Вывод товаров на экран осуществляется, после того как пользователь нажмет клавишу Enter на нужном подразделе (Приложение 4, рисунок 2). Данная операция реализована в процедуре Viviod, алгоритм которой заключается в следующем (приложение 5, схема 9):

— Считывается количество товаров в данном подразделе. Данная операция осуществляется в процедуре Schet (см. п. 7.4.1);

— Считывается первый товар из подраздела и код первого товара добавляется в список (см. в п. 6.3.3). Данная операция реализована в процедуре PR (см. п. 7.4.2);

— Вывод на экран товара соответствующего последнему, коду товара из списка, реализуется данная операция в процедуре WriteSpisok (см. в п. 7.4.4). Таким образом, на экране выводится первый товар из БД, соответствующий разделу и подразделу.

— Далее пользователю предлагается выбрать дальнейшие действия, которые можно разделить на передвижение и операции. Об операциях над товарами более подробно будет описано в п. 7.5, а передвижение, в случае, если товаров более одного, осуществляется при помощи клавиш Page Up (назад), Page Down (вперед);

— Если нажата клавиша Page Down, то программа ищет в БД следующий товар, который соответствует, разделу и подразделу (если они вообще существуют), но с условием, что ранее показанные товары отображаться не будут, т. е. те товары, коды которых находятся в списке. Данная операция реализована в процедуре PoiskFPR (см. п. 7.4.3, поиск в списке см. п. 6.3.4);

— После того как найден очередной товар, соответствующий разделу и подразделу и он ранее не был отображен, то код этого товара добавляется в список. Реализовано данная операция в процедуре AddSpisok (см. в п. 6.3.3);

— Далее на экран выводится товар с кодом товара, записанным последним в список. Реализована данная операция при помощи процедуры WriteSpisok (см. п. 7.4.4);

— Если нажата клавиша PageUp, то проверяется, не первый ли это товар, в данном разделе и подразделе. Если нет, то удаляется последний элемент из списка (процедура DelSpisok, см. в п. 6.3.5) и выводится товар, с кодом товара, который теперь уже стал первым (процедура WriteSpisok, см. п. 7.4.4);

— По мимо передвижения доступны и другие функции, которые будут описаны в п. 7.5.

7.4.1 Процедура Schet.

Данная процедура выводит общее количество товаров в выбранном пользователем разделе и подразделе. Реализована данная процедура следующим образом (приложение 5, схема 10):

— Обнуляется счетчик;

— Открываем файл БД для чтения;

— Считывается очередной товар;

— Если раздел и подраздел очередного товара, соответствуют выбранному пользователем разделу и подразделу, то счетчик увеличивается на единицу;

— Закрываем файл БД

7.4.2 Процедура PR.

Данная процедура добавляет код первого товара в список. Реализовывается данная процедура следующим образом (приложение 5, схема 11):

— Открывается файл для чтения;

— Считывается очередной товар;

— Если раздел и подраздел очередного товара, соответствуют выбранному пользователем разделу и подразделу, то добавляем код товара в список, используя процедуру AddSpisok (см. в п. 6.3.3).

7.4.3 Процедура PoiskFPR.

Данная процедура ищет товар, соответствующий разделу и подразделу, выбранным пользователем, с условием, что код этого товара не занесен в список, т. е. уже был выведен на экран. Реализуется данная процедура следующим образом (приложение 5, схема 13):

— Открывается файл БД;

— Считывается очередной товар;

— Если раздел и подраздел очередного товара, соответствуют выбранному пользователем разделу и подразделу, то проверяется, является ли код данного товара в списке, т. е. осуществляется поиск в списке (см. п. 6.3.4).

— Если код текущего товара из БД отсутствует в списке, то процедура прерывается. И затем код этого товара добавляется в список (процедура AddSpisok п. 6.3.3).

7.4.4 Процедура WriteSpisok.

Данная процедура выводит товар на экран. Реализована она следующим образом (приложение 5, схема 9):

— Выводит в верхнюю часть экрана общее количество товаров в подразделе;

— Открывается файл БД для чтения;

— Считывается последний код товара из списка;

— Поиск в БД и вывод на экран, товара с кодом из списка. Вывод на экран осуществляется при помощи процедуры Tablo. В данной процедуре отсутствуют, какие либо циклы или условия, там лишь вывод в необходимую координату экрана текста из БД, по этому останавливаться на данной процедуре нет смысла.

— Закрытие файла БД.

7.5 Операции над товарами.

При работе с товарами доступны следующие операции:

— Новый товар в текущий раздел и подраздел;

— Отчет;

— Удалить товар.

7.5.1 Новый товар в текущий раздел и подраздел.

Данная операция вносит информацию о новом товаре в текущий раздел и подраздел (Приложение 4, рисунок 4). Реализована данная операция при помощи процедуры NewTovar, алгоритм которой заключается в следующем (приложение 5, схема 4):

— На экране появляется форма для заполнения информации о товаре;

— После ввода информации у пользователя спрашивают, сохранить или нет.

— Если нажата, кнопка сохранить, то открывается файл для чтения kod.dat.

— Из выше указанного файла считывается последний внесенный код товара.

— Файл kod. dat, находящийся в режиме чтения, закрывается;

— Файл kod. dat открывается в режиме добавления;

— Последний считанный код товара увеличивается на единицу и последний сохраняется в файл;

— Файл kod. dat закрывается;

— Открывается файл БД в режиме добавления и в конец файла добавляется новый товар;

— Закрывается файл БД;

— На экран выводится разметка и подразделы.

7.5.2 Отчет.

Описание создание отчетов описано в п. 5.2. Реализована функция создания отчетов в процедуре PrintF, алгоритм которой заключается в следующем (приложение 5, схема 16):

— Выбор критерий отчета: по текущему товару или по текущему подразделу (Приложение 4, рисунок 6);

— Пользователю предлагается ввести имя файла, в который будет сохранен отчет (Файл будет сохранен в корневой каталог с программой, и будет иметь расширение txt);

— Создание файла с вышеуказанным именем и расширением;

— Если выбрана по текущему подразделу, то все товары того подраздела, в котором пользователь находится в настоящий момент, будут сохранены в файл отчета, если текущий товар, то в файл отчета будет сохранен только товар, открытый в настоящий момент;

— По окончании выводится последний, просматриваемый товар.

7.5.3 Удалить товар.

Реализована функция удаления товара в процедуре Del, алгоритм которой заключается в следующем (приложение 5, схема 15):

— У пользователя уточняется, действительно ли он хочет удалить товар;

— Если да то открывается файл БД для чтения и открывается временный файл в режиме перезаписи;

— Каждый элемент из БД копируется во временный файл, за исключением того которого, хотят удалить, т. е. того код, которого находится в вершине списка;

— Закрываются оба файла;

— Открытие файла БД в режиме перезаписи и временного файла в режиме чтения;

— Вся информация из временного файла, целиком копируется в файл БД;

— Файлы закрываются;

— Выводится сообщение, что запись удалена;

— Обновление информации на экране.

8 Заключение

Подведем итог того, что все-таки удалось в данном курсовом проекте:

— Удалось создать неплохую сортировку, что облегчает работу с товарами, на мой взгляд, эта основа любой БД;

— Удалось создать достаточно простой и интуитивно понятный интерфейс, без каких либо излишеств;

— В программе реализованы основные функции работы с БД — удаление, добавление, отчетность, поиск;

— Показано когда, какая функция доступна;

— Отражено, в каком разделе осуществляется работа, т.к. некоторые разделы содержат одинаковые подразделы и можно запутаться;

— Существует справочная система и система подсказок. Хотя над справкой можно было еще поработать;

— Достаточно простое управление товарами;

Конечно, можно было еще поработать над справкой, отчетами и поиском. Действительно отчет всего по двум критериям, для БД конечно маловато, и достаточно примитивный поиск. Но, подводя итог можно сказать, что основная цель, на мой взгляд, все-таки выполнена, эти функции показаны и реализованы.

Ко всему прочему можно с уверенностью сказать, что данную программу можно приспособить под большинство справочников. Для этого достаточно открыть файл разделов и создать другие, например жанры книг и точно также разделы, и подразделы, т. е. сортировку. Затем изменить некоторые позиции в товаре, поиске и отчетности и в принципе все. В итоге, как мне кажется, за день другой, данную программу можно очень быстро переделать.

В итоге конечная цель все-таки достигнута. Была создана универсальная БД со всем набором необходимых функций. Конечно же, в Turbo Pascal достаточно сложно создавать БД и БД получаются достаточно примитивные, но принцип создания БД, описан очень хорошо.

9 Список литературы

9.1 Учебное пособие. «Структуры и алгоритмы обработки данных в ЭВМ», А. Н. Горитов, г. Томск

9.2 Самоучитель. «Программирование в Turbo Pascal», Н. Культин.

9.3 Открытие Интернет источники.

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

Разделы

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

Товара у каждого подраздела Схема 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

нет

Да

Да

нет

Схема 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:prograzdel.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:progbd.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:progbd.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:progbd.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:progbd.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:progbd.dat');

assign (fDel,'e:progbdvr.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:progbd.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);

Показать весь текст
Заполнить форму текущей работой