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

Учет топлива заправочной станции

Содержание:

Введение

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

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

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

Мировой опыт подтверждает, что в настоящее время транспортный комплекс является одним из основных потребителей энергоресурсов, главным образом за счет использования продуктов нефтепереработки. Так, в 2009 году на долю транспорта приходилось более 63,7% от общего уровня потребления энергии всеми секторами мировой экономики. Следует отметить, что тенденция увеличения доли транспорта в топливо - энергетическом балансе, наблюдаемая в период с 1970 г. до 2009 года, характерна для всей мировой экономической системы, причем анализ статистических данных позволяет прогнозировать дальнейшее увеличение потребления транспортом нефтепродуктов.

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

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

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

На основании целей, можно определить задачи исследования:

- определить понятие и функции управления современным предприятием;

- рассмотреть методы управления предприятием;

- выявить особенности деятельности АЗС;

- провести анализ основных показателей деятельности предприятия;

- провести анализ системы управления организацией;

- выявить проблемы функционирования и координации деятельности;

- подготовить предложения по совершенствованию управления деятельностью предприятия.

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

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

Наименование программного изделия

Полное наименование программной разработки: «Cскладской учет топлива заправочной станции», в дальнейшем именуемая как «программа». Краткое название программы – «ЗС».

Применения

Программа «ЗС» предназначена для применения ее на заправочных станциях.

Документ, на основании которого ведётся разработка

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

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

Состав выполняемых функций

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

  • Поиск, добавление, удаление, обновление информации о топливе;
  • Поиск, добавление, удаление, обновление информации о клиентах;
  • Поиск, добавление, удаление, обновление информации о движении топлива;
  • Поиск по топливу;
  • Поиск по клиентам;
  • Информация об авторе;
  • Информация об программе;
  • Отчет "остатки по топливу".

Организация входных и выходных данных

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

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

Временные характеристики, и размер занимаемой памяти

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

Требования к надежному функционированию

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

Уровень надежности программы должен соответствовать технологии про­граммирования, предусматривающей: инспекцию исходных текстов программы; автономное тестирование модулей (методов) программы; тестирование сопря­жении модулей (методов) программы; комплексное тестирование программы

Контроль входной и выходной информации

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

Время восстановления после отказа

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

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

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

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

Рекомендуемая конфигурация ПК:

  • Операционная система: Windows 7/8/8.1/10;
  • Процессор: Intel Core i3/ AMD FX 4330 или мощнее;
  • Видеокарта: AMD Radeon 1Gb/ nVidea GeForse 640 1Gb или мощнее;
  • Оперативная память: 1Gb DDR3 RAM и более;
  • Жесткий диск: 100Mb свободного места;
  • Разрешение экрана: 1920X1080, 32 бит;
  • Звуковая карта: совместимая с DirectX 9.0
  • Другие устройства: клавиатура, мышь;

Необходимые программные компоненты:

  • Библиотека Microsoft. NET Framework 3.5
  • Библиотека Microsoft. NET Framework 4.1
  • Библиотека Microsoft. NET Framework 4.2
  • Библиотека Microsoft. NET Framework 4.3
  • Библиотека Microsoft. NET Framework 4.5

Требования к языкам программирования

Разработка программы должна вестись на одном из следующих языков:

  • Microsoft Visual Basic v5.0 и выше.
  • Microsoft Visual C v5.0 и выше.
  • Borland Delphi v4.0 ив выше.

Выбор других языков нецелесообразен.

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

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

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

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

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

Условия транспортирования и хранения дискеты должны соответствовать разделу

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

Состав программной документации должен включать следующие доку­менты: Инструкцию по эксплуатации программного средства

Технико-Экономические Показатели

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

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

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

1) разработка, согласование и утверждение технического проекта про­граммы с пояснительной запиской - 5 недель;

2) разработка рабочего проекта программы с комплексным тестированием - 6 недель;

3) приемка-сдача с исправлением обнаруженных недостатков в программе и программной документации - 2 недели.

4)внедрение.

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

Виды испытаний

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

Испытания и тестирование программы должны проводиться в процессе создания программы самим разработчиком:

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

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

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

и проверка документации должна проводиться.

Испытания и тестирование программы должны проводиться после завершения создания программы заказчиком:

1. С использованием проверочных тестов, составляемых заказчиком заблаговременно.

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

3. В организации заказчика с привлечением сторонних экспертов.

2. Проектирование информационной системы

На основании поставленной задачи проведем теоретическое проектирование ИС.

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

Диаграмма вариантов использования UML смотрите на рисунке 1.

Рисунок 1 - Диаграмма вариантов использования

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

2.2 Разработка базы данных проекта

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

Основными целями проектирования базы данных являются:

- Представление данных и связей между ними, необходимых для всех основных областей применения данного приложения и любых существующих групп его пользователей;

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

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

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

Для конфигурации базы данных компьютерного приложения " Складской учет топлива заправочной станции " использовалось СУБД ACCESS. В рамках данной СУБД и на основании поставленной задачи была разработана БД "ZS.mdb". В составе данной БД таблицы: заказ, клиент, товар(топливо), количество(остатки по топливу), вид .

Физическую модель БД представим на рисунке 2.

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

Пройдемся по сущности.

Таблица «Клиент» - содержит информацию о клиентах АЗС, имеет ключевое поле «Код клиента» с типом данных «Числовой». Так же имеет связь с таблицей «Заказ» по полям «Код клиента» с типом данных числовой, с отношением многие к одному, потому что один или несколько заказов могут быть осуществлены одним клиентам. Кроме технических полей данная таблица содержит и поля информационные. Это поле "Имя" название клиента, поля "Телефон" телефон клиента для связи, поля "Адрес" адрес клиента и "Email" электронный адрес клиента, также для связи. Таблица "Клиент" представим на рисунке 3.

Рисунок 3 - Таблица "Клиент"

Таблица «Вид операции» - содержит информацию о типе поступления на склад АЗС, имеет ключевое поле «Код операции» с типом данных «Числовой». Так же имеет связь с таблицей «Заказ» по полям «Код операции» с типом данных числовой, с отношением многие к одному, потому что один или несколько заказов могут иметь один тип операции. Кроме технических полей данная таблица содержит и поля информационные. Это поле "Статус" название операции, может содержать только два значения, это "Клиент" или "Поставщик".

