Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Автоматизация учета расхода топлива и электроэнергии на предприятии Мосгостранс»

Содержание:

Введение

Городской пассажирский транспорт определяют как: городской вид транспорта, выполняющий регулярные перевозки пассажиров по установленным и фиксированным на длительный период времени маршрутам, известным населению.

Однако с ростом городов и городского пассажирского транспорта происходит увеличение транспортной активности населения, что неизбежно приводит к увеличению нагрузки на систему городского пассажирского транспорта. Общественный транспорт оказывается не в состоянии справиться с увеличивающимися объемами перевозки пассажиров и сохранением требуемого уровня качества. На сегодняшний день внедрение современных методов управления с использование ИТ является очень актуальной темой в связи с быстро развивающейся конъюнктурой транспортного хозяйства. В рамках представленной курсовой работы планируется автоматизация процесса обработки данных городского пассажирского транспорта.

К основной роли городского пассажирского транспорта можно отнести возможность экономии времени, затраченного на перемещение населения между различными районами города. Использование транспорта позволяет в значительной мере увеличить радиус контактов современного жителя мегаполиса.

Тема работы: Автоматизация учёта расхода топлива и электроенергии на предприятии МосГосТранс.

Цель работы – автоматизация учёта расхода топлива и электроенергии на предприятии МосГосТранс. В рамках курсовой работы планируется разработка web-приложения с помощью языка программирования PHP и СУБД MySQL. Web-приложение должно организовывать обработку данных пассажиропотока и расхода топлива (электроэнергии) транспортных средств и давать рекомендации по изменению маршрутов согласно заданным нормам. Эффективность разработки заключается в сокращении времени процедур согласования документации и принятия решений, повышении исполнительской дисциплины, сокращении непроизводственных затрат рабочего времени сотрудников и минимизации финансовых затрат на документооборот.

Предметом исследования являются процесс контроля норм расхода топлива (электроэнергии) и пассажиропотока в транспортной сети.

Задачи исследования:

- необходимо провести анализ предметной области,

- необходимо спроектировать реляционную базу данных,

-  проектирование приложения с web интерфейсом,

- реализовать базу данных и запросы на выборку к базе данных, разработать графический интерфейс пользователя,

- протестировать web-приложение,

- подготовить руководство пользователя и администратора.

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

1. Технико-экономическая характеристика предметной области и предприятия

1.1 Характеристика предприятия и его деятельности

ГУП «Мосгостранс» — Данная компания является в столице основной и занимается организацией движения городского надземного и подземного пассажирского транспорта.

Эта компания, на сегодняшний день обслуживает около 700 маршрутов автобусных транспортных средств, а так же троллейбусов и трамваев.

Основным парком транспортных средств Мосгостранс является около 8 тысяч единиц транспортной техники, а так же около 6 тысяч автобусов и чуть менее 2х тысяч троллейбусов. Транспортные средства новых моделей являются более комфортабельными для пассажиров а так же являются более технически совершенными и надежными в плане обслуживания и ремонтопригодности на предприятии. Содержат новейшие системы навигации и контроля пропуска пассажиров.

Компания содержит 23 филиала, и 10 автобусных-трллейбусных парков, в трамвайном депо и управлении имеется 5 площадок, а так же многие другие технические службы, для бесперебойной работы транспортной системы и транспортных средств.

В компании трудятся около 28 тысяч сотрудников , которые в свою очередь отвечают за повышение комфортабельности перемещения пассажиров а так же за бесперебойную работу транспортной сети.

Данная компания входит в сбор Российских а так же международных союзов.

Мосгостранс содержит в своей структуре 16 автобусных парков , 7 троллейбусных, такое количество депо и парков так же обеспечивает компании бесперебойную работу и в свою очередь справляется с заданным пассажиропотоком. Пять трамвайных депо и шесть строительных управлений, а так же включает в себя около 10 предприятий проекта НИИ.

В структуре Мосгостранс недавно был включен ЗелАО и его транспортная система.

Все финансовые потоки в компании находятся под регламентом бухгалтерского учета, многие методы отражены в политике работы компании

Структуры доходов, расходов и себестоимости приведены на рисунках 1.1-1.3.

Рисунок 1.1 - Структура доходов ГУП «Мосгостранс»

Рисунок 1.2 - Структура расходов ГУП «Мосгостранс»

Рисунок 1.3 - Структура себестоимости ГУП «Мосгостранс»

Учетная политика ГУП «Мосгостранс» утверждается ежегодно приказом в соответствии с п. 3 ст. 5 Федерального закона от 21.11.1996 г. № 129-ФЗ «О бухгалтерском учете»; учетная политика разработана, на основе указанного Федерального закона, Положений по ведению бухгалтерского учета, бухгалтерской отчетности в РФ, Приказа Минфина РФ от 29.07.1998 г. № 34 и других инструктивных, методических документов, и условий хозяйствования предприятия.

1.2 Организационная структура управления предприятием

Система транспорта в городских условиях, имеет большое значение для населения и обеспечения перевозок в городах. Ведь это повышает комфортабельность поселения и благоприятно влияет как на само население так и инфраструктуру.

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

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

Вся система управления транспортом относящимся к пассажироперевозкам можно разделить на два подразделения, одно из них – это отдел пассажирских перевозок, а второе бюро служб движения, их основной работой являются следующие задачи , указанные на рисунке 1.4

Рисунок 1.4- Транспортное управление города

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

- система диспетчерского управления города занимается вопросами урегулирования движения транспорта

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

- диспетчерская система транспорта не подходящего не под один тип (альтернативный транспорт).

1.3 Выбор комплекса задач автоматизации и характеристика существующих бизнес процессов

