Корпоративный сайт Главного федерального инспектора по УР

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

Корпоративный сайт Главного федерального инспектора по УР

Введение

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

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

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

Так что же такое World Wide Web, или, как говорят в просторечии, WWW, the Web, или еще более простое - 3W? WWW - это распределенная информационная система мультимедиа, основанная на гипертексте. Давайте разберем это определение по порядку.

)        распределенная информационная система: информация сохраняется на множестве так называемыхвеб-серверов (servers). Пользователи, которые имеют доступ к сети, получают эту информацию с помощью программ-клиентов, программ просмотра WWW-документов. При этом программа просмотра посылает по компьютерной сети запрос серверу, который сохраняет файл с необходимым документом. В ответ на запрос сервер высылает программе просмотра этот необходимый файл или сообщение об отказе, если файл по тем или иным причинам недоступен. Взаимодействие клиент-сервер происходит по определенным правилам, или, как говорят, протоколам. Протокол, принятый в WWW, называется HyperText Transfer Protocol, сокращенно - HTTP.

)        мультимедиа: информация включает в себя не только текст, но и двух- и трехмерную графику, видео и звук.

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

Итак, веб-страница может содержать стилизованный и форматированный текст, графику и гиперсвязи с разными ресурсами интернет. Чтобы реализовать все эти возможности, был разработанный специальный язык, названная HyperText Markup Language (HTML), то есть, Язык Разметки Гипертекста. Документ, написанный на HTML, представляет собой текстовый файл, который содержит собственно текст, несущий информацию читателю, и флаги разметки. Последние представляют собой определенные последовательности символов, которые являются инструкциями для программы просмотра; в соответствии с этими инструкциями программа располагает текст на экране, включает в него рисунки, которые сохраняются в отдельных графических файлах, и формирует гиперсвязи с другими документами или ресурсами интернет.

1. Разработка системы «Корпоративный сайт Главного федерального инспектора по УР»

 

1.1 Обоснование целесообразности разработки системы

 

1.1.1 Назначение объекта автоматизации

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

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

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

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

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

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

)        принимает участие в работе органов государственной власти соответствующего субъекта Российской Федерации, а также органов местного самоуправления, находящихся на территории соответствующего субъекта Российской Федерации;

)        участвует в работе органов государственной власти соответствующего субъекта Российской Федерации и органов местного самоуправления, находящихся на территории соответствующего субъекта Российской Федерации;

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

1.1.2 Обоснование цели создания системы

Основной целью создания информационного портала политической направленности является оповещение населения актуальной информацией (новости, указы, приказы, законы), а также возможность общения между высшими органами власти или их представителями с населением посредством сети интернет. На помощь в достижении этой цели в Удмуртской республике направлена разработка системы «Корпоративный сайт Главного федерального инспектора по УР».

Информационный портал - это лёгкий способ обеспечить население политической информацией.

Разрабатываемая система позволит:

)        оповещать население актуальной информацией;

)        выкладывать отчёты о проделанной работе;

)        просмотреть текущие проекты, осуществляемые органами власти;

)        обеспечить обратную связь;

)        управлять работой системы;

)        получить информацию об аналогичных сайтах;

)        преподносить информацию на 2 языках (русский и удмуртский);

)        ознакомиться с составом органов власти.

 

1.1.3 Обоснование состава автоматизируемых задач

В состав задач для автоматизации можно вынести следующие пункты:

)        создание эффективного средства массовой информации;

)        динамическое наполнение и изменение информационных материалов системы;

)        легкая расширяемость и переносимость, как иерархической структуры, так и содержимого системы;

)        обеспечение обратной связи между аппаратом ГФИ и населением.

 

1.2 Аналитический обзор


Интернет-пространство является одним из средств коммуникации и входит в перечень средств массовой информации. В последние годы Интернет-пространство Российской Федерации претерпевает бурный рост: за десять лет с 1999 г. по 2011 г. количество пользователей возросло во много раз с 1 млн. до 57 миллиона человек.

К числу преимуществ Интернета перед другими информационными ресурсами и СМИ следует отнести возможность обмена информацией в больших объемах с высокой скоростью и в интерактивном режиме; оперативность донесения информации до потенциального пользователя; техническая и финансовая доступность. Многие из преимуществ интернета используются обществом не в полном объёме. Однако уже с начала 2000 годов (в 2002 году принято постановление Правительства Российской Федерации №65 «О федеральной целевой программе «Электронная Россия»), органами государственной власти уделяется пристальное внимание внедрению информационных технологий в деятельность государственных органов, в огромной степени с целью повышения степени информированности граждан РФ о деятельности органов государственной власти, налаживанию дополнительных средств обратной связи государства и общества, созданию действенных механизмов контроля.

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

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

В ходе изучения предметной области выпускной квалификационной работы были изучены аналоги сайтов других республик РФ. Аналитический обзор аналогичных сайтов рассмотрен в пунктах 1.2.1, 1.2.2, 1.2.3.

 

1.2.1 Сайт главного федерального инспектора по Республике Башкортостан

Web-сайт главного федерального инспектора по республике Башкортостан /13/. Первое посещение сайта сопровождалось долго загрузкой главной страницы, что говорит нам о плохой оптимизации кода и высокой загруженности страницы. Дизайн сайта выполнен в строгом стиле. Из функциональных модулей имеются только новостные блоки, остальное статическая информация. В целом сайт прост и удобен, но не отражает возможности современных технологий разработки. Главная страница сайтаизображена на рис. 1.1.

Рис. 1.1. Главная страница сайта главного федерального инспектора по республике Башкортостан

1.2.2 Сайт главного федерального инспектора по Самарской области

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

Рис. 1.2. Главная страница сайта главного федерального инспектора по Самарской области

1.2.3 Сайт главного федерально инспектора по республике Татарстан

Web-сайт главного федерального инспектора по республике Татарстан /15/. Дизайн выполнен в строгом стиле. Из функциональных модулей имеются новостные блоки, поиск по сайту и фоторепортажи с собственной галереей. Сайт работает достаточно быстро, для комфортного просмотра разделов сайта. Можно легко и быстро найти нужную информацию. Главная страница сайта изображена на рис. 1.3.

