Web-система агентства недвижимости

Разработка базы данных учета жилого фонда для агентства недвижимости. Выбор архитектуры информационной системы. Критерии выбора языка программирования для проектирования базы данных. Запросы к базе данных. Упрощенный документооборот жилого фонда.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 12.11.2012
Размер файла 53,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

1. Разработка информационной модели предметной области

1.1 Описание предметной области решаемой задачи

Процесс продажи недвижимости состоит в следующем:

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

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

- Фирма может заключать юридические соглашения о распространении недвижимости с рядом фирм - владельцев объектов недвижимости.

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

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

- сотрудники;

- клиенты (покупатели);

- фирмы - владельцы;

- каталог;

- объекты недвижимости;

- заказы.

В список основных бизнес-процессов, происходящих в фирме можно включить следующие пункты:

- составление каталога;

- рассылка каталога;

- анализ рынка;

- продажи;

- оформление счетов и накладных;

- управление работой персонала;

- реклама;

- решение бухгалтерских задач.

Главное в постановке задачи - построении информационной модели предприятия.

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

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

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

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

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

Таким образом, входящими документами для учета объектов недвижимости и сделок по ним являются:

- договор купли-продажи;

- договор аренды.

Исходящими документами являют следующие отчеты:

- Отчет по заработной плате всем сотрудникам;

- Отчет по заработной плате конкретному сотруднику;

- Отчет по прибыли от сделок;

- Отчет по прибыли от сделок за период;

- Отчет о проданных объектах;

- Отчет об объектах, сданных в аренду.

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

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

- Наименование организации: РА «Одесса»;

- Адрес организации: 400006, г. Одесса, пр. Мира, дом 20;

- Телефон организации: (88442) 798-97-55;

- Руководитель организации (Ф.И.О.): Иванов Илья Иванович;

- Главный бухгалтер (Ф.И.О.): Васильева Маргарита Юрьевна;

- Идентификационный номер налогоплательщика (ИНН): 3444234652;

- Код причины постановки на учёт (КПП): 545423468;

- Расчетный счет: 54354621324894231357;

- Наименование Банка: Приватбанк ОСБ №8621;

- Банковский Идентификационный Код (БИК): 545613245;

- Корреспондентский счет: 54138534544545787545.

1.2 Описание входных документов

Входными документами являются:

1. Договор купли-продажи объекта недвижимости или договор аренды. Один договор может содержать в себе несколько операций. Договор содержит следующие данные:

- Номер документа;

- Дата составления;

- Наименование и реквизиты организации-исполнителя;

- Ф.И.О. продавца / арендодателя, адрес проживания;

- Ф.И.О. покупателя / арендатора, адрес проживания;

- Характеристика объекта продажи / аренды;

- Стоимость объекта купли-продажи / сдачи в аренду.

Бланки документов «Договор купли-продажи» и «Договор аренды» представлен в приложении 1.

1.3 Описание содержания отчетных документов

Отчеты, которые будут реализованы в базе данных:

1. Отчет «Отчет по заработной плате сотрудникам», содержит следующие атрибуты:

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

- Заработная плата за операцию;

- Дата операции;

- Тип операции;

- Стоимость сделки;

- Итог по заработной плате за все проведенные операции;

- Реквизиты организации.

2. Отчет «Отчет по заработной плате сотруднику» (содержит сведения о заработной плате конкретному сотруднику, Ф.И.О. которого вводится пользователем при формировании отчета):

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

- Заработная плата за операцию;

- Дата операции;

- Тип операции;

- Стоимость сделки;

- Итог по заработной плате за все проведенные операции;

- Реквизиты организации.

3. Отчет «Прибыль от сделок», данные которого сгруппированы по месяцам:

- Дата операции;

- Тип операции;

- Объект;

- Адрес объекта;

- Сотрудник;

- Стоимость объекта;

- Прибыль от сделки;

- Итоговая прибыль по всем сделкам;

- Реквизиты организации.

4. Отчет «Прибыль от сделок за период» (содержит сведения о прибыли организации за конкретный период времени, вводимый пользователем при формировании отчета):

- Дата операции;

- Тип операции;

- Объект;

- Адрес объекта;

- Сотрудник;

- Стоимость объекта;

- Прибыль от сделки;

- Итоговая прибыль по сделкам за период;

- Реквизиты организации.

5. Отчет «Объекты продажи»:

- Наименование объекта;

- Адрес объекта;

- Количество комнат;

- Общая площадь;

- Жилая площадь;

- Этаж;

- Этажность;

- Стоимость объекта;

- Реквизиты организации.

6. Отчет «Объекты аренды»:

- Наименование объекта;

- Адрес объекта;

- Количество комнат;