Целью курсовой работы является реализация информационной системы «Автоматизация учёта расхода топлива и электроенергии на предприятии МосГосТранс» с помощью языка программирования PHP и СУБД MySQL. Web-приложение должно организовывать обработку данных пассажиропотока и расхода топлива транспортных средств и давать рекомендации по изменению маршрутов согласно заданным нормам.

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

1) Создать единую базу данных, содержащую сведения о:

    1. Транспортных компаниях (филиалах) и сотрудниках, которые работают в компаниях;
    2. Маршрутах с информацией о:

1.2.1) Типе транспорта, который курсирует по маршруту;

1.2.2) Нормах пассажиропотока и расхода топлива на маршруте;

1.2.3) Показателях пассажиропотока и расхода топлива на маршруте, которые предоставило транспортное средство;

    1. Типах транспорта и транспортных средствах, которые принадлежат транспортным компаниям;
  1. Организовать процесс ввода, удаления, изменения данных;
  2. Организовать возможность автоматической проверки вводимых данных с помощью встроенных инструментов СУБД;
  3. Разработать процедуры формирования отчетов по заданным признакам с рекомендациями или замечаниями по показателям пассажиропотока и расхода топлива;
  4. Обеспечить безопасность ИС за счет разграничения прав доступа к сайту.

В результате разработки должны быть достигнуты следующие показатели:

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

Опишем существующую предметную технологию с помощью IDEF0 диаграммы. Управление на диаграмме это – справочная информация о маршрутах и автотранспорте, нормы расхода топлива (электроэнергии), нормы пассажиропотока, исполняющий механизм – нормоконтролер. Входными данными системы являются информация о расходах топлива (электроэнергии), информация о пассажиропотоке, запрос отчета с замечаниями и рекомендациями. Выходными данными является отчет с замечаниями и рекомендациями. Контекстная диаграмма приведена на рисунке 1.5.

Рис. 1.5 Контекстная диаграмма

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

Рис. 1.6 Декомпозиция 1-го уровня

В результате декомпозиции получены элементарные работы, дальнейшая декомпозиция не требуется. Модель IDEF0 построена.

2. Информационное обеспечение задачи

2.1 Информационная модель и её описание

Для построения информационной модели используем средство MS Visio, который входит в пакет программ MS Office.

Информационная модель в нотации Питера Чена построена в MS Visio и изображена на рисунке 2.1.

Рисунок 2.1 Информационная модель, нотация Питера Чена

Сущности определены исходя из анализа предметной области и постановки задачи. Сотрудники работают в транспортных компаниях, при этом транспорт принадлежит компании и сотрудник компании отвечает за конкретное транспортное средство. Транспортное средство в свою очередь демонстрирует показатели пассажиропотока и расхода топлива на конкретном маршруте. Маршрут имеет свои нормы пассажиропотока и расхода топлива. В контроле соответствия показателей нормам и заключается работа системы.

2.2 Используемые классификаторы и системы кодирования

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

Описание и перечень классификаторов указаны в таблице 2.1.

Таблица 2.1

Состав классификаторов

Наименование реквизита

Длина кода в знаках

Система кодирования

Вид классификатора

Структура кода

VIN

4

Порядковая

Общесистемный

XХXXXХXXXX

ПТС

3

Порядковая

Общесистемный

XХXXXХXXXX

Регистрационныйномер

4

Порядковая

Общесистемный

XNNNXX

Телефон

4

Порядковая

Общесистемный

XХXXXХXXXX

ИНН

10

Порядковая

Общесистемный

XХXXXХXXXX

КПП

9

Порядковая

Общесистемный

XХXXXХXXX

БИК

9

Порядковая

Общесистемный

XХXXXХXXX

Расчетный счет

25

Порядковая

Общесистемный

ААА-ББ-ВВВ-Г-ДДДД-ЕЕЕЕЕЕЕ

Корреспондентский счёт

20

Порядковая

Общесистемный

XXXXXXXXXXXXXXXX

2.3 Характеристика нормативно-справочной, входной и оперативной информации

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

  1. Транспортных компаниях и сотрудниках, которые работают в компаниях;
  2. Маршрутах с информацией о:

2.1. Типе транспорта, который курсирует по маршруту;

2.2 Нормах пассажиропотока и расхода топлива на маршруте;

2.3 Показателях пассажиропотока и расхода топлива на маршруте, которые предоставило транспортное средство;

3. Типах транспорта и транспортных средствах, которые принадлежат транспортным компаниям.

2.4 Характеристика результатной информации

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

1. Отчет по заданным признакам с рекомендациями или замечаниями по показателям пассажиропотока и расхода топлива на предмет их соответствия нормам;

2. Отчет по организациям (количество ТС, которые не укладываются в нормы);

3. Отчет по маршрутам (количество ТС, которые не укладываются в нормы);

4. Отчет по типам ТС (количество ТС, которые не укладываются в нормы).

3. Программное обеспечение задачи

3.1 Общие положения (дерево функций и сценарий диалога)

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

Рисунок 3.1 Диаграмма размещения

Таким образом, серверная часть состоит из:

а) сервер базы данных с установленной MySQL;

б) web-сервера Apache версии 1.3;

в) транслятора PHP версии 5.1.

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

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

Для построения UML-диаграмм используем средство MS Visio, который входит в пакет программ MS Office.

Диаграмма вариантов использования представлена на рисунке 3.2.

Рисунок 3.2 – Диаграмма вариантов использования

На диаграмме представлены следующие действующие лица:

  1. Пользователь – нормоконтроллёр, который отвечает за ввод данных в систему и контроль выполнения норм расхода топлива и пассажиропотока по маршрутам.
  2. Администратор – отвечает за регистрацию новых пользователей в системе.

Диаграмма последовательности— это упорядоченная по времени диаграмма взаимодействия пользователя и системы, читать ее следует сверху вниз. Диаграмма последовательности работы сайта представлена на рисунке 3.3.

