Разработка информационной системы для раскрытия отчетности жилищно-коммунальных организаций

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    170,47 Кб
  • Опубликовано:
    2017-01-19
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка информационной системы для раскрытия отчетности жилищно-коммунальных организаций

ВВЕДЕНИЕ

Интернет - это всемирная компьютерная сеть, основным назначением которой является совместное использование информации. Интернет представляет собой совокупность множества региональных и ведомственных сетей, функционирующих на основе протокола обмена данными IP (Internet Protocol), объединенных в одну адресную систему.

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

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

При помощи одного html этого всего не достичь, так как это всего лишь язык разметки, который является инструментом для создания гиперссылок, вставки изображений и т.д. Для наглядности приведём простой пример. При помощи данного языка очень просто и очень быстро можно сделать форму для отправки какого-нибудь запроса. Такая форма будет иметь все нужные атрибуты: поле для ввода данных и кнопку отправки. Но при её нажатии ровным счётом ничего не произойдёт, так как не был задан сценарий действий, который необходимо выполнить, чтобы был какой-то конкретный результат. Вот именно поэтому создание интерактивных компонентов является задачей Web-программирования.программирование осуществляется с помощью специальных программных средств - скриптов. Они, в свою очередь, делятся на два основных вида: серверные и клиентские. Серверные скрипты выполняются на сервере, то есть того компьютера, на котором размещён сайт, ещё до загрузки страниц сайта на компьютер пользователя. А клиентские скрипты выполняются уже после загрузки этих страниц на компьютер пользователя.

Таким образом, моей задачей в дипломе является реализация сайта, куда будут заноситься все необходимые данные, описанные в регламенте Фонда содействию реформирования ЖКХ. После выполнения этого действия данные будут отправляться специальной кнопкой на сайт реформы ЖКХ, где они будут обрабатываться и использоваться в дальнейшем для проверки оплаты счетов за квартиры.

На данном сайте можно узнать всю информацию о своей деятельности, которую организации, осуществляющие деятельность в сфере управления многоквартирными домами, обязаны раскрывать путём публикации её в сети Интернет на сайте www.reformagkh.ru, определённый приказом Минрегиона РФ от 02.04.2013 года № 124. Также на нём можно узнать всё о капитальном ремонте: найти ответы на самые актуальные вопросы и контактную информацию специалистов в своём регионе и многое другое.

1. АНАЛИТИЧЕСКИЙ ОБЗОР

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

1.1 Анализ схожих проектов

Приложение «Инфокрафт: формула ЖКХ»

Программа «Инфокрафт: формула ЖКХ» предназначена для автоматизации учёта в ТСЖ, ЖСК, управляющих компаниях ЖКХ. Её решения позволяют помогать рассчитывать квартплату, вести бухгалтерский и паспортный учёт, учитывать жилой фонд, обслуживать собственников помещений и вести претензионную работу. Решения разработаны на платформе «1С: Предприятие8» и сертифицированы фирмой «1С». Работают на отдельном компьютере, в локальной сети или в облаке «Инфокрафт ЖКХ 365».

Программный комплекс «Супер МКД - Инфообмен»

Программный комплекс «Супер МКД - Инфообмен» разработан с использованием современных информационных технологий. С комплексом может работать неограниченное количество пользователей. При работе с «Супер МКД - Инфообмен» формируется единая информационная среда, автоматизируются процессы по подготовке данных для раскрытия информации, что позволяет:

Сократить расходы на предоставление внешней отчётности на www.reformagkh.ru.

Без дополнительных средств и затрат времени сотрудников обеспечить раскрытие информации на втором ресурсе - предоставленном сайте с доменным именем формата *****.731pp.ru

Анализ программных средств разработки Web-приложений

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

Язык РНР

РНР - скриптовый язык общего назначения для разработки серверных частей веб-приложений. На заре своего развития PHP был чистым интерпретатором (исполнял рукописный текст программы, а не байт-код), что не способствовало большой производительности. Далее оказалось, что перевести текст программы в промежуточный оптимизированный байт-код, а затем уже исполнить результат оказывается намного быстрее. Благодаря этому современный движок РНР состоит из двух частей: транслятора в байт-код и интерпретатора байт-кода.

Плюсы:

Является свободным программным обеспечением, распространяемым под особой лицензией (PHP license)

Легок в освоении на всех этапах

Поддерживается большим сообществом пользователей и разработчиков

Имеет развитую поддержку баз данных

Имеется огромное количество библиотек и расширений языка

Может использоваться в изолированной среде

Предлагает натуральные средства организации веб-сессий, программный интерфейс расширений

