Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Проектирование реализации операций бизнес-процесса «Складской учет» («Электротовары»)

Содержание:

ВВЕДЕНИЕ

В настоящее время использование информационных технологий прочно вошло в нашу жизнь в различных сферах, что неудивительно. Ведь использование компьютеров позволяет значительно увеличить не только скорость работы какого-либо объекта, но и поднять качество самой деятельности на новый уровень. Увеличение производительности компьютеров и одновременное уменьшение их стоимости позволило использовать вычислительные мощности ЭВМ для решения широкого спектра задач в различных сферах деятельности, практически любое рабочее место любого сотрудника в современной компании оборудовано персональным компьютером и необходимой оргтехникой. Такое повсеместное внедрение компьютеров в производственную деятельность обусловлено в первую очередь увеличением производительности как каждого отдельного сотрудника, так и общей производительности предприятия, а как известно, чем выше производительность, тем более конкурентно-способна компания.

Целью данного курсового проекта является автоматизация бизнес-процесса «Складской учет» в компании «Электротовары».

Для достижения поставленной цели необходимо решить следующий спектр задач:

  • изучить деятельности компании электротехника;
  • исследовать текущую организацию бизнес-процесса складского учета;
  • разработать информационное обеспечение задачи автоматизации;
  • разработать программное обеспечение задачи автоматизации;
  • продемонстрировать работу ИС на контрольном примере.

В качестве объекта исследования выступает компания ООО «Электротовары».

В качестве предмета исследования – бизнес-процесс складского учета.

1. ТЕХНИКО-ЭКОНОМИЧЕСКАЯ ХАРАКТЕРИСТИКА ПРЕДМЕТНОЙ ОБЛАСТИ И ПРЕДПРИЯТИЯ

1.1. Характеристика предприятия и его деятельности

Деятельность ООО «Электротовары» заключается в розничных продажах электротоваров различных групп: от настольных ламп до генераторов и бортовых компьютеров для автомобилей.

Магазин «Электротовары» занимает несколько помещений (склад товаров и торговый зал). У компании имеются договорные отношения с производителями, которые осуществляют поставку электротоваров и сопутствующей продукции на склад магазина.

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

Когда клиент приходит в магазин «Электротовары», все его взаимодействие осуществляется с менеджером торгового зала, который проводит консультации клиента по интересующим его вопросам, а также осуществляется продажу техники: операции с денежными средствами, отбивка чека и т.д. После оплаты товара клиент получает чек, на основании которого работники склада отгружают перечисленные в нем товарные позиции. Если товара на складе нет, то работник склада составляет заявку на его заказ и направляет данную заявку в отдел закупок.

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

В таблице 1 указаны основные технико-экономические показатели деятельности компании за первый квартал 2018 года.

Таблица 1 – Основные показатели деятельности компании

№ п\п

Наименование характеристики (показателя)

Значение показателя

1

Общий оборот компании, млн. руб

2,5

2

Количество заказов покупателей

1325

3

Количество сотрудников

18

1.2. Организационная структура управления предприятием

Организационную структуру предприятия можно представить в виде схемы, изображенной на рисунке 1.

Рисунок 1 – Организационно-штатная структура предприятия

Всего в структуре предприятия можно выделить пять основных отделов:

  • высшее руководство компании (директор компании);
  • отдел закупок: в него входит руководитель отдела и его заместитель
  • бухгалтерия: состоит из одного сотрудника – главного бухгалтера
  • склад предприятия: к данному отделу относится товаровед, кладовщик (или заведующий складом) и грузчики.
  • отдел продаж: самый многочисленный по количество сотрудников отдел. Во главе стоит старший менеджер по продажам, которому подчиняются менеджеры торгового зала и кредитные менеджеры.

1.3. Выбор комплекса задач автоматизации и характеристика существующих бизнес процессов

В качестве предмета исследования в рамках данного курсового проекта выступает организация бизнес-процесса «Складской учет». Данный процесс целиком выполняется работниками склада.

Для более подробного изучения организации бизнес-процесса складского учета в компании ООО «Электротехника» будет использован метод моделирования. В качестве основного похода к моделированию бизнес-процессов был выбран метод IDEF0.

Методология описания бизнес-процессов IDEF0 предполагает указание не только входов и выходов, но дополнительных входов. Всего в данном стандарте выделяют три типа входа: первый так и называется вход, второй – управлением, а третий – механизмами.

Стандарт IDEF0 регламентирует с помощью входа (первый тип входных данных) показывать объекты, которые преобразуются в данным бизнес-процессе, это могут информационные и материальные потоки. С помощью управления (второй тип) показывают объекты, которые управляют выполнением бизнес-процессам. С помощью механизмов (третий тип) необходимо показывать объекты, которые непосредственно осуществляют данные бизнес-процесс: сотрудники, технические средства, информационный системы. На выходе бизнес процесса показывают результат выполнения данного бизнес-процесса.

На первом этапе построения IDEF0 модели система представляется как единое целое. Основная цель данного этапа – выявить входные и выходные данные, а также механизмы и правила для данной системы. Диаграмма данного этапа называется контекстной. Контекстная диаграмма для бизнес-процесса «Складской учет» изображена на рисунке 2.