- Общая площадь;

- Жилая площадь;

- Этаж;

- Этажность;

- Стоимость объекта;

- Реквизиты организации.

Программное приложение должно предоставлять следующие возможности по работе с разрабатываемой базой данных:

- добавление новых данных в каждую таблицу;

- редактирование уже введенных данных;

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

Список ограничений.

1. Номера документов уникальны;

2. Для одного объекта продажи / аренды имеется только один клиент-собственник;

3. Типы операций и типы объектов заранее определены;

4. Используемая валюта: рубль;

5. Стоимость сделки является конечной и не изменяемой.

1.4 Обзор аналогичных систем

Как правило, общие требования к сайту агентства примерно такие:

ѕ хороший дизайн;

ѕ одна или несколько баз данных объектов в зависимости от рода деятельности агентства;

ѕ система администрирования для этих баз данных и страниц;

ѕ формы заявок «куплю / продам» и т.п.;

ѕ 10-20 различных информационных страниц (о компании, об услугах, схема проезда и т.п.).

Рассмотрим рейтинг сайтов агентств недвижимости г. Киева, проведенный в 2010 г.

Первое место в рейтинге заслуженно занимает сайт www.ksalfa.ru. Сразу видно, что компания не стоит на месте, и администратор уделяет сайту должное внимание. Красивое flash оформление не даёт сразу же пользователям Internet закрыть сайт. На сайте много объектов, которые вам смогут показать, а при случае и продать. Грамотная сортировка объектов позволяет практически сразу же найти то, что ищешь. Но сайт имеет некоторые недостатки: не хватает отзывов клиентов - ведь, критика ещё никому не мешала, а хорошие отзывы тем более.

Второе место - сайт www.rodnikrk.ru - сайт агентства недвижимости «Родник». Сайт имеет хороший дизайн. Но на сайте реализован примитивный поиск. Судя по содержанию, агентство больше делает упор на дачи и земельные участки. Для поиска земли сайт идеален. Обновление сайта, по-видимому, не чаще одного раза в неделю. Второй момент - нельзя сохранить фотографии к себе на ПК. Может оно и верно - меньше плагиата. Самый большой недостаток - долгая загрузка страниц

Третье место - сайт агентства недвижимости «Фаворит» - www.fvrt.info

Здесь понравился поиск и дизайн. Сайт обновляется часто, но вот объектов - мало.

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

2. Выбор аппаратно-программных средств для реализации информационной системы

2.1 Выбор архитектуры информационной системы

На сегодня неоспорим тот факт, что современный уровень web-технологий позволяет считать их наиболее перспективными для создания распределенных информационных систем. Это могут быть не только открытые Internet-системы, но и «закрытые» корпоративные автоматизированные системы управления, распределенные на большие территории и расстояния. Существенной особенностью таких систем является осуществление удаленного доступа к хранилищам информации - базам данных. Объединение Internet-технологий и технологий СУБД как способа организации доступа к данным имеет ряд безусловных достоинств и требует не только знания этих технологий, но и умения анализировать и выбирать оптимальные архитектуры таких информационных систем.

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

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

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

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

- хранение и резервное копирование данных;

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

- обеспечение авторизованного доступа к данным на основе проверки прав и привилегий пользователей;

- протоколирование операций и ведение журнала транзакций.

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

- сервера баз данных, управляющего данными и выполняющего запросы клиентских приложений;

- клиентских приложений, предоставляющих интерфейс пользователя и посылающих запросы к серверу.

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

Решением проблем, связанных с реализацией архитектуры клиент-сервер внутри корпоративной сети, таких как:

- требование к однородности рабочих мест;

- сильнейший трафик в сети;

- загрузка сервера баз данных;

- невозможность удаленной работы

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

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

Технология World Wide Web (WWW), в переводе «Всемирная паутина», получила широкое распространение из-за простоты своих пользовательских интерфейсов. В технологии WWW все ключевые понятия просматриваемого документа: слова, изображения - имеют возможность «раскрыться» новым документом, развивающим это понятие. Такой способ представления информации называется гипертекстом, а документы, представленные в таком виде - гипертекстовыми документами. Для описания этих документов используется специальный язык - язык описания гипертекстовых документов или HTML (HyperText Markup Language).

Использование технологий WWW для обеспечения доступа к каким-либо информационным ресурсам подразумевает существование следующих компонентов:

IP (Internet Protocol) - сети с поддержкой базового набора услуг по передаче данных с единой политикой нумерации и маршрутизации, работающим сервисом имен DNS (Domain Name System - доменная система имен, которая позволяет присваивать IP-адресам имена для определения местонахождения компьютера); выделенного информационного сервера - WWW-сервера, обеспечивающего предоставление гипертекстовых документов через IP-сеть в ответ на запросы WWW-клиентов.

