Информационная система управления заявками в автосервисе

1. Пояснительная записка к работе



1.1 Техническое задание



Информационная система управления заказами в автосервисе

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

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

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

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

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

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

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




1.2 Цель и задачи курсового проектирования



В процессе выполнения этого курсового проекта по дисциплине «Базы данных и банки знаний» ставились следующие цели:

закрепить и углубить теоретические знания по данной дисциплине;

научиться самостоятельно проектировать базы данных масштаба отдела предприятия;

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



1.3 Схема данных







1.4 Таблицы



Таблицы базы данных можно разделить на 2 группы:

оперативная таблица: содержимое оперативной таблицы меняется с течением времени с некоторой периодичностью (час, день, неделя)

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

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

Справочники:

Мастера (первичный ключ -КодМастера)- хранит информацию о мастерах (Ф.И.О., адрес, телефон и т.д.), которые работают в автосервисе; 

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

Виды работ (первичный ключ- КодВидаРабот)- хранит информацию об услугах, предоставляемых автосервсом ( наименование, стоимость, срок и т.д.);

Оперативные таблицы:

Автомобили (ключевое поле- КодАвтомобиля)- хранит информацию о автомобилях (марка, год выпуска, номер двигателя и т.д.);

Владельцы (ключевое поле КодВладельца) – хранит информацию о владельцах автомобилей, сделавших заказ (ФИО, адрес, номер паспорта и т.д.);

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

Заказы (ключевое поле - КодЗаказа)- хранит информацию о заказах, сделанных клиентами автосервиса (номер заказа, код автомобиля, дата поступления и т.д.);

Услуги заказа (ключевое поле Номер паспорта)- хранит информацию о клиентах, пользующихся услугами данного магазина: фамилия, имя, отчество, дата рождения, номер телефона, адрес;

Новые автозапчасти (ключевое поле КодЗапчасти) – хранит информацию о доставке товара, а именно: стоимость, дата поставки, и т.д.

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

Связи между таблицами

Как видно из приведенной схемы, база данных имеет многотабличную структуру преимущественно с одним типом связи: «один-ко-многим».

Отношение «один-ко-многим». Это значит, что каждой записи из таблицы «с одним» соответствует несколько записей из таблицы «со многим». В нашем случае наглядным примером этого типа связи служит отношение между таблицами «Мастера» и «Услуги заказа»: один и тот же мастер мог принимать участие в различных работах (заказах).

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

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



1.5 Формы



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

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

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

Такой формой является «Главная форма» (внешний вид формы представлен в разделе «Руководство пользователя»).

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

Такими формами являются: «Мастера», «Новые автозапчасти», «Виды работ», «Автомобили», «Наличие автозапчастей» и др. Они позволяют просматривать и редактировать справочную информацию.

3) формы, построенные на основе запросов.

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



1.6 Запросы



Существует несколько типов запросов:

Запрос на выборку - Определяет какие записи или поля базовой таблицы отображать, а также порядок их сортировки. К данному типу относятся следующие запросы:

ЗапросУслугиЗаказа - выводит список заказов.

Запрос2 – выводит информацию о автомобилях и владельцах.

ЗапросВыполненныхРабот – выводит заказы, установленные новые запчасти, цены.

Запрос на создание таблицы:

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

Запрос на обновление:

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

Запрос на добавление:

Добавление – добавляет новые записи в базу данных Автомобили и Владельцы.

Перекрестный запрос: 

Новые автозапчасти - выводит таблицу с полями Дата поставки и Наименование Запчасти, значениями которой служит стоимость товара. 

Запрос на удаление:

Удаление – удаляет записи из таблиц Автомобили и Владельцы. 

Запрос на объединение:

● Номера телефонов – объединяет таблицы Мастера и Владельцы, выводит ФИО и номера телефонов.

8. Запрос с агрегирующей функцией:

● Общая стоимость – суммирует стоимость установленных новых запчастей и стоимость работ. Кроме того суммирует общие стоимости одинаковых номеров заказов.

Запросы на языке SQL.

ЗапросУслугиЗаказа»

SELECT DISTINCTROW [Услуги заказа]. Номер Заказа, Заказы. Дата Поступления, Автомобили. Марка Автомобиля, Автомобили.ТехПаспорт, Заказы.КодВладельца, [Услуги заказа]. Вид Работы, [Виды работ]. Стоимость Работы, [Услуги заказа]. Установленные Новые апчасти AS Выражение1, [Новые автозапчасти]. Стоимость Запчасти AS Выражение2, Sum ([Виды работ]. Стоимость Работы+[Новые автозапчасти]. Стоимость Запчасти) AS Стоимость Заказа

FROM [Новые автозапчасти], (Владельцы INNER JOIN (Автомобили INNER JOIN Заказы ON Автомобили. Код Автомобиля = Заказы. Код Автомобиля) ON Владельцы. Код Владельца = Заказы Код Владельца) INNER JOIN ([Виды работ] INNER JOIN [Услуги заказа] ON [Виды работ].КодВидаРаботы = [Услуги заказа].ВидРаботы) ON Заказы. Номер Заказа = [Услуги заказа]. НомерЗаказа

GROUP BY [Услуги заказа]. Номер Заказа, Заказы. Дата Поступления, Автомобили. Марка Автомобиля, Автомобили. ТехПаспорт, Заказы. Код Владельца, [Услуги заказа]. Вид Работы, [Виды работ]. Стоимость Работы, [Услуги заказа]. Установленные Новые Запчасти, [Новые автозапчасти]. Стоимость Запчасти

