Имя
поля
|
Тип
данных
|
Код
мастера
|
Числовой
|
ФИО
|
Текстовый
|
Номер
паспорта
|
Текстовый
|
Телефон
|
Числовой
|
Фото
|
Поле
OLE
|
2. Описание программного комплекса
2.1 Создание базы данных
Запустив MS Access, создаём новую базу данных,
указав путь для файла базы данных. После этого можем наблюдать окно созданной
базы (рисунок 3).
Рисунок 3 - Окно базы данных
2.2 Создание таблиц
Таблицы базы данных будем создавать при помощи
конструктора таблиц. Для каждой таблицы, указываем имя, имена полей и тип
данных в соответствии с вышеприведённой структурой базовых таблиц. Перед
сохранением необходимо указать ключевое поле.
Рисунок 4 - Конструктор таблиц
2.3 Связи между таблицами
Установка связей между таблицами осуществляется,
путём добавления всех таблиц в область схемы данных и перетаскиванием ключевых
полей одной таблицы к соответствующими не ключевым полям другой. При этом для
установки связей «один к многим» надо обязательно установить галочки в окне
«Изменение связей» как показано на рисунке 5.
Рисунок 5 - Изменение связей
Наглядно связи между таблицами представлены на
рисунке 6.
Рисунок 6 - Схема данных
2.4 Создание форм
В окне базы данных выбираем пункт меню «Формы»,
где выбираем пункт «Создание формы с помощью мастера» (рисунок 7). После
создания формы в режиме конструктора меняем форму для более удобного ввода
данных (рисунок 8). Ниже представлены все созданные формы (рис. 9 - 18).
Рисунок 7 - Создание формы
Рисунок 8 - Форма в режиме конструктора
Рисунок 9 - Форма «Ремонт»
Рисунок 10 - Форма «Прайс»
Рисунок 11 - Форма «Причина поломки»
Рисунок 12 - Форма «Неисправность»
Рисунок 13 - Форма «Способ устранения
неисправности»
Рисунок 14 - Форма «Тип техники»
Рисунок 15 - Форма «Вид техники»
Рисунок 16 - Форма «Техника»
Рисунок 17 - Форма «Клиенты»
Рисунок 18 - Форма «Мастера»
2.5 Создание главной кнопочной формы
Главная кнопочная форма используется в качестве
главного меню базы данных. Элементами главной кнопочной формы являются объекты
таблиц, форм, запросов и отчётов. Главная кнопочная форма отображается при
запуске базы данных и обеспечивает навигацию по базе данных.
Спроектируем Главную кнопочную форму, не
прибегая к помощи мастера главной кнопочной формы. Для этого откроем
конструктор форм. Бросим на форму 5 кнопок, которые обеспечивают открытие форм
«Таблицы», «Формы», «Запросы», «Отчёты» и выход из главной кнопочной формы.
В обработке нажатия кнопок нет команды
отвечающей за открытие таблицы, мы эту функцию реализуем с помощью макросов.
Переходим на вкладку «Создание» и выбираем «Макрос». В появившемся окне
выбираем команду «ОткрытьТаблицу», и выбираем таблицу. Затем сохраняем макрос
под именем таблицы (рисунок 19).
Рисунок 19 - Создание макросов
Для открытия запросов, форм и отчётов, команды
присутствуют, поэтому нам достаточно передать из обработку кнопкам.
Чтобы при открытии БД запускалась кнопочная
форма, в «Параметры запуска», что в меню «Сервис», в поле «Вывод
формы/страницы» выбираем соответствующую форму.
Кнопочную форму можем наблюдать на рисунке 20.
Рисунок 20 - Главная кнопочная форма
2.6 Создание запросов
Создадим SQL-запрос, который будет выводить тип
техники, который может быть отремонтирован мастерами.
SELECT [Тип техники].[Тип техники]
FROM [Тип техники]
WHERE EXISTS
(SELECT * FROM [Вид техники]
WHERE [Вид техники].[Код вида]=[Тип
техники].[Код вида]);
Результат выполнения запроса представлен на
рисунке 21.
Рисунок 21 - Результат выполнения запроса «Виды
техники»
Создадим SQL-запрос,
который будет выводить список клиентов, которые не оплатили соответствующую
услугу.
SELECT Кленты.ФИО, Техника.Наименование, [Способ
устранения неисправности].[Способ устранения], Прайс.Цена
FROM Техника INNER JOIN ([Способ устранения
неисправности] INNER JOIN (Прайс INNER JOIN (Кленты INNER JOIN Ремонт ON
Кленты.[Код клиента] = Ремонт.[Код клиента]) ON Прайс.[Код услуги] = Ремонт.[Код
услуги]) ON [Способ устранения неисправности].[Код способа устранения] =
Прайс.[Код способа устранения]) ON Техника.[Код техники] = Ремонт.[Код техники]
WHERE (((Ремонт.Оплачено)=False));
Результат выполнения запроса представлен на
рисунке 22.
Рисунок 22 - Результат выполнения запроса
«Должники»
Создадим SQL-запрос,
который будет выводить каталог цен на услуги.
SELECT Прайс.[Код услуги], [Тип техники].[Тип
техники], Неисправность.[Описание поломки], [Способ устранения
неисправности].[Способ устранения], Прайс.Цена
FROM [Тип техники] INNER JOIN ([Способ
устранения неисправности] INNER JOIN (Неисправность INNER JOIN Прайс ON
Неисправность.[Код неисправности]=Прайс.[Код неисправности]) ON [Способ устранения
неисправности].[Код способа устранения]=Прайс.[Код способа устранения]) ON [Тип
техники].[Код типа]=Прайс.[Код типа]
ORDER BY [Тип техники].[Тип техники];
Результат выполнения запроса представлен на
рисунке 23.
Рисунок 23 - Результат выполнения запроса»
Каталог цен на ремонт»
Создадим SQL-запрос,
который будет выводить номера заказов каждого клиента.
SELECT Кленты.ФИО, Ремонт.[Код заказа] AS
[Количество услуг]
FROM Кленты INNER JOIN Ремонт ON Кленты.[Код
клиента]=Ремонт.[Код клиента]
GROUP BY Кленты.ФИО, Ремонт.[Код заказа];
Результат выполнения запроса представлен на
рисунке 24.
Рисунок 24 - Результат выполнения запроса «Номер
заказа клиента»
Создадим SQL-запрос,
который будет построен на базе предыдущего запроса, только на этот раз он будет
выводить количество заказов каждого клиента.
SELECT [Номер заказа клиента].ФИО, Count([Номер
заказа клиента].[Количество услуг]) AS [Количество заказов]
FROM [Номер заказа клиента]
GROUP BY [Номер заказа клиента].ФИО;
Результат выполнения запроса представлен на
рисунке 25.
Рисунок 25 - Результат выполнения запроса
«Количество заказов»
Создадим SQL-запрос,
который будет выводить прибыль мастеров за выполнение услуг.
SELECT Мастера.ФИО, [Способ устранения], Цена
FROM Мастера, Ремонт, Прайс, [Способ устранения
неисправности]
WHERE Мастера.[Код мастера]=Ремонт.[Код мастера]
AND Ремонт.[Код услуги]=Прайс.[Код услуги] AND Прайс.[Код способа
устранения]=[Способ устранения неисправности].[Код способа устранения]
ORDER BY Мастера.ФИО;
Результат выполнения запроса представлен на
рисунке 26.
Рисунок 26 - Результат выполнения запроса
«Прибыль мастеров»
Создадим SQL-запрос,
который будет выводить на экран наименование техники с её кодом, которая
ремонтировалась в этом месяце.
SELECT DISTINCT Ремонт.[Код заказа],
Техника.Наименование, Ремонт.Дата
FROM Техника, Ремонт
WHERE (((Техника.[Код техники])=[Ремонт].[Код
техники]) AND ((Month([Дата]))=Month(Date())))
ORDER BY Ремонт.[Дата];
Результат выполнения запроса представлен на
рисунке 27.
Рисунок 27 - Результат выполнения запроса
«Ремонт за текущий месяц»
Создадим SQL-запрос,
который будет выводить на экран наименование техники со способом устранения
неисправности, неисправностью, стоимостью ремонта и клиентом. При выполнении
запроса надо указать наименование техники, о которой мы хотим получить
информацию(рисунок 28).
SELECT Техника.Наименование, Кленты.ФИО,
Неисправность.[Описание поломки], [Способ устранения неисправности].[Способ
устранения], Прайс.Цена
FROM Кленты INNER JOIN (Неисправность INNER JOIN
([Способ устранения неисправности] INNER JOIN (Техника INNER JOIN (Прайс INNER
JOIN Ремонт ON Прайс.[Код услуги] = Ремонт.[Код услуги]) ON Техника.[Код
техники] = Ремонт.[Код техники]) ON [Способ устранения неисправности].[Код
способа устранения] = Прайс.[Код способа устранения]) ON Неисправность.[Код
неисправности] = Прайс.[Код неисправности]) ON Кленты.[Код клиента] =
Ремонт.[Код клиента]
WHERE (((Техника.Наименование)=[Введите
наименование]));
Результат выполнения запроса представлен на
рисунке 29.
Рисунок 28 - Ввод значения параметра
«Наименование»
Рисунок 29 - Результат выполнения запроса
«Ремонтные работы»
Создадим SQL-запрос,
который будет выводить на экран всю информацию о технике, которая поступила в
ремонт на гарантии.
SELECT Техника.[Код техники], Наименование,
[Серийный номер], Гарантия, Фото
FROM Техника
WHERE Техника.Гарантия=True AND Техника.[Код
техники]=ANY
(SELECT Ремонт.[Код техники]
FROM Ремонт)
ORDER BY Техника.[Код техники];
Результат выполнения запроса представлен на
рисунке 30.
Рисунок 30 - Результат выполнения запроса
«Техника на гарантии»
Создадим SQL-запрос, который будет добавлять
нового клиента в таблицу «Клиенты».
INSERT INTO Кленты ( [Код клиента], ФИО,
Телефон, Адрес )
VALUES ([Код клиента], [ФИО], [Телефон],
[Адрес]);
Результат выполнения запроса представлен на
рисунках 31-35.
Рисунок 31 - Ввод значения параметра «Код
клиента»
Рисунок 32 - Ввод значения параметра «ФИО»
Рисунок 33 - Ввод значения параметра «Телефон»
Рисунок 34 - Ввод значения параметра «Адрес»
Рисунок 35 - Таблица «Клиенты» после выполнения
запроса
Создадим SQL-запрос, который будет добавлять
новый заказ, введённый пользователем, в таблицу «Ремонт».
INSERT INTO Ремонт ( [Код заказа], [Код клинта],
[Код техники], [Код мастера], [Код услуги], Дата, Оплачено )
VALUES ([Код заказа], [Код клинта], [Код
техники], [Код мастера], [Код услуги], [Дата], [Оплачено]);
Результат выполнения запроса представлен на
рисунках 36 - 43.
Рисунок 36 - Ввод значения параметра «Код
заказа»
Рисунок 37 - Ввод значения параметра «Код
клиента»
Рисунок 38 - Ввод значения параметра «Код
техники»
Рисунок 39 - Ввод значения параметра «Код
мастера»
Рисунок 40 - Ввод значения параметра «Код
услуги»
Рисунок 41 - Ввод значения параметра «Дата»
Рисунок 42 - Ввод значения параметра «Оплачено»
Рисунок 43 - Таблица «Ремонт» после выполнения
запроса
Создадим SQL-запрос, который будет добавлять
новую услугу, введённую пользователем, в таблицу «Прайс».
INSERT INTO Прайс ( [Код услуги], [Код типа],
[Код неисправности], [Код способа устранения], Цена )
SELECT [Код услуги] AS Выражение1, [Код типа] AS
Выражение2, [Код неисправности] AS Выражение3, [Код способа устранения] AS
Выражение4, [Цена] AS Выражение5;
Результат выполнения запроса представлен на
рисунках 44 - 49.
Рисунок 44 - Ввод значения параметра «Код
услуги»
Рисунок 45 - Ввод значения параметра «Код типа»
Рисунок 46 - Ввод значения параметра «Код
неисправности»
Рисунок 47 - Ввод значения параметра «Код
способа устранения»
Рисунок 49 - Таблица «Услуги» после выполнения
запроса
Создадим SQL-запрос, который будет менять старый
номер телефона на новый у клиента, введенный пользователем.
UPDATE Клиент SET Телефон = [Введите новый
телефон]
WHERE ФИО LIKE [Введите ФИО клиента];
Результат выполнения запроса представлен на
рисунках 50-52.
Рисунок 50 - Ввод значения параметра «Новый
телефон»
Рисунок 51 - Ввод значения параметра «ФИО»
Рисунок 52 - Таблица «Клиенты» после выполнения
запроса
Создадим SQL-запрос, который будет менять старое
название техники на название, ведённое пользователем.
UPDATE [Тип техники] SET [Тип техники].[Тип
техники] = [Введите новое название техники]
WHERE [Тип техники].[Тип техники] LIKE [Введите
старое название техники];
Результат выполнения запроса представлен на
рисунках 53-55.
Рисунок 53 - Ввод значения параметра «Новое
название техники»
Рисунок 54 - Ввод значения параметра «Старое
название техники»
Рисунок 55 - Таблица «Тип техники» после
выполнения запроса
Создадим SQL-запрос, который будет менять старый
способ ремонта на новый, ведённый пользователем.
UPDATE [Способ устранения неисправности] SET
[Способ устранения] = [Введите новый способ устранения]
WHERE [Способ устранения] LIKE [Введите старый
способ устранения];
Результат выполнения запроса представлен на
рисунках 56-58.
Рисунок 56 - Ввод значения параметра «Новый
способ устранения»
Рисунок 57 - Ввод значения параметра «Старый способ
устранения»
Рисунок 58 - Таблица «Услуги» после выполнения
запроса
Создадим SQL-запрос,
который будет удалять из таблицы «Ремонт» все данные о ремонте техники,
указанной пользователем.
DELETE *
FROM Ремонт
WHERE Ремонт.[Код услуги] IN
(SELECT Прайс.[Код услуги] FROM Прайс WHERE
Прайс.[Код типа] = (SELECT [Тип техники].[Код типа] FROM [Тип техники] WHERE
[Тип техники].[Тип техники] LIKE [Укажите тип]));
Результат выполнения запроса представлен на рисунках
59, 60.
Рисунок 59 - Ввод значения параметра
Рисунок 60 - Таблица «Ремонт» после выполнения
запроса
Создадим SQL-запрос, который будет удалять из
таблицы «Ремонт» записи о заказах, выполненных в прошлом месяце.
DELETE *
FROM Ремонт
WHERE MONTH(Ремонт.Дата)<MONTH(DATE());
Результат выполнения запроса представлен на
рисунке 61.
Рисунок 61 - Таблица «Ремонт» после выполнения
запроса
Создадим SQL-запрос, который будет удалять из
таблицы «Тип техники всю информацию о типе технике, выбранной владельцем.
DELETE *
FROM [Тип техники]
WHERE [Тип техники].[Тип техники] LIKE [Какой
тип техники удалить?];
Результат выполнения запроса представлен на
рисунках 62, 63.
Рисунок 62 - Ввод значения параметра
Рисунок 63 - Таблица «Тип техники» после
выполнения запроса
Создадим SQL-запрос, который будет выводить
стоимость заказов по клиентам и услугам.
TRANSFORM Sum(Прайс.Цена)
AS [Sum-Цена]
SELECT [Способ устранения]
FROM [Способ устранения неисправности], Прайс,
Ремонт, Кленты
WHERE [Способ устранения неисправности].[Код
способа устранения]=Прайс.[Код способа устранения] AND Прайс.[Код
услуги]=Ремонт.[Код услуги] AND Ремонт.[Код клиента]=Кленты.[Код клиента]
GROUP BY [Способ устранения]
ORDER BY [Способ устранения]
PIVOT Кленты.ФИО;
Результат выполнения запроса представлен на
рисунке 64.
Рисунок 64 - Результат выполнения запроса
Создадим SQL-запрос,
который будет выводить стоимость оплаченных заказов по услугам и месяцам.
TRANSFORM SUM(Прайс.Цена) AS [Sum-Цена]
SELECT [Способ устранения]
FROM [Способ устранения неисправности], Прайс,
Ремонт
WHERE [Способ устранения неисправности].[Код
способа устранения]=Прайс.[Код способа устранения] AND Прайс.[Код
услуги]=Ремонт.[Код услуги]
GROUP BY [Способ устранения]
ORDER BY [Способ устранения]
PIVOT Month([Дата]);
Результат выполнения запроса представлен на
рисунке 65.
Рисунок 65 - Результат выполнения запроса
2.7 Создание отчетов
Создавать отчёты будем при помощи мастера
отчётов (рисунок 66). Далее будем изменять оформление отчёта в режиме
конструктора. Отчёты будем создавать на основе запросов.
Рисунок 66 - Создание отчета
Отчёт «Должники» отображает отсортированный
список всех клиентов по услуге и их стоимость. Конструктор отчёта представлен
на рисунке 67.
Рисунок 67 - Конструктор отчета «Должники»
Отчёт «Каталог цен на ремонт» отображает
информацию о стоимости ремонта определённого типа техники, способе устранении
неисправности и самой неисправности. Конструктор отчёта представлен на рисунке
68.
Рисунок 68 - Конструктор отчета «Каталог цен на
ремонт»
Отчёт «Прибыль мастеров» сумме, которую получает
каждый мастер за выполнение всех своих услуг. Также в отчёт была вставлена
формула по подсчёту суммы зарплаты. Конструктор отчёта представлен на рисунке
69.
Рисунок 69 - Конструктор отчета «Прибыль
мастеров»
Отчёт «Ремонтные работы» отображает информацию
ремонте конкретной техники с причиной неисправности, способом её устранения и
ценой. Также в отчёт была вставлена формула по подсчёту стоимости всех услуг.
Конструктор отчёта представлен на рисунке 70.
Рисунок 70 - Конструктор отчета «Ремонтные
работы»
Отчёт «Техника на гарантии» отображает
информацию о технике на гарантии с её фотографией. Конструктор отчёта
представлен на рисунке 71.
Рисунок 71 - Конструктор отчета «Техника на
гарантии»
3. Тестирование программного комплекса
Для начала необходимо заполнить базу данных
записями. Заполненные таблицы показаны на рисунках 72 - 81.
Рисунок 72 - Таблица «Ремонт»
Рисунок 73 - Таблица «Прайс»
Рисунок 74 - Таблица «Причина поломки»
Рисунок 75 - Таблица «Неисправность»
Рисунок 76 - Таблица «Способ устранения
неисправности»
Рисунок 77 - Таблица «Тип техники»
Рисунок 78 - Таблица «Вид техники»
Рисунок 79 - Таблица «Техника»
Рисунок 80 - Таблица «Клиенты»
Рисунок 81 - Таблица «Мастера»
При открытии базы данных загружается главная
кнопочная форма (рисунок 82), в которой присутствуют кнопки: «Таблицы»,
«Запросы», «Отчёты», «Формы», «Выход». Каждая кнопочная форма содержит кнопку
«Назад», которая возвращает на главную кнопочную форму.
Рисунок 82 - Главная кнопочная форма
При нажатии на кнопку «Таблицы» произойдёт
переход на следующую кнопочную форму, содержащую кнопки для открытия всех
таблиц присутствующих в данной базе данных (рисунок 83).
Рисунок 83 - Кнопочная форма «Таблицы»
При нажатии на кнопку «Запросы» произойдёт
переход на следующую кнопочную форму, содержащую кнопки с иконками
соответствующих типов запросов: запросы на выборку, запросы на добавление,
запросы на обновление, запросы на удаление, перекрёстные запросы (рисунок 84).
Рисунок 84 - Кнопочная форма «Запросы»
Нажатие на соответствующую кнопку, запускает
форму, содержащую запросы, тип которых соответствует названию нажатой кнопки.
Каждая из следующих кнопочных форм содержит кнопки «Назад» (рисунки 85 - 89).
Рисунок 85 - Кнопочная форма «Запросы на
выборку»
Рисунок 86 - Кнопочная форма «Запросы на
добавление»
Рисунок 87 - Кнопочная форма «Запросы на
обновление»
Рисунок 88 - Кнопочная форма «Запросы на
удаление»
Рисунок 89 - Кнопочная форма «Перекрёстные
запросы»
При нажатии на кнопку «Отчёты» произойдёт
переход на следующую кнопочную форму, содержащую кнопки запуска отчётов
(рисунок 90).
Рисунок 90 - Кнопочная форма «Отчёты»
При нажатии на кнопку «Формы» произойдёт переход
на следующую кнопочную форму, содержащую кнопки запуска форм, предназначенных
для добавления и изменения данных (рисунок 91).
Рисунок 91 - Кнопочная форма «Формы»
Заключение
В данном курсовом проекте при создании базы
данных была использована система управления базами данных Microsoft Access
2010. Рассматриваемая база данных имеет достаточно простой и удобный интерфейс.
Для удобства работы была создана главная кнопочная форма с понятным
интерфейсом. С её помощью можно вызывать таблицы, отчеты, запросы и формы,
которые были реализованы согласно заданию курсового проекта.
В данной базе данных выполняются следующие
условия и ограничения:
·
результатом
выполнения проекта является приложение БД, обеспечивающее пользователю
возможности по пополнению, редактированию, просмотру и анализу данных
предметной области, выбранной для автоматизации;
·
исходные
данные: макеты выходных отчетов и входных оперативно-учетных документов;
·
количество
выходных отчетов - не менее трех. Из них один должен быть сводным, один
аналитическим. В отчетах обязательно наличие финансовых данных. У каждого
отчета должны быть параметры (например, даты, элементы справочников, флаги
отбора данных);
·
количество
входных оперативно-учетных документов - не менее двух. Хотя бы один должен
иметь изменяемые данные в заголовочной части, а также табличную часть. В
табличной части должны подсчитываться итоги по финансовым величинам.
Список использованных источников
1
Гринченко
Н. Проектирование баз данных. СУБД Microsoft Access. Учебное пособие / Н.
Гринченко, Е. Гусев, Н. Макаров - М.: Горячая линия - Телеком, 2004. - 240 с.
2
Электронная
справка и поддержка Microsoft Office - 2013.
3
Бородина
А.И. Технологии баз данных и знаний / А.И. Бородина. - Мн.: БГЭУ, 2008. - 505
с.
4
Литвин
П. Access 2010 / П. Литвин,
К. Гетц - С.: Издательский дом «БХВ-Петербург», 2002. - 1008 с.
5
Бородина
А.И. Технологии баз данных и знаний / А.И. Бородина. - Мн.: БГЭУ, 2008. - 505
с.
Приложение A
Отчёты
Рисунок А.1 - Отчет «Должники»
Рисунок А.2 - Отчет «Прибыль мастеров»
Рисунок А.3 - Отчет «Техника на гарантии»
Рисунок А.4 - Отчет «Каталог цен на ремонт»
Рисунок А.5 - Отчет «Ремонтные работы»