Рисунок 3.3 - Диаграмма последовательности

Администратор регистрирует пользователя в системе. Зарегистрированный пользователь получает от администратора логин/пароль и авторизуется в системе. После этого авторизованный пользователь добавляет данные о маршруте, нормах и показателях, по мере получения этих данных. При необходимости пользователь может запросить статистику по нормам и показателям и экспортировать эти данные в Excel.

3.2 Характеристика базы данных

Для построения модели данных используется инструмент – ERWin (средство разработки структуры базы данных). CASE-средство обладает удобным интерфейсом и позволяет построить логическую и физическую модели под выбранную СУБД. В линейку продуктов Erwin входят CASE-средства проектирования, сопровождения и документирования баз данных, функционального моделирования бизнес-процессов и проверки моделей данных.

Логическая модель данных представлена на рисунке 3.4.

Рисунок 3.4 – Логическая модель данных

Связи между сущностями неидентифицирующие, мощностью 1 к N.

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

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

Рисунок 3.5 – Физическая модель данных

Описание модели представлено в таблицах 3.1-3.6.

Таблица 3.1

Таблица «Организация»

Атрибут

Тип данных

Описание

idcompany

integer

Счетчик, первичный ключ

company

varchar(40)

Наименование компании

address

varchar(60)

Адрес компании

phone

varchar(10)

Телефон компании

info

varchar(120)

Реквизиты

Таблица 3.2

Таблица «Показатели»

Атрибут

Тип данных

Описание

idrating

integer

Счетчик, первичный ключ

idtransport

integer

Внешний ключ, таблица «Транспорт»

month

integer

Отчетный месяц

year

integer

Отчетный год

traffic

integer

Пассажиропоток за месяц

fuel

integer

Расход топлива/электроэнергии за месяц

Таблица 3.3

Таблица «Транспорт»

Атрибут

Тип данных

Описание

idtransport

integer

Счетчик, первичный ключ

idtypetransport

integer

Внешний ключ, таблица «Тип транспорта»

idcompany

integer

Внешний ключ, таблица «Организация»

idworker

integer

Внешний ключ, таблица «Сотрудник»

vin

varchar(20)

ВИН транспорта

pts

varchar(20)

ПТС транспорта

model

varchar(20)

Модель транспорта

number

varchar(20)

Регистрационный номер

capacity

integer

Вместимость

Таблица 3.4

Таблица «Маршрут»

Атрибут

Тип данных

Описание

idtrip

integer

Счетчик, первичный ключ

idtypetransport

integer

Внешний ключ, таблица «Тип транспорта»

trip

varchar(20)

Название маршрута

trafficnorm

integer

Норма пассажиропотока

fuelnorm

integer

Норма расхода топлива/электроэнергии

file

varchar(40)

Название файла со схемой маршрута

Таблица 3.5

Таблица «Тип транспорта»

Атрибут

Тип данных

Описание

idtypetransport

integer

Счетчик, первичный ключ

typetransport

varchar(40)

Тип транспорта

Таблица 3.6

Таблица «Сотрудник»

Атрибут

Тип данных

Описание

idworker

integer

Счетчик, первичный ключ

idcompany

integer

Внешний ключ, таблица «Организация»

worker

varchar(60)

ФИО сотрудника

phone

varchar(20)

Телефон сотрудника

seniority

datetime

Стаж сотрудника

post

varchar(20)

Должность сотрудника

datebirth

datetime

Дата рождения сотрудника

login

varchar(20)

Логин

parol

varchar(20)

Пароль

3.3 Структурная схема пакета (дерево вызова программных модулей)

Диаграмма компонентов (рисунок 3.6) обеспечивает согласованный переход от логического представления к конкретной реализации проекта в форме программного кода. Диаграмма компонентов позволяет определить архитектуру разрабатываемой системы, установив зависимости между программными компонентами, в роли которых может выступать исходный, бинарный и исполняемый код. В нашем случае разработки web-приложения модуль или компонент соответствует файлу с php-скриптом страницы web-приложения.

Рис.3.6 – Диаграмма компонентов

3.4 Описание программных модулей

Web-приложение состоит из следующих модулей:

  1. index.php-стартовая страница web-приложения;
  2. option.php – модуль подключения к базе данных;
  3. user.php – модуль для работы с пользователями системы;
  4. trip.php – модуль для работы с маршрутами;
  5. transport.php – модуль для работы с транспортными средствами;
  6. rating.php – модуль для работы с показателями транспортного средства;
  7. ratingtoexcel.php – модуль для экспорта данных о показателях транспортного средства в excel;
  8. typetransport.php – модуль для работы с типами транспортных средств;
  9. company.php – модуль для работы с организациями.
  10. normcompany.php – отчет с нормами по организациям (количество ТС, которые не укладываются в нормы)
  11. normcompanytoexcel.php – экспорт отчета с нормами по организациям
  12. normtypetransport.php – отчет с нормами по типу ТС (количество ТС, которые не укладываются в нормы)
  13. normtypetransporttoexcel.php – экспорт отчета с нормами по типу ТС
  14. normtrip.php – отчет с нормами по маршрутам (количество ТС, которые не укладываются в нормы)
  15. normtriptoexcel.php – экспорт отчета с нормами по маршрутам

4. Контрольный пример реализации и его описание

Реализация реляционной БД средствами MySQL

Для развертывания локального web-сервера и сервера базы данных MySQL устанавливаем программное средство openserver. Настройки openserver представлены на рисунке 4.1.

Рис. 4.1 – настройки openserver

Если 80-й порт занят, меняем его на 81 (HTTP), рисунок 4.2.

Рис. 4.2 – Настройка портов

После того, как openser настроен и запущен, копируем папку transport с php-скриптами web-приложения в папку c:\OpenServer\domains\

