Проектирование базы данных "Автосервис"

 

ЧАСТНОЕ УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ

«МИНСКИЙ ИНСТИТУТ УПРАВЛЕНИЯ»

Кафедра автоматизированных информационных систем












КУРСОВАЯ РАБОТА

по дисциплине: «Объектно-ориентированному программированию»

на тему: «Автосервис»




Студент группы 91201с Селедцов А.И.









Минск - 2011

Содержание


Введение

1. Описание предметной области

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

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

. Функциональное моделирование

. Информационное моделирование

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

. Описание руководства пользователя

7.1 Назначение программы

.2 Системные требования

.3 Работа программы

.4 Сообщения пользователю

8. Тестирование системы и описание полученных результатов

Заключение

Список литературных источников

Приложение A - Схема обобщённого алгоритма работы программы

Приложение Б - Листинг программного кода


Введение


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

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

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

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

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

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


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.# разрабатывался как язык программирования прикладного уровня для 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. При использовании иного сочетания характеристик системы, на которой будет использоваться программа, возможны некоторые расхождения с результатами работы.

Спроектируем варианты использования приложения, а также его структуру (рисунок 3.1-3.2)


Рисунок 3.1 - Функциональное моделирование программного приложения


Рисунок 3.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, связи между таблицами базы данных представтена на рисунок 4.1.


Таблица 1 - Описание данных:

Название таблицыИмя поляТип данныхРазмер поляПервичный ключ / вторичный ключ / индексированное полеClientNumberNvarchar50Первичный ключ(AUTO_INCREMENT)FamNvarchar50NOT NULLNameNvarchar50NOT NULLOchestvoNvarchar50NOT NULLMarkaNvarchar50NOT NULLWorkNumberNvarchar50Первичный ключ(AUTO_INCREMENT)WorkNvarchar50NOT NULLDetaliNvarchar50NOT NULLWorkerNvarchar50NOT NULLPriceInteger50NOT NULLWorkersIDInteger50Первичный ключ(AUTO_INCREMENT)LoginNvarchar100NOT NULLPasswordNvarchar100NOT NULLAccessInteger50NOT NULLpriceListDetaliNvarchar50Первичный ключ(AUTO_INCREMENT)WorkNvarchar50NOT NULLTimeWorkDateTime-NOT NULLAvtoMechanicNvarchar50NOT NULLPriceInteger50NOT NULLwarehouseDetaliNvarchar50Первичный ключ(AUTO_INCREMENT)ManufacturerNvarchar50NOT NULLCompanyPriceInteger50NOT NULLClientPriceInteger50NOT NULLAvailableInWarehouseNvarchar50NOT NULL

рисунок 4.1 - связи таблиц базы данных

автосервис программирование интерфейс информация


6. Проектирование и программирование интерфейсов системы


Приложение будет иметь вид консольного окна, через которое можно будет взаимодействовать с пунктами, показанными в нем. Структура окна имеет следующий вид (рисунок 5.1):


Рисунок 5.1 - Пользовательский интерфейс


Программный код, реализующий вышеописанные функции на языке С# представлен в Приложении 2.


7. Описание руководства пользователя


.1 Назначение программы


Программа предназначена для автоматизации доступа, обработки, вывода информации об услугах автосервиса и его клиентах. Программа имеет понятный и простой для пользователя интерфейс. Для входа в программу существует три уровня доступа: админ (рисунок 6.1), пользователь (рисунок 6.2) и защитный (рисунок 6.3), использующийся для защиты от несанкционированного доступа в программу.


Рисунок 6.1 - Интерфейс программы, реализованный в уровне доступа админ


В данной программе возможны следующие виды действий, приведённых ниже с пояснением к каждому из них:

. Просмотреть все записи базы данных автосервиса:

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


Рисунок 6.2 - Интерфейс программы, реализованный в уровне доступа пользователь


Рисунок 6.3 - Интерфейс программы, реализованный в при неправильном вводе пароля


Рисунок 6.4 - Просмотреть все записи базы данных автосервиса

.Просмотреть всех клиентов:

Здесь можно посмотреть имя, фамилию, отчество клиента, марку и регистрационный номер автомобиля поступившего в ремонт (рисунок 6.5).


