ПРОЕКТИРОВАНИЕ АИС «КУЛИНАРИЯ» - Студенческий научный форум

X Международная студенческая научная конференция Студенческий научный форум - 2018

ПРОЕКТИРОВАНИЕ АИС «КУЛИНАРИЯ»

Ткач А.О. 1
1НИУ БелГУ, кафедра информационных и робототехнических систем, направление подготовки Информационные системы и технологии, 3 курс
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF
ВВЕДЕНИЕ

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

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

  1. возможность оперативного контроля за достоверностью информации;

  2. уменьшение числа возможных ошибок при генерировании производных данных;

  3. возможность быстрого доступа к любым данным;

  4. возможность быстрого формирования отчетов;

  5. экономия трудозатрат и затрат времени на обработку информации.

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

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

Данная тема курсовой работы является актуальной, так как в настоящее время мы наблюдаем интенсивное развитие информационных систем, технологий и программных средств. Современные информационные технологии помогают организовать работу кулинарии, сделать её гораздо проще и быстрее. Одним из важнейших условий обеспечения эффективного функционирования любой организации является наличие развитой автоматизированной информационной системы (АИС).

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

Цель данной курсовой работы заключается в повышении эффективности процесса оказания услуг за счёт проектирования и разработки АИС «Кулинария», методологии описания проекта будущей информационной системы, автоматизирующей процесс обслуживания посетителей кулинарии.

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

  1. показатели затрат ресурсов: времени (длительность, производительность, скорость оформления и выполнения заказов); материальные (расходы средств, материалов, бюджеты подразделений, дебиторская и кредиторская задолженности, объемы «замороженного капитала в виде складских запасов сырья или неликвидов»).

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

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

  4. затраты на обучение, подготовку, повышение квалификации и аттестацию персонала.

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

  1. определить задачи, которые будет решать информационная система;

  2. разработать техническое задание к ИС;

  3. разработать структурно – функциональные схемы;

  4. выбрать СУБД;

  5. спроектировать и разработать базу данных;

  6. создать приложение для Windows в инструментальной среде разработки Visual Studio 2015.

Курсовая работа выполнена на 50 страницах основного текста, содержит 25 рисунков, 2 таблицы и 1 приложение.

1 Анализ предметной области 1.1 Определение задач, решаемых информационной системой

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

  1. осуществлять добавление, изменение и удаление необходимой информации;

  2. просматривать информацию о клиентах и их заказах, а также полную информацию о сотрудниках, их должностях и выполняемыми ими заказы;

  3. осуществлять поиск данных для более удобного представления их пользователю;

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

  5. производить генерирование отчетов.

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

1.2 Системный анализ предметной области

БД представляет структуру и совокупность организации, отношений, правил и процессов. Перед проектированием структур и правил базы данных, необходимо провести системный анализ проблемы. Следует особенно подчеркнуть важность описания и анализа. Анализ логических данных является интерактивным процессом детализации и поиска сути во множестве входных данных, задач и выходных данных, которые должны быть реализованы в базе данных [8].

В рамках данной курсовой работы разрабатывается база данных «Cookery», которая станет основой для будущей информационной системы. Было выбрано 10 сущностей:

  1. «Клиенты» – содержит информацию о клиентах;

  2. «Кондитерские изделия» – содержит сведения о кондитерских изделиях;

  3. «Категории изделий» – содержит список категорий изделий;

  4. «Заказ» – отображает информацию заказа;

  5. «Тематика» – отображает различные варианты тематического оформления изделий;

  6. «Детализация заказа» – содержит информацию о заказе и заказанной продукции;

  7. «Сотрудники» – содержит данные о сотрудниках и о занимаемых ими должностях;

  8. «Физические лица» – содержит данные о работниках;

  9. «Должность» – содержит данные о должностях кулинарии;

  10. «Рейтинг» – включает в себя рейтинг сотрудников, для определения % премиальной доплаты.

Для данных сущностей выбрана связь один–ко–многим. Это связь между следующими сущностями: «Категории изделий» и «Кондитерские изделия»; «Кондитерские изделия» и «Детализация заказа»; «Детализация заказа» и «Заказ»; «Заказ» и «Клиенты»; «Заказ» и «Тематика»; «Заказ» и «Сотрудники»; «Сотрудники» и «Физические лица»; «Сотрудники» и «Должность»; «Сотрудники» и «Рейтинг».

