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

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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

Так как у меня нет навыка работы для создания макета сайта, поэтому воспользуюсь встроенной в ОС 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 />

Источник: https://www.bibliofond.ru/view.aspx?id=897000