Информационная система для автоматизации деятельности ателье

Разработка информационной системы для автоматизации работы с клиентами фотоателье. Обзор известных аналогов. Характеристика средств разработки. Проектирование базы данных. Проектирование пользовательского интерфейса. Методы реализации серверной части.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 14.12.2019
Размер файла 5,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

СОДЕРЖАНИЕ

фотоателье данные база проектирование

ВВЕДЕНИЕ

1 АНАЛИЗ ТРЕБОВАНИЙ К РАЗРАБАТЫВАЕМОЙ СИСТЕМЕ

1.1 Постановка задачи

1.2 Обзор аналогов

1.3 Анализ предметной области

1.3.1 Анализ организационной структуры автоматизируемого подразделения

1.3.2 Бизнес правила

2 ПРОЕКТИРОВАНИЕ

2.1 Выбор архитектуры

2.2 Выбор средств разработки

2.3 Проектирование базы данных

2.4 Проектирование пользовательского интерфейса

3 РЕАЛИЗАЦИЯ

3.1 Реализация серверной части

3.2 Реализация клиентской части

4 ТЕСТИРОВАНИЕ

4.1 Методика тестирования

4.2 Результаты тестирования

ЗАКЛЮЧЕНИЕ

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

ПРИЛОЖЕНИЕ 1

ПРИЛОЖЕНИЕ 2

ПРИЛОЖЕНИЕ 3

ПРИЛОЖЕНИЕ 4

ПРИЛОЖЕНИЕ 5

ПРИЛОЖЕНИЕ 6

ПРИЛОЖЕНИЕ 7

ВВЕДЕНИЕ

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

Автоматизация какого-либо объекта предполагает внедрение в него функций, выполняемых машиной, а не человеком. В данной выпускной квалификационной работе был выбран объект «Фотоателье». Фотоателье включает в себя много повторяющихся действий по оформлению документов, в большинстве случаев при работе с клиентами. Работа будет выполняться программой, которая позволит оперативно обрабатывать информацию. Основным достоинством программы является скорость обработки, удобное представление, автоматическое заполнение некоторых данных, богатые возможности по их обработке. К тому же автоматизация фотоателье, повысит уровень сервиса. Внедрение программы позволит ввести новые виды услуг, улучшить качество обслуживания. Например, может быть введена услуга по созданию цифровых фотоальбомов на цифровых носителях (компакт дисках) и т.д.

Цель дипломного проекта - разработка информационной системы для автоматизации работы с клиентами фотоателье.

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

Анализ предметной области и определение требований к информационной системе

Спроектирована схема базы данных

Определение состава приложений

Реализовано приложение администратора

Реализация приложения менеджера для принятия заказов

1 АНАЛИЗ ТРЕБОВАНИЙ К РАЗРАБАТЫВАЕМОЙ СИСТЕМЕ

1.1 Постановка задачи

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

Добавление, обновление и удаление данных об услугах

Добавление, обновление и удаление данных о фотосъемках

Добавление, обновление и удаление данных о статусах готовности заказа

Добавление, обновление и удаление данных о клиенте

Добавление, обновление и удаление данных о фотографе - менеджере

Добавление, обновление и удаление заявки на услугу

Добавление, обновление и удаление данных на фотосъемку

Автоматическое формирование и сохранение квитанции на услугу или на фотосъемку.

Предполагается, что одновременно могут работать с системой администратор и 10 фотографов - менеджеров.

1.2 Обзор аналогов

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

Основными на рынке программными продуктами, которые помогают автоматизировать деятельность фотоателье являются:

Конфигурация «ФОТОСАЛОН»

Конфигурация "Фотосалон" - используется для автоматизации фотосалонов, а также магазинов, студий, центров, которые занимаются оказанием фотоуслуг различного рода. С помощью этого программного продукта можно усовершенствовать обслуживание в фотоателье благодаря ведению учета клиентов и фотографов, контроль выполнения услуг, заказов, отслеживание эффективности работы фотографов. Разработанный функционал программы позволяет настроить ведение учета на складе продукции, контроль продажи и поступления товаров. Конфигурация легко и быстро настраивается под конкретные требования заказчика. [1]

2. 1С:Фотоуслуги

Отраслевое решение 1С Фотоуслуги позволяет автоматизировать работу фотостудии или торговых предприятий, которые продают фототовары и оказывают услуги печати фотографий. На первый взгляд, необходимость автоматизировать такой малый бизнес отсутствует. Кроме того, такие компании, как правило, оказывают широкий спектр услуг, в том числе и полиграфических. А это уже работа с корпоративными заказчиками, подготовка необходимых документов о факте совершения покупки для отчетности клиентов. [2]

Сравнение программ представлено в Таблице 1.

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

Таблица 1. Сравнение программ Конфигурация «Фотосалон и 1С:Фотоуслуги»

Функции

Конфигурация «Фотосалон»

1С:Фотоуслуги

Учет клиентов фотосалона

+

+

Учет товаров

+

+

Возможность формирования заказов на фотосессии

+

+

Учет фотосъемок и времени, затраченного на работу

+

_

Учет фотографов

+

+

Учет готовых фотографий и их хранение в единой базе

+

_

Формирование отчетов

+

+

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

+

+

Возможность импорта и экспорта данных

+

_

Управление товарными запасами ассортиментом

_

+

Управление имуществом

_

+

Данное ПО можно отнести к CRM системе. Такие системы предназначены для автоматизации стратегий взаимодействия с заказчиками (клиентами), в частности, для повышения уровня продаж, оптимизации маркетинга и улучшения обслуживания клиентов путем сохранения информации о клиентах и истории взаимоотношений с ними, установления и улучшения бизнес-процессов и последующего анализа результатов.[3]

1.3 Анализ предметной области

1.3.1 Анализ организационной структуры автоматизируемого подразделения

Схема организации структуры фотоателье представлена на Рисунке 1.

Рисунок 1 - Схема организации структуры фотоателье

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

1.3.2 Бизнес правила

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

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

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

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

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

Цена за съемку вычисляется как цена за час съемки на количество отснятых часов