Рис. 1.3. Главная страница сайта главного федерального инспектора по республике Татарстан

 

1.2.4 Выводы по аналитическому обзору

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

 

.3 Основные требования к системе

 

1.3.1 Основные цели создания системы и критерии эффективности ее функционирования

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

Критерии эффективности функционирования могут быть разбиты по нескольким признакам:

)        функциональность, в том числе:

         правильность - точное соответствие выходных документов системы существующим нормативным документам;

         адекватность - наличие и степень достаточности функций системы для решения поставленных задач;

         защищённость - способность предотвращения несанкционированного доступа к данным системы;

)        надёжность, в том числе:

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

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

)        удобство использования, в том числе:

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

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

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

)        эффективность, включает в себя:

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

         время ёмкость - время реакции системы на запросы пользователей;

)        сопровождаемость, включает в себя:

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

         модифицируемость - время, необходимое для внесения изменений;

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

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

 

1.3.2 Функциональное назначение системы

Использование информационного портала позволяет:

         оперативно размещать информационные ресурсы в сети;

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

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

         повысить информативность лиц, принимающих решения;

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

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

 

1.3.3 Особенности системы «Корпоративный сайт Главного федерального инспектора по УР» иусловия эксплуатации, определяющие основные требования к системе

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

 

1.3.4 Требования к функциональной структуре системы

Структура системы «Корпоративный сайт Главного федерального инспектора по УР» изображена на рис. 1.4.

Как видно из диаграммы система «Корпоративный сайт Главного Федерального инспектора по УР» делится на 3 подсистемы:

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

         подсистема управления пользовательским интерфейсом;

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


Рис. 1.4. Структурная схема системы

 

1.3.5 Типовые проектные решения и (или) пакеты прикладных программ, применяемые в системе

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

В системе применяются средства для работы с интернет браузерами:

IE 6, IE 7, IE 8, IE 9, Mozilla Firefox, Google Chrome, Opera, Safari, Netscape.

1.3.6. Требования к техническому обеспечению

Требования к техническому обеспечению рабочего места пользователя системы:

)        процессор с частотой не менее 1800 МГц;

)        оперативная память не менее 512 МБ;

)        жёсткий диск с объёмом свободного пространства не менее 1 ГБ;

)        цветной монитор;

)        клавиатура;

)        устройство управления курсором.

Минимальные требования к техническому обеспечению сервера:

)        процессор с частотой не менее 3 ГГц;

)        оперативной памяти не менее 2 ГБ;

)        жёсткий диск с объёмом свободного пространства 5 ГБ.

1.3.7 Требования к информационному обеспечению

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

К информационному обеспечению предъявляется следующие общие требования:

)        информационное обеспечение должно бытьдостаточным для поддержания всех автоматизируемых функций объекта;

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

)        формы документов должны отвечать требованиям;

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

)        простота получения необходимых пользователю отчётных форм и иной информации;

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

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

)        формирование первичных документов;

)        ввод новых и корректировка ранее введённых данных;

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

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

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

)        логические структуры данных не должны зависеть от физического устройства носителя данных.

 

1.3.8 Требования к программному обеспечению

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

)        операционная система Windowsили Unix;

)        веб-сервер с поддержкой PHPи PostgreSQL.

СредиПО клиентской части системы должна быть операционная система Windowsс веб-браузером для просмотра страниц портала.

 

1.4 Основные технические решения проекта системы

 

1.4.1 Описание организации информационной базы

База данных сервера организована с помощью СУБД PostgreSQL.

Описание таблиц базы данных системы «Корпоратиный сайт Главного федеральноо инспектора по УР»:

-        таблица audioсодержит сведения об аудио - файлах;

-        таблица blockсодержит блоки информации;

-        таблицаblock_ftsсодержит информацию для полно контекстного поиска по таблице block;

-        таблица block_mageсодержит изображения для блоков информации;

-        таблица cityсодержит названия городов;

-        таблица galleryсодержит изображения для галерей;

-        таблица gallery_albumсодержит альбомы изображений;

-        таблица gallery_maguсодержит изображения для галерей;

-        таблицаgallery_magu_albumсодержитальбомыгалерей;

-        таблица gallery_topсодержит изображения галереи;

-        таблица journalсодержит сведения о журналах;

-        таблица linkсодержит ссылки на политические ресурсы;

-        таблица main_page содержит связи пунктов меню и страниц;

-        таблица menuсодержит меню;

-        таблица menu_topсодержит пункты меню;

-        таблица newsсодержит информацию о новостях;

-        таблица news_ftsсодержит информацию для полноконтекстного поиска в таблице news;

-        таблица news_imageсодержит изображения для новостей;

-        таблица pageсодержит информацию о страницах;

Рис. 1.5. Структура и связи между таблицамибазы данных

 


1.4.2 Описание системы программного обеспечения

Для реализации и функционирования проекта необходимо общесистемное программное обеспечение ОС Windows XP и выше, также как минимум стандартный браузер Internet Explorer 6.0, установленные плагины Adobe Flash Player и Adobe Reader, с помощью которого и воспроизводится материал системы. В стандартной комплектации ОС Windows XP, браузер устанавливается при установке самой операционной системы, плагины Adobe Flash Player и Adobe Reader устанавливаются отдельно.

Для разработки тела использовался язык HTML, который стабильно работает в среде ОС Windows XP и выше. Этот язык, позволяет качественно и на достаточном уровне выполнить систему необходимой сложности. Язык, используемый для написания сценариев Javascript хорошо работает во всех ОС, не требует дополнительного ПО.

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

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

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

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

 

2.1 Описание постановки задачи

сайт инспектор запрос интерфейс

2.1.1 Характеристика задачи

Подсистема управления данными входит в состав системы «Корпоративный сайт Главного федерального инспектора по УР», она предназначена для подключения системы к базе данных и корректного выполнения запросов к базе, с помощью которых строится интерфейс системы. Целесообразность создания данной подсистемы обусловлена большими объемами информации, содержащейся в системе и необходимой организации некоторой структуры системы.