1.3 Построение структурной модели

Стандарт описания бизнес – процессов DFD – Data Flow Diagram переводится как диаграмма потоков данных и используется для описания процессов верхнего уровня и для описания реально существующих в организации потоков данных [6].

Для построения диаграммы использовалось AllFusion Process Modeler r7 (BPwin) – CASE – средство для описания бизнес – процессов [11].

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

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

Для каждой подсистемы, присутствующей на контекстных диаграммах, выполняется ее детализация при помощи диаграммы DFD. Каждый процесс, в свою очередь, может быть детализирован при помощи отдельной диаграммы или миниспецификации. На рисунке 2 показана декомпозиция контекстной диаграммы, содержащая основные блоки, которые далее будут декомпозированы, а также хранилища (список заказов и список кондитеров).

Рисунок 2 – Декомпозиция контекстной диаграммы

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

  1. «Получить информацию от клиента»;

  2. «Предоставить информацию клиенту» – на основании заказа клиента предоставить информацию о кондитерских изделиях, на которых специализируется данная кулинария;

  3. «Согласовать заказ» – согласовать сроки выполнения и оплату;

  4. «Оформить заказ» – процесс добавления заказа в базу данных;

На рисунке 4 показан процесс получения продуктов о поставщиков, необходимых для выполнения заказа. На рисунках 5 и 6 можно увидеть процессы выполнения заказа и его выдачи клиенту соответственно.

Рисунок 3 – Диаграмма декомпозиции «Оформить заказ от клиента»

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

Рисунок 5 – Диаграмма декомпозиции «Выполнить заказ»

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

Таким образом, в результате была смоделирована информационная система «Кулинария», используя нотацию DFD, что позволило понять логику и взаимодействие процессов предприятия. Моделирование началось с наиболее абстрактного уровня описания системы в целом. Модель представляет собой совокупность иерархически упорядоченных и взаимосвязанных диаграмм. [9]

Также моделируемая система рассматривается как произвольное подмножество Вселенной. Произвольное потому, что, во – первых, мы сами умозрительно определяем, будет ли некий объект компонентом системы, или мы будем его рассматривать как внешнее воздействие, и, во – вторых, оно зависит от точки зрения на систему. Система имеет границу, которая отделяет ее от остальной Вселенной. Взаимодействие системы с окружающим миром описывается как вход (нечто, что перерабатывается системой), выход (результат деятельности системы), управление (стратегии и процедуры, под управлением которых производится работа) и механизм (ресурсы, необходимые для проведения работы). Находясь под управлением, система преобразует входы в выходы, используя механизмы [7].

Выше были описаны основные принципы моделирования бизнес – процессов в методологии IDEF0. Данные диаграммы расположены в Приложении.

1.4 Инфологическое и даталогическое проектирование модели

На этапе инфологического проектирования была создана модель «сущность–связь» («Entity–Relationship») будущей базы данных, которая показана на рисунке 7.

Рисунок 7 – Логическая ER–модель «Кулинария»

Важной частью даталогического проектирования является нормализация – разделение групп элементов данных с целью установления основных отношений, уменьшения избыточности и объединения связанных элементов, данных в структуры, которыми можно эффективно манипулировать. Использование ненормализованных БД может привести к нарушению целостности базы данных. Задачей на данном этапе проектирования является приведение БД к третьей нормальной форме, так как в этом случае не будет нарушена целостность данных, а дальнейшая нормализация до четвертой нормальной формы, как показывает практика, не является необходимой. Для реализации нормализации БД, необходимо последовательно привести базу данных от первой нормальной формы к третьей. Сначала следует привести БД к первой нормальной форме, делая значения всех атрибутов во всех столбцах атомарными. Далее идет определение первичных ключей и зависящих от них не ключевых полей. Для приведения БД ко второй нормальной форме следует создать отдельную таблицу для каждого первичного ключа и переместить в созданную таблицу соответствующий ключ вместе с зависимыми не ключевыми полями. Для приведения БД к третьей нормальной форме необходимо определить зависимые поля и создать новую таблицу для каждого из таких полей. Таким образом, все поля в таблицах, приведенных к третьей нормальной форме, будут независимыми. На рисунке 8 расположена физическая модель базы данных.

Рисунок 8 – Физическая ER–модель «Кулинария»

2 Проектирование ИС 2.1 Требования к информационной системе