Запускаем phpmyadmin и создаем новую базу данных transport с кодировкой cp1251_bin, рис. 4.3

Рис. 4.3 – Создание базы данных

Далее импортируем базу из файла transport.sql, рис. 4.4

Рис. 4.4 – Импорт базы данных

На рисунке 4.5 представлены таблицы базы данных transport.

Рис. 4.5 – Таблицы базы данных transport

Схема базы данных transport представлена на рисунке 4.6.

Рис. 4.6 – Схема базы данных transport

Настройка локального web-приложения завершена, для перехода на стартовую страницу можно воспользоваться меню openserver.

Требования по обеспечению безопасности в web-приложениях направлены на достижение трех основных свойств:

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

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

В таблице 4.1 приведены условия и результаты тестирования.

Таблица 4.1

Результаты тестирования

Условие

Результат

Если все данные были введены

Данные не корректны

Если все данные были выведены

Загрузка данных в DB

В поле дата ведены не корректные данные

Вывод сообщения и наличие ошибки

Поиск ввода не существующей записи

Сообщение об отсутствии записей

Ввод поиска существующей записи

Вывод поиска

При попытке создания новой записи в DB

Новая запись

При попытке редактирования записей DB

Запись отредактирована

В ходе тестирования методом черного ящика был проведен ряд тестов. Тестирование редактирования данных таблицы базы данных представлено в таблице 4.2 на примере таблицы «Пользователь».

Таблица 4.2 – Тестирование методом черного ящика

Номер теста

Описание теста

Исходные данные

Полученный результат

1

Проверка реакции программы на попытку отображения содержимого таблицы БД на примере таблицы «Пользователь»

Событие нажатия на кнопку, которая отображает форму с таблицей БД «Пользователь»

Демонстрация прошла успешно

2

Проверка добавления корректных данных на примере таблицы «Пользователь»

Заполнение окон ввода формы добавления данных о покупателе

Данные успешно добавлены/отредактированы и выведены в таблице на форме «Пользователь»

3

Проверка добавления некорректных данных на примере таблицы «Пользователь»

Заполнение не всех окон ввода формы
добавления данных о покупателе. Введены числовые данные в текстовые поля.

Данные не
добавлены/отредактированы, выведено сообщение об ошибке ввода данных, предполагается повторный ввод.

4

Проверка удаления данных на примере таблицы «Пользователь»

Выбор строки таблицы «Пользователь» предназначенной для удаления

Выведено диалоговое окно удаления данных, при нажатии кнопки «Да», данные удаляются. При нажатии кнопки «Нет» не удаляются.

Для ввода информации в таблицу «Пользователь» использовались следующие данные:

Корректные данные: Логин – «qwe», Пароль – «rty», ФИО – «Семенов ВС», Должность – «Администратор».

Некорректные данные: Логин – «», Пароль – «rty», ФИО – «Семенов ВС», Должность – «Администратор».

Результаты тестирования web-приложения в целом представлены в таблице 4.3.

Таблица 4.3

Результаты тестирования

Название испытания

Цель

Объект

Результат

1

Проверка авторизации пользователя

Выявление ошибок

авторизации пользователя

Авторизация

Обнаружены и устранены ошибки открытия вкладок

2

Проверка корректности отображения информации

Выявление ошибок

отображения информации

Корректность информации

Обнаружены и устранены ошибки отображения информации

3

Проверка работоспособности пунктов меню

Выявление ошибок

работоспособности пунктов меню

Меню

Обнаружены и устранены ошибки работоспособности пунктов меню

4

Проверка работы фильтра и экспорта данных

Выявление ошибок

фильтра и экспорта данных

Показатели

Обнаружены и устранены ошибки фильтра и экспорта данных

Результаты тестирования показали, что требования к функционалу web-приложения удовлетворёны в полном объеме. Разрабатываемое web-приложение корректно реагирует на удаление, изменение данных. При вводе входной информации осуществляется контроль на допустимость вводимых значений. Редактирование данных не нарушает целостности базы данных.

Для запуска web-приложения необходимо вызвать с помощью интернет-браузера файл index.php или воспользоваться меню openserver и запустить web-приложение transport.

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

Приложение состоит из следующих страниц:

index.php – главная и стартовая страница приложения. С неё начинается работа с приложениями и возможен переход на все остальные страницы.

Рисунок 5.1 – Главная страница index.php

В режиме администратора (логин: admin, пароль: master) в главном меню сайта возможен переход на страницу с перечнем пользователей системы, рисунок 5.2. Администратор имеет право редактировать таблицу пользователей, добавлять новых пользователей, назначать новым пользователям права доступа.

Рисунок 5.2 – Пользователи системы

Менеджер (логин: qwe, пароль: rty) городского пассажирского транспорта после авторизации попадает на страницу с перечнем организаций. Менеджер имеет права по редактированию справочников организаций (рисунок 5.3) и типов транспорта (рисунок 5.4).

Рисунок 5.3 – Организации

Рисунок 5.4 – Типы транспорта

Также менеджер имеет право редактировать список маршрутов, устанавливать нормы, добавлять фото расписания маршрута и просматривать сведения о маршрутах, рисунок 5.5, 5.6. В качестве контролируемых норм, которые закрепляются за маршрутом, выбраны месячные нормы пассажиропотока и расхода топлива (энергии).

Рисунок 5.5 – Маршруты

Рисунок 5.6 – Добавление маршрута

Кроме того менеджер имеет право редактировать перечень транспортных средств, указывать организацию к которой относится транспортно средство, назначать на транспортное средство сотрудника (водителя), указывать технические подробности транспортного средства в том числе вместимость, рисунок 5.7, 5.8, 5.9.

Рисунок 5.7 – Перечень транспортных средств

Рисунок 5.8 – Добавление транспортного средства

