Учет подвижного состава железных дорог
Содержание
Введение ………………………………………………………
- Анализ предметной области ………………………………………..6
- Разработка информационной модели данных….………………….9
- Описание структуры базы данных …………………...……..…….11
- Разработка структуры базы данных……………………………….15
- Разработка программного обеспечения ..……………………........17
Заключение……………………………………………………
Список использованной
литературы ..............................
Введение
Учёт подвижного состава железных дорог характеризуется работой с большим объемом информации, которая к тому же изменяется достаточно быстро. Проблема накопления и обработки информации являются одной из самых распространённых в практической деятельности предприятий и организаций. Предлагаемым кардинальным решением этой проблемы является разработка, внедрение и использование различных баз данных, позволяющих хранить и обрабатывать нужную информацию, а так же получать различного рода отчёты в нужной форме. Работа с использованием базы данных позволяет существенно повысить эффективность деятельности любого предприятия. Только с помощью базы данных, например, можно получить сведения о количестве свободных единиц подвижного состава для заданного поезда в указанную дату, найти свободного машиниста, выдать перечень вагонов находящихся в ремонте. Эффективность работы базы данных зависит непосредственно от времени, требуемого для выполнения доступа к информации, её обработки и вывода. Использование современных инструментов разработки позволяет создавать производительные и надёжные базы данных ориентированные на конкретные задачи предприятия, обеспечивающие контроль вводимых данных, хранение и поддержание целостности баз данных, а так же обработку и вывод информации в форме удобной для дальнейшего использования.
Выбор конкретной СУБД, где будет организованна база данных, имеет большое значение. В данном курсовом проекте база данных будет строиться в Microsoft Access. Это в настоящее время самая популярная настольная СУБД и является наиболее простым и доступным средством проектирования и разработки базы данных. Сила таких реляционных баз данных заключается в том, что они могут быстро найти и связать данные из различных таблиц при помощи запросов, форм и отчётов. Главными достоинствами этого программного продукта является его совместимость с большинством приложений Windows, легкость и удобство в эксплуатации, а так же возможность импорта или связывания данных из других приложений и файлов иных форматов. Допускается импорт не только таблиц, но и форм, отчётов из другой БД. Для управления доступа к данным используется конструктор форм. Для генерирования отчётов используется конструктор отчётов. Если необходимо разработать сложное приложение, то используются микрокоманды. Access допускает использование встроенных объектов (OLE). Access поддерживает встроенный язык запросов SQL.
Нашей задачей является: разработать базу данных для обеспечения информационных потребностей сотрудников железных дорог, предусматривающую возможность легкого просмотра необходимых данных, а также следующие приложения для работы с базой данных:
- Вывести состав поездной бригады для заданного поезда в указанную дату.
- Вывести перечень свободных единиц подвижного состава для заданного поезда в указанную дату.
- Вывести сводку локомотивов заданно типа и их общего количества с датами последнего ремонта.
- Найти свободного машиниста в указанную дату для заданного типа локомотива.
- Найти свободных проводников в указанную дату для заданного маршрута.
- Вывести перечень вагонов, находящихся в ремонте.
Приложения должны быть выполнены в виде SQL-запросов, по которым формируются отчеты для вывода нужной информации на печать.
Анализ предметной области
Проанализировав все требования, приходим к заключению, что учёт подвижного состава железной дороги можно представить одиннадцатью основными объектами:
- Вокзал – объект, отвечающий за хранение основной информации о вокзале.
- Тип вагона – объект, отвечающий за хранение информации о разновидности вагона.
- Тип локомотива – объект, отвечающий за хранение информации о разновидности локомотива.
- Вагон – объект, отвечающий за хранение информации о вагоне (марка, вид, стоимость и т. д.).
- Использование вагона – объект, отвечающий за хранение информации о состоянии вагона.
- Локомотив – объект, отвечающий за хранение информации о локомотиве.
- Использование локомотива – объект, отвечающий за хранение информации о состоянии локомотива.
- Поезд – объект, отвечающий за хранение информации о поезде (его номер, номер локомотива, тип поезда, дата отправления, прибытия и так далее).
- Кадры – объект, отвечающий за хранение информации обо всех специалистах.
- Бригада – объект, отвечающий за хранение информации о специалистах.
- Тип поезда – объект, отвечающий за хранение информации о разновидности поезда.
Детальное описание объектов приведено в таблице (Таблица 1).
Таблица 1.
№ п/п |
Объект |
Характеристика объекта |
1 |
2 |
3 |
1. |
Вокзал |
Наименование вокзала |
Адрес | ||
Начальник вокзала | ||
2. |
Тип вагона |
Наименование типа (купе, СВ, плацкарта, почтовый и т. д.) |
3. |
Тип локомотива |
Наименование типа (электровоз, тепловоз, паровоз и т. д.) |
4. |
Вагон |
Инвентарный номер |
Марка вагона | ||
Вид вагона | ||
Дата приписки | ||
Дата последнего ремонта | ||
Стоимость | ||
Номер поезда | ||
5. |
Использование вагона |
Инвентарный номер вагона |
Дата отправления | ||
Признак использования (в рейсе, в ремонте, в резерве) | ||
6. |
Локомотив |
Инвентарный номер |
Марка | ||
Вид локомотива | ||
Дата приписки | ||
Дата последнего ремонта | ||
Стоимость | ||
7. |
Использование локомотива |
Номер поезда |
Дата отправления | ||
Признак использования (в рейсе, в ремонте, в резерве) | ||
Инвентарный номер | ||
8. |
Поезд |
Номер поезда |
Номер локомотива | ||
Наименование вокзала | ||
Тип поезда (скорый, пассажирский, экспресс) | ||
Дата отправления | ||
Дата прибытия | ||
9. |
Кадры |
Табельный номер |
Фамилия, имя, отчество | ||
Специальность | ||
Адрес | ||
Стаж | ||
Оклад | ||
Рабочий маршрут | ||
Номер поезда | ||
Признак состояния (в рейсе, в резерве, в отпуске, болен) | ||
Номер бригады | ||
Дата отправления | ||
Продолжение таблицы 1. | ||
1 |
2 |
3 |
10. |
Бригада |
Номер бригады |
Номер поезда | ||
11. |
Тип поезда |
Наименование типа (скорый, почтовый и т.д.) |
Определимся с правилами взаимодействия для заданной предметной области. Рассмотрим отдельно каждый объект и наметим для него связи с другими объектами.
Очевидно, что объект Поезд должен быть связан с Вокзалом, что бы можно было установить через какой вокзал проезжает конкретный поезд. Также с Поездом должен быть связан Локомотив, так как конкретный локомотив принадлежит к конкретному поезду. С Локомотивом должны быть связанны Тип локомотива и Использование локомотива для получения дополнительной информации о локомотиве. Объект Бригада должен быть связан с Поездом, так как конкретная бригада принадлежит какому-то поезду. Для получения более подробной информации о бригаде, объект Бригада необходимо связать с Кадрами, а объект Вагон с Использованием вагона и Типом вагона.
- Разработка информационной модели данных
Информационная модель данных отражает структуру данных, описывающих предметную область и взаимодействие между объектами предметной области. Процесс создания информационной модели начинается с определения концептуальных требований к разработанной информационной системе. Эти требования объединяются в единую концептуальную модель. Концептуальная модель представляет собой объекты предметной области и их взаимосвязи, но не содержит вопросов реализации. Концептуальная модель служит основой для разработки логической модели данных. Логическая модель отражает логические связи между элементами данных с учётом реализации конкретной СУБД.
Взаимосвязь данных в модели была определена в предыдущем пункте, поэтому остается определиться с типом связи. Связь между таблицами определяет отношение подчинённости, при котором одна таблица является главной (родительской), а вторая – подчинённой (дочерней). Существуют следующие виды связи: отношение ''один-к-одному '', ''один-ко-многим'', ''много-к-одному '', ''многие-ко-многим ''.
Связь между объектами Поезд и Вокзал будет осуществляться по типу ''один-ко-многим'', так как объект Вокзал может содержать нескольких поездов, а в объекте Вокзал ключ вида является уникальным.
При связи ''один-ко-многим''
одной записи в первом объекте
может соответствовать
С Поездом должен быть связан Локомотив связью ''один-ко-многим'', так как объекту Поезд может быть сопоставлено несколько локомотивов, а в объекте Поезд ключ вида является уникальным.
Локомотив должны быть связан с Тип локомотива связью ''один-ко-многим'', так как локомотив бывает разных видов, а в объекте Тип локомотива ключ вида является уникальным.
Использование локомотива связанно с Локомотивом связью ''один-ко-многим'', а в объекте Локомотив ключ вида является уникальным.
Объект Бригада связан с Поездом связью ''один-ко-многим'', так как на конкретном поезде может работать несколько бригад. В объекте Поезд ключ вида является уникальным.
Объект Бригада необходимо связать с Кадрами связью ''один-ко-многим'', так как в одной бригаде могут работать несколько человек. В объекте Бригада ключ вида является уникальным.
Объект Вагон связан с Использованием вагона связью ''один-к-одному''. При этом типе связи, каждая запись одного объекта однозначно соответствует записи в другом объекте. В объекте Вагон и Использование вагона ключ вида является уникальным.
Объект Вагон связан с Типом вагона связью ''один-ко-многим'', так как вагоны бывают разных видов. В объекте Типом вагона ключ вида является уникальным.
На основании вышеизложенных рассуждений построим схему взаимосвязи между объектами с учетом типа связи (Рисунок 1):
Рисунок 1. «Взаимосвязь между объектами с учетом типа связи»
- Описание структуры базы данных
Описание структуры базы данных включает в себя описание таблиц и полей (с ограничениями значений), связей, первичных индексов и т.д.
Как уже упоминалось в информационной модели, в нашей базе данных мы выделяем одиннадцать таблиц:
1. Вокзал
2. Тип вагона
3. Тип локомотива
4. Вагон
5. Использование вагона
6. Локомотив
7. Использование локомотива
8. Поезд
9. Кадры
10. Бригада
11. Тип поезда
Таблица Вагон связана с таблицами Тип вагона и Использование вагона.
Таблица Поезд связана с таблицами Тип поезда, Вокзал, Бригада, Локомотив.
Таблица Локомотив связана с таблицей Использование локомотива.
Таблица Бригада связана с таблицей Кадры.
Связи осуществляются по типу – ''один-ко-многим'', ''много-к-одному''.
Связи между таблицами, представленные на схеме данных Microsoft Access представлены на рисунке 2.
Рисунок 2. «Связи между таблицами, представленные
на схеме данных Microsoft Access»
Вся наглядная информация о таблицах базы данных, их полях и связях между ними, а также о ключевых полях представлена в окне Схема данных, вызываемой командой Сервис | Схема данных верхнего меню Microsoft Access. Описание форматов всех полей вышеперечисленных таблиц приведено в следующей таблице (Таблица 2):
Таблица 2.
№ п/п |
Объект |
Характеристика объекта |
Тип данных |
1 |
2 |
3 |
4 |
1. |
Вокзал |
Наименование вокзала |
Текстовый |
Адрес |
Текстовый | ||
Начальник вокзала |
Текстовый | ||
Код наименования вокзала |
Числовой | ||
2. |
Тип вагона |
Наименование типа вагона |
Текстовый |
Код типа вагона |
Числовой | ||
3. |
Тип локомотива |
Наименование типа локомотива |
Текстовый |
Код типа локомотива |
Числовой |
Продолжение таблицы 2 | |||
1 |
2 |
3 |
4 |
4. |
Вагон |
Инвентарный номер вагона |
Числовой |
Марка вагона |
Текстовый | ||
Наименование типа вагона |
Текстовый | ||
Дата приписки |
Дата/время | ||
Дата последнего ремонта |
Дата/время | ||
Стоимость |
Денежный | ||
Номер поезда |
Числовой | ||
Код типа вагонов |
Числовой | ||
Код поезда |
Числовой | ||
5. |
Использование вагона |
Инвентарный номер вагона |
Числовой |
Дата отправления |
Дата/время | ||
Признак использования |
Текстовый | ||
Номер поезда |
Числовой | ||
6. |
Локомотив |
Инвентарный номер |
Числовой |
Марка |
Текстовый | ||
Наименование типа локомотива |
Текстовый | ||
Дата приписки |
Дата/время | ||
Дата последнего ремонта |
Дата/время | ||
Стоимость |
Денежный | ||
Код поезда |
Числовой | ||
Код типа локомотива |
Числовой | ||
7. |
Использование |
Дата отправления |
Дата/время |
локомотива |
Признак использования |
Текстовый | |
Инвентарный номер локомотива |
Числовой | ||
Номер поезда |
Числовой | ||
8. |
Поезд |
Код поезда |
Числовой |
Номер поезда |
Числовой | ||
Инвентарный номер локомотива |
Числовой | ||
Инвентарный номер вагона |
Числовой | ||
Поездная бригада |
Числовой | ||
Маршрут следования |
Текстовый | ||
Тип поезда |
Текстовый | ||
Дата отправления |
Дата/время | ||
Дата прибытия |
Дата/время | ||
Наименование вокзала |
Текстовый | ||
Код типа поезда |
Числовой | ||
Код наименования вокзала |
Числовой | ||
9. |
Тип поезда |
Код типа поезда |
Числовой |
Наименование типа поезда |
Текстовый | ||
10. |
Кадры |
Табельный номер |
Числовой |
Фамилия, имя, отчество |
Текстовый | ||
Специальность |
Текстовый | ||
Адрес |
Текстовый | ||
Стаж |
Числовой | ||
Продолжение таблицы 1 | |||
1 |
2 |
3 |
4 |
Оклад |
Денежный | ||
Рабочий маршрут |
Текстовый | ||
Номер бригады |
Числовой | ||
Номер поезда |
Числовой | ||
Признак состояния |
Текстовый | ||
Дата отправления |
Дата/время | ||
11. |
Бригада |
Номер бригады |
Числовой |
Номер поезда |
Числовой | ||
Код поезда |
Числовой | ||
- Разработка структуры базы данных.
Составим проекты таблиц,
которые будут затем
В таблицы можно вносить
Рисунок 3. Окно конструктора таблицы «Вокзал»
Поле Наименование вокзала имеет тип Текстовый, тип поля Адрес – Текстовый, тип поля Начальник вокзала – Текстовый и тип поля Код наименования вокзала – Числовой. Поле Код наименования вокзала является ключевым (совпадения не допускаются).
Некоторые примеры заполнения таблиц приведены на рисунках 4 - 8:
Рисунок 4. Таблица «Вокзал»
Рисунок 5. Таблица «Вагон»
Рисунок 6. Таблица «Локомотив»
Рисунок 7. Таблица «Тип вагона»
Рисунок 8. Таблица «Тип локомотива»
- Разработка программного обеспечения.
Перейдем к этапу разработки программного обеспечения. Этот этап особенно важен потому, что конечной целью нашей работы является разработка физической базы данных, с которой могли бы работать сотрудники железной дороги. В этой базе данных должны обеспечиваться основные функции пользовательского интерфейса – возможность удобного просмотра данных всех основных таблиц, внесение новых данных, а также получение определенных комбинаций необходимой информации из отчетов по запросам.
Создадим главную кнопочную форму (Рисунок 9):
Рисунок 9. Главная кнопочная форма «Главная»
При работе с этой формой пользователь определяет, желает ли он просто просмотреть данные таблиц или выполнить одно из приложений базы данных. В зависимости от его выбора либо запускается форма «Основные данные» (Рисунок 10):
Рисунок 10. Форма «Основные данные»
Форма «Основные данные» содержит кнопки, ссылающиеся на формы просмотра таблиц.
Так же с главной формы можно запустить форму «Запросы и отчеты», которая приведена на рисунке 11.
Рисунок 11. Форма «Запросы и отчеты»
Форма «Запросы и отчеты» содержит кнопки для выбора приложения, которое пользователь желает выполнить. Также пользователю предоставляется возможность выхода из Microsoft Access путем нажатия кнопки с крестиком.
Все три описанные формы создаются и редактируются (определяется положение кнопок, назначаются события) в режиме конструктора.
Для более удобного просмотра данных таблиц и внесения изменений создаются формы просмотра. Всего создается одиннадцать форм по числу таблиц. Названия форм соответствуют названиям таблиц. Все они создаются с помощью встроенного мастера создания форм Microsoft Access и редактируются в дальнейшем в режиме конструктора. При создании формы и при выборе вида формы, выбираем ленточный вид для более наглядного представления данных и возможности просмотра большего количества данных одновременно без перелистывания. В качестве стиля выберем, например стиль Международный. В качестве примера приведем скриншот формы «Вокзал» (Рисунок 12).
Рисунок 12. Форма «Вокзал»
Рассмотрим подробнее процесс создания форм в среде Microsoft Access. Форма была создана с помощью Мастера форм.
Рисунок 13. Создание формы
На этапе указания источника данных была выбрана Таблица: Вокзал, далее был выбран внешний вид формы: Ленточный.
Рисунок 14. Создание формы
Далее на форму вручную были добавлены кнопки печати, просмотра отчета, поиска, удаления записи. При их создании был использован Мастер создания компонентов формы. Создание некоторых кнопок приведено на рисунках 15 и 16.
Рисунок 15. Создание кнопки «Найти запись»
Рисунок 16. Создание кнопки «Просмотр отчета»
Также на форме размещены два компонента «Поле со списком», которые используются при сортировке. Они также были созданы с помощью мастера создания компонентов формы. Пример создания компонента «Поле со списком» и реализация сортировки приведены на рисунках 17 – 19.
Рисунок 17. Создание компонента «Поле со списком» для выбора типа сортировки
Рисунок 18. Создание компонента «Поле со списком» для выбора поля сортировки
На форме была размещена кнопка без использования мастера из стандартного набора компонентов. В окне свойств созданной кнопки во вкладке События из выпадающего меню был выбран пункт «[Процедура обработки событий]» и нажата кнопка «…».
Рисунок 19. Окно свойств компонента «КнопкаСортировкаВокзал»
После нажатия перед нами открывается окно Microsoft Visual Basic с процедурой обработки нажатия на кнопку (Рисунок 20).
Рисунок 20. Процедура обработки нажатия на кнопку «КнопкаСортировкаВокзал»
Исходный код сортировки:
Private Sub КнопкаСортировкаВокзал_Click()
If Me.ПолеСоСписком1.Value = "По убыванию" Then SortType = " DESC;" Else SortType = " ;" End If FieldToSort = Me.ПолеСоСписком10.Value
If Not IsNull(FieldToSort) Then SqlQuery = "SELECT Вокзал.* FROM Вокзал ORDER BY [Вокзал." + FieldToSort + "]" + SortType Set Me.Recordset = CurrentDb.OpenRecordset( Else
End If
End Sub |
В данном фрагменте сначала определяется тип выбранной сортировки,
который после записывается в переменную SortType. Далее в
переменную FieldToSort записывается выбранное пользователем поле
для сортировки. После производится проверка выбрано ли поле для
сортировки, если да то выполняется запрос SQL.
Выберем тип
сортировки и поле для
Рисунок 21. Форма «Вокзал» после сортировки
Отчет, открывается по нажатию на кнопку для просмотра отчета. Пример отчета представлен на рисунке 22.
Рисунок 22. Отчет по таблице «Вокзал»
Оставшиеся формы представлены на рисунках 23-33.
Рисунок 23. Форма «Поезд»
Рисунок 24. Форма «Тип поезда»
Рисунок 25. Форма «Вагон»
Рисунок 26. Форма «Тип вагона»
Рисунок 27. Форма «Исп вагона»
Рисунок 28. Форма «Локомотив»
Рисунок 29. Форма «Тип локомотива»
Рисунок 30. Форма «Исп локомотива»
Рисунок 31. Форма «Кадры»
Рисунок 32. Форма «Бригада»
Для работы с данными служат кнопки в форме «Запросы и отчеты». При нажатии на которые (возникает событие нажатие кнопки), выполняется макрос, который открывает соответствующую форму в режиме формы.
Большинство имеющихся форм создавалось с помощью мастера форм, после чего редактировалось с помощью утилиты Microsoft Access «Конструктор форм».
Как уже отмечалось, при работе в режиме просмотра запросов пользователь имеет возможность выбрать, в каком виде получить результаты выполнения запроса: либо это будут данные, отображающиеся в форме запроса (Рисунок 33), либо данные отображенные в таблице запроса (Рисунок 34), либо это будет отчет по запросу (Рисунок 35). Отчет открывается в режиме окна диалога при возникновении в родительской форме события «Нажатие кнопки» с помощью макроса. Также имеется кнопка «Общий отчет» (Рисунок 36), которая при нажатии показывает все содержимое запроса таблицы (Рисунок37).
Рисунок 33. Форма «Форма для запроса1»
Рисунок 34. Получение результатов выполнения запроса в виде данных сгенерированных в таблице
Рисунок 35. Получение результатов выполнения запроса в виде отчета
Рисунок 36. Общий отчет
Для разработки приложений будем пользоваться таким средством Microsoft Access как запросы. С помощью этого инструмента можно оперативно получить необходимую информацию. Поскольку Microsoft Access предоставляет разработчику возможность использовать не только встроенный редактор SQL-запросов, но и утилиту «Конструктор запросов», то создание самого запроса для получения требуемой информации становится и достаточно легким, не занимающим много времени.