Задача включает всебя следующие подзадачи:

         создание структуры базы данных;

         создание базового класса для подключения к БД;

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

         написание хранимых процедур;

         выполнение запросов к БД.

Подзадача «создание базового класса для подключения к БД». Заключается в написании модуля для создания подключения к базе данных PostgreSQL.

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

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

Подзадача «выполнение запросов к БД». Реализуется для получения данных из таблиц базы данных.

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

 

2.1.2 Входная информация

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

 

2.1.3 Выходная информация

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

 

2.1.4 Математическая постановка задачи

Множество - одно из ключевых понятий математики, в частности, теории множеств и логики. Формулировка множества, принадлежащая Бертрану Расселу: «Множество суть совокупность различных элементов, мыслимая как единое целое».

Множество объектов, обладающих свойством A(x), обозначим . Если некоторое множество , то A(x) называем характеристическим свойством множества Y.

2.2 Описание алгоритма обработки запросов

 

2.2.1 Назначение и характеристика алгоритма

Алгоритм предназначен для подключения к базе данных иобработкивходящего запроса для формированния нового обработанного запроса к базе данных.

 

2.2.2 Используемая информация

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

 

2.2.3 Результаты решения

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

 

2.2.4 Алгоритм решения

Алгоритм представлен в виде схемы графически на рис. 2.1.

Рис. 2.1. Схема алгоритма обработки запросов

2.3 Описание алгоритма выборки информации из базы данных

 

2.3.1 Назначение и характеристика алгоритма

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

 

2.3.2 Используемаяинформация

Вкачествевходнойинформациииспользуетсяинформация, содержащаясявтаблицах: audio, block, block_mage, city, gallery, gallery_album, gallery_magu, gallery_magu_album, gallery_top, journal, link, menu, menu_top, news, news_image, page, plane, plane_image, project, quest_answer, quest_answer_image.

 

2.3.3 Результаты решения

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

 

2.3.4 Алгоритм решения

Алгоритм представлен графически в виде схемы на рис. 2.2.

Рис. 2.2. Схема алгоритма выборки информации из базы данных

2.4 Описание алгоритма добавления информации в базу данных

 

2.4.1 Назначение и характеристика алгоритма

Алгоритм предназначен для добавленияновой информации в базу данных.

2.4.2 Используемаяинформация

Вкачествевходнойинформациииспользуетсяинформация, содержащаясявтаблицах: audio, block, block_mage, city, gallery, gallery_album, gallery_magu, gallery_magu_album, gallery_top, journal, link, menu, menu_top, news, news_image, page, plane, plane_image, project, quest_answer, quest_answer_image.

 

2.4.3 Результаты решения

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

 

2.4.4 Алгоритм решения

Алгоритм представлен графически в виде схемы на рис. 2.3.

Рис. 2.3. Схема алгоритма добавления информации в базу данных

2.5 Описание алгоритма обновления информации в базе данных

 

2.5.1 Назначение и характеристика алгоритма

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

 

2.5.2 Используемаяинформация

Вкачествевходнойинформациииспользуетсяинформация, содержащаясявтаблицах: audio, block, block_mage, city, gallery, gallery_album, gallery_magu, gallery_magu_album, gallery_top, journal, link, menu, menu_top, news, news_image.

 

2.5.3 Результаты решения

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

 

2.5.4 Алгоритм решения


Рис. 2.4. Схема алгоритма обновления информации в базе данных

2.6 Описание алгоритма удаления информации из базы данных

 

2.6.1 Назначение и характеристика алгоритма

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

 

2.6.2 Используемаяинформация

Вкачествевходнойинформациииспользуетсяинформация, содержащаясявтаблицах: audio, block, block_mage, city, gallery, gallery_album, gallery_magu.

 

2.6.3 Результаты решения

Результатом решения алгоритма является обновлённая таблица базы данных, которая образуется за счёт удаления старых элементов таблицы базы данных

 

2.6.4 Алгоритм решения


Рис. 2.5. Схема алгоритма удаления информации из базы данных

2.7 Описание программы управления данными

 

.7.1 Функциональное назначение

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

Программа написана на языке PHPи PL/pgSQL.

 

2.7.2 Описание информации

Входная информация представлена в виде запросов на языке SQL.

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

 

2.7.3 Используемые подпрограммы

Используемые подпрограммы:

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

2)      select() - подпрограмма предназначена для обработки входящего запроса select, если входящий запрос на выборку данных из таблиц, то эта подпрограмма обрабатывает запрос поступающий на вход в программу;

3)      update() - подпрограмма предназначена для обработки входящего запроса update, если входящий запрос на обновление данных в таблице, то эта подпрограмма обрабатывает запрос поступающий на вход в программу;

4)      insert() - подпрограмма предназначена для обработки входящего запроса insert, если входящий запрос на вставку данных в таблицу, то эта подпрограмма обрабатывает запрос поступающий на вход в программу;

5)      delete() - подпрограмма предназначена для обработки входящего запроса delete, если входящий запрос на выборку данных из таблиц, то эта подпрограмма обрабатывает запрос поступающий на вход в программу;

)        getQuery() - подпрограмма предназначена для формирования обработанного запроса;

)        send_query() - подпрограмма предназначена для выполнения сформированного запроса к базе данных;

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

 

2.7.4 Описание логики


Рис. 2.6

2.8 Описание контрольного примера

 

2.8.1 Назначение

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

 

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

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

Для тестирования подсистемы, используем следующие запросы:

1.      audio_get() - вывести всю информацию о аудиозаписях;

2.      city_get() - вывести всю информацию о городах;

3.      gallery_album_get() - вывести всю информацию о каталогах изображений;

4.      journal_get() - вывести всю информацию о журналах pdf;

5.      link_get() - вывести всю информацию о аналогичных проектах в других регионах.

 

2.8.3 Результаты расчета

Распечатки полученных программой выходных форм документов приведены в приложении.

 