Рисунок 2 – Контекстная диаграмма

Входными данными для бизнес-процесса «Складской учет» выступают товары от поставщиков, счет-фактура и заказы покупателей. Выходными данными – списанные и отгруженные товары, заявка на покупку товаров у поставщика, акты о расхождении, о списании, акт приема-передачи и отчет: об отгрузках, о браке, о списаниях. Выполняют бизнес-процесс работники склада, руководствуясь регламентами организации складского учета в компании.

Следующий этап построения модели бизнес-процессов в нотации IDEF0 декомпозиция бизнес-процесса на составляющие (Рисунок 3).

Рисунок 3 – Диаграмма декомпозиции первого уровня

Бизнес-процесс «Складской учет» состоит из четыре составляющих:

  • прием товаров;
  • отгрузка товаров;
  • проверка товаров;
  • формирование отчетов.

Складской учет начинается с приема товаров от поставщиков на основании счет-фактур. Выходные данные данного подпроцесса – акт о расхождении и принятые товары. Следующий подпроцесс – отгрузка товаров. На основании заказов покупателей работники склада отгружают товары клиентам. Выходные данные: отгруженные товары, заявку на покупку товаров от поставщика (если товаров нет в наличии), акт приема передачи.

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

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

Каждый подпроцесс также может быть подвергнут дальнейшей декомпозиции. На рисунке 4 представлена диаграмма декомпозиции подпроцесса «Прием товаров».

Рисунок 4 – Диаграмма декомпозиции подпроцесса «Прием товаров»

При поступлении товаров от поставщика, работники склада проверяют фактическое наличие всех товаров, указанных в счет-фактуре. Если каких-либо товаров не хватает, то составляется акт о расхождении. После разгрузки товаров они размещаются на полках склада, в соответствии с правилами, указанными в регламенте работ склада.

Аналогичной декомпозиции был подвергнут подпроцесс «Отгрузка товаров» (Рисунок 5).

Рисунок 5 – Диаграмма декомпозиции подпроцесса «Отгрузка товаров»

Необходимость отгрузить товар со склада возникает после оформления заказа покупателя отделом продаж. Следует отметить, что отгрузка производится только при условии полной оплаты заказа. Сначала работники склада проверяют фактическое наличие необходимых клиенту товаров на складе, если таких товаров нет в наличии, то оформляется заявка на покупку товаров у поставщиков и передается в отдел закупа. Клиенту говорится ориентировочная дата поступления товара на склад. Если товар имеется в наличии, то он вынимается с полок склада и выдается клиенту. О факте передачи товаров от работников склада к клиенту составляется акт приема-передачи в двух экземплярах (один остается на складе, второй – у клиента).

На рисунке 6 изображена диаграммы декомпозиции подпроцесса «Проверка товаров».

Рисунок 6 – Диаграмма декомпозиции подпроцесса «Проверка товаров»

Для проверки товаров необходимо проверить внешний вид товара или его упаковки, а также удостовериться в том, у товара не истек срок годности.

На рисунке 7 изображена диаграмма декомпозиции подпроцесса «Формирование отчетов».

Все акты хранятся в папках для бумаг, поэтому сначала их необходимо отсортировать, затем подсчитать показатели, и уже после этого оформить отчеты в Microsoft Word.

Рисунок 7 – Диаграмма декомпозиции подпроцесса «Формирование отчетов»

Основным недостатком текущей организации бизнес процесса «Складской учет» в компании ООО «Электротехника» является большая вероятность появления ошибок из-за невнимательности и рассеянности сотрудников, т.к. большая часть рутинных и однообразных действий, связанных с оформлением отчетов и документов выполняется в полуручном режиме (с использованием программ офисного пакета Microsoft Office). Кроме того, отсутствие единого хранилища актуальной информации о наличии того или иного товара на складе компании значительно снижает качество обслуживания клиентов и производительность труда сотрудников склада.

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

Информационная система должна автоматизировать выполнение следующих функций:

  • хранение данных о товарах и их количестве на складе;
  • операции для управления данными товаров: добавление при приеме от поставщиков, уменьшение количества при выдаче и списывании товаров;
  • формирование документов: акт о расхождении, акт приема-передачи, акт о списании;
  • формирование отчетов о деятельности склада за заданный период: отчет о списаниях, отчет об отгрузках, отчет о браке.

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

2. ИНФОРМАЦИОННОЕ ОБЕСПЕЧЕНИЕ ЗАДАЧИ

2.1. Информационная модель и её описание

Информационной моделью называют схему движения входной, промежуточной и результативной информации и функций предметной области. Также с помощью информационной модели объясняется с помощью каких входных данных (документов) и какой нормативно-справочной информации происходит выполнение основных функций. Информационная модель проектируемой ИС представлена на рисунке 8.

Рисунок 8 – Информационная модель

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

Также пользователи могут добавлять вводить данные о поступлениях и выдаче товаров, формировать выходные документы: акт приема-передачи, акт о расхождении и акт о списании.

2.2. Используемые классификаторы и системы кодирования

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