Internet в целом и WWW, в частности, работает по технологии клиент - сервер, то есть все программное обеспечение разделяется на клиентскую и серверную части. Также между ними распределены функциональные обязанности. Для взаимодействия этих частей разработан специальный протокол HTTP (Hyper Text Transfer Protocol - протокол для передачи гипертекстовых документов), и все взаимодействие между клиентом и сервером осуществляется в рамках данного протокола.

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

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

Достоинства трехуровневой архитектуры клиент-сервер:

- «тонкий» клиент снижает стоимость аппаратного обеспечения рабочей станции;

- централизация бизнес-логики позволяет централизовать сопровождение приложения (не нужно инсталлировать программное обеспечение на все рабочие станции);

- модульность упрощает модификацию и замену;

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

Трехуровневая архитектура естественно отображается на среду WEB, где web-браузер выполняет роль «тонкого» клиента, а web-сервер - роль сервера приложений, при этом трехзвенная архитектура может быть расширена до N уровней.

Архитектура WEB-приложений, публикующих базы данных, включает дополнительные уровни, такие как сервер базы данных, сервер приложений, источники данных. В зависимости от того, как распределяются звенья ИС на узлах компьютерной сети, могут быть определенны двухуровневые, трехуровневые либо N-уровневые WEB-приложения.

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

Достоинства интеграции СУБД в среду WEB:

- простота реализации;

- независимость от платформы;

- графический интерфейс пользователя;

- преимущество использования функций СУБД;

- прозрачный сетевой доступ;

- масштабирование развертывания.

После выбора архитектуры проектируемой системы необходимо произвести выбор инструментальных средств: СУБД и языка программирования.

Описание выбранной СУБД

При выборе СУБД для манипулирования хранящейся в базе данных информацией прежде всего необходимо определить следующее:

- что за данные будут храниться в базе, какова должна быть их структура;

- насколько сложны данные;

- каков предполагаемый объем данных;

- прогноз роста базы данных;

- основные операции над данными и сложность этих операций.

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

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

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

Таким образом, исходя из вышеперечисленных требований, можно утверждать, что лучше всего им соответствует СУБД MySQL.

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

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

MySql может поддерживать одновременную работу с базой данных 50 пользователей, при этом все пользователи гарантировано будут работать с актуальными данными.

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

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

MySQL - это программа-сервер, постоянно работающая на компьютере. Клиентские программы посылают ей специальные запросы через механизм сокетов, она их обрабатывает и посылает результат. Затем, также по специальному запросу клиент, весь этот результат или его часть передаётся обратно. Механизм использования сокетов подразумевает вышеупомянутую технологию клиент-сервер, что означает, что в системе должна быть запущена специальная программа - MySQL-сервер, которая принимает и обрабатывает запросы от программ.

MySQL поддерживает язык запросов SQL в стандарте ANSI 92, и кроме этого имеет множество расширений к этому стандарту, которых нет ни в одной другой СУБД.

Краткий перечень возможностей MySQL.

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

- Количество строк в таблицах может достигать 50 млн.

- Быстрое выполнение команд. Возможно MySQL самый быстрый сервер из существующих.

- Простая и эффективная система безопасности.

MySQL действительно очень быстрый сервер, но для достижения этого разработчикам пришлось пожертвовать некоторыми требованиями к реляционным СУБД. В MySQL отсутствуют:

- Поддержка вложенных запросов

- Не реализована поддержка транзакций. Взамен предлагается использовать LOCK/UNLOCK TABLE.

- Нет поддержки внешних ключей.

- Нет поддержки триггеров и хранимых процедур.

- Нет поддержки представлений.

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

2.2 Выбор языка программирования

Критерии выбора языка программирования

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

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

- средства доступа к переменным среды. - Необходимы, так как с помощью переменных среды данные передаются на вход скрипта;

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

Выбор языка зависит и от операционной системы WWW-сервера. Большая часть имеющихся серверов предназначены для работы под управлением операционной системы UNIX. В этой операционной системе очень распространено использование скриптов - текстовых командных файлов, представляющих собой программы, состоящие из обращений к командам операционной системы и управляющих конструкций языка shell - командной оболочки UNIX. Программа shell является интерпретатором команд операционной системы и, в то же время, имеет встроенные средства, характерные для языков программирования: строковые переменные и управляющие конструкции - операторы цикла, перехода, условные операторы и т.д. При помощи скриптов осуществляется значительная часть работы по конфигурированию операционной системы. С распространенностью командных процедур в UNIX связано появление в этой операционной системе ряда интерпретирующих языков, предназначенных для создания сценариев: РНР, Perl, Python, Tcl и др. Для WWW-сервера стандарта NCSA прикладные программы или CGI-модули могут быть написаны на таких языках программирования как C, C++, UNIX shell, Fortran, Perl, Visual Basic, TCL.