Работы по определению требований и выработке целей заканчиваются выпуском соответствующего документа, который должен быть достаточным для идентификации среды ПИ, его преимуществ и недостатков, состава и конфигурации ресурсов для его работы. Этот документ должен быть достаточно полным, чтобы в последующем при разработке исключить серьезные модификации и пересмотр требований, достаточным для просмотра и утверждения администрацией на основе его реализуемости в соответствии с выбранными критериями [3].

Согласно Единой системе программной документации таким документом является ТЗ на разработку ПИ [15]. Оно устанавливает основное назначение, технические характеристики, показатели качества и технико – экономические требования к ПИ. ТЗ является одним из основополагающих документов проекта ПИ [5].

Техническое задание на разработку автоматизированной информационной системы «Кулинария»

1 Введение

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

2 Основание для разработки

Основанием для разработки информационной системы является задание в рамках курса «Методы и средства проектирования информационных систем и технологий».

3 Назначение разработки

Автоматизированная система предназначена для решения следующих задач:

  1. хранение информации о клиентах кулинарии, их заказах;

  2. фиксация всех происходящих заказов в соответствующем журнале;

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

  4. контроль доставки заказа клиенту.

4 Требования к ПИ

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

Система должна обеспечивать следующие функции:

1. Ввод, вывод, редактирование, хранение информации о сотрудниках и их должностях:

  • ФИО сотрудника;

  • адрес;

  • телефон/email;

  • должность.

2. Ввод, вывод, редактирование, хранение, печать информации о клиентах, включая информацию о заказах им принадлежащих:

  • номер клиента;

  • телефон;

  • адрес доставки;

  • номер заказа.

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

  • тематика;

  • дата;

  • номер клиента;

  • номер сотрудника.

4. Ввод, вывод, редактирование, хранение, печать информации о кондитерских изделиях:

  • название;

  • состав;

  • цена;

  • вес.

5. Формирование, хранение, печать: информация о клиенте, заказе, связанных с событием.

Входной информацией системы является:

1. Бухгалтерская информация:

  • информация о сроке выполнения заказа клиента;

  • информация об оплате клиентом заказа или покупки;

2. Регистрационная информация:

  • информация о категориях изделий кулинарии;

  • информация о сотрудниках кулинарии;

  • информация о клиентах кулинарии и их заказах.

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

  • список кондитерских изделий;

  • список заказов;

  • список клиентов.

4.2 Условия эксплуатации

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

4.3 Требования к составу и параметрам технических средств

Настоящая система должна работать на процессорах совместимых с процессором IBM.

Оперативная память на каждой ЭВМ, не менее 32 Мб.

Сетевые карты.

Необходимо наличие видеокарты не менее 32 Мб на ЭВМ клиента.

Мышь. Клавиатура на ЭВМ клиента.

Свободное место на жестком диске не менее 10Мб. А также место для хранения баз данных.

4.4 Требования к информационной и программной совместимости

Система должна работать под управлением ОС семейства Win32 и Win64. Среда разработки программного приложения MS Visual Studio 2015, СУБД SQLiteStudio.

4.5 Требования к маркировке и упаковке

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

4.6 Требования к транспортированию и хранению

Требования к транспортированию и хранению ПИ совпадают с аналогичными требованиями, предъявляемыми к компакт – дискам.

5 Требования к программной документации

Программная документация должна содержать следующие документы (см. ГОСТ 19.101 – 77):

1.Программные документы:

  • Спецификация (ГОСТ 19.202 – 78);

  • Текст программы (ГОСТ 19.401 – 78);

  • Описание программы (ГОСТ 19.402 – 78);

  • Пояснительная записка (ГОСТ 19.404 – 79).

2.Эксплуатационные документы:

  • Ведомость эксплуатационных документов (ГОСТ 19.507 – 79);

  • Формуляр (ГОСТ 19.501 – 78);

  • Описание применения (ГОСТ 19.502 – 78);

  • Руководство системного программиста (ГОСТ 19.503 – 79);

  • Руководство программиста (ГОСТ 19.504 – 79);

  • Руководство оператора (ГОСТ 19.505 – 79).

Требования к перечисленным документам не отличаются от требований, определенных в ЕСПД.

6 Технико – экономические показатели

Затраты на разработку сведены в таблицу 1.

Таблица 1 – Смета затрат на разработку ПО

Элементы затрат

Стоимость, руб.

Материальные затраты

150