Таблица "Вид операции" представим на рисунке 4.

Рисунок 4 - Таблица "Вид операции"

Таблица «Имя товара» - содержит информацию о виде топлива, имеет ключевое поле «Код товара» с типом данных «Числовой». Так же имеет связь с таблицей «Заказ» и "Количество товаров" по полям «Код товара» с типом данных числовой, с отношением многие к одному, потому что один или несколько заказов могут иметь один и той же вид топлива. По имени топлива формируется количество товаров в таблице "Количество товаров". Кроме технических полей данная таблица содержит и поля информационные. Это поле "Имя" название товара, поля "Страна" страна производитель топлива и поля "Вид" качество топлива. Таблица "Имя товара" представим на рисунке 5.

Рисунок 5 - Таблица "Имя товара"

Таблица «Количество товаров» - содержит информацию о текущим количестве топлива, имеет ключевое поле «Код количества» с типом данных «Числовой». Так же имеет связь с таблицей «Имя товара» по полям «Код имени» с типом данных числовой, с отношением многие к одному. Кроме технических полей данная таблица содержит и поля информационные. Это поле "Количество" количество определенного топлива, и поля "Единицы измерения" единица измерения определенного топлива.

Таблица "Количество товаров" представим на рисунке 6.

Рисунок 6 - Таблица "Количество товаров"

Таблица «Заказ» - содержит информацию о всех движениях товаров АЗС, имеет ключевое поле «Код товара» с типом данных «Числовой». Так же имеет связь с таблицей «Имя товара», "Клиент" и "Вид операции" по полям «Код клиента», "Код имени" и "Код вида" с типом данных числовой у всех. О типах связей говорилось ранее. Кроме технических полей данная таблица содержит и поля информационные. Это поле "Дата" дата проведения операции, "Количество" количество товаров в проведенной операции, "Единицы измерения" единицы измерения товара операции и "Цена" цена проведенной операции.

Таблица "Заказ" представим на рисунке 7.

Рисунок 7 - Таблица "Заказ"

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

2.3 Выбор и обоснования выбора структур данных

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

  • структура данных "Заказ". Служит для обработки информации о движении топлива. Данная модель состоит из полей: id, id_klient, id_vid, id_tovar, data, kol, ed_izm, zena. Поля соответствуют полям сущности "заказ" из БД. Информация берется из БД или формируется в процессе работы пользователя (Смотрите приложение А);
  • структура данных "Клиент". Служит для обработки информации о клиентах АЗС. Данная модель состоит из полей: id, adress, name, tel, Email. Поля соответствуют полям сущности "Клиент" из БД. Информация берется из БД (Смотрите приложение А);
  • структура данных "Вид". Служит для обработки информации о типе движения топлива. Данная модель состоит из полей: id, status. Поля соответствуют полям сущности "Вид" из БД. Информация берется из БД (Смотрите приложение А);
  • структура данных "Товар". Служит для обработки информации о топливе АЗС. Данная модель состоит из полей: id, name, strana, vid. Поля соответствуют полям сущности "Товар" из БД. Информация берется из БД (Смотрите приложение А);
  • структура данных "Количество". Служит для обработки информации об остатках топлива на АЗС. Данная модель состоит из полей: id, id_tovar, koll, ed_izm. Поля соответствуют полям сущности "Количество" из БД. Информация берется из БД (Смотрите приложение А);
  • структура данных "Отчет1". Служит для вывода информации пользователю о клиентах АЗС, в определенном формате, после поиска и сортировки информации по конкретному клиенту. Данная модель состоит из полей: id, name_tovar, name_klient, tel, adress, data, kol, ed_izm, zena. Информация берется из БД (Смотрите приложение А);
  • структура данных "Отчет2". Служит для вывода информации пользователю о топливе АЗС, в определенном формате, после поиска и сортировки информации по конкретному топливу. Данная модель состоит из полей: id, name_tovar, name_klient, strana, vid, data, kol, ed_izm, zena. Информация берется из БД (Смотрите приложение А);
  • структура данных "Отчет3". Служит для вывода информации пользователю, в определенном формате, после поиска и сортировки информации по остаткам топлива АЗС. Данная модель состоит из полей: id, name_tovar, kol, ed_izm. Информация берется из БД (Смотрите приложение А);

2.4 Алгоритмы программного комплекса

Общую структурную схему программного комплекса представим на рисунке 8.

Рисунок 8 - Структурная схема ПО

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

  • Получить всех клиентов;
  • Получить все товары;
  • Получить все статусы;
  • Получить все движения топлива;
  • Получить клиента по уникальному номеру;
  • Получить товар по уникальному номеру;
  • Получить статус по уникальному номеру;
  • Получить количество по уникальному номеру;
  • Добавить клиента;
  • Добавить топливо;
  • Обновление движения топлива;
  • Количество конкретного топлива;
  • Получение движения по клиенту;
  • Получение движения по топливу;
  • Создание отчетов по поиску;
  • и др.

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

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

Рисунок 9 - Алгоритм обновления

Алгоритм добавления клиента рисунок 10.

Рисунок 10 - Алгоритм добавление клиента

Удаление топлива из БД рисунок 11.

Рисунок 11 - Алгоритм удаления топлива

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

На основании выше изложенного сформируем диаграмму классов. Диаграмму классов представим на рисунке 12.

Рисунок 12 - Диаграмма классов

Спецификация процедур и функций.

Рассмотрим и опишем процедуры и функции диаграммы классов.

