Разработка автоматизированной системы для магазина автозапчастей
Построение концептуальной (инфологической) модели базы данных. Выбор языка и среды программирования, требования к клиентскому приложению. Выбор шаблонов проектирования, UML диаграмма классов с учетом выбранных шаблонов. Тестирование слайдера "Slick".
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 10.07.2017 |
Размер файла | 2,5 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Оглавление
Введение
1. Аналитический обзор разработки АСУ
1.1 Постановка задачи
1.2 Основные понятия и определения
1.3 Общее описание разрабатываемой АСУ
1.4 Анализ существующих АСУ
1.5 Анализ предметной области разработки
2. Разработка базы данных для системы
2.1 Анализ и выбор СУБД
2.1.1 SQLite
2.1.2 MySQL
2.1.3 PostgreSQL
2.2 Построение концептуальной (инфологической) модели БД
2.3 Построение логической схемы БД
3. Разработка клиентского приложения
3.1 Выбор языка и среды программирования
3.2 Требования к клиентскому приложению
3.2.1 Требования к интерфейсу
3.2.2 Требования к функционалу
3.3 Проектирование клиентского приложения
3.3.1 Архитектура
3.3.2 Выделение компонентов
3.3.3 Выбор шаблонов проектирования
3.3.4 UML диаграмма классов с учетом выбранных шаблонов
3.3.5 Построение блок-схем алгоритмов подпрограмм
4. Разработка сайта
4.1 Общие сведения по разработке сайта
4.2 Выбор языков программирования
4.2.1 HTML
4.2.2 CSS
4.2.3 PHP
4.2.4 SQL
4.3 Структура сайта
4.4 Дизайн сайта
4.4.1 Слайдер Slick
5. Тестирование АСУ
5.1 Тестирование клиентского приложения
5.1.1 Страница авторизации
5.1.2 Страница «Информация»
5.1.3 Заказы. Перевод в поставки
5.1.4 Поставки. Установка цены продажи на товар
5.1.5 Тестирование продажи товара
5.1.6 Тестирование отмены продажи товара
5.1.7 Тестирование отчётов
5.1.8 Тестирование анализа продаж товаров
5.1.9 Тестирование функции «Остатки»
5.1.10 Тестирование подпрограммы для работы с пользователями сайта
5.2 Тестирование сайта
5.2.1 Правильность выполнения функций по нажатию кнопок и переходов по гиперссылкам
5.2.2 Правильность выполнения SQL-запросов к БД
5.2.3 Тестирование слайдера «Slick»
6. Внедрение продукта в производство
Заключение
Список использованных источников
Приложения
Введение
В нашу жизнь стремительно входят новейшие технологии, которые улучшают производство, предоставляют возможности для коммуникации между людьми. Информационные технологии позволяют автоматизировать многие рутинные действия в жизни человека. Основными целями автоматизации являются:
1) Сокращение численности персонала;
2) Увеличение продукции;
3) Повышение качества производства;
4) Ускорение работы персонала;
5) Снижение расходов сырья;
6) Повышение безопасности;
В моем случае объектом автоматизации является магазин автомобильных запчастей. Целью работы является разработка автоматизированной системы управления для магазина автозапчастей. Данный магазин пользуется интернет - платформой для работы магазина, что является для них не самым удобным подходом для автоматизации, поэтому возник вопрос о разработке собственной автоматизированной системы управления.
1. Аналитический обзор разработки АСУ
1.1 Постановка задачи
Определим задачи, которые нужно решить для достижения поставленной цели:
1. Произвести анализ предметной области.
2. Выявить основные информационные потоки предприятия.
3. Выбрать процессы предприятия, которые можно и нужно автоматизировать.
4. Обеспечить достоверность информации о материальных компонентах, применяемых в производстве.
5. Улучшение эргономики труда операторов процесса.
6. Выбрать способы и средства для разработки программного обеспечения.
7. Выдвинуть требования к программному продукту.
8. Разработать ПО согласно выдвинутым требованиям.
9. Произвести тестирование программного продукта.
1.2 Основные понятия и определения
Информационная система (ИС) -- система, главными задачами которой являются хранение, распространение, поиск и обработка информации.
Автоматизация - применение технических средств, экономико-математических методов и систем управления, освобождающих человека частично или полностью от непосредственного участия в процессах получения, преобразования, передачи и использования энергии, материалов или информации.
Автоматизированная система управления - это система «человек-машина», которая должна обеспечивать автоматизированный сбор и обработку информации для оптимизации процесса управления. В отличие от автоматических систем, где человек полностью удалён из контура управления, АСУ предполагает активное участие человека в контуре управления.
1.3 Общее описание разрабатываемой АСУ
Система позволяет частично автоматизировать деятельность магазина автозапчастей. Программный продукт должен предоставить пользователю удобный обзор информации из БД о товарах, заказах, поставках, поставщиках, клиентах, продажах и возможность осуществлять манипуляции над этими данными. Также должна присутствовать отчетность о работе магазина за конкретный промежуток времени. Особенности разрабатываемого продукта: удобный и интуитивно понятный для пользователя интерфейс, многофункциональность и работа в связке с сайтом, который можно администрировать как раз из клиентского приложения. Сайт будет разработан для того, чтобы предоставить покупателям возможность удаленно просматривать ассортимент магазина, информацию о магазине, а также возможность зарезервировать любой товар на 3 дня, после чего товар удалится из резерва и вернется на склад. Перегрузить сайт будет крайне сложно, т.к. хакеру предстоит зарегистрироваться и авторизоваться на сайте достаточно большое количество раз.
1.4 Анализ существующих АСУ
В ходе выполнения работы был проведен анализ уже существующих АСУ с требуемым функционалом. Существует несколько аналогов подобной системы:
CloudShop - сервис, который имеет функционал, схожий с разрабатываемым ПП, имеет достаточно удобный интерфейс[1]. Недостатки: высокая стоимость использования. Интерфейс представлен на рисунке 1.1 [1].
Рисунок 1.1. Интерфейс web сервиса «CloudShop»
ABM Retail - Сервис, который имеет очень большой функционал по работе с клиентами, поставщиками, товарами и т.д., построен за счет интересных идей с использованием новейших алгоритмов. Но имеет такие недостатки: высокая стоимость использования, а также невозможность работы с локальной БД, а основным хранилищем является облако. Это безусловно удобно, но я считаю, что это небезопасно. Интерфейс представлен на рисунке 1.2 [2]
Рисунок 1.2. Интерфейс программы «ABM Retail»
Еще одной из похожих АСУ является 1С, но, к сожалению, имеет высокую стоимость, что не устраивает заказчика [3].
Найденные аналоги имеют интуитивно понятный интерфейс для пользователей, доступность информации, совместимы с различными платформами, обеспечивают высокую скорость работы пользователя.
Несмотря на все преимущества представленных систем, заказчик отказывается их использовать по финансовым соображениям. В соответствии с этим было принято решение о разработке новой системы.
1.5 Анализ предметной области разработки
Для анализа предметной области мною были учтены особенности работы магазина и требования заказчика.
Магазин предназначен для продажи автозапчастей, как новых, так и Б/У, автомобильной электроники, аккумуляторов, аксессуаров и т.д. Не имеет филиалов. Покупатель проходит стандартную процедуру покупки товара, приходя в магазин. Если потенциальный покупатель находится достаточно далеко и не имеет возможности прийти в магазин, но запчасти, которые он хочет купить есть на складе магазина, клиент может зарезервировать их на срок в три дня, после чего сможет выкупить зарезервированный товар, назвав продавцу свой логин на сайте [8].
АСУ предполагает три роли пользователей: администратор, продавец, пользователь сайта.
Администратор занимается работой с сайтом, товарами, клиентской базой, а также имеет возможность просматривать отчетность работы магазина.
Продавец может работать с таблицами БД, продавать и заказывать в магазин товары.
Пользователи сайта могут просматривать ассортимент товара и резервировать выбранные товары на срок в три дня.
2. Разработка базы данных для системы
2.1 Анализ и выбор СУБД
Для хранения данных, которыми пользователи смогут манипулировать в будущем, понадобится база данных. Поэтому нужно произвести обзор существующих СУБД. По требованиям заказчика в обзоре будет участвовать только бесплатное ПО [4].
2.1.1 SQLite
Эта система достаточно просто встраивается в приложения. Базируется на файлах и имеет большое количество различных инструментов для работы с БД. Данные хранятся в файлах и обращение происходит непосредственно к ним. Поэтому SQLite работает достаточно быстро и ее можно назвать достаточно мощной из-за множества библиотек. Преимущества SQLite:
1. Файловая структура. Легко переносится на разные ПК, потому что БД состоит из одного файла.
2. Используемые стандарты. Используются стандарты SQL.
3. SQLite предлагает всё что необходимо для тестирования и разработки, так как состоит всего из одного файла и библиотеки написанной на языке C. Недостатки SQLite:
1. Отсутствие системы пользователей - более крупные СУБД включают в свой состав системы управления правами доступа пользователей.
2. Невозможно увеличить производительность.
2.1.2 MySQL
Самая распространенная полноценная серверная СУБД. MySQL имеет огромное количество функций. Отлично подходит для работы с сайтами и другими веб - приложениями. Имеет большое количество различных инструментов для разработки, хотя в ней не реализован полный функционал SQL. Преимущества MySQL:
1. Простота в работе. Имеет достаточно простую установку, понятный интерфейс.
2. Богатый SQL - функционал.
3. Имеет большое количество стандартных функций, обеспечивающих безопасность.
4. Отлично работает с большими объемами данных, также хорошо масштабируется.
5. Увеличена производительность за счёт упрощения некоторых стандартов. Недостатки MySQL:
1. Присутствуют ограничения функционала, которые иногда необходимы в особо требовательных приложениях.
2. Невысокая надёжность БД.
3. Медленная разработка - Хотя MySQL технически открытое ПО, существуют жалобы на процесс разработки.
2.1.3 PostgreSQL
Данная СУБД считается самой профессиональной по сравнению с СУД, рассмотренными выше. Свободно распространяется, максимально соответствует SQL - стандартам. От других СУБД PostgreSQL отличается поддержкой востребованного объектно-ориентированного и/или реляционного подхода к базам данных. Например, полная поддержка надежных транзакций, т.е. атомарность, последовательность, изолированность, прочность. Данная СУБД имеет высокую производительность из-за применения мощных технологий. Параллельность достигнута не за счет блокировки операций чтения, а благодаря реализации управления многовариантным параллелизмом (MVCC), что также обеспечивает соответствие ACID. PostgreSQL очень легко расширять своими процедурами, которые называются хранимые процедуры. Достоинства PostgreSQL:
1. Открытое ПО соответствующее стандарту SQL - PostgreSQL - бесплатное ПО с открытым исходным кодом. Эта СУБД является очень мощной системой.
2. Большое сообщество - существует довольно большое сообщество в котором вы запросто найдёте ответы на свои вопросы
3. Большое количество дополнений - несмотря на огромное количество встроенных функций, существует очень много дополнений, позволяющих разрабатывать данные для этой СУБД и управлять ими.
4. Расширения - существует возможность расширения функционала за счет сохранения своих процедур.
5. Объектность - PostrgreSQL это не только реляционная СУБД, но также и объектно-ориентированная с поддержкой наследования и много другого.
Недостатки PostgreSQL:
1. Производительность - при простых операциях чтения PostgreSQL может значительно замедлить сервер и быть медленнее своих конкурентов, таких как MySQL
2. Популярность - по своей природе, популярностью эта СУБД похвастаться не может, хотя и присутствует довольно большое сообщество.
3. Хостинг - в силу выше перечисленных факторов иногда довольно сложно найти хостинг с поддержкой этой СУБД.
Были соотнесены преимущества и недостатки каждой СУБД. Принято решение использовать MySQL из-за ее многофункциональности, простоты установки, а также эта система отлично подойдет для разработки сайта.
2.2 Построение концептуальной (инфологической) модели БД
Рисунок 2.1. Концептуальная модель БД
2.3 Построение логической схемы БД
Создадим базу данных «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. функциональность (соответствие задачам пользователя);
2. понятность и логичность;
3. обеспечение высокой скорости работы пользователя;
4. обеспечение защиты от ошибок человеческого фактора;
5. быстрая обучаемость пользователя;
6. В цветовой гамме интерфейса сайта и клиентского приложения должны преобладать темные тона;
Соблюдение требований к интерфейсу, приведенных выше обеспечит максимально удобный и интуитивно понятный интерфейс для пользователя.
Исходя из дизайна логотипа магазина и требований заказчика принято, что дизайн будет исключительно в тёмных тонах.
Для всей текстовой составляющей приложения (кроме таблиц с выводом данных из БД) будет установлен шрифт Century Gothic. Красные цвета кнопок будут означать отмену/удаление, зеленые будут означать сохранение/применение, светло - серые кнопки будут означать добавление единиц товара к имеющемуся на складе количеству, установку цены на товар, а кнопки белого цвета будут вызывать функции по работе с формой (изменение размера формы, появление некоторых пунктов на форме). Таким образом пользователь быстро поймёт логику распределения цветов в интерфейсе приложения.
3.2.2 Требования к функционалу
К основным функциональным требованиям системы можно отнести:
1. Работа с таблицами БД через клиентское приложение.
2. Автоматическое формирование отчетности работы магазина за определенный промежуток времени.
3. Разграничение доступа к информации работникам.
4. Возможность резервирования товара пользователями сайта.
Данный список может возрасти либо измениться в зависимости от дальнейших требований заказчика.
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. Сначала пользователь вводит логин и пароль, после чего они проверяются. Если данные для авторизации не верны, то выведется сообщение: «Данные введены неверно! Повторите ввод», в противном случае перейдём к главной странице приложения, к странице продажи товара. При продаже товара продавец может выбрать зарегистрированного покупателя, также может продавать товары анонимным покупателям, производит выбор товара, после чего нажимает кнопку «Продать». После нажатия этой кнопки происходит следующее:
1) Со склада вычитается проданное количество выбранного товара
2) В таблицу БД «Продажи», в поле «Выручка» заносится разность стоимости закупки, умноженной на проданное количество и стоимости продажи, умноженной на количество
3) Далее данные об этой продаже заносятся в БД
Если товар вдруг не устроил покупателя, то продажу можно быстро отменить. В случае отмены продажи все процедуры происходят «с точностью до наоборот». Данные о продаже удаляются, товар в нужном количестве возвращается на склад, выручка удаляется.
Рисунок 3.4. Блок-схемы алгоритмов авторизации и продажи товара
На рисунке 3.5 видим, что сначала пользователю предстоит выбрать промежуток времени для анализа с помощью стандартного элемента dateTimePicker. После выбора конца периода выполняются два запроса к БД:
1. Вывод ТОП - 5 самых хорошо продаваемых товаров:
1.1.1. "select Назв_товара,Брэнд,sum(Количество) as 'Продано ед.' from autorun2.Продажа where Дата_продажи Between '" + dateStart + "' AND '" + dateEnd + "' group by Назв_товара,Брэнд order by sum(Количество) limit 5;"
1.1.2. Вывод ТОП - 5 самых плохо продаваемых товаров:
2. "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.
Рисунок 4.1. Структура сайта
4.4 Дизайн сайта
Также исходя из дизайна логотипа магазина и требований заказчика принято, что дизайн будет исключительно в тёмных тонах, как и клиентское приложение, входящее в состав разрабатываемой АСУ. Главными цветами будут: чёрный, небесный, красный, белый и мягкий зелёный. Чёрный цвет меню и тёмные фоны страниц сайта будут фундаментом дизайна, небесным голубым цветом будут подсвечиваться пункты меню при наведении, красным цветом будет подсвечиваться кнопка выхода из аккаунта при наведении, а мягким зелёным цветом будут подсвечиваться при наведении кнопки резервирования товара и вход в личный кабинет. Шаблоны страниц сайта будут иметь стандартную структуру - «шапка - контент - подвал». Анимация на страницах сайта, установленная с помощью JQuery(Animate), будет обязательно легкой, чтобы не раздражать пользователя. Цвет текста на сайте, в зависимости от фона активного объекта будет черный или белый. На все объекты сайта установлен достаточно приятный и компактный шрифт «Century Gothic». Под шапкой сайта будет располагаться слайдер «Slick».
4.4.1 Слайдер Slick
Slick slider -- это плагин, который написан на языке JavaScript с применением библиотеки JQuery, имеющий множество возможностей по созданию слайдера любой сложности. Его функционал позволяет реализовывать зацикливание, автоматическое проигрывание, эффект перехода, динамическое добавление слайдов и многое другое. Также есть возможность пролистывания слайдера пальцем на мобильных устройствах, что является очень современным и удобным для пользователя решением.
программирование шаблон клиентский слайдер
5. Тестирование АСУ
Тестирование - это мероприятия, которые связаны с различными испытаниями программного продукта. Цель - установление соответствия или несоответствия характеристик ПП определенным требованиям и выявление дефектов. Дефектами, в свою очередь, могут быть как ошибки в работе, так и неприемлемое качество функционирования в определенных условиях эксплуатации.
Результаты тестирования - это список выявленных несоответствий и дефектов, но, как правило, без указания их причин, хотя, опытный специалист по качеству продукции в состоянии провести первичную диагностику некорректного поведения объекта и сообщить диагноз его разработчикам.
Тестирование программного продукта проводят как на этапах его создания, так и на этапах технического сопровождения и дальнейшего развития. Виды тестирования программных продуктов и их краткое описание я постараюсь представить в этом материале.
5.1 Тестирование клиентского приложения
Для удобства понадобится некий план тестирования. Первым делом нужно протестировать функции, отвечающие за добавление, поиск, удаление данных из таблиц БД (вкладка «Информация»). В данном пункте выделим объекты с одинаковым функционалом, и сгруппируем в один целый пункт плана (клиенты, товары, поставщики, продажи, пользователи). Обозначим данную группу для идентификации «Группа 1». Каждый из этих объектов, безусловно, будет протестирован, но для демонстрации представим один из объектов. Объекты «Заказы» и «Поставки» в данную группу не входят, т.к. их нужно рассматривать отдельно из-за дополнительного функционала (перевод из заказов в поставки в объекте «Заказы» и установка цены на товар в объекте «Поставки»). Таким образом, получим план тестирования:
1. Страница авторизации
2. Страница «Информация»
2.1. Группа 1
2.2. Заказы
2.3. Поставки
3. Страница «Продажа»
3.1. Регистрация нового покупателя
3.2. Продажа какого - то товара
3.3. Быстрый поиск более дешёвого товара
4. Страница «Отчёты»
5. Страница «Анализ продаж»
5.1. Установка скидки, проверка
6. Остатки
7. Страница «Сайт»
5.1.1 Страница авторизации
Для начала в БД добавим пользователя с логином «2» и паролем «2». При вводе этих данных авторизация проходит успешно, и мы попадаем на главную форму. Но если ввести не существующие данные, то получим соответствующее сообщение. Пример приведён на рисунке 5.1.
Рисунок 5.1. Тестирование авторизации
5.1.2 Страница «Информация»
Для демонстрации возьмем за основу объект «Товары».
Добавим некоторый товар в БД. Пример приведен на рисунке 5.2.
Рисунок 5.2. Тестирование добавления нового товара
Код_товара = 19 для новой запчасти. Теперь добавим к последнему занесенному товару пять единиц. На рисунке 5.3. видно, что пользователь ввел значение 19 в поле «Код товара» и значение 5 в поле «Остаток шт». В итоге на складе стало 8 единиц товара «Двери передние» для автомобиля «Nissan Almera Classic».
Рисунок 5.3. Тестирование добавления товара к существующему
Удалим товар «Моторное масло Mobil 1» из БД. Сначала произведем поиск товара по брэнду (Рисунок 5.4), затем удалим его по коду (Рисунок 5.5). Если поля не будут заполнены, то будет выведено соответствующее сообщение
Рисунок 5.4. Тестирование поиска товара
Код товара известен, он равен 1. Введем данный код в поле «Код товара», после чего нажмем на кнопку «Удалить». На рисунке 18 видно, что товары начинаются уже со второго кода после того, как мы удалили товар с идентификатором = 1. То есть данная функция работает корректно.
Рисунок 5.5. Тестирование удаления товара
5.1.3 Заказы. Перевод в поставки
Допустим, что в магазин пришло два ранее заказанных руля для автомобиля Ferrarri FF. Чтобы перевести пришедший на склад товар в поставки, нужно узнать код товара, ввести его в соответствующее поле и нажать на кнопку «Перевести в поставки», после чего выведется информация о товаре. Нажимаем на кнопку «Инф. верна, перевести», и товар оказывается в поставках. Результат показан на рисунке 5.6.
Рисунок 5.6. Тестирование перевода товара из заказов в поставки
5.1.4 Поставки. Установка цены продажи на товар
После перевода из заказов у товара есть только цена заказа. Администратор рассчитывает наценку и добавляет к товару цену продажи следующим образом (Рисунок 5.7).
Рисунок 5.7. Тестирование установки цены продажи на товар
5.1.5 Тестирование продажи товара
После тестирования фундаментального функционала по работе с БД, следующей по приоритету функцией является продажа товара, которая должна работать абсолютно безотказно, без малейших ошибок. Также нужно, чтобы покупатель был удовлетворён покупкой, а магазин не понёс убытки.
Занесем Смирнова Дмитрия Александровича как нового покупателя в БД прямо со страницы продажи. Данная функция сработала корректно. Теперь можно совершить продажу на имя нашего нового клиента (Рисунок 5.8).
В процессе заполнения полей при продаже можно заметить, что кнопка «Продать» становится активной только после заполнения всех полей и расчёта суммы продажи. Это сделано для того, чтобы все поля были заполнены, а расчеты для последующих экономических учетов и анализов были максимально точными, без потерь. В целях хранения исключительно адекватных данных установлены запреты на ввод не подходящих по смыслу символов (Например, в поле «Номер телефона» нельзя вводить буквы, а в поле «Ф.И.О.» нельзя вводить цифры).
Рисунок 5.8. Тестирование продажи товара новому покупателю
После нажатия на кнопку «Продать», происходит следующее:
1) Со склада вычитается проданное количество выбранного товара
2) В таблицу БД «Продажи», в поле «Выручка» заносится разность стоимости закупки, умноженной на проданное количество и стоимости продажи, умноженной на количество
3) Далее данные об этой продаже заносятся в БД
После этого проверены таблицы БД, где убедились, что функция сработала корректно.
5.1.6 Тестирование отмены продажи товара
После отмены продажи товара (Рисунок 5.9) должно произойти следующее:
1) Проданное количество товара вернётся на склад
2) Из таблицы «Продажи» удалится запись об этой продаже
Рисунок 5.9. Тестирование отмены продажи
Проверяем таблицы БД после отмены и получаем желаемый результат - данные в таблицах соответствуют тем, которые были до продажи товара, а это значит, что товар успешно вернулся на склад в правильном количестве, и запись о продаже отсутствует.
5.1.7 Тестирование отчётов
Произведем расчет продаж за месяц с 1 апреля по 1 мая вручную.
Сумма = 3000 + 1400 + 1400 + 1400+ 1400 + 390 + 1400 + 150 + 650 + 390 = 11580 (Рисунок 5.10). Выручка на данный момент выводится только как сумма всех записей (Стоимость_продажи - Стоимость_закупки) за выбранный период. На данный момент нет функционала, предоставляющего выручку с учётом налогов, заработных плат персонала и других расходов магазина.
Рисунок 5.10. Тестирование отчётов
5.1.8 Тестирование анализа продаж товаров
Анализ продаж производится подсчётом количества проданных товаров каждого типа за выбранный промежуток времени. В соответствии с этим данные сортируются и выводятся пользователю как «Топ - 5 хорошо продаваемых» и «Топ - 5 плохо продаваемых товаров». Справа выводится самый плохо продаваемый вид товара, предлагается сделать скидку на него (Рисунок 5.11). Также как в предыдущем пункте тестирования произведён расчёт данных вручную, и результаты сошлись с расчётом программы. Можно сказать, что данная функция тоже выполняется отлично.
Рисунок 5.11. Тестирование анализа продаж товаров
Раздел программы «Анализ товара» предусматривает возможность установки скидки на самый плохо продаваемый товар от 5% до 70%. Для тестирования правильности установки скидки на товар «Фильтр воздушный» производства фирмы «Росдеталь» возьмем 50% скидку. На данный момент цена продажи за единицу данного товара составляет 130 руб. После установки скидки 50% стоимость должна уменьшиться до 65 руб (Рисунок 5.12).
Рисунок 5.12. Тестирование правильности установки скидки на товар
5.1.9 Тестирование функции «Остатки»
Функционал данной подпрограммы достаточно прост. Имеется два поля: слева - заканчивающиеся товары (менее 8 ед. товара на складе, в том числе закончившиеся), справа - закончившиеся товары выводятся отдельно для удобства. Сверимся с данными в таблице БД «Товары», выделим, что функция действительно работает корректно (Рисунок 5.13).
Рисунок 5.13. Тестирование правильности вывода остатков
5.1.10 Тестирование подпрограммы для работы с пользователями сайта
Для примера авторизуемся на сайте под логином dima11 и зарезервируем товар «Фильтр воздушный» фирмы «Росдеталь» 1шт (Рисунок 5.14).
Рисунок 5.14. Проверка резервирования товара на пользователя
После этого заходим в программу и продаем данный резерв пользователю dima11 (Рисунок 5.15).
Рисунок 5.15. Продажа резерва реальному покупателю с логином dima11
После нажатия кнопки «Продать» происходят те же манипуляции над данными, что и при нажатии одноимённой кнопки на форме продажи.
Для тестирования правильности продажи проверим соответствующие таблицы БД («Товары», «Продажи»). В таблице «Товары» количество проданного товара составляло 121 шт. На данный момент количество данного товара составляет 120 шт. В таблице «Продажи» появилась соответствующая этой продаже запись (Рисунок 5.16).
Рисунок 5.16. Данные о продаже товара присутствуют в таблице «Продажи»
Тестирование элемента прошло успешно, ошибок не выявлено.
5.2 Тестирование сайта
Составим план тестирования сайта:
1. Правильность выполнения функций по нажатию кнопок и переходов по гиперссылкам
2. Правильность выполнения SQL - запросов к БД. Регистрация и авторизация
3. Слайдер Slick
5.2.1 Правильность выполнения функций по нажатию кнопок и переходов по гиперссылкам
Кнопки, зафиксированные в шапке (Рисунок 5.17) как гиперссылки выполняются адекватно, кнопка «О нас» активирует скрипт по плавному перемещению в подвал сайта, также выполняется правильно и без лишних задержек.
Рисунок 5.17. Шапка сайта
После нажатия на кнопку «Товар в наличии» пользователь попадает на страницу выбора категории товара (Рисунок 5.18), где каждая гиперссылка выполняет переход абсолютно верно.
Рисунок 5.18. Категории
Гиперссылка, находящаяся в подвале сайта (Рисунок 5.19) осуществляет переход в группу магазина в социальной сети ВКонтакте. Переход осуществляется адекватно.
Рисунок 5.19. Подвал сайта
5.2.2 Правильность выполнения SQL-запросов к БД
Некоторые кнопки активируют конструкцию, написанную на языке PHP, предназначенную для выполнения SQL - запроса, поэтому рассмотрим эти кнопки в данном пункте. Начнем с работы формы регистрации (Рисунок 5.20).
Рисунок 5.20. Страница регистрации
Для проверки отправки данных после нажатия на кнопку «Зарегистрироваться» зарегистрируем нового пользователя «Иванов Пётр Петрович», логин: «abcd9», пароль: «11111». После регистрации перейдем в панель управления БД PhpMyAdmin (Рисунок 5.21), где убедимся, что данные отправлены успешно в нужные поля, а конструкция «$user->password = password_hash($data['password'], PASSWORD_DEFAULT);» для шифрования пароля выполняется успешно. Данная конструкция является стандартной в технологии RedBean. Использование этой технологии позволяет увеличить защиту проекта с использованием несложных готовых конструкций.
Рисунок 5.21. Пользователь успешно зарегистрирован, пароль зашифрован
Страница авторизации позволяет пользователю войти на сайт под своим именем и получить функции, которые недоступны гостю (личный кабинет, резервирование товара). Для страницы регистрации и авторизации поставлены условия для вывода ошибок ввода данных (Рисунок 5.22). Эти сообщения выводятся сверху на красном фоне для идентификации поля, которое введено неверно или данные не являются адекватными для данного поля. На рисунке 5.22. пароль введен неверно, но если все данные совпали, то пользователь попадает на главную страницу и может пользоваться всеми возможностями сайта.
Рисунок 5.22. Поле заполнено неверно
Отметим, что страница регистрации и авторизации прошли тестирование отлично, поэтому перейдем к выводу товаров (Рисунок 5.23).
Рисунок 5.23. Вывод ассортимента
Товар выводится правильно в зависимости от выбора категории. Зарезервируем 1ед. товара «Дверь передняя» для автомобиля «Nissan Almera Classic» на пользователя dima11. Проверим в клиентском приложении наличие данного резерва (Рисунок 5.24).
Рисунок 5.24. Результат работы кнопки «Зарезервировать»
SQL - запрос по занесению в БД данных о резерве на конкретного пользователя работает корректно. Далее проверили следующие конструкции:
1. «$result11 = $mysqli->query("UPDATE Товары,Резервирование set Товары.Остаток_шт=Товары.Остаток_шт+Резервирование.Количество WHERE Код_товара = Резервирование.Код_тов and Резервирование.Дата_резерва < (NOW() - INTERVAL 3 DAY)");
2. «$result22 = $mysqli->query("DELETE FROM Резервирование WHERE Дата_резерва < (NOW() - INTERVAL 3 DAY)");»
Первая конструкция возвращает товар на склад в нужном количестве через 3 дня после резервирования пользователем, если его не выкупили. Вторая конструкция удаляет сразу же после выполнения первой конструкции данный резерв из соответствующей таблицы базы данных. Данные конструкции сработали корректно по истечению трёх дней.
5.2.3 Тестирование слайдера «Slick»
Слайдер работает корректно, без замечаний. Изображения автоматически перелистываются каждые три секунды, также можно выбирать фотографии благодаря нажатиям на круглые, которые расположены под самим слайдером (Рисунок 5.25). Кнопки работают правильно, без нареканий.
Рисунок 5.25. Внешний вид слайдера «Slick»
6. Внедрение продукта в производство
Для внедрения проекта в производство следует составить план действий, представленный в таблице 6.1.
Таблица 6.1. Этапы внедрения ПП в производство
Этап работы |
Результат |
Срок |
|
Подготовка рабочего места на предприятии |
Приобретение со стороны предприятия необходимого ПО и аппаратного обеспечения |
10 дней |
|
Установка 1 |
Установка ПО для ПП |
1 день |
|
Установка 2 |
Установка клиентского приложения посредством запуска установочной программы, установка БД |
1 день |
|
Внедрение сайта |
Покупка домена, хостинга, загрузка сайта на хостинг |
1 день |
|
Обучение персонала |
Персонал и администрация успешно используют функции АСУ |
10 дней |
|
Работы с БД |
Наполнение магазина ассортиментом, клиентами, пользователями и т.д. |
3 дня |
|
Проведение предварительных испытаний |
Испытания системы на работоспособность и соответствие техзаданию, устранение неисправностей |
10 дней |
|
Проведение опытной эксплуатации |
Опытная эксплуатация. Доработка ПО и дополнительная наладка технических средств |
10 дней |
|
Проведение приёмочных испытаний |
Испытания системы в соответствии с ПИМ проведены. Устранение неисправностей и внесение изменений в документацию проведено. |
5 дней |
Заключение
На данный момент проект разработан. Из промежуточного тестирования интерфейса и функций ПП можно сказать, что и клиентское приложение, и сайт работают корректно и выполняют свои функции достаточно быстро. Интерфейс можно назвать интуитивно понятным из результатов тестирования на реальных пользователях разных возрастов, поэтому можно сказать, что цель по созданию удобного для пользователя интерфейса достигнута. Задача по улучшению читабельности кода, инкапсуляции объектов, добавлению новых функций с применением шаблонов проектирования достигнута. Доработка существующего функционала программного продукта в данный момент не будет составлять особой сложности из-за повышения читабельности и структурированности кода. После добавления шаблона Singleton объем программного кода уменьшился на 900 строк. Работа с экономическим анализом продаж за определенный промежуток времени стала намного удобнее из-за применения шаблона Adapter. Браузер обрёл несколько важных функций с применением шаблона Command. Примерный срок для полноценного внедрения в производство: 52 рабочих дня. На данный момент абсолютно все функции сайта и клиентского приложения выполняются правильно, выдают адекватные результаты без сбоев, а также выполняются быстро.
Список использованных источников
1. CloudShop [Электронный ресурс]: офиц. сайт. - Режим доступа: https://cloudshop.ru.
2. ABM Retail [Электронный ресурс]: офиц. сайт. - Режим доступа: http://abmcloud.com/solution/upravleniye-magazinami/
3. 1С [Электронный ресурс]: офиц. сайт. - Режим доступа: http://solutions.1c.ru/catalog/service-center/features
4. Обзор СУБД devacademy [Электронный ресурс]: офиц. сайт. - Режим доступа: http://devacademy.ru/posts/sqlite-vs-mysql-vs-postgresql/
5. Wikipedia - свободная энциклопедия [Электронный ресурс]: офиц. сайт. - Режим доступа: https://ru.wikipedia.org
6. prj-exp [Электронный ресурс]: офиц. сайт. - Режим доступа: http://www.prj-exp.ru/dwh/dwh_stages_of_development.php
7. Смирнов Д.А. УМНЫЙ ИНТЕРФЕЙС ПОЛЬЗОВАТЕЛЯ ДЛЯ АСУ МАГАЗИНА АВТОЗАПЧАСТЕЙ//Молодёжь и XXI век - 2017. Материалы международной молодёжной научной конференции., 22 февраля 2017г. /ЮЗГУ. - Курск, 2017 - Т.3, С. 66 - 69.
8. Смирнов Д.А. РАЗРАБОТКА АСУ ДЛЯ МАГАЗИНА АВТОЗАПЧАСТЕЙ // Материалы межрегиональной научной конференции Х ежегодной научной сессии аспирантов и молодых ученых. /,. - Вологда, 2017 - Т.1, С. 104 - 107.
Приложение 1
Программный код формы авторизации:
#pragma endregion
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
//выполняем sql запрос к базе для синхронизации вводимых имени польз и пароля
try {
String^ cmd = "select * from autorun2.users where user_name='" + this->username_txt->Text
+ "' and password='" + this->password_txt->Text + "';";
MySqlDataReader^ myReader = ConnToDB::getSingleton()->doSQLCommand(cmd);
int count = 0;
while (myReader->Read()) {
count = count + 1;
}
if (count == 1) {
//Если имя польз. и пароль введены верно, то переходим на форм2
this->Hide();
form2^ f2 = gcnew form2();
f2->ShowDialog();
this->Close();
}
else if (count > 1) {
MessageBox::Show("Дублированные имя пользователя и пароль");
}
else {
MessageBox::Show("Имя пользователя и пароль введены неверно");
}
}
catch (Exception^ ex) {
MessageBox::Show(ex->Message);
}
}
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
label2->Text = System::DateTime::Now.Date.ToShortDateString();
System::String^ WeekDayName;
switch (System::DateTime::Now.DayOfWeek) {
case System::DayOfWeek::Sunday:
WeekDayName = "воскресенье" + ","; break;
case System::DayOfWeek::Monday:
WeekDayName = "понедельник" + ","; break;
case System::DayOfWeek::Tuesday:
WeekDayName = "вторник" + ","; break;
case System::DayOfWeek::Wednesday:
WeekDayName = "среда" + ","; break;
case System::DayOfWeek::Thursday:
WeekDayName = "четверг" + ","; break;
case System::DayOfWeek::Friday:
WeekDayName = "пятница" + ","; break;
case System::DayOfWeek::Saturday:
WeekDayName = "суббота" + ","; break;
}
label3->Text = WeekDayName;
if (System::DateTime::Now.TimeOfDay.Minutes < 10) {
label5->Text = System::DateTime::Now.TimeOfDay.Hours + ":0" + System::DateTime::Now.TimeOfDay.Minutes;
}
else {
label5->Text = System::DateTime::Now.TimeOfDay.Hours + ":" + System::DateTime::Now.TimeOfDay.Minutes;
}
}
private: System::Void Form1_FormClosing(System::Object^ sender, System::Windows::Forms::FormClosingEventArgs^ e) {
Application::Exit();
}
};
}
Приложение 2
Программный код Form 2.h:
form2(void)
{
InitializeComponent();
browserExecuted = gcnew ArrayList();
browserUnexecuted = gcnew ArrayList();
this->Height = 445;
execute(gcnew NavigateCommand(browser, "http://google.com"));
//////choose_cli заполнение
choose_cli->Items->Clear();
//выполняем sql запрос к базе для добавления введенных данных на сервер в базу
try {
MySqlDataReader^ myReader = ConnToDB::getSingleton()->doSQLCommand("select Ф_И_О from autorun2.Клиенты ;");
ArrayList^ names = gcnew ArrayList();
while (myReader->Read()) {
names->Add(myReader->GetString("Ф_И_О"));
}
for each (String^ name in names) {
choose_cli->Items->Add(name);
}
}
catch (Exception^ex) {
MessageBox::Show(ex->Message);
}
choose_tov->Items->Clear();
try {
MySqlDataReader^ myReader = ConnToDB::getSingleton()->doSQLCommand("select distinct Название_товара from autorun2.Товары where Категория = '"+categ->Text+"' ;");
ArrayList^ names = gcnew ArrayList();
while (myReader->Read()) {
names->Add(myReader->GetString("Название_товара"));
}
for each (String^ name in names) {
choose_tov->Items->Add(name);
}
}
catch (Exception^ex) {
MessageBox::Show(ex->Message);
}
categ1->Items->Clear();
try {
MySqlDataReader^ myReader = ConnToDB::getSingleton()->doSQLCommand("select distinct Категория from autorun2.Товары ;");
ArrayList^ names1 = gcnew ArrayList();
while (myReader->Read()) {
names1->Add(myReader->GetString("Категория"));
}
for each (String^ name1 in names1) {
categ1->Items->Add(name1);
}
}
catch (Exception^ex) {
MessageBox::Show(ex->Message);
}
categ2->Items->Clear();
try {
MySqlDataReader^ myReader = ConnToDB::getSingleton()->doSQLCommand("select distinct Категория from autorun2.Товары ;");
ArrayList^ names2 = gcnew ArrayList();
while (myReader->Read()) {
names2->Add(myReader->GetString("Категория"));
}
for each (String^ name2 in names2) {
categ2->Items->Add(name2);
}
}
catch (Exception^ex) {
MessageBox::Show(ex->Message);
}
categ3->Items->Clear();
try {
MySqlDataReader^ myReader = ConnToDB::getSingleton()->doSQLCommand("select distinct Категория from autorun2.Товары ;");
ArrayList^ names3 = gcnew ArrayList();
while (myReader->Read()) {
names3->Add(myReader->GetString("Категория"));
}
for each (String^ name3 in names3) {
categ3->Items->Add(name3);
}
}
catch (Exception^ex) {
MessageBox::Show(ex->Message);
}
categ->Items->Clear();
try {
MySqlDataReader^ myReader = ConnToDB::getSingleton()->doSQLCommand("select distinct Категория from autorun2.Товары ;");
ArrayList^ names = gcnew ArrayList();
while (myReader->Read()) {
names->Add(myReader->GetString("Категория"));
}
for each (String^ name in names) {
categ->Items->Add(name);
}
}
catch (Exception^ex) {
MessageBox::Show(ex->Message);
}
choose_cli2->Items->Clear();
try {
MySqlDataReader^ myReader = ConnToDB::getSingleton()->doSQLCommand("select * from autorun2.Клиенты ;");
ArrayList^ names = gcnew ArrayList();
while (myReader->Read()) {
names->Add(myReader->GetString("Ф_И_О"));
}
for each (String^ name in names) {
choose_cli2->Items->Add(name);
}
}
catch (Exception^ex) {
MessageBox::Show(ex->Message);
}
if (txt_sum->Text == "") {
prod->Enabled = false;
}
}
protected:
~form2()
{
if (components)
{
delete components;
}
}
private: ArrayList^ browserExecuted;
private: ArrayList^ browserUnexecuted;
#pragma endregion
private: void execute(Command^ command) {
browserUnexecuted->Clear();
command->execute();
browserExecuted->Add(command);
}
private: void undo() {
if (browserExecuted->Count == 0) {
return;
}
Command^ command = dynamic_cast<Command^>(browserExecuted[browserExecuted->Count - 1]);
browserExecuted->RemoveAt(browserExecuted->Count - 1);
command->undo();
browserUnexecuted->Add(command);
}
private: void redo() {
if (browserUnexecuted->Count == 0) {
return;
}
Command^ command = dynamic_cast<Command^>(browserUnexecuted[browserUnexecuted->Count - 1]);
browserUnexecuted->RemoveAt(browserUnexecuted->Count - 1);
command->execute();
browserExecuted->Add(command);
}
//Кнопка "выход"
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
Application::Exit();
}
//кнопка вывода информации из таблицы "клиенты"
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {
//Чистим видимые текстбоксы при повторном нажатии на кнопку
//Лишние лейблы делаем невидимыми
//Лишние текстбоксы делаем невидимыми
//Лишние кнопки делаем невидимыми
//Изменяем имена лейблов на актуальные для выбранной таблицы
lbl1->Text = "Код клиента";
lbl2->Text = "Ф.И.О";
lbl3->Text = "Телефон";
lbl4->Text = "Автомобиль";
lbl5->Text = "WIN";
ConnToDB::getSingleton()->fillTable(dataGridView1, "select Код_клиента,Ф_И_О as 'Ф.И.О',Телефон,Автомобиль,WIN from autorun2.Клиенты ;");
}
//кнопка вывода информации из таблицы "товары"
private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {
//Лишние лейблы делаем невидимыми
//Лишние кнопки делаем невидимыми
//Лишние текстбоксы делаем невидимыми
//Изменяем имена лейблов на актуальные для выбранной таблицы
lbl1->Text = "Код товара";
lbl2->Text = "Категория";
lbl3->Text = "Брэнд";
lbl4->Text = "Наименование";
lbl5->Text = "Стоимость закупки";
lbl6->Text = "Стоимость продажи";
lbl7->Text = "Остаток шт.";
lbl8->Text = "Для автомобиля";
lbl9->Text = "Размеры";
Подобные документы
Разработка концептуальной (инфологической) модели, выбор языка и среды программирования. Разработка блок-схемы алгоритмов для отдельных подпрограмм. Пользовательский интерфейс автоматизированной системы. Требования к клиентскому программному обеспечению.
дипломная работа [2,4 M], добавлен 10.07.2017Функциональные требования к автоматизированной системе управления базой шаблонов зубочисток, ее жизненный цикл. Разработка модели производственного предприятия ОАО "Зубочистка+": миссия, цели, стратегия; архитектура АСУ; тестирование, стратегия внедрения.
курсовая работа [3,8 M], добавлен 13.08.2012Общая характеристика и анализ требований к разрабатываемому приложению, функциональные особенности и сферы практического применения. Проектирование базы данных и выбор системы управления ею. Тестирование приложения и выбор языка программирования.
дипломная работа [791,8 K], добавлен 10.07.2017Проектирование базы данных для автоматизированной системы "Склад". Разработка концептуальной модели (ER-диаграмма). Преобразование в реляционную модель и ее нормализация. Разработка запросов к базе данных на языке SQL. Скрипт для создания базы данных.
курсовая работа [161,8 K], добавлен 07.10.2013Создание базы данных для автоматизации электронного магазина по продаже шин в терминале ER моделирования. Построение логической и концептуальной модели базы данных. Её реализация в интерактивной среде Интернет. Расчет экономической эффективности магазина.
курсовая работа [4,5 M], добавлен 10.10.2012Выбор, обоснование и особенности работы СУБД. Характеристика языков программирования. Разработка структурной и функциональной модели информационной системы аптеки. Проектирование программной среды АИС и ее интерфейса. Построение модели базы данных.
курсовая работа [442,3 K], добавлен 21.04.2012Выбор основных средств и методологии проектирования и СУБД. Построение инфологической модели предметной области. Выявление полного перечня ограничений целостности. Описание информационных потребностей пользователей и выбор способов их реализации.
курсовая работа [2,9 M], добавлен 25.03.2011Анализ информационных потоков. Разработка структуры таблиц базы данных. Выбор CASE-средства для проектирования информационной системы и среды программирования. Разработка программных модулей (программного обеспечения). Подготовка справочных баз данных.
дипломная работа [6,8 M], добавлен 19.11.2013Разработка информационной и инфологической модели базы данных на тему "Командировка". Выбор модели данных и составление ее концептуальной схемы. Получение доступа к БД средствами Delphi, разработка пользовательского интерфейса. Реализация SQL-запросов.
реферат [1,2 M], добавлен 16.06.2009Классификация систем управления базами данных. Выбор операционной системы, языка программирования, среды разработки (IDE) и дополнительных компонент. Разработка интерфейса и функций программы по управлению складом, её тестирование и исходный код файлов.
курсовая работа [487,3 K], добавлен 25.12.2015