Является довольно полной заменой проприетарной среды ASP (Active Server Pages) от Microsoft

Может быть развёрнут на любом сервере

Портирован под большое количество аппаратных платформ и операционных систем

Минусы:

Не подходит для создания десктопных приложений или системных компонентов

Имеет слабые средства работы с исключениями

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

Объекты передаются по значению, что смущает программистов, привыкших к передаче объектов по ссылке

Веб-приложения, написанные на РНР, зачастую имеют проблемы с безопасностью

Язык Ruby (Ruby on Rails)

Ruby - динамический императивный объектно-ориентированный язык программирования, разработанный Юкихиро Матсумото. Ruby был создан под влиянием таких языков, как Perl, Eiffel и Smalltalk. Характеризуется динамической типизацией и автоматическим управлением памятью. Язык Ruby используется в веб-разработке в составе открытого веб-фреймворка Rails, чаще называемого Ruby on Rails (RoR).

Плюсы:

Открытая разработка

Работает на многих платформах

Может внедряться в HTML-разметку

Относится к языкам программирования сверхвысокого уровня (VHLL), то есть обладает высоким уровнем абстракции и предметным подходом в реализации алгоритмов, благодаря чему программы хорошо масштабируются и легко сопровождаются

Реализует концептуально чистую объектно-ориентированную парадигму

Предоставляет продвинутые методы манипуляции строками и текстом

Легко интегрирует в свои программы высокопроизводительные серверы баз данных (DB2, MySQL, Oracle и Synbase)

Простой и чистый синтаксис, что делает его легким в обучении и многие другие

Недостатки:

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

Информационных ресурсов, посвященных Ruby, на данный момент недостаточно

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

Как и Ruby, Python имеет целью приблизить синтаксис реальной программы, написанной на нём, к описывающему задачу псевдокоду, что позволяет программисту уменьшить объём программы. Идея создания данного языка возникла в конце 1980-х годов и была реализована Гвидо ван Россумом.

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

Плюсы:

Открытая разработка

Прост в обучении, особенно на начальном этапе

Особенности синтаксиса стимулируют программиста писать хорошо читаемый код

Предоставляет средства быстрого прототипирования и динамической семантики

Имеет большое сообщество, позитивно настроенное по отношению к новичкам

Множество полезных библиотек и расширений легко использовать в своих проектах

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

Недостатки:

Не слишком удачная поддержка многопоточности

Отсутствие коммерческой поддержки средств разработки

Изначальная ограниченность средств для работы с базами данных

Низкая производительность

1.2 Анализ требований к приложению

Требования, предъявляемые к Web-приложению:

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

Безопасность включает в себя: разграничение прав доступа, авторизации и верификация пользователей.

Масштабируемость - способность системы увеличивать свою производительность при повышенной нагрузке и добавлении ресурсов. Для пользователей должен оставаться незаметным момент (т.е. время отклика системы на запросы пользователя не должно заметно изменяться), когда возрастёт нагрузка (например, к приложению получают доступ одновременно ещё несколько пользователей ).

Кроссплатформенность - информация должна отображаться в том виде, в каком она есть, в самых популярных браузерах, а именно Google Chrome, Opera, Mozilla Firefox и Safari.

2. ПРОЕКТИРОВАНИЕ ПП

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

Определение функциональности ПП

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

В данном случае требуются:

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

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

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

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

Выбор и обоснование средств разработки

Так как приложение представлено в виде сайта, то безусловно понадобятся: HTML - язык вёрстки и таблица стилей CSS.

Для работы с базой данных будет использоваться язык MySQL в программе «phpMyAdmin, потому что для написания серверной части кода будет использоваться язык web-программирования PHP.

Язык PHP был выбран потому, что он был уже немного знаком, он лёгок в освоении и он поддерживается на многих платформах, что очень хорошо подходит к данному проекту. C данным языком буду работать в двух программах: Notepad++ для настройки кодировки файлов и написания кода и phpDisigner 7 для отладки кода.

Разработка структур и алгоритмов

Разработка структур данных базы данных

Итак, в базе данных будут находиться 7 таблиц:

cold_water_system_system_water_system_type_wall_material

Таблицы «cold_water_system», «heating_system», «hot_water_system», «house_type», «house_wall_material» будет иметь 3 поля: id, identificator и text, где поле «id» с типом данных int (численный) - это номер строки в таблице и первичный ключ, поле «identificator» с типом данных int (численный) - это число, которое несёт в себе некоторую информацию, а поле «text» с типом данных text будет содержать ту самую информацию.

Таблица «houses» будет содержать в себе 12 полей:

id_id_year_type_wall_material_system_water_system_water_system_quarter_living_quarter_common_property

Поле «id» с типом данных int (численный) - это номер строки в таблице и первичный ключ. Поле «house_id» с типом данных int (численный) - это номер здания. Поле «street» с типом данных varchar (любой символ) будет содержать наименование улицы, где расположено здание. Поле «build_year» с типом данных int (численный) будет содержать информацию о годе введения в эксплуатацию данного здания. Поле «house_type» с типом данных int (численный) будет содержать информацию о типе здания, которая будет отображаться из поля «idientificator» таблицы «house_type». Поле «house_wall_material» с типом данных int (численный) будет содержать информацию о материале, из которого здание выстроено, которая будет отображаться из поля «idientificator» таблицы «house_wall_material». Поле «heating_system» с типом данных int (численный) будет содержать информацию о типе системы отопления здания, которая будет отображаться из поля «idientificator» таблицы «heating_system». Поле «hot_water_system» с типом данных int (численный) будет содержать информацию о типе системы подачи горячей воды, которая будет отображаться из поля «idientificator» таблицы «hot_water_system». Поле «cold_water_system» с типом данных int (численный) будет содержать информацию о типе системы подачи холодной воды, которая будет отображаться из поля «idientificator» таблицы «cold_water_system». Поле «living_quarter» с типом данных int (численный) будет содержать информацию о количестве жилой площади. Поле «not_living_quarter» с типом данных int (численный) будет содержать информацию о количестве нежилой площади. И последнее поле «area_common_property» с типом данных decimal (десятичное число) будет содержать информацию об общей площади собственности.

Разработка структуры сайта

Так как у меня нет навыка работы для создания макета сайта, поэтому воспользуюсь встроенной в ОС Windows программой Paint, чтобы создать примерную структуру программного продукта. Примерная структура сайта изображена на Рисунке 1.

Рисунок 1 - Примерная структура сайта

Как видно в структуре сайта имеется 4 блока. В блоке «Название сайта» соответственно будет наименование сайта. В блоке «Авторизация пользователя» будут поля для ввода логина и пароля, а также две кнопки: «войти» и «регистрация». В блоке «Основное меню» будут содержаться 3 ссылки на страницы на соответствующие страницы: «Главная», «База данных» и Контакты». И последний блок «Контент». В нём будет отображаться информация основной таблицы «houses», а так же будет создана кнопка «Добавить запись» для ввода и сохранения новой информации в базе данных приложения.

3. РЕАЛИЗАЦИЯ ПП

3.1 Реализация базы данных

С того момента, как я получил данную тему на диплом, мне уже было понятно, что без хранения данных тут никак не обойтись. Приступив к реализации БД, я сначала создал основную таблицу «houses» при помощи виртуальных команд.

Для её создания была выполнена команда:

CREATE TABLE houses (id INT(11), house_id INT(10), street VARCHAR(10), build_year INT(10), house_type INT(1), house_wall_material INT(1), heating_system INT(1), hot_water_system INT(1), cold_water_system INT(1), house_state INT(1), house_floor_type INT(1), electricity_system INT(1), gas_system INT(1), living_quarter INT(1), not_living_quarter INT(1), area_common_property DECIMAL(10,2));

После её создания я заполнил одну строчку в ней командой:

INSERT TABLE houses VALUES(0, 1, “Зосимовская”, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 500,00);

Это было сделано для того, чтобы при реализации самого сайта, я мог видеть результат правильной работы кода HTML и PHP, но об этом позже.

После того, как таблица была заполнена, я приступил к реализации других таблиц и их заполнению.

Создание и заполнение таблицы house_type.

CREATE TABLE house_type (id INT(11), identificator INT(1), text TEXT);TABLE house_type (1, 1, “Общежитие”);

INSERT TABLE house_type (2, 2, “Объект индивидуального жилищного строительства”);TABLE house_type (3, 3, “Жилой дом блокированной застройки”);

INSERT TABLE house_type (4, 4, “Многоквартирный дом”);

Создание и заполнение таблицы house_wall_material.

CREATE TABLE house_wall_material (id INT(11), identificator INT(1), text TEXT);TABLE house_wall_material (1, 1, “Нет данных”);TABLE house_wall_material (2, 2, “Каменные, кирпичные”);TABLE house_wall_material (3, 3, “Панельные”);TABLE house_wall_material (4, 4, “Блочные”);TABLE house_wall_material (5, 5, “Смешанные”);TABLE house_wall_material (6, 6, “Монолитные”);TABLE house_wall_material (7, 7, “Деревянные”);TABLE house_wall_material (8, 8, “Прочие”);