Основная и дополнительная зарплата

2000

Отчисления на социальные нужды

627,60

Затраты на оплату машинного времени

1843,25

Амортизация инструментальных средства разработчика

521,38

Накладные расходы

300

Всего

5442,23

7 Стадии и этапы разработки

Общая продолжительность разработки и внедрения системы составляет 5 месяцев с 10/09/2017 по 10/02/2018. Общая стоимость работ составляет 5442,23 руб. График реализации проекта представлен в таблице 2.

По завершении этапа составляется двухсторонний акт приемки – сдачи работ.

Таблица 2 – График реализации проекта

Этапы реализации проекта

месяцы

1

2

3

4

5

1 Разработка ПО.

         

1.1 Техническое задание.

         

1.2 Эскизный проект.

         

1.3 Технический проект.

         

1.4 Рабочий проект.

         

1.5 Внедрение.

         

2 Покупка ЭВМ, оборудования и инструментальных средств для заказчика (осуществляется за средства заказчика).

         

3 Обучение персонала (осуществляется за средства заказчика, согласно отдельному договору).

         

4 Эксплуатация АРМ (пробная эксплуатация сотрудниками заказчика под контролем разработчика).

         

8 Порядок контроля и приемки

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

Заказчик в течении 5 дней со дня получения акта приемки – сдачи работ и отчетных документов обязан оценить выполненную работу и направить разработчику подписанный акт приемки – сдачи работ или мотивированный отказ от приемки работ.

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

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

2.2 Диаграммы вариантов использования

Понятие варианта использования (use case) впервые ввел Ивар Якобсон и придал ему такую значимость, что в настоящее время вариант использования превратился в основной элемент разработки и планирования проекта.

Вариант использования представляет собой последовательность действий (транзакций), выполняемых системой в ответ на событие, инициируемое некоторым внешним объектом (действующим лицом). Вариант использования описывает типичное взаимодействие между пользователем и системой. В простейшем случае вариант использования определяется в процессе обсуждения с пользователем тех функций, которые он хотел бы реализовать [14].

Действующее лицо (actor) – это роль, которую пользователь играет по отношению к системе. Действующие лица представляют собой роли, а не конкретных людей или наименования работ. Несмотря на то, что на диаграммах вариантов использования они изображаются в виде стилизованных человеческих фигурок, действующее лицо может также быть внешней системой, которой необходима некоторая информация от данной системы. В языке UML на диаграммах вариантов использования поддерживается несколько типов связей между элементами диаграммы. Это связи коммуникации (communication), включения (include), расширения (extend) и обобщения (generalization) [1].

Связь коммуникации – это связь между вариантом использования и действующим лицом. На языке UML связи коммуникации показывают с помощью однонаправленной ассоциации (сплошной линии).

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

Связь расширения применяется при описании изменений в нормальном поведении системы. Она позволяет варианту использования только при необходимости использовать функциональные возможности другого.

На рисунке 9 и 10 представлены контекстная диаграмма и декомпозиция контекстной диаграммы соответственно. В приложении расположены остальные декомпозиционные диаграммы.

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

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

2.3 Выбор СУБД

SQLite это кроссплатформенный (Windows, iOS, Android, Python, Mono и др.) движок базы данных с открытым исходным кодом. Он поддерживает множественные таблицы, индексы, триггеры и представления.

SQLiteStudio – система управления базами данных SQLite.

Программа обеспечивает следующие особенности: весь SQLite3 и особенности SQLite2, обернутые в пределах простого GUI, кросс – платформенного, экспортируя в различные форматы (заявления SQL, CSV, HTML, XML), непрерывная проверка синтаксиса, поддержка UTF – 8 и многое другое [12].

2.3.1 Физическое проектирование БД

Используя функции, заложенные в программном средстве SQLite, была создана и зарегистрирована в системе новая база данных «Cookery». Создание базы данных инсталлирует инфраструктуру, необходимую для начала создания объектов. Первичным объектом для постоянного хранения данных в базе данных является таблица [13].

Исходя из данных, полученных при выполнении инфологического и даталогического проектирования, были спроектированы таблицы и поля базы данных. Скрипт для создания таблицы CONFECTIONERY и представления ord показан на рисунке 11 и 12 соответственно. А на рисунке 13 приведен перечень созданных таблиц для БД «Cookery».

Рисунок 11 – Скрипт создания таблицы