Классы:

  • Program() - класс старта программного комплекса. Содержит процедуру main(), процедура запуска программы;
  • Form1() - класс стартового окна программного комплекса. Содержит конструктор класса Form1() и процедуру стартовой загрузки Form1_load(). Кроме этого содержит процедуру выхода (Выход()), процедуру отсчета текущего времени (Timer1_tik())и процедуры перехода на другие окна(Button1_clik(),Button2_clik(),Button3_clik(),Klient_clik, tovar_clik, bd_clik).
  • Form_tovar() - класс окна для работы с информацией о товарах. Содержит конструктор класса Form_tovar() и процедуру стартовой загрузки Form_tovar_load(). Кроме этого содержит процедуру выхода (Выход()), процедуру формирования из БД списка товаров (Next())и процедуру добавления товара в БД (Button1_clik()) , процедуру удаления товара (button_delete()), процедуру обновления товара (button_update()), поиск товара (Button2_clik()), перезагрузка БД (BD()).
  • Form_klient() - класс окна для работы с информацией о клиентах АЗС. Содержит конструктор класса Form_klient() и процедуру стартовой загрузки Form_klient_load().Кроме этого содержит процедуру выхода (Выход()), процедуру формирования из БД списка клиентов (Next())и процедуру добавления клиента в БД (Button1_clik()) , процедуру удаления клиента (button_delete()), процедуру обновления клиента (button_update()), поиск клиента (Button2_clik()), перезагрузка БД (BD()).
  • Form_BD() - класс окна для обработки информации о движении топлива. Содержит конструктор класса Form_BD() и процедуру стартовой загрузки Form_BD_load(). Кроме этого содержит процедуру выхода (Выход()), процедуру формирования из БД списка клиентов и товаров (Next(), klient_sp(), tovar_sp()) и процедуру добавления движения в БД (Button1_clik()) , процедуру удаления движения (button_delete()), процедуру обновления движения (button_update()), поиск топлива (Button2_clik()), перезагрузка БД (BD()) и процедуры перехода на другие формы(Button4_clik(),Button3_clik()).
  • Form_avtor() - класс окна для вывода информации об авторе проекта. Содержит конструктор класса Form_avtor() и процедуру стартовой загрузки Form_avtor_load(). Кроме этого содержит процедуру выхода (Выход()).
  • Form_program() - класс окна для вывода информации об программе проекта. Содержит конструктор класса Form_program() и процедуру стартовой загрузки Form_program_load(). Кроме этого содержит процедуру выхода (Выход()).
  • Form_ot1() - класс окна для поиска по клиентам и выводом информации в необходимой структуре и форме. Содержит конструктор класса Form_ot1() и процедуру стартовой загрузки Form_ot1_load(). Кроме этого содержит процедуру выхода (Выход()), процедуру формирования отчета (ot1()), процедуру формирования списка клиентов (klient_sp()).
  • Form_ot2() - класс окна для поиска по таварам и вывода информации в необходимой структуре и форме. Содержит конструктор класса Form_ot2() и процедуру стартовой загрузки Form_ot2_load(). Кроме этого содержит процедуру выхода (Выход()), процедуру формирования отчета (ot2()), процедуру формирования списка товаров(tovar_sp()).
  • Form_ot3() - класс окна для вывода информации по остаткам топлива. Содержит конструктор класса Form_ot3() и процедуру стартовой загрузки Form_ot3_load(). Кроме этого содержит процедуру выхода (Выход()), процедуру формирования отчета (tovar_sp()).
  • Koll, Zakaz, BD_vid, BD_klient, BD_tovar - классs содержащиt все основные функции для работы с БД. Самый трудовые классы программы. Классы содержат процедуру подключения к БД Connectto(), конструктор классов процедура BD_!!!(), а также есть в наличии функция получения всех значений сущности "заказы" Fill_zakaz(), функция получения всех значений сущности "товар" Fill_tovar(), функция получения всех значений сущности "клиент" Fill_klient(), функция получения всех значений сущности "количество" Fill_koll(), функция вставки новой информации в БД Insert(), функция обновления информации Update(), функция получения количества записей в таблице сущности "заказы" kol_string(), функция получения заказа по уникальному номеру Fill_model_id(String id), функция получения статуса по уникальному номеру Fill_status_id(String id), функция получения клиента по уникальному номеру Fill_klient_id(String id), функция получения товара по уникальному номеру Fill_tovar_id(String id), функция получения заказа по статусу Fill_model_id_next(String id) и функция получения заказа по клиенту Fill_model_id_klienty(String id) и т.д.

3. Практическая реализация

3.1 Инструкция по эксплуатации

При запуске программного комплекса запускается стартовое окно приложения, смотрите рисунок 13.

Рисунок 13 - Стартовое окно программы

С этого окна пользователь может ознакомится с возможностями справочной службы. В справочную службу входит поиск по клиентам, по топливу, остатки по топливу. Кроме этого, введя логин "admin" и пароль "admin" можно перейти в окна для редактирование информации об клиентах(меню "Клиент"), об товарах(меню"Товар"), об движениях товаров(меню "БД").

Это пользователь более высокого уровня, смотрите рисунок 14.

Рисунок 14 - Успешная авторизация

Итак меню "Клиент". Попадаем в окно вида, смотрите рисунок 15.

Рисунок 15 - Клиенты АЗС

Здесь пользователь может добавить, удалить, обновить и найти информацию об клиентах АЗС.

Итак меню "Товар". Попадаем в окно вида, смотрите рисунок 16.

Рисунок 16 - Информация о видах топлива

Здесь пользователь может добавить, удалить, обновить и найти информацию об топливе АЗС.

Итак кнопка "БД". Попадаем в окно вида, смотрите рисунок 17.

Рисунок 17 - Приход и расход товаров

Здесь пользователь может добавить, удалить, обновить и найти информацию о движении топлива на данном АЗС.

Итак далее справочная служба и меню "По клиентам". Попадаем в окно вида, смотрите рисунок 18.

Рисунок 18 - Поиск по клиентам

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

Итак далее справочная служба и меню "По товарам". Попадаем в окно вида, смотрите рисунок 19.

Рисунок 19 - Поиск по топливу

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

Итак далее справочная служба и меню "Остатки". Попадаем в окно вида, смотрите рисунок 20.

Рисунок 20 - Остатки по препаратам

Здесь например руководитель может получить всю информацию о остатках топлива своей АЗС.

3.2 Тестирование

На этом этапе представим доказательства того, что спроектированное ПС работает в соответствии с требованиями.

Тест кейсы представим в таблице 1.

Таблица 1 - Таблица тестов программы

ID

Summary

Steps

Expected Result

Да/Fail

1

Проверка запуска программы

1.Запуск программы

2. Открытия главного окна

Наблюдения стартового окна

Да

2

Проверка добавления движения препарата