Создание и заполнение таблицы heating_system.

CREATE TABLE heating_system (id INT(11), identificator INT(1), text TEXT);TABLE heating_system (1, 1, “Нет данных”);TABLE heating_system (2, 2, “Отсутствует”);TABLE heating_system (3, 3, “Центральное”);TABLE heating_system (4, 4, “Автономное”);TABLE heating_system (5, 5, “Поквартирное”);TABLE heating_system (6, 6, “Печное”);

Создание и заполнение таблицы hot_water_system.

CREATE TABLE hot_water_system (id INT(11), identificator INT(1), text TEXT);TABLE hot_water_system (1, 1, “Нет данных”);TABLE hot_water_system (2, 2, “Отсутствует”);TABLE hot_water_system (3, 3, “Централизованная открытая”);TABLE hot_water_system (4, 4, “Централизованная закрытая”);TABLE hot_water_system (5, 5, “Поквартирная”);TABLE hot_water_system (6, 6, “Автономная”);

Создание и заполнение таблицы cold_water_system.

CREATE TABLE cold_water_system (id INT(11), identificator INT(1), text TEXT);TABLE cold_water_system (1, 1, “Нет данных”);TABLE cold_water_system (2, 2, “Отсутствует”);TABLE cold_water_system (3, 3, “Централизованное”);TABLE cold_water_system (4, 4, “Открытое”);

Создание и заполнение таблицы house_state.

CREATE TABLE house_state (id INT(11), identificator INT(1), text TEXT);TABLE house_state (1, 1, “normal”);TABLE house_state (2, 2, “warning”);TABLE house_state (3, 3, “alarm”);TABLE house_state (4, 4, “noinfo”);

Создание и заполнение таблицы house_floor_type.

CREATE TABLE house_floor_type (id INT(11), identificator INT(1), text TEXT);TABLE house_floor_type (1, 1, “нет данных”);TABLE house_floor_type (2, 2, “железобетонные”);TABLE house_floor_type (3, 3, “деревянные”);TABLE house_floor_type (4, 4, “смешанные”);

Создание и заполнение таблицы electricity_system.

CREATE TABLE electricity_system (id INT(11), identificator INT(1), text TEXT);TABLE electricity_system (1, 1, “нет данных”);TABLE electricity_system (2, 2, “отсутствует”);TABLE electricity_system (3, 3, “централизованное”);TABLE electricity_system (4, 4, “комбинированное”);

Создание и заполнение таблицы gas_system.

CREATE TABLE gas_system (id INT(11), identificator INT(1), text TEXT);TABLE gas_system (1, 1, “нет данных”);TABLE gas_system (2, 2, “отсутствует”);TABLE gas_system (3, 3, “централизованное”);

Кстати говоря, хочу отметить, что все таблицы в базе данных связаны , то есть имеется главная таблица «houses», а с ней имеют связи оставшиеся таблицы, кроме таблицы «users» - она отдельно хранит информацию о пользователях. Визуально связи и таблицы выглядят так, как показано на рисунке 2.

Рисунок 2 - Таблицы и их связи мой БД

3.2 Реализация HTML- и PHP-кода

После проведения всех описанных в пункте 3.1 манипуляций я смело приступил к реализации сайта.

Сперва я создал 4 файла: index.php, header.php, menu.php и style.css. В первом файле я реализовывал главную страницу сайта, во втором файле - шапка сайта, в третьем - меню, которое располагалось прямо под шапкой, а в последнем - таблица стилей моего сайта.

В первых трёх файлах я создал по одному блоку div в формате:

<div class = header> это шапка </div>

<div class = menu> это меню </div>

<div class = content> это контент </div>

А в таблице стилей я прописал следующее для каждого класса:

div.header

}.menu{: inline-block;: 100%;: 50px;

}.content{: block;: 700 px;: 100%

}

Немного поясню. Команда «display» позволяет определить, как элемент должен быть показан в документе. Команда «vertical-align» позволяет выровнять элемент. В данном случае - по центру. Команда «width» позволяет задать ширину. Команда «height» позволяет задать высоту элемента. С помощью команды «border» я залил границы каждого элемента, то есть шапки, контента и меню чёрным цветом толщиной в 1 пиксель для наглядности, чтобы было проще ориентироваться себе. А командой «background» я задал фон шапке с помощью файла, найденного на просторах сети Интернет специально подогнанного под необходимые размеры. В итоге всего этого мой предварительный результат выглядел почти так же, как на рисунке 3.

Рисунок 3 - Предварительный вид сайта