Рисунок 6.5 - Просмотреть всех клиентов


3.Просмотреть список текущих работ:

Здесь можно посмотреть регистрационный номер автомобиля поступившего в ремонт, текущие работы, которые проводятся в автомобиле, список необходимых деталей для проведения ремонтных работ, фамилию мастера и стоимость ремонта автомобиля (рисунок 6.6).


Рисунок 6.6 - Просмотреть список текущих работ

.Просмотреть список возможных работ:

Здесь можно посмотреть текущие работы, которые проводятся в автомобиле, список необходимых деталей для проведения ремонтных работ, время проведения ремонтных работ, фамилию автомеханика, производящего работу и стоимость ремонта автомобиля (рисунок 6.7).


Рисунок 6.7 - Просмотреть список возможных работ


.Просмотреть наличие деталей на складе:

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


Рисунок 6.8 - Просмотреть наличие деталей на складе

6. Добавить клиента:

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


Рисунок 6.9 - Добавить клиента


. Ввести выполненные работы:

Здесь возможно добавить новую произведенную работу. Для этого необходимо ввести произведенную работу, в список необходимых деталей для проведения ремонтных работ, фамилию мастера и стоимость ремонта автомобиля (рисунок 7.0).


Рисунок 7.0 - Ввести выполненные работы

8. Изменить данные клиента:

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


Рисунок 7.1 - Изменить данные клиента


. Изменить выбранный тип работы

Для Изменить тип работы нужно ввести регистрационный номер автомобиля поступившего в ремонт, по которой будет найдена информация об произведённой работе: тип работы, которые проводятся в автомобиле, список необходимых деталей для проведения ремонтных работ, фамилию мастера, регистрационный номер автомобиля поступившего в ремонт и стоимость ремонта автомобиля. После этого можно будет изменить информацию на новую (рисунок 7.2).


Рисунок 7.2 - Изменить выбранный тип работы


. Удаление клиента:

Для удаления клиента необходимо ввести фамилию клиента и нажать enter после чего информация о клиенте будет удалена(рисунок 7.3).


Рисунок 7.3 - Удаление клиента


. Удаление работы:

Для удаления работы необходимо ввести регистрационный номер автомобиля поступившего в ремонт и нажать enter после чего информация о работе будет удалена (рисунок 7.4).

Рисунок 7.4 - Удаление работы


. Поиск по номеру машины

Для поиска по номеру необходимо ввести регистрационный номер автомобиля поступившего в ремонт и нажать enter после чего будет выведена информация о клиенте (рисунок 7.5).


Рисунок 7.5 - Поиск по номеру машины


. Поиск по фамилии мастера

Для поиска по фамилии мастера необходимо ввести фамилию мастера и нажать enter после чего будет выведена информация обо всех работах за которые ответственен этот мастер (рисунок 7.6).

Рисунок 7.6 - Поиск по фамилии мастера


. Выход.


.2 Системные требования


Для выполнения программы необходим компьютер, подключённый к локальной сети или имеющий доступ к Enternet (конкретно к MySQL). Минимальные системные требования для компьютера:

)Процессор Intel Pentium 2.16 GHz;

)Оперативная память 1024 Mb;

)Операционная система Windows Server 2003/Server 2008/XP/Vista/7.


7.3 Работа программы


Для открытия приложения необходимо запустить файл Автосервис.exe. При входе в программу предлагается ввести логин и пороли для идентификации пользователя. Существуют три уровня доступа в программу: админ - расширенный интерфейс, позволяющий осуществлять все заложенные функции программы (рисунок 6.1), такие как:

. Просмотреть все записи базы данных автосервиса

. Просмотреть всех клиентов

. Просмотреть список текущих работ

. Просмотреть список возможных работ

. Просмотреть наличие деталей на складе

. Добавить клиента

. Ввести выполненные работы

. Изменить данные клиента

. Изменить выбранный тип работы

. Удаление клиента

. Удаление работы

. Поиск по номеру машины

. Поиск по фамилии мастера

. Выход;

Пользователь упрощённый интерфейс, позволяющий осуществлять только пользовательские функции программы (рисунок 6.2), такие как:

. Просмотреть все записи базы данных автосервиса

. Просмотреть всех клиентов