Рисунок 5.9 – Редактирование транспортного средства

Показатели транспортного средства по маршрутам следования указывает также менеджер. После выбора транспортного средства и нажатия кнопки «Показатели», менеджер переходит на страницу с показателями выбранного транспортного средства, рисунок 5.10.

Рисунок 5.10 – Показатели транспортного средства

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

На странице показателей транспортного средства доступен фильтр данных по маршруту, месяцу, году, рисунок 5.11.

Рисунок 5.11 – Фильтр показателей по маршруту, месяцу и году

А также фильтр с контролем норм, когда в результат выборки данных попадают только показатели, которые вышли за пределы норм, рисунок 5.12.

Рисунок 5.11 – Фильтр показателей по контролю норм

Также на странице показателей доступен экспорт данных в Excel, рисунок 5.12.

Рисунок 5.12 – Экспорт данных в Excel

Дополнительно система позволяет формировать отчеты о нормах по типам транспортных средств, организациям и маршрутам, рисунки 5.13-5.15.

Рисунок 5.13 – Отчеты о нормах по типам транспортных средств

Рисунок 5.14 – Отчеты о нормах по организациям

Рисунок 5.15 – Отчеты о нормах по маршрутам

Данные о нормах также доступны для экспорта в excel. На рисунке 5.16 пример экспорта в excel отчета о нормах по типам ТС.

Рисунок 5.16 – Экспорт в excel отчета о нормах по типам ТС

Заключение

Тема работы: Автоматизация учёта расхода топлива и электроенергии на предприятии МосГосТранс.

Целью представленной курсовой работы является разработка web-приложения с помощью языка программирования PHP и СУБД MySQL. Web-приложение должно организовывать обработку данных пассажиропотока и расхода топлива транспортных средств и давать рекомендации по изменению маршрутов согласно заданным нормам. Эффективность разработки заключается в сокращении времени процедур согласования документации и принятия решений, повышении исполнительской дисциплины, сокращении непроизводственных затрат рабочего времени сотрудников и минимизации финансовых затрат на документооборот.

Предметом исследования являются процесс контроля норм расхода топлива и пассажиропотока в транспортной сети.

В ходе выполнения курсовой работы были решены следующие задачи исследования:

- проанализирована предметная область,

- спроектирована реляционная базу данных,

- проведено проектирование web-приложения,

- реализована база данных и запросы на выборку к базе данных, разработан графический интерфейс пользователя,

- протестировано web-приложение,

- подготовлено руководство пользователя.

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

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

СПИСОК ИСТОЧНИКОВ И ЛИТЕРАТУРЫ

  1. Сханова С.Э. Основы транспортно-экспредиционного обслуживания – М.: Academia, 2011, -432 с.
  2. Пассажирский транспорт. – М.: Адонис, 2012. – 231 с.
  3. Логистика. Общественный пассажирский транспорт / Л.Б. Миротин, М: Экзамен, 2014. – 224 с
  4. Астахова И.Ф. SQL в примерах и задачах: учеб. пособие / И.Ф. Астахова, А.П. Толстобров, В.М. Мельников. – Мн.: Новое знание, 2012. – 176 с.
  5. Астахова И.Ф. СУБД: язык SQL в примерах и задачах / И.Ф. Астахова. – М.: «Физматлит», 2011. – 168 с.
  6. Вендров А.М. Проектирование программного обеспечения экономических информационных систем / А.М. Вендров. – М.: Финансы и статистика, 2012. – 352 с.
  7. Вигерс Б. Разработка требований к программному обеспечению / Б. Вигерс. – М.: BHV, 2014. – 736 с.
  8. Глушаков С.В. Базы данных / С.В. Глушаков, Д.В. Ломотько. – М.: ООО «Издательство ACT», 2012. – 415 с.
  9. Голдстайн А. HTML5 и CSS3 для всех / А. Голдстайн, Л. Лазарис, Э. Уэйл. – М.: Эксмо-Пресс, 2012. – 368 с.
  10. Голицына О.Л. Базы данных: учебное пособие / О.Л. Голицына, Н.В. Максимов, И.И. Попов. – М.: ФОРУМ: ИНФРА-М, 2011. – 268 с.
  11. Дакетт Д. HTML и CSS. Разработка и дизайн веб-сайтов / Д. Дакетт. – М.: Эксмо, 2013. – 480 с.
  12. Дунаев В. HTML, скрипты и стили / В. Дунаев. – М.: BHV, 2015. – 824 с.
  13. Жадаев А. PHP для начинающих / Жадаев А. – М.: Питер, 2014. – 288 с.
  14. Информационные технологии в управлении предприятием. Антология. – М.: Три квадрата, 2011. – 160 с.
  15. Кузин А.В. Базы данных / А.В. Кузин, С.В. Левонисова. – М.: Академия, 2012. – 320 с.
  16. Кумскова И.А. Базы данных / И.А. Кумскова. – М.: КноРус, 2012. – 488 с.
  17. Мишенин А.И. Теория экономических информационных систем / А.И. Мишенин. – 4-е изд., доп. и перераб. – М.: Финансы и статистика, 2007. – 240 с.
  18. Хопкинс К. PHP. Быстрый старт / К. Хопкинс. – М.: Эксмо-Пресс, 2014. – 160 с.
  19. Фролов А. В., Фролов Г. В. Базы данных в Интернете: практическое руководство по созданию Web-приложений с базами данных 2015
  20. Волков А. А. Тесты ТРС// Системы Управления Базами Данных № 2 2012
  21. Алекс Макмен, Крис Брукс, Стив Басби, Альманах программиста. Том 1. 2012
  22. Хомоненко А. Д. Базы данных, С.-П., 2014, Корона
  23. Лодон Дж., Лодон К. Управление информационными системами. 7-е изд. /Пер. с англ. под ред. Д.Р. Трутнева. – СПб.: Питер, 2015. – 912 с.: ил. – (Серия «Классика МВА»).
  24. Реутов А.П., Черняков М.В., Замуруев С.Н. Автоматизированные информационные системы: методы построения и исследования. - Издательство: Радиотехника, 2010. - 328 с.
  25. Рудинский И.Д. Технология проектирования автоматизированных систем обработки информации и управления. Учебное пособие для вузов. – М.: Горячая линия–Телеком, 2011. – 304 с.: ил.
  26. Пошаговое руководство по созданию, управлению/ Эксмо –  2008.- 487с.  Управление проектом по созданию интернет-сайта Издательство: Альпина Паблишер, 2013 г. - 337 с.  
  27. Якоб Нильсен, Хоа Лоранжер «Web-дизайн. Удобство использования Web-сайтов» Издательство «Вильямс». 2012г .-  376 с.
  28. Билл Скотт, Тереза Нейл «Проектирование веб-интерфейсов» 2010 г. Издательство: Символ-Плюс, - 352 с.
  29. Мэтью МакДональд «Создание Web-сайтов. Основное руководство» 2012 г. Издательство: Эксмо , - 768 с.
  30. Й. Якобсен. Концепция разработки Web-сайтов. Как успешно разработать Web-сайт с применением мультимедиа-технологий. - НТ Пресс,  2011г. - 512 с.
  31. А.П. Алексеев. Введение в Web-дизайн. -  М.: СОЛОН-ПРЕСС,  2011г. -  192 с.
  32. Билл Скотт, Тереза Нейл «Проектирование веб-интерфейсов» 2012 г. Издательство: Символ-Плюс, -  352 с.
  33. Гото Г, Котлер Э. Web-дизайн. - СПб: Символ Плюс, 2011.
  34. Дж.Н. Роббинс. Web-дизайн. Справочник. - М.: Кудиц-Пресс, 2012.
  35. Дж.Н. Роббинс. Разработка приложений для электронной коммерции. - СПб: Питер Бук, 2011.
  36. Леонтьев А.А. Web-дизайн. Руководство пользователя. - М.: Центр, 2010.