Одним из наиболее распространенных языков программирования для Web является PНР, который и будет использоваться в данной работе для написания скриптов, обрабатывающих потоки данных от клиента к WWW-серверу и формирующих обратные потоки данных.

Характеристики РНР

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

- традиционностью;

- простотой;

- эффективностью;

- безопасностью;

- гибкостью.

Традиционность. - Многие конструкции языка позаимствованы из С и Perl, а нередко код РНР практически неотличим от того, что встречается в программах на С или Pascal. Это заметно снижает начальные усилия при изучении РНР.

Простота. - Сценарий РНР может состоять из 10 000 строк или из одной строки - все зависит от специфики задачи. При этом нет необходимости подгружать библиотеки, указывать специальные параметры компиляции или что-нибудь в этом роде. Механизм РНР начинает выполнять код после первой экранирующей последовательности (<?) и продолжает выполнение до того момента, когда он встретит парную экранирующую последовательность (?>). Если код имеет правильный синтаксис, он исполняется в точности так, как указал программист.

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

Безопасность. - РНР предоставляет в распоряжение разработчиков и администраторов гибкие и эффективные средства безопасности, которые условно делятся на две категории: средства системного уровня и средства уровня приложения.

Средства безопасности системного уровня. - В РНР реализованы механизмы безопасности, находящиеся под управлением администраторов; при правильной настройке РНР это обеспечивает максимальную свободу действий и безопасность. РНР может работать в так называемом безопасном режиме, который ограничивает возможности применения РНР пользователями по ряду важных показателей. Например, можно ограничить максимальное время выполнения и использование памяти (неконтролируемый расход памяти отрицательно влияет на быстродействие сервера). Администратор также может устанавливать ограничения на каталоги, в которых пользователь может просматривать и исполнять сценарии РНР, а также использовать сценарии РНР для просмотра конфиденциальной информации на сервере (например, файла passwd).

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

Гибкость. - Поскольку РНР является встраиваемым языком, он отличается исключительной гибкостью по отношению к потребностям разработчика. Хотя РНР обычно рекомендуется использовать в сочетании с HTML, он с таким же успехом интегрируется и в JavaScript, WML, XML и другие языки. Кроме того, хорошо структурированные приложения РНР легко расширяются по мере необходимости.

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

Поскольку РНР не содержит кода, ориентированного на конкретный web-сервер, пользователи не ограничиваются определенными серверами. Apache, Microsoft IIS, Netscape Enterprise Server, Stronghold и Zeus - РНР работает на всех перечисленных серверах. Поскольку эти серверы работают на разных платформах, РНР в целом является платформенно-независимым языком и существует на таких платформах, как UNIX, Solaris, FreeBSD и Windows.

3. Проектирование базы данных

3.1 Разработка инфологической модели предметной области

Описание информационных объектов

Все информационные объекты рассматриваемой предметной области поделены на следующие структурные элементы:

1. Информационные объекты, относящиеся к организации: Реквизиты организации, Сотрудники организации;

2. Информационные объекты, относящиеся к клиентам: Сведения о клиентах.

3. Информационные объекты, относящиеся к объектам недвижимости: Сведения об объектах; Типы объектов;

4. Информационные объекты, относящиеся к договорам: Сведения об операциях; Типы операций.

Рассмотрим каждый из этих структурных элементов и выделим сущности.

1) Сущность организация.

- Код организации (КодОрганизации);

- Наименование организации (НаименованиеОрганизации);

- Адрес организации (Адрес);

- Телефон (Телефон);

- Ф.И.О. руководителя (Руководитель);

- Главный бухгалтер (Главныйбухгалтер);

- Идентификационный номер налогоплательщика (ИНН);

- Код причины постановки на учёт (КПП);

- Расчетный счет (Р/С);

- Банковский Идентификационный Код (БИК);

- Наименование Банка (Наименование банка);

- Корреспондентский счет (К/С).

2) Сущность сотрудники.

- Код Сотрудника (КодСотрудника);

- Ф.И.О. сотрудника (ФИОсотрудника);

- Дата рождения (Датарождения);

- Адрес проживания сотрудника (Адреспроживания);

- Контактный телефон (Контактныйтелефон).

3) Сущность клиенты.

- Код клиента (Код Клиента);

- Ф.И.О. клиента (Ф.И.О. Клиента);

- Адрес (Адрес);

- Контактный теелфон (Телефон);

- Код объекта (КодОбъекта).