1.Запуск программы

2. Выбор кнопки "БД" и "Добавить"

3. Заполнить корректно поля

4. Кликнуть кнопку "ADD"

Наличие нового движения

в БД

Да

3

Проверка ввода данных при добавления данных

1.Запуск программы

2. Выбор кнопки "БД" и "Добавить"

3. Заполнить не все поля заявки

4. Кликнуть

Наличие сообщения об ошибке ввода данных

Да

4

Проверка наличия всех товаров для выбора

1.Запуск программы

2. Открытия главного окна

3. Выбор кнопки "БД" и "Добавить"

4. Клик "ADD" товар

Наличие списка товаров

Да

Продолжение таблицы 1

ID

Summary

Steps

Expected Result

Да/Fail

5

Проверка возможности

просмотра информации

о клиентах

1.Запуск программы

2. Открытия главного окна

3. Выбор кнопки "Клиент"

Получение информации об клиентах

Да

6

Проверка возможности

просмотра информации

о товарах

1.Запуск программы

2. Открытия главного окна

3. Выбор кнопки "Товар"

Получение информации об товарах

Да

7

Возможность

просмотра информации

о клиентах

1.Запуск программы

2. Открытия главного окна

3. Выбор меню "Справочная служба"

4. Далее "По клиентам"

5. Выбор клиента из списка

Наличие необходимого отчета.

Да

8

Возможность

просмотра информации по товарам

1.Запуск программы

2. Открытия главного окна

3. Выбор меню "Справочная служба".

4. Далее "По товарам"

4. Выбор товара из списка

Наличие необходимого отчета.

Да

Продолжение таблицы 1

ID

Summary

Steps

Expected Result

Да/Fail

9

Просмотр остатков по

товарам

1.Запуск программы

2. Открытия главного окна

3. Выбор меню "Справочная служба".

4. Далее "Остатки"

Наличие необходимого отчета.

Да

10

Обновления информации об товаре

1.Запуск программы

2. Открытия главного окна

3. Выбор кнопки "Товар"

4. Обновить

5. Выбор товара для обновления

6. Изменение информации

7. Клик "Обновить"

Изменения данных в БД

Да

11

Обновления информации об клиенте

1.Запуск программы

2. Открытия главного окна

3. Выбор кнопки "Клиент"

4. Обновить

5. Выбор клиента для обновления

6. Изменение информации

7. Клик "Обновить"

Изменения данных в БД

Да

12

Авторизация

1.Запуск программы

2. Открытия главного окна

3. Ввод логина и пароля

Наличие сообщения об

успехе.

Да

Заключение

В результате выполнения курсовой работы был достаточно подробно изучен язык программирования C#, находящийся на платформе Visio Studio. Конкретно платформа Windows Form С#.

В качестве хранения данных использовалась БД и СУБД ACCESS. Работа над данным контейнером, тоже привели к улучшению знаний у автора о данной системе управления базой данных.

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

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

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

Данное программное обеспечение выполняет следующие функции:

  • Поиск, добавление, удаление, обновление информации об топливе;
  • Поиск, добавление, удаление, обновление информации об клиенте;
  • Поиск, добавление, удаление, обновление информации о движении топливо;
  • Поиск по топливу;
  • Поиск по клиентам;
  • Отчет "остатки по топливу".

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

Список литературы

1. Агуров П.А. С#. Разработка компонентов в MS Visual Studio 2008/2010.СПб.: БХВ –Петербург, 2008. 480с.

2. Марченко А.Л. C#. Введение в программирование. Учебное пособие. М.: МГУ им. М.В. Ломоносова ,2005. 317с.  

3. Биллиг В.А. Основы программирования на C#//Учебное пособие. 2005. URL:http://www.intuit.ru/department/pl/csharp (дата обращения 16.01.12)

ПРИЛОЖЕНИЕ А

Модель данных

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace Apteka

{

class zakaz //1 model

{

int id;

public int Id

{

get { return id; }

set { id = value; }

}

int id_tovar;

public int Id_tovar

{

get { return id_tovar; }

set { id_tovar = value; }

}

int id_klient;

public int Id_klient

{

get { return id_klient; }

set { id_klient = value; }

}

int id_vid;

public int Id_vid

{

get { return id_vid; }

set { id_vid = value; }

}

string data;

public string Data

{

get { return data; }

set { data = value; }

}

int kol;

public int Kol

{

get { return kol; }

set { kol = value; }

}

string ed_izm;

public string Ed_izm

{

get { return ed_izm; }

set { ed_izm = value; }

}

string zena;

public string Zena

{

get { return zena; }

set { zena = value; }

}

}

class vid //5 model

{

int id;

public int Id

{

get { return id; }

set { id = value; }

}

string status;

public string Status

{

get { return status; }

set { status = value; }

}

}

class klient //3 model

{

int id;

public int Id

{

get { return id; }

set { id = value; }

}

string name;

public string Name

{

get { return name; }

set { name = value; }

}

string tel;

public string Tel

{

get { return tel; }

set { tel = value; }

}

string adress;

public string Adress

{

get { return adress; }

set { adress = value; }

}

string emaill;

public string Emaill

{

get { return emaill; }

set { emaill = value; }

}

}

class tovar //2 model

{

int id;

public int Id

{

get { return id; }

set { id = value; }

}

string name;

public string Name

{

get { return name; }

set { name = value; }

}

string strana;

public string Strana

{

get { return strana; }

set { strana = value; }

}

string vid;

public string Vid

{

get { return vid; }

set { vid = value; }

}

}

class koll //4 model

{

int id;

public int Id

{

get { return id; }

set { id = value; }

}

int id_tovar;

public int Id_tovar

{

get { return id_tovar; }

set { id_tovar = value; }

}

int kol;

public int Koll

{

get { return kol; }

set { kol = value; }

}

string ed_izm;

public string Ed_izm

{

get { return ed_izm; }

set { ed_izm = value; }

}

}

class ot1

{

int id;

public int Id

{

get { return id; }

set { id = value; }

}

string name_tov;

public string Name_tov

{

get { return name_tov; }

set { name_tov = value; }

}

int koll;

public int Koll

{

get { return koll; }

set { koll = value; }

}

string ed_izm;

public string Ed_izm

{

get { return ed_izm; }

set { ed_izm = value; }

}

}

class ot2

{

int id;

public int Id

{

get { return id; }

set { id = value; }

}

string name_tov;

public string Name_tov

{

get { return name_tov; }

set { name_tov = value; }

}

string strana;

public string Strana

{

get { return strana; }

set { strana = value; }

}

string vid;

public string Vid

{

get { return vid; }

set { vid = value; }

}

string name_klient;

public string Name_klient

{

get { return name_klient; }

set { name_klient = value; }

}

string adress;

public string Adress

{

get { return adress; }

set { adress = value; }

}

string status;

public string Status

{

get { return status; }

set { status = value; }

}

string data;

public string Data

{

get { return data; }

set { data = value; }

}

int kol;

public int Kol

{

get { return kol; }

set { kol = value; }

}

string ed_izm;

public string Ed_izm

{

get { return ed_izm; }

set { ed_izm = value; }

}

string zena;

public string Zena

{

get { return zena; }

set { zena = value; }

}

}

class ot3

{

int id;

public int Id

{

get { return id; }

set { id = value; }

}

string name_klient;

public string Name_klient

{

get { return name_klient; }

set { name_klient = value; }

}

string tel;

public string Tel

{

get { return tel; }

set { tel = value; }

}

string adress;

public string Adress

{

get { return adress; }

set { adress = value; }

}

string emaill;

public string Emaill

{

get { return emaill; }

set { emaill = value; }

}

string status;

public string Status

{

get { return status; }

set { status = value; }

}

string name_tovar;

public string Name_tovar

{

get { return name_tovar; }

set { name_tovar = value; }

}

string data;

public string Data

{

get { return data; }

set { data = value; }

}

int kol;

public int Kol

{

get { return kol; }

set { kol = value; }

}

string ed_izm;

public string Ed_izm

{

get { return ed_izm; }

set { ed_izm = value; }

}

string zena;

public string Zena

{

get { return zena; }

set { zena = value; }

}

}

}