Следующим мои шагом было создание фона контента, а также создание таблицы, где будет отображаться вся основная информация.

Создание головы таблицы.

<div align="center">

<font face="Times New Roman" size="2" color="black">

<table border = "1" align="center" cellpadding="6">

<tr>

<th>Номер дома</th>

<th>Улица</th>

<th>Год основания</th>

<th><a href="house_typeDB.php">Тип здания<a></th>

<th><a href="house_wall_material.php">Внешний материал здания</th>

<th><a href="heating_system.php">Система отопления</th>

<th><a href="hot_water_system.php">Система подачи горячей воды</th>

<th><a href="cold_water_system.php">Система подачи холодной воды</th>

<th>Жилая площадь</th>

<th>Нежилая площадь</th>

<th>Общая площадь</th>

</tr>

Немного пояснений по порядку. Тег <font> позволяет задать некоторые свойства таблицы. В моём примере я задал свойства шрифта, то есть стиль "Times New Roman", размер - 2 и цвет шрифта - черный.

Далее я создаю таблицу с помощью тегов <table></table>, также задаю ей свойства: «border» - создаю заливку границ шириной в 1 пиксель, «align» - выравнивание текста внутри таблицы по центру, «cellpadding=”6”» - задаю расстояние в ячейках таблицы между текстом и границей ячейки.

Следующими тегами <th></th> создаю заголовки столбцов, которые выделены полужирным начертанием. Попутно некоторые заголовки я создаю в виде ссылок при помощи тегов <a></a>, указывая при этом, на какой сайт или в какой файл она приведёт. Те файлы, что указаны в ссылках, будут созданы позднее.

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

Создаётся новый файл сonnection.php, который содержит следующие строки:

<?php

$host="localhost";

$user="root";

$password="qwerty";

$db="diplom";

$connection = mysql_connect($host, $user, $password) or die("Error");_query("set_client='utf8");_query("set character_set_results='utf8");_query("set collation_connection='utf8_general_ci'");_query ("SET NAMES utf8");

$select_bd = mysql_select_db($db, $connection) or die("Error");

?>

Кратко поясню, что делает этот файл. Перед тем, как вообще зайти в интерфейс программы phpMyAdmin, чтобы создать базу данных, мне требовалось создать пользователя. Таким образом, созданная БД имеет свой хост, своего пользователя, пароль и имя базы данных. Эту информацию и хранят те четыре переменные, что описаны в коде (имя переменной соответствует самой информации). Следующая переменная $connection создаёт подключение к phpMyAdmin. Если подключение успешное, то продолжаем дальше, в противном случае - выводит сообщение о том, что подключение не удалось. А переменная $connect_bd позволяет нам подключиться к той базе данных, которая указана в скобках.

А теперь вернёмся к завершению создания таблицы. Последняя часть кода таблицы:

<?php

$result = mysql_query("SELECT * FROM houses");($myrow = mysql_fetch_array($result))

{

$pole1=$myrow['house_id'];

$pole2=$myrow['street'];

$pole3=$myrow['build_year'];

$pole4=$myrow['house_type'];

$pole5=$myrow['house_wall_material'];

$pole6=$myrow['heating_system'];

$pole7=$myrow['hot_water_system'];

$pole8=$myrow['cold_water_system'];

$pole9=$myrow['living_quarter'];

$pole10=$myrow['not_living_quarter'];

$pole11=$myrow['area_common_property'];"<div>

<tr>

<td align='center'>$pole1</td>

<td align='center'>$pole2</td>

<td align='center'>$pole3</td>

<td align='center'>$pole4</td>

<td align='center'>$pole5</td>

<td align='center'>$pole6</td>

<td align='center'>$pole7</td>

<td align='center'>$pole8</td>

<td align='center'>$pole9</td>

<td align='center'>$pole10</td>

<td align='center'>$pole11</td>

</tr>";"</div>";

}?>

</table>

Итак, в переменную $result заносится выборка информация каждого поля одной строчки из таблицы «houses». Затем эта информация записывается в массив $myrow. Далее каждое поле из таблицы отдельно записывается в свою переменную. А цикл «while» помогает пробежаться по каждой записи в таблице и. И наконец, с помощью команды вывода «echo» мы «рисуем ещё строчку таблицы в документе, тем самым она заполняется с помощью «while». Результат этого кода представлен на рисунке 4.


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

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

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

<form>

<button formaction="invite.php">Добавить запись</button>

</form>

С помощью этого куска кода я создаю форму, в которой создаётся кнопка с говорящим названием «Добавить запись». Нажав на неё, пользователь попадает на заранее созданную страницу в файле invite.php. Часть кода, хранимого в этом файле такова:

<div align="center">

<form action="query-invite.php" method="post">

<label>Номер дома:</label><br />

<input type="text" name="house_id"><br />

<label>Улица:</label><br />

<input type="text" name="street"><br />

<label>Год ввода в эксплуатацию:</label><br />

<input type="text" name="build_year"><br />

<label>Тип здания:</label><br />

<?php

$result = mysql_query("SELECT identificator FROM house_type");'<select style="width: 175px" name="house_type">';($row = mysql_fetch_array($result))

{

$pole1=$row['identificator'];"<option value='$row[identificator]'>$row[identificator]</option>";

}"</select>";

?></br>

<label>Внешний материал здания:</label><br />

<?php

$result = mysql_query("SELECT type FROM house_wall_material");'<select style="width: 175px" name="house_wall_material">';($row = mysql_fetch_array($result))

{

$pole1=$row['identificator'];"<option value='$row[type]'>$row[type]</option>";

}"</select>";

?></br>

<label>Система отопления:</label><br />

<?php

$result = mysql_query("SELECT identificator FROM heating_system");'<select style="width: 175px" name="heating_system" >';($row = mysql_fetch_array($result))

{

$pole1=$row['identificator'];"<option value='$row[identificator]'>$row[identificator]</option>";

}"</select>";

?></br>

<label>Система подачи горячей воды:</label><br />

<?php

$result = mysql_query("SELECT identificator FROM hot_water_system");'<select style="width: 175px" name="hot_water_system">';($row = mysql_fetch_array($result))

{

$pole1=$row['identificator'];"<option value='$row[identificator]'>$row[identificator]</option>";

}"</select>";

?></br>

<label>Система подачи холодной воды:</label><br />

<?php

$result = mysql_query("SELECT identificator FROM cold_water_system");'<select style="width: 175px" name="cold_water_system">';($row = mysql_fetch_array($result))

{

$pole1=$row['identificator'];"<option value='$row[identificator]'>$row[identificator]</option>";

}"</select>";

?></br>

<label>Жилая площадь:</label><br />

<input type="text" name="living_quarter"><br />

<label>Нежилая площадь:</label><br />

<input type="text" name="not_living_quarter"><br />

<label>Общая площадь:</label><br />

<input type="text" name="area_common_property"><br />

<input type="submit" name="submit"><br />

</form>

</div>

Часть информации заносится в поле вручную. Для остальная части был сделан специально выпадающий список с помощью тега <select></select>. В тег <option></option> заносится содержимое столбца «identificator» соответствующей таблицы, которая указана в переменной $result. Это одна из двух причин, для чего были созданы другие таблицы, на которые имеются ссылки. Принцип создания выпадающего списка очень похож с созданием таблицы, поэтому я его описывать не стану. Результат можно увидеть на рисунке 5.

Рисунок 5 - Добавление новой записи

Чтобы отправить в БД занесённые данные в этих полях, необходим файл query-invite.php, на который ссылается форма, описанная выше для занесения данных. Содержимое этого файла таково:

<?php_once "connection.php";

$query = "INSERT INTO houses VALUES(0, '".$_POST['house_id']."', '".$_POST['street']."', '".$_POST['build_year']."', '".$_POST['house_type']."', '".$_POST['house_wall_material']."', '".$_POST['heating_system']."', '".$_POST['hot_water_system']."', '".$_POST['cold_water_system']."', '".$_POST['living_quarter']."', '".$_POST['not_living_quarter']."', '".$_POST['area_common_property']."')";

$result = mysql_query($query, $connection ) or die("Не удалось подключиться к серверу");("Location: DB.php");

?>

Сначала, включаем в этот файл connection.php файл, чтобы подключиться к БД, в которую нужно занести данные. После в переменную $query записываем с помощью метода POST команду SQL запроса (он передаёт данные, используя тело http запроса, то есть в адресной строке эти данные не увидеть).

Затем отправляем сам запрос с помощью переменной $result. Если всё прошло успешно, то результат можно увидеть сразу, так как команда «header» отправляет на ту страницу, где отображается основная таблица. В противном же случае появится сообщение на отдельной странице с сообщением: “Не удалось подключиться к серверу”.

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

<?php if($_SESSION['status'] != "login") {?>

<label>Логин:</label><br/>

<input type="text" name="name"><br/>

<label>Пароль:</label><br/>

<input type="password" name="password"><br/>

<input type="submit" name="submit" value="Войти">

<button formaction="registration.php">Регистрация</button>

<?php } else if($_SESSION['status']=="login") {?>

<label>Добро пожаловать,<?php echo $_SESSION['login']?></label>

<button formaction="logout.php">Выход</button>

<?php } ?>