. Просмотреть список текущих работ

. Просмотреть список возможных работ

. Поиск по номеру машины

. Поиск по фамилии мастера

. Выход;

При неверном вводе логина и пароля программа требует в ввести логин и пароль заново, до тех пор, пока не будет введён правильный пароль (рисунок 6.3).


.4 Сообщения пользователю


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

)«Не была введена фамилия». Возникает, если пользователь оставил поле пустым.

)«Неверно! Введите соответствующую действию цифру!». Возникает, если пользователь пытается воспользоваться функцией, которой в меню не существует.

)«Не удалось подключиться к серверу». Возникает при отсутствии соединения с сервером базы данных.

)«Введите правильные данные!». Возникает при вводе некорректных данных.


8. Тестирование системы и описание полученных результатов


Аварийное изменение конфигураций сервера

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

Проведём тестирование с аварийным изменением конфигураций сервера (рисунок 8.1):


Рисунок 8.1 - Аварийное изменение конфигураций сервера

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

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

Тестирование стабильности или надежности.

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

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

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


Рисунок 8.2 - Рабочее окно программы


Программа прошла тестирование и полностью работоспособна. Уязвимостей не обнаружено.

Заключение


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

-формализация задачи;

-сбор необходимых исходных данных;

разработка и отладка программного продукта.

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

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

вывод содержимого базы данных;

добавление записей в базу данных;

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

удаление записей из базы данных;

поиск записей в базе данных.

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

При разработке программного приложения «Автосервис» мною был глубже изучен язык С# и вопросы взаимодействия с базой данных.


Список использованных источников


1.Павловская Т.А. C#. Программирование на языке высокого уровня. Учебник для вузов. - СПб.: Питер, 2007. - 432 с.

.Фролов А.В., Фролов Г.В. Язык C#. Самоучитель. - М.: ДИАЛОГ-МИФИ, 2003. - 560 с.

.Шилдт Г.Полный справочник по C#. - М.: Издательский дом «Вильямс», 2004. - 752 с.

.Робинсон С., Кумар Н., Макквин К., Корнес О., Глин Дж., Харвей Б. C# для профессионалов (2 тома). Программист - программисту. - М.: Лори, 2003. - 478с.

.Использование C#. Специальное издание. - М.: Издательский дом «Вильямс», 2002. - 528с.

.Шилдт.Г. C#: учебный курс. - М.: Питер, 2002. - 512с.

.Трэй Нэш. C# 2008: ускоренный курс для профессионалов. - М.: ООО

.«И.Д. Вильямс», 2008. - 576 с.

.Троелсен Э. C# и платформа NET. Библиотека программиста. - Спб.: Питер, 2002. - 800 с.

.Прайс Д., Гандэрлой М. Visual C#.NET. Полное руководство.: - К.: ВЕК+, СПб.: КОРОНА принт, К.: НТИ, М.: Энтроп, 2004. - 960 с.

.Секунов Н.Ю. Разработка приложений на С++ и C#. Библиотека программиста. - СПб.: Питер, 2003. - 608 с.

.Майо Д. C#: Искусство программирования. Энциклопедия программиста. - СПб.: ООО «ДиаСофтЮП», 2002.- 656 с.


Приложение A


Схема обобщённого алгоритма работы программы


Схема алгоритма работы программы:


Приложение 2


Листинг программНОГО КОДА

using System;

using System.Collections.Generic;System.ComponentModel;System.Data;System.IO;System.Linq;System.Text;System.Data.Sql;System.Data.SqlClient; Курсавой_проект_Автосервис