4) Сущность объекты.

- Код объекта (КодОбъекта);

- Тип объекта (ТипОбъекта);

- Тип операции (ТипОперации);

- Адрес объекта (АдресОбъекта);

- Количество комнат (КоличествоКомнат);

- Общая площадь (ОбщаяПлощадь);

- Жилая площадь (ЖилаяПлощадь);

- Этаж (Этаж);

- Этажность (Этажность);

- Стоимость (Стоимость).

5) Сущность типы объектов.

- Код типа объекта (КодТипаОбъекта);

- Наименование типа объекта (НаименованиеТипаОбъекта).

6) Сущность операции.

- Код операции (КодОперации);

- Код типа операции (КодТипаОперации);

- Дата операции (ДатаОперации);

- Код организации (КодОрганизации);

- Код клиента (КодКлиента);

- Код объекта (КодОбъекта);

- Код сотрудника (КодСотрудника);

- Стоимость (Стоимость).

7) Сущность типы операций:

- Код типа операции (КодТипаОперации);

- Наименование типа операции (НаименованиеТипаОперации).

Нормализация информационных объектов

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

Результатами анализа проведенного в предыдущем разделе стали 7 сущностей: организация, сотрудники, клиенты, объекты, типы объектов, операции, типы операций. Каждая сущность характеризуется группой атрибутов, часть из которых может дублироваться в других сущностях. Для оптимизации данных необходимо провести процедуру нормализации, которая выполняется поэтапно.

Первая нормальная форма (1НФ). Для нее требуется, чтобы таблица была плоской и не содержала повторяющихся групп. У плоской таблицы есть только две характеристики - длина (количество записей или строк) и ширина (количество полей или столбцов). Такая таблица не должна содержать ячеек, включающих несколько значений. Т.е. в одну ячейку не должны помещаться несколько атрибутов.

Для приведения сущностей к таблицам первой нормальной форме, необходимо исключить дублирование множества характеристик между двумя сущностями, путем присвоения ключевых атрибутов тем сущностям, которые их не имеют. Так, например, для определения объекта недвижимости, принадлежащего клиенту в сущности клиенты нет необходимости дублировать характеристики сущности ОБЪЕКТЫ, достаточно внести в атрибуты сущности КЛИЕНТЫ ключевое поле: Код Объекта (КодОбъекта). А в сущности ОБЪЕКТЫ заменить атрибут «Номер объекта» на «Код Объекта», и в дальнейшем связать две этих сущности через созданное поле. Аналогичным образом по необходимости добавляются ключевые атрибуты к другим сущностям.

Для второй нормальной формы (2НФ) требуется, чтобы все поля таблицы зависели от первичного ключа, то есть, чтобы первичный ключ однозначно определял запись и не был избыточен. Значение первичного ключа в таблице БД должно быть уникальным, т.е. в таблице не должно существовать двух и более записей с одинаковым значением первичного ключа. Те поля, которые зависят только от части первичного ключа, должны быть выделены в составе отдельных таблиц. Примером приведение таблиц ко второй нормальной форме, является разделение сведений о счетах на две сущности типы операций и типы объектов.

Для третьей нормальной формы (ЗНФ) требуется, чтобы все не ключевые столбцы таблицы зависели от первичного ключа таблицы, но были независимы друг от друга. Для этого требуется, чтобы таблицы были приведены к 1НФ и 2НФ.

3.2 Разработка даталогической модели

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

Ниже представлены сущности и их атрибуты виде таблиц реляционной базы данных (РБД) с описанием ограничений и примером заполнения.

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

Поле

Данные контрольного примера

(*) КодОрганизации

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

Агентство по недвижимости «Одесса»

ИНН

3444234652

КПП

545423468

Адрес

400006, г. Одесса, пр. им. Ленина, дом 206

Телефон

(88442) 798-97-55

Руководитель

Алтухов Илья Георгиевич

Главный бухгалтер

Кранникова Маргарита Юрьевна

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

54354621324894231357

БИК

545613245

Банк

Волгоградское ОСБ №8621

К/С

54138534544545787545

Таблица 3.2 - Описание логической структуры таблицы «Организация»

Поле

Тип данных

Ограничения

(*) Код Организации

Счетчик

Последовательное Уникальное

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

Текстовый (255)

Не более 255 символов

ИНН

Текстовый (10)

10 цифр

КПП

Текстовый (9)

9 цифр

Адрес

Текстовый (255)

Не более 255 символов

Телефон

Текстовый (20)

Не более 20 символов

Руководитель

Текстовый (50)

Не более 50 символов

Главный бухгалтер

Текстовый (50)

Не более 50 символов

ОКПО

Текстовый (8)

8 цифр

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