Рисунок 12 – Скрипт представления

Рисунок 13 – Список таблиц

2.4 Диаграмма классов

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

Диаграмма классов UML – это граф, узлами которого являются элементы статической структуры проекта (классы, интерфейсы), а дугами – отношения между узлами (ассоциации, наследование, зависимости).

На диаграмме классов изображаются следующие элементы:

Пакет (package) – набор элементов модели, логически связанных между собой;

Класс (class) – описание общих свойств группы сходных объектов;

Интерфейс (interface) – абстрактный класс, задающий набор операций, которые объект произвольного класса, связанного с данным интерфейсом, предоставляет другим объектам [2].

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

Рисунок 14 – Диаграмма классов

3 Программная реализация информационной системы

В качестве средства разработки программы используется язык программирования C# и среда Visual Studio 2015 [4]. Фрагменты исходного кода расположены в Приложении [16].

При запуске приложения появляется стартовая приветственная страница (рисунок 15). При нажатии кнопки «Оформить заказ» появляется главное окно программы с информацией о клиенте. Если после положительного обсуждения заказа с клиентом необходимо добавить его в базу данных, то для этого используется кнопка «Добавить», в противном случае, если клиент уже пользовался услугами кулинарии – его можно найти в базе по фамилии. Добавление клиента и вкладка с данными клиентов расположены на рисунках 16 и 17.

Рисунок 15 – Стартовая страница

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

Рисунок 16 – Информация о клиентах

Как видно на рисунке 16, таблица с заказами добавленного клиента ранее пуста, для этого перейдем на вкладку «Продукция» для того, что подобрать клиенту желаемое изделие (рисунок 17). Сформировав график можно увидеть статистику спроса на какую – либо категорию изделий.

Рисунок 17 – Информация о кондитерских изделиях

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

Рисунок 18 – Добавление изделия

Рисунок 19 – Данные категорий изделий

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

Рисунок 20 – Данные категорий изделий

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

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

Рисунок 21 – Заказы сотрудников

Рисунок 22 – Добавление физического лица

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

Как было описано выше в техническом задании, выходной информацией системы являются отчеты. Минимальный перечень формируемых в системе отчетов формируется на последней вкладке «Отчеты», что представлено на рисунке 24.

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

При нажатии на кнопку «Печатать отчет» открывается окно предварительного просмотра перед печатью (рисунок 25).

Рисунок 25 – Печать отчета

ЗАКЛЮЧЕНИЕ

Результатом выполнения курсовой работы стала спроектированная информационная система «Кулинария».

Работа над курсовым проектом позволила приобрести навыки создания ИС с использованием СУБД SQLiteStudio и языка программирования C#. Программа была создана с помощью Visual Studio 2015.

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

Были достигнуты следующие задачи:

  1. рассмотрена предметная область, включающая в себя моделирование бизнес – процессов;

  2. построены диаграммы вариантов использования и диаграмма классов;

  3. построена логическая и физическая модель ИС;

  4. разработана база данных, для хранения необходимой информации;

  5. cпроектировано и разработано функциональное интерфейсное приложение.

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

Повышены показатели эффективности затрат времени на оформление заказов и формирование отчетов.

