Программная система, предназначенная для диспетчера автобусного парка
Создание программы, автоматизирующей работу диспетчера автобусного парка, обеспечивающей хранение сведений о водителях, маршрутах и автобусах. Проектирование сущностей, связей и отношений между ними. Структура базы данных и реализация интерфейса.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 17.06.2013 |
Размер файла | 2,3 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Министерство образования РФ
СПбГЭТУ "ЛЭТИ"
Кафедра МОЭВМ
Контрольная работа
по дисциплине "Базы данных"
Вариант 9
Студент гр. 3342: Митягин С.А.
Преподаватель: Лукина О.С.
Содержание
1. Задание
2. Проектирование
2.1 Сущности
2.2 Построение отношений
3. Структура таблиц
4. Содержание таблиц
5. Реализация интерфейса
5.1 Иерархия экранных форм
5.2 Экранные формы
6. Описание запросов
7. Описание отчетов
1. Задание
Пусть требуется создать программную систему, предназначенную для диспетчера автобусного парка. Такая система должна обеспечивать хранение сведений о водителях, о маршрутах и характеристиках автобусов.
Каждый водитель характеризуется паспортными данными, классом, стажем работы и окладом, причем оклад зависит от класса и стажа работы. Маршрут автобуса характеризуется номером маршрута, названием начального и конечного пункта движения, временем начала и конца движения, интервалом движения и протяженностью в минутах (время движения от кольца до кольца). Характеристиками автобуса являются: номер государственной регистрации автобуса, его тип и вместимость, причем вместимость автобуса зависит от его типа. Каждый водитель закреплен за отдельным автобусом и работает на определенном маршруте, но в случае поломки своего автобуса или болезни другого водителя может пересесть на другую машину. В базе должен храниться график работы водителей. Необходимо предусмотреть возможность корректировки БД в случаях поступления на работу нового водителя, списания старого автобуса, введения нового маршрута или изменения старого и т.п.
Диспетчеру автопарка могут потребоваться следующие сведения:
- Список водителей, работающих на определенном маршруте с указанием графика их работы?
- Какие автобусы обслуживают данный маршрут?
- Какие маршруты начинаются или заканчиваются в пункте с заданным названием?
- Когда начинается и заканчивается движение автобусов на каждом маршруте?
- Какова протяженность определенного маршрута?
- Какова общая протяженность маршрутов, обслуживаемых автопарком?
- Какие автобусы не вышли на линию, и по какой причине (неисправность, отсутствие водителя)?
- Сколько водителей каждого класса работает в автопарке?
- Водитель с самым большим стажем работы?
Необходимо предусмотреть возможность выдачи справки о маршруте (протяженность, время и интервал движения, конечные пункты, кто обслуживает) и отчета по автопарку, сгруппированного по типам автобусов, с указанием маршрутов, обслуживаемых автобусами каждого типа. Для маршрутов должны быть указаны все характеристики, включая списки автобусов и водителей, обслуживающих каждый маршрут. Отчет должен содержать сведения о суммарной протяженности обслуживаемых маршрутов, о количестве имеющихся в автопарке автобусов каждого типа, о количестве водителей, их среднем возрасте и стаже.
2. Проектирование
2.1 Сущности
Водители (Паспортные данные, класс, стаж, оклад)
Маршрут (№маршрута, название начального пункта, название конечного пункта, время начала движения, время конца движения, интервал, протяженность)
Автобус (№ гос регистрации, тип, вместимость)
Раскрываем термин "Паспортные данные":
Водители (Серия_номер паспорта, ФИО, Дата рождения, прописка, класс, стаж, оклад)
Графическое изображение сущностей и связей между ними приведено на рис. 1.
2.2 Построение отношений
программа автоматизация диспетчер интерфейс
Для связи третьего порядка Водят генерируются отношения по правилу №9.
Получаем отношения:
Водители (№паспорта, ФИО, Дата рождения, прописка, класс, стаж, оклад)
Маршрут (№маршрута, название начального пункта, название конечного пункта, время начала движения, время конца движения, интервал, протяженность)
Автобус (№ гос регистрации, тип, вместимость)
Водят (№паспорта, №маршрута, № гос регистрации, дата)
Для определения технического состояния автобусов введем отношение Поломки. Причем, график поломок зависит от номера автобуса и даты поломки.
Поломки (№ гос регистрации, дата_поломки)
Кроме того так как требуется считать величину оклада в зависимости от класса и стажа, то используем отношение Оклад. Оно должно ставить в зависимость денежное начисление в зависимость от класса водителя.
Оклад (Класс, Базовая_ставка)
Проверяем отношения на избыточность:
Ни одно отношение не включает в себя полностью атрибуты другого отношения.
Отношение Водители не является избыточным, так как его атрибуты не содержаться в других отношениях и не могут быть полученными из других отношений.
Отношение Маршрут не является избыточным, так как его атрибуты не содержаться в других отношениях и не могут быть полученными из других отношений.
Отношение Автобус не является избыточным, так как его атрибуты не содержаться в других отношениях и не могут быть полученными из других отношений.
Отношение Водят не является избыточным, так как его атрибут ДАТА содержится только в этом отношении и не может быть получено из других отношений.
Отношение Поломки не является избыточным, так как его атрибуты не содержаться в других отношениях и не могут быть полученными из других отношений.
Отношение Оклад не является избыточным, так как его атрибуты не содержаться в других отношениях и не могут быть полученными из других отношений.
Таким образом, избыточных отношений нет.
Функциональные зависимости:
Отношение Водители находится в НФБК, так как атрибут №паспорта однозначно определяет остальные атрибуты отношения. Остальные же атрибуты могут повторяться. Таким образом, атрибут № паспорта является детерминантом отношения.
№ паспорта ФИО, Дата_рождения, Прописка, Класс, Стаж, оклад
Отношение Маршруты находится в НФБК, так как атрибут №маршрута однозначно определяет остальные атрибуты отношения. Остальные же атрибуты могут повторяться. Таким образом, атрибут №маршрута является детерминантом отношения.
№ маршрута назв_нач_пункта, назв_кон_пункта, время_нач_движ, время_кон_движ, интервал, протяженность
Отношение Автобусы не находится в НФБК, так как атрибут №гос_регистрации
однозначно определяет остальные атрибуты отношения, и является детерминантом, но атрибут Тип однозначно определяет атрибут Вместимость. Таким образом, пользуемся методом декомпозиции. Выполним проекцию на эту функциональную зависимость:
№ гос_регистрации Тип, Вместимость
Тип Вместимость
Отношение Водят находится в НФБК, так как атрибуты №паспорта, №маршрута, №гос регистрации однозначно определяют остальные атрибуты отношения. Остальные же атрибуты могут повторяться.
№паспорта, №маршрута, №гос регистрации дата
Отношение Поломки находится в НФБК, так как атрибут №гос регистрации однозначно определяет дату поломки, которая может меняться. Таким образом, атрибут №гос регистрации является детерминантом отношения.
№ гос регистрации дата_поломки
Отношение Оклад находится в НФБК, так как атрибут Стаж однозначно определяет величину денежного начисления, которая может меняться. Таким образом, атрибут Стаж является детерминантом отношения.
Стаж денежное начисление
Графическое изображение поученных отношений изображено на рис. 2:
Как было доказано выше избыточных отношений нет.
Рассмотрим функциональные зависимости новых отношений:
Отношение Автобусы находится в НФБК, так как атрибут №гос_регистрации однозначно определяет тип автобуса, который может повторяться. Таким образом, атрибут №гос_регистрации является детерминантом отношения.
№ гос_регистрации тип
Отношение Тип_автобуса находится в НФБК, так как атрибут Тип однозначно определяет вместимость автобуса. Таким образом, атрибут Тип является детерминантом отношения.
Тип вместимость
Таким образом, все указанные отношения находятся в НФБК.
Рис. 3. Структура базы данных
3. Структура таблиц
Таблица "Оклад" - Содержит данные о денежной ставке за класс.
Поле |
Тип данных |
Комментарий |
|
Klass |
Текстовый |
Название класса - ключОбязательное полеРазмер 10 |
|
Oklad |
Числовой |
Величина начисленияЦелоеОбязательное поле |
Таблица "Водители" - Содержит данные о водителях в парке.
Поле |
Тип данных |
Комментарий |
|
Pasp |
Текстовый |
Серия + номер паспорта - ключОбязательное полеРазмер 11Условие на значение:Like "???? ??????" |
|
FIO |
Текстовый |
Фамилия и инициалыОбязательное полеРазмер 50Условие на значение:Like "* ?.?." |
|
staj |
Числовой |
Стаж (лет)Не обязательное полеЦелоеУсловие на значение>0 |
|
klas |
Текстовый |
Класс водителя - вторичный ключОбязательное полеРазмер 1Условие на значение:(="A") Or (="B") Or (="C") |
|
oklad |
Числовой |
Рассчитанная величина окладаОбязательное полеЦелоеУсловие на значение:>0 |
|
data_roj |
Дата/время |
Дата рождения |
|
Adres |
Текстовый |
Место проживания, пропискаНе обязательное полеРазмер 200 |
Связь по ключу klas с таблицей "Оклад" предусматривает обеспечение ссылочной целостности и каскадное обновление.
Таблица "Автобусы" - Содержит данные об автобусах в парке
Поле |
Тип данных |
Комментарий |
|
avtob |
Текстовый |
Номер автобуса -ключОбязательное полеРазмер 6 |
|
Type |
Текстовый |
Тип автобуса - вторичный ключОбязательное полеРазмер 50 |
Связь по ключу Type с таблицей "Тип_вместимость" предусматривает обеспечение ссылочной целостности.
Таблица " Тип_вместимость" - Содержит данные о вместимости автобусов определенного типа.
Поле |
Тип данных |
Комментарий |
|
Type |
Текстовый |
Тип автобуса - ключОбязательное полеРазмер 50 |
|
Vmestim |
Числовой |
ВместимостьОбязательное полеЦелоеУсловие на значение>0 |
Таблица " Поломки " - Содержит данные о поломках автобусов и дат поломок.
Поле |
Тип данных |
Комментарий |
|
id_Pol |
Счетчик |
Искусственный ключ |
|
avtob |
Текстовый |
Номер автобусаОбязательное полеРазмер 6 |
|
date |
Дата/время |
Дата поломки |
Связь по ключу avtob с таблицей "Автобусы" предусматривает обеспечение ссылочной целостности.
Таблица " Маршруты" - Содержит данные о маршрутах, обслуживаемых автопарком.
Поле |
Тип данных |
Комментарий |
|
marshr |
Числовой |
Номер маршрута - ключОбязательное полеЦелоеУсловие на значение>0 |
|
Nach_punkt |
Текстовый |
Название начального пунктаОбязательное полеРазмер 50 |
|
Konechn_punkt |
Текстовый |
Название конечного пунктаОбязательное полеРазмер 50 |
|
Nach_dvij |
Дата/время |
Время начала движения |
|
Kon_vrema |
Дата/время |
Время окончания движения |
|
Interval |
Числовой |
Интервал движения (в мин)Обязательное полеЦелоеУсловие на значение>0 |
|
Protaj |
Числовой |
Протяженность (в мин) Обязательное полеЦелоеУсловие на значение>0 |
Таблица "Водят" - Содержит данные, какой водитель на каком автобусе какой маршрут и какое время обслуживал.
Поле |
Тип данных |
Комментарий |
|
id_vod |
Счетчик |
Искусственный ключ |
|
Pasp |
Текстовый |
Серия + номер паспорта - вторичный ключНе обязательное полеРазмер 11 |
|
avtob |
Текстовый |
Номер автобуса - вторичный ключобязательное полеРазмер 6 |
|
marshr |
Числовой |
Номер маршрута - вторичный ключобязательное полеЦелоеУсловие на значение>0 |
|
date |
Дата/время |
Дата |
Связь по ключу Pasp с таблицей "Водители" предусматривает обеспечение ссылочной целостности.
Связь по ключу avtob с таблицей "Автобусы" предусматривает обеспечение ссылочной целостности.
Связь по ключу marshr с таблицей "Маршруты" предусматривает обеспечение ссылочной целостности.
4. Содержание таблиц
Приведено содержание таблиц на момент отладки базы.
Таблица "Водители"
Паспорт |
Фамилия И.О. |
стаж |
класс |
оклад |
Дата рождения |
Адрес |
|
3000 034582 |
Иванов А.В. |
5 |
B |
15000 |
09.04.1979 |
пр. Богатырский дом 100 кв 20 |
|
3000 121034 |
Белов А.С. |
7 |
B |
17000 |
09.04.1983 |
ул. Дыбенко дом 12 кв 12 |
|
3000 123034 |
Иванов И.И. |
9 |
A |
29000 |
10.02.1970 |
ул. Камышовая дом 35 к 1 кв 292 |
|
3000 452114 |
Белов С.А. |
10 |
A |
30000 |
29.10.1985 |
пр. Авиаконструкторов дом 15 кв 4 |
|
3000 542421 |
Старов П.В. |
7 |
B |
17000 |
08.09.1985 |
пр. Богатырский дом 55 к 3 кв 103 |
|
3000 762234 |
Еремеев О.П. |
5 |
C |
10000 |
30.11.1980 |
ул. Ильюшина дом 22 кв 3 |
|
3000 906823 |
Титов П.М. |
10 |
B |
20000 |
17.04.1984 |
пр. Испытателей дом 11 кв 45 |
|
3021 123345 |
Галич Н.О. |
10 |
B |
20000 |
08.08.1983 |
пр. Богатырский дом 67 к 2 кв 333 |
|
3021 134553 |
Жданов М.Ю. |
10 |
B |
20000 |
09.01.1983 |
ул. Камышовая дом 22 кв 107 |
|
3021 234945 |
Петров О.Н. |
7 |
B |
17000 |
05.12.1980 |
пр. Авиаконструкторов дом 212 кв 561 |
|
3021 343421 |
Нестеров П.М. |
4 |
B |
14000 |
15.11.1985 |
пр. Богатырский дом 232 кв 12 |
|
3021 347520 |
Белов И.С. |
10 |
B |
20000 |
19.11.1985 |
пр. Испытателей дом 5 кв 23 |
|
3021 438954 |
Егоров Л.Д. |
4 |
B |
14000 |
01.01.1973 |
ул. Гакелевская дом 55 кв 6 |
|
3021 452213 |
Иванов С.Г. |
4 |
B |
14000 |
05.01.1983 |
пр. Маршала-Новикова 23 |
|
3021 485621 |
Кузнецов Н.А. |
8 |
C |
13000 |
17.09.1973 |
пр. Сизова дом 44 кв 12 |
|
3021 509210 |
Кузнецов В.Н. |
10 |
A |
30000 |
30.03.1975 |
пр. Мориса-Тереза дом 115 кв 69 |
|
4000 421131 |
Петров А.И. |
5 |
C |
10000 |
23.09.1981 |
пр. Сизова дом 59 кв 111 |
|
4000 455202 |
Зайцев О.С. |
10 |
B |
20000 |
05.03.1981 |
ул. Долгоозерная дом 1 кв 1 |
|
4000 455220 |
Бабушкин Р.Ю. |
10 |
A |
30000 |
05.03.1978 |
ул. Яхтенная дом 15 кв 2 |
|
4000 509123 |
Нагорный Д.И. |
7 |
B |
17000 |
09.12.1982 |
ул. Камышовая дом 11 кв 501 |
|
4000 576933 |
Сидоров С.А. |
3 |
C |
8000 |
06.07.1981 |
ул. Байконурская дом 43 кв 3 |
|
4000 673921 |
Швондер А.С. |
9 |
A |
29000 |
09.12.1979 |
пр. Яхтенная дом 15 кв 77 |
|
4000 678423 |
Быков П.А. |
10 |
B |
20000 |
06.09.1982 |
ул. Гакелевская дом 76 кв 55 |
|
4000 789842 |
Сидоров С.Л. |
4 |
B |
14000 |
09.12.1980 |
ул. Камышовая дом 104 кв 5 |
Таблица "Автобусы"
Номер автобуса |
Тип |
|
а 004вп |
Лиаз 05гв |
|
а 007пп |
Экарус (гармошка) |
|
а 070пр |
Экарус 95гв |
|
в 007рп |
Экарус (гармошка) |
|
в 909ао |
Лиаз 90гв |
|
н 006оо |
Лиаз 90гв |
|
о 009пр |
Лиаз (гармошка) |
|
п 004пп |
Лиаз 05гв |
|
п 009оо |
Лиаз (гармошка) |
|
р 005рр |
Лиаз (гармошка) |
|
р 007аа |
Экарус (гармошка) |
|
с 050ар |
Лиаз 05гв |
Таблица "Маршруты"
Номер |
Начальный пункт |
Конечный пункт |
Начало движения |
Окончание движения |
Интервал |
Протяженность |
|
1 |
м. Старая деревня |
ул. Камышовая |
00.01.1900 |
00.01.1900 |
15 |
110 |
|
2 |
пр. Сизова |
м. Пионерская |
00.01.1900 |
00.01.1900 |
25 |
180 |
|
3 |
м. Плошадь мужества |
м. Пионерская |
00.01.1900 |
00.01.1900 |
15 |
100 |
|
4 |
пр. Испытателей |
ул. Камышовая |
00.01.1900 |
00.01.1900 |
20 |
60 |
|
5 |
пр. Авиаконструкторов |
Ланское шоссе |
00.01.1900 |
00.01.1900 |
20 |
120 |
Таблица "Водят"
Номер паспорта |
Номер автобуса |
маршрут |
дата |
|
3021 234945 |
а 007пп |
1 |
23.05.2006 |
|
4000 576933 |
в 007рп |
1 |
22.05.2006 |
|
3021 438954 |
в 007рп |
1 |
23.05.2006 |
|
3000 034582 |
н 006оо |
2 |
22.05.2006 |
|
4000 455202 |
н 006оо |
2 |
23.05.2006 |
|
4000 455220 |
а 004вп |
2 |
22.05.2006 |
|
3021 509210 |
а 004вп |
2 |
23.05.2006 |
|
3000 121034 |
п 004пп |
2 |
22.05.2006 |
|
3021 347520 |
п 004пп |
2 |
23.05.2006 |
|
3021 485621 |
р 007аа |
3 |
22.05.2006 |
|
3021 343421 |
р 007аа |
3 |
23.05.2006 |
|
4000 678423 |
п 009оо |
3 |
22.05.2006 |
|
4000 673921 |
п 009оо |
3 |
23.05.2006 |
|
3000 452114 |
в 909ао |
4 |
22.05.2006 |
|
3021 452213 |
в 909ао |
4 |
23.05.2006 |
|
4000 789842 |
а 070пр |
4 |
22.05.2006 |
|
4000 509123 |
а 070пр |
4 |
23.05.2006 |
|
3021 123345 |
р 005рр |
5 |
22.05.2006 |
|
3000 906823 |
р 005рр |
5 |
23.05.2006 |
|
3000 762234 |
о 009пр |
5 |
22.05.2006 |
|
4000 421131 |
о 009пр |
5 |
23.05.2006 |
|
3000 542421 |
с 050ар |
5 |
22.05.2006 |
|
3021 134553 |
с 050ар |
5 |
23.05.2006 |
|
3000 123034 |
а 007пп |
1 |
24.05.2006 |
|
3021 438954 |
в 007рп |
1 |
24.05.2006 |
|
3000 034582 |
н 006оо |
2 |
24.05.2006 |
|
3021 509210 |
а 004вп |
2 |
24.05.2006 |
|
3000 121034 |
п 004пп |
2 |
24.05.2006 |
|
3021 343421 |
р 007аа |
3 |
24.05.2006 |
|
4000 678423 |
п 009оо |
3 |
24.05.2006 |
|
3000 452114 |
в 909ао |
4 |
24.05.2006 |
|
3021 123345 |
р 005рр |
5 |
24.05.2006 |
|
4000 421131 |
о 009пр |
5 |
24.05.2006 |
|
3021 134553 |
с 050ар |
5 |
24.05.2006 |
Таблица "Тип_вместимость"
Тип |
Вместимость (чел) |
|
Лиаз (гармошка) |
250 |
|
Лиаз 05гв |
150 |
|
Лиаз 90гв |
130 |
|
Экарус (гармошка) |
200 |
|
Экарус 95гв |
150 |
Таблица "Поломки"
id |
Номер автобуса |
дата поломки |
|
1 |
п 009оо |
25.05.2006 |
|
2 |
а 070пр |
25.05.2006 |
Таблица "Оклад"
Класс |
Оклад |
|
A |
20000 |
|
B |
10000 |
|
C |
5000 |
5. Реализация интерфейса
5.1 Иерархия экранных форм
5.2 Экранные формы
Рис. - Форма "Главная"
Главный интерфейс базы.
Источник данных: нет
Элементы формы:
Рисунки, событие onClick.
Стрелка 1 - открытие формы Маршруты
Стрелка 2- открытие формы Автобусы
Стрелка 3 - открытие формы Водители
Стрелка 4 - открытие формы НеВышли
Стрелка 5 - открытие отчета поПарку
Стрелка 6 - открытие формы График работы
"Выход" - выход.
При открытии выполняется команда Развернуть.
Рис. - Форма "Маршруты"
Выводит данные о маршрутах.
Источник данных: таблица Маршруты
Элементы:
Поля, куда выводятся основные характеристики маршрута.
Кнопки листания.
Кнопка поиска.
Кнопка 29 - открыть форму "МаршВод"
Кнопка 27 - открыть форму "СписокАвтоб" либо "СписокАвтобВсех"
Кнопка 40 - открыть форму "МаршПоиск"
Кнопка 48 - открыть отчет "Справка"
Кнопка добавления - Кнопка 45- открывает форму "МаршВводНов"
Кнопка удаления - Кнопка 47 - открывает форму "МаршрутыУдалПодт" на подтверждение удаления. И вызывает запрос МаршУдал.
Рис. - Форма "МаршВод"
Список водителей на данном маршруте.
Источник записей: запрос МаршВод.
Элементы:
Подчиненная форма МАршВодПод.
Источник записей: Запрос МАршВодПод.
Поле связи - pasp
Рис. - Форма "СписокАвтоб" или "СписокАвтобВсех"
Вывод списка автобусов на данном маршруте.
Источник записей: запрос СписАвтоб для "СписокАвтоб"
Или запрос СписокАвтобВсех для "СписокАвтобВсех"
Рис. - Форма "МаршПоиск"
Поиск маршрутов по названиям начального и конечного путей.
Источник данных: нет
Элементы:
Поле со списком 1, источник данных
SELECT МаршНачПункт.nach FROM МаршНачПункт;
Поле со списком 2, источник данных
SELECT МаршКонПункт.konech FROM МаршКонПункт;
Кнопка 3 - применить фильтр к подчиненной форме.
Рис. - Форма "МаршВводНов"
Ввод данных о новом маршруте.
Источник записей: нет
Элементы:
Поле со списком 1. Источник записей:
SELECT МаршНачПункт.nach FROM МаршНачПункт;
Поле со списком 2. Источник записей:
SELECT МаршКонПункт.konech FROM МаршКонПункт;
Кнопка Ввести - запрос МаршВводНов
Рис. - Форма "Автобусы"
Выводит список автобусов, возможность добавления, удаления автобуса.
Источник данных: таблица Автобусы
Элементы:
Подчиненная форма Автобусы 1 источник записей - таблица Автобусы
Поле связи: нет
Поле со списком 1 источник данных:
SELECT DISTINCT АвтобТип.type FROM АвтобТип;
Кнопка на запрос ДобавНовАвтоб.
Кнопка на вызов запроса на удаление АвтобУдал
Рис. - Форма "Водители"
Выводит данные о водителях. Выбор принятия на работу нового или увольнение.
Источник данных: таблица Водители
Элементы:
Кнопка Общий график на открытие запроса ГрафикЛин_перекрестный
Подчиненная форма ПоКлассам
Источник записей: запрос ПоКлассам
Поле связи: нет
Подчиненная форма МахСтаж
Источник записей: запрос МахСтаж
Поле связи: нет
Кнопка Уволит водителя - запрос ВодтелиУволн
Кнопка Принять водителя - открыть форму "АнкетаВод"
Рис. - Форма "АнкетаВод"
Вводит данные по принятию нового водителя.
Источник данных: нет
Элементы:
Поле со списком. Источник строк: "A";"B";"C"
Кнопка Принять - вызов запроса АнкетаВод, после чего данные будут загружены в промежуточную таблицу, и после подтверждения будут перегружены в основную, с помощью запроса АнкетаВодЗагр
Рис. - Форма "НеВышли"
Выводит данные о не вышедших на маршрут автобусах, и причине.
Источник данных: запрос НеВышли
Рис. - Форма "График работы"
Выводит графики работ водителей и автобусов, возможность заполнения расписания.
Источник данных: нет
Элементы:
Подчиненный запрос: форма: подчиненная форма ГрафикЛин_перекрестный
запрос: ГрафикЛин_перекрестный
поле связи: нет
Подчиненный запрос: форма: подчиненная форма ГрафикАвтоб_лин_перекрестный
запрос: ГрафикАвтоб_лин_перекрестный
поле связи: нет
Поле со списком "Паспорт". Источник данных:
SELECT СвободныеВодители.pasp FROM СвободныеВодители;
Поле со списком "Номер автобуса". Источник данных:
SELECT СвободныеАвтоб.avtob FROM СвободныеАвтоб;
Поле со списком "Номер автобуса". Источник данных:
SELECT Маршруты.marshr FROM Маршруты;
Кнопка Ввести - на вызов запроса ВводСтрокиГрафика
6. Описание запросов
Запрос "АвтобУдал"
Удаление записи из таблицы Автобусы.
DELETE *
FROM Автобусы
WHERE avtob=Forms!Автобусы!avtobud;
Результат: удалена запись
Forms!Автобусы!avtobud |
type |
Запрос "АнкетаВодЗагр"
Добавляет запись в промежуточную таблицу ВодителиЗагр
INSERT INTO ВодителиЗагр (Pasp, FIO, staj, klas, data_roj, Adres)
VALUES (Forms!АнкетаВод!pasp, Forms!АнкетаВод!fio, Forms!АнкетаВод!staj, Forms!АнкетаВод!klas, Forms!АнкетаВод!date, Forms!АнкетаВод!Adres);
Результат:
Forms!АнкетаВод!pasp |
Forms!АнкетаВод!fio |
Forms!АнкетаВод!staj |
Forms!АнкетаВод!klas |
Forms!АнкетаВод!date |
Forms!АнкетаВод!Adres |
Запрос " АнкетаВод"
Добавляет запись в таблицу Водители
INSERT INTO Водители
SELECT ВодителиЗагр.Pasp AS Pasp, ВодителиЗагр.FIO AS FIO, ВодителиЗагр.staj AS staj, ВодителиЗагр.klas AS klas, Оклад.Oklad AS Oklad, ВодителиЗагр.data_roj AS data_roj, ВодителиЗагр.Adres AS Adres
FROM ВодителиЗагр, Оклад
WHERE (ВодителиЗагр.klas=Оклад.klass) and
(ВодителиЗагр.Pasp not in (SELECT Pasp FROM Водители));
Результат:
ВодителиЗагр.Pasp |
ВодителиЗагр.FIO |
ВодителиЗагр.staj |
ВодителиЗагр.klas |
Оклад.Oklad |
ВодителиЗагр.data_roj |
ВодителиЗагр.Adres |
Запрос "ВводСтрокиГрафика"
Добавляет запись в таблицу Водят
INSERT INTO Водят (Pasp, avtob, marshr, [date])
SELECT Forms![График работы]!pasp, Forms![График работы]!avtob, Forms![График работы]!marshr, Forms![График работы]!date;
Результат:
Forms![График работы]!pasp |
Forms![График работы]!avtob |
Forms![График работы]!marshr |
Forms![График работы]!date |
Запрос "ВодтелиУволн"
Удаляет запись из таблицы Водители
DELETE *
FROM Водители
WHERE Pasp=Forms!Водители!PaspUv;
Результат:
Удалена запись вида:
Forms!Водители!PaspUv |
FIO |
staj |
klas |
Oklad |
data_roj |
Adres |
Запрос "ГрафикАвтоб_лин"
Формирует таблицу, содержащую номера автобусов, дату, и номер маршрута или сообщение о поломке, в случае неисправности.
Необходим, для составление графика работы автобусов.
SELECT Автобусы.avtob,
Водят.date,
Водят.marshr as Выход
FROM Автобусы inner join Водят on Автобусы.avtob=Водят.avtob
WHERE
(Автобусы.avtob not in (SELECT Поломки.avtob FROM Поломки))
UNION SELECT Поломки.avtob,
Поломки.date,
"Поломка" as Выход
FROM Поломки;
Результат:
номер |
дата |
Выход |
|
а 004вп |
22.05.2006 |
2 |
|
а 004вп |
23.05.2006 |
2 |
|
а 004вп |
24.05.2006 |
2 |
|
а 007пп |
23.05.2006 |
1 |
|
а 007пп |
24.05.2006 |
1 |
|
а 070пр |
25.05.2006 |
Поломка |
|
в 007рп |
22.05.2006 |
1 |
|
в 007рп |
23.05.2006 |
1 |
|
в 007рп |
24.05.2006 |
1 |
|
в 909ао |
22.05.2006 |
4 |
|
в 909ао |
23.05.2006 |
4 |
|
в 909ао |
24.05.2006 |
4 |
|
н 006оо |
22.05.2006 |
2 |
|
н 006оо |
23.05.2006 |
2 |
|
н 006оо |
24.05.2006 |
2 |
|
о 009пр |
22.05.2006 |
5 |
|
о 009пр |
23.05.2006 |
5 |
|
о 009пр |
24.05.2006 |
5 |
|
п 004пп |
22.05.2006 |
2 |
|
п 004пп |
23.05.2006 |
2 |
|
п 004пп |
24.05.2006 |
2 |
|
п 009оо |
25.05.2006 |
Поломка |
|
р 005рр |
22.05.2006 |
5 |
|
р 005рр |
23.05.2006 |
5 |
|
р 005рр |
24.05.2006 |
5 |
|
р 007аа |
22.05.2006 |
3 |
|
р 007аа |
23.05.2006 |
3 |
|
р 007аа |
24.05.2006 |
3 |
|
с 050ар |
22.05.2006 |
5 |
|
с 050ар |
23.05.2006 |
5 |
|
с 050ар |
24.05.2006 |
5 |
Запрос "ГрафикЛин"
Формирует таблицу, содержащую фамилии водителей, даты, и номера маршрутов. Необходим, для составление графика работы водителей.
SELECT Водители.FIO, Водят.date, Водят.marshr & " " & Водят.avtob AS marshr
FROM Водители RIGHT JOIN Водят ON Водители.Pasp=Водят.Pasp;
Результат:
Фамилия И.О. |
дата |
маршрут+автобус |
|
Галич Н.О. |
24.05.2006 |
5 р 005рр |
|
Петров А.И. |
24.05.2006 |
5 о 009пр |
|
Жданов М.Ю. |
24.05.2006 |
5 с 050ар |
|
Петров О.Н. |
23.05.2006 |
1 а 007пп |
|
Сидоров С.А. |
22.05.2006 |
1 в 007рп |
|
Егоров Л.Д. |
23.05.2006 |
1 в 007рп |
|
Иванов А.В. |
22.05.2006 |
2 н 006оо |
|
Зайцев О.С. |
23.05.2006 |
2 н 006оо |
|
Бабушкин Р.Ю. |
22.05.2006 |
2 а 004вп |
|
Кузнецов В.Н. |
23.05.2006 |
2 а 004вп |
|
Белов А.С. |
22.05.2006 |
2 п 004пп |
|
Белов И.С. |
23.05.2006 |
2 п 004пп |
|
Кузнецов Н.А. |
22.05.2006 |
3 р 007аа |
|
Нестеров П.М. |
23.05.2006 |
3 р 007аа |
|
Быков П.А. |
22.05.2006 |
3 п 009оо |
|
Швондер А.С. |
23.05.2006 |
3 п 009оо |
|
Белов С.А. |
22.05.2006 |
4 в 909ао |
|
Иванов С.Г. |
23.05.2006 |
4 в 909ао |
|
Сидоров С.Л. |
22.05.2006 |
4 а 070пр |
|
Нагорный Д.И. |
23.05.2006 |
4 а 070пр |
|
Галич Н.О. |
22.05.2006 |
5 р 005рр |
|
Титов П.М. |
23.05.2006 |
5 р 005рр |
|
Еремеев О.П. |
22.05.2006 |
5 о 009пр |
|
Петров А.И. |
23.05.2006 |
5 о 009пр |
|
Старов П.В. |
22.05.2006 |
5 с 050ар |
|
Жданов М.Ю. |
23.05.2006 |
5 с 050ар |
|
Иванов И.И. |
24.05.2006 |
1 а 007пп |
|
Егоров Л.Д. |
24.05.2006 |
1 в 007рп |
|
Иванов А.В. |
24.05.2006 |
2 н 006оо |
|
Кузнецов В.Н. |
24.05.2006 |
2 а 004вп |
|
Белов А.С. |
24.05.2006 |
2 п 004пп |
|
Нестеров П.М. |
24.05.2006 |
3 р 007аа |
|
Быков П.А. |
24.05.2006 |
3 п 009оо |
|
Белов С.А. |
24.05.2006 |
4 в 909ао |
Запрос "ДобавНовАвтоб"
Добавляет строку в таблицу Автобусы.
INSERT INTO Автобусы (avtob, Type)
VALUES (Forms!Автобусы!avtob, Forms!Автобусы!Type);
Результат:
Строка вида:
Forms!Автобусы!avtob |
Forms!Автобусы!Type |
Запрос "МаршВводНов"
Добавление строки в таблицу Маршруты
INSERT INTO Маршруты (marshr, Nach_punkt, Konechn_punkt, Nach_dvij, Kon_vrema, int, Protaj)
VALUES (Forms!МаршВводНов!nom, Forms!МаршВводНов!nach, Forms!МаршВводНов!konech, Forms!МаршВводНов!nvr, Forms!МаршВводНов!kvr, Forms!МаршВводНов!int,Forms!МаршВводНов!prot);
Результат:
Строка вида:
Forms!МаршВводНов!nom |
Forms!МаршВводНов!nach |
Forms!МаршВводНов!konech |
Forms!МаршВводНов!nvr |
Forms!МаршВводНов!kvr |
Forms!МаршВводНов!int |
Forms!МаршВводНов!prot |
Запрос "МаршВод"
Выбирает данные из таблицы Водители, удовлетворяющие заданному маршруту и дате.
SELECT DISTINCT Водители.FIO, Водители.Pasp
FROM Водители RIGHT JOIN Водят ON Водители.Pasp=Водят.Pasp
WHERE (((Водят.marshr)=Forms!Маршруты!marshr));
Результат:
FIO |
Pasp |
|
Егоров Л.Д. |
3021 438954 |
|
Иванов И.И. |
3000 123034 |
|
Петров О.Н. |
3021 234945 |
|
Сидоров С.А. |
4000 576933 |
Запрос "МаршПоиск"
Выбирает данные из таблицы Маршруты, по заданным кольцам.
SELECT Маршруты.marshr, Маршруты.Nach_punkt, Маршруты.Konechn_punkt
FROM Маршруты
WHERE (Маршруты.Nach_punkt=Forms!МаршПоиск!nachal) Or (Маршруты.Konechn_punkt=Forms!МаршПоиск!konech);
Результат:
marshr |
Nach_punkt |
Konechn_punkt |
|
2 |
пр. Сизова |
м. Пионерская |
|
3 |
м. Плошадь мужества |
м. Пионерская |
Запрос "МаршУдал"
Удаляет запись из таблицы Маршруты
DELETE *
FROM Маршруты
WHERE marshr=Forms!Маршруты!marshr;
Результат:
Удалена строка вида:
Forms!Маршруты!marshr |
Nach_punkt |
Konechn_punkt |
Nach_dvij |
Kon_vrema |
int |
Protaj |
Запрос "МахСтаж"
Выбор из таблицы Водители тех, у кого наибольший стаж
SELECT Водители.FIO, staj
FROM Водители
WHERE staj in (SELECT max(staj) FROM Водители);
Результат:
FIO |
staj |
|
Зайцев О.С. |
10 |
|
Бабушкин Р.Ю. |
10 |
|
Кузнецов В.Н. |
10 |
|
Белов И.С. |
10 |
|
Быков П.А. |
10 |
|
Белов С.А. |
10 |
|
Галич Н.О. |
10 |
|
Титов П.М. |
10 |
|
Жданов М.Ю. |
10 |
Запрос "НеВышли"
Формирует таблицу, из тех автобусов, которые находятся в ремонте, с пометкой о поломке, и автобусов, которым не нашлось водителей, с соответствующей пометкой.
На эту дату.
SELECT Автобусы.avtob,
"Нет водителя" as Причина
FROM Автобусы
WHERE (Автобусы.avtob not in (SELECT Водят.avtob FROM Водят WHERE date=date())) and
(Автобусы.avtob not in (SELECT Поломки.avtob FROM Поломки WHERE date=date()))
UNION SELECT Поломки.avtob,
"Поломка"
FROM Поломки
WHERE (date=date());
Результат:
avtob |
Причина |
|
а 004вп |
Нет водителя |
|
а 007пп |
Нет водителя |
|
а 070пр |
Поломка |
|
в 007рп |
Нет водителя |
|
в 909ао |
Нет водителя |
|
н 006оо |
Нет водителя |
|
о 009пр |
Нет водителя |
|
п 004пп |
Нет водителя |
|
п 009оо |
Поломка |
|
р 005рр |
Нет водителя |
|
р 007аа |
Нет водителя |
|
с 050ар |
Нет водителя |
Запрос "ПоКлассам"
Находит число водителей по классам.
SELECT Водители.klas, count(pasp) AS Человек
FROM Водители
GROUP BY Водители.klas;
Результат:
klas |
Человек |
|
A |
5 |
|
B |
15 |
|
C |
4 |
Запрос "ПоПарку"
Необходим для создания отчета по парку.
Находит какие водители, по какому маршруту, и на каких автобусах работают в эту дату.
SELECT Автобусы.Type, Автобусы.avtob, Водители.FIO, Маршруты.marshr, Маршруты.Nach_punkt, Маршруты.Konechn_punkt, Маршруты.Nach_dvij, Маршруты.Kon_vrema, Маршруты.Interval, Маршруты.Protaj
FROM Водители INNER JOIN (Маршруты RIGHT JOIN (Автобусы RIGHT JOIN Водят ON Автобусы.avtob=Водят.avtob) ON Маршруты.marshr=Водят.marshr) ON Водители.Pasp=Водят.Pasp
WHERE (Водят.date=date());
Результат:
Type |
avtob |
FIO |
marshr |
Nach_punkt |
Konechn_punkt |
Nach_dvij |
Kon_vrema |
Interval |
Protaj |
|
Лиаз (гармошка) |
р 005рр |
Галич Н.О. |
5 |
пр. Авиаконструкторов |
Ланское шоссе |
00.01.1900 |
00.01.1900 |
20 |
120 |
|
Лиаз (гармошка) |
о 009пр |
Петров А.И. |
5 |
пр. Авиаконструкторов |
Ланское шоссе |
00.01.1900 |
00.01.1900 |
20 |
120 |
|
Лиаз 05гв |
с 050ар |
Жданов М.Ю. |
5 |
пр. Авиаконструкторов |
Ланское шоссе |
00.01.1900 |
00.01.1900 |
20 |
120 |
|
Экарус (гармошка) |
а 007пп |
Иванов И.И. |
1 |
м. Старая деревня |
ул. Камышовая |
00.01.1900 |
00.01.1900 |
15 |
110 |
|
Экарус (гармошка) |
в 007рп |
Егоров Л.Д. |
1 |
м. Старая деревня |
ул. Камышовая |
00.01.1900 |
00.01.1900 |
15 |
110 |
|
Лиаз 90гв |
н 006оо |
Иванов А.В. |
2 |
пр. Сизова |
м. Пионерская |
00.01.1900 |
00.01.1900 |
25 |
180 |
|
Лиаз 05гв |
а 004вп |
Кузнецов В.Н. |
2 |
пр. Сизова |
м. Пионерская |
00.01.1900 |
00.01.1900 |
25 |
180 |
|
Лиаз 05гв |
п 004пп |
Белов А.С. |
2 |
пр. Сизова |
м. Пионерская |
00.01.1900 |
00.01.1900 |
25 |
180 |
|
Экарус (гармошка) |
р 007аа |
Нестеров П.М. |
3 |
м. Плошадь мужества |
м. Пионерская |
00.01.1900 |
00.01.1900 |
15 |
100 |
|
Лиаз (гармошка) |
п 009оо |
Быков П.А. |
3 |
м. Плошадь мужества |
м. Пионерская |
00.01.1900 |
00.01.1900 |
15 |
100 |
|
Лиаз 90гв |
в 909ао |
Белов С.А. |
4 |
пр. Испытателей |
ул. Камышовая |
00.01.1900 |
00.01.1900 |
20 |
60 |
Запрос "ПоПаркуСвод"
Формирует список общих характеристик по парку. Средний возраст водителей, Средний стаж вождения, общая протяженность маршрутов, количество водителей.
SELECT DISTINCT (SELECT sum(protaj) FROM Маршруты) AS [Общая протяженность], (SELECT count(pasp) FROM Водители) AS [Количество водителей], (SELECT round(avg(staj)) FROM Водители) AS [Средний стаж], (SELECT round(avg(Date()-Водители.data_roj)/365) FROM Водители) AS [Средний возраст]
FROM Водители INNER JOIN (Маршруты RIGHT JOIN (Автобусы RIGHT JOIN Водят ON Автобусы.avtob=Водят.avtob) ON Маршруты.marshr=Водят.marshr) ON Водители.Pasp=Водят.Pasp
WHERE (Водят.date=date());
Резульиат:
Общая протяженность |
Количество водителей |
Средний стаж |
Средний возраст |
|
570 |
24 |
7 |
25 |
Запрос "СвободныеАвтоб"
Формирует список автобусов, для которых не нашлось водителя.
SELECT Автобусы.avtob
FROM Автобусы
WHERE (Автобусы.avtob not in (SELECT Водят.avtob FROM Водят WHERE date=date())) and
(Автобусы.avtob not in (SELECT Поломки.avtob FROM Поломки WHERE date=date()));
Результат:
avtob |
|
а 007пп |
|
в 007рп |
|
н 006оо |
|
а 004вп |
|
п 004пп |
Запрос "СвободныеВодители"
Формирует список водителей, для которых не нашлось автобуса.
SELECT Водители.pasp
FROM Водители
WHERE (Водители.pasp not in (SELECT Водят.pasp FROM Водят WHERE date=date()));
Результат:
pasp |
|
3021 234945 |
|
4000 576933 |
|
4000 455202 |
|
4000 455220 |
|
3021 347520 |
|
3021 485621 |
|
4000 673921 |
|
3021 452213 |
|
4000 789842 |
|
4000 509123 |
|
3000 906823 |
|
3000 762234 |
|
3000 542421 |
Запрос "СписАвтоб"
Формирует список автобусов на данном маршруте, в эту дату.
SELECT DISTINCT Водят.avtob, Водят.marshr, Водят.date
FROM Водят
WHERE (((Водят.marshr)=Forms!Маршруты!marshr) And ((Водят.date)=Forms!Маршруты!data));
Результат:
avtob |
marshr |
date |
|
а 007пп |
1 |
25.05.2006 |
|
в 007рп |
1 |
25.05.2006 |
Запрос "СписАвтобВсех"
Формирует список автобусов на данном маршруте всего, за все время
SELECT DISTINCT Водят.avtob, Водят.marshr
FROM Водят
WHERE (((Водят.marshr)=Forms!Маршруты!marshr));
Результат:
avtob |
marshr |
|
а 004вп |
2 |
|
н 006оо |
2 |
|
п 004пп |
2 |
Запрос "Справка"
Формирует список водителей и автобусов на данную дату.
Нужен, для создания отчета-Справки по маршруту.
SELECT Водители.FIO, Водят.avtob
FROM Водители RIGHT JOIN Водят ON Водители.Pasp = Водят.Pasp
WHERE (((Водят.date)=[Forms]![Маршруты]![data]));
Результат:
3000 123034 |
а 007пп |
1 |
24.05.2006 |
|
3021 438954 |
в 007рп |
1 |
24.05.2006 |
|
3000 034582 |
н 006оо |
2 |
24.05.2006 |
|
3021 509210 |
а 004вп |
2 |
24.05.2006 |
|
3000 121034 |
п 004пп |
2 |
24.05.2006 |
|
3021 343421 |
р 007аа |
3 |
24.05.2006 |
|
4000 678423 |
п 009оо |
3 |
24.05.2006 |
|
3000 452114 |
в 909ао |
4 |
24.05.2006 |
|
3021 123345 |
р 005рр |
5 |
24.05.2006 |
|
4000 421131 |
о 009пр |
5 |
24.05.2006 |
7. Описание отчетов
Рис. - Отчет "Справка"
Источник данных: Запрос Справка и таблица Маршруты
Группировка по полю marshr - номер маршрута - по возрастанию.
Рис. - Отчет "ПоПарку"
Источник данных: запрос ПоПарку
Поля группировки: type - тип автобуса
Marsgr - номер маршрута
Расчетные поля: Число автобусов = count(avtob)
Элементы: подчиненный отчет.
Источник данных: запрос ПоПаркуСвод.
Размещено на Allbest.ru
Подобные документы
Использование реляционной СУБД ACCESS для создания базы данных работы диспетчера автобусного парка. Цель, задачи, функции и структура БД, инфологическое проектирование. Объекты БД; перечень SQL-запросов. Интерфейс, настройки, средства создания таблиц.
курсовая работа [3,0 M], добавлен 21.05.2012Сущность и значение средств управления базами данных предприятия. Методика разработки базы данных и прикладного программного обеспечения автобусного парка, позволяющее структурировать информацию об автобусных маршрутах, остановках и автобусах парка.
курсовая работа [163,4 K], добавлен 20.01.2010Назначение базы данных для обеспечения работы автобусного парка. Основные возможности админпанели. Выполняемые базой данных и приложением функции. Инфологическое моделирование данных. Описание разработанного web-приложения. Проектирование базы данных.
курсовая работа [2,2 M], добавлен 01.02.2013Базы данных как совокупность структур, предназначенных для хранения больших объемов информации и программных модулей. Основные особенности создания базы данных автобусного парка, анализ этапов проектирования. PHP как скриптовый язык программирования.
курсовая работа [1,9 M], добавлен 04.04.2013Понятие базы данных и системы управления данными (СУБД). Ее функции: ввод и хранение информации, создание таблиц, графиков, отчетов. Разработка программного продукта для автобусного парка - автоматизированной системы "Автопарк" с использованием MySQL.
курсовая работа [3,7 M], добавлен 04.02.2013Анализ программ автоматизации деятельности диспетчера такси. Жизненный цикл автоматизированной информационной системы, язык программирования, система управления базами данных. Создание программы "Автоматизированное рабочее место диспетчера такси".
курсовая работа [1,6 M], добавлен 19.11.2010Системный анализ и анализ требований. Концептуальная модель данных. Проектирование логической структуры реляционной базы данных. Даталогическая модель базы данных. Алгоритмы реализации модулей и их реализация (запросы, таблицы, формы, отчеты, макросы).
курсовая работа [1,6 M], добавлен 17.12.2015Декомпозиция диаграммы и обработка путевых листов. Подсистема учета оказанных транспортных услуг, работы водителей, затрат, ремонтов и сервисного обслуживания. Проектирование автоматизированного рабочего места диспетчера, разработка интерфейса программы.
дипломная работа [4,6 M], добавлен 20.01.2013Создание программы, осуществляющей хранение информации о Ресторане. Структура предприятия, нормализация отношений. Разработка пользовательского интерфейса базы данных "АРМ администратора ресторана" в Borland Delphi 7. Характеристики для поиска данных.
курсовая работа [835,5 K], добавлен 18.06.2015Разработка и внедрение модуля комплексной системы автоматизированного рабочего места диспетчера по транспорту, позволяющей автоматизировать работу диспетчера: по учету, контролю выполнения заявок, их регистрации, а также по созданию итоговых отчетов.
дипломная работа [4,3 M], добавлен 25.01.2013