2.8.4 Результаты испытания программы на контрольном примере

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

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

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


Заключение

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

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

         доступность;

-        интерактивность;

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

-        оперативность распространения и получения информации;

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

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

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

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

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

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

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

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


Список литературы

1)      К. Дари, Б. Бринзаре, Ф. Черзе-Тоза, М. Бусика. AJAXи PHP. Разработка динамических веб-приложений. С.-П.: Символ плюс, 2006.

)        Малыхина М.П. Базы данных: основы, проектирование, использование. С.-П.: БХВ-Петербург, 2004.

)        Энди Гутманс, Стиг Баккен, Дерик Ретанс. PHP 5. С.-П.: Символ плюс, 2006.

)        Скот Хоккинс. Администрирование web-сервера Apache. М.: Издательский дом «Вильямс», 2001.

)        Робин Никсон. Создаем динамические веб-сайты с помощью PHP, MySQL и javascript. С.-П.: Символ плюс, 2011.

)        Рейсиг Д. JavaScript. Профессиональные приёмы программирования. С.-П., 2008.

)        Д. Скляр, А. Трахтенберг. PHP. Рецепты программирования. Русская Редакция, БХВ-Петербург, 2007.

)        Дж. Уорсли, Дж. Дрейк. PostgreSQL. Для профессионалов. С.-П., 2003.

)        Пол Вилтон, Джереми МакПик. JavaScript. Руководство программиста. С.-П., 2009.

)        Люк Веллинг, Лора Томсон. Разработка веб-приложений с помощью PHP и MySQL. М.: Вильямс, 2010.

)        Мишель Е. Дэвис и Джон А. Филлипс. Изучаем PHP и MySQL. С.-П.: Символ плюс, 2008.

)        Дж. Уорсли, Дж. Дрейк. PostgreSQL. Для профессионалов. С.-П.: Питер, 2003.

)        Интернет ресурс. Web-сайт главного федерального инспектора по республике Башкортостан: http://federalrb.ru/.

)        Интернет ресурс. Web-сайт главного федерального инспектора по Самарской области: http://www.federal.samara.ru/.

)        Интернет ресурс. Web-сайт главного федерального инспектора по Самарской области: http://federal16.ru/.

)        ГОСТ 19.701-90 ЕСПД. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения.

)        ГОСТ 19.201-78 ЕСПД. Техническое задание. Требования к содержанию и оформлению.

)        ГОСТ 19.401-78 ЕСПД. Текст программы. Требования к содержанию и оформлению.

)        ГОСТ 19.402-78 ЕСПД. Описание программы.

)        ГОСТ 19.404-79 ЕСПД. Пояснительная записка. Требования к содержанию и оформлению.

)        ГОСТ 19.505-79 ЕСПД. Руководство оператора. Требования к содержанию и оформлению.

)        Соболева В.П. Методические указания по оформлению курсовых и дипломных работ. - Ижевск: Изд-во ИжГТУ, 2008. - 25 с.

)        Сенилов М.А., Архипов И.О., Соболева В.П. Методические указания по выполнению выпускной работы бакалавра. Направление 230100.62 «Информатика и вычислительная техника» для студентов кафедры «Программное обеспечение». - Ижевск: Издательство ИжГТУ, 2010 г. - 19 с.


Приложение

ТЕКСТЫПРОГРАММ

<? php

classdataQuery {

function __construct() {

$this->dataArray = array();

$this->dataArray [«select»] = array();

$this->dataArray [«table»] = array();

$this->dataArray [«where»] = array();

$this->dataArray [«set»] = array();

$this->dataArray [«distinct»] = array();

$this->dataArray [«ascOrderBy»] = array();

$this->dataArray [«descOrderBy»] = array();

$this->dataArray [«columns»] = array();

$this->dataArray [«values»] = array();

$this->dataArray [«merge_insert»] = array();

$this->dataArray [«usingJoin»] = array();

$this->dataArray [«leftJoin»] = array();

$this->dataArray [«joinArray»] = array();

$this->dataArray ['EXT_table'] = array();

$this->dataArray['errorHandler'] = array();

$this->queryColumn = array();

$this->direction = «»;

$this->ERROR = false;

$this->ERROR_STR = «»;

$this->ans = false;

$this->sort_deptch = 0;

$this->alias_ar = array();

$this->checker = false;

$this->cache = false;

}

// - DIRECTION-function select() {

$array = func_get_args();($i=0;$i<sizeof($array);$i++) {(preg_match(«/^[a-zA-Z0-9_.\*]*$/»,$array[$i])) {$this->dataArray [«select»][] = $array[$i];}{$this->ERROR=true;$this->ERROR_STR.=» [select] [».$i.»]:колонка '».$array[$i]. «' не ^[a-zA-Z0-9_.]*$ <br>»;}

};$this->direction = «SELECT»; return $this;

}function update() {

$array = func_get_args();($i=0;$i<sizeof($array);$i++) {(preg_match(«/^[a-zA-Z0-9_.]*$/»,$array[$i])) {$this->dataArray['table'][] = $array[$i];}{$this->ERROR=true;$this->ERROR_STR.=» [update] [».$i.»]:таблица '».$array[$i]. «' не ^[a-zA-Z0-9_.]*$ <br>»;}

};$this->direction = «UPDATE»; return $this;

}function insert() {

$array = func_get_args();($i=0;$i<sizeof($array);$i++) {(preg_match(«/^[a-zA-Z0-9_.]*$/»,$array[$i])) {$this->dataArray['table'][] = $array[$i];}{$this->ERROR=true;$this->ERROR_STR.=» [insert] [».$i.»]:таблица '».$array[$i]. «' не ^[a-zA-Z0-9_.]*$ <br>»;}

};$this->direction = «INSERT INTO»; return $this;

}function delete() {

$array = func_get_args();($i=0;$i<sizeof($array);$i++) {(preg_match(«/^[a-zA-Z0-9_.]*$/»,$table_string)) {$this->dataArray['table'][] = $array[$i];}{$this->ERROR=true;$this->ERROR_STR.=» [delete] [».$i.»]:таблица '».$array[$i]. «' не ^[a-zA-Z0-9_.]*$ <br>»;}

};$this->direction = «DELETE»; return $this;

}