Описание используемых классификаторов приведено в таблице 2.

Таблица 2 – Используемые идентификаторы

№ пп

Наименование кодируемого множества объектов

Значность кода

Мощность кода

Система кодирования

1

Идентификационный номер списания

4

9999

Порядковая

2

Идентификационный номер перемещения

4

9999

Порядковая

2

Идентификационный номер контрагента

4

9999

Порядковая

3

Идентификационный номер сотрудника

4

9999

Порядковая

4

Идентификационный номер товара

4

9999

Порядковая

5

Идентификационный номер категории

4

999

Порядковая

2.3. Характеристика нормативно-справочной, входной и оперативной информации

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

Таблица 3 – Справочники информационной системы

№ пп

Название справочника

Ответственный за ведение

Средний объём справочника в записях

Среднюю частоту актуализации

Средний объем актуализации, %

1

Пользователи

Заведующий складом

2

1 раз в полгода

50

2

Контрагенты

Заведующий складом

10

1 раз в месяц

10

3

Товары

Заведующий складом

1000

1 раз в неделю

10

4

Категории

Заведующий складом

10

1 раз в месяц

10

За ведение всех справочников отвечает заведующий складом, для каждого вида справочника своя частота актуализации и средний объем актуализации.

Реквизитный состав каждого справочника представлен в виде таблицы 4.

Таблица 4 – Реквизитный состав справочников информационной системы

№ п/п

Наименование справочника

Перечень реквизитов

1

Пользователи

ФИО пользователя;

Логин;

Пароль;

Телефон;

Электронная почта;

2

Контрагенты

Наименование

Телефон

Электронная почта

3

Товары

Наименование

Описание

Единица измерения

4

Категории

Наименование

Редактирование и ввод новых записей во все справочники осуществляется с помощью специальных форм.

На рисунке 9 изображен макет формы для работы с записями справочника «Пользователи».

Рисунок 9 – Макет формы Пользователь

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

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

Макеты форм для работы с записями других справочников имеют аналогичный вид (Рисунок 10-12).

Рисунок 10 – Макет формы Контрагент

Рисунок 11 – Макет формы Товар

Рисунок 12 – Макет формы Категория

В качестве входных данных для информационной системы выступают данные о перемещениях (поступлениях и выдачи) товаров, а также об их списаниях. Эти данные вводятся в ИС с помощью специальных форм. Макет формы для ввода данных списания представлен на рисунке 13, а формы для работы с перемещением – на рисунке 14.

Рисунок 13 – Макет формы для добавления списания

Рисунок 14 – Макет формы для добавления перемещения

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

2.4. Характеристика результатной информации

В качестве выходных данных выступают акт приемки/передачи и акт о расхождении.

Подробное описание выходных данных в таблице 5.

Таблица 5 – Описание результатной информации

Наименование

Акт приемки/передачи

Акт о списании

Акт о расхождении

Реквизиты

Номер перемещения

Тип перемещения

Наименование контрагента

Список товаров

Количество товаров

Количество принятых/отгруженных товаров

Дата формирования

Номер списания

Товары в списании

Количество списанных товаров

Комментарий о списании

Дата формирования

Номер перемещения

Товары с расхождениями

Количество расхождения

Комментарий о расхождении

Дата формирования

Таблицы, на основе которых формируется

Перемещения

Товары

Категории товаров

Контрагенты

Списания

Товары

Категории товаров

Перемещения

Товары

Категории товаров

Контрагенты

Частота формирования

По мере необходимости

По мере необходимости

По мере необходимости

Способ доставки

Файл в формате Excel

Файл в формате Excel

Файл в формате Excel

3. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ЗАДАЧИ

3.1. Общие положения (дерево функций и сценарий диалога)

Базовый набор функций разработанной информационной системы можно изобразить в виде дерева, изображенного на рисунке 15.

Рисунок 15 – Дерево функций

Выполнение функций разработанной информационной системы осуществляется с помощью ведения диалога с пользователем. То есть Пользователь информационной системы выполняет какие-то действия, а программа соответствующим образом на них реагирует. Сценарий диалога с пользователем представлен на рисунке 16.

Рисунок 16 – Сценарий диалога

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

3.2. Характеристика базы данных

В качестве системы управления базой данный для разрабатываемой информационной системы была выбрана СУБД Microsoft SQL Server.

Для хранения всех необходимых данных была спроектирована и создана база данных, состоящая из 8 таблиц. ER-модель спроектированной базы данных представлена на рисунке 17.

Рисунок 17 – ER-модель базы данных

Описание всех таблиц базы данных представлено в таблицах 6-13.

Таблица 6 – Таблица users

Наименование поля

Идентификатор поля

Тип поля

Длина поля

Прочее

Код пользователя

id

int

4

AI

ФИО пользователя

fio

varchar

120

Пароль пользователя (в зашифрованном виде)

password

varchar

120

Email пользователя

email

varchar

120

Телефон пользователя

phone

varchar

120

Таблица 7 – Таблица contragent

Наименование поля

Идентификатор поля

Тип поля

Длина поля

Прочее

Код контрагента

id

int