Приложение А DDL-скрипт

CREATE TABLE company

(

idcompany integer NOT NULL AUTO_INCREMENT,

company varchar(80) NULL ,

address varchar(80) NULL ,

phone varchar(80) NULL ,

info varchar(80) NULL,

PRIMARY KEY (idcompany)

)

;

CREATE TABLE rating

(

idrating integer NOT NULL AUTO_INCREMENT,

month integer NULL ,

year integer NULL ,

traffic integer NULL ,

fuel integer NULL ,

idtransport integer NOT NULL,

PRIMARY KEY (idrating)

)

;

CREATE TABLE transport

(

idtransport integer NOT NULL AUTO_INCREMENT,

vin varchar(80) NULL ,

pts varchar(80) NULL ,

model varchar(80) NULL ,

number varchar(80) NULL ,

capacity integer NULL ,

idworker integer NOT NULL ,

idcompany integer NOT NULL ,

idtypetransport integer NOT NULL ,

PRIMARY KEY (idtransport)

)

;

CREATE TABLE trip

(

idtrip integer NOT NULL AUTO_INCREMENT,

trip varchar(80) NULL ,

file varchar(80) NULL ,

fuelnorm integer NULL ,

trafficnorm integer NULL ,

idtypetransport integer NOT NULL ,

PRIMARY KEY (idtrip)

)

;

CREATE TABLE typetransport

(

idtypetransport integer NOT NULL AUTO_INCREMENT,

typetransport varchar(80) NULL ,

PRIMARY KEY (idtypetransport)

)

;

CREATE TABLE worker

(

idworker integer NOT NULL AUTO_INCREMENT,

worker varchar(80) NULL ,

phone varchar(80) NULL ,

seniority datetime NULL ,

post varchar(80) NULL ,

datebirth datetime NULL ,

login varchar(80) NULL ,

parol varchar(80) NULL ,

idcompany integer NOT NULL ,

PRIMARY KEY (idworker)

)

;

ALTER TABLE rating

ADD CONSTRAINT R_5 FOREIGN KEY (idtransport) REFERENCES transport(idtransport)

ON DELETE NO ACTION

ON UPDATE NO ACTION

;

ALTER TABLE rating

ADD CONSTRAINT R_6 FOREIGN KEY (idtransport) REFERENCES trip(idtrip)

ON DELETE NO ACTION

ON UPDATE NO ACTION

;

ALTER TABLE transport

ADD CONSTRAINT R_1 FOREIGN KEY (idworker) REFERENCES worker(idworker)

ON DELETE NO ACTION

ON UPDATE NO ACTION

;

ALTER TABLE transport

ADD CONSTRAINT R_2 FOREIGN KEY (idcompany) REFERENCES company(idcompany)

ON DELETE NO ACTION

ON UPDATE NO ACTION

;

ALTER TABLE transport

ADD CONSTRAINT R_3 FOREIGN KEY (idtypetransport) REFERENCES typetransport(idtypetransport)

ON DELETE NO ACTION

ON UPDATE NO ACTION

;

ALTER TABLE trip

ADD CONSTRAINT R_7 FOREIGN KEY (idtypetransport) REFERENCES typetransport(idtypetransport)

ON DELETE NO ACTION

ON UPDATE NO ACTION

;

ALTER TABLE worker

ADD CONSTRAINT R_8 FOREIGN KEY (idcompany) REFERENCES company(idcompany)

ON DELETE NO ACTION

ON UPDATE NO ACTION

;

Приложение Б Код программы

<?php

$Mode=$_COOKIE["Mode"];

$idrequest=$_COOKIE["idrequest"];

$idplace=$_COOKIE["idplace"];