В фотоателье ведется список клиентов, куда заносятся следующие данные: ФИО, дата рождения, номер телефона, адрес почты, его идентификатор.

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

Рисунок 2 - USE-CASE диаграмма

При заказе на фотосъемку указывается дата , время фотосъемки, чтобы фотограф помнил о предстоящем заказе

При заказе на услугу помещается ссылка на файл с фотографией заказываемой услуги.

На рисунке 2 представлена USE-CASE диаграмма, отражающая отношения пользователей с базой данных

2 ПРОЕКТИРОВАНИЕ

2.1 Выбор архитектуры

Архитектурой принято называть совокупность принципов организации программного продукта. Сюда также входят элементы и видимые свойства программы. [4] Для проектируемой системы была выбрана классическая двухуровневая архитектура «клиент сервер». На рисунке 3 представлена структурная схема системы.

Рисунок 2 - структурная схема системы.

Система с такой структурной организацией разделяется на две части:

- Клиентскую - на которую возлагается функция взаимодействия с пользователем:

- Серверная - берущая на себя основную часть функций по обработке информации.

Архитектура «клиент - сервер» позволит свободно расширять функции системы, обеспечит возможность внедрения новых компонентов.

2.2 Выбор средств разработки

Выбор средств разработки - это один из самых основных этапов при разработке программного продукта.

Для реализации серверной части была выбрана СУБД MySQL.

MySQL - свободная реляционная система управления базами данных, является решением для малых и средних приложений. Обычно MySQL используется в качестве сервера, к которому обращаются локальные или удаленные клиенты. Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц: пользователи могут выбрать как таблицы типа MyISAM, поддерживающие полнотекстовый поиск, так и таблицы InnoDB, поддерживающие транзакции на уровне отдельных записей.

MySQL обладает большим количеством преимуществ перед другими системами:

1. СУБД MySQL является одной из самых быстрых баз данных среди имеющихся на современном рынке.

2. СУБД MySQL является высокопроизводительной и относительно простой в использовании СУБД, которую значительно проще инсталлировать и администрировать, чем многие другие большие системы.

3. СУБД MySQL распространяется бесплатно для домашнего использования.

4. MySQL понимает команды SQL, поддерживает интерфейс ODBC, протокол интерфейса с базами данных, разработанный компанией Microsoft.

5. Сервер позволяет подключаться одновременно неограниченному количеству пользователей. Доступ к серверу можно осуществить в интерактивном режиме с помощью различных интерфейсов, позволяющих вводить запросы и просматривать полученные результаты: это программы-клиенты, работающие с командной строкой, Web-броузеры, программы-клиенты, работающие в системе Windows, это, наконец, программные интерфейсы для языков C, Perl, Java, PHP и Python. Так что можно использовать как готовое клиентское программное обеспечение, так и создавать свое собственное.

6. MySQL предназначена для работы в сети, может быть доступна через Интернет, но при этом снабжена развитой системой защиты от несанкционированного доступа.

7. MySQL отлично работает как под управлением разных версий UNIX, так и под управлением других систем: Windows и OS/2. При этом система работает как на мощных серверах, так и на домашних ПК.

8. Дистрибутив СУБД MySQL можно получить, воспользовавшись Web-браузером. Что самое важное - можно получить и исходный код и внести в него коррективы. [5]

Для удобства работы с MySQL разработка серверной части будет производиться в MySQL Workbench 6.3.

MySQL Workbench - инструмент для визуального проектирования баз данных, интегрирующий проектирование, моделирование, создание и эксплуатацию БД в единое бесшовное окружение для системы баз данных MySQL. [6]

Для Разработки клиентского приложения выбран C#.

Исходя из особенностей языка программирования C#, сформулируем основные преимущества данного языка.

- Язык программирования C# претендует на подлинную объектную ориентированность (всякая языковая сущность претендует на то, чтобы быть объектом);

- Компонентно-ориентированный подход к программированию, способствующий меньшей машинно-архитектурной зависимости результирующего программного кода, гибкости, переносимости и легкости повторного использования (фрагментов) программ;

-Ориентация на безопасность кода (в сравнении с С и С++);

-Унифицированная система типизации;

-Расширенная поддержка событийно-ориентированного программирования.

2.3 Проектирование базы данных

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

При проектировании базы данных для данной информационной системы были учтены:

Исходные данные, с которыми предстоит работать сотрудникам фотоателье;

Список выходных данных необходимых для формирования отчетов;

На первом этапе проектирования схемы базы данных идет проработка сущностей, которые необходимы для работы системы.

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

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

Концептуальная схема базы данных (на уровне сущностей предметной области) представлена на рисунке 4.

Рисунок 4 - Концептуальная схема базы данных.

Сущности, представленные в данной схеме представлены ниже:

photographers - содержит данные о менеджерах - фотографах фотоателье;

shooting_orders - содержит заказы на фотосъемку;

shooting - содержит наименования фотосъемок и цену на них;

status - содержит информацию об имеющихся статусах готовности услуги;

history-sh - содержит истории готовности заказа на фотосъемку;

customers - содержит сведения о клиентах;

photographer_services - таблица - связка услуг и фотографов, которые закреплены за этой услугой;

history - содержит истории готовности заказа на услуги;

cervices - содержит информацию об услугах, предоставляемых фотоателье;

cervices_orders - включает в себя заказы на любого рода услуги;

Логическая схема представлена на рисунке 5.

Рисунок 5 - Логическая схема базы данных.

Как видно из схемы, суммарное требование 3НФ выполняется: все атрибуты атомарные, и каждый из них зависит от полного значения ключа.

На рисунке 6 представлена физическая схема базы данных.

Для первичных ключей выбран тип int, так как это позволит реализовать автоикремент ключа.

Текстовые поля соответсвуют типу varchar, длина которых была выбрана в соответствии с данными.

Рисунок 6 - Физическая схема базы данных.

Для числовых полей выбран тип decimal.

В таблице photographers,history_sh,shooting_orders,history,customers представлены поля с типом date, так как будут содержать даты рождений, даты проведения фотосъемок или даты изменений статуса заказа.

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

2.4 Проектирование пользовательского интерфейса