Текстовый (20)

20 цифр

БИК

Текстовый (9)

9 цифр

Банк

Текстовый (50)

Не более 100 символов

К/С

Текстовый (20)

20 цифр

Таблица 3.3 - Таблица «Клиенты»

Поле

Контрольный пример 1

Контрольный пример 2

(*) КодКлиента

1

2

ФИО Клиента

Иванов Петр Михайлович

Федоров Иван Михайлович

Адрес Проживания

ул. Борьбы, дом 2, кв. 11

ул. Козловская, дом 55

Контактный телефон

(76423) 167-56-43

(86725) 453-73-45

Таблица 3.4 - Описание логической структуры таблицы «Клиенты»

Поле

Тип данных

Ограничения

(*) КодКлиента

Счетчик

Последовательное, Уникальное

ФИОКлиента

Текстовый (50)

Не более 50 символов

Адрес Проживания

Текстовый (50)

Не более 50 символов

Контактный телефон

Текстовый (20)

Не более 20 символов

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

Поле

Контрольный пример 1

Контрольный пример 2

(*) КодСотрудника

1

2

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

Петелина Виктория Александровна

Романенко Марина Александровна

Дата рождения

07.09.1986

10.04.1981

Паспортные данные

18 05 802978

18 05 809858

Адрес проживания

ул. Борьбы, дом 2, кв. 11

ул. Кропоткина, дом 11, кв. 34

Контактный телефон

(75435) 753-45-34

(45757) 742-58-54

Таблица 3.6 - Описание логической структуры таблицы «Сотрудники»

Поле

Тип данных

Ограничения

(*) КодСотрудника

Счетчик

Последовательное, Уникальное

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

Текстовый (50)

Не более 50 символов

Дата рождения

Дата/время

Краткий формат

Паспортные данные

Текстовый (20)

Не более 20 символов

Адрес проживания

Текстовый (50)

Не более 50 символов

Контактный телефон

Текстовый (20)

Не более 20 символов

Таблица 3.7 - Таблица «Объекты»

Поле

Контрольный пример 1

Контрольный пример 2

(*) КодОбъекта

1

2

(*) КодТипаОперации

1

1

(*) КодТипаОбъекта

1

2

АдресОбъекта

ул. КИМ, дом 5

ул. Рабоче-Крестьянская, дом 2, кв. 4

КоличествоКомнат

4

3

ОбщаяПлощадь

59,5

79,5

ЖилаяПлощадь

33,4

53,5

Этаж

3

Этажность

2

5

Стоимость

2500000 грн.

3200000 грн.

Таблица 3.8 - Описание логической структуры таблицы «Клиенты»

Поле

Тип данных

Ограничения

(*) КодОбъекта

Счетчик

Последовательное, Уникальное

(*) КодТипаОперации

Числовой

Длинное целое

(*) КодТипаОбъекта

Числовой

Длинное целое

АдресОбъекта

Текстовый (50)

Не более 50 символов

КоличествоКомнат

Числовой

Длинное целое

ОбщаяПлощадь

Числовой

Длинное целое, 1 знак после запятой

ЖилаяПлощадь

Числовой

Длинное целое, 1 знак после запятой

Этаж

Числовой

Длинное целое

Этажность

Числовой

Длинное целое

Стоимость

Денежный

2 знака после запятой

Таблица 3.9 - Таблица «Операции»

Поле

Контрольный пример 1

Контрольный пример 2

(*) КодОперации

1

2

ДатаОперации

19.06.2009

22.06.2009

(*) КодТипаОперации

1

2

(*) КодОрганизации

1

1

(*) КодКлиента

3

4

(*) КодОбъекта

2

5

(*) КодСотрудника

3

3

Стоимость

2400000 грн.

7000 грн.

Таблица 3.10 - Описание логической структуры таблицы «Операции»

Поле

Тип данных

Ограничения

(*) КодОперации

Счетчик

Последовательное, уникальное

ДатаОперации

Дата/время

Краткий формат

(*) КодТипаОперации

Числовой

Длинное целое

(*) КодОрганизации

Числовой

Длинное целое

(*) КодКлиента

Числовой

Длинное целое

(*) КодОбъекта

Числовой

Длинное целое

(*) КодСотрудника

Числовой

Длинное целое

Стоимость

Денежный

2 знака после запятой

Таблица 3.11 - Таблица «Типы объектов»

Поле

Контрольный пример 1

Контрольный пример 2

(*) Код Типа Объекта

1

2

Наименование Типа Объекта

Дом

Квартира

Таблица 3.12 - Описание логической структуры таблицы «Валютные счета организации»

Поле

Тип данных

Ограничения

(*) КодТипаОбъекта

Счетчик

