Разработка программного обеспечения для пользователя, позволяющего автоматизировать обработку данных базы данных для автосервиса
Обоснование принимаемых решений по выбору технических и программных средств реализации программного проекта. Проектирование и программирование интерфейсов системы. Описание руководства пользователя. Тестирование системы и описание полученных результатов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 28.03.2015 |
Размер файла | 656,9 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Учреждение Образования
«Минский университет управления»
Кафедра автоматизированных информационных систем
Курсовая работа
по дисциплине: «Объектно-ориентированному программированию»
на тему: «Разработка программного обеспечения для пользователя, позволяющего автоматизировать обработку данных базы данных для автосервиса»
Студент группы 121101з
Селедцов А.И.
Руководитель:
Демидович Е.М.
Минск 2014
Содержание
Введение
1. Описание предметной области
2. Постановка задачи
3. Обоснование принимаемых решений по выбору технических и программных средств реализации
4. Функциональное моделирование
5. Информационное моделирование
6. Проектирование и программирование интерфейсов системы
7. Описание руководства пользователя
- 7.1 Назначение программы
- 7.2 Системные требования
- 7.3 Работа программы
- 7.4 Сообщения пользователю
- 8. Тестирование системы и описание полученных результатов
- Заключение
- Список литературных источников
- Приложение
Введение
В течение последнего десятилетия в нашей стране неуклонно растет спрос на специальности, связанные с сервисом.
Сервис - это особый вид человеческой деятельности, который направлен на удовлетворение потребностей клиента путем оказания услуг, востребованных отдельными людьми, социальными группами или организациями.
Потребности человека разнообразны и образуют сложно структурированную систему. Сервисная деятельность также разделяется на большое количество направлений (в частности станции технического обслуживания). Структура сервисной деятельности должна в общих чертах повторять структуру потребностей, соответствовать ей.
С тех пор как появились первые механические устройства возникла необходимость в их обслуживании и ремонте. Если телегу крестьянин обслуживал сам, то за римской боевой колесницей следили до трех человек, каждый из которых был узким специалистом: ходовая, оружие, кузов. Изобретение механических двигателей, вначале паровых, а позже и внутреннего сгорания и стремительное развитие последних привело к появлению автомобиля в том виде, в котором мы привыкли видеть сейчас.
Усложнение конструкции автомобиля повлияло на создание специализированных авторемонтных станций. Неоспоримым фактом является то, что появилась жесткая конкуренция между авторемонтными станциями. Необходимым стало совершенствовать ремонтные технологии. Начали появляться компании, которые предлагали специнструмент, материалы и оборудование.
В данной курсовой рассмотрены услуги, предоставляемые на СТО, приведены примеры клиентской базы, разновидности услуг предостовляемые на СТО, отчёт по деталям которые хронятся на складе, прайс-листы с ценой и номенованием услуг, фамилиями мастеров - приемщиков принимающих автомабили на приём и автослесарей, производящих работу.
1. Описание предметной области
В течение последнего десятилетия в нашей стране неуклонно растет спрос на услуги, связанные с автосервисом. Лицензирование автосервисов как вида деятельности давно отменено, и это избавляет предпринимателя от большого количества проблем с согласованиями. Достаточно иметь свидетельство о регистрации в качестве индивидуального предпринимателя или юридического лица, найти помещение, в котором можно разместить оборудование, закупить это самое оборудование, нанять специалистов и можно начинать работать.
В данном случае «что делать» - вопрос отнюдь не философский. Прежде чем начинать работу, надо решить, какие именно услуги вы будете оказывать.Ведь в зависимости от этого вам придется подбирать персонал и оборудование.
К наиболее распространенным видам работ относятся смазочно-заправочные, контрольно-диагностические, электротехнические, кузовные (исправление недостатков кузова и покраска), диагностика и ремонт двигателя, тормозной и рулевой систем.
Основной вопрос, который в этом случае предстоит решить - это сосредоточиться ли на одном или максимум двух-трех видах ремонта или создавать СТО широкого профиля.
Преимущества и недостатки того и другого варианта довольно просты. Для многопрофильного сервиса требуется куда больше оборудования, помещений и квалифицированных специалистов. С другой стороны, это значительно расширяет круг потенциальных клиентов.
Если же вы планируете заниматься каким-то одним (двумя-тремя) видами работ, это сузит первоначальный круг клиентов. Зато, вполне возможно, если вы будете оказывать качественные услуги, ваш сервис быстро приобретет положительную репутацию и клиенты потянутся. Потому что репутация, как говорят специалисты, в автосервисном бизнесе - это главное.
Считается, что кузовной ремонт более выгоден, чем механический. Механики, чтобы производить качественный ремонт огромного числа разных машин, должны знать массу тонкостей и нюансов по каждой машине. Либо придется опять же ограничивать свое поле деятельности, специализируясь на определенных марках машин. Либо в сложных случаях отказываться от ремонта, теряя прибыль и репутацию.
Однако и в кузовном ремонте существуют свои подводные камни. Например, мало кто задумывается о том, что качественный ремонт кузова сопряжен с проверкой многих электротехнических элементов автомобиля, зависимых от «жестянки». И качественный кузовной ремонт подразумевает, что все эти элементы (кондиционер, обогреватель и т. д.) будут после ремонта нормально функционировать. А это говорит о том, что даже на кузовном сервисе нужна команда механиков.
Оборудование, естественно, подбирается исходя из конкретных услуг, которые вы собираетесь оказывать вашим клиентам.
Но в самом общем случае на сервисе должны быть подъемники, комплексы для диагностики различных систем автомобиля, для кузовных сервисов - покрасочно-сушильное, сварочное оборудование. Не говоря уже о такой «мелочи», как слесарный инструмент.
Самые дешевые подъемники - двух-стоечные, их стоимость варьируется от 4500 до 15000 евро, в зависимости от изготовителя и дополнительного оборудования.
Ножничные подъемники дороже - от 5500 до 30000 евро, в зависимости еще и от вида - напольные, заглубляемые или на платформе. Но у этих подъемников есть преимущество - меньшая рабочая зона, по сравнению со стоечными. Следовательно, на одну и ту же производственную площадь можно поставить больше оборудования.
Отметим, что это цены на импортное оборудование. В России известны немецкая фирма Nussbaum, американская Rotary, итальянская OMA и другие.
Оборудование отечественного производства обойдется дешевле, но, к сожалению, в этом случае четко работает известное правило: импорт дороже, но качественнее и долговечнее.
Диагностическое оборудование включает в себя аппаратные и программные сканеры, мотор-тестеры, газоанализаторы. Причем делятся они на универсальные и пригодные для тестирования лишь отдельных марок автомобилей. Стоимость диагностических систем варьируется в пределах нескольких тысяч условных единиц.
Стоимость оборудования для окраски автомобилей исчисляется уже десятками тысяч евро.
Организация работы - немаловажный фактор успешности любого бизнеса. Это правило справедливо и для автосервисов. Самая распространенная схема известна любому человеку, который хоть раз отдавал машину в ремонт.
Работа в этом случае организована в три этапа.
Во первых, это приемка машины, обсуждение и согласование с клиентом необходимого объема работ, выписывание заказа на работу.
Во вторых - это передача машины в ремонтную зону механику, который будет производить работу.
В третьих - выходной контроль и возврат машины клиенту.
На крупных сервисах на все три этапа существуют свои ответственные люди. На практике же в средних и небольших мастерских эта схема упрощается.
При сменной работе в бригаду входят несколько механиков, главный мастер и делопроизводитель-кассир.
Мастер принимает клиентов и распределяет работу между механиками, он же контролирует качество работы на выходе. Делопроизводитель выписывает документы и ведет их учет и принимает плату за работу.
Но в таком упрощенном виде система работает до тех пор, пока не начинают скапливаться очереди на прием автомобилей. В этот момент обычно приходится вводить отдельную должность приемщика заказов.
Все автомобили состоят из большого числа разнообразных механизмом, агрегатов и узлов, которые и образуют основные три части автомобиля:
- кузов;
- двигатель;
- шасси.
Двигатель автомобиля представляет собой устройство, которое предназначено для того, чтобы осуществлять процесс преобразования тепловой энергии от топлива в энергию механическую, которая передается другим узлам автомобиля, тем самым, приводя его в движение.
Шасси в легковом автомобиле, как правило, составлено из следующих частей:
- трансмиссия - элементы, которые осуществляют передачу вращения коленчатого вала двигателя на колеса;
- ходовая часть - это колеса и прочие устройства, предназначенные для их связи и крепления с кузовом автомобиля;
- механизмы управления - тормозная система, система рулевого управления и прочее.
Во время движения водители пользуются механизмами управления повсеместно - они постоянно вертят рулевое колесо, разгоняют автомобиль или тормозят его. Кроме всего прочего, водители также используют разнообразное дополнительное электронное оборудование, включая сигналы поворотов, фары, габариты или используя звуковой сигнал автомобиля. Также здесь имеет место и некоторое дополнительное оборудование - обогреватель салона автомобиля, стеклоочистители, система кондиционирования и прочее. Ну и, разумеется, кузов.
Для того, чтобы автомобиль начал движение, колеса должны вращаться. Ведущих колес у автомобиля обязательно должно быть не меньше двух. В непосредственной зависимости от того, какие именно колеса приводят автомобиль в движение, принято разделять:
- автомобили с передним приводом
- автомобили с приводом на задние колеса
- автомобили с полным приводом на все четыре колеса.
Сегодня станции технического обслуживания предоставляют услуги по ремонту всех выше перечисленных элементов автомобиля. Существуют глобальные станции обслуживания и те, которые ориентированы на определенную работу, к примеру: шиномонтаж, установка ксенона, развал-схождение, установка стекол и др.
Для более подробного рассмотрения сервисных услуг взята станция «ФелОкт-Сервис» по адресу ул. Притыцкого, 60/5.
Предприятие осуществляет все виды технического обслуживания и ремонта автомобилей марки SKODA.
Работы по диагностике и техобслуживанию автомобилей SKODA выполняются в полном соответствии с требованиями завода - изготовителя.
Для проведения специализированных ремонтных работ на автомобилях заказчиков СТО укомплектована специальным инструментом SKODA.
Все ремонтные операции на автомобилях проводятся в строгом соответствии с требованиями завода Skoda, описанными в заводском руководстве по ремонту ELSA.
Перечень выполняемых работ:
- гарантийный и послегарантийный ремонт автомобилей SKODA независимо от места приобретения и года выпуска;
- техническое обслуживание с соблюдением всех заводских требований;
- замена агрегатов, узлов и деталей;
- ремонт двигателей, подвески и рулевого управления, сцепления, тормозной системы;
- ремонт КПП;
- ремонт ведущих мостов и приводов ведущих колёс;
- ремонт электрооборудования;
- ремонт кузова;
- ремонт топливной аппаратуры и дизельных двигателей;
- шиномонтаж и балансировка колес;
- ремонт и замена замков зажигания, замков дверей и сердцевин, в том числе с подбором под ключ;
- установка дополнительного оборудования;
- диагностика и заправка кондиционеров.
2. Постановка задачи
Задача автоматизации обработки данных не нова. Cуществуют десятки программ, способных предоставить пользователю относительно простую среду для эффективной обработки информации. Программы такого рода позволяют значительно ускорить и облегчить работу.
В курсовом проекте необходимо разработать программное обеспечение для пользователя, позволяющее автоматизировать обработку данных базы данных для автосервиса с использованием языка программирования высокого уровня С# и MySQL.
В приложении должны быть реализованы следующие функции:
- вывод содержимого базы данных;
- добавление записей в базу данных;
- редактирование записей в базе данных;
- удаление записей из базы данных;
- поиск записей в базе данных.
Также должен быть предусмотрен вывод сообщений об ошибках в случае ввода неверных команд или некорректных данных пользователем. Необходимо разработать удобное меню управления функциями приложения, которое обеспечивало бы удобную работу пользователя. Меню управления, по сути, представляет собой консольное окно приложения и реализует функциональность перечисленных выше структурных элементов приложения.
3. Обоснование принимаемых решений по выбору технических и программных средств реализации
программный обеспечение автосервис
Microsoft Visual Studio -- линейка продуктов компании Майкрософт, включающих интегрированную среду разработки программного обеспечения и ряд других инструментальных средств. Данные продукты позволяют разрабатывать как консольные приложения, так и приложения с графическим интерфейсом, в том числе с поддержкой технологии Windows Forms, а также веб-сайты, веб-приложения, веб-службы как в родном, так и в управляемом кодах для всех платформ, поддерживаемых Microsoft Windows, Windows Mobile, Windows CE, .NET Framework, .NET Compact Framework и Microsoft Silverlight.
Visual Studio включает в себя редактор исходного кода с поддержкой технологии IntelliSense и возможностью простейшего рефакторинга кода. Встроенный отладчик может работать как отладчик уровня исходного кода, так и как отладчик машинного уровня. Остальные встраиваемые инструменты включают в себя редактор форм для упрощения создания графического интерфейса приложения, веб-редактор, дизайнер классов и дизайнер схемы базы данных.
Microsoft SQL Server -- система управления реляционными базами данных (СУБД), разработанная корпорацией Microsoft. Основной используемый язык запросов -- Transact-SQL, создан совместно Microsoft и Sybase. Transact-SQL является реализацией стандарта ANSI/ISO по структурированному языку запросов (SQL) с расширениями. Используется для работы с базами данных размером от персональных до крупных баз данных масштаба предприятия; конкурирует с другими СУБД в этом сегменте рынка.
Основные функции СУБД:
· управление данными во внешней памяти (на дисках);
· управление данными в оперативной памяти с использованием дискового кэша;
· журнализация изменений, резервное копирование и восстановление базы данных после сбоев;
· поддержка языков БД (язык определения данных, язык манипулирования данными).
C# (произносится си шарп) -- объектно-ориентированный язык программирования. Разработан в 1998--2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как язык разработки приложений для платформы Microsoft .NET Framework.
C# разрабатывался как язык программирования прикладного уровня для CLR и, как таковой, зависит, прежде всего, от возможностей самой CLR. Это касается, прежде всего, системы типов C#, которая отражает BCL. Присутствие или отсутствие тех или иных выразительных особенностей языка диктуется тем, может ли конкретная языковая особенность быть транслирована в соответствующие конструкции CLR. Так, с развитием CLR от версии 1.1 к 2.0 значительно обогатился и сам C#; подобного взаимодействия следует ожидать и в дальнейшем. (Однако эта закономерность была нарушена с выходом C# 3.0, представляющего собой расширения языка, не опирающиеся на расширения платформы .NET.) CLR предоставляет C#, как и всем другим .NET-ориентированным языкам, многие возможности, которых лишены «классические» языки программирования. Например, сборка мусора не реализована в самом C#, а производится CLR для программ, написанных на C# точно так же, как это делается для программ на VB.NET, J# и др.
4. Функциональное моделирование
Для удобной и простой работы с базой данных необходимо разрабатываемое приложение, позволяющее производить все манипуляции с данными.
Для работы программы требуется PC совместимый компьютер и компилятор MS Visual C# 2008. При использовании иного сочетания характеристик системы, на которой будет использоваться программа, возможны некоторые расхождения с результатами работы.
Спроектируем варианты использования приложения, а также его структуру (рисунок 4.1-4.2)
Рисунок 4.1 Функциональное моделирование программного приложения
Рисунок 4.2 Функциональное моделирование программного приложения
Алгоритм взаимодействия пользователя с программой описан в Приложении A.
5. Информационное моделирование
Для хранения информации используется MS SQL база данных ServiceStation, включающая в себя пять таблиц:
Первая таблица Client предназначена для хранения информации о клиентах автосервиса. Включает в себя следующие столбцы:
- Fam (тип nvarchar(50), not null);
- Name (тип nvarchar(50), not null);
- Ochestvo (тип nvarchar(50), not null);
- Marka (тип nvarchar(50), not null);
- Number (тип nvarchar(50), not null, первичный ключ, идентификатор);
Вторая таблица Work предназначена для хранения информации об выполненных работах. Включает в себя следующие столбцы:
- Work (тип nvarchar(50), not null);
- Detali (тип nvarchar(50), not null);
- Worker (тип nvarchar(50), not null);
- Number (тип nvarchar(50), not null, первичный ключ, идентификатор).
- Price (тип int, not null).
Третья таблица Workers предназначена для хранения информации о логине, пароле и уровне доступа . Включает в себя следующие столбцы:
-ID (тип int, not null, первичный ключ, идентификатор);
-Login (nvarchar(100) ), Allow null value);
-Password (nvarchar(100) ), Allow null value);
-Access (тип int, not null , Allow null value);
Четвёртая таблица pricelist предназначена для хранения информации об услугах, которые выполняет автосервис, о деталях, времени выполнения работ, фамилии автослесаря и цене услуги. Включает в себя следующие столбцы:
- Work (тип nvarchar(50), not null);
- Detali (тип nvarchar(50), not null, первичный ключ, идентификатор);
- TimeWork (тип time(7), not null);
- AvtoMechanic (тип nvarchar(50), not null);
- Price (тип int, not null);
Пятая таблица warehouse предназначена для хранения информации о деталях, фирме-производителе детеалей, цене на детали для фирмы производящей работы, а также о том, есть ли в наличии детали. Включает в себя следующие столбцы:
- Detali (тип nvarchar(50), not null, первичный ключ, идентификатор);
- Manufacturer (тип nvarchar(50), not null);
- CompanyPrice (тип int, not null);
- ClientPrice (тип int, not null);
- AvailableInWarehouse (тип nvarchar(50), not null);
Сервер баз данных Microsoft SQL Server в качестве языка запросов использует версию языка SQL.
В SQL Server 2005 встроена поддержка .NET Framework. Благодаря этому хранимые процедуры БД могут быть написаны на любом языке платформы .NET, используя полный набор библиотек, доступных для .NET Framework, включая Common Type System (система обращения с типами данных в Microsoft .NET Framework). Однако, в отличие от других процессов, .NET Framework, будучи базисной системой для SQL Server 2005, выделяет дополнительную память и выстраивает средства управления SQL Server вместо того, чтобы использовать встроенные средства Windows. Это повышает производительность в сравнении с общими алгоритмами Windows, так как алгоритмы распределения ресурсов специально настроены для использования в структурах SQL Server.
В таблицах выберем первичные ключи и индексированные поля. Так же для поля определим его основные характеристики - является ли это поле внешним или первичным ключом, создан ли индекс по этому полю, задано ли для поля значение по умолчанию, какие ограничения заданы для данного поля. Вся информация об палях представлена в таблице 1, связи между таблицами базы данных представтена на рисунок 5.1.
Таблица 1. Описание данных
Название таблицы |
Имя поля |
Тип данных |
Размер поля |
Первичный ключ / вторичный ключ / индексированное поле |
|
Client |
Number |
Nvarchar |
50 |
Первичный ключ(AUTO_INCREMENT) |
|
Fam |
Nvarchar |
50 |
NOT NULL |
||
Name |
Nvarchar |
50 |
NOT NULL |
||
Ochestvo |
Nvarchar |
50 |
NOT NULL |
||
Marka |
Nvarchar |
50 |
NOT NULL |
||
Work |
Number |
Nvarchar |
50 |
Первичный ключ(AUTO_INCREMENT) |
|
Work |
Nvarchar |
50 |
NOT NULL |
||
Detali |
Nvarchar |
50 |
NOT NULL |
||
Worker |
Nvarchar |
50 |
NOT NULL |
||
Price |
Integer |
50 |
NOT NULL |
||
Workers |
ID |
Integer |
50 |
Первичный ключ(AUTO_INCREMENT) |
|
Login |
Nvarchar |
100 |
NOT NULL |
||
Password |
Nvarchar |
100 |
NOT NULL |
||
Access |
Integer |
50 |
NOT NULL |
||
priceList |
Detali |
Nvarchar |
50 |
Первичный ключ(AUTO_INCREMENT) |
|
Work |
Nvarchar |
50 |
NOT NULL |
||
TimeWork |
DateTime |
- |
NOT NULL |
||
AvtoMechanic |
Nvarchar |
50 |
NOT NULL |
||
Price |
Integer |
50 |
NOT NULL |
||
warehouse |
Detali |
Nvarchar |
50 |
Первичный ключ(AUTO_INCREMENT) |
|
Manufacturer |
Nvarchar |
50 |
NOT NULL |
||
CompanyPrice |
Integer |
50 |
NOT NULL |
||
ClientPrice |
Integer |
50 |
NOT NULL |
||
AvailableInWarehouse |
Nvarchar |
50 |
NOT NULL |
Рисунок 5.1 Связи таблиц базы данных
6. Проектирование и программирование интерфейсов системы
Приложение будет иметь вид консольного окна, через которое можно будет взаимодействовать с пунктами, показанными в нем. Структура окна имеет следующий вид (рисунок 6.1):
Рисунок 6.1 Пользовательский интерфейс
Программный код, реализующий вышеописанные функции на языке С# представлен в Приложении 2.
7. Описание руководства пользователя
7.1 Назначение программы
Программа предназначена для автоматизации доступа, обработки, вывода информации об услугах автосервиса и его клиентах. Программа имеет понятный и простой для пользователя интерфейс. Для входа в программу существует три уровня доступа: админ (рисунок 7.1), пользоавтель (рисунок 7.2) и защитный (рисунок 7.3), использующийся для защиты от несанкционированного доступа в программу.
Рисунок 7.1 Интерфейс программы реализованный в уровне доступа админ
Рисунок 7.2 Интерфейс программы, реализованный в уровне доступа пользователь
Рисунок 7.3 Интерфейс программы реализованный в при неправельном вводе пароля
7.2 Системные требования
Для выполнения программы необходим компьютер, подключённый к локальной сети или имеющий доступ к Enternet (конкретно к MySQL). Минимальные системные требования для компьютера:
1) Процессор Intel Pentium 2.16 GHz;
2) Оперативная память 1024 Mb;
3) Операционная система Windows Server 2003/Server 2008/XP/Vista/7.
7.3 Работа программы
Для открытия приложения необходимо запустить файл Автосервис.exe. При входе в программу предлогается ввести логин и пороли для идинтификации пользователя. Существуют три уровня доступа в программу: админ - расширенный интерфейс, позволяющий осуществлять все заложенные функции программы (рисунок 7.1), такие как:
1. Просмотреть все записи базы данных автосервиса
2. Просмотреть всех клиентов
3. Просмотреть список текущих работ
4. Просмотреть список возможных работ
5. Просмотреть наличие деталей на складе
6. Добавить клиента
7. Ввести выполненые работы
8. Изменить данные клиента
9. Измененить выбранный тип работы
10. Удаление клиента
11. Удаление работы
12. Поиск по номеру машины
13. Поиск по фамилии мастера
14. Выход;
Пользоавтель упрощённый интерфейс, позволяющий осуществлять только пользовательские функции программы (рисунок 7.2), такие как:
1. Просмотреть все записи базы данных автосервиса
2. Просмотреть всех клиентов
3. Просмотреть список текущих работ
4. Просмотреть список возможных работ
12. Поиск по номеру машины
13. Поиск по фамилии мастера
14. Выход;
При неверном вводе логина и пароля программа требует в ввести логин и пороль занова, до тех пор, пока не будет ввведён правельный пороль (рисунок 7.3).
7.4 Сообщения пользователю
При возникновении исключительной ситуации оператору будет сообщено об ошибке. Примеры ошибок:
1) «Не была введина фамилия». Возникает, если пользователь оставил поле пустым.
2) «Неверно! Введите соответствующую действию цифру!». Возникает, если пользователь пытается воспользоваться функцией, которой в меню не существует.
3) «Не удалось подключиться к серверу». Возникает при отсутствии соединения с сервером базы данных.
4) «Введите правильные данные!». Возникает при вводе некорректных данных.
8. Тестирование системы и описание полученных результатов
8.1 Аварийное изменение конфигураций сервера
Проведём тестирование полученного приложения.Стрессовое тестирование позволяет проверить насколько приложение, и система в целом работоспособно в условиях стресса и оценить способность системы к регенерации, т.е. к возвращению к нормальному состоянию после прекращения воздействия стресса. Стрессом в данном контексте может быть повышение интенсивности выполнения операций до очень высоких значений или аварийное изменение конфигурации сервера. Также одной из задач при стрессовом тестировании может быть оценка деградации производительности, таким образом, цели стрессового тестирования могут пересекаться с целями тестирования производительности.
Проведём тестирование с аварийным изменением конфигураций сервера (рисунок 8.1):
Рисунок 8.1 Аварийное изменение конфигураций сервера
В случаи разрыва соединения с сервером, будет выдана соответствующая ошибка, а возможность работы с информацией будет остановлена. Будет открыто окно с настройками подключения к серверу для решения проблемы.
В ходе тестирования на стрессоустойчивость программа справляется с критическими ситуациями и возвращается к нормальному состоянию после прекращения воздействия стресса.
8.2 Тестирование стабильности или надежности
Задачей тестирования стабильности (надежности) является проверка работоспособности приложения при длительном (многочасовом) тестировании со средним уровнем нагрузки. Времена выполнения операций могут играть в данном виде тестирования второстепенную роль. При этом на первое место выходит отсутствие утечек памяти, перезапусков серверов под нагрузкой и другие аспекты, влияющие именно на стабильность работы.
Было проведено тестирование на некорректные действия пользователя. Пользотель не сможет вызвать необрабатываемых ошибок в программе и нарушить её работоспособность.
Аналогичная проверка включена во все поля, где возможен ввод некорректных данных. Результат тестирования представлен на рисунке 8.2.
Рисунок 8.2 Рабочее окно программы
Программа прошла тестирование и полностью работоспособна. Уязвимостей не обнаружено.
Заключение
При выполнении курсового проекта были пройдены все этапы разработки специализированного прикладного программного обеспечения:
- формализация задачи;
- сбор необходимых исходных данных;
- разработка и отладка программного продукта.
Разработана программа «Автосервис», которая позволяет автоматизировать работу пользователя и облегчить доступ к информации и ее обработку. Приложение обеспечивает лёгкую и быструю работу с базой данных.
Разработанное приложение выполняет следующие операции:
1. Просмотреть все записи базы данных автосервиса
2. Просмотреть всех клиентов
3. Просмотреть список текущих работ
4. Просмотреть список возможных работ
5. Просмотреть наличие деталей на складе
6. Добавить клиента
7. Ввести выполненые работы
8. Изменить данные клиента
9. Измененить выбранный тип работы
10. Удаление клиента
11. Удаление работы
12. Поиск по номеру машины
13. Поиск по фамилии мастера
14. Выход;
Кроме того, был спроектирован консольный интерфейс, который обеспечивает удобную работу пользователя с приложением. Интерфейс реализован в виде консольного окна, в котором перечислены пункты, при помощи которых можно взаимодействовать с БД автосервиса.
При разработке программного приложения «Автосервис» мною был глубже изучен язык С# и вопросы взаимодействия с базой данных.
Список использованных источников
1. Павловская Т.А. C#. Программирование на языке высокого уровня. Учебник для вузов. - СПб.: Питер, 2007. - 432 с.
2. Фролов А.В., Фролов Г.В. Язык C#. Самоучитель. - М.: ДИАЛОГ-МИФИ, 2003. - 560 с.
3. Шилдт Г.Полный справочник по C#. - М.: Издательский дом «Вильямс», 2004. - 752 с.
4. Робинсон С., Кумар Н., Макквин К., Корнес О., Глин Дж., Харвей Б. C# для профессионалов (2 тома). Программист - программисту. - М.: Лори, 2003. - 478с.
5. Использование C#. Специальное издание. - М.: Издательский дом «Вильямс», 2002. - 528с.
6. Шилдт.Г. C#: учебный курс. - М.: Питер, 2002. - 512с.
7. Трэй Нэш. C# 2008: ускоренный курс для профессионалов. - М.: ООО «И.Д. Вильямс», 2008. - 576 с.
8. Троелсен Э. C# и платформа NET. Библиотека программиста. - Спб.: Питер, 2002. - 800 с.
9. Прайс Д., Гандэрлой М. Visual C#.NET. Полное руководство.: - К.: ВЕК+, СПб.: КОРОНА принт, К.: НТИ, М.: Энтроп, 2004. - 960 с.
10. Секунов Н.Ю. Разработка приложений на С++ и C#. Библиотека программиста. - СПб.: Питер, 2003. - 608 с.
11. Майо Д. C#: Искусство программирования. Энциклопедия программиста. - СПб.: ООО «ДиаСофтЮП», 2002.- 656 с.
1. Приложение A. Схема обобщённого алгоритма работы программы
Схема алгоритма работы программы
Приложение 2. Листинг программного кода
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Data.Sql;
using System.Data.SqlClient;
namespace Курсавой_проект_Автосервис
{
class Автосервис
{
static string Enter(string str1, string str2)
{
SqlConnection myConnection88 = new SqlConnection(@"server=localhost; Trusted_Connection=yes; database=ServiceStation; Connection timeout=10");
try
{
string access = "2";
myConnection88.Open();
SqlDataReader myReader = null;
SqlParameter myParam77 = new SqlParameter("@Param77", SqlDbType.NVarChar, 50);
myParam77.Value = str1;
SqlParameter myParam88 = new SqlParameter("@Param88", SqlDbType.NVarChar, 50);
myParam88.Value = str2;
SqlCommand myCommand = new SqlCommand("Select Access from Workers WHERE Login=@Param77 and Password=@Param88", myConnection88);
myCommand.Parameters.Add(myParam77);
myCommand.Parameters.Add(myParam88);
myReader = myCommand.ExecuteReader();
while (myReader.Read())
{
access = myReader["Access"].ToString();
}
myConnection88.Close();
return access;
}
catch
{
Console.WriteLine("Не удалось подключиться к серверу!\n");
return "2";
}
}
static void Main(string[] args)
{
string buff = null, name, fam, famm, ochestvo, marka, number, numberr, work, detali, worker;
int price;
string access2 = "3", log = null, pass = null;
bool flag = true;
bool flag2 = true;
while (flag2)
{
while (flag)
{
if (int.Parse(access2) != 0 && int.Parse(access2) != 1)
{
Console.WriteLine(" _АвтоСервис_ \n");
Console.WriteLine("Для входа в программу введите логин и пароль!\n");
Console.WriteLine("Введите Логин");
log = Console.ReadLine();
Console.WriteLine("Введите пароль");
pass = Console.ReadLine();
access2 = Enter(log, pass);
}
if (access2 == "0")
{
Console.WriteLine(" _АвтоСервис_ \n");
Console.Write("\nВыберите действие:\n\n" +
"1. Просмотреть все записи базы данных автосервиса \n" +
"2. Просмотреть всех клиентов\n" +
"3. Просмотреть список текущих работ\n" +
"4. Просмотреть список возможных работ\n" +
"5. Просмотреть наличие деталей на складе\n" +
"6. Добавить клиента\n" +
"7. Ввести выполненые работы\n" +
"8. Изменить данные клиента\n" +
"9. Измененить выбранный тип работы\n" +
"10. Удаление клиента\n" +
"11. Удаление работы\n" +
"12. Поиск по номеру машины\n" +
"13. Поиск по фамилии мастера\n" +
"14. Выход\n\n");
Console.Write("Ваш выбор: ");
buff = Console.ReadLine();
Console.WriteLine();
break;
}
if (access2 == "1")
{
Console.WriteLine(" _АвтоСервис_ ");
Console.Write("\nВыберите действие:\n\n" +
"1. Просмотреть все записи базы данных автосервиса \n" +
"2. Просмотреть всех клиентов\n" +
"3. Просмотреть список текущих работ\n" +
"4. Просмотреть список возможных работ\n" +
"12. Поиск по номеру машины\n" +
"13. Поиск по фамилии мастера\n" +
"14. Выход\n\n");
Console.Write("Ваш выбор: ");
buff = Console.ReadLine();
Console.WriteLine();
break;
}
else
{
Console.WriteLine("Введен неправильный пароль!\n");
continue;
}
}
switch (buff)
{
case "1":
SqlConnection myConnection = new SqlConnection(@"server=localhost; Trusted_Connection=yes; database=ServiceStation; Connection timeout=10");
try
{
myConnection.Open();
SqlDataReader myReader = null;
SqlCommand myCommand = new SqlCommand("Select * from client,work where client.number=work.number", myConnection);
myReader = myCommand.ExecuteReader();
while (myReader.Read())
{
Console.Write("Фамилия: " + myReader["Fam"].ToString() + "\n");
Console.Write("Имя: " + myReader["Name"].ToString() + "\n");
Console.Write("Отчество: " + myReader["Ochestvo"].ToString() + "\n");
Console.Write("Марка машины: " + myReader["Marka"].ToString() + "\n");
Console.Write("Регистрационный номер: " + myReader["Number"].ToString() + "\n");
Console.Write("Работы: " + myReader["Work"].ToString() + "\n");
Console.Write("Детали: " + myReader["Detali"].ToString() + "\n");
Console.Write("Мастер: " + myReader["Worker"].ToString() + "\n");
Console.Write("Цена: " + myReader["Price"].ToString() + "\n\n\n");
}
myConnection.Close();
break;
}
catch
{
Console.WriteLine("Не удалось подключиться к серверу!\n");
break;
}
case "2":
SqlConnection myConnection2 = new SqlConnection(@"server=localhost; Trusted_Connection=yes; database=ServiceStation; Connection timeout=10");
try
{
myConnection2.Open();
SqlDataReader myReader = null;
SqlCommand myCommand = new SqlCommand("Select * from client", myConnection2);
myReader = myCommand.ExecuteReader();
while (myReader.Read())
{
Console.Write("Фамилия: " + myReader["Fam"].ToString() + "\n");
Console.Write("Имя: " + myReader["Name"].ToString() + "\n");
Console.Write("Отчество: " + myReader["Ochestvo"].ToString() + "\n");
Console.Write("Марка машины: " + myReader["Marka"].ToString() + "\n");
Console.Write("Регистрационный номер: " + myReader["Number"].ToString() + "\n\n");
}
myConnection2.Close();
break;
}
catch
{
Console.WriteLine("Не удалось подключиться к серверу!\n");
break;
}
case "3":
SqlConnection myConnection3 = new SqlConnection(@"server=localhost; Trusted_Connection=yes; database=ServiceStation; Connection timeout=10");
try
{
myConnection3.Open();
SqlDataReader myReader = null;
SqlCommand myCommand = new SqlCommand("Select * from work", myConnection3);
myReader = myCommand.ExecuteReader();
while (myReader.Read())
{
Console.Write("Работы: " + myReader["Work"].ToString() + "\n");
Console.Write("Детали: " + myReader["Detali"].ToString() + "\n");
Console.Write("Мастер: " + myReader["Worker"].ToString() + "\n");
Console.Write("Регистрационный номер машины: " + myReader["Number"].ToString() + "\n");
Console.Write("Цена: " + myReader["Price"].ToString() + "\n\n");
}
myConnection3.Close();
break;
}
catch
{
Console.WriteLine("Не удалось подключиться к серверу!\n");
break;
}
case "4":
SqlConnection myConnection4 = new SqlConnection(@"server=localhost; Trusted_Connection=yes; database=ServiceStation; Connection timeout=10");
try
{
myConnection4.Open();
SqlDataReader myReader = null;
SqlCommand myCommand = new SqlCommand("Select * from priceList", myConnection4);
myReader = myCommand.ExecuteReader();
while (myReader.Read())
{
Console.Write("Работы: " + myReader["Work"].ToString() + "\n");
Console.Write("Детали: " + myReader["Detali"].ToString() + "\n");
Console.Write("Время ремонта: " + myReader["TimeWork"].ToString() + "\n");
Console.Write("Автомеханик производящий работы: " + myReader["AvtoMechanic"].ToString() + "\n");
Console.Write("Цена: " + myReader["Price"].ToString() + "\n\n");
}
myConnection4.Close();
break;
}
catch
{
Console.WriteLine("Не удалось подключиться к серверу!\n");
break;
}
case "5":
SqlConnection myConnection5 = new SqlConnection(@"server=localhost; Trusted_Connection=yes; database=ServiceStation; Connection timeout=10");
try
{
myConnection5.Open();
SqlDataReader myReader = null;
SqlCommand myCommand = new SqlCommand("Select * from warehouse", myConnection5);
myReader = myCommand.ExecuteReader();
while (myReader.Read())
{
Console.Write("Детали : " + myReader["Detali"].ToString() + "\n");
Console.Write("Производитель детали : " + myReader["Manufacturer"].ToString() + "\n");
Console.Write("Цена детали для фирмы : " + myReader["CompanyPrice"].ToString() + "\n");
Console.Write("Цена детали для клиента : " + myReader["ClientPrice"].ToString() + "\n");
Console.Write("Есть ли в деталь на складе : " + myReader["AvailableInWarehouse"].ToString() + "\n\n");
}
myConnection5.Close();
break;
}
catch
{
Console.WriteLine("Не удалось подключиться к серверу!\n");
break;
}
case "6":
Console.WriteLine("Введите фамилию");
fam = Console.ReadLine();
if (fam.Length == 0)
{
Console.WriteLine("Не была введена фамилия!\n");
break;
}
Console.WriteLine("Введите имя");
name = Console.ReadLine();
if (name.Length == 0)
{
Console.WriteLine("Не было введено имя!\n");
break;
}
Console.WriteLine("Введите отчество");
ochestvo = Console.ReadLine();
if (ochestvo.Length == 0)
{
Console.WriteLine("Не было введено отчество!\n");
break;
}
Console.WriteLine("Введите марку машины");
marka = Console.ReadLine();
if (marka.Length == 0)
{
Console.WriteLine("Не была введена марка машины!\n");
break;
}
Console.WriteLine("Введите регистрационный номер машины");
number = Console.ReadLine();
if (number.Length == 0)
{
Console.WriteLine("Не был введен регистрационный номер машины!\n");
break;
}
SqlConnection myConnection6 = new SqlConnection(@"server=localhost; Trusted_Connection=yes; database=ServiceStation; Connection timeout=10");
try
{
myConnection6.Open();
SqlParameter myParam1 = new SqlParameter("@Param1", SqlDbType.NVarChar, 50);
myParam1.Value = fam;
SqlParameter myParam2 = new SqlParameter("@Param2", SqlDbType.NVarChar, 50);
myParam2.Value = name;
SqlParameter myParam3 = new SqlParameter("@Param3", SqlDbType.NVarChar, 50);
myParam3.Value = ochestvo;
SqlParameter myParam4 = new SqlParameter("@Param4", SqlDbType.NVarChar, 50);
myParam4.Value = marka;
SqlParameter myParam5 = new SqlParameter("@Param5", SqlDbType.NVarChar, 50);
myParam5.Value = number;
SqlCommand myCommand3 = new SqlCommand("Insert into client (Fam,Name,Ochestvo,Marka,Number) values (@Param1,@Param2,@Param3,@Param4,@Param5);", myConnection6);
myCommand3.Parameters.Add(myParam1);
myCommand3.Parameters.Add(myParam2);
myCommand3.Parameters.Add(myParam3);
myCommand3.Parameters.Add(myParam4);
myCommand3.Parameters.Add(myParam5);
myCommand3.ExecuteNonQuery();
myConnection6.Close();
Console.WriteLine("\nКлиент добавлен!\n");
break;
}
catch
{
Console.WriteLine("Не удалось подключиться к серверу!\n");
break;
}
case "7":
Console.WriteLine("Введите Произведенные работы");
work = Console.ReadLine();
if (work.Length == 0)
{
Console.WriteLine("Не были введены произведенные работы!\n");
break;
}
Console.WriteLine("Введите использованные детали");
detali = Console.ReadLine();
if (detali.Length == 0)
{
Console.WriteLine("Не были введены использованные детали!\n");
break;
}
Console.WriteLine("Введите фамилию мастера производившего работы");
worker = Console.ReadLine();
if (worker.Length == 0)
{
Console.WriteLine("Не была введена фамилию мастера производившего работы!\n");
break;
}
Console.WriteLine("Введите регистрационный номер машины");
number = Console.ReadLine();
if (number.Length == 0)
{
Console.WriteLine("Не был введен регистрационный номер машины!\n");
break;
}
Console.WriteLine("Введите цену к оплате");
var key2 = new ConsoleKeyInfo();
var number2 = "";
while ((key2 = Console.ReadKey()).Key != ConsoleKey.Enter)
{
if (!Char.IsDigit(key2.KeyChar))
{
if (!Char.IsControl(key2.KeyChar))
Console.Write("\b \b");
}
else
{
if (!Char.IsControl(key2.KeyChar))
number2 += key2.KeyChar;
}
if (key2.Key == ConsoleKey.Backspace && number2.Length > 0)
{
number2 = number2.Remove(number2.Length - 1, 1);
Console.Write("\b");
}
}
price = Convert.ToInt32(number2);
SqlConnection myConnection7 = new SqlConnection(@"server=localhost; Trusted_Connection=yes; database=ServiceStation; Connection timeout=10");
try
{
myConnection7.Open();
SqlParameter myParam6 = new SqlParameter("@Param6", SqlDbType.NVarChar, 50);
myParam6.Value = work;
SqlParameter myParam7 = new SqlParameter("@Param7", SqlDbType.NVarChar, 50);
myParam7.Value = detali;
SqlParameter myParam8 = new SqlParameter("@Param8", SqlDbType.NVarChar, 50);
myParam8.Value = worker;
SqlParameter myParam9 = new SqlParameter("@Param9", SqlDbType.NVarChar, 50);
myParam9.Value = number;
SqlParameter myParam10 = new SqlParameter("@Param10", SqlDbType.Int);
myParam10.Value = price;
SqlCommand myCommand2 = new SqlCommand("Insert into work (Work,Detali,Worker,Number,Price) values (@Param6,@Param7,@Param8,@Param9,@Param10);", myConnection7);
myCommand2.Parameters.Add(myParam6);
myCommand2.Parameters.Add(myParam7);
myCommand2.Parameters.Add(myParam8);
myCommand2.Parameters.Add(myParam9);
myCommand2.Parameters.Add(myParam10);
myCommand2.ExecuteNonQuery();
myConnection7.Close();
Console.WriteLine("\nРаботы добавлены!\n");
break;
}
catch
{
Console.WriteLine("Не удалось подключиться к серверу!\n");
break;
}
case "8":
Console.WriteLine("Введите Фамилию");
famm = Console.ReadLine();
if (famm.Length == 0)
{
Console.WriteLine("Не была введена фамилия!\n");
break;
}
SqlConnection myConnection8 = new SqlConnection(@"server=localhost; Trusted_Connection=yes; database=ServiceStation; Connection timeout=10");
try
{
myConnection8.Open();
SqlDataReader myReader1 = null;
SqlParameter myParam11 = new SqlParameter("@Param11", SqlDbType.NVarChar, 50);
myParam11.Value = famm;
SqlCommand myCommand4 = new SqlCommand("Select * from client where fam = @Param11 ", myConnection8);
myCommand4.Parameters.Add(myParam11);
myReader1 = myCommand4.ExecuteReader();
while (myReader1.Read())
{
Console.Write("Фамилия: " + myReader1["Fam"].ToString() + "\n");
Console.Write("Имя: " + myReader1["Name"].ToString() + "\n");
Console.Write("Отчество: " + myReader1["Ochestvo"].ToString() + "\n");
Console.Write("Марка машины: " + myReader1["Marka"].ToString() + "\n");
Console.Write("Регистрационный номер: " + myReader1["Number"].ToString() + "\n\n");
}
myConnection8.Close();
}
catch
{
Console.WriteLine("Не удалось подключиться к серверу!\n");
break;
}
Console.WriteLine("Введите фамилию");
fam = Console.ReadLine();
if (fam.Length == 0)
{
Console.WriteLine("Не была введена фамилия!\n");
break;
}
Console.WriteLine("Введите имя");
name = Console.ReadLine();
if (name.Length == 0)
{
Console.WriteLine("Не было введено имя клиента!\n");
break;
}
Console.WriteLine("Введите очество");
ochestvo = Console.ReadLine();
if (ochestvo.Length == 0)
{
Console.WriteLine("Не было введено отчество клиента!\n");
break;
}
Console.WriteLine("Введите марку машины");
marka = Console.ReadLine();
if (marka.Length == 0)
{
Console.WriteLine("Не была введена марка машины!\n");
break;
}
Console.WriteLine("Введите регистрационный номер машины");
number = Console.ReadLine();
if (number.Length == 0)
{
Console.WriteLine("Не был введен номер!\n");
break;
}
//myConnection09
SqlConnection myConnection09 = new SqlConnection(@"server=localhost; Trusted_Connection=yes; database=ServiceStation; Connection timeout=10");
try
{
myConnection09.Open();
SqlParameter myParam12 = new SqlParameter("@Param12", SqlDbType.NVarChar, 50);
myParam12.Value = fam;
SqlParameter myParam13 = new SqlParameter("@Param13", SqlDbType.NVarChar, 50);
myParam13.Value = name;
SqlParameter myParam14 = new SqlParameter("@Param14", SqlDbType.NVarChar, 50);
myParam14.Value = ochestvo;
SqlParameter myParam15 = new SqlParameter("@Param15", SqlDbType.NVarChar, 50);
myParam15.Value = marka;
SqlParameter myParam16 = new SqlParameter("@Param16", SqlDbType.NVarChar, 50);
myParam16.Value = number;
SqlParameter myParam17 = new SqlParameter("@Param17", SqlDbType.NVarChar, 50);
myParam17.Value = famm;
SqlCommand myCommand5 = new SqlCommand
("Update client Set Fam = @Param12, Name = @Param13, Ochestvo = @Param14, Marka = @Param15, Number = @Param16 where Fam = @Param17;", myConnection09);
myCommand5.Parameters.Add(myParam12);
myCommand5.Parameters.Add(myParam13);
myCommand5.Parameters.Add(myParam14);
myCommand5.Parameters.Add(myParam15);
myCommand5.Parameters.Add(myParam16);
myCommand5.Parameters.Add(myParam17);
myCommand5.ExecuteNonQuery();
myConnection09.Close();
Console.WriteLine("Запись изменена!\n");
break;
}
catch
{
Console.WriteLine("Не удалось подключиться к серверу!\n");
break;
}
case "9":
Console.WriteLine("Введите Регистрационный номер");
numberr = Console.ReadLine();
if (numberr.Length == 0)
{
Console.WriteLine("Не был введен номер!\n");
break;
}
SqlConnection myConnection9 = new SqlConnection(@"server=localhost; Trusted_Connection=yes; database=ServiceStation; Connection timeout=10");
try
{
myConnection9.Open();
SqlDataReader myReader1 = null;
SqlParameter myParam18 = new SqlParameter("@Param11", SqlDbType.NVarChar, 50);
myParam18.Value = numberr;
SqlCommand myCommand4 = new SqlCommand("Select * from work where number=@Param11", myConnection9);
myCommand4.Parameters.Add(myParam18);
myReader1 = myCommand4.ExecuteReader();
while (myReader1.Read())
{
Console.Write("Работы: " + myReader1["Work"].ToString() + "\n");
Console.Write("Детали: " + myReader1["Detali"].ToString() + "\n");
Console.Write("Мастер: " + myReader1["Worker"].ToString() + "\n");
Console.Write("Регистрационный номер машины: " + myReader1["Number"].ToString() + "\n");
Console.Write("Цена: " + myReader1["Price"].ToString() + "\n\n");
}
myConnection9.Close();
}
catch
{
Console.WriteLine("Не удалось подключиться к серверу!\n");
break;
}
Console.WriteLine("Введите Произведенные работы");
work = Console.ReadLine();
if (work.Length == 0)
{
Console.WriteLine("Не были введены произведенные работы!\n");
break;
}
Console.WriteLine("Введите использованные детали");
detali = Console.ReadLine();
if (detali.Length == 0)
{
Console.WriteLine("Не были введены детали!\n");
break;
}
Console.WriteLine("Введите фамилию мастера производившего работы");
worker = Console.ReadLine();
if (worker.Length == 0)
{
Console.WriteLine("Не была введена фамилия мастера производившего работы !\n");
break;
}
Console.WriteLine("Введите регистрационный номер машины");
number = Console.ReadLine();
if (number.Length == 0)
{
Console.WriteLine("Не был введен регистрационный номер машины!\n");
break;
}
Console.WriteLine("Введите цену к оплате");
var key3 = new ConsoleKeyInfo();
var number3 = "";
while ((key2 = Console.ReadKey()).Key != ConsoleKey.Enter)
{
if (!Char.IsDigit(key2.KeyChar))
{
if (!Char.IsControl(key2.KeyChar))
Console.Write("\b \b");
}
else
{
if (!Char.IsControl(key2.KeyChar))
number3 += key2.KeyChar;
}
if (key2.Key == ConsoleKey.Backspace && number3.Length > 0)
{
number3 = number3.Remove(number3.Length - 1, 1);
Console.Write("\b");
}
}
price = Convert.ToInt32(number3);
//myConnection010
SqlConnection myConnection010 = new SqlConnection(@"server=localhost; Trusted_Connection=yes; database=ServiceStation; Connection timeout=10");
try
{
myConnection010.Open();
SqlParameter myParam19 = new SqlParameter("@Param19", SqlDbType.NVarChar, 50);
myParam19.Value = work;
SqlParameter myParam20 = new SqlParameter("@Param20", SqlDbType.NVarChar, 50);
myParam20.Value = detali;
SqlParameter myParam21 = new SqlParameter("@Param21", SqlDbType.NVarChar, 50);
myParam21.Value = worker;
SqlParameter myParam22 = new SqlParameter("@Param22", SqlDbType.NVarChar, 50);
myParam22.Value = number;
SqlParameter myParam23 = new SqlParameter("@Param23", SqlDbType.Int);
myParam23.Value = price;
SqlParameter myParam24 = new SqlParameter("@Param24", SqlDbType.NVarChar, 50);
myParam24.Value = numberr;
SqlCommand myCommand5 = new SqlCommand
("Update work Set work = @Param19, detali = @Param20, worker = @Param21, number = @Param22, price = @Param23 where number = @Param24;", myConnection010);
myCommand5.Parameters.Add(myParam19);
myCommand5.Parameters.Add(myParam20);
myCommand5.Parameters.Add(myParam21);
myCommand5.Parameters.Add(myParam22);
myCommand5.Parameters.Add(myParam23);
myCommand5.Parameters.Add(myParam24);
myCommand5.ExecuteNonQuery();
myConnection010.Close();
Console.WriteLine("Запись изменена!\n");
break;
}
catch
{
Console.WriteLine("Не удалось подключиться к серверу!\n");
break;
}
case "10":
Console.WriteLine("Введите фамилию клиента которого хотите удалить");
fam = Console.ReadLine();
if (fam.Length == 0)
{
Console.WriteLine("Не была введена фамилию клиента , которого вы хотите удалить!\n");
break;
}
SqlConnection myConnection10 = new SqlConnection(@"server=localhost; Trusted_Connection=yes; database=ServiceStation; Connection timeout=10");
try
{
myConnection10.Open();
SqlDataReader myReader2 = null;
SqlParameter myParam25 = new SqlParameter("@Param25", SqlDbType.NVarChar, 50);
myParam25.Value = fam;
SqlCommand myCommand6 = new SqlCommand("Select * from client where fam =@Param25",
myConnection10);
myCommand6.Parameters.Add(myParam25);
myReader2 = myCommand6.ExecuteReader();
if (myReader2.Read() == true)
{
while (myReader2.Read() == true)
{
Console.Write("Фамилия: " + myReader2["Fam"].ToString() + "\n");
Console.Write("Имя: " + myReader2["Name"].ToString() + "\n");
Console.Write("Отчество: " + myReader2["Ochestvo"].ToString() + "\n");
Console.Write("Марка машины: " + myReader2["Marka"].ToString() + "\n");
Console.Write("Регистрационный номер: " + myReader2["Number"].ToString() + "\n\n");
}
}
myConnection10.Close();
}
catch
{
Console.WriteLine("Не удалось подключиться к серверу!\n");
break;
}
SqlConnection myConnection011 = new SqlConnection(@"server=localhost; Trusted_Connection=yes; database=ServiceStation; Connection timeout=10");
try
{
myConnection011.Open();
SqlParameter myParam26 = new SqlParameter("@Param26", SqlDbType.NVarChar, 50);
myParam26.Value = fam;
SqlCommand myCommand4 = new SqlCommand("Delete FROM client WHERE fam =@Param26",
myConnection011);
myCommand4.Parameters.Add(myParam26);
myCommand4.ExecuteReader();
myConnection011.Close();
Console.WriteLine("\nЗапись удалена!\n");
break;
}
catch
{
Console.WriteLine("Не удалось подключиться к серверу!\n");
break;
}
case "11":
Console.WriteLine("Введите Регистрационный номер , по которому вы хотите удалить запись из базы данных");
number = Console.ReadLine();
if (number.Length == 0)
{
Console.WriteLine("Не был введен номер!\n");
break;
}
SqlConnection myConnection11 = new SqlConnection(@"server=localhost; Trusted_Connection=yes; database=ServiceStation; Connection timeout=10");
try
{
myConnection11.Open();
SqlDataReader myReader2 = null;
SqlParameter myParam27 = new SqlParameter("@Param27", SqlDbType.NVarChar, 50);
myParam27.Value = number;
SqlCommand myCommand6 = new SqlCommand("Select * from work where number = @Param27",
myConnection11);
myCommand6.Parameters.Add(myParam27);
myReader2 = myCommand6.ExecuteReader();
if (myReader2.Read() == true)
{
while (myReader2.Read() == true)
{
Console.Write("Работы: " + myReader2["Work"].ToString() + "\n");
Console.Write("Детали: " + myReader2["Detali"].ToString() + "\n");
Console.Write("Мастер: " + myReader2["Worker"].ToString() + "\n");
Console.Write("Регистрационный номер машины: " + myReader2["Number"].ToString() + "\n");
Console.Write("Цена: " + myReader2["Price"].ToString() + "\n\n");
}
}
myConnection11.Close();
}
catch
{
Console.WriteLine("Не удалось подключиться к серверу!\n");
break;
}
//myConnection012
SqlConnection myConnection012 = new SqlConnection(@"server=localhost; Trusted_Connection=yes; database=ServiceStation; Connection timeout=10");
Подобные документы
Постановка задачи, основные требования к системе. Обоснование принимаемых решений по выбору технических и программных средств реализации. Функциональное и информационное моделирование базы данных студентов. Описание руководства пользователя, тестирование.
курсовая работа [476,6 K], добавлен 25.11.2013Выбор состава технических и программных средств разработки системы. Описание входных и выходных данных. Выбор модели базы данных. Разработка подсистемы наполнения базы данных, формирования отчетов. Разработка интерфейса пользователя, тестирование системы.
курсовая работа [3,7 M], добавлен 04.12.2014Проектирование программного модуля: сбор исходных материалов; описание входных и выходных данных; выбор программного обеспечения. Описание типов данных и реализация интерфейса программы. Тестирование программного модуля и разработка справочной системы.
курсовая работа [81,7 K], добавлен 18.08.2014Описание разрабатываемой программы с точки зрения пользователя и программиста. Поэтапная разработка программной системы. Создание базы данных в Access. Разработка структуры классов. Создание структуры для хранения данных. Проектирование интерфейса.
курсовая работа [1,4 M], добавлен 07.08.2013Разработка программного обеспечения для автоматизации доступа, обработки, вывода информации об услугах автосервиса и его клиентах с использованием языка программирования С# и MySQL. Проектирование интерфейсов системы. Схема алгоритма работы программы.
курсовая работа [665,6 K], добавлен 02.04.2015Анализ и оценка эффективности существующей системы обработки информации. Выбор технических и программных средств. Описание этапов проектирования базы данных "Аудиотека" и ее особенностей. Разработка инфологической модели и программного приложения.
курсовая работа [877,9 K], добавлен 06.06.2013Основные понятия и определение теории баз данных. Обоснование выбора программного обеспечения. Разработка таблиц и схемы БД. Использование запросов. Создание отчетов и форм. Руководство пользователя. Рекомендации по дальнейшей модернизации системы.
курсовая работа [2,1 M], добавлен 04.06.2014Разработка приложения, позволяющего автоматизировать документооборот предприятия по списанию основных средств. Мероприятия по защите и обеспечению целостности базы данных. Разработка клиентского приложения. Запросы к базе данных, руководство пользователя.
курсовая работа [700,0 K], добавлен 14.01.2015Составление схемы концептуальной модели данных. Разработка структуры реляционной базы данных и интерфейса пользователя. Особенности главных этапов проектирования базы данных. Способы реализации запросов и отчетов. Специфика руководства пользователя.
курсовая работа [186,9 K], добавлен 18.12.2010Проектирование программного обеспечения, позволяющего создавать и вести множество электронных словарей. Обоснование выбора программных средств решения задачи. Разработка формы входных и выходных данных. Описание модулей программы и процесса отладки.
дипломная работа [1007,7 K], добавлен 03.07.2015