4

AI

Наименование

caption

varchar

120

Телефон

phone

varchar

120

Адрес

address

varchar

120

Таблица 8 – Таблица product

Наименование поля

Идентификатор поля

Тип поля

Длина поля

Прочее

Код товара

id

int

4

AI

Наименование

caption

varchar

120

Описание

description

text

65655

Единица измерения

edizm

varchar

120

Код категории

categoryid

int

4

FK

Таблица 9 – Таблица category

Наименование поля

Идентификатор поля

Тип поля

Длина поля

Прочее

Код категории

id

int

4

AI

Наименование

caption

varchar

120

Таблица 10 – Таблица motion_product

Наименование поля

Идентификатор поля

Тип поля

Длина поля

Прочее

Код перемещения

orderid

int

4

FK

Код товара

productid

int

4

FK

Количество в заказе

ordercount

int

4

Количество принято

factcount

int

4

Комментарий

comment

varchar

255

Таблица 11 –Таблица motion

Наименование поля

Идентификатор поля

Тип поля

Длина поля

Прочее

Код перемещения

id

int

4

AI

Дата создания

createdate

datetime

10

Сумма заказа

summa

float

4

Код контрагента

contagentid

int

4

FK

Код сотрудника

userid

int

4

FK

Таблица 12 – Таблица spisan_product

Наименование поля

Идентификатор поля

Тип поля

Длина поля

Прочее

Код списания

orderid

int

4

FK

Код товара

productid

int

4

FK

Количество

count

int

4

Комментарий

comment

varchar

255

Таблица 13 –Таблица spisan

Наименование поля

Идентификатор поля

Тип поля

Длина поля

Прочее

Код списания

id

int

4

AI

Дата создания

createdate

datetime

10

Код сотрудника

userid

int

4

FK

3.3. Структурная схема пакета (дерево вызова программных модулей)

Для разработки информационной системы использовался язык Delphi 7.

Проект программы состоит из пяти модулей:

  • модуль Main.pas (главный модуль);
  • модуль Motion.pas (работа с перемещениями);
  • модуль Spisan.pas (работа со списаниями);
  • модуль Connect.pas (настройки соединения с базой данных);
  • модуль Sprav.pas (работа со справочниками).

Подробное описание модулей представлено в виде таблицы 14.

Таблица 14 – Описание модулей системы

№ п/п

Наименование модуля

Функции модуля

1

модуль Main.pas

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

2

модуль Motion.pas

в данном модуле запрограммированы процедуры для работы с перемещениями (добавление нового, редактирование добавленного ранее, формирование входных документов)

3

модуль Spisan.pas

в данном модуле запрограммированы процедуры для работы со списаниями товаров (добавление нового, редактирование добавленного ранее, формирование входных документов)

4

модуль Connect.pas

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

5

модуль Sprav.pas

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

Дерево вызова программных модулей приведено на рисунке 18.

Рисунок 18 – Дерево вызова программных модулей

3.4. Описание программных модулей

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

Данная технология связи с хранилищами данных завоевала особую популярность у разработчиков, благодаря своей универсальности – базовый набор интерфейсов OLE DB имеется в каждой современной операционной системе Windows. Поэтому для обеспечения доступа приложения к данным достаточно лишь правильно указать провайдер соединения ADO, после этого можно переносить созданный программные продукт на любой компьютер, где имеется требуемая база данных и, конечно, установленная ADO.

В палитре компонентов Delphi есть отдельная вкладка ADO, которая содержит набор компонентов, позволяющих создавать полноценные приложения БД, обращающиеся к данным через данную технологию.

Технология ADO обеспечивает универсальный доступ к хранилищам (источникам) данных из приложений БД. Такую возможность предоставляют функции набора интерфейсов, созданные на основе общей модели объектов СОМ и описанные в спецификации OLE DB.

Технология ADO и интерфейсы OLE DB обеспечивают для приложений единый способ доступа к хранилищам (источникам) данных разных типов. То есть, приложение, использующее в своей работе ADO может использовать в качестве источника любое хранилище, поддерживающее ADO, будь это локальная СУБД или серверная, или даже электронные таблицы. Запрос SQL, направленный любому источнику данных через ADO, будет выполнен.

OLE DB по сути представляет собой набор специализированных объектов СОМ, инкапсулирующих стандартные функции обработки данных, и специализированные функции конкретных источников данных и интерфейсов, обеспечивающих передачу данных между объектами.

Согласно терминологии ADO, любой источник данных (база данных, электронная таблица, файл) называется хранилищем данных, с которым при помощи провайдера данных взаимодействует приложение. Минимальный набор компонентов приложения может включать объект соединения, объект набора данных, объект процессора запросов.

В результате приложение обращается не прямо к источнику данных, а к объекту OLE DB, который "умеет" представить данные (например, из файла электронной почты) в виде таблицы БД или результата выполнения запроса SQL.

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