</form>

Здесь в принципе выполняется то же самое, что и при создании формы для занесения данных в таблицу. После этого был создан файл с именем login.php, код которого расположен ниже:

<?php_start();"connection.php";

$login = $_POST['name'];

$password = $_POST['password'];

$query = "SELECT * FROM user WHERE (login = '".$login."') && (password = '".$password."')";

$result = mysql_query($query, $connection);

$user = mysql_fetch_array($result);

$_SESSION['id'] = $user['id'];

$_SESSION['login'] = $user['login'];

$_SESSION['status'] = "login";("Location: index.php")

Сессия необходима, для «слежки» за зарегистрированным пользователем.

Для того, чтобы завершить работу с базой данных, необходимо создать отдельный файл logout.php и в нем прописать код для завершения сессии:

<?php_start();_destroy();

header("Location: index.php");

?>

Последним штрихом в создании данного сайта является создание ссылок в блоке меню. Для этого в ранее созданном фале menu.php я напишу такой код:

<div>

<font face="Times New Roman" size="3" color="black">

<table align="center" background="4.png"width="1000">

<tr>

<td height="30" width="70" align="center">Главная"><a href="index.php">Главная</a></td>

<td height="30" width="70" align="center">База данных"><a href="DB.php">База данных</a></td>

<td height="30" width="70" align="center">Контакты"><a href="cont.php">Контакты</a></td>

</tr>

</table>

Описывать не стану, так как все указанные команды были подробно описаны выше.

4. ТЕСТИРОВАНИЕ ПП

.1 Тестирование базы данных

Отладка абсолютно всего кода проходила в процессе разработки программного продукта.

Изначально, было сразу ясно, что если имеется база данных, то необходимо проверить стабильность её работы. Во время тестирования база данных оказалась надёжной.

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

база данные приложение авторизация

4.2 Тестирование сайта

Вся суть тестирования сайта заключается в нормальном отображении информации во всех популярных браузерах, а именно Google Chrome, Opera, Mozilla Firefox и Safari. Некоторые заказчики требуют, чтобы так же хорошо контент отображался и в браузере Internet Explorer.

За всё время тестирования контент не искажался, не было замечено никаких дефектов во всех 5 перечисленных браузерах. Тестирование проводилось на двух мониторах с разрешением 1280х768 и 1024х768.

4.3 Функциональное тестирование

В данном тестировании была проведена проверка исправности работы всех кнопок и ссылок.

Работа кнопки «войти» - исправна.

Работа кнопки «регистрация» - исправна.

Работа кнопки «выход» - исправна.

Работа кнопки «Добавить запись» - исправна.

Ссылки работают исправно и отправляют на тот файл или страницу, которая указана в самой ссылке.

ЗАКЛЮЧЕНИЕ

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

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1.      Никсон, Р. Создаём динамические веб-сайты с помощью PHP, MySQL, JavaScript, CSS и HTML5. 3-е изд. - СПб.: Питер, 2015. - 688 с.

.        Мейер, Э. CSS - каскадные таблицы стилей. Подробное руководство, 3-издание. - Пер. с англ. - СПб: Символ-Плюс, - 2008. - 576 с., ил.

3.      Htmlbook.ru | Для тех, кто делает сайты [Электронный ресурс]: офиц. сайт. - Режим доступа: <https://www.htmlbook.ru>.

.        Крис, Джамеа. Эффективный самоучитель по креативному Web-дизайну. HTML, XHTML, CSS, JavaScript, PHP, ASP, ActiveX. Текст, графика, звук и анимация. Пер с англ./Крис Джамеа, Конрад Кинг, Энди Андерсон - М.: ООО «ДиаСофтЮП», 2005. - 672с.

.        Зандстра, Мэтт. PHP: объекты, шаблоны и методики программирования, 4-е издание.: Пер. с англ. - М.: ООО «И. Д. Вильямс», 2015. - 576.: ил. - Парал. тит. англ.

ПРИЛОЖЕНИЕ 1

(код страницы, на которую отправляет кнопка «Добавить запись»)

<?php include "header.php" ?>

<?php include "menu.php" ?>

<?php include "connection.php"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

<head>

<meta charset="utf-8"/>

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

</head>

<style>{: #00b0d8 url(3.png) repeat-x;

moz-background-size: 90%;

webkit-background-size:100%;

o-background-size: 100%;

}

<style>{: 300;

}

</style>

</style>