В качестве доработки спроектированной АИС, помимо оформления заказа, следует добавить учет фактической покупки в помещении кондитерской.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
  1. Диаграммы вариантов использования [Электронный ресурс]. – Режим доступа: https://studfiles.net/preview/6214574/#2

  2. Диаграммы классов [Электронный ресурс]. – Режим доступа: https://studfiles.net/preview/6214574/page:2/#5

  3. Википедия, свободная энциклопедия [Электронный ресурс] / Статья «Информационная система» – Режим доступа: https://ru.wikipedia.org/wiki/Информационная_система

  4. Э. Стиллмен, Дж. Грин. Изучаем C#. 3 – е издание. [Электронный ресурс]. – Режим доступа: https://studfiles.net/preview/1957559/

  5. «Техническое задание на создание автоматизированной системы» / – М.: ГОСТ 34.602 – 89, 1990.

  6. DFD методология. Нотация, принципы моделирования [Электронный ресурс]. – Режим доступа: http://www.nazametku.com/dlia – raboty/dfd – методология – нотация – принципы – модел/

  7. Розенберг Д., Скотт К. Применение объектного моделирования с использованием UML и анализ прецедентов 2002 г.

  8. Грекул В.И. «Проектирование информационных систем» / В.И. Грекул, Г.Н. Денищенко, Н.Л. Коровкина. – М.: Интернет – университет информационных технологий, 2008.

  9. Коваленко, В.В. Проектирование информационных систем: учеб. пособие для вузов / В.В. Коваленко. – М.: Форум, 2012.

  10. BPwin и Erwin. CASE – средства для разработки информационных систем (fb2) [Электронный ресурс]. Режим доступа: http://coollib.com/b/147153/read

  11. Рябова Ю. С., Пирогов С. П. Моделирование бизнес-процессов производственной компании. – 2007.

  12. Кузнецов С. Д. Базы данных //Модели и языки. М.: Бином пресс. – 2008.

  13. Оуэнс М., Аллен Г. На SQLite. – Пресс-ЛВ 2010.

  14. Вендров, А.М. CASE технологии. Современные методы и средства проектирования информационных систем / А.М. Вендров. – М.: Финансы и статистика, 2009.

  15. Гвоздева Т.В. Проектирование информационных систем: учеб. пособие / Т.В. Гвоздева, Б.А. Баллод. – Ростов н/Д: Феникс, 2009.

  16. А. Хейлсберг, М. Торгерсен, С. Вилтамут, П. Голд. Язык программирования C#. Классика Computers Science. 4-е издание. – Издательский дом «Питер», 2011.

  17. Э. Стиллмен, Дж. Грин. Изучаем C#. 3-е издание. Издательство O'Reilly, 2017.

ПРИЛОЖЕНИЕ

Диаграммы IDEF0

Диаграммы вариантов использования

Фрагменты исходного кода

using cookery2.classes;

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Data.SQLite;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using System.Windows.Forms.DataVisualization.Charting;

namespace cookery2