$worker=$_COOKIE["worker"];

$idworker=$_COOKIE["idworker"];

$dblocation = "localhost";

$dbname = "transport";

$dbuser = "root";

$dbpasswd = "";

$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);

if (!$dbcnx)

{

echo( "<P>В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно.</P>" );

exit();

}

if (!@mysql_select_db($dbname, $dbcnx))

{

echo( "<P>В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно.</P>" );

exit();

}

mysql_set_charset("cp1251", $dbcnx);

?>

<?

require "option.php";//файл с параметрами подключения к БД

$step=$_REQUEST["step"];

if ($step==2)//выход

{

setcookie ( 'Mode', "");

$Mode="";

$step=0;

}

if ($step==1)

{

$login=$_POST["login"];

$parol=$_POST["parol"];

$SET_worker=mysql_query("select * from worker where login='$login' and parol='$parol'");

$COUNT_worker=mysql_num_rows($SET_worker);

if ($COUNT_worker==0)

{

?>

<script language="javascript">

alert("Не верный ввод!");

history.back();

</script>

<?

exit();

}

if ($COUNT_worker>0)

{

$f=mysql_fetch_array($SET_worker);//считывание текующей записи

$idworker=$f["idworker"];

setcookie ( 'idworker', $idworker);

$Mode=$f["post"];

setcookie ( 'Mode', $Mode);

$worker=$f["worker"];

setcookie ( 'worker', $worker);

if ($Mode=="Менеджер")

{

?>

<script language="javascript">

location.href='company.php';

</script>

<?

}

if ($Mode=="Администратор")

{

?>

<script language="javascript">

location.href='user.php';

</script>

<?

}

}

else

{

?>

<script language="javascript">

alert("Не верный ввод!");

history.back();

</script>

<?

}

}

?>

<html >

<head>

<meta name="keywords" content="" />

<meta name="description" content="" />

<meta http-equiv="content-type" content="text/html; charset=windows-1251" />

<title>Городской пассажирский транспорт</title>

<link href="style.css" rel="stylesheet" type="text/css" media="screen" />

</head>

<body>

<div id="header-wrapper1">

<div id="logo">

<img src="images/лого.jpg" width="150" height="100">

</div>

<div id="header1" class="container">

<?

require "menu.php";

?>

</div>

</div>

<!-- end #header -->

<br>

<table width="100%" height="83%">

<tr>

<td>

<?

if ( $Mode=="")

{

?>

<form name="form2" onaction="this.form.action='default.php?step=1'" method="post" >

<table align="center">

<tr>

<td>

Авторизация:

</td>

</tr>

<tr>

<td>

Логин:

</td>

</tr>

<tr>

<td>

<input name="login" value="" type="text" >

</td>

</tr>

<tr>

<td>

Пароль:

</td>

</tr>

<tr>

<td>

<input name="parol" value="" type="password" >

</td>

</tr>

<tr>

<td align="right"><input name="button" type="button" onClick="this.form.action='index.php?step=1'; this.form.submit();" value="Вход" width="600"></tr>

</table>

</form>

<?

}

else

{

?>

<script language="javascript">

//location.href='request.php';

</script>

<?

}

?>

</td>

</tr>

<tr>

<td valign="bottom">

<div id="footer">

<p>Copyright (c) 2018. All rights reserved.</p>

</div>

</td>

</tr>

</table>

</body>

</html>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

<div id="menu" >

<ul>

<?

if ($Mode=="Менеджер")

{

?>

<li><a href="transport.php">Транспорт</a></li>

<li><a href="trip.php">Маршруты</a></li>

<li><a href="company.php">Организации</a></li>

<li><a href="typetransport.php">Тип транспорта</a></li>

<?

}

?>

<?

if ($Mode=="Администратор")

{

?>

<li><a href="user.php">Пользователи</a></li>

<?

}

?>

<?

if ($Mode!="")

{

?>

<li><a href="index.php?step=2">Выход</a></li>

<?

}

?>

</ul>

</div>

<?

require "option.php";//файл с параметрами подключения к БД

$idtransport = $_COOKIE["idtransport"];

if (isset ($_POST['ArrTransport']))

{

$Arr=$_POST['ArrTransport'];

$idtransport=$Arr[0];

setcookie ( 'idtransport', $idtransport);

}

date_default_timezone_set("Europe/Moscow");

$year=date("Y");

?>

<html >

<head>

<meta name="keywords" content="" />

<meta name="description" content="" />

<meta http-equiv="content-type" content="text/html; charset=windows-1251" />

<title>Городской пассажирский транспорт</title>

<link href="style.css" rel="stylesheet" type="text/css" media="screen" />

</head>

<body>

<div id="wrapper">

<div id="header-wrapper1">

<div id="logo">

<img src="images/лого.jpg" width="150" height="100">

</div>

<div id="header1" class="container">

<?

require "menu.php";

?>

</div>

</div>

<!-- end #header -->

<br>

<form name="form2" method="post" >

<?

$s="select model from transport where idtransport=$idtransport";

$r=mysql_query($s);

$f=mysql_fetch_array($r);//считывание текующей записи

$model=$f['model'];

?>

<div style="font-size:22px; color:#000" align="center">Показатели транспорта (модель "<? echo $model?>")</div>

<?

$filter=$_GET["filter"];//считывание параметра фильтра

$s="select * from rating, transport, trip where transport.idtransport=rating.idtransport and trip.idtrip=rating.idtrip and rating.idtransport=$idtransport ";

if ($filter==1)/*есть ли сортировка данных*/

{

$idtrip = $_POST['idtrip'];

$s=$s." and trip.idtrip=$idtrip";

$month = $_POST['month'];

$s=$s." and month=$month";

if (isset ($_POST['year']))

{

$year = $_POST['year'];

$s=$s." and year=$year";

}

if (isset ($_POST['control']))

{

$control=$_POST['control'];

$s=$s." and $control";

}

}