<body style="background-attachment: fixed" topmargin="0">

<div align="center">

<!--Document starts.-->

<form action="query-invite.php" method="post">

<label>Номер дома:</label><br />

<input type="text" name="house_id"><br />

<label>Улица:</label><br />

<input type="text" name="street"><br />

<label>Год ввода в эксплуатацию:</label><br />

<input type="text" name="build_year"><br />

<label>Тип здания:</label><br />

<?php

$result = mysql_query("SELECT identificator FROM house_type");'<select style="width: 175px" name="house_type">';($row = mysql_fetch_array($result))

{

$pole1=$row['identificator'];"<option value='$row[identificator]'>$row[identificator]</option>";

}"</select>";

?></br>

<label>Внешний материал здания:</label><br />

<?php

$result = mysql_query("SELECT type FROM house_wall_material");'<select style="width: 175px" name="house_wall_material">';($row = mysql_fetch_array($result))

{

$pole1=$row['identificator'];"<option value='$row[type]'>$row[type]</option>";

}"</select>";

?></br>

<label>Система отопления:</label><br />

<?php

$result = mysql_query("SELECT identificator FROM heating_system");'<select style="width: 175px" name="heating_system" >';($row = mysql_fetch_array($result))

{

$pole1=$row['identificator'];"<option value='$row[identificator]'>$row[identificator]</option>";

}"</select>";

?></br>

<label>Система подачи горячей воды:</label><br />

<?php

$result = mysql_query("SELECT identificator FROM hot_water_system");'<select style="width: 175px" name="hot_water_system">';($row = mysql_fetch_array($result))

{

$pole1=$row['identificator'];"<option value='$row[identificator]'>$row[identificator]</option>";

}"</select>";

?></br>

<label>Система подачи холодной воды:</label><br />

<?php

$result = mysql_query("SELECT identificator FROM cold_water_system");'<select style="width: 175px" name="cold_water_system">';($row = mysql_fetch_array($result))

{

$pole1=$row['identificator'];"<option value='$row[identificator]'>$row[identificator]</option>";

}"</select>";

?></br>

<label>Состояние здания:</label><br />

<?php

$result = mysql_query("SELECT identificator FROM house_state");'<select style="width: 175px" name="house_state">';($row = mysql_fetch_array($result))

{

$pole1=$row['identificator'];"<option value='$row[identificator]'>$row[identificator]</option>";

}"</select>";

?></br>

<label>Тип этажей здания:</label><br />

<?php

$result = mysql_query("SELECT identificator FROM house_floor_type");'<select style="width: 175px" name="house_floor_type">';($row = mysql_fetch_array($result))

{

$pole1=$row['identificator'];"<option value='$row[identificator]'>$row[identificator]</option>";

}"</select>";

<label>Система подачи электричества:</label><br />

<?php

$result = mysql_query("SELECT identificator FROM electricity_system");'<select style="width: 175px" name="electricity_system">';($row = mysql_fetch_array($result))

{

$pole1=$row['identificator'];"<option value='$row[identificator]'>$row[identificator]</option>";

}"</select>";

?></br>

<label>Система газоснабжения:</label><br />

<?php

$result = mysql_query("SELECT identificator FROM gas_system");'<select style="width: 175px" name="gas_system">';($row = mysql_fetch_array($result))

{

$pole1=$row['identificator'];"<option value='$row[identificator]'>$row[identificator]</option>";

}"</select>";

?></br>

<label>Жилая площадь:</label><br />

<input type="text" name="living_quarter"><br />

<label>Нежилая площадь:</label><br />

<input type="text" name="not_living_quarter"><br />

<label>Общая площадь:</label><br />

<input type="text" name="area_common_property"><br />

<input type="submit" name="submit"><br/>

</form>

</div>

</body>

</html>

ПРИЛОЖЕНИЕ 2

(блок авторизации пользователя)

<?php include "header.php" ?>

<?php include "menu.php" ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

<head>

<title>Регистрация</title>

<meta charset="utf-8"/>

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

</head>

<style>{: #00b0d8 url(3.png) repeat-x;

moz-background-size: 90%;

webkit-background-size:100%;

o-background-size: 100%;

}

</style>

<body style="background-attachment: fixed" topmargin="0">

<div align="center">

<!--Document starts.-->

<form action="query-registration.php" method="post">

<label>Логин:</label><br />

<input type="text" name="login"><br />

<label>Пароль:</label><br />

<input type="password" name="password"><br />

<label>email:</label><br />

<input type="email" name="email"><br />

<input type="submit" name="submit"><br />

</form>

</div>

</body>

</html>

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

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!