Автоматизация учета работы автотранспортного предприятия
Систематизация учета необходимых данных о выполненных маршрутах с помощью программного приложения. Осуществление быстрого поиска информации о водителях выполнивших плановый рейс. Оценка экономической эффективности от внедрения программного приложения.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 30.06.2014 |
Размер файла | 2,3 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
ДИПЛОМНЫЙ ПРОЕКТ НА ТЕМУ:
Автоматизация учета работы автотранспортного предприятия
Содержание
Введение
1. Постановка задачи
2. Формализация
3. Описание среды программирования
3.1. Требования к техническому обеспечению
3.2. Требования к программному обеспечению
4. Методика разработки проекта
4.1. Алгоритмизация задачи
4.1.1. Описание алгоритма
4.1.2 Структурная схема
4.2. Программирование
4.3. Аномалии и защитное программирование
4.4. Тестирование и отладка
5. Анализ результатов решения
6. Инструкция пользователю
7. Экономическая часть
Заключение
Литература
Приложение
Введение
Автотранспортное предприятие МП ОПАТП осуществляет пассажирские перевозки, сопровождая плановые рейсы формированием определенной документации: формирование маршрутного журнала, листа-дохода кондукторов, учёт рабочего времени водителей.
На каждый рейс выдаётся «Путевой лист», который после окончания рабочего дня сдаётся диспетчеру.
Данные накапливаются, архивное хранение (на бумажном носителе) и поиск информации вручную становится трудоемким и не всегда эффективным способом обработки документов.
Разработка программного приложения, упростит учёт и заполнение необходимой документации, являющейся на сегодняшний день основной задачей работы диспетчера.
1. Постановка задачи
Задачей дипломного проекта является разработка программного приложения «Автоматизация учёта работы автотранспортного предприятия», которое позволит:
· Систематизировать учет необходимых данных о выполненных маршрутах
· Определить общий доход, полученный от реализации билетов
· Осуществлять быстрый поиск информации о водителях выполнивших плановый рейс
· Проводить автоматизированное рецензирование документации
· Формировать и выводить на печать необходимые документы и отчетные формы
Приложение будет разработано в среде Microsoft Visual Studio 2005(C#.NET), с использованием Microsoft SQL Server 2005.
2. Формализация
Для построения необходимо провести формализацию задачи, являющуюся необходимым этапом разработки задачи и заключающуюся в построении структуры таблиц для хранения информации, схемы их взаимосвязей и описания алгоритмов обработки.
Для создания базы данных, таблиц, представлений и хранимых процедур был написан SQL-сценарий, текст которого представлен в пункте V. «Приложение».
Схема данных:
Рис. 1
Как правило, разработка проекта реализации задачи выполняется в несколько этапов и начинается с анализа той информации, которая является выходной (таблицы Microsoft SQL Server), итоговая (конечная) форма для Microsoft Visual Studio 2005(C#.NET). Только после выяснения структуры и состава этой информации, формулировки запросов для получения отчетов можно сделать вывод о структуре и составе таблиц данных. Необходимым этапом формализации задачи является нормализация базы данных, которая, по сути, представляет собой процесс оптимизации хранения и использования информации в таблицах.
3. Описание среды программирования
Программа была разработана в среде Microsoft Visual Studio 2005 (C#.NET), с использованием Microsoft SQL Server 2005.
Microsoft SQL Server 2005
Большинство приложений баз данных со временем разрастаются, становятся более сложными и число их пользователей также растет. Microsoft SQL Server обеспечивает высокую производительность. SQL Server обеспечивает поддержку очень крупных баз данных, размером до одного терабайта. программное приложение водитель маршрут
SQL Server весьма эффективно работает в среде Microsoft Windows NT, обрабатывая запросы параллельно (с использованием естественных потоков команд в пределах одного процесса для обработки запросов пользователя) и снижая до минимума требования к памяти при добавлении пользователей.
Приложение Microsoft SQL Server с самого начала разрабатывалось как база данных в архитектуре клиент/сервер. Данные и индексы располагаются на одном сервере, доступ к которому часто осуществляется через сеть с нескольких клиентских компьютеров. SQL Server снижает загруженность сети, выполняя обработку запросов базы данных на сервере перед отправкой результатов на клиентский компьютер. Таким образом, создаваемые приложения в архитектуре клиент/сервер могут выполнять обработку там, где она выполняется лучше всего -- на сервере.
В приложении также могут использоваться сохранение процедуры и триггеры для централизации и разделения логики приложения, сложных запросов, а также для выполнения программ проверки условий на значение и целостности данных на сервере, а не на клиентском компьютере.
Microsoft SQL Server поддерживает огромные транзакции с ведением журнала транзакций, что гарантирует передачу или откат всех изменений, выполняемых в рамках транзакции.
Согласованность и возможность восстановления транзакций базы данных гарантируется даже в случае сбоя системы и при сложных обновлениях, выполняемых несколькими пользователями. SQL Server рассматривает все базы данных в пределах транзакции как одну обрабатываемую единицу. По определению, транзакция либо безопасно выполняется полностью с отражением всех результирующих изменений в базе данных, либо откатывается с отменой всех изменений в базе данных.
С помощью протокола двухуровневого завершения транзакций SQL Server может даже поддерживать синхронизированные транзакции, охватывающие несколько серверов, обеспечивая поддержание всех серверов сети в согласованном состоянии.
С помощью Microsoft SQL Server можно выполнять динамическое резервное копирование (добавочное или полное) базы данных во время ее использования. Таким образом, пользователи избавлены от необходимости выходить из базы данных для резервного копирования данных. Это позволяет использовать базу данных 24 часа в сутки, семь дней в неделю.
На случай сбоя системы (например, при аварийном завершении работы операционной системы или отключении питания) в Microsoft SQL Server имеется механизм автоматического восстановления базы данных до последнего состояния согласованности всего за несколько минут, причем вмешательство администратора базы данных не требуется. Важные приложения могут быть восстановлены и повторно запущены сразу же.
Microsoft Visual Studio 2005(C#.NET)
Специально для платформы .NET Microsoft был разработан новый язык программирования С#. С# -- это язык программирования, синтаксис которого очень похож на синтаксис Java (но не идентичен ему). Например, в С# (как в Java) определение класса состоит из одного файла (*.cs), в отличие от C++, где определение класса разбито на заголовок (*.h) и реализацию (*.срр). Однако называть С# клоном Java было бы неверно. Как С#, так и Java основаны на синтаксических конструкциях C++. Если Java во многих отношениях можно назвать очищенной версией C++, то С# можно охарактеризовать как очищенную версию Java.
Синтаксические конструкции С# унаследованы не только от C++, но и от Visual Basic. Например, в С#, как и в Visual Basic, используются свойства классов как C++, С# позволяет производить перегрузку операторов для созданных вами типов (Java не поддерживает ни ту, ни другую возможность). С# -- это фактически гибрид разных языков. При этом С# синтаксически не менее (если не более) чист, чем Java, так же прост, как Visual Basic, и обладает практически той же мощью и гибкостью, что и C++. Подводя итоги, еще раз выделим основные особенности С#.
· Указатели больше не нужны. В программах на С#, как правило, нет необходимости в работе с ними (однако если вам это потребуется, пожалуйста, -- возможности для работы с указателями в вашем распоряжении).
· Управление памятью производится автоматически.
· В С# предусмотрены встроенные синтаксические конструкции для работы с перечислениями, структурами и свойствами классов.
· В С# осталась возможность перегружать операторы, унаследованные от C++. При этом значительная часть возникавших при этом сложностей ликвидирована.
· Предусмотрена полная поддержка использования программных интерфейсов. Однако в отличие от классического СОМ применение интерфейсов -- это не единственный способ работы с типами, используя различные двоичные модули. .NET позволяет передавать объекты (как ссылки или как значения) через границы программных модулей.
· Также предусмотрена полная поддержка аспектно-ориентированных программных технологий (таких как атрибуты). Это позволяет присваивать типам характеристики (что во многом напоминает COM IDL) для описания в будущем поведения данной сущности. Возможно, самое важное, что необходимо сказать про язык С#, -- это то, что он генерирует код, предназначенный для выполнения только в среде выполнения .NET. Например, вы не сможете использовать С# для создания классического СОМ-сервера. Согласно терминологии Microsoft код, предназначенный для работы в среде выполнения .NET, -- это управляемый код (managed code). Двоичный файл, который содержит управляемый файл, называется сборкой (assembly).
3.1 Требования к техническому обеспечению
Для клиентского приложения:
· процессор частотой 600 МГц
· операционная система Windows XP или выше
· ОЗУ 512 Мб
· свободное место на жестком диске 100 Мб для приложения
Для сервера:
· процессор частотой 1 ГГц или выше
· операционная система Windows Server 2003
· ОЗУ 1 Гб
3.2 Требования к программному обеспечению
Для работы программы необходимо, чтобы на компьютере были установлены:
1. Операционная система Windows XP, Windows 7, Server 2003
2. .NET Framework 2.0
3. Установленный и работающий Microsoft SQL Server 2005
4. Методика разработки программы
Приложение разрабатывалось на основе схемы базы данных приведённой на Рисунке 1 в пункте 2. «Формализация».
Далее полностью приведена структура данной базы данных, состоящая из таблиц, а так же её описание, описание форм и отчетов, необходимых пользователю.
4.1 Алгоритмизация задачи
4.1.1 Описание алгоритма
С целью повышения надёжности и эффективности программного продукта, применялся метод нисходящего проектирования, и проходила следующие этапы:
· Определение входных и выходных данных;
· Выбор языка программирования;
· Поиск по различным критериям.
В ходе разработки программного продукта были созданы следующие таблицы:
Таблица №1 «Drivers»
Имя поля |
Тип данных |
Формат/размер поля |
Обязательное поле |
|
IDDriver (ключевое поле) |
int |
Счетчик |
Да |
|
LastName |
char(80) |
Текст/80 |
Да |
|
FirstName |
char(80) |
Текст/80 |
Да |
|
Patronymic |
char(80) |
Текст/80 |
Да |
|
Birthday |
datetime |
Дата |
Да |
|
PassportNumber |
char(10) |
Текст/10 |
Да |
|
DrivingLicence |
char(10) |
Текст/10 |
Да |
|
IDBus |
int |
Целое |
Да |
Таблица №2 «Conductors»
Имя поля |
Тип данных |
Формат/размер поля |
Обязательное поле |
|
IDConductor (ключевое поле) |
int |
Счетчик |
Да |
|
LastName |
char(80) |
Текст/80 |
Да |
|
FirstName |
char(80) |
Текст/80 |
Да |
|
Patronymic |
char(80) |
Текст/80 |
Да |
|
Birthday |
datetime |
Дата |
Да |
|
PassportNumber |
char(10) |
Текст/10 |
Да |
Таблица №3 «Buses»
Имя поля |
Тип данных |
Формат/размер поля |
Обязательное поле |
|
IDBus (ключевое поле) |
int |
Счетчик |
Да |
|
Breand |
char(80) |
Текст/80 |
Да |
|
StateNumber |
char(10) |
Текст/10 |
Да |
|
Speedometer |
int |
Целое |
Да |
Таблица №4 «Routes»
Имя поля |
Тип данных |
Формат/размер поля |
Обязательное поле |
|
IDRoute (ключевое поле) |
int |
Счетчик |
Да |
|
NameRoute |
char(80) |
Текст/80 |
Да |
|
Direction |
char(200) |
Текст/200 |
Да |
|
Length |
int |
Целое |
Да |
|
Trips |
int |
Целое |
Да |
|
Revenue |
money |
Целое |
Да |
|
Fuel |
int |
Целое |
Да |
|
ExitTime |
datetime |
Время |
Да |
|
ReturnTime |
datetime |
Время |
Да |
Таблица №5 «Distance»
Имя поля |
Тип данных |
Формат/размер поля |
Обязательное поле |
|
IDRecord (ключевое поле) |
int |
Счетчик |
Да |
|
IDBus |
int |
Целое |
Да |
|
Date |
datetime |
Дата |
Да |
|
Distance |
int |
Целое |
Да |
Таблица №6 «Revenue»
Имя поля |
Тип данных |
Формат/размер поля |
Обязательное поле |
|
IDRecord (ключевое поле) |
int |
Счетчик |
Да |
|
IDConductor |
int |
Целое |
Да |
|
Data |
datetime |
Дата |
Да |
|
PlannedRevenue |
money |
Целое |
Да |
|
ActualRevenue |
money |
Целое |
Да |
|
IDRoute |
int |
Целое |
Да |
|
IDDriver |
int |
Целое |
Да |
|
Change |
int |
Целое |
Да |
Таблица №7 «WaySheets»
Имя поля |
Тип данных |
Формат/размер поля |
Обязательное поле |
|
IDSheet (ключевое поле) |
int |
Счетчик |
Да |
|
NumberSheet |
char(10) |
Текст/10 |
Да |
|
IDDriver |
int |
Целое |
Да |
|
IDConductor |
int |
Целое |
Да |
|
IDBus |
int |
Целое |
Да |
Таблица №8 «WaySheet»
Имя поля |
Тип данных |
Формат/размер поля |
Обязательное поле |
|
IDSheet (ключевое поле) |
int |
Счетчик |
Да |
|
NumberSheet |
char(80) |
Текст/80 |
Да |
|
Date |
datetime |
Дата |
Да |
|
DateDay |
char(20) |
Текст/20 |
Да |
|
BrendBus |
char(20) |
Текст/20 |
Да |
|
StateNumberBus |
char(10) |
Текст/10 |
Да |
|
Driver |
char(80) |
Текст/80 |
Да |
|
IDDriver |
int |
Целое |
Да |
|
Conductor |
char(80) |
Текст/80 |
Нет |
|
IDConductor |
int |
Целое |
Нет |
|
NameRoute |
char(80) |
Текст/80 |
Нет |
|
Change |
int |
Целое |
Нет |
|
ExitInRoute |
int |
Целое |
Нет |
|
Distance |
int |
Целое |
Нет |
|
PlannedTrip |
int |
Целое |
Нет |
|
ActualTrip |
int |
Целое |
Нет |
|
PlannedExit |
datetime |
Время |
Нет |
|
ActualExit |
datetime |
Время |
Нет |
|
PlannedReturn |
datetime |
Время |
Нет |
|
ActualReturn |
datetime |
Время |
Нет |
|
PlannedSpendFuel |
int |
Целое |
Нет |
|
ActualSpendFuel |
int |
Целое |
Нет |
|
Repairs |
datetime |
Время |
Нет |
|
TO2 |
datetime |
Время |
Нет |
|
Stopping |
datetime |
Время |
Нет |
|
Reserve |
datetime |
Время |
Нет |
|
SpeedometerExit |
int |
Целое |
Нет |
|
SpeedometerReturn |
int |
Целое |
Нет |
|
PlannedRevenue |
money |
Целое |
Нет |
|
ActualRevenue |
money |
Целое |
Нет |
Таблица №8 «WorkedTime»
Имя поля |
Тип данных |
Формат/размер поля |
Обязательное поле |
|
IDRecord (ключевое поле) |
int |
Счетчик |
Да |
|
IDDriver |
int |
Целое |
Да |
|
WorkedTime |
datetime |
Время |
Да |
|
Date |
datetime |
Дата |
Да |
|
IDBus |
int |
Целое |
Да |
|
IDRoute |
int |
Целое |
Да |
|
PlannedTrip |
int |
Целое |
Да |
|
ActualTrip |
int |
Целое |
Да |
|
Distance |
int |
Целое |
Да |
|
SpendFuel |
int |
Целое |
Да |
|
Change |
int |
Целое |
Да |
|
ExitInRoute |
int |
Целое |
Да |
|
Reserve |
datetime |
Время |
Нет |
|
Stopping |
datetime |
Время |
Нет |
|
Repairs |
datetime |
Время |
Нет |
|
TO2 |
datetime |
Время |
Нет |
4.1.2 Структурная схема
4.2 Программирование
В соответствии с структурной схемой, приведенной выше в пункте 4.1.2. в представленной программе разработаны программные модули на
Microsoft Visual Studio 2005(C#.NET).
Тексты программных модулей приведены в пункте V. «Приложение».
4.3 Аномалии и защитное программирование
Описание аномалии |
Реакции на аномалию |
Способ защиты |
|
Попытка добавить значение NULL |
Вывод текстового сообщения без изменения структуры |
Защищено программно |
|
Ввод в числовые поля текстовых значений |
Запрет ввода текстовых значений в числовые поля |
Защищено программно |
|
Ввод в текстовые поля цифровых значений |
Запрет ввода цифровых значений в текстовые поля |
Защищено программно |
|
Ввод неправильного значения времени (вроде 45:85) |
Проверка введённого значения с диапазоном от 00:00 до 23:59. При несоответствии отображение значка ошибки возле текстового поля и передача ему фокуса ввода. |
Защищено программно |
|
Ввод несуществующей записи в базе о водителе, кондукторе, автобусе или маршруте |
Выбор из списка |
Защищено программно |
4.4 Тестирование и отладка
Тестирование - процесс многократного выполнения программы с целью выявления ошибок. Отладка - исправление ошибок, найденных с помощью тестирования.
Необходимой частью каждого теста должно являться описание ожидаемых результатов работы программы, чтобы можно было быстро выяснить наличие или отсутствие ошибки в ней. В любой организации, занимающийся разработкой программных продуктов имеются специальные люди (Тестеры), занимающиеся тестированием программ которые выявляют ошибки и недоработки в программе и сообщают о них программистам, которые в свою очередь их исправляют.
Но наиболее эффективно тестирование проводится при эксплуатации программы в реальных условиях и реальными пользователями, которые сообщают обо всех найденных ошибках разработчику, который в последствии занимается их исправлением.
Так как в данном случае разработкой занимается не организация, а один человек то и тестирование и исправление тоже осуществляется одним человеком, что менее эффективно и является очень длительным процессом.
Данный проект разрабатывался и тестировался одновременно, то есть каждый раз при разработке какой либо новой части программы, написанная ранее программа проверялась на работоспособность и корректировалась с учётом найденных ошибок.
5. Анализ результатов решения
В соответствии с пунктом 4.4 тестирование и отладка производились непосредственно во время разработки проекта. После завершения работы над программой было еще раз произведено полное тестирование.
Все найденные ошибки были успешно устранены.
Получившийся в результате программный продукт удовлетворяет всем предъявленным требованиям, полностью работоспособен, не требует принципиальных доработок, и готов к эксплуатации.
6. Инструкция пользователю
Программа служит для эффективной и быстрой работы с информацией о выполненных маршрутах, рабочем времени водителей, доходов кондукторов от реализации билетов, а также для автоматического составления различных отчетов на основе информации, которая занесена в базу данных.
Программа позволяет значительно экономить рабочее время сотрудника организации (диспетчера).
Внедрение программы поможет существенно снизить нагрузку при обработке информации и оформлении необходимой документации.
Запуск программы
Запуск программы осуществляется двойным нажатием левой клавиши мыши на ярлыке программы. После запуска программного продукта на экране появится «Главная форма», которая выглядит следующим образом:
Рис. 2
Описание главного меню программы.
Рис. 3 Меню «Справочники»
Меню «Справочники» существует для быстрого доступа к формам, на которых находится интересующая вас информация.
Рис. 4 Справочник №1: Водители
Данный справочник предоставляет возможность просмотра, добавления, удаления данных о водителях.
Рис. 5
На форме «Новый водитель» можно добавить данные о новом водителе.
Рис. 6 Справочник №2: Автобусы
Данный справочник предоставляет возможность просмотра, добавления, удаления данных об автобусах.
Рис. 7
На форме «Новый автобус» можно добавить данные о новом автобусе.
Рисунок 8 Справочник №3: Кондуктора
Данный справочник предоставляет возможность просмотра, добавления, удаления данных о кондукторах.
Рис. 9
На форме «Новый кондуктор» можно добавить данные о новом кондукторе.
Рис. 10 Справочник №4: Маршруты
Данный справочник предоставляет возможность просмотра, добавления, удаления данных о маршрутах.
Рис. 11
На форме «Новый маршрут» можно добавить данные о новом маршруте.
Рис. 12 Справочник №5: Отработанное время водителей
Данный справочник предоставляет информацию об отработанном времени водителей, также можно осуществлять поиск по одному или нескольким критериям.
Рис. 13
На форме «Поиск» можно выбрать один или несколько критериев для поиска.
Рис. 14 Справочник №6: Пробег автобусов
Данный справочник предоставляет информацию о пробеге автобусов, также можно осуществлять поиск по одному или нескольким критериям.
Рис. 15
На форме «Поиск» можно выбрать один или несколько критериев для поиска.
Рис. 16 Справочник №7: Пробег автобусов
Данный справочник предоставляет информацию о выручке кондукторов, также можно осуществлять поиск по одному или нескольким критериям.
Рис. 17
На форме «Поиск» можно выбрать один или несколько критериев для поиска.
Рис. 18 Справочник №6: Пробег автобусов
Данный справочник предоставляет краткую информацию о путевых листах. При двойном нажатии левой кнопки на путевом листе, можно получить полную информацию, также можно осуществлять поиск по одному или нескольким критериям.
Рис. 19
На форме «Поиск» можно выбрать один или несколько критериев для поиска.
Рис. 20 Меню «Документы»
Меню «Документы » существует для доступа к форме «Путевой лист», с помощью которой можно добавить путевой лист в базу данных.
Рис. 21
Рисунок 10 Меню «Отчёты»
Отчеты в данном программном приложении созданы при помощи Reporting Services.
Reporting Services
Службы SQL Server 2005 Reporting Services (SSRS) представляют собой платформу отчетов на основе сервера, которая обеспечивает комплексное ведение отчетов для данных из реляционных и многомерных источников данных. Службы Reporting Services включают компоненты для разработки: полный набор инструментов, который можно использовать для создания отчетов и управления ими, и API-интерфейс, позволяющий разработчикам выполнять интеграцию и расширение данных, а также обработку отчетов в пользовательских приложениях. Создаваемые отчеты могут основываться на реляционных или многомерных данных SQL Server, служб Analysis Services, Oracle или любого другого поставщика данных Microsoft .NET Framework, такого как ODBC или OLE DB.
При помощи служб Reporting Services можно создавать интерактивные, табличные и другие отчеты, получение данных в которых происходит через запланированные интервалы времени или по требованию при открытии отчета. Службы Reporting Services также позволяют пользователям создавать нерегламентированные отчеты, основанные на предопределенных моделях, а также исследовать данные модели отчета в интерактивном режиме. Все отчеты могут подготавливаться как в формате обычного документа, так и в виде веб-страницы. Формат подготавливаемого отчета выбирается из списка доступных форматов исходя из требований к обработке или печати данных.
Службы Reporting Services представляют собой серверное решение. Это дает возможность централизованного хранения и управления отчетами, обеспечивает безопасный доступ к отчетам, моделям и папкам, а также позволяет контролировать обработку и распространение отчетов и стандартизовать их использование в бизнесе.
Рис. 30 Реестр путёвок водителей
В данном отчёте приводится информация о работе кондуктора за период времени.
Рис. 31 Лист-дохода кондукторов
В данном отчёте приводится информация о выручки всех кондукторов.
Рис. 32 Сводный журнал по маркам
В данном отчёте предоставляется информация об автобусах.
Меню «Помощь»
В этом меню можно посмотреть «Справку» и открыть окно «О программе»
Рис. 4
7. Экономическая часть
Для того чтобы данный проект был реализован на МП ОПАТП необходимо подсчитать годовой экономический эффект от внедрения программного продукта “Автоматизация учёта работы автотранспортного предприятия”.
Экономический эффект - это, прежде всего, экономия денежных средств. Экономическим эффектом данного программного проекта будет экономия рабочего времени. Так как сотрудников мало, а работы, которую должен выполнить сотрудник, очень много, это программное обеспечение поможет сотруднику потратить меньшее количество времени.
Распределение трудоемкости по стадиям разработки внедрению проекта приведено в таблице №1.
Этап разработки |
Характеристика |
Трудоёмкость (час.) |
|
Постановка задачи |
Предпроектное обследование. Разработка, утверждение, технико-экономическое обследование. |
11 |
|
Составление технического проекта |
Уточнение структуры и формы представления входных и выходных данных (алгоритм и структура), Разработка плана мероприятий по проекту. Согласование утверждение технического проекта. |
42 |
|
Составление рабочего проекта |
Написание программы на языке программирования. Первоначальная отладка, тестирование. Разработка согласование и утверждения порядка и методики испытания. Корректировка программы. |
87 |
|
Документирование и внедрение |
Разработка программной документации. Сдача программы и программной документации. |
26 |
|
ИТОГО: |
166 ч. |
Расчет коэффициентов
Коэффициент сложности задачи C - характеризует сложность данной программы по отношению к типовой задаче, сложность которой принята за 1 (величина C лежит в пределах от 0,5 до 1). Так как в данной программе разработаны формы, имеющие в себе наиболее удобный поиск информации, всевозможные отчёты, для данной программы C = 0,8.
Коэффициент P увеличения объёма работ за счёт внесения изменений в алгоритм или программу по результатам уточнения установок. Коэффициент меняется от 0,1 до 0,5. Заказчик четко описал конечный результат, который должен выдаваться данным программным обеспечением, однако некоторые изменения и доработки все же придётся внести. Необходимо принять во внимание, что в данном случае заказчик не имел глубоких компьютерных знаний и не мог изначально объяснить задачу в целом. Это приводило к неоднократным доработкам, модернизациям и корректировке. Лучше всего взять среднее значение коэффициента равное 0,3.
Коэффициент В - коэффициент увеличения затрат труда вследствие недостаточного описания задач. Коэффициент меняется от 1 до 1,5. Так как задача имеет достаточное описание для работы с ней, возьмем коэффициент равный 1.
Коэффициент квалификации разработчика К определяется в зависимости от стажа работы и составляет: для работающих до двух лет - 0,8; от трех лет до пяти лет - 1,0; от пяти до восьми - 1,2; более восьми лет - 1,5. Поскольку стажа работы по специальности у меня нет, возьмем К = 0,8.
Расчет затрат предприятия.
В связи с коэффициентами заработной платы основная заработная плата разработчика программного продукта составит:
З/Посн = оклад * С * (Р+1) * В * К = (9000 руб. * 0,8 * (0,3 + 1) * 1 * 0,8) = 7488 руб. - в месяц
Поскольку дополнительная заработная плата в виде премии работнику за это время не выплачивалась, то суммарная заработная плата (ЗПсум) будет равна основной заработной плате:
З/Псум = З/Посн = 7488 руб.
Страховые отчисления берутся в размере 34% от основной заработной платы:
Со = З/Посн * 34%
Со = 7488 руб. * 34% = 2545,92 руб.
Суммарные затраты предприятия на заработную плату разработчика за время разработки программного продукта с учетом страховых отчислений:
З/Побщ = (ЗПосн + страховые отчисления) * 166 / (8ч * 22дня) = (7488 + 2545,92) * 166 /( 8 * 22) = 9463,8 руб.
Содержание и эксплуатация вычислительной техники
Для расчета затрат данного вида необходимо иметь значения следующих показателей:
1. Стоимость потребляемой электроэнергии
2. Амортизационные отчисления
3. Техническое обслуживание, или затраты на ремонт
Стоимость 1 КВТ/час электроэнергии составляет 4 руб.
Один компьютер потребляет в среднем 300 Вт в час.
За год отчисления за электроэнергию, потребляемую одной ЭВМ, составляет:
8ч. * 22дня * 12мес. * 0,3КВт/ч. * 4 руб. = 2534,4 руб.
Амортизационные отчисления зависят от срока полезного использования ПК. Если срок эксплуатации ПК еще не истек, то необходимо исчислять амортизационные отчисления и учитывать их в дальнейших расчетах.
Затраты на амортизацию = стоимость ПК/срок полезного использования.
Стоимость компьютера равна 22000руб. Количество лет полезного использования 4 года.
Поскольку компьютер по-прежнему находится в эксплуатации, отчисления составят: 22000 руб. / 4 года = 5500 руб.
Затраты на ремонт ПЭВМ составляют 5% от его стоимости:
22000/100*5 = 1100 руб.
Фвт - действительный фонд времени работы вычислительного комплекса.
Фвт = Фном - Фпроф.
Фном - номинальный фонд работы ПК.
Фпроф - годовые затраты времени на профилактические работы. (5% от Фном)
Фном = 8 *22 *12 = 2112 часов в год.
Фпроф = 2112 /100*5 = 106 часов в год.
Фвт = 2112 - 106 = 2006 часов.
Стоимость 1 часа работы ПК = (стоимость электроэнергии в год + стоимость амортизации за год + затраты на ремонт за год) / Фвт.
Стоимость 1 часа работы ПК = (2534,4 + 5500 + 1100)/2006 = 4,6 руб.
Содержание и эксплуатация ПК = Стоимость 1 часа работы ПК * Число часов отладки = 4,6 * 155 = 713 руб.
Работа с данным программным продуктом не требует приобретения нового компьютера, т.к. имеющийся ПК полностью соответствует системным требованиям. Наем нового работника не обязателен, т.к. данный продукт прост в использовании и имеет удобный пользовательский интерфейс, поэтому любой из имеющихся в штате служащих может легко научиться использовать данный программный продукт для экономии своих временных ресурсов.
Затраты на разработку и внедрение проекта приведены в таблице №2.
№ |
Наименование статьи расходов |
Затраты (руб.) |
|
1 |
Зарплата суммарная исполнителя |
7488 руб. |
|
2 |
Страховые отчисления |
2545,92 руб. ? 2546 руб. |
|
3 |
Затраты на эксплуатацию ПК, используемого для написания программы |
713 руб. |
|
Итого: |
10034 руб. |
Расчет экономического эффекта от разработки и внедрения программного продукта
Рассчитаем экономический эффект, получаемый за счет экономии рабочего времени сотрудника. Благодаря этой экономии он сможет выполнить большее количество работ.
Для ведения расчетов введем следующие обозначения:
Т1- время, затрачиваемое на операции до внедрения программного продукта;
Т2- время, затрачиваемое на операции после внедрения программного продукта.
1. До внедрения программы большая часть документации заполнялась вручную. Сотрудник в среднем тратил на 1 операцию около 10 минут. Также на поиск данных вручную уходило около 10 минут. Общее число операций равно 10.
Т1 = 20мин. или 0,33часа.
2. После внедрения программы время сократится, и будет составлять 12 мин., за счет уменьшения времени выполнения операций и простоты использования программы:
Т2 = 12мин. или 0,2ч.
?t = 20 - 12 = 8мин. или 0,133 часа.
3. Рассчитаем стоимость выполняемых работ сотрудника притом, что в месяц он работает 8ч*22дня = 176 часов. Должностной оклад сотрудника автотранспортного предприятия 11000 рублей. Следовательно, стоимость 1 часа работы = 11000/176 = 62,5руб.
Страховые взносы, начисляемы на з/п = 11000*0,34/176 = 21,25 руб.
Определяем суммарные затраты работника с учетом страховых взносов = 62,5 + 21,25 = 83,75 руб. в час - Рсумм.
4. Расчет годовой экономии экономического эффекта и срока окупаемости.
Рассчитывается годовая экономия времени, обусловленная внедрением программного продукта. Перемножим выигранное время на проведение операции, количество операций, количество рабочих дней в месяце, количество рабочих месяцев.
?Т = 0,2 * 10 * 22 * 12 = 528 часа.
Рассчитывается размер годовой экономии от внедрения программного продукта: ?Т * Рсумм = 528 * 83,75 = 44220 руб.
Экономический эффект составляет величину, равную годовой экономии средств за вычетом затрат на разработку и реализацию программного продукта = 44220 - 10034 = 34186руб.
Расчет срока окупаемости = 10034/44220 = 0,23 года.
Вывод: разработанное и реализованное программное приложение окупится менее, чем за 3 месяца, что является приемлемым в качестве срока окупаемости затрат по автоматизации рабочего процесса.
Заключение
В данном дипломном проекте было разработано программное приложение в среде Microsoft Visual Studio 2005(C#.NET) с использованием базы данных Microsoft SQL Server 2005, которое автоматизирует учет работы автотранспортного предприятия и значительно экономит рабочее время сотрудника организации (диспетчера).
Данное программное приложение позволяет осуществлять поиск информации по различным критериям, вводить данные, производить расчеты по выполненным маршрутам, а так же выводить на печать необходимую документацию.
Оценка экономической эффективности от внедрения программного приложения, показала, что данное программное обеспечение экономически выгодно и может быть одобрено при внедрении.
Срок окупаемости программы составляет 3 месяца.
Литература
1) http://msdn.microsoft.com/ru-ru/library/cc879262.aspx - справочник по SQL Server
2) http://msdn.microsoft.com/ru-ru/library/dd642420.aspx - справочник по C#.NET
3) http://www.sql.ru/forum/actualtopics.aspx?bid=1 - форум по SQL Server
4) http://www.sql.ru/forum/actualtopics.aspx?bid=34 - форум по C#.NET
5) Бен Форта «Освой самостоятельно SQL. 10 минут на урок», “И.Д.Вильямс” 2010
6) Браст Эндрю Дж., Форте С Разработка приложений на основе Microsoft SQL Server 2005.,Microsoft Press, 2012
Приложение
SQL- сценарий
USE master
GO
-----// Создание БД с параметрами по умолчанию //-----
CREATE DATABASE Autotransportation
GO
USE Autotransportation
GO
-----// Создание таблиц //-----
CREATE TABLE WaySheets
(
IDSheet int IDENTITY(1,1) PRIMARY KEY,
NumberSheet char(80) NOT NULL,
Date datetime NOT NULL,
IDDriver int NOT NULL,
IDBus int NOT NULL,
IDConductor int NULL
)
GO
CREATE TABLE WaySheet
(
IDSheet int IDENTITY(1,1) PRIMARY KEY,
NumberSheet char(80) NOT NULL,
Date datetime NOT NULL,
DateDay char(20) NOT NULL,
BrendBus char(20) NOT NULL,
StateNumberBus char (10) NOT NULL,
Driver char(80) NOT NULL,
IDDriver int NOT NULL,
Conductor char(80) NULL,
IDConductor int NULL,
NameRoute char(80) NULL,
Change int NULL,
ExitInRoute int NULL,
Distance int NULL,
PlannedTrip int NULL,
ActualTrip int NULL,
PlannedExit char(5) NULL,
ActualExit char(5) NULL,
PlannedReturn char(5) NULL,
ActualReturn char(5) NULL,
PlannedSpendFuel int NULL,
ActualSpendFuel int NULL,
Repairs char(5) NULL,
TO2 char(5) NULL,
Stopping char(5) NULL,
Reserve char(5) NULL,
SpeedometerExit int NULL,
SpeedometerReturn int NULL,
PlannedRevenue money NULL,
ActualRevenue money NULL
)
GO
CREATE TABLE Drivers
(
IDDriver int IDENTITY(300,1) PRIMARY KEY,
LastName char(80) NOT NULL,
FirstName char(80) NOT NULL,
Patronymic char(80) NOT NULL,
Birthday datetime NOT NULL,
PassportNumber char(10) NOT NULL,
DrivingLicence char(10) NOT NULL,
IDBus int NOT NULL
)
GO
CREATE TABLE WorkedTime
(
IDRecord int IDENTITY(1,1) PRIMARY KEY,
IDDriver int NOT NULL,
WorkedTime datetime NULL,
Date datetime NOT NULL,
IDConductor int NOT NULL,
IDBus int NOT NULL,
IDRoute int NULL,
PlannedTrip int NULL,
ActualTrip int NULL,
Distance int NULL,
SpendFuel int NULL,
Change int NULL,
ExitInRoute int NULL,
Reserve datetime NULL,
Stopping datetime NULL,
Repairs datetime NULL,
TO2 datetime NULL
)
GO
CREATE TABLE Conductors
(
IDConductor int IDENTITY(200,1) PRIMARY KEY,
LastName char(80) NOT NULL,
FirstName char(80) NOT NULL,
Patronymic char(80) NOT NULL,
Birthday datetime NOT NULL,
PassportNumber char(10) NOT NULL
)
GO
CREATE TABLE Revenue
(
IDRecord int IDENTITY(1,1) PRIMARY KEY,
IDConductor int NOT NULL,
Date datetime NOT NULL,
PlannedRevenue money NOT NULL,
ActualRevenue money NOT NULL,
IDRoute int NOT NULL,
IDDriver int NOT NULL,
IDBus int NOT NULL,
Change int NOT NULL
)
GO
CREATE TABLE Buses
(
IDBus int IDENTITY(1,1) PRIMARY KEY,
Brend char(80) NOT NULL,
StateNumber char(6) NOT NULL,
Speedometer int NOT NULL
)
GO
CREATE TABLE Distance
(
IDRecord int IDENTITY(1,1) PRIMARY KEY,
IDBus int NOT NULL,
Date datetime NOT NULL,
Distance int NOT NUlL
)
GO
CREATE TABLE Routes
(
IDRoute int IDENTITY(1,1) PRIMARY KEY,
NameRoute char(80) NOT NULL,
Direction char(200) NULL,
Length int NOT NULL,
Trips int NOT NULL,
Revenue money NOT NULL,
Fuel int NOT NULL,
ExitTime datetime NOT NULL,
ReturnTime datetime NOT NULL
)
GO
-----// Создание представлений //-----
CREATE VIEW SearchDriversView AS
SELECT RTRIM(LastName) + ' ' + SUBSTRING(FirstName,1,1) + '.' + SUBSTRING(Patronymic,1,1) + '.' AS Driver
FROM Drivers
GO
CREATE VIEW SearchConductorView AS
SELECT RTRIM(LastName) + ' ' + SUBSTRING(FirstName,1,1) + '.' + SUBSTRING(Patronymic,1,1) + '.' AS Conductor
FROM Conductors
GO
CREATE VIEW SearchBusView AS
SELECT RTRIM(Brend) + ' (' + RTRIM(StateNumber) + ')' AS Bus
FROM Buses
GO
CREATE VIEW WaySheetsView AS
SELECT RTRIM(NumberSheet) AS NumberSheet, Date,
(SELECT RTRIM(LastName) + ' ' + SUBSTRING(FirstName,1,1) + '.' + SUBSTRING(Patronymic,1,1) + '.' FROM Drivers WHERE Drivers.IDDriver = WaySheets.IDDriver) AS Driver,
(SELECT RTRIM(Brend) + ' (' + RTRIM(StateNumber) + ')' FROM Buses WHERE Buses.IDBus = WaySheets.IDBus) AS Bus,
(SELECT RTRIM(LastName) + ' ' + SUBSTRING(FirstName,1,1) + '.' + SUBSTRING(Patronymic,1,1) + '.' FROM Conductors WHERE Conductors.IDConductor = WaySheets.IDConductor) AS Conductor
FROM WaySheets
GO
CREATE VIEW WaySheets1View AS
SELECT RTRIM(NumberSheet) AS NumberSheet, Date, IDDriver,
(SELECT RTRIM(LastName) + ' ' + SUBSTRING(FirstName,1,1) + '.' + SUBSTRING(Patronymic,1,1) + '.' FROM Drivers WHERE Drivers.IDDriver = WaySheets.IDDriver) AS Driver,
(SELECT RTRIM(Brend) + ' (' + RTRIM(StateNumber) + ')' FROM Buses WHERE Buses.IDBus = WaySheets.IDBus) AS Bus,
(SELECT RTRIM(LastName) + ' ' + SUBSTRING(FirstName,1,1) + '.' + SUBSTRING(Patronymic,1,1) + '.' FROM Conductors WHERE Conductors.IDConductor = WaySheets.IDConductor) AS Conductor
FROM WaySheets
GO
CREATE VIEW WaySheetWiew AS
SELECT RTRIM(NumberSheet) AS NumberSheet, Date, RTRIM(DateDay) AS DateDay, RTRIM(BrendBus) AS BrendBus, StateNumberBus,
RTRIM(Driver) AS Driver, IDDriver, RTRIM(Conductor) AS Conductor, IDConductor, RTRIM(NameRoute) AS NameRoute, Change,
ExitInRoute, Distance, PlannedTrip, ActualTrip, PlannedExit, ActualExit, PlannedReturn, ActualReturn, PlannedSpendFuel,
ActualSpendFuel, Repairs, TO2, Stopping, Reserve, SpeedometerExit, SpeedometerReturn, PlannedRevenue, ActualRevenue
FROM WaySheet
GO
CREATE VIEW BusesView AS
SELECT RTRIM(Brend) AS Brend, RTRIM(StateNumber) AS StateNumber, Speedometer
FROM Buses
GO
CREATE VIEW ConductorsView AS
SELECT IDConductor, RTRIM(LastName) + ' ' + SUBSTRING(FirstName,1,1) + '.' + SUBSTRING(Patronymic,1,1) + '.' AS Conductor,
RTRIM(LastName) AS LastName, RTRIM(FirstName) AS FirstName, RTRIM(Patronymic) AS Patronymic, Birthday,
SUBSTRING(PassportNumber, 1, 4) + ' ' + SUBSTRING(PassportNumber, 5, 6) AS PassportNumber
FROM Conductors
GO
CREATE VIEW Conductors1View AS
SELECT IDConductor, RTRIM(LastName) + ' ' + SUBSTRING(FirstName,1,1) + '.' + SUBSTRING(Patronymic,1,1) + '.' AS Conductor,
RTRIM(LastName) AS LastName, RTRIM(FirstName) AS FirstName, RTRIM(Patronymic) AS Patronymic, Birthday,
SUBSTRING(PassportNumber, 1, 4) + ' ' + SUBSTRING(PassportNumber, 5, 6) AS PassportNumber
FROM Conductors
GO
CREATE VIEW DriversView AS
SELECT IDDriver, RTRIM(LastName) + ' ' + SUBSTRING(FirstName, 1, 1) + '.' + SUBSTRING(Patronymic, 1, 1) + '.' AS Driver,
RTRIM(LastName) AS LastName, RTRIM(FirstName) AS FirstName, RTRIM(Patronymic) AS Patronymic, Birthday,
SUBSTRING(PassportNumber, 1, 4) + ' ' + SUBSTRING(PassportNumber, 5, 6) AS PassportNumber,
SUBSTRING(DrivingLicence, 1, 4) + ' ' + SUBSTRING(DrivingLicence,5, 6) AS DrivingLicence,
(SELECT RTRIM(Brend) + ' (' + RTRIM(StateNumber) + ')' FROM Buses WHERE Drivers.IDBus = Buses.IDBus) AS Bus
FROM Drivers
GO
CREATE VIEW Drivers1View AS
SELECT IDDriver, RTRIM(LastName) + ' ' + SUBSTRING(FirstName, 1, 1) + '.' + SUBSTRING(Patronymic, 1, 1) + '.' AS Driver,
RTRIM(LastName) AS LastName, RTRIM(FirstName) AS FirstName, RTRIM(Patronymic) AS Patronymic, Birthday,
SUBSTRING(PassportNumber, 1, 4) + ' ' + SUBSTRING(PassportNumber, 5, 6) AS PassportNumber,
SUBSTRING(DrivingLicence, 1, 4) + ' ' + SUBSTRING(DrivingLicence,5, 6) AS DrivingLicence,
(SELECT RTRIM(Brend) + ' (' + RTRIM(StateNumber) + ')' FROM Buses WHERE Drivers.IDBus = Buses.IDBus) AS Bus
FROM Drivers
GO
CREATE VIEW DistanceView AS
SELECT
(SELECT RTRIM(Brend) + ' (' + RTRIM(StateNumber) + ')' FROM Buses WHERE Distance.IDBus = Buses.IDBus) AS Bus,
Date, Distance
FROM Distance
GO
CREATE VIEW RevenueView AS
SELECT
(SELECT RTRIM(LastName) + ' ' + SUBSTRING(FirstName, 1, 1) + '.' + SUBSTRING(Patronymic, 1, 1) + '.' FROM Conductors WHERE Revenue.IDConductor = Conductors.IDConductor) AS Conductor,
Date, PlannedRevenue, ActualRevenue,
(SELECT RTRIM(NameRoute) FROM Routes WHERE Revenue.IDRoute = Routes.IDRoute) AS NameRoute,
(SELECT RTRIM(LastName) + ' ' + SUBSTRING(FirstName, 1, 1) + '.' + SUBSTRING(Patronymic, 1, 1) + '.' FROM Drivers WHERE Revenue.IDDriver = Drivers.IDDriver) AS Driver,
(SELECT RTRIM(Brend) + ' (' + RTRIM(StateNumber) + ')' FROM Buses WHERE Buses.IDBus = Revenue.IDBus) AS Bus,
Change
FROM Revenue
GO
CREATE VIEW Revenue1View AS
SELECT
(SELECT RTRIM(LastName) + ' ' + SUBSTRING(FirstName, 1, 1) + '.' + SUBSTRING(Patronymic, 1, 1) + '.' FROM Conductors WHERE Revenue.IDConductor = Conductors.IDConductor) AS Conductor,
Date, PlannedRevenue, ActualRevenue, IDConductor,
(SELECT RTRIM(NameRoute) FROM Routes WHERE Revenue.IDRoute = Routes.IDRoute) AS NameRoute,
(SELECT RTRIM(LastName) + ' ' + SUBSTRING(FirstName, 1, 1) + '.' + SUBSTRING(Patronymic, 1, 1) + '.' FROM Drivers WHERE Revenue.IDDriver = Drivers.IDDriver) AS Driver,
(SELECT RTRIM(Brend) + ' (' + RTRIM(StateNumber) + ')' FROM Buses WHERE Buses.IDBus = Revenue.IDBus) AS Bus,
Change
FROM Revenue
GO
CREATE VIEW WorkedTimeView AS
SELECT
(SELECT RTRIM(LastName) + ' ' + SUBSTRING(FirstName,1,1) + '.' + SUBSTRING(Patronymic,1,1) + '.' FROM Drivers WHERE Drivers.IDDriver = WorkedTime.IDDriver) AS Driver,
WorkedTime, Date,
(SELECT RTRIM(LastName) + ' ' + SUBSTRING(FirstName, 1, 1) + '.' + SUBSTRING(Patronymic, 1, 1) + '.' FROM Conductors WHERE Conductors.IDConductor = WorkedTime.IDConductor) AS Conductor,
(SELECT RTRIM(Brend) + ' (' + RTRIM(StateNumber) + ')' FROM Buses WHERE Buses.IDBus = WorkedTime.IDBus) AS Bus,
(SELECT RTRIM(NameRoute) FROM Routes WHERE WorkedTime.IDRoute = Routes.IDRoute) AS NameRoute,
PlannedTrip, ActualTrip, Distance, SpendFuel, Change, ExitInRoute, Reserve, Stopping, Repairs, TO2
FROM WorkedTime
GO
CREATE VIEW WorkedTime1View AS
SELECT
(SELECT RTRIM(LastName) + ' ' + SUBSTRING(FirstName,1,1) + '.' + SUBSTRING(Patronymic,1,1) + '.' FROM Drivers WHERE Drivers.IDDriver = WorkedTime.IDDriver) AS Driver,
WorkedTime, Date, IDDriver, IDConductor,
(SELECT RTRIM(LastName) + ' ' + SUBSTRING(FirstName, 1, 1) + '.' + SUBSTRING(Patronymic, 1, 1) + '.' FROM Conductors WHERE Conductors.IDConductor = WorkedTime.IDConductor) AS Conductor,
(SELECT RTRIM(Brend) + ' (' + RTRIM(StateNumber) + ')' FROM Buses WHERE Buses.IDBus = WorkedTime.IDBus) AS Bus,
(SELECT RTRIM(NameRoute) FROM Routes WHERE WorkedTime.IDRoute = Routes.IDRoute) AS NameRoute,
PlannedTrip, ActualTrip, Distance, SpendFuel, Change, ExitInRoute, Reserve, Stopping, Repairs, TO2
FROM WorkedTime
GO
CREATE VIEW RoutesView AS
SELECT RTRIM(NameRoute) AS NameRoute, RTRIM(Direction) AS Direction, Length, Trips, Revenue, Fuel, ExitTime, ReturnTime
FROM Routes
GO
-----// Создание хранимых процедур //-----
----- Процедура добавления нового автобуса -----
--Параметры передаваемые хранимой процедуре
CREATE PROCEDURE NewBus @brend char(80), @statenumber char(10), @spedometer int
AS
--Добавление нового товара
INSERT INTO Buses(Brend, StateNumber, Speedometer)
VALUES (@brend, @statenumber, @spedometer)
GO
----- Процедура добавления нового водителя -----
--Параметры хранимой процедуры
CREATE PROCEDURE NewDriver @lastName char(80), @firstName char(80), @patronymic char(80), @birthday datetime,
@passportSerial char(4), @passportNumber char(6), @drivingLicenceSerial char(4), @drivingLicenceNumber char(6),
@brendBus char(80), @stateNumberBus char(10)
AS
--Обьявляем переменую для хранения IDBus
DECLARE @idBus int
--Получение кода автобуса и присваем IDBus переменой
SELECT @idBus = (SELECT IDBus FROM Buses WHERE Brend = @brendBus AND StateNumber = @stateNumberBus)
--Обьявляем переменые для хранения PassportNumber и DrivingLicence
DECLARE @passport char(10)
DECLARE @drivingLicence char(10)
--Получаем PassportNumber и DrivingLicence и присваиваем переменым
SELECT @passport = @passportSerial + @passportNumber
SELECT @drivingLicence = @drivingLicenceSerial + @drivingLicenceNumber
--Теперь добавляем нового водителя
INSERT INTO Drivers(LastName, FirstName, Patronymic, Birthday, PassportNumber, DrivingLicence, IDBus)
VALUES (@lastName, @firstName, @patronymic, @birthday, @passport, @drivingLicence, @idBus)
GO
----- Процедура добавления нового кондуктора -----
--Параметры хранимой процедуры
CREATE PROCEDURE NewConductor @lastName char(80), @firstName char(80), @patronymic char(80), @birthday datetime,
@passportSerial char(4), @passportNumber char(6)
AS
--Обьявляем переменую для хранения PassportNumber
DECLARE @passport char(10)
--Получаем PassportNumber и присваиваем переменой
SELECT @passport = @passportSerial + @passportNumber
--Добавляем нового кондуктора
INSERT INTO Conductors (LastName, FirstName, Patronymic, Birthday, PassportNumber)
VALUES (@lastName, @firstName, @patronymic, @birthday, @passport)
GO
----- Процедура добавления нового маршрута -----
--Параметры хранимой процедуры
CREATE PROCEDURE NewRoute @nameRoute char(80), @direction char(200), @length int, @trips int
AS
--Добавляем нового маршрута
INSERT INTO Routes (NameRoute, Direction, Length, Trips)
VALUES (@nameRoute, @direction, @length, @trips)
GO
----- Процедура удаление водителя -----
--Параметры хранимой процедуры
CREATE PROCEDURE RemoveDriver @number int
AS
-- Удаляем водителя по табельному номеру
DELETE FROM Drivers
WHERE Drivers.IDDriver = @number
GO
----- Процедура удаление кондуктора -----
--Параметры хранимой процедуры
CREATE PROCEDURE RemoveConductor @lastName char(20), @firstName char(20), @patronymic char(30)
AS
-- Объявляем переменную для хранения IDConductor
DECLARE @number int
-- Получаем IDConductor и присваиваем переменой
SELECT @number = (SELECT IDConductor FROM Conductors WHERE Conductors.LastName = @lastName AND
Conductors.FirstName = @firstName AND Conductors.Patronymic = @patronymic)
-- Удаляем кондуктора по IDConductor
DELETE FROM Conductors
WHERE Conductors.IDConductor = @number
GO
----- Процедура удаление автобуса -----
--Параметры хранимой процедуры
CREATE PROCEDURE RemoveBus @stateNumber char(10)
AS
-- Удаляем автобус по StateNumber(Гос. номеру)
DELETE FROM Buses
WHERE Buses.StateNumber = @stateNumber
GO
----- Процедура удаление маршрута -----
--Параметры хранимой процедуры
CREATE PROCEDURE RemoveRoute @nameRoute char(20)
AS
-- Удаляем маршрут по NameRout(Названию маршрута)
DELETE FROM Routes
WHERE Routes.NameRoute = @nameRoute
GO
---- Процедура добавления путевого листа, если нет простоя ----
--Параметры хранимой процедуры--
CREATE PROCEDURE AddWaySheet @number char(10), @date datetime, @dateDay char(20), @brendBus char(20), @stateNumberBus char(10), @driverName char(20), @driverNumber char(6), @conductorName char(20), @conductorNumber char(6), @nameRoute char(80), @change int, @exitInRoute int, @distance int, @plannedTrip int, @actualTrip int, @plannedExit char(5), @actualExit char(5), @plannedReturn char(5), @actualReturn char(5), @plannedSpendFuel int, @actualSpendFuel int, @reserve char(5), @speedometerExit int, @speedometerReturn int, @plannedRevenue money, @actualRevenue money
AS
-- Объявление переменых для хранения IDDriver, IDConductor, IDBus и IDRoute --
DECLARE @idDriver int
DECLARE @idConductor int
DECLARE @idBus int
DECLARE @idRoute int
-- Обьявление переменых для вычисления отработоного времени --
DECLARE @exit datetime
DECLARE @return datetime
-- Объявление переменой для хранения отработанного времени --
DECLARE @workedTime datetime
-- Присвоение значений переменым --
SELECT @idDriver = CONVERT(int, SUBSTRING(@driverNumber, 3, 3))
SELECT @idConductor = CONVERT(int, SUBSTRING(@conductorNumber, 3, 3))
SELECT @idBus = (SELECT IDBus FROM Buses WHERE Buses.StateNumber = @stateNumberBus)
SELECT @idRoute = (SELECT IDRoute FROM Routes WHERE Routes.NameRoute = @nameRoute)
SELECT @exit = CONVERT(datetime, @actualExit, 108)
SELECT @return = CONVERT(datetime, @actualReturn, 108)
SELECT @workedTime = @return - @exit
-- Добавление записей в таблицу WaySheets --
INSERT INTO WaySheets (NumberSheet, Date, IDDriver, IDBus, IDConductor)
VALUES ('Путевой лист ' + @number, @date, @idDriver, @idBus, @idConductor)
-- Добавление записей в таблицу WaySheet --
INSERT INTO WaySheet (NumberSheet, Date, DateDay, BrendBus, StateNumberBus, Driver, IDDriver, Conductor, IDConductor, NameRoute, Change,ExitInRoute, Distance, PlannedTrip, ActualTrip, PlannedExit, ActualExit, PlannedReturn, ActualReturn, PlannedSpendFuel, ActualSpendFuel, Reserve, SpeedometerExit, SpeedometerReturn, PlannedRevenue, ActualRevenue)
VALUES ('Путевой лист ' + @number, @date, @dateDay, @brendBus,@stateNumberBus, @driverName, @idDriver, @conductorName,@idConductor, @nameRoute, @change, @exitInRoute, @distance, @plannedTrip, @actualTrip, @plannedExit, @actualExit, @plannedReturn, @actualReturn, @plannedSpendFuel, @actualSpendFuel, @reserve,speedometerExit,@speedometerReturn,@plannedRevenue, @actualRevenue)
-- Добавление записей в таблицу Revenue --
INSERT INTO Revenue (IDConductor, Date, PlannedRevenue, ActualRevenue, IDRoute, IDDriver, IDBus, Change)
VALUES (@idConductor, @date, @plannedRevenue, @actualRevenue, @idRoute, @idDriver, @idBus, @change)
-- Добавление Записей в таблицу Distance --
INSERT INTO Distance (IDBus, Date, Distance)
VALUES (@idBus, @date, @distance)
-- Обновление спидометра в таблийе Buses --
UPDATE Buses
SET Speedometer = @speedometerReturn
WHERE Buses.IDBus = @idBus
-- Проверяется есть ли Резерв --
IF (@reserve = '00:00')
BEGIN
-- Добавление записей в таблицу WorkedTime --
INSERT INTO WorkedTime (IDDriver, WorkedTime, Date, IDConductor, IDBus, IDRoute, PlannedTrip, ActualTrip, Distance, SpendFuel, Change,ExitInRoute, Reserve, Stopping, Repairs, TO2)
VALUES (@idDriver, @workedTime, @date, @idConductor, @idBus, @idRoute, @plannedTrip, @actualTrip, @distance, @actualSpendFuel, @change, @exitInRoute, NULL, NULL, NULL, NULL)
Подобные документы
Анализ входной и выходной информации на предприятии. Осуществление функционального и информационного моделирования базы данных, создание ее структуры. Программная реализация системы автоматизации учета работы автотранспорта. Оценка трудоемкости проекта.
дипломная работа [1,2 M], добавлен 09.07.2012Автоматизация учета клиентов организации с помощью программного пакета "1С: Предприятие", предназначенного для обработки больших объемов числовой информации, которые могут быть сведены в табличную форму. Обоснование экономической эффективности разработки.
дипломная работа [5,1 M], добавлен 28.06.2011Разработка программного приложения по автоматизированному учету поступающего довольствия. Описание среды программирования. Тестирование и отладка приложения. Анализ результатов решения. Инструкция пользователю. Требования к техническому обеспечению.
дипломная работа [946,0 K], добавлен 18.07.2014Нормативно-правовое регулирование учета валютных операций, их классификация. Автоматизация задачи учета операций с иностранной валютой с помощью создания приложения для совершения и учета валютно-обменных операций. Форма с входными данными для расчета.
курсовая работа [588,1 K], добавлен 23.06.2011Разработка программного приложения WindowsForms для работы с базой данных на языке высокого уровня C# в автономном режиме с использованием ADO.NET. Проектирование реляционной модели базы данных, интерфейса приложения, основных функций и возможностей.
курсовая работа [4,3 M], добавлен 30.06.2015Функциональное назначение программы "Автоматизация учета выпускаемой продукции"; описание ее логической структуры, необходимых входных и выходных данных, процедур вызова и загрузки. Определение экономического эффекта от внедрения программного продукта.
дипломная работа [336,0 K], добавлен 14.04.2014Изучение возможностей среды программирования delphi при разработке приложения с визуальным интерфейсом. Отладка программных модулей с использованием специализированных средств. Способы работы с динамическими массивами. Оптимизация программного кода.
курсовая работа [1,0 M], добавлен 23.12.2016Разработка программного продукта для сбора, хранения и предоставления информации о туристических маршрутах, контроля продаж туристических путевок, учета клиентов, формирования и печати форм выходной информации. Выбор технологии доступа к данным.
курсовая работа [2,3 M], добавлен 28.08.2023Разработка и тестирование конфигурации программного обеспечения на платформе среды "1С: Предприятие 7.7." для автоматизации учета поступления и расхода товаров в баре бильярдного клуба "Пирамида". Экономическая оценка эффективности от его внедрения.
дипломная работа [3,2 M], добавлен 18.07.2014Проектирование логической схемы данных для предметной области, физической модели базы данных. Разработка алгоритмов функциональных модулей программного приложения. Принципы тестирования спроектированного программного обеспечения, анализ эффективности.
курсовая работа [926,7 K], добавлен 20.05.2015