$s=$s." ORDER BY trip, year, month";

$r=mysql_query($s);

?>

<div align="right">

<br>

&nbsp; &nbsp;

Фильтр по маршруту:

<select name="idtrip" style="height:22; width:auto" >

<option selected=selected value="trip.idtrip">Все</option>

<?

$d=mysql_query( "select * from trip order by trip");

for ($i=0;$i<mysql_num_rows($d);$i++)

{

$m=mysql_fetch_array($d);

echo "<option value=".$m["idtrip"];

if ($m["idtrip"]==$idtrip)

echo " selected=selected";

echo ">".$m["trip"];

echo "</option>";

}

?>

</select>

&nbsp; &nbsp;

&nbsp; &nbsp;

Фильтр по месяцу:

<select name="month" style="height:22; width:auto" >

<option selected=selected value="month">Все</option>

<option value="'Январь'" <? if ($month=="'Январь'") echo "selected";?> >Январь</option>

<option value="'Февраль'" <? if ($month=="'Февраль'") echo "selected";?> >Февраль</option>

<option value="'Март'" <? if ($month=="'Март'") echo "selected";?> >Март</option>

<option value="'Апрель'" <? if ($month=="'Апрель'") echo "selected";?> >Апрель</option>

<option value="'Май'" <? if ($month=="'Май'") echo "selected";?> >Май</option>

<option value="'Июнь'" <? if ($month=="'Июнь'") echo "selected";?> >Июнь</option>

<option value="'Июль'" <? if ($month=="'Июль'") echo "selected";?> >Июль</option>

<option value="'Август'" <? if ($month=="'Август'") echo "selected";?> >Август</option>

<option value="'Сентябрь'" <? if ($month=="'Сентябрь'") echo "selected";?> >Сентябрь</option>

<option value="'Октябрь'" <? if ($month=="'Октябрь'") echo "selected";?> >Октябрь</option>

<option value="'Ноябрь'" <? if ($month=="'Ноябрь'") echo "selected";?> >Ноябрь</option>

</select>

&nbsp; &nbsp;

&nbsp; &nbsp;

Фильтр по году:

<input size="3" name="year" value="<? echo $year;?>" type="text" >

&nbsp; &nbsp;

&nbsp; &nbsp;

Контроль норм:

<input name="control" value="(traffic>trafficnorm or fuel>fuelnorm)" type="checkbox" <? if ($control) echo "checked"; ?>>

&nbsp;

<br><br>

<input type="button" name="button1" onclick="this.form.action='rating.php?filter=1'; this.form.submit();" value="Фильтр">

<input type="button" name="button2" onclick="this.form.action='rating.php?filter=0'; this.form.submit();" value="Очистить">

&nbsp;

</div>

<br>

<input type="button" name="button4" onclick="this.form.action='updrating.php?upd=0&step=1'; this.form.submit();" value="Добавить">

<input type="button" name="button4" <? if (mysql_num_rows($r)==0) {?> disabled="disabled"<? }?> onclick="this.form.action='updrating.php?upd=1&step=1'; this.form.submit();" value="Редактирование">

<input type="button" name="button" <? if (mysql_num_rows($r)==0) {?> disabled="disabled"<? }?> onclick="qwest=window.confirm('Вы действительно хотите удалить запись?'); if (qwest) {this.form.action='delrating.php'; this.form.submit();}" value="Удалить">

<input type="button" name="button" <? if (mysql_num_rows($r)==0) {?> disabled="disabled"<? }?> onclick="this.form.action='ratingtoexcel.php?filter=<? echo $filter;?>&model=<? echo $model;?>'; this.form.submit();" value="Экспорт в Excel">

<input type="button" name="button4" onclick="this.form.action='transport.php'; this.form.submit();" value="Назад">

<table WIDTH=100% border=1 cellspacing=0 cellpadding=3>

<tr>

<td ><font color=white>&nbsp;</font></td>

<td align="center" valign="middle"><h5 style="color:#000">Маршрут</h5></td>

<td align="center" valign="middle"><h5 style="color:#000">Месяц</h5></td>

<td align="center" valign="middle"><h5 style="color:#000">Год</h5></td>

<td align="center" valign="middle"><h5 style="color:#000">Пассажиропоток</h5></td>

<td align="center" valign="middle"><h5 style="color:#000">Норма пассажиропотока</h5></td>

<td align="center" valign="middle"><h5 style="color:#000">Расход топлива</h5></td>

<td align="center" valign="middle"><h5 style="color:#000">Норма топлива</h5></td>

</tr>

<?

for ($i=0;$i<mysql_num_rows($r);$i++)//вывод данных в цикле по количеству записей

{

$f=mysql_fetch_array($r);//считывание текующей записи

if ( ($f['traffic']>$f['trafficnorm']) or ($f['fuel']>$f['fuelnorm']) )

echo "<tr bgcolor=#FF6699>";

else

echo "<tr>";

if ($i==0)

echo "<td><input type=radio checked=checked name=Arr[] value=".$f ['idrating']."> </td>";

else

echo "<td><input type=radio name=Arr[] value=".$f ['idrating']."> </td>";

echo "

<td> ".$f['trip']."&nbsp; </td>

<td> ".$f['month']."&nbsp; </td>

<td> ".$f['year']."&nbsp; </td>

<td> ".$f['traffic']."&nbsp; </td>

<td> ".$f['trafficnorm']."&nbsp; </td>

<td> ".$f['fuel']."&nbsp; </td>

<td> ".$f['fuelnorm']."&nbsp; </td>

";

echo "</tr>";

}

?>

</table>

</form>

</div>

</div>

<!-- end #page -->

</div>

<!-- end #footer -->

</body>

</html>