{

class Автосервис

{string Enter(string str1, string str2)

{myConnection88 = new SqlConnection(@"server=localhost; Trusted_Connection=yes; database=ServiceStation; Connection timeout=10");

{access = "2";.Open();myReader = null;myParam77 = new SqlParameter("@Param77", SqlDbType.NVarChar, 50);.Value = str1;myParam88 = new SqlParameter("@Param88", SqlDbType.NVarChar, 50);.Value = str2;myCommand = new SqlCommand("Select Access from Workers WHERE Login=@Param77 and Password=@Param88", myConnection88);.Parameters.Add(myParam77);.Parameters.Add(myParam88);= myCommand.ExecuteReader();(myReader.Read())

{

access = myReader["Access"].ToString();

}.Close();access;

}

{.WriteLine("Не удалось подключиться к серверу!\n");"2";

}

}void Main(string[] args)

{buff = null, name, fam, famm, ochestvo, marka, number, numberr, work, detali, worker;price;access2 = "3", log = null, pass = null;flag = true;flag2 = true;(flag2)

{(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;

}

}(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;

}"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;

}.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");

try

{

myConnection012.Open();

SqlParameter myParam28 = new SqlParameter("@Param28", SqlDbType.NVarChar, 50);

myParam28.Value = number;

SqlCommand myCommand4 = new SqlCommand("Delete FROM work WHERE number =@Param28",

myConnection012);

myCommand4.Parameters.Add(myParam28);

myCommand4.ExecuteReader();

myConnection012.Close();

Console.WriteLine("\nЗапись удалена!\n");

break;

}

catch

{

Console.WriteLine("Не удалось подключиться к серверу!\n");

break;

}

case "12":

Console.WriteLine("Введите регистрационный номер машины,по которому нужно найти владельца и модель автомобиля:");

number = Console.ReadLine();

if (number.Length == 0)

{

Console.WriteLine("Не был введен регистрационный номер машины !\n");

break;

}

SqlConnection myConnection12 = new SqlConnection(@"server=localhost; Trusted_Connection=yes; database=ServiceStation; Connection timeout=10");

try

{

myConnection12.Open();

SqlDataReader myReader5 = null;

SqlParameter myParam29 = new SqlParameter("@Param29", SqlDbType.NVarChar, 50);

myParam29.Value = number;

SqlCommand myCommand5 = new SqlCommand("Select * from client where number like @Param29", myConnection12);

myCommand5.Parameters.Add(myParam29);

myReader5 = myCommand5.ExecuteReader();

while (myReader5.Read())

{

Console.Write("\nФамилия: " + myReader5["Fam"].ToString() + "\n");

Console.Write("Имя: " + myReader5["Name"].ToString() + "\n");

Console.Write("Отчество: " + myReader5["Ochestvo"].ToString() + "\n");

Console.Write("Марка машины: " + myReader5["Marka"].ToString() + "\n");

Console.Write("Регистрационный номер: " + myReader5["Number"].ToString() + "\n\n");

}

myConnection12.Close();

break;

}

catch

{

Console.WriteLine("Не удалось подключиться к серверу!\n");

break;

}

case "13":

Console.WriteLine("Введите фамилию мастера которого нужно найти:");

worker = Console.ReadLine();

if (worker.Length == 0)

{

Console.WriteLine("Не была введена фамилию мастера которого нужно найти!\n");

break;

}

SqlConnection myConnection13 = new SqlConnection(@"server=localhost; Trusted_Connection=yes; database=ServiceStation; Connection timeout=10");

try

{

myConnection13.Open();

SqlDataReader myReader5 = null;

SqlParameter myParam30 = new SqlParameter("@Param30", SqlDbType.NVarChar, 50);

myParam30.Value = worker;

SqlCommand myCommand5 = new SqlCommand("Select * from work where worker like @Param30", myConnection13);

myCommand5.Parameters.Add(myParam30);

myReader5 = myCommand5.ExecuteReader();

while (myReader5.Read())

{

Console.Write("\nРаботы: " + myReader5["Work"].ToString() + "\n");

Console.Write("Детали: " + myReader5["Detali"].ToString() + "\n");

Console.Write("Мастер: " + myReader5["Worker"].ToString() + "\n");

Console.Write("Регистрационный номер машины: " + myReader5["Number"].ToString() + "\n");

Console.Write("Цена: " + myReader5["Price"].ToString() + "\n\n");

}

myConnection13.Close();

break;

}

catch

{

Console.WriteLine("Не удалось подключиться к серверу!\n");

break;

}

case "14":

flag2 = false;

return;

default:

Console.WriteLine("Не верно! Введите соответствующую действию цифру !");

break;

}

}

}

}


ЧАСТНОЕ УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ «МИНСКИЙ ИНСТИТУТ УПРАВЛЕНИЯ» Кафедра автоматизированных информационных систем

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