// - COMPAQ-function from() {

$array = func_get_args();($i=0;$i<sizeof($array);$i++) {(preg_match(«/^[a-zA-Z0-9_.]+(\s*[a-zA-Z]*)?$/»,$array[$i])) {$this->dataArray['table'][]=$array[$i];}{$this->ERROR=true;$this->ERROR_STR.=» [from] [».$i.»]:таблица '».$array[$i]. «' не ^[a-zA-Z0-9_.]*$ <br>»;}

}; return $this;

}function set() {return $this->paker_2 (func_get_args(), «set», «set»);}function where() {return $this->paker_2 (func_get_args(), «where», «where»);}function distinct() {return $this->paker_3 (func_get_args(), «distinct»);}function ascOrderBy() {return $this->paker_3 (func_get_args(), «ascOrderBy»);}function descOrderBy() {return $this->paker_3 (func_get_args(), «descOrderBy»);}function columns() {return $this->paker_3 (func_get_args(), «columns»);}function values() {return $this->paker_4 (func_get_args(), «values»);}function join ($type,$table,$method) {

$this->dataArray ['EXT_table'][] = $table;(! preg_match(«/^[a-zA-Z0-9_.]+(\s*[a-zA-Z]*)?$/»,$table)) {$this->ERROR=true;$this->ERROR_STR.=» [join]:таблица '».$array[$i]. «' не ^[a-zA-Z0-9_.]+(\s*[a-zA-Z]*)?$ <br>»;}

$array = func_get_args();$ar = array();($i=3;$i<sizeof($array);$i++) {$ar[] = $array[$i];}($i=0;$i<sizeof($ar);$i++) {if (! preg_match(«/^[a-zA-Z0-9_.]*$/»,$ar[$i])) {$this->ERROR=true;$this->ERROR_STR.=» [join] [».$i.»]:колонка '».$array[$i]. «' не ^[a-zA-Z0-9_.]*$ <br>»;}};

$this->dataArray [«joinArray»][] = array («type»=>$type, «table»=>$table, «method»=>$method, «ar»=>$ar);$this;

}

// - PAKER-function paker_4 ($array,$name_fn) {for ($i=0;$i<sizeof($array);$i++) {$this->dataArray [$name_fn][] = $array[$i];}; return $this;}function paker_3 ($array,$name_fn) {($i=0;$i<sizeof($array);$i++) {(preg_match(«/^[a-zA-Z0-9_.]*$/»,$array[$i])) {

$this->dataArray [$name_fn][]=$array[$i];$this->queryColumn[] = $array[$i];

} else {$this->ERROR=true;$this->ERROR_STR.=» [».$name_fn.»] [».$i.»]:колонка '».$array[$i]. «' не ^[a-zA-Z0-9_.]*$ <br>»;}

}; return $this;

}function paker_1 ($name_dataArray,$prefix,$delimetr,$name_fn) {

$ar=array(); foreach ($this->dataArray [$name_dataArray] as $key => $value) {$ar[]=$key.» =».$value;}(sizeof($ar)>0) {return «».$prefix. «».implode («».$delimetr. «»,$ar);} else {return «»;}

}function paker_2 ($array,$name_dataArray,$name_fn) {(sizeof($array)%2==0) {for ($i=0;$i<sizeof($array);$i+=2) {(preg_match(«/^[a-zA-Z0-9_.]*$/»,$array[$i])) {

$this->dataArray [$name_dataArray] [$array[$i]]=$array [$i+1];$this->queryColumn[]=$array[$i];

} else {$this->ERROR=true;$this->ERROR_STR.=» [set]:cтолбец '».$array[$i]. «' не ^[a-zA-Z0-9_.]*$ <br>»;}

}} else {$this->ERROR = true;$this->ERROR_STR.= «[».$name_dataArray.»]:количество».sizeof($array). "!%2 <br>»;}$this;

}

// - CONSTRUCT DATA-function constructWhere() {return $this->paker_1 («where», «WHERE», «AND», «constructWhere»);}function constructSet() {return $this->paker_1 («set», «SET»,»,», «constructSet»);}function constructDistinct() {if (sizeof ($this->dataArray['distinct'])>0) {return «DISTINCT ON (».implode (»,»,$this->dataArray['distinct']).»)»;} else {return «»;}}function constructAscOrderBy() {if (sizeof ($this->dataArray['ascOrderBy'])>0) {return «ORDER BY (».implode (»,»,$this->dataArray['ascOrderBy']).») ASC»;} else {return «»;}}function constructDescOrderBy() {if (sizeof ($this->dataArray['descOrderBy'])>0) {return «ORDER BY (».implode (»,»,$this->dataArray['descOrderBy']).») DESC»;} else {return «»;}}function constructColumns() {if (sizeof ($this->dataArray['columns'])>0) {return «(».implode (»,»,$this->dataArray['columns']).»)»;} else {return «»;}}function constructValues() {if (sizeof ($this->dataArray['values'])>0) {$ar=array(); foreach ($this->dataArray [«merge_insert»] as $key => $value) {$ar[]=$value;}; return» VALUES (».implode(»,»,$ar).»)»;} else {return «»;}}function constructJoin() {

$ar = array();($i=0;$i<sizeof ($this->dataArray [«joinArray»]);$i++) {($this->dataArray [«joinArray»] [$i] [«method»]) {«using»:

$ar[] = $this->dataArray [«joinArray»] [$i] [«type»]. «».$this->dataArray [«joinArray»] [$i] [«table»].» USING (».implode (»,»,$this->dataArray [«joinArray»] [$i] [«ar»]).»)»;;

}

}; return «».implode(«»,$ar);

}

// - CHECKER DATA-function check() {

$ar = array();$ar_table = array();