{

public partial class Main : Form

{

public Main()

{

InitializeComponent();

}

private Dictionary dict1 = new Dictionary();

private Dictionary dict2 = new Dictionary();

private Dictionary dict3 = new Dictionary();

private Dictionary dict6 = new Dictionary();

private Dictionary dict7 = new Dictionary();

private List l1 = new List();

private List l2 = new List();

private List dict4 = new List();

private List dict5 = new List();

private bool client = false, conf = false, order = false;

//добавление клиента

private void button1_Click(object sender, EventArgs e)

{

Clients o = new Clients();

o.Show();

}

private DataTable loadClient(bool search, string str)

{

List l = Client.load(search, str);

DataTable dt = new DataTable();

DataColumn dc = new DataColumn("№", typeof(int));

dt.Columns.Add(dc);

dc = new DataColumn("Фамилия", typeof(string));

dt.Columns.Add(dc);

dc = new DataColumn("Имя", typeof(string));

dt.Columns.Add(dc);

dc = new DataColumn("Отчество", typeof(string));

dt.Columns.Add(dc);

dc = new DataColumn("Адрес", typeof(string));

dt.Columns.Add(dc);

dc = new DataColumn("Номер", typeof(string));

dt.Columns.Add(dc);

for (int i = 0; i < l.Count; i++)

{

dt.Rows.Add(new Object[] { l[i].id, l[i].surname, l[i].name, l[i].fam, l[i].adress, l[i].phone });

}

return dt;

}

private DataTable loadConfectionery(bool search, string str)

{

List l = Confectionery.load(search, str);

DataTable dt = new DataTable();

DataColumn dc = new DataColumn("№", typeof(int));

dt.Columns.Add(dc);

dc = new DataColumn("Категория", typeof(string));

dt.Columns.Add(dc);

dc = new DataColumn("Название", typeof(string));

dt.Columns.Add(dc);

dc = new DataColumn("Состав", typeof(string));

dt.Columns.Add(dc);

dc = new DataColumn("Цена", typeof(string));

dt.Columns.Add(dc);

dc = new DataColumn("Вес", typeof(string));

dt.Columns.Add(dc);

for (int i = 0; i < l.Count; i++)

{

dt.Rows.Add(new Object[] { l[i].id, l[i].prod, l[i].name, l[i].st, l[i].pr, l[i].k });

}

return dt;

}

private DataTable loadOrders(bool search, string str)

{

List l = Orders.load(search, str);

DataTable dt = new DataTable();

DataColumn dc = new DataColumn("№", typeof(int));

dt.Columns.Add(dc);

dc = new DataColumn("Фамилия клиента", typeof(string));

dt.Columns.Add(dc);

dc = new DataColumn("Телефон", typeof(string));

dt.Columns.Add(dc);

dc = new DataColumn("Тематика", typeof(string));

dt.Columns.Add(dc);

dc = new DataColumn("Изделие", typeof(string));

dt.Columns.Add(dc);

dc = new DataColumn("Дата", typeof(string));

dt.Columns.Add(dc);

dc = new DataColumn("Сотрудник", typeof(string));

dt.Columns.Add(dc);

for (int i = 0; i < l.Count; i++)

{

dt.Rows.Add(new Object[] { l[i].id, l[i].surname, l[i].phone, l[i].sub, l[i].con, l[i].dat, l[i].emp });

}

return dt;

}

private void loadEmployees()

{

List l = Employees.load();

DataTable dt = new DataTable();

DataColumn dc = new DataColumn("№", typeof(int));

dt.Columns.Add(dc);

dc = new DataColumn("Фамилия", typeof(string));

dt.Columns.Add(dc);

dc = new DataColumn("Имя", typeof(string));

dt.Columns.Add(dc);

dc = new DataColumn("Занимаемая должность", typeof(string));

dt.Columns.Add(dc);

dc = new DataColumn("З/П", typeof(int));

dt.Columns.Add(dc);

dc = new DataColumn("Премия (%)", typeof(int));

dt.Columns.Add(dc);

for (int i = 0; i < l.Count; i++)

{

dt.Rows.Add(new Object[] { l[i].id, l[i].surname, l[i].name, l[i].d, l[i].salary, l[i].proq});

}

dataGridView5.DataSource = dt;

}

private void Osnovnoe_okno_Load(object sender, EventArgs e)

{

dataGridView1.DataSource = loadClient(false, "");

dataGridView3.DataSource = loadConfectionery(false, "");

loadCombo();

dataGridView4.DataSource = loadOrders(false, "");

loadCombo2();

loadEmployees();

loadSize();

}

private DataTable loadClient_order()

{

DataTable dt = new DataTable();

DataColumn dc = new DataColumn("Клиент", typeof(string));

dt.Columns.Add(dc);

dc = new DataColumn("Изделие", typeof(string));

dt.Columns.Add(dc);

dc = new DataColumn("Цена", typeof(double));

dt.Columns.Add(dc);

int rowindex1 = dataGridView1.CurrentCell.RowIndex;

string surname = dataGridView1.Rows[rowindex1].Cells[1].Value.ToString();

Database db = Database.getInstance();

string s1 = "SELECT ORDERS.ID_ORDER AS id_order FROM ORDERS,CLIENTS WHERE CLIENTS.SURNAME='" + surname + "' AND CLIENTS.ID_CLIENTS=ORDERS.ID_CLIENT";

SQLiteDataReader read1 = db.select(s1);

while (read1.Read())

{

int i = Int16.Parse(read1["id_order"].ToString());

string s2 = "SELECT CONFECTIONERY.NAME AS con,PRICE AS pri FROM CONFECTIONERY, ORDERS_DETALIED WHERE CONFECTIONERY.ID_CONFECTIONERY=ORDERS_DETALIED.ID_CONFECTIONERY AND ORDERS_DETALIED.ID_DETALIED=" + i;

SQLiteDataReader re = db.select(s2);

while (re.Read())

{

string name = re["con"].ToString();

double price = Double.Parse(re["pri"].ToString());

dt.Rows.Add(new Object[] { surname, name, price });

}

}

db.close();

return dt;

}

//заказы сотрудников

private DataTable loadEmployee_order()

{

DataTable dt = new DataTable();

DataColumn dc = new DataColumn("Сотрудник", typeof(string));

dt.Columns.Add(dc);

dc = new DataColumn("Тематика", typeof(string));

dt.Columns.Add(dc);

dc = new DataColumn("Изделие", typeof(string));

dt.Columns.Add(dc);

dc = new DataColumn("Дата", typeof(string));

dt.Columns.Add(dc);

int rowindex1 = dataGridView5.CurrentCell.RowIndex;

string surname = dataGridView5.Rows[rowindex1].Cells[1].Value.ToString();

Database db = Database.getInstance();

string s1 = "SELECT ORDERS.ID_ORDER AS id_order FROM ORDERS,EMPLOYEES,PHYSICAL_PERSONS WHERE PHYSICAL_PERSONS.SURNAME='" + surname + "' AND PHYSICAL_PERSONS.ID_PERSONS=EMPLOYEES.ID_PERSONS AND ORDERS.ID_EMPLOYEE=EMPLOYEES.ID_EMPLOYEE";

SQLiteDataReader read1 = db.select(s1);

while (read1.Read())

{

int i = Int16.Parse(read1["id_order"].ToString());

string s2 = "SELECT CONFECTIONERY.NAME AS con, ORDERS.DATE AS dat, SUBJECTS.NAME AS name FROM CONFECTIONERY, ORDERS_DETALIED, SUBJECTS, ORDERS WHERE ORDERS_DETALIED.ID_CONFECTIONERY=CONFECTIONERY.ID_CONFECTIONERY AND ORDERS.ID_EMPLOYEE=" + i+ " AND ORDERS_DETALIED.ID_ORDER=ORDERS.ID_ORDER AND ORDERS.ID_SUB = SUBJECTS.ID_SUBJECTS ";

SQLiteDataReader re = db.select(s2);

while (re.Read())

{

string name = re["name"].ToString();

string con = re["con"].ToString();

string dat = re["dat"].ToString();

dt.Rows.Add(new Object[] { surname, name, con, dat});

}

}

db.close();

return dt;

}

//поиск клиента по фамилии

private void textBox2_TextChanged(object sender, EventArgs e)

{

if (textBox2.Text != "") dataGridView1.DataSource = loadClient(true, textBox2.Text);

else dataGridView1.DataSource = loadClient(false, "");

}

//удаление клиента

private void button2_Click(object sender, EventArgs e)

{

string surname = textBox1.Text;

Database db = Database.getInstance();

string s1 = "DELETE FROM CLIENTS WHERE SURNAME='" + surname + "'";

db.query(s1);

dataGridView1.DataSource = loadClient(false, "");

db.close();

}

//поиск продукции

private void textBox3_TextChanged(object sender, EventArgs e)

{

if (textBox3.Text != "") dataGridView3.DataSource = loadConfectionery(true, textBox3.Text);

else dataGridView3.DataSource = loadConfectionery(false, "");

}

//удаление продукции

private void button4_Click(object sender, EventArgs e)

{

int rowindex1 = dataGridView3.CurrentCell.RowIndex;

int id = Int16.Parse(dataGridView3.Rows[rowindex1].Cells[0].Value.ToString());

Database db = Database.getInstance();

string s1 = "DELETE FROM CONFECTIONERY WHERE ID_CONFECTIONERY=" + id;

db.query(s1);

db.close();

dataGridView3.DataSource = loadConfectionery(false, "");

loadSize();

}

private void button15_Click(object sender, EventArgs e)

{

dataGridView3.DataSource = loadConfectionery(false, "");

loadSize();

}

//добавление заказа

private void button6_Click(object sender, EventArgs e)

{

int id_sub = dict1[comboBox1.SelectedItem.ToString()];

int id_client = dict2[comboBox2.SelectedItem.ToString()];

int id_cat1 = dict4[comboBox4.SelectedIndex];

int id_em = l1[comboBox3.SelectedIndex];

string date = dateTimePicker1.Text;

int id = 0;

Database db = Database.getInstance();

string sql = "INSERT INTO ORDERS(DATE,ID_SUB,ID_EMPLOYEE,ID_CLIENT) VALUES('"+date+"',"+id_sub+","+id_em+","+ id_client+")";

db.query(sql);

sql = "SELECT ID_ORDER FROM ORDERS WHERE DATE='"+date+"' AND ID_SUB="+id_sub+ " AND ID_EMPLOYEE="+id_em+ " AND ID_CLIENT="+id_client;

SQLiteDataReader s = db.select(sql);

while (s.Read())

{

id = Int16.Parse(s["ID_ORDER"].ToString());

}

sql = "INSERT INTO ORDERS_DETALIED(ID_CONFECTIONERY,ID_ORDER) VALUES("+id_cat1+","+id+")";

db.query(sql);

db.close();

dataGridView4.DataSource = loadOrders(false, "");

loadSize();

}

//поиск клиента

private void textBox4_TextChanged(object sender, EventArgs e)

{

if (textBox4.Text != "") dataGridView4.DataSource = loadOrders(true, textBox4.Text);

else dataGridView4.DataSource = loadOrders(false, "");

}

Просмотров работы: 989