Последовательное, уникальное

НаименованиеТипаОбъекта

Текстовый (20)

Не более 20 символов

Таблица 3.13 - Таблица «Типы операций»

Поле

Контрольный пример 1

Контрольный пример 2

(*) КодТипаОперации

1

2

НаименованиеТипаОперации

Дом

Квартира

Таблица 3.14 - Описание логической структуры таблицы «Типы операций

Поле

Тип данных

Ограничения

(*) КодТипаОперации

Счетчик

Последовательное, уникальное

НаименованиеТипаОперации

Текстовый (20)

Не более 20 символов

Описание запросов к базе данных

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

Запрос «Вычисление заработной платы». Назначение данного запроса собрать информацию о сотрудниках, проведенных ими операциях и начислить заработную плату, рассчитываемую от стоимости проданного / сданного объекта. Он должен содержать в себе следующие данные:

из таблицы СОТРУДНИКИ:

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

из таблицы ОПЕРАЦИИ:

- Дата операции;

- Стоимость.

из таблицы ТИПЫ ОПЕРАЦИИ:

- Тип операции.

из таблицы ОРГАНИЗАЦИЯ:

- Наименование организации;

- ИНН;

- КПП

- Адрес организации;

- Телефон организации;

- Руководитель организации;

- Главный бухгалтер организации.

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

- БИК;

- Наименование банка;

- К/С.

Вычисляемые поля: Заработная плата: Операции! [Стоимость (руб.)]*0,05*0,15 Условия выборки нет.

Запрос «Заработная плата сотрудника». Назначение данного запроса собрать информацию о сотруднике, фамилия которого является условием выборки и вводится пользователем, проведенных ими операциях и начислить заработную плату, рассчитываемую от стоимости проданного / сданного объекта. Он должен содержать в себе следующие данные:

из таблицы СОТРУДНИКИ:

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

из таблицы ОПЕРАЦИИ:

- Дата операции;

- Стоимость.

из таблицы ТИПЫ ОПЕРАЦИИ:

- Тип операции.

из таблицы ОРГАНИЗАЦИЯ:

- Наименование организации;

- ИНН;

- КПП

- Адрес организации;

- Телефон организации;

- Руководитель организации;

- Главный бухгалтер организации.

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

- БИК;

- Наименование банка;

- К/С.

Условие отбора:

[СОТРУДНИКИ]. [Ф.И.О. Сотрудника]=[Введите Ф.И.О. сотрудника]

Вычисляемые поля:

Заработная плата: Операции! [Стоимость (руб.)]*0,05*0,15

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

из таблицы ОПЕРАЦИИ:

- Дата операции;

- Стоимость.

из таблицы ТИПЫ ОПЕРАЦИИ:

- Тип операции.

из таблицы ОБЪЕКТЫ:

- Адрес объекта.

из таблицы СОТРУДНИКИ:

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

из таблицы ОРГАНИЗАЦИЯ:

- Наименование организации;

- ИНН;

- КПП

- Адрес организации;

- Телефон организации;

- Руководитель организации;

- Главный бухгалтер организации.

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

- БИК;

- Наименование банка;

- К/С.

Условий для выборки нет.

Вычисляемые поля:

Прибыль от сделки: Операции! [Стоимость (руб.)]*0,05

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

из таблицы ДОГОВОРА:

- Номер договора.

из таблицы ОПЕРАЦИИ:

- Код операции;

- Вид операции;

- Дата проведения операции;

- Сумма в валюте.

из таблицы ОРГАНИЗАЦИЯ:

- Наименование организации;

- ИНН;

- Адрес организации;

- Телефон организации;

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

- БИК;

- Руководитель организации;

- Главный бухгалтер организации.

Условие для выборки:

[ОПЕРАЦИИ]. [Дата операции]=» Between [Введите начальную дату] And [Введите конечную дату]»

Вычисляемые поля:

Прибыль от сделки: Операции! [Стоимость (руб.)]*0,05

Запрос «Объекты продажи». Данный запрос формирует список проданных объектов недвижимости. Запрос содержит следующие данные:

из таблицы ТИПЫ ОБЪЕКТОВ:

- Наименование типа объекта.

из таблицы ТИПЫ ОПЕРАЦИИ:

- Тип операции.

из таблицы ОБЪЕКТЫ:

- Адрес объекта;

- Количество комнат;

- Общая площадь;

- Жилая площадь;

- Этаж;

- Этажность;

- Стоимость.

из таблицы ОРГАНИЗАЦИЯ:

- Наименование организации;

- ИНН;

- КПП

- Адрес организации;

- Телефон организации;

- Руководитель организации;

- Главный бухгалтер организации.

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

- БИК;