$arTable = array_merge ($this->dataArray['table'],$this->dataArray ['EXT_table']);($i=0;$i<sizeof($arTable);$i++) {$ar_table[$i] = explode («»,$arTable[$i]);$ar_table[$i] = $ar_table[$i] [0];}($i=0;$i<sizeof ($ar_table);$i++) {$ar[] = «table_name = '».$ar_table[$i]. «'»;}

$query = «select column_name, column_default, data_type, is_nullable, table_name FROM information_schema.columns where table_schema = 'public' and (».implode (» OR»,$ar).»)»;

$query = $_ENV['db']->send_query($query);($i=0;$i<sizeof ($ar_table);$i++) {

$flag = true;($j=0;$j<sizeof($query);$j++) {if ($ar_table[$i]==$query[$j] ['table_name']) {$flag=false; break;}}($flag) {$this->ERROR=true;$this->ERROR_STR.=» [check]:таблица '».$ar_table[$i]. «' не найдена<br>»;}

}(sizeof($query)>0) {

$this->checkErrorHandler ($this->dataArray [«where»]);$this->checkErrorHandler ($this->dataArray [«set»]);

$this->restore_value («where»,$query);$this->restore_value («set»,$query);

$this->isset_select_columns($query);$this->isset_insert_value($query);

} else {

$this->ERROR=true;$this->ERROR_STR.=» [check]:колонки в таблице '».implode(»,»,$arTable). «' не найдены<br>»;

}

}function isset_insert_value ($meta_info) {($i=0;$i<sizeof ($this->dataArray['columns']);$i++) {($this->dataArray['columns'] [$i]!=»» && $this->dataArray['values'] [$i]!=»») {

$this->dataArray [«merge_insert»] [$this->dataArray['columns'] [$i]] = $this->dataArray['values'] [$i];

}

};

$this->checkErrorHandler ($this->dataArray [«merge_insert»]);

$this->restore_value («merge_insert»,$meta_info);

$column_name = explode (».»,$this->dataArray['select'] [$i]);(sizeof ($column_name)>1) {$column_name = $column_name[1];} else {$column_name = $column_name[0];}($j=0;$j<sizeof ($meta_info);$j++) {

$flag = false;($column_name==$meta_info[$j] [«column_name»]) {$flag=true; break;} elseif ($column_name== «*») {$flag=true; break;}

}(!$flag) {$this->ERROR=true;$this->ERROR_STR.=» [isset_select_columns]:колонка '».$this->dataArray['select'] [$i]. «' не найдена.<br>»;}

}

}function checkErrorHandler($array) {(sizeof ($this->dataArray['errorHandler'])>0) {($array as $key => $value) {($i=0;$i<sizeof ($this->dataArray['errorHandler']);$i++) {($key == $this->dataArray['errorHandler'] [$i] [0]) {(! preg_match ($this->dataArray['errorHandler'] [$i] [1],$value)) {$this->ERROR=true;$this->ERROR_STR.=$this->dataArray['errorHandler'] [$i] [2].». <br>»;} break;

}

}

}

}

}function restore_value ($key_data,$meta_info) {($this->dataArray [$key_data] as $key => $value) {

$flag = false;$column_name = explode(».»,$key);(sizeof ($column_name)>1) {$column_name = $column_name[1];} else {$column_name = $column_name[0];}($i=0;$i<sizeof ($meta_info);$i++) {($column_name==$meta_info[$i] [«column_name»]) {

$flag = true;($this->is_type («int»,$meta_info[$i] [«data_type»])) {($value==»») {($meta_info[$i] [«column_default»]==»») {($meta_info[$i] [«is_nullable»]== «NO») {$this->ERROR.=true;$this->ERROR_STR=» [restoreValue]:колонка '».$key. «' должна иметь значение типа».$meta_info[$i] [«data_type»].» не нулевое. <br>»;

} else {$this->dataArray [$key_data] [$key] = «null»;}

} else {$this->dataArray [$key_data] [$key] = $meta_info[$i] [«column_default»];}

} else {(is_numeric($value)) {$this->dataArray [$key_data] [$key] = $value;}{$this->ERROR=true;$this->ERROR_STR.=» [restoreValue]:значение колонки '».$key. «' не может быть равно '».$value. «' так как тип данных».$meta_info[$i] [«data_type»].». <br>»;}

}

} elseif ($this->is_type («char»,$meta_info[$i] [«data_type»]) || $this->is_type («text»,$meta_info[$i] [«data_type»])) {($value==»») {($meta_info[$i] [«column_default»]==»») {($meta_info[$i] [«is_nullable»]== «NO») {$this->ERROR.=true;$this->ERROR_STR=» [restoreValue]:колонка '».$key. «' должна иметь значение типа».$meta_info[$i] [«data_type»].» не нулевое. <br>»;

} else {$this->dataArray [$key_data] [$key] = «null»;}

} else {$this->dataArray [$key_data] [$key] = $meta_info[$i] [«column_default»];}

} else {(is_string($value)) {$this->dataArray [$key_data] [$key] = «'».$this->string_encode($value). «'»;}{$this->ERROR=true;$this->ERROR_STR.=» [restoreValue]:значение колонки '».$key. «' не может быть равно '».$value. «' так как тип данных».$meta_info[$i] [«data_type»].». <br>»;}

}

} elseif ($this->is_type («date»,$meta_info[$i] [«data_type»]) || $this->is_type («times»,$meta_info[$i] [«data_type»])) {($value==»») {($meta_info[$i] [«column_default»]==»») {($meta_info[$i] [«is_nullable»]== «NO») {$this->ERROR.=true;$this->ERROR_STR=» [restoreValue]:колонка '».$key. «' должна иметь значение типа».$meta_info[$i] [«data_type»].» не нулевое. <br>»;

} else {$this->dataArray [$key_data] [$key] = «null»;}

} else {$this->dataArray [$key_data] [$key] = $meta_info[$i] [«column_default»];}

} else {(@date («Y-m-d», strtotime($value))==$value) {

$this->dataArray [$key_data] [$key] = «'».$this->string_encode($value). «'»;

} else {

$this->ERROR=true;$this->ERROR_STR.=» [restoreValue]:значение колонки '».$key. «' не может быть равно '».$value. «' так как тип данных».$meta_info[$i] [«data_type»].» (Y-m-d). <br>»;

}

}

}

}

}; if(!$flag) {$this->ERROR=true;$this->ERROR_STR.=» [restoreValue]:колонка '».$key. «' не найдена.<br>»;}

}

}function is_type ($type,$str) {if (sizeof (explode ($type,$str))>1) {return true;} else {return false;}}function string_encode($str) {$str = htmlspecialchars ($str, ENT_QUOTES); return $str;}