ПРИЛОЖЕНИЕ Б

Работа БД

using System;

using System.Collections.Generic;

using System.Data;

using System.Data.OleDb;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace Apteka

{

internal class BD

{

private OleDbConnection connection;

private OleDbCommand command;

private void ConnectTo()

{

connection = new OleDbConnection(@"provider=Microsoft.Jet.OLEDB.4.0; data source=ZS.mdb");

command = connection.CreateCommand();

}

public BD()

{

ConnectTo();

}

//Zakaz

public void Inser_zakaz(zakaz zad)

{

try

{

command.CommandText = "INSERT INTO Zakaz (Id_tovar,Id_klient,Id_vid,Data,Kol,Ed_izm,Zena) VALUES('" + zad.Id_tovar + "', '" + zad.Id_klient + "', '" + zad.Id_vid + "', '" + zad.Data + "', '" + zad.Kol + "', '" + zad.Ed_izm + "', '" + zad.Zena + "')";

command.CommandType = CommandType.Text;

connection.Open();

command.ExecuteNonQuery();

}

catch (Exception)

{

throw;

}

finally

{

if (connection != null) { connection.Close(); }

}

}

public void Update_zakaz(zakaz st, zakaz now)

{

try

{

command.CommandText = "UPDATE Zakaz SET Id_tovar = '" + now.Id_tovar + "',Id_klient ='" + now.Id_klient + "',Id_vid ='" + now.Id_vid + "',Data ='" + now.Data + "',Kol ='" + now.Kol + "',Ed_izm ='" + now.Ed_izm + "',Zena ='" + now.Zena + "' WHERE ID =" + st.Id;

command.CommandType = CommandType.Text;

connection.Open();

command.ExecuteNonQuery();

}

catch (Exception)

{

throw;

}

finally

{

if (connection != null) { connection.Close(); }

}

}

public List<zakaz> Fill_zakaz()

{

List<zakaz> spisok = new List<zakaz>();

try

{

command.CommandText = "SELECT * FROM Zakaz";

command.CommandType = CommandType.Text;

connection.Open();

OleDbDataReader reader = command.ExecuteReader();

while (reader.Read())

{

zakaz zad = new zakaz();

zad.Id = Convert.ToInt32(reader["Id"].ToString());

zad.Id_tovar = Convert.ToInt32(reader["Id_tovar"].ToString());

zad.Id_klient = Convert.ToInt32(reader["Id_klient"].ToString());

zad.Id_vid = Convert.ToInt32(reader["Id_vid"].ToString());

zad.Data = reader["Data"].ToString();

zad.Kol = Convert.ToInt32(reader["Kol"].ToString());

zad.Ed_izm = reader["Ed_izm"].ToString();

zad.Zena = reader["Zena"].ToString();

spisok.Add(zad);

}

return spisok;

}

catch (Exception)

{

throw;

}

finally

{

if (connection != null)

{

connection.Close();

}

}

}

public void Delete(string Id, string tab) //Удаление!!!!!!!!!!!!!!!!!!!!

{

try

{

command.CommandText = "DELETE FROM " + tab + " WHERE ID= " + Id;

command.CommandType = CommandType.Text;

connection.Open();

command.ExecuteNonQuery();

}

catch (Exception)

{

throw;

}

finally

{

if (connection != null) { connection.Close(); }

}

}

public List<zakaz> Fill_zakaz_idklient(String tab)

{

List<zakaz> spisok = new List<zakaz>();

try

{

command.CommandText = "SELECT * FROM Zakaz WHERE Id_klient = " + tab;

command.CommandType = CommandType.Text;

connection.Open();

OleDbDataReader reader = command.ExecuteReader();

while (reader.Read())

{

zakaz zad = new zakaz();

zad.Id = Convert.ToInt32(reader["Id"].ToString());

zad.Id_tovar = Convert.ToInt32(reader["Id_tovar"].ToString());

zad.Id_klient = Convert.ToInt32(reader["Id_klient"].ToString());

zad.Id_vid = Convert.ToInt32(reader["Id_vid"].ToString());

zad.Data = reader["Data"].ToString();

zad.Kol = Convert.ToInt32(reader["Kol"].ToString());

zad.Ed_izm = reader["Ed_izm"].ToString();

zad.Zena = reader["Zena"].ToString();

spisok.Add(zad);

}

return spisok;

}

catch (Exception)

{

throw;

}

finally

{

if (connection != null) { connection.Close(); }

}

}

public List<zakaz> Fill_zakaz_idtovar(String tab)

{

List<zakaz> spisok = new List<zakaz>();

try

{

command.CommandText = "SELECT * FROM Zakaz WHERE Id_tovar = " + tab;

command.CommandType = CommandType.Text;

connection.Open();

OleDbDataReader reader = command.ExecuteReader();

while (reader.Read())

{

zakaz zad = new zakaz();

zad.Id = Convert.ToInt32(reader["Id"].ToString());

zad.Id_tovar = Convert.ToInt32(reader["Id_tovar"].ToString());

zad.Id_klient = Convert.ToInt32(reader["Id_klient"].ToString());

zad.Id_vid = Convert.ToInt32(reader["Id_vid"].ToString());

zad.Data = reader["Data"].ToString();

zad.Kol = Convert.ToInt32(reader["Kol"].ToString());

zad.Ed_izm = reader["Ed_izm"].ToString();

zad.Zena = reader["Zena"].ToString();

spisok.Add(zad);

}

return spisok;

}

catch (Exception)

{

throw;

}

finally

{

if (connection != null) { connection.Close(); }

}

}

public zakaz Get_zakaz_idtovar(String tab)

{

zakaz zad = new zakaz();

try

{

command.CommandText = "SELECT * FROM Zakaz WHERE Id_tovar = " + tab;

command.CommandType = CommandType.Text;

connection.Open();

OleDbDataReader reader = command.ExecuteReader();

while (reader.Read())

{

zad.Id = Convert.ToInt32(reader["Id"].ToString());

zad.Id_tovar = Convert.ToInt32(reader["Id_tovar"].ToString());

zad.Id_klient = Convert.ToInt32(reader["Id_klient"].ToString());

zad.Id_vid = Convert.ToInt32(reader["Id_vid"].ToString());

zad.Data = reader["Data"].ToString();

zad.Kol = Convert.ToInt32(reader["Kol"].ToString());

zad.Ed_izm = reader["Ed_izm"].ToString();

zad.Zena = reader["Zena"].ToString();

}

return zad;

}

catch (Exception)

{

throw;

}

finally

{

if (connection != null) { connection.Close(); }

}

}

public zakaz Get_zakaz_idklient(String tab)

{

zakaz zad = new zakaz();

try

{

command.CommandText = "SELECT * FROM Zakaz WHERE Id_klient = " + tab;

command.CommandType = CommandType.Text;

connection.Open();

OleDbDataReader reader = command.ExecuteReader();

while (reader.Read())

{

zad.Id = Convert.ToInt32(reader["Id"].ToString());

zad.Id_tovar = Convert.ToInt32(reader["Id_tovar"].ToString());

zad.Id_klient = Convert.ToInt32(reader["Id_klient"].ToString());

zad.Id_vid = Convert.ToInt32(reader["Id_vid"].ToString());

zad.Data = reader["Data"].ToString();

zad.Kol = Convert.ToInt32(reader["Kol"].ToString());

zad.Ed_izm = reader["Ed_izm"].ToString();

zad.Zena = reader["Zena"].ToString();

}

return zad;

}

catch (Exception)

{

throw;

}

finally

{

if (connection != null) { connection.Close(); }

}

}

//Klient

public void Inser_klient(klient zad)

{

try

{

command.CommandText = "INSERT INTO Klient (Name,Tel,Adress,Email) VALUES('" + zad.Name + "', '" + zad.Tel + "', '" + zad.Adress +"','"+zad.Emaill+ "')";

command.CommandType = CommandType.Text;

connection.Open();

command.ExecuteNonQuery();

}

catch (Exception)

{

throw;

}

finally

{

if (connection != null) { connection.Close(); }

}

}

public List<klient> Fill_klient()

{

List<klient> spisok = new List<klient>();

try

{

command.CommandText = "SELECT * FROM Klient";

command.CommandType = CommandType.Text;

connection.Open();

OleDbDataReader reader = command.ExecuteReader();

while (reader.Read())

{

klient zad = new klient();

zad.Id = Convert.ToInt32(reader["Id"].ToString());

zad.Name = reader["Name"].ToString();

zad.Tel = reader["Tel"].ToString();

zad.Adress = reader["Adress"].ToString();

zad.Emaill = reader["Email"].ToString();

spisok.Add(zad);

}

return spisok;

}

catch (Exception)

{

throw;

}

finally

{

if (connection != null)

{

connection.Close();

}

}

}

public klient Get_klient_name(String id)

{

klient zad = new klient();

try

{

command.CommandText = "SELECT * FROM Klient WHERE Name = '" + id + "'";

command.CommandType = CommandType.Text;

connection.Open();

OleDbDataReader reader = command.ExecuteReader();

while (reader.Read())

{

zad.Id = Convert.ToInt32(reader["Id"].ToString());

zad.Name = reader["Name"].ToString();

zad.Tel = reader["Tel"].ToString();

zad.Adress = reader["Adress"].ToString();

zad.Emaill = reader["Email"].ToString();

}

return zad;

}

catch (Exception)

{

throw;

}

finally

{

if (connection != null) { connection.Close(); }

}

}

public List<klient> Fill_klient_name(String tab)

{

List<klient> spisok = new List<klient>();

try

{

command.CommandText = "SELECT * FROM Klient WHERE Name = '" + tab + " '";

command.CommandType = CommandType.Text;

connection.Open();

OleDbDataReader reader = command.ExecuteReader();

while (reader.Read())

{

klient zad = new klient();

zad.Id = Convert.ToInt32(reader["Id"].ToString());

zad.Name = reader["Name"].ToString();

zad.Tel = reader["Tel"].ToString();

zad.Adress = reader["Adress"].ToString();

zad.Emaill = reader["Email"].ToString();

spisok.Add(zad);

}

return spisok;

}

catch (Exception)

{

throw;

}

finally

{

if (connection != null) { connection.Close(); }

}

}

public void Update_klient(klient st, klient now)

{

try

{

command.CommandText = "UPDATE Klient SET Name = '" + now.Name + "',Tel ='" + now.Tel + "',Adress ='" + now.Adress + "',Email ='" + now.Emaill + "' WHERE ID =" + st.Id;

command.CommandType = CommandType.Text;

connection.Open();

command.ExecuteNonQuery();

}

catch (Exception)

{

throw;

}

finally

{

if (connection != null) { connection.Close(); }

}

}

public klient Get_klient_id(String id)

{

klient zad = new klient();

try

{

command.CommandText = "SELECT * FROM Klient WHERE Id = " + id;

command.CommandType = CommandType.Text;

connection.Open();

OleDbDataReader reader = command.ExecuteReader();

while (reader.Read())

{

zad.Id = Convert.ToInt32(reader["Id"].ToString());

zad.Name = reader["Name"].ToString();

zad.Tel = reader["Tel"].ToString();

zad.Adress = reader["Adress"].ToString();

zad.Emaill = reader["Email"].ToString();

}

return zad;

}

catch (Exception)

{

throw;

}

finally

{

if (connection != null) { connection.Close(); }

}

}

// Имя товара

public void Inser_tovar(tovar zad)

{

try

{

command.CommandText = "INSERT INTO Tovar (Name,Strana, Vid) VALUES('" + zad.Name + "', '" + zad.Strana + "', '" + zad.Vid + "')";

command.CommandType = CommandType.Text;

connection.Open();

command.ExecuteNonQuery();

}

catch (Exception)

{

throw;

}

finally

{

if (connection != null) { connection.Close(); }

}

}

public List<tovar> Fill_tovar()

{

List<tovar> spisok = new List<tovar>();

try

{

command.CommandText = "SELECT * FROM Tovar";

command.CommandType = CommandType.Text;

connection.Open();

OleDbDataReader reader = command.ExecuteReader();

while (reader.Read())

{

tovar zad = new tovar();

zad.Id = Convert.ToInt32(reader["Id"].ToString());

zad.Name = reader["Name"].ToString();

zad.Vid = reader["Vid"].ToString();

zad.Strana = reader["Strana"].ToString();

spisok.Add(zad);

}

return spisok;

}

catch (Exception)

{

throw;

}

finally

{

if (connection != null)

{

connection.Close();

}

}

}

public tovar Get_tovar_name(String id)

{

tovar zad = new tovar();

try

{

command.CommandText = "SELECT * FROM Tovar WHERE Name = '" + id + "'";

command.CommandType = CommandType.Text;

connection.Open();

OleDbDataReader reader = command.ExecuteReader();

while (reader.Read())

{

zad.Id = Convert.ToInt32(reader["Id"].ToString());

zad.Name = reader["Name"].ToString();

zad.Vid = reader["Vid"].ToString();

zad.Strana = reader["Strana"].ToString();

}

return zad;

}

catch (Exception)

{

throw;

}

finally

{

if (connection != null) { connection.Close(); }

}

}

public List<tovar> Fill_tovar_name(String tab)

{

List<tovar> spisok = new List<tovar>();

try

{

command.CommandText = "SELECT * FROM Tovar WHERE Name = '" + tab + " '";

command.CommandType = CommandType.Text;

connection.Open();

OleDbDataReader reader = command.ExecuteReader();

while (reader.Read())

{

tovar zad = new tovar();

zad.Id = Convert.ToInt32(reader["Id"].ToString());

zad.Name = reader["Name"].ToString();

zad.Vid = reader["Vid"].ToString();

zad.Strana = reader["Strana"].ToString();

spisok.Add(zad);

}

return spisok;

}

catch (Exception)

{

throw;

}

finally

{

if (connection != null) { connection.Close(); }

}

}

public void Update_tovar(tovar st, tovar now)

{

try

{

command.CommandText = "UPDATE Tovar SET Name = '" + now.Name + "',Vid ='" + now.Vid + "',Strana ='" + now.Strana + "' WHERE ID =" + st.Id;

command.CommandType = CommandType.Text;

connection.Open();

command.ExecuteNonQuery();

}

catch (Exception)

{

throw;

}

finally

{

if (connection != null) { connection.Close(); }

}

}

public tovar Get_tovar_id(String id)

{

tovar zad = new tovar();

try

{

command.CommandText = "SELECT * FROM Tovar WHERE Id = " + id;

command.CommandType = CommandType.Text;

connection.Open();

OleDbDataReader reader = command.ExecuteReader();

while (reader.Read())

{

zad.Id = Convert.ToInt32(reader["Id"].ToString());

zad.Name = reader["Name"].ToString();

zad.Vid = reader["Vid"].ToString();

zad.Strana = reader["Strana"].ToString();

}

return zad;

}

catch (Exception)

{

throw;

}

finally

{

if (connection != null) { connection.Close(); }

}

}

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

public void Inser_koll(koll zad)

{

try

{

command.CommandText = "INSERT INTO Koll (Id_tovar, Kol, Ed_izm) VALUES('" + zad.Id_tovar + "', '" + zad.Koll + "', '" + zad.Ed_izm + "')";

command.CommandType = CommandType.Text;

connection.Open();

command.ExecuteNonQuery();

}

catch (Exception)

{

throw;

}

finally

{

if (connection != null) { connection.Close(); }

}

}

public List<koll> Fill_koll()

{

List<koll> spisok = new List<koll>();

try

{

command.CommandText = "SELECT * FROM Koll";

command.CommandType = CommandType.Text;

connection.Open();

OleDbDataReader reader = command.ExecuteReader();

while (reader.Read())

{

koll zad = new koll();

zad.Id = Convert.ToInt32(reader["Id"].ToString());

zad.Id_tovar = Convert.ToInt32(reader["Id_tovar"].ToString());

zad.Koll = Convert.ToInt32(reader["Kol"].ToString());

zad.Ed_izm = reader["Ed_izm"].ToString();

spisok.Add(zad);

}

return spisok;

}

catch (Exception)

{

throw;

}

finally

{

if (connection != null)

{

connection.Close();

}

}

}

public void Update_koll(koll st, koll now)

{

try

{

command.CommandText = "UPDATE Koll SET Id_tovar = '" + now.Id_tovar + "',Kol ='" + now.Koll + "',Ed_izm ='" + now.Ed_izm + "' WHERE ID =" + st.Id;

command.CommandType = CommandType.Text;

connection.Open();

command.ExecuteNonQuery();

}

catch (Exception)

{

throw;

}

finally

{

if (connection != null) { connection.Close(); }

}

}

public koll Get_koll_id(String id)

{

koll zad = new koll();

try

{

command.CommandText = "SELECT * FROM Koll WHERE Id_tovar = " + id;

command.CommandType = CommandType.Text;

connection.Open();

OleDbDataReader reader = command.ExecuteReader();

while (reader.Read())

{

zad.Id = Convert.ToInt32(reader["Id"].ToString());

zad.Id_tovar = Convert.ToInt32(reader["Id_tovar"].ToString());

zad.Koll = Convert.ToInt32(reader["Kol"].ToString());

zad.Ed_izm = reader["Ed_izm"].ToString();

}

return zad;

}

catch (Exception)

{

throw;

}

finally

{

if (connection != null) { connection.Close(); }

}

}

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

public List<vid> Fill_vid()

{

List<vid> spisok = new List<vid>();

try

{

command.CommandText = "SELECT * FROM Vid";

command.CommandType = CommandType.Text;

connection.Open();

OleDbDataReader reader = command.ExecuteReader();

while (reader.Read())

{

vid zad = new vid();

zad.Id = Convert.ToInt32(reader["Id"].ToString());

zad.Status = reader["Status"].ToString();

spisok.Add(zad);

}

return spisok;

}

catch (Exception)

{

throw;

}

finally

{

if (connection != null)

{

connection.Close();

}

}

}

public vid Get_vid_id(string id)

{

vid zad = new vid();

try

{

command.CommandText = "SELECT * FROM Vid";

command.CommandText = "SELECT * FROM Vid WHERE Id = " + id;

command.CommandType = CommandType.Text;

connection.Open();

OleDbDataReader reader = command.ExecuteReader();

while (reader.Read())

{

zad.Id = Convert.ToInt32(reader["Id"].ToString());

zad.Status = reader["Status"].ToString();

}

return zad;

}

catch (Exception)

{

throw;

}

finally

{

if (connection != null)

{

connection.Close();

} } } }}