Пользовательский интерфейс - это совокупность способов и средств взаимодействия пользователя с системой. Помогает сформировать представления о предметной области в ходе работы с программным продуктом.

Пользовательский интерфейс будет включать в себя приложение Администратора и приложение Менеджера - фотографа.

Основу приложения Администратора составляют пять вкладок. Рассмотрим в подробностях каждую из них. Внешний вид приложения представлен на рисунке 7.

Вкладка услуги, позволяет администратору работать с теми услугами, которые предлагает фотоателье. При занесении новой строки через textbox в таблицу и нажатии кнопки «Добавить» данные будут занесены в базу данных в таблицу Services, при нажатии на кнопку «удалить», данные будут из базы данных удалены, при нажатии кнопки «обновить» можно изменять уже имеющиеся данные в таблице Services. Внешний вид вкладки реализован с помощью DataGridView, трех элементов типа button и трёх элементов textbox.

Рисунок 7 - приложение «Администратор»

Вкладка «Съемки» представлена на рисунке 8. На этой вкладке представлены наименования съемок и цена за них. Данные заносятся через элементы textbox. При нажатии на кнопку «добавитьт» данные будут занесены в базу данных в таблицу Shooting, при нажатии на кнопку удалить, данные будут удалены из базы , при нажатии кнопки обновить можно изменять любые сведения в таблице. Вкладка реализована с помощью DataGridViev,3 button и 3 элементов типа textbox.

Рисунок 8 - вкладка «Съемки»

Вкладка «Клиенты» расположена на рисунке 9. На этой вкладке фиксируются данные о клиентах, которые пользуются услугами фотоателье. Данные заносятся при помощи textbox.По нажатию на кнопку «Добавить» данные будут занесены в базу данных в таблицу customers, при нажатии на кнопку удалить, данные будут удалены, при нажатии обновить выбранные данные будут обновлены как в базе данных так и в таблице. Вкладка реализована с помощью DataGridViev,трёх кнопок и 7 элементов textbox.

Рисунок 9 - вкладка «Клиенты»

Вкладка «Фотографы» представлена на рисунке 10. На этой вкладке хранятся данные о фотографах - менеджерах, работающих в данном фотоателье. После занесения данных в textbox и нажатия на кнопку «Добавить» данные будут занесены в базу данных в таблицу photographers, при нажатии на кнопку удалить, данные будут удалены из этой таблицы. Кнопка обновить позволит менеджеру изменять данные,которые он посчитает нужным. Вкладка реализована с помощью DataGridView, для отображения таблицы с имеющимися данными, 3 элементов типа button и 6 элементов типа Textbox.

Рисунок 10 - вкладка «Фотографы»

Вкладка «Статус» расположена на рисунке 11. На этой вкладке представлены данные о статусах, которые могут быть присвоены заказу в любой момент готовности. По нажатию на кнопку «Добавить» данные будут занесены в базу данных в таблицу status, при нажатии на кнопку удалить, данные будут удалены из таблицы, при нажатии кнопки «Обновить» строчка будет изменена и переписана в базе данных

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

Рисунок 11 - вкладка «Cтатус»

На рисунке 12 находится вкладка для оформления заказов на услугу. Сначала менеджер должен занести данные в textbox, после нажатия на кнопку добавить данные появляться в таблице servirces_orders. При нажатии на кнопку удалить данные из таблицы удалятся. Для внесения изменений в базу данных следует внести изменения в textbox и нажать кнопку обновить. После добавления нового заказа в базу, по нажатию кнопки «Посчитать цену» будет вычислена цена за заказ, исходя из количества заказываемого товара и цены за единицу товара. Отчетность по заказу будет представлена в форме квитанции, которую можно получить по нажатию кнопки «Оформить квитанцию» . Вкладка сделана с помощью DataGridViev, 5 элементов button и 7 элементов типа textbox.

Рисунок 12 - вкладка «Заказ на услугу»

На рисунке 13 представлена вкладка для оформления заказов на фотосъёмку. Менеджер заносит данные в textbox, после нажатия на кнопку добавить данные появляться в таблице shooting_orders. При нажатии на кнопку удалить данные из таблицы удалятся. При внесении изменений в textbox и нажатии кнопки обновить, данные обновятся и в базе данных и в DataGridView. После добавления нового заказа в базу, при нажатии кнопки «Посчитать цену» появится цена за заказ, которая формируется из количества часов, затраченных на съемку, и цены за час конкретной съемки. По нажатию кнопки «Оформить квитанцию» будет сформирована квитанция на фотосъемку. Вкладка сделана с помощью DataGridViev, 5 элементов button и 10 элементов типа textbox.

Рисунок 13 - вкладка «Заказ на фотосъемку»

На рисунке 14 представлена вкладка, где представлена форма квитанции для оплаты услуги. В этой каитанции будут отображатся : номер заказа, фамилия, имя и отчество заказчика, вид оказываемой услуги, количество товара, цена за заказ. При выборе пункта меню «Сохранение квитанции -> На услугу» все данные с квитанции сохраняться в файл формата exel. Форма квитанции в exel формате представлена в приложении 1.Вкладка сделана с помощью элементов Rich textbox, lable и 12 элементов типа textbox.

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

Рисунок 14 - вкладка «Квитанция на услугу»

При выборе пункта меню «Сохранение квитанции -> На фотосъемку» все данные с квитанции сохраняться в файл формата exel. Форма квитанции в exel формате представлена в приложении 2. Вкладка сделана с помощью элементов Rich textbox, lable и 13 элементов типа textbox

Рисунок 15 - вкладка «Квитанция на фотосъемку»

3 РЕАЛИЗАЦИЯ

3.1 Реализация серверной части

Для реализации системы используются СУБД MySQL и MySQLWorkbench 6.33.

Создание таблиц, входящих в базу данных «Фотоателье»

Таблица Customers(Клиенты)