Такая архитектура позволяет сделать набор объектов и интерфейсов открытым и расширяемым. Набор объектов и соответствующий провайдер может быть создан для любого хранилища данных без внесения изменений в исходную структуру ADO. При этом существенно расширяется само понятие данных – ведь можно разработать набор объектов и интерфейсов и для нетрадиционных табличных данных. Например, это могут быть графические данные геоинформационных систем, древовидные структуры из системных реестров, данные CASE-инструментов и т. д.

Так как технология ADO основана на стандартных интерфейсах СОМ, которые являются системным механизмом Windows, это сокращает общий объем работающего программного кода и позволяет распространять приложения БД без вспомогательных программ и библиотек.

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

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

  • Запросы на выборку;
  • Запросы на добавление данных;
  • Запросы на обновление данных.

Для получения практически любых данных любого количества таблиц базы данных используется оператор запроса SELECT.

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

Для обновления данных, хранящихся в базе данных используется оператор UPDATE, для добавления новых – оператор INSERT.

Следует отметить, что технология ADO позволяет писать запрос в объекте AdoQuery на классическом языке SQL, без учета особенностей СУБД, используемой в качестве хранилища данных. Это является значимым преимуществом, т.к. позволяет легко переводить программные средства с одной СУБД на другую, в зависимости от условий эксплуатации и требований к ней.

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

На рисунке 19 приведена блок-схема авторизации пользователей в системе.

Рисунок 19 – Блок-схема алгоритма авторизации пользователей

Исходный код всех процедур с комментариями представлен в приложении.

4. КОНТРОЛЬНЫЙ ПРИМЕР РЕАЛИЗАЦИИ И ЕГО ОПИСАНИЕ

После запуска программы открывается форма авторизации, в которой пользователю необходимо выбрать себя из выпадающего списка и ввести пароль (Рисунок 20).

Рисунок 20 – Форма авторизации

После успешного прохождения авторизации пользователю отображается главное окно программы, внутри которого будут открываться все формы пользовательского интерфейса. Доступ к ним выполняется с помощью главного меню (Рисунок 21).

Рисунок 21 – Главное меню

Чтобы добавить новое перемещение нужно выбрать пункт меню «Добавить перемещение», откроется форма добавления перемещения (Рисунок 22).

Рисунок 22 – Форма добавления перемещения

Для открытия формы работы с перемещением необходимо дважды щелкнуть по нему в списке заказов на главной форме. Откроется форма работы с перемещением, на которой напротив всех товаров нужно проставить фактически принятое/отгруженное количество товара. Если это количество отличается от количество, которое нужно приять/отгрузить, то необходимо вписать комментарий. После того, как по каждому товару будет прописано фактическое количество, нужно нажать на кнопку «Сохранить», станут активными кнопки формирования акта приемки и акта о расхождении.

Рисунок 23 – Форма работы с перемещением

Аналогичным образом стоится форма работы со списаниями: необходимо указать количество списываемого товара и комментарий к нему (Рисунок 24).

Рисунок 24 – Форма работы со списанием

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

Рисунок 25 – Форма работы со справочником

ЗАКЛЮЧЕНИЕ

В ходе проделанной работы были решены следующие задачи:

  • Была проанализирована деятельность компании «Электротовары» и е организационная структура;
  • Был изучен бизнес-процесс «Складской учет» методом моделирования по методологии IDEF0, были выделены недостатки, связанные с низкой автоматизацией данного процесса;
  • Было разработано информационное обеспечение задачи автоматизации складского учета: составлена информационная модели, приведено описание нормативно-справочной, входной и результатной информации;
  • Была разработана база данных и программные модули, реализующие работу ИС.
  • Был описан контрольный пример реализации проекта.

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

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

  • ГОСТ 2.105 – 95. Общие требования к текстовым документам.
  • ГОСТ 7.32 – 2001. Отчет по научно-исследовательской работе. Структура и правила оформления.
  • ГОСТ 7.82-2001. Библиографическое описание электронных ресурсов.
  • ГОСТ 24.702-85 Эффективность автоматизированных систем управления.
  • ГОСТ Р 7.0.5-2008. Библиографическая запись. Библиографическое описание.
  • Агальцов В.П. Базы данных. В 2-х т. Т. 2. Распределенные и удаленные базы данных: Учебник. М.: ИД ФОРУМ, НИЦ ИНФРА-М, 2013. 272 с.
  • Гагарина Л.Г. Разработка и эксплуатация автоматизированных информационных систем: учебное пособие. М.: ИД «ФОРУМ»: ИНФРА-М, 2013. 384 с.
  • Горбаченко В.И., Убиенных Г.Ф. Бобрышева Г.В. Проектирование информационных систем с СА Erwin Modeling Suite 7.3. Пенза: Изд-во ПГУ, 2012, 154 c.
  1. Зуев Е.А. Программирование на языке Delphi 6.0,7.0. – М.: Радио и связь, Веста, 2016. - 186 с.
  • Калмыков Ю.В. Учебно-методичское пособие по обучению программированию на языке Delphi для школ, 2014. – 100 с.
  • Карпова И.П. Базы данных: Учебное пособие. – Спб.: Питер, 2013. – 240 с.
  • Кузин А.В., Левонисова С.В. Базы данных: Учебное пособие для студ. высш. учеб. заведений. – М.: ИЦ Академия, 2012. – 320с.
  • Культин Никита – Основы программирования в Delphi, 2015 – 232 с.
  • Маклаков С. В. Моделирование бизнес-процессов с AllFusion Process Modeler (BPwin 4.1) / С.В. Маклаков. – М. : ДИАЛОГ-МИФИ, 2013. – 340 c.
  • Маклаков С.В. Создание информационных систем с AllFusion Modeling Suite / С.В. Маклаков. – М. : ДИАЛОГ-МИФИ, 2015. – 512 c.
  • Тельнова, Ю.Ф. Проектирование экономических информационных систем: учеб. / под ред. Ю. Ф. Тельнова. М. : Горячая линия, 2015 — 345 c.
  • Фуфаев Д.Э. Фуфаев Э.В. Разработка и эксплуатация автоматизированных информационных систем: учебник дя студ. М.: Издательский центр «Академия», 2013. 304 с.
  • Шаньгин В.Ф. Информационная безопасность компьютерных системы и сетей: Учебное пособие. М.: ИД ФОРУМ, НИЦ ИНФРА-М, 2013. 416 с.