HAVING ((([Услуги заказа]. Номер Заказа) = [Forms] ! [ОформлениеЗаказа] ! [НомерЗаказа]));

«Автомобили Владельцы»

SELECT Автомобили.*, Заказы. Код Владельца, Владельцы .Водительское Удостоверение

FROM Владельцы INNER JOIN (Автомобили INNER JOIN Заказы ON Автомобили. Код Автомобиля = Заказы. Код Автомобиля) ON Владельцы. Код Владельца = Заказы. Код Владельца;

«Запрос Выполненных Работ»

SELECT Заказы. Дата Поступления, Автомобили. Марка Автомобиля, Владельцы. Фамилия Владельца, Владельцы. Имя Владельца, [Виды работ]. Вид Работы, [Виды работ]. Стоимость Работы, [Новые автозапчасти]. Наименование Запчасти, [Новые автозапчасти].Стоимость Запчасти

FROM [Новые автозапчасти] INNER JOIN ((Владельцы INNER JOIN (Автомобили INNER JOIN Заказы ON Автомобили. Код Автомобиля = Заказы.КодАвтомобиля) ON Владельцы. Код Владельца = Заказы. Код Владельца) INNER JOIN ([Виды работ] INNER JOIN [Услуги заказа] ON [Виды работ]. Код Вида Работы = [Услуги заказа].ВидРаботы) ON Заказы. Номер Заказа = [Услуги заказа]. Номер Заказа) ON [Новые автозапчасти]. Код Автозапчасти = [Услуги заказа]. Установленные Новые Запчасти;

«Запрос На Создание»

SELECT Владельцы. Фамилия Владельца, Владельцы. Имя Владельца, Владельцы. Отчество Владельца, Владельцы. Паспортные Данные INTO [Заказы сегодня]

FROM Владельцы INNER JOIN Заказы ON Владельцы. Код Владельца=Заказы. Код Владельца

WHERE (((Date())=Заказы Дата Поступления))

ORDER BY Владельцы. Фамилия Владельца;

«Запрос На Объед Владельцы Мастера»

SELECT Имя Владельца, Фамилия Владельца, Отчество Владельца, Телефон, "Владелец" AS [Отношения] 

FROM Владельцы

UNION SELECT Имя Мастера, Фамилия Мастера, Отчество Мастера, Телефон Домашний, "Мастер"

FROM Мастера;

«Запро Добавление Авто»

INSERT INTO Автомобили

VALUES ([Введите код автомобиля:], [Введите марку автомобиля:], [Введите регистрационный номер:], [Введите номер тех паспорта:], [Введите цвет авто:], [Введите год выпуска:], [Введите номер двигателя:], [Введите номер кузова:], [Введите номер шасси:]);

«Запрос Удаление Авто»

DELETE *

FROM Автомобили

WHERE Регистрационный Знак=[Введите регистрационный знак:];

«Запрос Обновление Оборуд»

UPDATE [Используемое обородование] SET [КоэффициентЗагрузки, %] = [Введите новое значение коэффициента загрузки данного оборудования]

WHERE ((НаименованиеОборуд)=[Введите наименование оборудования]);

«Запрос Общая Стоимость»

SELECT Фамилия Владельца, Имя Владельца, SUM( Стоимость Работы+Стоимость Запчасти) AS [Общая стоимость]

FROM Запрос Выполненных Работ

GROUP BY Фамилия Владельца, Имя Владельца;

«Запрос Перекрестный»

TRANSFORM SUM([Новые автозапчасти].СтоимостьЗапчасти) AS [Sum-Стоимость Запчасти]

SELECT [Новые автозапчасти]. Наименование Запчасти

FROM [Новые автозапчасти]

GROUP BY [Новые автозапчасти]. Наименование Запчасти

PIVOT [Новые автозапчасти]. Дата Поставки;



1.7 Отчеты



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

База данных содержит следующие отчеты:

1. «Заказы» - выводит список заказов и сопутствующую информацию;

2. «Виды работ» - выводит весь перечень работ. Предоставляемых автосервисом;

3. «Заказы сегодня» - выводит список клиентов, сделавших заказы сегодня;

4. «Мастера» - выводит список сотрудников, работающих в автосервисе. 




2.Руководство пользователя



Для работы с базой данных требуется установка Microsoft Access 2003 или более поздней версии. 

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







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

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

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

Например данная кнопка 

откроет форму для просмотра и печати отчетов:






Форма «Дополнительные сервисы» содержит кнопки для активации соответствующих запросов и форм. Так же приведены комментарии к каждой кнопке.





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







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








Приложения



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



«Услуги заказа»





«Новые автозапчасти»





«Мастера»



Примеры запросов:



«Номера телефонов»:





«Новые автозапчасти»





«Общие стоимости заказов»





Примеры отчетов:




«Виды работ»





«Мастера»





«Заказы»





«Заказы сегодня»






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



О.Л. Голицина, Н.В. Максимов, И.И. Попов «Базы данных» Москва, 2006 г.

А.Ю. Гончаров «Access 2003» Москва, 2004г.

М. Хернандес, Д. Вьескас «SQL-запросы для простых смертных. Практическое руководство по манипулированию данными в SQL» Лори, 2003 г.

И.В. Полозов «Базы данных и банки знаний» Методические указания к лабораторным работам и курсовому проектированию для студентов, Н.Новгород, 2008 г.