ПРИЛОЖЕНИЕ В

Товары в БД

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Drawing.Drawing2D;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace Apteka

{

public partial class Form_tovar : Form

{

public Form_tovar()

{

InitializeComponent();

}

private void Form_apteka_Load(object sender, EventArgs e)

{

GraphicsPath gPath = new GraphicsPath();

Rectangle rect = new Rectangle(0, 0, 680, 510);

gPath.AddRectangle(rect);

this.Region = new Region(gPath);

next();

}

private void next()

{

BD bd = new BD();

List<tovar> spisok = new List<tovar>();

spisok = bd.Fill_tovar();

dataGridView1.DataSource = spisok;

}

private void выходToolStripMenuItem_Click_1(object sender, EventArgs e)

{

this.Close();

}

private void бДToolStripMenuItem_Click(object sender, EventArgs e)

{

next();

}

private void button1_Click(object sender, EventArgs e)

{

if (textBox_FIO.Text == "")

{

MessageBox.Show("Заполните поля поиска!!!");

}

else

{

BD bd = new BD();

List<tovar> spisok = new List<tovar>();

spisok = bd.Fill_tovar_name(textBox_FIO.Text);

dataGridView1.DataSource = spisok;

}

}

private void button2_Click(object sender, EventArgs e)

{

if (textBox_name.Text == "" || textBox_strana.Text == "" || textBox_vid.Text == "")

{

MessageBox.Show("Заполните поля данных!!!");

}

else

{

tovar z = new tovar();

z.Name = textBox_name.Text;

z.Strana = textBox_strana.Text;

z.Vid = textBox_vid.Text;

BD bd = new BD();

try

{

bd.Inser_tovar(z);

tovar z1 = new tovar();

z1 = bd.Get_tovar_name(z.Name);

koll k = new koll();

k.Id_tovar = z1.Id;

k.Koll = 0;

k.Ed_izm = "Л";

bd.Inser_koll(k);

MessageBox.Show("Успешно!!!");

textBox_strana.Text = "";

textBox_name.Text = "";

textBox_vid.Text = "";

next();

}

catch (FormatException)

{ MessageBox.Show("Ошибка!"); }

}

}

private void button_delete_Click(object sender, EventArgs e)

{

if (textBox_id.Text == "")

{

MessageBox.Show("Заполните поля!!!");

}

else

{

BD bd = new BD();

bd.Delete(textBox_id.Text, "Tovar");

next();

}

}

private void button_update_Click(object sender, EventArgs e)

{

if (textBox_nam.Text == "" || textBox_stranna.Text == "" || textBox_idd.Text == "" || textBox_vidd.Text=="")

{

MessageBox.Show("Заполните поля данных!!!");

}

else

{

tovar z = new tovar();

tovar tek = new tovar();

z.Name = textBox_nam.Text;

z.Strana = textBox_stranna.Text;

z.Vid = textBox_vidd.Text;

tek.Id = Convert.ToInt32(textBox_idd.Text);

try

{

BD bd = new BD();

bd.Update_tovar(tek, z);

MessageBox.Show("Успешно!!!");

textBox_strana.Text = "";

textBox_name.Text = "";

textBox_idd.Text = "";

textBox_vidd.Text = "";

next();

}

catch (FormatException)

{ MessageBox.Show("Ошибка!"); }

}

}

private void dataGridView1_SelectionChanged(object sender, EventArgs e)

{

textBox_id.Text = dataGridView1[0, dataGridView1.CurrentRow.Index].Value.ToString();

textBox_idd.Text = dataGridView1[0, dataGridView1.CurrentRow.Index].Value.ToString();

textBox_nam.Text = dataGridView1[1, dataGridView1.CurrentRow.Index].Value.ToString();

textBox_stranna.Text = dataGridView1[2, dataGridView1.CurrentRow.Index].Value.ToString();

textBox_vidd.Text = dataGridView1[3, dataGridView1.CurrentRow.Index].Value.ToString();

}

}

}