- Наименование банка;

- К/С.

Условие выборки:

[ТИПЫ ОПЕРАЦИЙ]. [Наименование типа операции]= «Продажа»

Запрос «Объекты аренды». Данный запрос формирует список объектов недвижимости, сданных в аренду. Запрос содержит следующие данные:

из таблицы ТИПЫ ОБЪЕКТОВ:

- Наименование типа объекта.

из таблицы ТИПЫ ОПЕРАЦИИ:

- Тип операции.

из таблицы ОБЪЕКТЫ:

- Адрес объекта;

- Количество комнат;

- Общая площадь;

- Жилая площадь;

- Этаж;

- Этажность;

- Стоимость.

из таблицы ОРГАНИЗАЦИЯ:

- Наименование организации;

- ИНН;

- КПП

- Адрес организации;

- Телефон организации;

- Руководитель организации;

- Главный бухгалтер организации.

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

- БИК;

- Наименование банка;

- К/С.

Условие выборки:

[ТИПЫ ОПЕРАЦИЙ]. [Наименование типа операции]= «Сдача в аренду»

Описание содержания и вида выходных документов

В базе данных будет разработано шесть отчетов: отчет «Вычисление заработной платы», отчет «Заработная плата сотрудника», отчет «Прибыль от сделок», отчет «Прибыль от сделок за период», отчет «Объекты продажи», отчет «Объекты аренды».

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

Описание технологии ведения базы данных

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

Формирование схемы данных

Разработка информационной системы

Аутентификация пользователя

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

После успешной авторизации попадаем на главную страницу сайта.

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

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

Агенства предлагает просмотреть объявления о продаже квартир.

Возможно заполнить заказ на покупку квартиры

Установка и системные требования

Необходимо организовать http-сервер с возможностью выполнения скриптов и доступа из скриптов до SQL сервера. В качестве http-сервера был выбран Web-сервер Apache. Для выполнения скриптов был выбран php. В качестве сервера баз данных был выбран MySQL. Для быстрой установки этого программного обеспечения использована система установки DENWER.

Выше перечисленные компоненты могут быть установлены и настроены как на UNIX-платформе так и Windows.

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

Заключение

недвижимость база документооборот программирование

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

На основе данных документов и деятельности, связанной с ними, были выявлены 7 сущностей, связанных между собой.

Количество созданных таблиц и форм совпадает, и равно количеству определенных сущностей.

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

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

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

Литература

Т. Коннолли, К. Бегг, А. Страчан. Базы данных: проектирование, реализация и сопровождение. Теория и практика. Уч. пос. - М.: Издательский дом «Вильямс», 2000.

Рэнди Джей Яргер, Джордж Риз, Тим Кин. MySQL и mSQL. Базы данных для небольших предприятий и интернета. - СПб.: Издательство «Символ», Санкт-Петербург, 2000.

Александр Качанов, Вадим Ткаченко, Андрей Головин. Букварь по PHP и MySQL. // Студия StealthWeb, 2000.

1. Ратшиллер Т., Геркер Т. РНР: разработка web-приложений. Библиотека программиста - СПб.: Питер, 2001

Кастаньето Дж., Рават Х., Шуман С., Сколло К., Велиаф Д. Профессиональное РНР программирование. - СПб.: Символ-Плюс, 2001.

Дюбуа Поль. MySQL. Уч. пос. - М.: Издательский дом «Вильямс», 2001.

А. Матросов, А. Сергеев, М. Чаунин. HTML 4.0. - СПб.: БХВ-Петербург, 2000.

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

Мещеряков Е.В., Хомоненко А.Д. Публикация баз данных в Интернете. - СПб.: БХП-Петербург, 2001

Пауэлл Томас А. WEB-дизайн: Пер.с англ. - СПб.:БХВ-Петербург, 2002 Томсон Лаура, Веллинг Люк. Разработка WEB-приложений на РНР и MySQL с англ., - Диасофт, Москва, СПб, Киев

Кузнецов В.В. Проектирование баз данных. Учебное пособие. Часть 1 - М.: ИКЦ «Маркетинг», МУПК, 2001. - 58 с.

Назаров В.В. Базы данных. Проектирование и реализация: Практикум по курсу / Московский государственный университет экономики, статистики и информатики - М., 2004. - 21 c.

Информатика. Учебник для студ. вузов/ Под ред. Н.В. Макаровой, М.: ФиС, 2000 г. - 247 с.

Кузнецов В.В. Базы данных: Практикум. Часть 2 - М.: МУПК, 2003 г. - 56 с.

Базы данных. Учебник для высших учебных заведений/ Под ред. А.Д. Хомоненко: СПб «Корона», 2002 г. - 266 с.

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.