// - RETURN ANSWER-function getQuery() {

$this->check();

$this->checker = true;

$answer = «»;($this->direction) {«SELECT»:

$answer = $this->direction.$this->constructDistinct().implode (»,»,$this->dataArray [«select»]).» FROM».implode (»,»,$this->dataArray [«table»]).$this->constructJoin().$this->constructWhere().$this->constructAscOrderBy().$this->constructDescOrderBy();;«UPDATE»:

$answer = $this->direction.implode (»,»,$this->dataArray [«table»]).$this->constructSet().$this->constructWhere().$this->constructAscOrderBy().$this->constructDescOrderBy();;«INSERT INTO»:

$answer = $this->direction.implode (»,»,$this->dataArray [«table»]).$this->constructColumns().$this->constructValues();;«DELETE»:

$answer = $this->direction. «FROM».implode (»,»,$this->dataArray [«table»]).$this->constructWhere();;:

$this->ERROR=true;$this->ERROR_STR.= «[getQuery]:не определено направление [select||update||insert] <br>»;

break;

}; return $answer;

}function getUsingColumn() {return array_unique ($this->queryColumn);}function getTextSQL() {return $this->getQuery();}

// - SEND-function errorHandler() {$this->dataArray['errorHandler'] = func_get_args(); return $this;}function perform() {

$query = $this->getQuery();(!$this->ERROR) {($query!=»») {($this->cache) {

$md5_name = md5 ($query.$_ENV['config'] ['system_password']);

$filename = $_ENV['config'] ['cache_query_dir'].$md5_name.».txt»;($handler=@fopen ($filename, 'r')) {

$this->ans = $_ENV['ext']->getCacheArray(&$handler);

} else {

$this->ans = $_ENV['db']->send_query($query);

$_ENV['ext']->cacheArray ($this->ans,$filename);

}

} else {

$this->ans = @$_ENV['db']->send_query($query);

}($this->ans) {foreach ($this->ans[0] as $key=>$value) {$this->alias ($key,$key);}}

} else {

$this->ERROR=true;$this->ERROR_STR.= «[send]:запрос пуст <br>»;

}

}; return $this;

}function copy(&$tmp) {$tmp = $this->ans; return $this;}function error (&$flag,&$error,$jxNotice=false) {(!$this->checker) {$this->check();}($this->ERROR) {

$flag = true;

$error= «<div>

$_ENV['ajax']->jxCode («alert (\"».str_replace («<br>», «\r\n»,$this->ERROR_STR). «\»);»);

}

} else {$flag = false;}; return $this;}function cache() {$this->cache=true; return $this;}function group($key) {(!$this->ERROR) {

$array = func_get_args();($this->sort_deptch==0) {$this->ans=$this->grouper ($this->ans,$key,$array);}{$this->ans=$this->grouper2 ($this->ans,$key,$array, 0);};

$this->sort_deptch++;

}; return $this;

}function grouper2 ($arrays,$key,$array,$deptch) {// - group in deptch-($i=0;$i<sizeof($arrays);$i++) {($deptch==$this->sort_deptch-1) {$arrays[$i] [«group»] = $this->grouper ($arrays[$i] [«group»],$key,$array);}{$b=$deptch+1;$arrays[$i] [«group»]=$this->grouper2 ($arrays[$i] [«group»],$key,$array,$b);}

}; return $arrays;

}function grouper ($arrays,$key,$array) {// - group local array-

$dop = array(); for ($i=2;$i<sizeof($array);$i++) {$dop[] = $array[$i];}

$uniq_key = array();$uniq_key2 = array();($i=0;$i<sizeof($arrays);$i++) {foreach ($arrays[$i] as $tmp_key=>$tmp_value) {if ($tmp_key==$key) {$uniq_key[]=$tmp_value;}}}

$uniq_key = array_unique ($uniq_key);($uniq_key as $tmp_key => $value) {$uniq_key2 []=$value;};$uniq_key = $uniq_key2;

$uniq_key2 = array();($i=0;$i<sizeof ($uniq_key);$i++) {

$uniq_key2 [$i] [«meta»] [$key] = $uniq_key[$i];($j=0;$j<sizeof($arrays);$j++) {($arrays[$j] [$key]==$uniq_key[$i]) {

$uniq_key2 [$i] [«group»][] = $arrays[$j];(sizeof ($uniq_key2 [$i] [«group»])==1) {($g=0;$g<sizeof($dop);$g++) {$uniq_key2 [$i] [«meta»] [$dop[$g]] = $arrays[$j] [$dop[$g]];}

}

}

}

}; return $uniq_key2;

}function alias() {$arg=func_get_args(); for ($i=0;$i<sizeof($arg);$i+=2) {$this->alias_ar [$arg[$i]]=$arg [$i+1];}; return $this;}function createXML() {(!$this->ERROR) {

$arg = func_get_args();$this->inner_tag_name = $arg[0];

$this->use_xml_tag = array();($i=1;$i<sizeof($arg);$i++) {$this->use_xml_tag[]=$arg[$i];}

$this->dom = new DOMDocument ('1.0', 'UTF-8');

$this->root = $this->dom->createElement('dbQuery');

$this->dom->appendChild ($this->root);

$this->recursiveXML ($this->ans,$this->root);

$this->ans = $this->dom->saveXML();

}; return $this;

}function recursiveXML ($array,&$ref_parent) {($i=0;$i<sizeof($array);$i++) {(is_array ($array[$i] [«meta»]) || is_array ($array[$i] [«group»])) {

$counter_foreach = 0;$arg = array();($array[$i] [«meta»] as $key => $value) {($counter_foreach==0) {$tag_name=$this->alias_ar[$key];$arg[]=$key;$arg[]=$value;} else {$arg[]=$key;$arg[]=$value;}

$counter_foreach++;

}

$tmp = $this->addTag ($tag_name, «»,$arg);$ref_parent->appendChild($tmp);(sizeof ($array[$i] [«group»])!=0) {$this->recursiveXML ($array[$i] [«group»],$tmp);}

} else {

$arg = array();($j=0;$j<sizeof ($this->use_xml_tag);$j++) {($array[$i] as $key => $value) {if ($this->use_xml_tag[$j]==$key) {$arg[]=$key;$arg[]=$value; break;}}

};$tmp=$this->addTag ($this->inner_tag_name, «»,$arg);$ref_parent->appendChild($tmp);

}

}

}function addTag ($tag_name,$value) {

$jx = $this->dom->createElement ($tag_name,$value);

$args = func_get_args();(sizeof ($args[2])!=0) {

$args = $args[2];($i=0;$i<sizeof($args);$i+=2) {($this->alias_ar [$args[$i]]!=»») {$atr = $this->alias_ar [$args[$i]];}{$atr = $args[$i];}

$id_att= $this->dom->createAttribute($atr);

$jx_id = $this->dom->createTextNode ($args [$i+1]);

$id_att->appendChild ($jx_id);

$jx->appendChild ($id_att);

}

}; return $jx;

}

}postgreSQL {__construct() {

$this->hostname = $_ENV['config'] ['db_hostname'];

$this->database = $_ENV['config'] ['db_database'];

$this->username = $_ENV['config'] ['db_username'];

$this->password = $_ENV['config'] ['db_password'];

$this->port = $_ENV['config'] ['db_port'];

$this->link = pg_connect («host=$this->hostname port=$this->port dbname=$this->database user=$this->username password=$this->password») or $this->access=false;

}function send_query($query) {

$args=func_get_args();

$result = pg_query ($this->link,$query);($result) {

$ar = array();

$row_counter = 0;($row = pg_fetch_assoc($result)) {

$counter = 0;($row as $key => $value) {

$ar [$row_counter] [$key]=htmlspecialchars_decode ($value, ENT_QUOTES);

$counter++;

}

$row_counter++;

};($args[1]) {«row»:return $ar [$args[2]]; break;:return $ar; break;

}

} else {return false;}

}function dataQuery() {return new dataQuery($ans);}function convertKeyToIndex($ans) {

$ar=array();($i=0;$i<sizeof($ans);$i++) {$ar[$i]=array(); foreach ($ans[$i] as $key => $value) {$ar[$i][]=$value;}}$ar;

}

}