ПРИЛОЖЕНИЕ
Исходный код программы

unit Main;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Menus, DB, ADODB, XPMan, ComObj;

type

TForm1 = class(TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

N8: TMenuItem;

N9: TMenuItem;

N10: TMenuItem;

ADOConnection1: TADOConnection;

Auto: TADOTable;

driver: TADOTable;

gsm: TADOTable;

gsmauto: TADOTable;

marka: TADOTable;

postupgsm: TADOTable;

trip: TADOTable;

vidachagsm: TADOTable;

Autoid: TAutoIncField;

Autogosnomer: TWideStringField;

Autocolor: TWideStringField;

Autodriverid: TIntegerField;

Automarkaid: TIntegerField;

AutomarkaL: TStringField;

AutodriverL: TStringField;

gsmid: TAutoIncField;

gsmcaption: TWideStringField;

gsmostatok: TIntegerField;

driverid: TAutoIncField;

driverfio: TWideStringField;

driverphone: TWideStringField;

markaid: TAutoIncField;

markacaption: TWideStringField;

markamotor: TFloatField;

XPManifest1: TXPManifest;

N11: TMenuItem;

N12: TMenuItem;

ADOQuery1: TADOQuery;

gsmautoid: TAutoIncField;

gsmautonorma: TFloatField;

gsmautoautoid: TIntegerField;

gsmautogsmid: TIntegerField;

gsmautoautoL: TStringField;

gsmautogsmL: TStringField;

N13: TMenuItem;

procedure N2Click(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure N5Click(Sender: TObject);

procedure N7Click(Sender: TObject);

procedure N8Click(Sender: TObject);

procedure N9Click(Sender: TObject);

procedure N11Click(Sender: TObject);

procedure N12Click(Sender: TObject);

procedure CreateSpravForm(const childName, id: string;

table: TDataset);

procedure CreateListForm(mode: string);

procedure CreateOtchetForm(const childName: String; p: integer);

procedure Othet(const Data: TADOQUERY; Otchetname: string);

procedure N13Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

Uses Sprav, List, ListTrip, Otchet;

{$R *.dfm}

//создание формы для работы со справочником

procedure TForm1.CreateSpravForm(const childName, id : string; table: TDataset);

var

Child: TForm3;

i,k :integer;

f : boolean;

begin

f:=False; //влаг-ложь

k:=0;

for i:=0 to Form1.MDIChildCount-1 do

begin //проверяем создан ли экземнляр такого окна

if (Form1.MDIChildren[i] is TForm3) then

begin

f:=True;

k:=i;

end;

end;

if (f) then Form1.MDIChildren[k].close; //переносим его вперед

Child := TForm3.Create(Application);

Child.Caption := childName; //задаем название

Child.DBGrid1.DataSource.DataSet:=table; //задаем таблицу справочник, с которой будем работать

table.active:=true; //делаем таблицу активной

Child.Setgridcolumnwidths; //выравниваем ширину столбцов

Child.Label1.Caption:=id; //передаем ид

end;

//создание формы со списком поступлений/расходов

procedure TForm1.CreateListForm(mode :string);

var

Child: TForm2;

i,k :integer;

f : boolean;

begin

f:=False; //влаг-ложь

k:=0;

for i:=0 to Form1.MDIChildCount-1 do //проверяем создан ли экземнляр такого окна

if (Form1.MDIChildren[i] is TForm2) then

begin

f:=True;

k:=i;

end;

if (f) then //если создан, то

Form1.MDIChildren[k].close; //закрываем

Child := TForm2.Create(Application);

Child.DBLookupComboBox1.ListSource.DataSet.Open;

if mode='Поступления' then

begin

With Child.ADOQuery1 do

begin

close;

SQL.Clear;

SQL.Add('SELECT postupgsm.id AS Код, postupgsm.postupdate AS [Дата поступления], gsm.caption AS ГСМ, postupgsm.quantity As [Количество]' );

SQL.Add(' FROM gsm INNER JOIN postupgsm ON gsm.id = postupgsm.gsmid WHERE 1=1');

SQL.Add(' ');

SQL.Add(' ');

SQL.Add(' ORDER BY postupdate DESC');

open;

end;

end

else

begin

With Child.ADOQuery1 do

begin

close;

SQL.Clear;

SQL.Add('SELECT vidachagsm.id As Код, vidachagsm.vidachadate AS [Дата выдачи], gsm.caption AS ГСМ, vidachagsm.quantity AS Количество, marka.caption AS Авто, Auto.gosnomer AS Номер ');

SQL.Add('FROM gsm INNER JOIN (marka INNER JOIN (vidachagsm INNER JOIN Auto ON vidachagsm.autoid = Auto.id) ON marka.id = Auto.markaid) ON gsm.id = vidachagsm.gsmid WHERE 1=1 ');

SQL.Add(' ');

SQL.Add(' ');

SQL.Add('ORDER BY vidachagsm.vidachadate DESC');

open;

end;

end;

Child.Caption:=mode;

Child.Setgridcolumnwidths;

end;

//процедура для создания формы для ввода параметров отчета

procedure TForm1.CreateOtchetForm(const childName:String; p: integer); //параметры - название формы и индекс отчета

var

Child: TForm9;

i,k :integer;

f : boolean;

begin

f:=False; //влаг-ложь

k:=0;

for i:=0 to Form1.MDIChildCount-1 do //проверяем создан ли экземнляр такого окна

if (Form1.MDIChildren[i] is TForm9) then

begin

f:=True;

k:=i;

end;

if (f) then //если создан, то

Form1.MDIChildren[k].Close; //переносим его вперед

Child := TForm9.Create(Application);

Child.Caption := childName; //задаем название формы

Child.DateTimePicker1.DateTime:=StrToDateTime(DateToStr(now-30)+ ' 00:00:01'); //устанавливаем дату на 30 дней меньше текущей

Child.DateTimePicker2.datetime:=StrToDateTime(DateToStr(now)+ ' 23:59:59'); //устанавливаем текущую дату

Child.Label3.Caption:=IntTOStr(p); //индекс отчета

end;

procedure TForm1.N3Click(Sender: TObject);

begin

CreateSpravForm('Список контрагентов','',Form1.gsm); //Вызов процедуры для работы со Справочником контрагенты

end;

procedure TForm1.N4Click(Sender: TObject);

begin

CreateSpravForm('Список пользователей','',Form1.driver); //Вызов процедуры для работы со Справочником пользователей

end;

procedure TForm1.N5Click(Sender: TObject);

begin

CreateSpravForm('Список товаров','',Form1.auto); //Вызов процедуры для работы со Справочником товаров

end;

procedure TForm1.N7Click(Sender: TObject);

begin

CreateListForm('Поступления');

end;

procedure TForm1.N8Click(Sender: TObject);

begin

CreateListForm('Выдачи');

end;

procedure TForm1.N9Click(Sender: TObject);

var

Child: TForm4;

i,k :integer;

f : boolean;

begin

f:=False; //влаг-ложь

k:=0;

for i:=0 to Form1.MDIChildCount-1 do //проверяем создан ли экземнляр такого окна

if (Form1.MDIChildren[i] is TForm4) then

begin

f:=True;

k:=i;

end;

if (f) then //если создан, то

Form1.MDIChildren[k].close; //закрываем

Child := TForm4.Create(Application);

Child.DBLookupComboBox1.ListSource.DataSet.Open;

With Child.ADOQuery1 do

begin

close;

SQL.Clear;

SQL.Add('SELECT gsm.caption AS ГСМ, postupgsm.postupdate AS [Дата поступления], postupgsm.quantity As [Количество]' );

SQL.Add(' FROM gsm INNER JOIN postupgsm ON gsm.id = postupgsm.gsmid WHERE 1=1');

SQL.Add(' ');

SQL.Add(' ');

SQL.Add(' ORDER BY postupdate DESC');

open;

end;

Child.Caption:='Поездки';

Child.Setgridcolumnwidths;

end;

Function IndToCol(const ind:integer):String; //функция для перевода номер столбца Excel в его текстовой индекс

begin

case ind of

0: result:='A';

1: result:='B';

2: result:='C';

3: result:='D';

4: result:='E';

5: result:='F';

6: result:='G';

7: result:='H';

8: result:='J';

9: result:='K';

10: result:='L';

11: result:='M';

12: result:='N';

13: result:='O';

14: result:='P';

15: result:='Q';

16: result:='R';

17: result:='S';

18: result:='T';

19: result:='U';

end;

end;

Procedure TForm1.Othet(const Data: TADOQUERY; Otchetname: string); //процедура для выгрузки отчета в Excel на основании запроса к БД

var

Excel:Variant;

i,j,k:integer;

begin

//Обновляем данные

Data.close;

Data.open;

Excel := CreateOleObject('Excel.Application');

//Открываем его для работы

Excel.Workbooks.Add;

//задаем имя отчета

Excel.Range['A1']:=OtchetName;

//Задаем шапку таблицы

For j:=0 to Data.FieldCount-1 do

begin

Excel.Range[IndToCol(j+1)+'2']:=Data.Fields[j].FullName;

end;

//передаем результаты запроса в виде таблицы

if Data.RecordCount<>0 then

begin

k:=1;

For j:=0 to Data.FieldCount-1 do

begin

Data.First;

for i:=1 to Data.RecordCount do

begin

Excel.range['A'+IntTOStr(i+2)]:=IntTOStr(i);

Excel.Range[indToCol(j+1)+IntToStr(i+2) ]:=Data.Fields[j].Value;

Data.Next;

end;

end;

//задаем границы таблицы

Excel.Range['A2:'+indToCol(j)+IntTOStr(i+1)].Borders[5].LineStyle:= 0;

Excel.Range['A2:'+indToCol(j)+IntTOStr(i+1)].Borders[6].LineStyle:= 0;

Excel.Range['A2:'+indToCol(j)+IntTOStr(i+1)].Borders[7].LineStyle:= 1;

Excel.Range['A2:'+indToCol(j)+IntTOStr(i+1)].Borders[8].LineStyle:= 1;

Excel.Range['A2:'+indToCol(j)+IntTOStr(i+1)].Borders[9].LineStyle:= 1;

Excel.Range['A2:'+indToCol(j)+IntTOStr(i+1)].Borders[10].LineStyle:= 1;

Excel.Range['A2:'+indToCol(j)+IntTOStr(i+1)].Borders[11].LineStyle:= 1;

Excel.Range['A2:'+indToCol(j)+IntTOStr(i+1)].Borders[12].LineStyle:= 1;

//строка итого

Excel.Range[indToCol(j-1)+IntTOStr(i+2)]:='ИТОГО';

Excel.Range[indToCol(j)+IntTOStr(i+2)].Value:='=SUM('+indToCol(j)+'3:'+indToCol(j)+IntTOStr(i+1)+')';

if j<2 then j:=2;

//Задаем дату формирования отчета

Excel.Range[indToCol(j-1)+IntTOStr(i+4)].Value:='Отчет сформирован:';

Excel.Range[indToCol(j)+IntTOStr(i+4)].Value:=dateToStr(Now);

Excel.Range['A2:'+indToCol(j)+IntTOStr(i+4)].Columns.AutoFit;

end;

//отображаем отчет

Excel.visible:=true;

end;

procedure TForm1.N11Click(Sender: TObject);

begin

CreateOtchetForm('Задайте интервал',1);

end;

procedure TForm1.N12Click(Sender: TObject);

begin

CreateOtchetForm('Задайте интервал',2);

end;

procedure TForm1.N13Click(Sender: TObject);

begin

CreateSpravForm('Категории','',Form1.gsmauto); end;

end.

unit Sprav;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons, Grids, DBGrids, ExtCtrls, DB, Menus, ADODB;

type

TForm3 = class(TForm)

Panel1: TPanel;

Panel2: TPanel;

DBGrid1: TDBGrid;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

BitBtn3: TBitBtn;

BitBtn4: TBitBtn;

Label1: TLabel;

DataSource1: TDataSource;

PopupMenu1: TPopupMenu;

N1: TMenuItem;

ADOQuery1: TADOQuery;

N2: TMenuItem;

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure FormResize(Sender: TObject);

procedure Setgridcolumnwidths;

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn3Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

procedure BitBtn4Click(Sender: TObject);

procedure N1Click(Sender: TObject);

procedure N2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

implementation

Uses

Main;

{$R *.dfm}

Procedure TForm3.Setgridcolumnwidths;

var

i,x,dx:integer;

begin

if DbGrid1.Columns.Count=1 then x:=1 else x:=Round((DbGrid1.width-80)/(DbGrid1.Columns.Count-1));

DbGrid1.Columns[0].Width:=40;

For i:=1 to DbGrid1.Columns.Count-1 do

begin

DbGrid1.Columns[i].Width:=x;

end;

X:=Round(Panel2.Width/2);

dx:=30;

BitBtn1.Left:=x-178-2*dx;

BitBtn2.Left:=x-89-dx;

BitBtn3.Left:=x;

BitBtn4.Left:=x+89+dx;

end;

procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);

begin

action:=cafree;

end;

procedure TForm3.FormResize(Sender: TObject);

begin

Setgridcolumnwidths;

end;

procedure TForm3.BitBtn1Click(Sender: TObject);

begin

DbGrid1.DataSource.DataSet.Insert;

end;

procedure TForm3.BitBtn3Click(Sender: TObject);

begin

DbGrid1.DataSource.DataSet.Edit;

end;

procedure TForm3.BitBtn2Click(Sender: TObject);

begin

If MessageBox(Handle,PChar('Удалить запись?'),PChar('Подтверждение'),MB_ICONINFORMATION+MB_YESNO+MB_DEFBUTTON2)=IdYes

then Dbgrid1.DataSource.DataSet.Delete;

end;

procedure TForm3.BitBtn4Click(Sender: TObject);

begin

DbGrid1.DataSource.DataSet.close;

DbGrid1.DataSource.DataSet.Open;

Setgridcolumnwidths;

end;

end.