Материал: Разработка автоматизированной системы для магазина автозапчастей

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Создадим базу данных «Autorun». В общем случае понадобятся таблицы: клиенты, пользователи клиентского приложения (users), пользователи сайта (users1), товары, поставщики, поставки, заказы, продажи, резервирование. Модель представлена на рисунке 2.2. Отмечу, что в базе данных присутствует избыточность полей в некоторых таблицах. Это сделано в целях повышения быстродействия выполнения запросов.

Рисунок 2.2. Логическая модель БД

3. Разработка клиентского приложения

 

3.1 Выбор языка и среды программирования


Для разработки продукта необходимо определиться с языком программирования и выбрать среду. Исходя из требований заказчика, локальное приложение будет предназначено для платформы Windows 10 и выше. Определившись с платформой, на которой будет функционировать будущий продукт, из существующих сред программирования для Windows выбор падает в сторону самой качественной и в то же время бесплатной среды программирования Microsoft Visual Studio 2015 Community. Между языками С# и С++ я склоняюсь к разработке приложения именно на языке С++, т.к. это очень мощный инструмент для разработки ПО и мне как разработчику более близок, нежели С#, который несомненно также является очень мощным ЯВУ [8].

 

3.2 Требования к клиентскому приложению

 

3.2.1 Требования к интерфейсу

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

1.      функциональность (соответствие задачам пользователя);

.        понятность и логичность;

.        обеспечение высокой скорости работы пользователя;

.        обеспечение защиты от ошибок человеческого фактора;

.        быстрая обучаемость пользователя;

.        В цветовой гамме интерфейса сайта и клиентского приложения должны преобладать темные тона;

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

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

Для всей текстовой составляющей приложения (кроме таблиц с выводом данных из БД) будет установлен шрифт Century Gothic. Красные цвета кнопок будут означать отмену/удаление, зеленые будут означать сохранение/применение, светло - серые кнопки будут означать добавление единиц товара к имеющемуся на складе количеству, установку цены на товар, а кнопки белого цвета будут вызывать функции по работе с формой (изменение размера формы, появление некоторых пунктов на форме). Таким образом пользователь быстро поймёт логику распределения цветов в интерфейсе приложения.

 

3.2.2 Требования к функционалу

К основным функциональным требованиям системы можно отнести:

1.      Работа с таблицами БД через клиентское приложение.

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

.        Разграничение доступа к информации работникам.

.        Возможность резервирования товара пользователями сайта.

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

 

3.3 Проектирование клиентского приложения

 

3.3.1 Архитектура

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

Локальное приложение написано на языке С++ в среде программирования Visual Studio 2015 Community.

Для хранения данных понадобится база данных MySQL и сервер OpenServer.

Таким образом, архитектуру АСУ можно представить в виде схемы, изображенной на рисунке 3.1.

Рисунок 3.1. Архитектура АСУ

 

3.3.2 Выделение компонентов

1.      Form1 - форма авторизации пользователя. Программный код приведён в приложении 1.

2.      Form2 - Форма, содержащая большое количество методов для осуществление разного рода манипуляций над данными из БД. Программный код приведён в приложении 2.

3.      ConnToDB - класс, содержащий данные о подключении к БД (Singleton).

Программный код приведён в приложении 3.

4.      DateAdapter - класс, основной и единственной функцией которого является преобразование формата даты из удобного для пользователя в формат сервера MySQL. Программный код приведен в приложении 4.

5.      Command - класс, содержащий методы для реализации команд браузера (execute, undo, redo). Программный код приведён в приложении 5.

3.3.3 Выбор шаблонов проектирования

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

1.      Singleton - используется для работы с единственным экземпляром строки соединения с БД, а также для уменьшения объема кода.

2.      Command - используется для выполнения команд во встроенном браузер (execute, undo, redo).

3.      Adapter - используется для работы с датами, чтобы выводить пользователю в удобном для него формате, а отправлять в БД в формате MySQL.

 

 


3.3.4 UML диаграмма классов с учетом выбранных шаблонов


Рисунок 3.2. Диаграмма классов UML

3.3.5 Построение блок-схем алгоритмов подпрограмм

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