$_ENV['db'] = new postgreSQL();

?>

TABLE public.audio (_audio serial NOT NULL,text NOT NULL,

«text» text,_file varchar(255) NOT NULL,_add date NOT NULL,

/* Keys */audio_pkeyKEY (id_audio),audio_audio_file_key(audio_file)

) WITH (= FALSE

);

TABLE public.audioTO postgres;

TABLE public.block (_block serial NOT NULL,_page integer NOT NULL,_city integer,_position integer,_title text NOT NULL,_content text NOT NULL,

/* Keys */block_pkeyKEY (id_block),

/* Checks */block_block_content_check(block_content <> «:text),block_block_title_check(block_title <> «:text),

/* Foreign keys */block_id_city_fkeyKEY (id_city)public.city (id_city)DELETE SET NULLUPDATE CASCADE

) WITH (= FALSE

);

TRIGGER block_ftsINSERT OR UPDATEpublic.blockEACH ROWPROCEDURE public.block_fts();

TRIGGER check_block_bitINSERT OR DELETEpublic.blockEACH ROWPROCEDURE public.trg_check_block_bit();

TABLE public.blockTO postgres;

TABLE public.block_fts (_block integer NOT NULL,_fts tsvector,

/* Keys */block_fts_pkeyKEY (id_block),

/* Foreign keys */block_fts_id_block_fkeyKEY (id_block)public.block (id_block)DELETE CASCADEUPDATE CASCADE

) WITH (= FALSE

);

TABLE public.block_ftsTO postgres;

TABLE public.block_image (_block_image serial NOT NULL,_block integer NOT NULL,text NOT NULL,

/* Keys */block_image_pkeyKEY (id_block_image),block_image_file_key(file),

/* Checks */block_image_file_check(file <> «:text),

/* Foreign keys */block_image_id_block_fkeyKEY (id_block)public.block (id_block)DELETE CASCADEUPDATE CASCADE

) WITH (= FALSE

);

TABLE public.block_imageTO postgres;

TABLE public.city (_city serial NOT NULL,_name varchar NOT NULL,_yes bit(1) NOT NULL DEFAULT B'0': «bit»,

/* Keys */city_pkeyKEY (id_city),

/* Checks */city_city_name_check((city_name):text <> «:text)

) WITH (= FALSE

);

TABLE public.cityTO postgres;

TABLE public.gallery (_gallery serial NOT NULL,_gallery_album integer NOT NULL,_file text NOT NULL,_about text,

/* Keys */gallery_pkeyKEY (id_gallery),gallery_gallery_file_key(gallery_file),

/* Checks */gallery_gallery_file_check(gallery_file <> «:text),

/* Foreign keys */gallery_id_gallery_album_fkeyKEY (id_gallery_album)public.gallery_album (id_gallery_album)DELETE CASCADEUPDATE CASCADE

) WITH (= FALSE

);

TABLE public.galleryTO postgres;

TABLE public.gallery_album (_gallery_album serial NOT NULL,_album_file text NOT NULL,_album_text text NOT NULL,_album_date_add date NOT NULL DEFAULT (now()):date,

/* Keys */gallery_album_pkeyKEY (id_gallery_album),gallery_album_gallery_album_file_key(gallery_album_file)

END

Похожие работы на - Корпоративный сайт Главного федерального инспектора по УР

 

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