Т2 - справочная таблица «Наименования товаров»;
Т3 - справочная таблица «Группы товаров»;
Т4 - справочная таблица «Сотрудники»;
Т5 - справочная таблица «Должности»;
Т6 - справочная таблица «Клиенты»;
Т7 - таблица «Продажи »;
Т8 - таблица «Поставки»;
Т9 - таблица «Заказы»;
Т10 - справочная таблица «Поставщики»;
Т11 - справочная таблица «Банки»;
Т12 - таблица «Списания»;
Т13 - справочная таблица «Причины списания товаров»;
Т14 - таблица «Инвентаризация».
Входные документы Д1-Д4 описаны в таблице 2.4, выходные документы D1-D6 представлены в таблице 2.3.
Рисунок 3.2 – Схема информационной модели системы
3.4 Описание алгоритмов и программ
3.4.1 Описание алгоритма программного модуля расчёт гарантийного запаса товаров
НАЧАТЬ алгоритм программного модуля расчёта гарантийного запаса товаров
ОТОБРАЗИТЬ текущую дату
ОРГАНИЗОВАТЬ меню выбора групп товаров
ЕСЛИ не выбрана группа товаров
ВЫВОД сообщения: «Выберите группу товаров для проведения
анализа»
ИНАЧЕ
GZ.gr = код выбранной группы товаров
ОТКРЫТЬ файл Prodagi
ОТКРЫТЬ файл Postavshiki
ОТКРЫТЬ файл Report_Remainder
ОТКРЫТЬ вспомогательную таблицу GZ
УДАЛИТЬ устаревшую информацию
ОТКРЫТЬ файл Tovary
УСТАНОВИТЬ фильтр с условием: Tovary.group = GZ.gr
ЕСЛИ конец файла
ВЫВОД сообщения: «В справочнике Товары отсутствует информация по товарам группы < GZ.gr >»
АВАРИЙНЫЙ_ВЫХОД
К_Е
ЦИКЛ пока не конец файла Tovary
ПЕРЕЙТИ в рабочую область файла Prodagi
УСТАНОВИТЬ фильтр с условием:
Рисунок 3.3 – Алгоритм расчёт гарантийного запаса товаров
Prodagi.id_tov = коду текущего товара
&& Prodagi.date <= dr && Prodagi.date >= dr-dt
S = 0
ЦИКЛ пока не конец файла Prodagi
S = S + Prodagi.kolvo
К_Ц
PDN = S/dt
ПЕРЕЙТИ в рабочую область файла Postavshiki
УСТАНОВИТЬ фильтр с условием:
Postavhiki.id_post = код поставщика текущего товара
FGZ = (Post.tpost+ Post.zpost)* PDN – PDN* Post.tpost
ПЕРЕЙТИ в рабочую область файла GZ
ДОБАВИТЬ запись в таблицу GZ
GZ.id_tov = коду текущего товара
GZ.kolvo = S
ОТМЕНИТЬ фильтр
ОТМЕНИТЬ фильтр
К_Ц // с переходом на следующую запись
ПЕРЕЙТИ в рабочую область файла Report_Remainder
ЕСЛИ Report_Remainder.kolvo <= GZ.kolvo
ВЫВОД сообщения: «Для товара < GZ.gr > необходимо пополнить запас. Запустить формирование заказа?»
ЕСЛИ выбран пункт меню да
ЗАПУСТИТЬ алгоритм формирования заказа
К_Е
К_Е
ЗАКРЫТЬ файл Tovari
ЗАКРЫТЬ файл Report_Remainder
ЗАКРЫТЬ файл Prodagi
ПЕРЕЙТИ в рабочую область файла GZ
УПОРЯДОЧИТЬ записи в порядке убывания поля GZ.kolvo
ЗАКРЫТЬ файл GZ
К_Е
К_Е
ВЫВОД файла АВС
ЗАКРЫТЬ файл АВС
КОНЕЦ_АЛГОРИТМА
3.4.2 Описание алгоритма программного модуля формирование оптимального размера заказа
НАЧАТЬ алгоритм программного модуля формирование оптимального размера заказа
ОТОБРАЗИТЬ текущую дату
ОРГАНИЗОВАТЬ меню выбора планового периода
ОРГАНИЗОВАТЬ меню выбора группа товаров для пополнения запасов
ЕСЛИ не выбрана группа товаров
ВЫВОД сообщения: «Выберите группу товаров для проведения анализа»
ИНАЧЕ
ORZ.gr = код выбранной группы товаров
ОТКРЫТЬ файл Prodagi
ОТКРЫТЬ файл Zakazi
ОТКРЫТЬ вспомогательную таблицу ORZ
УДАЛИТЬ устаревшую информацию
ОТКРЫТЬ файл Tovary
УСТАНОВИТЬ фильтр с условием: Tovary.group = ORZ.gr
ЕСЛИ конец файла
ВЫВОД сообщения: «В справочнике Товары отсутствует информация по товарам группы < ORZ.gr >»
АВАРИЙНЫЙ_ВЫХОД
К_Е
ЦИКЛ пока не конец файла Tovary
ПЕРЕЙТИ в рабочую область файла Prodagi
УСТАНОВИТЬ фильтр с условием:
Prodagi.id_tov = коду текущего товара
&& Prodagi.date <= dr && Prodagi.date >= dr-dt
S = 0
ЦИКЛ пока не конец файла Prodagi
S = S + Prodagi.kolvo
К_Ц
ПЕРЕЙТИ в рабочую область файла ORZ
ДОБАВИТЬ запись в таблицу ORZ
ORZ.id_tov = коду текущего товара
ORZ.kolvo = S
ОТМЕНИТЬ фильтр
К_Ц // с переходом на следующую запись
ПЕРЕЙТИ в рабочую область файла Tovari
УСТАНОВИТЬ фильтр с условием:
Tovari.id_tov = коду текущего товара
Q=S*
ДОБАВИТЬ запись в таблицу Zakazi
Zakazi.id_tov = коду текущего товара
Zakazi.date = dr
Zakazi.id_post = коду текущего поставщика
Zakazi.kolvo = Q
Zakazi.zena = Q*C
ОТМЕНИТЬ фильтр
ЗАКРЫТЬ файл Tovari
ЗАКРЫТЬ файл Prodagi
К_Е
К_Е
ВЫВОД файла Zakazi
ЗАКРЫТЬ файл Zakazi
КОНЕЦ_АЛГОРИТМА
3.4.3 Описание алгоритма программного модуля формирование отчета «Объем продаж»
НАЧАТЬ алгоритм программного модуля формирования отчета «Объем продаж»
ОРГАНИЗОВАТЬ ввод периода формирования отчета и установки фильтра
по группам товаров
dn = дата начала периода
dk = дата конца периода
ОТКРЫТЬ файл Prodagi
ОТКРЫТЬ файл Report_Prodagi
УДАЛИТЬ устаревшую информацию
ОТКРЫТЬ файл Tovari
УСТАНОВИТЬ фильтр с условием: Tovari.group = выбранной группе
ЕСЛИ конец файла
ВЫВОД сообщения: «В справочнике Товары отсутствует информация по товару из группы <выбранная группа товаров>»
АВАРИЙНЫЙ_ВЫХОД
К_Е
ЦИКЛ пока не конец файла Tovari
ПЕРЕЙТИ в рабочую область файла Prodagi
УСТАНОВИТЬ фильтр с условием: Prodagi.date >= dn && Prodagi.date <= dk
&& Prodagi.id_tov = коду текущего имени товара
Vprod = 0
ЦИКЛ пока не конец файла Sale
Vprod = Vprod + Prodagi.kolvo
К_Ц // с переходом на следующую запись
ДОБАВИТЬ строку в таблицу Report_Sale
Report_Prodagi.id_group = Tovari.id_group
Report_Prodagi.id_tov = Tovari.id_tov
Report_Prodagi.amount = Vprod
ОТМЕНИТЬ фильтр
К_Ц // с переходом на следующую запись
ОТМЕНИТЬ фильтр
ЗАКРЫТЬ файлы Report_Prodagi, Prodagi
КОНЕЦ_АЛГОРИТМА
3.4.4 Описание алгоритма программного модуля формирование отчета «Ведомость остатков»
НАЧАТЬ алгоритм программного модуля формирования отчета «Ведомость остатков»
ОРГАНИЗОВАТЬ ввод периода формирования отчета и установки фильтра по группам товаров
dn = дата начала периода
dk = дата конца периода
ОТКРЫТЬ файлы Tovari, Prodagi, Spisaniya
ОТКРЫТЬ файл Report_Remainder
УДАЛИТЬ устаревшую информацию
ОТКРЫТЬ файл Tovari
ЕСЛИ установлен фильтр по группе товаров
УСТАНОВИТЬ фильтр с условием: Tovari.group = выбранной группе
К_Е
ЕСЛИ конец файла
ВЫВОД сообщения: «В справочнике Товары отсутствует информация по товару из группы <выбранная группа товаров»
АВАРИЙНЫЙ_ВЫХОД
К_Е
ЦИКЛ пока не конец файла Tovari
ПЕРЕЙТИ в рабочую область файла Prodagi
УСТАНОВИТЬ фильтр с условием:
Sale.date >= dn && Prodagi.date = dk &&
Prodagi.id_tov = коду текущего имени товара
Vprod = 0
ЦИКЛ пока не конец файла Tovari
Vprod = Vprod + Prodagi.kolvo
К_Ц // с переходом на следующую запись
ОТМЕНИТЬ фильтр
ПЕРЕЙТИ в рабочую область файла Postavki
УСТАНОВИТЬ фильтр с условием:
Postavki.date = dn && Postavki.date = dk &&
Postavki.id_tov = коду текущего имени товара
ЦИКЛ пока не конец файла Postavki
Vprod = Vprod - Postavki.kolvo
К_Ц // с переходом на следующую запись
ОТМЕНИТЬ фильтр
ПЕРЕЙТИ в рабочую область файла Spisaniya
УСТАНОВИТЬ фильтр с условием:
Spisaniya.date = dn && Spisaniya.date = dk &&
Spisaniya.id_tov = коду текущего имени товара
ЦИКЛ пока не конец файла Spisaniya
Vprod = Vprod - Spisaniya.kolvo
К_Ц // с переходом на следующую запись
ОТМЕНИТЬ фильтр
ДОБАВИТЬ строку в таблицу Report_Prodagi
Report_ Remainder.id_group = Tovari.id_group
Report_ Remainder.id_tov = Tovari.id_tov
Report_ Remainder.kolvo = Vprod
К_Ц // с переходом на следующую запись
ОТМЕНИТЬ фильтр
ЗАКРЫТЬ файлы Report_Remainder, Tovari, Postavki, Spisaniya
КОНЕЦ_АЛГОРИТМА
3.4.5 Описание алгоритма программного модуля формирование отчета «Списания товаров»
НАЧАТЬ алгоритм программного модуля формирования отчета «Списания товаров»
ОРГАНИЗОВАТЬ ввод периода формирования отчета и установки фильтра
по группам товаров
dn = дата начала периода
dk = дата конца периода
ОТКРЫТЬ файл Spisaniya
ОТКРЫТЬ файл Report_ Spisaniya
УДАЛИТЬ устаревшую информацию
ОТКРЫТЬ файл Tovari
ЕСЛИ установлен фильтр по группе товаров
УСТАНОВИТЬ фильтр с условием: Tovari.group = выбранной группе
К_Е
ЕСЛИ конец файла
ВЫВОД сообщения: «В справочнике Товары отсутствует информация по товару из группы <выбранная группа товаров>»
АВАРИЙНЫЙ_ВЫХОД
К_Е
ЦИКЛ пока не конец файла Tovari
ПЕРЕЙТИ в рабочую область файла Write_off
УСТАНОВИТЬ фильтр с условием:
Spisaniya.date >= dn && Spisaniya.date <= dk &&
Spisaniya.id_name = коду текущего имени товара
Vprod = 0
ЦИКЛ пока не конец файла Spisaniya
Vprod = Vprod + Spisaniya.kolvo
К_Ц // с переходом на следующую запись
ДОБАВИТЬ строку в таблицу Report_Spisaniya
Report_ Spisaniya.id_group = Tovari.id_group
Report_ Spisaniya.id_tov = Tovari.id_tov
Report_ Spisaniya.kolvo = Vprod
ОТМЕНИТЬ фильтр
К_Ц // с переходом на следующую запись
ОТМЕНИТЬ фильтр
ЗАКРЫТЬ файлы Report_ Spisaniya, Spisaniya
КОНЕЦ_АЛГОРИТМА
Продолжение Рисунка 3.7
3.5 Контрольный пример
При запуске программы активируется диалоговое окно, представленное на рисунке 3.8, позволяющее идентифицировать пользователя. Если такой пользователь существует, то далее следует запуск главное окно системы, иначе выводится сообщение о том, что доступ запрещен и окно для ввода логина и пароля активируется снова.
Рисунок 3.8 – Экранная форма идентификации пользователя
Диалог системы и пользователя организован на основе меню. Меню системы представлено на рисунке 3.9.
Главное меню программы содержит пять основных разделов: «Документы», «Правка», «Справочники», «Отчёты», «Справка». Рассмотрим подробнее каждый из них.
В разделе «Документы» выделены следующие подразделы:
- «Поступления»;
- «Продажи»;
- «Списания»;
- «Инвентаризация».
Эти подразделы предназначены для ввода документов «Приходная накладная», «Расходная накладная», «Акт на списание» и «Инвентаризационная ведомость».
Рассмотрим их работу на примере подпункта меню «Расход».