Рисунок 3.3. Общая блок - схема клиентского приложения

Разберем подробно две блок - схемы, приведенные на рисунке 3.4. Сначала пользователь вводит логин и пароль, после чего они проверяются. Если данные для авторизации не верны, то выведется сообщение: «Данные введены неверно! Повторите ввод», в противном случае перейдём к главной странице приложения, к странице продажи товара. При продаже товара продавец может выбрать зарегистрированного покупателя, также может продавать товары анонимным покупателям, производит выбор товара, после чего нажимает кнопку «Продать». После нажатия этой кнопки происходит следующее:

)        Со склада вычитается проданное количество выбранного товара

)        В таблицу БД «Продажи», в поле «Выручка» заносится разность стоимости закупки, умноженной на проданное количество и стоимости продажи, умноженной на количество

)        Далее данные об этой продаже заносятся в БД

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

Рисунок 3.4. Блок-схемы алгоритмов авторизации и продажи товара

На рисунке 3.5 видим, что сначала пользователю предстоит выбрать промежуток времени для анализа с помощью стандартного элемента dateTimePicker. После выбора конца периода выполняются два запроса к БД:

.        Вывод ТОП - 5 самых хорошо продаваемых товаров:

.1.1.  "select Назв_товара,Брэнд,sum(Количество) as 'Продано ед.' from autorun2.Продажа where Дата_продажи Between '" + dateStart + "' AND '" + dateEnd + "' group by Назв_товара,Брэнд order by sum(Количество) limit 5;"

.1.2.  Вывод ТОП - 5 самых плохо продаваемых товаров:

.        "select Назв_товара,Брэнд,sum(Количество) as 'Продано ед.' from autorun2.Продажа where Дата_продажи Between '" + dateStart + "' AND '" + dateEnd + "' group by Назв_товара,Брэнд order by sum(Количество) desc limit 5;"

После этого выводится сообщение, в котором описан самый плохо продаваемы товар. Предлагается сделать на него скидку для распродажи от 5% до 75%.

Рисунок 3.5. Блок-схема алгоритма анализа продаж товаров

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

Рисунок 3.6. Блок - схема алгоритма функции «Отчёты»

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

Рисунок 3.7. Блок - схема алгоритма работы с клиентами сайта

 


4. Разработка сайта

 

4.1 Общие сведения по разработке сайта


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

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

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

Для разделения полномочий пользователей и для повышения безопасности необходима авторизация. Каждый пользователь имеет уникальный логин и пароль. Все пользователи будут разделены на три группы: администраторы, модераторы, пользователи. Данные о пользователе и ролях хранятся в базе данных [7].

4.2 Выбор языков программирования

 

4.2.1 HTML

HyperText Markup Language - стандартный язык для веб-браузеров для интерпретации информации из интернета. Является языком разметки. Все форматирование текста, изображения, цвета, фоны, создания ссылки и т.д. это делается в HTML.

 

4.2.2 CSS

Cascading Style Sheets - каскадные таблицы стилей. Является формальным языком описания внешнего вида документа, написанного с использованием языка разметки.

 

4.2.3 PHP

Расшифровывается как "PHP Препроцессор Гипертекста", - первое P на самом деле означает в PHP акроним. PHP представляет собой более продвинутый язык веб-разметки, а также позволяет использовать переменные, а также скрыть свой код от внешнего мира. PHP также позволяет подключаться к базам данных и выводить информацию на веб-страницы, что позволяет создавать более сложный и интерактивный контент, чем HTML.

 

4.2.4 SQL

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

4.3 Структура сайта


После того как установили задачи, которые должен выполнять сайт, нужно определить его структуру. Определили, что сайт мудет многостраничным. Страницы сайта: «Главная», «Товары в наличии», «Полезные статьи», «О нас», «Регистрация», «Авторизация». После того как пользователь пройдет регистрацию и авторизацию, ему будут доступна страница личного кабинета, где он может просматривать информацию о себе, свои накопленные бонусы и информацию о зарезервированных не него товарах. Также только после авторизации зарегистрированного пользователя будет доступна функция резервирования товара. Структура сайта показана на рисунке 4.1.

Источник: https://www.bibliofond.ru/view.aspx?id=897012