CREATE TABLE `customers` (

`id_customer` int(10) unsigned NOT NULL,

`surname_c` varchar(45) NOT NULL,

`name_c` varchar(45) NOT NULL,

`middle_name_c` varchar(45) NOT NULL,

`births` date NOT NULL,

`phone_number` varchar(45) NOT NULL,

`e_mail` varchar(45) NOT NULL,

PRIMARY KEY (`id_customer`),

UNIQUE KEY `idCustomer_UNIQUE` (`id_customer`)

Таблица History (История)

CREATE TABLE `history` (

`id_history` int(11) NOT NULL DEFAULT '4',

`id_orders_s` int(11) NOT NULL DEFAULT '4',

`data_history` date NOT NULL,

`id_status` int(11) NOT NULL DEFAULT '4',

PRIMARY KEY (`id_history`)

Код для создания остальных таблиц в базе данных представлен в Приложении 1.

3.2 Реализация клиентской части

Приложения Администратора и фотографа - менеджера реализовано на языке C#, который широко используется для разработки программных продуктов.

Основными компонентами при разработке интерфейса стали:

DataDridView - предназначенный для отображения информации, хранящейся в базе данных, в табличном виде;

Label - используемый для подписей компонентов;

Button - кнопки, при нажатии на которые выполняются определенные действия необходимы для реализации функционала системы;

Textbox - поле, предназначенное для занесения информации

Чтобы загрузить данные из базы данных в элемент DataGridView, был прописан следующий код:

string config = "Server=127.0.0.1;Database=photostudio;Uid=root;Pwd=root;";

string query1 = string.Format("SELECT * FROM {0}", " services");

MySqlConnection conexao = new MySqlConnection(config);

conexao.Open();

MySqlCommand command1 = new MySqlCommand(query1, conexao);

MySqlDataAdapter adapter1 = new MySqlDataAdapter(command1);

DataTable data1 = new DataTable();

adapter1.Fill(data1);

dataGridView1.DataSource = data1;

conexao.Close();

Сначала прописывается путь подключения к базе данных, который включает в себя название сервера, название базы данных, логин и пароль. Далее создается SQL-запрос получения всех требуемых данных из базы. После этого создается соединение с базой данных, параметром которого является строка подключения. Соединение открывается, далее создается элемент типа MySqlCommand, параметрами которого является запрос и соединение с базой. Последним шагом будет создание элемента MySqlDataAdapter, параметром которого становится запрос и DataTable, который будет принимать этот adapter. В последствии этому компоненту DataTable присваивается свойство компонента DataGridView.

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

Рисунок 16. Отображение данных в DataGridView после загрузки приложения

Полный код загрузки данных из базы представлен в Приложении 2.

Для отображения данных в textbox, с целью их удаления, обновления был написан обработчик события СellClick, который произходит по щелчку любой ячейки DataGridView. Cначала свойство DataBindings у textBox3 очищается, потом заполняется данными из DataSourse. Листинг функций dataGridView3_CellClick:

textBox9.DataBindings.Clear();

textBox9.DataBindings.Add("Text",dataGridView3.DataSource, "id_customer");

textBox10.DataBindings.Clear();

textBox10.DataBindings.Add("Text",dataGridView3.DataSource, "surname_c");

textBox11.DataBindings.Clear();

textBox11.DataBindings.Add("Text",dataGridView3.DataSource, "name_c");

textBox12.DataBindings.Clear();

textBox12.DataBindings.Add("Text",dataGridView3.DataSource, "middle_name_c");

textBox13.DataBindings.Clear();

textBox13.DataBindings.Add("Text",dataGridView3.DataSource, "births");

textBox14.DataBindings.Clear();

textBox14.DataBindings.Add("Text",dataGridView3.DataSource, "phone_number");

textBox15.DataBindings.Clear();

textBox15.DataBindings.Add("Text",dataGridView3.DataSource, "e_mail");

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

public void button1_Click(object sender, EventArgs e)

{if (textBox1.Text == "" || textBox2.Text == "")

{ if (textBox1.Text == "")

{MessageBox.Show(

"Введите название услуги",

"Сообщение",

MessageBoxButtons.OK,

MessageBoxIcon.Information,

MessageBoxDefaultButton.Button1,

MessageBoxOptions.DefaultDesktopOnly);}

if (textBox2.Text == ""){

MessageBox.Show(

"Введите цену за услугу",

"Сообщение",

MessageBoxButtons.OK,

MessageBoxIcon.Information,

MessageBoxDefaultButton.Button1,

MessageBoxOptions.DefaultDesktopOnly);

}}

else{

string config = "Server=127.0.0.1; Database=photostudio; Uid=root; Pwd=root;";

MySqlConnection conexao = new MySqlConnection(config);

string query1 = string.Format("SELECT * FROM {0}", " services");

MySqlCommand command1 = new MySqlCommand(query1, conexao);

MySqlDataAdapter adapter1 = new MySqlDataAdapter(command1);

DataTable data1 = new DataTable();

adapter1.Fill(data1);

dataGridView1.DataSource = data1;

conexao.Close();

using (MySqlCommand command = new MySqlCommand("INSERT INTO services (id_service,name_service,price_for_service) VALUES (@id_service,@name_s ,@res1)", conexao)){

command.Parameters.Add(new MySqlParameter("id_service", Int32.Parse (textBox3.Text)));

command.Parameters.Add(new MySqlParameter("name_s", textBox1.Text));

command.Parameters.Add(new MySqlParameter("res1", Int32. Parse (textBox2. Text)));

conexao.Open();

command.ExecuteNonQuery();}

data1.Rows.Add(Int32.Parse(textBox3.Text),textBox1.Text,Int32.Parse (textBox2.Text));

dataGridView1.DataSource = data1;

conexao.Close();} }

нет

нет

да

да

нет

да

Рисунок 17 - Блок схема алгоритма добавления данных

Кнопки для сохранения на остальных вкладках сделаны по аналогии.

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

string config = "Server=127.0.0.1;Database=photostudio;Uid=root;Pwd=root;";

MySqlConnection conexao = new MySqlConnection(config);

string query1 = string.Format("SELECT * FROM {0}", " services");

MySqlCommand command1 = new MySqlCommand(query1, conexao);

MySqlDataAdapter adapter1 = new MySqlDataAdapter(command1);

DataTable data1 = new DataTable();

adapter1.Fill(data1);

dataGridView1.DataSource = data1;

conexao.Close();

using (MySqlCommand command = new MySqlCommand("UPDATE status SET id_status = '" + textBox4.Text + "', name_status = '" + textBox5.Text + "' WHERE id_status = @id_status", conexao))

{

command.Parameters.Add(new MySqlParameter("id_status", Int32.Parse(textBox4.Text)));

conexao.Open();

command.ExecuteNonQuery();

}

conexao.Close();

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

Для удаления неактуальной или неточной информации из базы данных был написан специальный обработчик на кнопку «Удалить». Листинг кнопки «Удалить»:

string config = "Server=127.0.0.1;Database=photostudio;Uid=root;Pwd=root;";

MySqlConnection conexao = new MySqlConnection(config);

conexao.Close();

using (MySqlCommand command = new MySqlCommand("DELETE FROM status WHERE id_status = @id_status", conexao)){

command.Parameters.Add(new MySqlParameter("id_status", Int32.Parse (textBox4.Text)));

conexao.Open();

command.ExecuteNonQuery();}

int rowIndex = dataGridView2.SelectedCells[0].RowIndex;

dataGridView2.Rows.RemoveAt(rowIndex);

conexao.Close();

loadtextbox1();

Примеры других обработчиков кнопок «Удалить» представлены в Приложении 4.

Рассмотрим алгоритм работы приложения фотографа- менеджера (рисунок 18)

Рисунок 18. Алгоритм работы с пользователя с приложением фотографа - менеджера

Для вычисления стоимости заказа на услугу и фотосъемку был написан специальный запрос:

select servirces_orders.amount * services.price_for_service as price_for_orders_s from servirces_orders,services where servirces_orders.id_sevice = services.id_service and id_orders_s = @id_orders_s

Для того чтобы запрос работал с приложением, он был помещен на обработчик кнопки «Посчитать цену». Листинг кнопки «Посчитать цену» на вкладке «Заказ на услугу»:

string config = "Server=127.0.0.1;Database=photostudio;Uid=root;Pwd=root;";

MySqlConnection conexao = new MySqlConnection(config);

conexao.Open();

string query3 = string.Format("select servirces_orders.amount * services.price_for_service as price_for_orders_s from servirces_orders,services where servirces_orders.id_sevice = services.id_service and id_orders_s = @id_orders_s");

MySqlCommand command3 = new MySqlCommand(query3, conexao);

command3.Parameters.Add(new MySqlParameter("id_orders_s", Int32.Parse (textBox1.Text)));

textBox4.Text = command3.ExecuteScalar().ToString();

Обработчик кнопки «Посчитать цену» для вкладки «Заказ на фотоуслугу» представлен в Приложении 5.

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

Запрос на получение вида услуги

select name_service from services,servirces_orders where services.id_service = servirces_orders.id_sevice and id_orders_s = @id_orders_s");

MySqlCommand command4 = new MySqlCommand(query4, conexao);

Запрос на получение вида фотосъемки

select name_shooting from shooting,shooting_orders where shooting.id_shooting = shooting_orders.id_shooting and id_orders_sh = @id_orders_sh")

Запрос на получение фамилии клиента

select surname_c from customers,shooting_orders where customers.id_customer = shooting_orders.id_customer and id_orders_sh = @id_orders_sh")

Запрос на получение имени клиента.

select name_c from customers,shooting_orders where customers.id_customer = shooting_orders.id_customer and id_orders_sh = @id_orders_sh

Запрос на получение отчества

select middle_name_c from customers,shooting_orders where customers.id_customer = shooting_orders.id_customer and id_orders_sh = @id_orders_sh

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

Листинг получения квитанции на услугу:

textBox18.DataBindings.Clear();

textBox18.DataBindings.Add("Text",dataGridView1.DataSource, "id_orders_s");

textBox23.DataBindings.Clear();

textBox23.DataBindings.Add("Text",dataGridView1.DataSource, "amount");

textBox24.DataBindings.Clear();

textBox24.DataBindings.Add("Text",dataGridView1.DataSource, "price_for_orders_s");

textBox26.DataBindings.Clear();

textBox26.DataBindings.Add("Text",dataGridView1.DataSource, "price_for_orders_s");

string config = "Server = 127.0.0.1; Database=photostudio; Uid=root;Pwd=root;";

MySqlConnection conexao = new MySqlConnection(config);

conexao.Open();

string query4 = string.Format("select name_service from services,servirces_orders where services.id_service = servirces_orders.id_sevice and id_orders_s = @id_orders_s");

MySqlCommand command4 = new MySqlCommand(query4, conexao);

command4.Parameters.Add(new MySqlParameter("id_orders_s", Int32.Parse(textBox1.Text)));

textBox19.Text = command4.ExecuteScalar().ToString();

string query5 = string.Format("select surname_c from customers,servirces_orders where customers.id_customer = servirces_orders.id_customer and id_orders_s = @id_orders_s");

MySqlCommand command5 = new MySqlCommand(query5, conexao);

command5.Parameters.Add(new MySqlParameter("id_orders_s", Int32.Parse(textBox1.Text)));

textBox22.Text = command5.ExecuteScalar().ToString();

string query6 = string.Format("select name_c from customers,servirces_orders where customers.id_customer = servirces_orders.id_customer and id_orders_s = @id_orders_s");

MySqlCommand command6 = new MySqlCommand(query6, conexao);

command6.Parameters.Add(new MySqlParameter("id_orders_s", Int32.Parse(textBox1.Text)));

textBox20.Text = command6.ExecuteScalar().ToString();

string query7 = string.Format("select middle_name_c from customers,servirces_orders where customers.id_customer = servirces_orders.id_customer and id_orders_s = @id_orders_s");

MySqlCommand command7 = new MySqlCommand(query7, conexao);

command7.Parameters.Add(new MySqlParameter("id_orders_s", Int32.Parse(textBox1.Text)));

textBox21.Text = command7.ExecuteScalar().ToString();

Листинг получения квитанции на фотосъемку представлен в приложении 6

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

Чтобы сохранить квитанцию нужно в меню выбрать пункт «Сохранить квитанцию->на услугу». При этом откроется шаблон формата exel, где будут подставлены данные с квитанции. Сначала идет открытие файла формата exel, в котором отображаются данные из формы квитанции, находящейся в приложении. То есть данные из элемента textbox в форме квитанции переносятся в ячейку листа Exel. Листинг функции «Сохранить квитанцию» выглядит следующим образом:

Microsoft.Office.Interop.Excel.Application xla = new Microsoft. Office. Interop.Excel.Application();

Workbook wb = xla.Workbooks. Open(@"D:\WindowsFormsApp5 \Квитанция на услугу.xlsx",

Type.Missing, Type.Missing, Type.Missing, Type.Missing,

Type.Missing, Type.Missing, Type.Missing, Type.Missing,

Type.Missing, Type.Missing, Type.Missing, Type.Missing,

Type.Missing, Type.Missing);

Worksheet ws = (Worksheet)xla.ActiveSheet;

xla.Visible = true;

ws.Cells[4, 8] = textBox18.Text;

ws.Cells[6, 3] = textBox22.Text;

ws.Cells[6, 4] = textBox20.Text;

ws.Cells[6, 5] = textBox21.Text;

ws.Cells[8, 3] = textBox19.Text;

ws.Cells[8, 6] = textBox23.Text;

ws.Cells[11, 3] = textBox24.Text;

ws.Cells[16, 8] = textBox26.Text;

Cохранение квитанции на фотосъемку представлено в Приложении 7.

Для проверки элементов textbox на пустоту, был написан следующий код:

if (textBox1.Text == "")

{

MessageBox.Show(

"Введите название услуги", "Сообщение",

MessageBoxButtons.OK,

MessageBoxIcon.Information,

MessageBoxDefaultButton.Button1,

MessageBoxOptions.DefaultDesktopOnly);

}

Если textBox оказался пустым, появляется элемент MassageBox с оповещением о неправильности заполнения.

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

private void textBox2_KeyPress(object sender, KeyPressEventArgs e)

{

char ch = e.KeyChar;

if (!char.IsDigit(ch) && ch !=8)

{

e.Handled = true;

}

}

4 ТЕСТИРОВАНИЕ

4.1 Методика тестирования

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

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

Снижение влияния человеческого фактора;

Экономия затрат на исправление дефектов.

Предотвращение появления критичных ошибок в опытно-промышленной эксплуатации; [7]

4.2 Результаты тестирования

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

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

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

На вкладке услуги постараемся добавить новые данные. В textbox вводим следующие данные «7, copybook, 493». Далее нажимаем кнопку «Добавить» и видим, что эти данные появились у нас в базе (рисунок 19).

Рисунок 19. Добавление данных на вкладку «Услуги»

Далее попробуем обновить какую - либо информацию на это вкладке. Например, заменим данные «3, pr, 473» на «3, print, 333». Вносим эти данные в textbox и нажимаем кнопку обновить. Полученные результаты можно увидеть на рисунке 20.

Рисунок 20. Обновление данных на вкладке «Услуги»

По нажатию на кнопку «Удалить», удалим из базы услугу под номером 6. На рисунке 21 увидим, что данная услуга в базе отсутствует, значит, удаление работает корректно.

Рисунок 21 Удаление данных с вкладки «Услуги»

Проверим элементы textbox на заполненность информацией. Если хотя бы один textbox не заполнен, то появиться сообщение об ошибке. Результаты проверки представлены на рисунке 22.

Рисунок 22 - проверка на заполненность формы

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

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

Переходим к тестированию приложения фотографа - менеджера.

При добавлении заказа на услугу он добавился в базу со стоимостью 0 рублей. Далее при нажатии на кнопку «Посчитать цену», появилась цена за заказ как в компоненте textbox так и в DataGridView. Результат работы можно увидеть на рисунке 23.

Рисунок 23. Получение цены за заказ

Чтобы сформировать квитанцию о заказе, нужно нажать ту строчку в базе данных и нажать на кнопку «Сформировать квитанцию». Результат этой операции представлен на рисунке 24.

Для сохранения квитанции нужно выбрать в панели меню «Сохранить квитанцию»-> «На услугу» или «На фотосъемку». Открывается заполненная форма квитанции в формате exel (рисунок 25), которую можно сохранить.

Рисунок 24. Получение квитанции за заказ

Рисунок 23. Получение квитанции в формате exel

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

ЗАКЛЮЧЕНИЕ

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

При разработке продукта для выпускной квалификационной работы были пройдены следующие этапы:

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

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

Этап реализации, состоящий из реализации серверной части и реализации клиентской части.

При разработке клиентской части был реализован следующий функционал:

Сохранение, удаление, обновление данных в справочниках фотоателье;

Занесение заказов на услугу и на фотосъемку с возможностью их редактирования;

Подсчет цены за заказ;

Автоматическое получение квитанции об оплате в формате exel ;

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

Этап тестирования, содержащий выбор методики тестирования и получение результатов тестирования.

По результатам тестирования можно сделать выводы:

-Все данные отображаются адекватно

-Функционал реализован без нарушений

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

Возможен переход на Web-архитектуру.

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

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

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

Простой софт - конфигурация «Фотосалон» [Электронный ресурс]. - Режим доступа: http://www.prostoysoft.ru/PhotoSalon.htm

Программа 1С Фотоуслуги для автоматизации фотосалонов, фотостудий [Электронный ресурс]. - Режим доступа: https://www.softservis.com/programms/dlya-torgovogo-ucheta/1s-fotouslugi/

Что такое CRM - системы и как их правильно выбирать [Электронный ресурс]. - Режим доступа: https://habr.com/ ru/company /trinion/blog /24963/

Жданов, С.А. Информационные системы: учебник для студ. учреждений высш. образования//С.А. Жданов, М.Л. Соболева, А.С. Алфимова. - М.:ООО «Прометей», 2015. - 302 с.

Преимущества и недостатки MySQL[Электронный ресурс]. - Режим доступа: http://lectmania.ru/1x5c7e.html

MySQL Workbench[Электронный ресурс]. - Режим доступа: https://ru.wikipedia.org/wiki/MySQL_Workbench

Методы тестирования программного обеспечения [Электронный ресурс]. - Режим доступа: http://juice-health.ru/program/software-testing/495-software-testing-methods

ПРИЛОЖЕНИЕ 1

(обязательное)

Скрипт для создания таблиц в базе данных.

Таблица History_sh (История фотосъемок)

CREATE TABLE `history_sh` (

`id_history_sh` int(11) NOT NULL DEFAULT '4',

`data_history_sh` date NOT NULL,

`id_orders_sh` int(11) NOT NULL DEFAULT '4',

`id_status` int(11) NOT NULL DEFAULT '4',

PRIMARY KEY (`id_history_sh`)

Таблица Photographer_Services( таблица связка фотографы - услуги)

CREATE TABLE `photographer_services` (

`services_id_sevice` int(11) NOT NULL DEFAULT '4',

`photographers_id_photographer` int(11) NOT NULL DEFAULT '4',

PRIMARY KEY (`services_id_sevice`,`photographers_id_photographer`)

Таблица Photographers (фотографы)

CREATE TABLE `photographers` (

`id_photographer` int(11) NOT NULL AUTO_INCREMENT,

`surname_f` varchar(45) NOT NULL,

`name_f` varchar(45) NOT NULL,

`middle_name_f` varchar(45) NOT NULL,

`births` date NOT NULL,

`phone_number` varchar(45) NOT NULL,

PRIMARY KEY (`id_photographer`),

UNIQUE KEY `id_photographer_UNIQUE` (`id_photographer`)

Таблица Services (Услуги)

CREATE TABLE `services` (

`id_service` int(11) NOT NULL AUTO_INCREMENT,

`name_service` varchar(255) CHARACTER SET latin1 NOT NULL,

`price_for_service` int(11) NOT NULL,

PRIMARY KEY (`id_service`),

UNIQUE KEY `id_service_UNIQUE` (`id_service`)

Таблица Servirces_orders(Заказ на услугу)

CREATE TABLE `servirces_orders` (

`id_orders_s` int(11) NOT NULL,

`amount` int(11) NOT NULL,

`link_on_photo` varchar(50) NOT NULL,

`price_for_orders_s` varchar(45) NOT NULL,

`id_sevice` int(11) DEFAULT '4',

`id_customer` int(11) NOT NULL DEFAULT '10',

`id_status` varchar(45) DEFAULT NULL,

PRIMARY KEY (`id_orders_s`)

Таблица Shooting (Фотосъемки)

CREATE TABLE `shooting` (

`id_shooting` int(11) NOT NULL DEFAULT '4',

`name_shooting` varchar(50) NOT NULL,

`price_for_hour` int(11) NOT NULL DEFAULT '4',

PRIMARY KEY (`id_shooting`)

Таблица Shooting_orders(заказ на фотосъемку)

CREATE TABLE `shooting_orders` (

`id_orders_sh` int(11) NOT NULL,

`amount_hour` int(11) NOT NULL DEFAULT '4',

`price_for_shooting` int(11) NOT NULL DEFAULT '5',

`date_shooting` date NOT NULL,

`hour` int(11) NOT NULL DEFAULT '2',

`minute` int(11) NOT NULL DEFAULT '2',

`id_shooting` int(11) NOT NULL DEFAULT '4',

`id_customer` int(11) DEFAULT '10',

`id_photographer` int(11) DEFAULT '4',

`id_status` int(11) DEFAULT '4',

PRIMARY KEY (`id_orders_sh`)

Таблица Status (Статус)

CREATE TABLE `status` (

`id_status` int(11) NOT NULL DEFAULT '4',

`name_status` varchar(13) NOT NULL,

PRIMARY KEY (`id_status`)

ПРИЛОЖЕНИЕ 2

(обязательное)

Код загрузки данных из базы в приложение администратора

string config = "Server=127.0.0.1;Database=photostudio;Uid=root;Pwd=root;";

string query1 = string.Format("SELECT * FROM {0}", " services");

string query2 = string.Format("SELECT * FROM {0}", " status");

string query3 = string.Format("SELECT * FROM {0}", " shooting");

string query4 = string.Format("SELECT * FROM {0}", " customers");

string query5 = string.Format("SELECT * FROM {0}", " photographers");

MySqlConnection conexao = new MySqlConnection(config);

conexao.Open();

MySqlCommand command1 = new MySqlCommand(query1, conexao);

MySqlDataAdapter adapter1 = new MySqlDataAdapter(command1);

MySqlCommand command2 = new MySqlCommand(query2, conexao);

MySqlDataAdapter adapter2 = new MySqlDataAdapter(command2);

MySqlCommand command3 = new MySqlCommand(query3, conexao);

MySqlDataAdapter adapter3 = new MySqlDataAdapter(command3);

MySqlCommand command4 = new MySqlCommand(query4, conexao);

MySqlDataAdapter adapter4 = new MySqlDataAdapter(command4);

MySqlCommand command5 = new MySqlCommand(query5, conexao);

MySqlDataAdapter adapter5 = new MySqlDataAdapter(command5);

DataTable data1 = new DataTable();

adapter1.Fill(data1);

dataGridView1.DataSource = data1;

DataTable data2 = new DataTable();

adapter2.Fill(data2);

dataGridView2.DataSource = data2;

DataTable data3 = new DataTable();

adapter3.Fill(data3);

dataGridView5.DataSource = data3;

DataTable data4 = new DataTable();

adapter4.Fill(data4);

dataGridView3.DataSource = data4;

DataTable data5 = new DataTable();

adapter5.Fill(data5);

dataGridView4.DataSource = data5;

string pr1 = string.Format("SELECT max(services.id_service) + 1 from services");

MySqlCommand command7 = new MySqlCommand(pr1, conexao);

textBox3.Text = command7.ExecuteScalar().ToString();

string pr2 = string.Format("SELECT max(status.id_status) + 1 from status");

MySqlCommand command8 = new MySqlCommand(pr2, conexao);

textBox4.Text = command8.ExecuteScalar().ToString();

string pr3 = string.Format("SELECT max(shooting.id_shooting) + 1 from shooting");

MySqlCommand command9 = new MySqlCommand(pr3, conexao);

textBox6.Text = command9.ExecuteScalar().ToString();

string pr4 = string.Format("SELECT max(customers.id_customer) + 1 from customers");

MySqlCommand command10 = new MySqlCommand(pr4, conexao);

textBox9.Text = command10.ExecuteScalar().ToString();

string pr5 = string.Format("SELECT max(photographers.id_photographer) + 1 from photographers");

MySqlCommand command11 = new MySqlCommand(pr5, conexao);

textBox16.Text = command11.ExecuteScalar().ToString();

textBox13.Text = "ДД.ММ.ГГГГ";

textBox20.Text = "ДД.ММ.ГГГГ";

conexao.Close();

ПРИЛОЖЕНИЕ 3

(обязательное)

Обработчик кнопки «Обновить» для вкладки «Клиенты»

private void button14_Click(object sender, EventArgs e){

string config = "Server=127.0.0.1;Database=photostudio;Uid=root;Pwd=root;";

MySqlConnection conexao = new MySqlConnection(config);

string query1 = string.Format("SELECT * FROM {0}", " customers ");

MySqlCommand command1 = new MySqlCommand(query1, conexao);

MySqlDataAdapter adapter1 = new MySqlDataAdapter(command1);

DataTable data1 = new DataTable();

adapter1.Fill(data1);

dataGridView1.DataSource = data1;

conexao.Close();

using (MySqlCommand command = new MySqlCommand("UPDATE customers SET id_customer = '" + Int32.Parse(textBox9.Text) + "', surname_c = '" + textBox10.Text + "', name_c ='" + textBox11.Text + "',middle_name_c = '" + textBox12.Text +"', phone_number = '"+ Int64.Parse(textBox14.Text) + "', e_mail = '"+ textBox15.Text + "' WHERE id_customer = @id_customer", conexao)){

command.Parameters.Add(new MySqlParameter("id_customer", Int32.Parse (textBox9.Text)));

conexao.Open();

command.ExecuteNonQuery();

}

conexao.Close();}

Обработчик кнопки «Обновить» для вкладки «Съемки»

string config = "Server=127.0.0.1;Database=photostudio;Uid=root;Pwd=root;";

MySqlConnection conexao = new MySqlConnection(config);

string query1 = string.Format("SELECT * FROM {0}", " shooting ");

MySqlCommand command1 = new MySqlCommand(query1, conexao);

MySqlDataAdapter adapter1 = new MySqlDataAdapter(command1);

DataTable data1 = new DataTable();

adapter1.Fill(data1);

dataGridView1.DataSource = data1;

conexao.Close();

using (MySqlCommand command = new MySqlCommand("UPDATE shooting SET id_shooting = '" + Int32.Parse(textBox6.Text) + "', name_shooting = '" + textBox7.Text + "', price_for_hour ='" + Int32.Parse(textBox8.Text) + "' WHERE id_shooting = @id_shooting", conexao))

{

command.Parameters.Add(new MySqlParameter("id_shooting", Int32.Parse (textBox6.Text)));

conexao.Open();

command.ExecuteNonQuery();

}

conexao.Close();

}

ПРИЛОЖЕНИЕ 4

(обязательное)

Обработчик кнопки «Удалить» для вкладки «Статусы»

private void button4_Click(object sender, EventArgs e)

{

string config = "Server=127.0.0.1;Database=photostudio;Uid=root;Pwd=root;";

MySqlConnection conexao = new MySqlConnection(config);

conexao.Close();

using (MySqlCommand command = new MySqlCommand("DELETE FROM status WHERE id_status = @id_status", conexao))

{

command.Parameters.Add(new MySqlParameter("id_status", Int32.Parse (textBox4.Text)));

conexao.Open();

command.ExecuteNonQuery();

}

int rowIndex = dataGridView2.SelectedCells[0].RowIndex;

dataGridView2.Rows.RemoveAt(rowIndex);

conexao.Close();

}

Обработчик кнопки «Удалить» для вкладки «Фотографы»

private void button8_Click(object sender, EventArgs e)

{

string config = "Server=127.0.0.1;Database=photostudio;Uid=root;Pwd=root;";

MySqlConnection conexao = new MySqlConnection(config);

conexao.Close();

using (MySqlCommand command = new MySqlCommand("DELETE FROM photographers WHERE id_photographer = @id_photographer", conexao))

{

command.Parameters.Add(new MySqlParameter("id_photographer", Int32.Parse (textBox16.Text)));

conexao.Open();

command.ExecuteNonQuery();

}

int rowIndex = dataGridView4.SelectedCells[0].RowIndex;

dataGridView4.Rows.RemoveAt(rowIndex);

conexao.Close();

}

ПРИЛОЖЕНИЕ 5

(обязательное)

Листинг кнопки «Посчитать цену» для вкладки «Заказ на услугу»

private void button10_Click(object sender, EventArgs e)

{

string config = "Server=127.0.0.1;Database=photostudio;Uid=root;Pwd=root;";

MySqlConnection conexao = new MySqlConnection(config);

conexao.Open();

string query13 = string.Format("select shooting_orders.amount_hour * shooting.price_for_hour as price_for_shooting from shooting_orders,shooting where shooting.id_shooting = shooting_orders.id_shooting and id_orders_sh = @id_orders_sh ");

MySqlCommand command13 = new MySqlCommand(query13, conexao);

command13.Parameters.Add(new MySqlParameter("id_orders_sh", Int32.Parse(textBox8.Text)));

textBox10.Text = command13.ExecuteScalar().ToString();

}

ПРИЛОЖЕНИЕ 6

(обязательное)

Листинг получения квитанции на фотосъемку

private void button8_Click(object sender, EventArgs e)

{

textBox30.DataBindings.Clear();

textBox30.DataBindings.Add("Text",dataGridView2.DataSource, "id_orders_sh");

textBox35.DataBindings.Clear();

textBox35.DataBindings.Add("Text",dataGridView2.DataSource,"amount_hour");

...

Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.