ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«БЕЛГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ НАЦИОНАЛЬНЫЙ
ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ»
( Н И У
« Б е л Г У » )
ИНСТИТУТ ИНЖЕНЕРНЫХ ТЕХНОЛОГИЙ И ЕСТЕСТВЕННЫХ НАУК
КАФЕДРАМАТЕМАТИЧЕСКОГО
ИПРОГРАММНОГООБЕСПЕЧЕНИЯИНФОРМАЦИОННЫХСИСТЕМ
АВТОМАТИЗИРОВАННАЯ СИСТЕМА КОНТРОЛЯ ИЗБИРАТЕЛЬНОЙ
АКТИВНОСТИ ЗАМБИЙЦЕВ
Выпускная квалификационная работа
Обучающегося по направлению подготовки
02.03.03Математическое обеспечение и администрирование
информационных систем
очной формы обучения,
группы 07001302
Чисуло Леви
Научный руководитель
Доц. Бурданова Е.В.
БЕЛГОРОД 2017
2
СОДЕРЖАНИЕ
ВВЕДЕНИЕ...................................................................................................................3
1 ОБЗОР И АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ ................................................... 6
1.1 Проведение выборов в Северной Родезии ....................................................... 6
1.2 Проведение выборов в Республике Замбия ..................................................... 8
1.3 Влияние интернета на выборы ........................................................................ 10
1.4 Анализ существующего веб сайта «избирательная комиссия» ................... 11
2 РАЗРОБОТКА АВТОМАТИЗИРОВАННОЙ СИСТЕМЫ КОНТРОЛЯ
ИЗБИРАТЕЛЬНОЙ АКТИВНОСТИ ГРАЖДАН РЕСПУБЛИКИ ЗАМБИЯ ... 18
2.1 Инфологическое проектирование базы данных ............................................ 18
2.2 Даталогическая модель..................................................................................... 21
2.3 Используемые языки и программное обеспечение ....................................... 28
2.4 PostgreSQL CУБД.............................................................................................. 29
2.5 Разработка структуры сайта............................................................................. 31
2.6 Модель сайта ..................................................................................................... 32
3. РАЗРАБОТКА БАЗЫ ДАННЫХ И ВЕБ ПРИЛОЖЕНИЯ ................................ 36
3.1 Разработка базы данных в среде pgAdmin ..................................................... 36
3.2 Программная реализация создаваемого программное обеспечение ........... 39
3.3 Разработка и тестирование web-интерфейса информационной системы ... 42
ЗАКЛЮЧЕНИЕ .......................................................................................................... 53
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ .................................................. 55
ПРИЛОЖЕНИЕ .......................................................................................................... 57
3
ВВЕДЕНИЕ
Замбия является суверенной демократической республикой, где проходят
выборы президента, членов парламента и Советников каждые 5 лет.Гражданин
замбий, достигший возраста 18 лет, имеет право голосовать в президентские
выборы. Выборы на эти должности обычно проходят в один день, и поэтому
называются трехсторонними. Последние трехсторонние выборы были 20
сентября 2016 г. В период между трехсторонними выборами, ECZ проходят
досрочные выборычленов парламента и советников в случае освобождения
должности выбранными ранее членами[11].
Человек может участвовать в выборах в качестве избирателя, кандидата
избираемого должностного лица или монитора / наблюдателя. Кандидаты на
выборах могут представлять какую-либо политическую партию или быть
независимыми кандидатами. Победивший кандидат на выборах (для членов
парламента и советников) определяется на основе простого большинства
голосов. Такая система в Замбии использовалась с момента обретения
независимости в 1964 году. Все выборы в Замбии открыты для контроля и
наблюдения местными и международными организациями, соответственно,
после получения необходимой аккредитации. Наблюдатели выражают свое
мнение о проведении очередных выборов на основе докладов, которые они
публикуют после завершения выборов[20].
В последнее время в Замбии наблюдается снижение явки избирателей. По
мнению экспертов это может быть связано с тем, что Замбия по-прежнему
использует избирательную систему утвержденную 1991 году, систему, которая
не использует автоматизацию или компьютеризированные базы данных, поэтому
4
регистрации и голосованиезанимает много времени. Избиратели, которые
разделены по избирательным округам, должны выстраиваться в чрезвычайно
длинные очереди для проверки и регистрации. Регистрация избирателей
производится вручную, таким образом, записи в книгах склонны к разрушению
в результате пожара и других опасных факторов. Действующая система склонна
к фальсификациям, таккак люди голосуют от имени других, например, недавно
умерших зарегистрированных избирателей. Сообщалось, что в некоторых
случаях,
общее
число
проголосовавших
выходит
за
рамки
числа
зарегистрированных избирателей[18].
Цель
работы:
разработкаавтоматизированной
системы
контроля
избирательной активности граждан республики Замбия
Актуальность темы выпускной квалификационной работы:
Избирательная комиссия Замбии должна стремиться к тому, чтобы
каждый избиратель получил всю необходимую информацию о программах
избирательной
статистикепо
комиссии,
кандидатах
результатам
выборов,
на
пост
президента,
информации
о
подробной
режимах
работы
избирательных участков.
Благодаря использованию веб-приложения комиссия может предоставить
избирателям и гражданам Замбии наиболее полную информацию о ходе
избирательной кампании. Вся информация должна быть представлена в удобном
и наглядном для избирателя виде, она должна включать следующие сведения:
интерактивную статистику по результатам голосования на конкретных
избирательных участках, сводную статистику по всем зарегистрированным
кандидатам. В последствии эта информация может быть полезной для ученых и
исследователей, а так же при подготовки новых избирательных компаний.
Кроме информативных функций, автоматизированная система контроля
избирательной
активности
граждан
республики
Замбия
5
позволитавтоматизировать
процесс
выдачи
регистрационных
карточек
избирателя и повысить эффективность и прозрачность работы избирательной
комиссии Замбии.
Задачи выпускной квалификационной работы:
1. анализ подобных систем выборов;
2. выбор программных средств (IDE, DataBase);
3. разработка базы данных;
4. разработка веб-приложения.
Выпускной квалификационной работы состоит из введения, трех глав,
заключения, список литературыи приложение.
6
1 ОБЗОР И АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ
1.1Проведение выборов в Северной Родезии
Выборы пяти членов Консультативного совета были проведены впервые
в 1918 году, когда избирательное право было еще ограничено, правоголоса имели
Британские подданные старше 21 года, которые проживали на территории
Зимбии не менее шести месяцев и имеющие, по меньшей мере £150 в
собственности. Выборы по той же системе были проведены в 1920 и 1922. С 1929
года число избираемых членов Совета было увеличено до семи. Последующие
выборы были проведены в 1932, 1935 и 1938 гг. В выборах 1941 года были
выбраны восемь членов, принадлежащих новой Северной Родезийской рабочей
партии, которая выиграла пять мест. Однако, после её поражения на выборах
1944 года партия была расформирована. В 1948 года число избранных членов
было увеличено до десяти, с двумя Африканцами назначаемыми членами Совета.
В 1953 году была сформирована Федерация Родезии и Ньясаленда, и со
всех территорий были избраны члены Федерального Законодательного
Собрания. Первые федеральные выборы проводились в тот же год. В Северной
Родезии были восемь обычных мест, и трое членов, представляющих интересы
Африки, двое из которых были африканцы выбранные коллегией выборщиков и
один назначаемый европеец.Только 3 африканцев, имеющих право голоса.
Федеральная партия выиграла семь из восьми мест[15].
После конституционных реформ увеличилось количество выборных мест
в Северной Родезийский Законодательного Совета до двенадцати в 1954 году, с
четырьмя
африканскими
членами,
выбранными
Северных
Родезийских
африканских представителей Совета. На выборах 1954 годаодержала победу
7
Федеральная партия, которая выиграла десять мест. В федеральных выборах в
1958 году одержала уверенную победу Федеральная Единая партия (УФП),
преемник Федеральной партии, которая выиграла 46 из 59 мест[16].
Промульгация "Леннокс-Бойд Конституции" привело к расширению
Законодательного Совета до 22 избранных депутатов на выборах 1959 года. В ней
предусмотрены 12 «обычных»мест, в основном занимаемых европейцами, шесть
«особых» мест в основном для африканцев, два зарезервированы для африканцев
и два зарезервированы для европейцев. В УФП сохранили свое большинство,
завоевав 13 мест. Дальнейшие конституционные реформы привели к другой
избирательной системе,действующей на выборах с 1962 года.На выборах 1962
объединённая партия национальной независимости (ЮНИП) завоевала 14 мест в
Законодательном совете, Африканский национальный конгресс Северной
Родезии (АНК) – 7. В созданном ЮНИП и АНК коалиционном правительстве
преобладали
африканцы.Правительство
потребовало
выхода
страны
из
федерации. В марте 1963 года английское правительство под давлением
национально-освободительного движения приняло решение о выходе Северной
Родезии из федерации (прекратила существование 31 декабря 1963 года). На
основе принятой в 1963 году конституции в самоуправляющейся Северной
Родезии в 1964 состоялись всеобщие выборы в Законодательный совет (по
конституции с 1964 года–Национальное собрание), на которых ЮНИП получила
большинство голосов, из её представителей было сформировано первое
африканское правительство страны, премьер-министром стал Каунда[20].
1.2 Проведение выборов в Республике Замбия
4 октября 1964 года страна получила независимость и имя – Республика
Замбия. Президентом стал Кеннет Каунда.В апреле 1967 года Каунда
8
провозгласил свою концепцию «построения замбийского гуманизма». В этой
концепции отвергалась капиталистическая форма экономики, вместо которой
внедрялось государственное регулирование.В ноябре 1968 года Каунда
распустил парламент. С 1969 года начался процесс национализации, в первую
очередь в ключевой отрасли –медной промышленности. В декабре 1972 года в
Замбии была введена однопартийная система правления. Был продолжен процесс
национализации в различных сферах хозяйства. В 1973 году всеобщие выборы на
пост
президента
Каунда
выиграл
набезальтернативной
основе
(89%
проголосовали за). Национальное собрание теперь уже имело 125 избираемых
членов, десять президентских назначенцев и спикера. Хотя ЮНИП была
единственной легальной партией, до трех кандидатов ЮНИП могли оспаривать
каждое место в парламенте. Такая же система была использована на выборах в
1978, 1983 и 1988 годах, Каунда переизбирали каждый раз[20].
Многопартийная демократия была восстановлена в 1991 году, со всеобщих
выборов, состоявшихся в октябре этого года. Каунда был побежден Фредерик
Чилуба представляющего движения за многопартийную демократию (ММД) на
президентских выборах, Чилуба получил 76% голосов.ММДполучила 125 из 150
избранных мест в расширенном Национальном собрании, в то время как
количество президентских назначенцев было сокращено до восьми[16]. Чилуба
был переизбран на выборах 1996 года, ММД получило 131 место и ЮНИП
потерял все 25 мест в 1991 году.
В 2001 году из одиннадцати кандидатов победил Леви Мванаваса
представлявший ММД с 29%. Количество мест ММД было снижена до 69 в
Национальном собрании, оппозиционные партии набирали большинство.
Мванаваса был переизбран в 2006 году с 43% голосов, хотя его партия вновь не
смогла завоевать большинство мест в Национальном собрании. После смерти
9
Мванавасы в 2008 году состоялись досрочные президентские выборы которые
были выиграны ММД.
На всеобщих выборах в 2011 году кандидат патриотического фронта (ПФ)
Майкл Сата избран президентом с 42% голосов, в то время как ПФ стал
крупнейшей партией в Национальном собрании, выиграв 60 мест. После смерти
Саты в 2014 году, очередные президентские выборы состоялись в 2015 году и
выиграл в ПФ Эдгар Лунгу, который получил 48% голосов.
С 1991 года Президента избирали в один тур голосования. Принятая
конституционная поправка предусматривает второй тур президентских выборов,
если ни один из претендентов не наберет более 50% голосов. Он должен пройти
в течение месяца. Также впервые в выборах 2016 г. кандидат идет на выборы в
паре с вице-президентом. Ранее президент назначал своего заместителя уже
после победы.Вице президент становится президентом в случи смерти или
недееспособности действующего президента. Из 159 членов Национальной
Ассамблеи, 150 избираются в системе по одномандатным округам, еще восемь
назначает Президент и спикер.Кандидаты Национального собрания должно быть
старше 21 года[16].
Обработка результатов выборов является процесс перевода бюллетеней,
поданных на выборах в голоса за каждого кандидата, а также обобщение
информации об победивших в выборах. Два принципа руководства ECZ в
обработке результатов выборов этопрозрачность и точность. ECZ создал
систему, чтобы гарантировать, что результат выборов всегда соответствует воле
народа.
Национальный центр отвечает за объявление всех результатов в
присутствии международных и местных средств массовой информации, церкви,
организации гражданского общества и других присутствующих. Эти объявления
транслируются в прямом эфире по радио и по всем Т.В. страны. Председатель
10
избирательной комиссии Замбии объявляет Президента, местные органы власти
и парламентские результаты в Центре национальных результатов, который
является Мулунгушим международным центром конференции[17].
1.3 Влияние интернета на выборы
Три
четверти
пользователей
в
Замбии
использовали
во
время
президентских выборов 2016 года Всемирную компьютерную сеть Интернет ,
чтобы получать новости и актуальную информацию. По данным газеты
Замбииможно разделить этих пользователей на трикатегории, представленные в
таблице 1.1:
•
выход в интернет зановости о политике или кампании;
•
общение с другими людьми по вопросам политики. Около 38% интернет-
пользователей обсуждали политику в Интернете в ходе кампании;
•
совместное использование или получение информации о кампании с
использованием определенных инструментов, таких как электронная почта,
мгновенные сообщения, текстовые сообщения или Twitter. 59% интернетпользователей использовали один или несколько инструментов для отправки или
получения политических сообщений[18].
Поскольку интерес к онлайн-политическим новостям продолжает расти,
важность Интернета возросла по сравнению с другими источниками новостей.
Согласно опросу, опубликованному в газете «Таймс Замбии», шесть из
десяти интернет-пользователей использовали интернет для получения новостейи
информации о политике в 2016 году. Это составляет 44% от всех взрослых
замбийцев. Около одной пятой онлайн-пользователей ежедневно получали
политические новости во время кампании, 12% интернет-пользователей заявили,
что получают политические новости каждый день, а 7% сказали, что они делали
11
это несколько раз в течение обычного дня. Общий размер читателей
политических новостей более чем удвоился после выборов 2011 года[17].
Таблица 1.1
Процент пользователей, использующих интернет
2001
2006
2011
2016
%
%
%
%
Среди всех взрослых
4
18
29
44
Среди
22
33
52
60
пользователейИнтернета
По мере роста общего размера онлайн-издателей политических новостей
Интернет стал играть роль центра в медиа-среде. Среди населения Интернет стал,
наравне с газетами, основным источником новостей о кампании - 26% всех
взрослых получают большую часть своих новостей по выборам из Интернета, по
сравнению с 28%, которые получают новости о выборах из газет, хотя
телевидение остается основным источником политических новостей в этой
стране.
Влияние Интернета на привычки особенно заметно при анализе интернетпользователей в целом и тех, у кого есть домашняя широкополосная связь.
Интернет является, безусловно, вторым по значимости источником новостей о
кампании, за исключением только телевидения, и значительно опережает газеты,
радио и журналы как показано на рисунке 1.1[18].
12
Рис.1.1 Основные источники новостей о выборах
Важнейшие
пользователей
источники
Интернета
новостей
и
о
выборах
домашних
для
всех
пользователей,
взрослых
имеющих
широкополосный доступ, представлено на рисунке 1.2.Эти статистические
данные основаны на результатах опроса после выборов, ежедневного
отслеживающего опроса по использованию замбийцев сети Интернета.
13
Рис.1.2Самые важные источники новостей о выборах
Очевидно, что с течением времени зависимость потребления новостей от
Интернета
резковозросла
и
продолжает
расти,
так
как
интернет-
технологиипродвигаются и становятся более распространенными. Однако одним
из недостатков или угроз наличия интернет-соединения является тот факт, что не
все новости являются достоверными. «Фальшивая новость» определяется как
новость, которая «полностью составлена и сфабрикована для обмана читателя, с
целью увеличения трафика и прибыли». Их следует отличать от сатирических
новостей, использующих преувеличения и вымышленные элементы, но
предназначенных для развлечения читателя или привлечения его внимания к той
или иной проблеме[11]. Отсюда необходимость веб-сайта посвященного
публикации полных достоверных сведений о выборах и политике.
14
1.4 Анализ существующего веб сайта «избирательная комиссия»
Веб-сайт это совокупность логически связанных между собой веб-страниц,
а
также
это
место
в Интернете представляет
расположения
собой
массив
контента.
связанных
Обычно
данных,
сайт
имеющий
уникальный адрес и воспринимаемый пользователем как единое целое. Вебсайты
называются
так,
потому
что
доступ
к
ним
происходит
по
протоколу HTTP[1].
Веб-сайт, как система электронных документов (файлов данных и кода)
может принадлежать частному лицу или организации и быть доступным
в компьютерной сети под общим доменным именем и IP-адресом или локально
на одном компьютере. В статье журнала «Хозяйство и право» также было
высказано мнение, что каждый сайт имеет своё название, которое при этом не
следует путать с доменным именем. С точки зрения авторского права сайт
является составным произведением, соответственно название сайта подлежит
охране наряду с названиями всех прочих произведений.
Все
сайты
в
совокупности
составляют Всемирную
где коммуникация (паутина) объединяет сегменты
паутину,
информации мирового
сообщества в единое целое – базу данных и коммуникации планетарного
масштаба. Для прямого доступа клиентов к сайтам на серверах был специально
разработан протокол HTTP[4].
Веб-сервис это сайт, созданный для выполнения каких-либо задач или
предоставления услуг в рамках сети WWW:
•
доска объявлений представляет собой ресурс, на котором есть
возможность размещения публичного объявления о продаже или покупке
товаров и услуг, также возможно оставить какую-либо информацию краткого
содержания;
15
•
каталог сайтов – это ресурс, на котором размещаются сайты и блоги,
например, OpenDirectoryProject. Каталоги бывают платные и бесплатные. Также
каталоги могут способствовать продвижению ресурса, который размещается в
каталоге сайтов;
•
поисковые сервисы – например, Yahoo!, Google, Bing, Яндекс;
•
почтовый сервис – например, Mail.ru и Gmail;
•
веб-форумы;
•
блоговый сервис;
•
файлообменный пиринговый сервис – например, Bittorrent;
•
облачное хранилище данных – например, OneDrive;
•
сервис редактирования данных – например, GoogleDoc;.
•
фотохостинг –например, Picnik, ImageShack, Panoramio, Photobucket;
•
видеохостинг — например, YouTube, Dailymotion;
•
социальные медиа.
Рис.1.3Страница зимбабвийской избирательной комиссии
16
Один из существующих веб-сервисов являетсясайт «www.zec.gov.zw» как
показано
на
рисунке
избирательной
1.3.
комиссии.
Это
На
официальная
этой
странице
страница
зимбабвийской
предлагаются
следующие
особенности:
•
сайт,
созданный
для
публикации
избирательной
комиссии
зимбабвийских новостей о выборах и информации о комиссии;
•
домашняя страница переходит на следующие страницы;
•
отчеты о предыдущих выборах, собраниях и. т.д;
•
информация о комиссии;
•
функции комиссии;
•
избирательная система;
•
доска объявлений о выборах;
•
новости;
•
факты, ответы и вопросы;
• сайт дает возможность добавлять рекламу;
• навигация в социальных сетях, таких как твиттер и фейсбук;
• показывает сколько гостей и участниковв сети;
• результаты можно просмотреть только в загружаемом pdf формата как
показано на рисунке 1.4;
• фотогалерея прошлых комиссионных событий.
17
Рис 1.4 Возможность загрузки результатов в формате pdf
Этот веб-сайт предоставляет пользователю широкую информацию по этой
теме. Однако, некоторые недостатки этого веб-сайта перечислены ниже;
•
сайт загружается очень долго;
•
интерфейс сайта не удобен для использования и не является
современным;
•
загрузка PDF-файлов для просмотра результатов неудобна;
•
нет связи между пользователем и администратором;
•
нет быстрой информации о кандидатах на различные должности.
18
2 РАЗРОБОТКА АВТОМАТИЗИРОВАННОЙ СИСТЕМЫ
КОНТРОЛЯ ИЗБИРАТЕЛЬНОЙ АКТИВНОСТИ ГРАЖДАН
РЕСПУБЛИКИ ЗАМБИЯ
2.1 Инфологическое проектирование базы данных
Инфологическая модель – формализованное описание предметной
области, которое будет «легко» читаться не только специалистами по базам
данных, но пользователями этой базой данных.
Инфологическое проектирование отражает в себе смысл базы данных и
разрабатывается с помощью информационных объектов. Основными элементами
инфологических моделей являются сущности и связи между ними. Сущность
моделирует класс однотипных объектов, который имеет уникальное имя,
информацию об этих объектах необходимо хранить в базе данных[3].
Для информационной системы выделены следующие сущности:
•
Председатель
•
Избирателей
•
Избирательный участок
•
Кандидаты
•
Избирательный округ
•
Провинцы
•
Район
•
Результать
•
Область
19
Исходя из приведенных выше сущностей, построена модель схемы
отношенийс помощью среды ErwinDataModeler, которая представлена на
рисунке 2.1.
AllFusionERwinDataModeler (ранее ERwin) – CASE-средство
для проектирования и документирования баз
данных,
которое
позволяет
создавать, документировать и сопровождать базы данных, хранилища и витрины
данных [13].
Рис. 2.1.Модель схемы отношений
Связь работает путем сопоставления данных в ключевых столбцах; обычно
это столбцы с одним и тем же именем в обеих таблицах. Существует три типа
связей между таблицами. Тип создаваемой связи зависит от того, как определены
связанные столбцы.
•
Связи «один ко многим»(1 – n). Связь «один ко многим» самая
распространенная. В этом типе связей у строки таблицы А может быть несколько
20
совпадающих строк таблицы Б, но каждой строке таблицы Б может
соответствовать только одна строка из А[12].
Например:
•
между
таблицами «провинции» и «область» установлена
связь
«один ко многим»: так как каждая провинция имеет несколько областей, но
каждая область принадлежит только одной провинции.
•
междутаблицами «район» и «избирательный участок» установлена
связь «один ко многим»: так как каждый район имеет более одного
избирательного участках, но каждый избирательный участок принадлежит
только одному района.
•
между таблицами «область» и «избирательный округ» установлена
связь «один ко многим»: так как каждая область имеет более одного
избирательного округах, но каждый избирательный округ принадлежит только
одной области.
•
между таблицами «район» и «избирательный округ» установлена
связь «один ко многим»: так как каждый избирательный округ имеет более
одного района, но каждый район принадлежит только одному избирательну
округу.
•
между таблицами «кандидаты» и «результаты» установлена связь
«один ко многим»: так как каждый кандидат может получить разные результаты
в разных избирательных участках, но каждый результат принадлежит только
одному кандидату.
•
между таблицами «избирателей» и «избирательный участок»
установлена связь «один ко многим»: так как каждый избиратель может
голосовать в одном избирательном участке, но каждый избирательный участок
может принимать от всех избирателей в данном районе.
21
•
между таблицами «результаты» и «избирательный участок»
установлена связь «один ко многим»: так как несколько результатов могут
принадлежать одному избирательном участку, но каждый избирательный
участок имеет только свои результаты.
•
Связи «многие ко многим»(n–n). В связи «многие ко многим» строке
таблицы А может сопоставляться несколько строк таблицы Б, и наоборот. Такие
связи создаются определением третьей таблицы, которая называется таблицей
соединения, чей первичный ключ состоит из внешних ключей А и Б.
•
Связи «один к одному» (1 – 1). В связи «многие к одному» строке
таблицы А может сопоставляться только одна строка таблицы Б, и наоборот[14].
•
между таблицами «председатель» и «избирательный участок»
установлена связь «один к одному»: так как каждый избирательный участок
имеет единственного председателя и каждый председатель может работать
только в одном избирательном участке.
2.2 Даталогическая модель
Даталогическое проектирование заключается в разработке схемы базы
данных, то есть совокупности схем отношений, которые адекватно моделируют
сущности и семантические связи между ними.
Основой правильности схемы являются функциональные зависимости
между атрибутами БД. Некоторые зависимости могут быть нежелательными, от
них надо избавляться. Такая схема будет называться корректной.
Процесс
разработки
корректной
даталогическим проектированием[11].
схемы
базы
данных
является
22
В даталогической модели каждой сущности в соответствие ставится
отношение, должны быть расставлены первичные и вторичные ключи, все
отношения должны быть приведены к нормальной форме.
Все отношения находятся в третьей нормальной форме. Логическая модель
представлена на рисунке. 2.2
Рис. 2.2 Логическая модель
Физические модели баз данных определяют способы размещения данных в
среде хранения и способы доступа к этим данным, которые поддерживаются на
физическом уровне. Физическая модель представлена на рисунке 2.3
23
Рис 2.3 Физическая модель
Для информационной системы выделены следующие сущности, их
атрибуты и тип данных:
•
Председатель«employee» – сущность содержит информацию о
председателях, которые работают на разных избирательных участках. Таблица
содержится следующие атрибуты:
•
id–полеидентификации, которое состоит из значений (1, 2, 3…). Поле
является первичным ключом в этой таблице и,соответственно, имеет тип
данныхINTERGER;
•
fio–Обозначает полное имя председателянапример (Чисуло Леви).
Соответственно, полеимеет тип данныхCHARс 30 символами;
•
login – в поле хранятся пароли для входапредседателя в систему в
качестве администратора веб-сайта например (Ssgt@9thlsk). Соответственно,
поле имеет тип данныхCHAR с 20 символами;
24
•
Избирателей«voters»–сущность
содержит
информацию
о
зарегистрированных избирателях на своих избирательных участках. Таблица
содержится следующие атрибуты;
•
т.д.Поле
id–поле идентификации, которое состоит из значений 1, 2, 3 и
является
первичным
ключом
в
этой
таблице
иимеет
тип
данныхINTERGER;
•
firstname– имя избирателя,например,«Леви». Соответственно,поле
имеет тип данныхCHARс 15 символами;
•
lastname–фамилия избирателя,например «Чисуло». Соответственно,
поле имеет тип данныхCHARс 15 символами;
•
gender–пол избирателя, «муж» или «жен». Соответственно, столбца
имеет тип данныхBOOLEAN;
•
nrc–поле содержащий код национальной регистрационной карточки.
Этот код состоит из 9 цифр и 2 прямых слешей,например, «236187/10/1».
Соответственно,поле имеет тип данныхCHARс 11 символами;
•
dob–
дата
рождения
избирателя,
например,
«1994-08-12».
Соответственно,поле имеет тип данныхDATE;
•
address–полный адрес избирателя, который включает наименование
улицы и здания, пример,(ул. Победы 85).Соответственно,поле имеет тип
данныйCHARс 30 символами;
•
id_pstation–поле
содержит
адрес
избирательного
участка,
например,(ул. Каломо, д2324). Поле является внешним ключом в этой таблице
иимеет тип данных INTEGER;
•
academicQ–поле
избирателя,например,
высшее
данныхCHARс 30 символами;
включает
уровень
образование).Соответственно,
образования
имеет
тип
25
•
occupation– поле содержится информацию о профессиональной
деятельности избирателя, например, врач. Соответственно,поле имеет тип
данныхCHAR с 20 символами
•
mother–поле содержится полное имя матери избирателя,например,
Мавис Муленга. Соответственно,поле имеет тип данныхCHAR с 30 символами.
•
father–поле содержится полное имя отца избирателя, например,
Годвин Чисуло.Соответственно,поле имеет тип данный CHAR с 30 символами;
•
village–наименование сельской местности избирателя,например,
Мбала.Соответственно,поле имеет тип данныхCHAR с 20 символами;
•
chief–полное
поселения,например,
имя
Томпсон
главы
Лати.
администрации
Соответственно,поле
сельского
имеет
тип
данныхCHAR с 30 символами.
•
Избирательный участок«polling_station» –сущность содержит
информацию об избирательном участке. Таблица содержится следующие
атрибуты;
•
id–поле содержится код избирательного участка. который состоит из
цифр и букв, например, «100M01FIW». Поле является первичным ключом в этой
таблице и, соответственно, имеет тип данныхCHARс 15 символами;
•
street–полесодержится адрес избирательного участка,включающий
наименование
улицы
и
номер
здания,
пример,«ул.
Победы,
85».Соответственно,поле имеет тип данныхCHARс 30 символами;
•
id_ward–Район
избирателя,например,
«Фивила».Поле
является
внешним ключом в этой таблице и,соответственно, имеет тип данных INTEGER;
•
voter_turnout–количество проголосовавших избирателей в данном
избирательном участке. Соответственно,поле имеет тип данныхINTEGER;
•
id_employee–полное имяпредседателя. Поле является внешним
ключом в этой таблице и,соответственно, имеет тип данныхINTEGER;
26
•
registered_voters – количество зарегистрированных избирателейна
избирательном участке,соответственно, имеет тип данныхINTEGER;
•
–количество
rejected_votes
отклоненных
бюллетеней,соответственно, имеет тип данныхINTEGER.
•
Кандидаты«candidates» – сущность содержит информацию о
кандидатах, участвующих ввыборах. Таблица содержится следующие атрибуты:
•
id–поле идентификации, которое состоит из значений «1, 2, 3...».
Поле является первичным ключом в этой таблице и, соответственно, имеет тип
данныхINTERGER;
•
fio–полное
имя
кандидата,например,
Путин
Владимир
Владимирович. Соответственно, поле имеет тип данныхCHARс 30 символами;
•
pparty–наименование политической партии,которой принадлежит
кандидат. Соответственно, поле имеет тип данныхCHARс 20символами.
•
Избирательный
информацию об
округ«constituency»–сущность
избирательномокруге. Таблица содержится
содержит
следующие
атрибуты:
•
ccode–поле содержится код избирательного округа, который состоит
из цифр и букв «C01ANO». Поле является первичным ключом в этой таблице и,
соответственно, имеет тип данныхCHARс 10 символами;
•
id_district–наименование области,например, «Чипата».Поле является
внешним ключом в этой таблице и, соответственно, имеет тип данныхINTEGER;
•
cname–наименование избирательного округа. Соответственно, поле
имеет тип данныхCHAR с 30 символами.
•
Провинции«province»–сущность
содержит
провинциях. Таблица содержится следующие атрибуты:
информацию
о
27
•
id–полеидентификации, которое состоит из значений «1, 2, 3…».
Поле является первичным ключом в этой таблице и, соответственно, имеет тип
данныхINTERGER;
•
pname–наименование провинции. Соответственно, поле имеет тип
данныхCHAR с 30 символами.
•
Район «ward»– сущность содержится информацию о районах.
Таблица содержится следующие атрибуты:
•
wcode –поле содержится код района, который состоит из цифр и букв
(B01BON). Поле является первичным ключом в этой таблице. Соответственно,
имеет тип данныхCHARс 10 символами;
•
id_constituency –наименование избирательного округа. Поле является
внешним ключом в этой таблице и,соответственно, имеет тип данныхINTEGER;
•
wname – наименование района. Соответственно, полеимеет тип
данныхCHAR с 30 символами;
•
ward-population – общееколичество населения. Соответственно, поле
имеет тип данныхINTERGER.
•
Результать«results»–
сущность
содержится
информацию
о
результате на избирательном участке. Таблица содержится следующие атрибуты:
•
id–поле содержится код результата, который состоит из цифр и букв
(DE100M01FIW1). Поле является первичным ключом в этой таблице и,
соответственно, имеет тип данныхCHARс 15 символами;
•
votes–поле содержитколичество голосов, полученное за каждого
кандидата, и соответственно имеет тип данныхINTEGER;
•
id_candidate–поле
содержитсяполные
имена
кандидатов,
участвующих в выборах. Поле является внешним ключом в этой таблице и,
соответственно, имеет тип данныхINTEGER;
28
•
id_pstation–поле
содержитсякод
избирательного
участка.Поле
является внешним ключом в этой таблице и,соответственно, имеет тип
данныхINTEGER
•
Область«district»– сущность содержит информацию об областях.
Таблица содержится следующие атрибуты:
•
dcode–поле содержится код области, который состоит из цифр и букв
«C10CBB». Поле является первичным ключом в этой таблице и,соответственно,
имеет тип данныхCHARс 10 символами;
•
содержитназвание
id_province–поле
провинций,которые
принадлежат области.Поле является внешним ключом в этой таблице и,
соответственно, имеет тип данных INTEGER
•
dname –полесодержит название области и,соответственно, имеет тип
данныхCHAR с 30 символами.
2.3 Используемые языки и программное обеспечение
HTML (HyperText Markup Language – язык разметки гипертекста)
стандартный язык разметки документов во Всемирной паутине. Web-страницы–
это документы в формате HTML, содержащие текст и специальные тэги HTML.
По большому счету, тэги HTML необходимы для форматирования текста.
Документы HTML хранятся в виде файлов с расширением .htm или .html.
CSS (англ. Cascading
формальный
язык описания
Style
Sheets – каскадные
внешнего
вида
таблицы
документа,
стилей) –
написанного
с
использованием языка разметки.
JavaScript – язык, используемый в составе web–страниц и позволяющий
обеспечить двустороннее взаимодействие между сайтом и его посетителями, тем
самым сильно повышая привлекательность сайта.
29
Специально разработанный для написания web-приложений (сценариев),
исполняющихся на Web-сервере.Аббревиатура PHP означает «Hypertext
Preprocessor (Препроцессор Гипертекста)». Синтаксис языка берет начало из C,
Java и Perl. PHP достаточно прост для изучения. Преимуществом PHP является
предоставление
web-разработчикам
возможности
быстрого
создания
динамически генерируемых web-страниц[7].
XAMPP этокроссплатформенная сборка веб-сервера (развитие LAMP),
содержащая Apache, MySQL,
интерпретатор
скриптов PHP,
язык
программирования Perl и большое количество дополнительных библиотек,
позволяющих запустить полноценный веб-сервер как показано на рис. 2.4[19].
Рис. 2.4. ВыпусккомпонентаApacheвXampp
2.4 PostgreSQL CУБД
PostgreSQL является кроссплатформенным продуктом и работает не только
в широком диапазоне диалектов UNIX (Linux, FreeBSD, Solaris и т.д.), но и на
платформе Microsoft Windows.Работа с pgAdminIII показано на рисунке 2.4. С
помощью pgAdmin очень удобно администрировать сервера PostgreSQL, а так же
создавать базы данных (все инструменты, которые нужны для этого,
30
устанавливаются по умолчанию с самой программой). Интерфейс графический и
дружелюбный. Главное окно утилиты разделено на три части как показано на
рисунке 2.4: окно свойств (выводит информацию о выбранном объекте), SQL
pane (показывает оператора SQL, с помощью которого был создан выбранный
объект), object browser (в этом браузере вы увидите объекты баз данных и
сервера, а так же подключения к нему)[8].
Рис.2.4.Pабота с pgAdminIII
В
качестве
альтернативы
можно
использовать
утилитуphpPgAdmin.УтилитаphpPgAdmin представляет собой веб-приложение с
открытым кодом, написанное на языке PHP и представляющее собой вебинтерфейс
для
администрирования СУБД PostgreSQL.
УтилитыphpPgAdmin показано на рисунке 2.5[10].
Интерфейс
31
Рис. 2.5. УтилитаphpPgAdmin
2.5 Разработка структуры сайта
Разработка структуры сайта включает все, что касается его содержимого и
информационной стратегии, определяющей, как должна быть организована
информация, чтобы пользователи сайта могли найти ее легко и быстро.
Разбивка и классификация страниц напрямую определяются содержимым
сайта,
а
способ,
которым
организован
контент,
определяет
процесс
структурирования. При разработке необходимо брать во внимание, что
некоторые люди быстро «пролистывают» веб-сайты, оценивая разные компании,
другие медленно «прогуливаются» по сайту а третьи приходят на сайт с
конкретной целью: найти нужную информацию. Независимо от конкретной
задачи необходимо организовать структуру так, чтобы пользователи были ясно и
просто направлены к разыскиваемым данным[4]. Структура проектируемого
сайта представлена на рисунке 2.7
32
Рис2.6 Структура сайта
2.6Модель сайта
Одним из важных моментов является разграничение прав доступа у
различных категорий пользователей. Пользователей сайта проще всего разделить
на 2 основные группы:
1)
гость;
2)
администратор.
Гость при входе на сайт обладает наименьшими правами. Он может только
просматривать всю информацию: результаты, избирательные участка, статьи,
фото, видео и другое; пользоваться поиском.
На рисунках 2.8 - 2.9 изображены диаграммы прецедентов для различных
ролей пользователей, а в таблицах 2.1 - 2.7 представлены описания основных
прецедентов для соответствующих ролей.
33
Рис. 2.7 – Диаграмма прецедентов категории «Гость»
Таблица 2.1
Вариант использования «Просмотр информации»
Действие пользователя
Отклик системы
1.
2.
Пользователь
выбирает
необходимый пункт в меню;
Система
пользователем
отображает
страницу
с
выбранную
необходимой
информацией.
Таблица 2.2
Вариант использования «Поисковая система»
Действие пользователя
1.
Пользователь
в
Отклик системы
строке
2.
Система
отображает
список
поиска вводит ключевые слова для подходящей информации с данными ключевыми
поиска информации;
словами.
34
Таблица 2.3
Вариант использования «Регистрироваться как избирателей»
Действие пользователя
Отклик системы
1. Пользователь выбирает пункт
2. Система отображает страницу с полями
меню «Регистрация»;
3.
необходимыми для регистрации;
Пользователь
заполняет
поля;
4. Система отправляет заполненную форму в
базу данных
Рис. 2.8 – Диаграмма прецедентов категории «Администратор»
Таблица 2.4
Вариант использования «Вход на сайт»
Действие пользователя
Отклик системы
1. Пользователь заполняет поля
2.
авторизации на текущей странице;
Система
пользователя.
выполняет
авторизацию
35
Таблица 2.5
Вариант использования «Добавить информацию»
Действие пользователя
Отклик системы
1.
2.
Пользователь
добавляет
нового результатов или избирателей
Система
производит
обновления
в
соответствии с внесенными изменениями.
Таблица 2.6
Вариант использования «Просмотр информации(расширенное)»
Действие пользователя
Отклик системы
1.
2.
Пользователь
выбирает
необходимы пункт меню;
Система
пользователем
отображает
страницу
с
выбранную
необходимой
ему
информацией.
Таблица 2.7
Вариант использования «Изменения состава избирательного участка»
Действие пользователя
Отклик системы
1.
2.
Пользователь
необходимы
пункт
«редактировать
выбирает
Система
меню пользователем
отображает
страницу
с
выбранную
необходимой
ему
избирательный информацией.
участок»;
3.
изменения
«Обновить»;
Пользователь
вносит
и
кнопку соответствии с внесенными изменениями.
нажимает
4.
Система
производит
обновления
в
36
3. РАЗРАБОТКА БАЗЫ ДАННЫХ И ВЕБ ПРИЛОЖЕНИЯ
3.1 Разработка базы данных в среде pgAdmin
Альтернативой работе с базой данных через консоль является интуитивная
среда с графическим интерфейсом, например, pgAdmin. Программа pgAdmin
является одним из клиентских приложений, предназначенных для работыс
серверами
PostgreSQL[10].В
данной
выпускной
квалификационной
работеиспользуется локальный компьютер (localhost) в качестве сервера. Работа
с программой pgAdminIIIпоказано на рисунке 3.1.
Рис. 3.1 СозданиеБД «elections» вpgAdminIII
Код sql для создания новой базы данныхпод именем «elections» показано в
Листинге 3.1.
37
Листинг 3.1. Создания новой базы данных
-- Database: elections
-- DROP DATABASE elections;
CREATE DATABASE elections
WITH OWNER = postgres
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'English_United States.1252'
LC_CTYPE = 'English_United States.1252'
CONNECTION LIMIT = -1;
PgAdminIIIпозволяет создавать таблицу через графический интерфейс
(GUI), также создавать их с помощью скриптов. Для того, чтобы запрашивать и
эксплуатировать данные в PostgreSQL используется инструмент SQLQuery,
который поставляется в составеpgAdminIII[8].Sql-код для создания новой
таблицы под именем «candidates» показано в Листинге 3.2
Листинг 3.2. Создания новой таблицы
-- Table: public.candidates
-- DROP TABLE public.candidates;
CREATE TABLE public.candidates(
id integer NOT NULL,
fio character varying(30) NOT NULL,
party character varying(50),
CONSTRAINT pk_candiddates PRIMARY KEY (id),
CONSTRAINT unique_fio UNIQUE (fio))
WITH (OIDS=FALSE);
ALTER TABLE public.candidates
OWNER TO postgres;
38
Рис. 3.2 Созданиетаблицы «candidates»
После успешного создания таблиц как показано на рисунке 3.2,
необходимо внести данные. Удобно добавлятьзаписи данных в табличной форме.
Примерввода записи данных в таблицу «candidates»представлен на рисунке 3.3.
Рис. 3.3 Ввод данных в таблицу«candidates»
39
3.2 Программная реализация создаваемого программное обеспечение
Доступ к базе данных осуществляется с помощью PHP, предоставляющего
поддержку PostrgreSQL и позволяющего делать SQL-запросы к базе данных.
Для подключения к серверу Postgres используется функция pg_pconnect(
server [, username] [, password] [, flags]), где server – сервер PostgreSQL, username
– имя пользователя, password – пароль, flags – дополнительные параметры
соединения. В случае успешного соединения функция возвращает дескриптор
соединения, иначе – false.
Затем необходимо выбрать базу данных функцией pg_select_db($db), где
$db – строка с именем базы данных [10]. Скрипт для соединения показано
вЛистинге 3.3
Листинг 3.3. Соединения к БД
<?php
$db = pg_connect(“host=localhostport=5433
dbname=electionsuser=postgrespassword=ssgt@9thlsk
”);
?>
Для поиска данных нужно использовать функцию pg_query($query), где
$query – строка с запросом, в котором используется оператор SELECT для
извлечения строк, выбранных из одной или нескольких таблиц и оператор LIKE
для сравнения строк. Функция возвращает дескриптор результата запроса или
FALSE в случае ошибки. Для получения результатов использовалась функции
pg_num_rows($result) (выяснение количества рядов для организации цикла) и
pg_fetch_array($result) (получение результата в виде ассоциативного массива),
где
$result
–
дескриптор
результата
запроса,
а
также
функция
40
stripslashes($row['value'])
(удаление экранирования символов в полученном
результате), где $row[‘value’] – элемент ассоциативного массива[5].Скрипт для
поиска показанов Листинге 3.4.
Листинг 3.4. скрипт поиска
<?php
$searchtype=$_POST['search_type'];
$searchterm=$_POST['search_term'];
$searchterm= trim($searchterm);
if (!$searchtype || !$searchterm) {
echo 'Вы ввели не всю информацию, вернитесь назад и заполните все поля!';
echo '<p>'.$searchtype.'</p>';
exit; }
$searchterm = addslashes($searchterm);
$query = "select * from voters where
".$searchtype." like '%".$searchterm."%'";
$result = pg_query($query);
$num_results = pg_num_rows($result);
?>
Для добавления записи необходимо выполнить SQL-запрос с помощью
функции pg_query($query), где $query – строка с запросом вида. Pg_insert()
вставляет записи из массива assoc_array в таблицу table_name. Если задан
аргумент options, значения массива будут преобразованы функцией pg_convert()
в
соответствии
с
параметрами
аргумента[6].СкриптдлядобавленияпоказановЛистинге 3.5.
Листинг 3.5. Скриптдобавления
<?php
$posted = false;
if( $_POST ) {
из
этого
41
$posted = true;
$db = pg_connect("host=localhost port=5433 dbname=elections user=postgres
password=ssgt@9thlsk");
$query = "INSERT INTO results VALUES ('$_POST[de_no]','$_POST[candidate]',
'$_POST[polling_station]','$_POST[votes]')";
$result = pg_query($query); }
?>
Еще одним способом, посредством которого можно осуществить
добавление записи, является запуск команды в компиляторе запроса sql как
показано на рисунке 3.4.
Рис. 3.4Запуск команды в компиляторе запроса sql
Значения данных перечисляются в том порядке, в котором следуют
колонки в таблице и разделяются запятыми. Обычно, значения данных будут
являются литералами (константами), но также разрешаются и скалярные
выражения.
42
3.3Разработка и тестирование web-интерфейса информационной
системы
Интерфейс пользователя в данном веб-приложении был создан при
помощи HTML,CSS и JavaScript, который отвечает за анимацию главного меню.
Для
примера
на
рисунке
3.5
приведенастраницы
приложения
доступнаяпользователю(гостю). Домашняя страница служит ссылкой на все
остальные страницы и предлагает пользователю удобный интерфейс для
навигации.
Страница
новостей
представляет
пользователю
следующую
информацию:последние новости о выборах, рекламные объявления комиссий, и
также другие политические новости.
Рис. 3.5 Главная страница сайта
На странице новостей, как показано на рисунке 3.6 приведены
относительные новости о комиссии.
43
Рис. 3.6 Страница для новости
На странице «вопросы-ответы» приведены ответы на часто задаваемые
вопросы относительно этики работы комиссий. Вопросы, которые могут
включать в себя, информацию о том, кто имеет право участвовать в голосовании,
что происходит, когда утеряна карточка избирателей и подобные вопросы.
Страница «вопросы-ответы» показано на рис.3.7
44
Рис. 3.7 Информационная страница
Таким образом, в первой части говорится о том, что граждане, желающие
участвовать в голосовании, обязаны регистрироваться в качестве избирателей на
своих
различных
избирательных
участках
до
дня
голосования.
Страница«Регистрация» предлагает избирателям быстрый способ пройти этот
процесс. Избиратель обязан заполнить всю личную информацию, которую они
должны были бы заполнить на избирательном участке. По прибытии на участок
избиратель показывает документацию только в качестве удостоверения
личности,
чтобы
получить
регистрационную
регистрациипоказана на рисунке 3.8
карточку.Страница
для
45
Рис. 3.8 Страница регистрации
PHPMailer - это библиотека классов для PHP, предоставляющая набор
функций для создания и отправки сообщений электронной почты.PHPMailer
поддерживает несколько способов отправки электронной почты: mail(), Sendmail,
qmail & direct на SMTP-серверы. Регистрационная форма работает с phpmailer с
использованием кодана листинге 3.4[5]
Листинг3.7. Кодотправка почты
<php?
require "phpmailer/class.phpmailer.php"; //include phpmailer class
$mail = new PHPMailer();
$mail->IsSMTP();
// Sets up a SMTP connection
$mail->SMTPAuth = true;
$mail->SMTPSecure = "ssl";
// Connect using a TLS connection
$mail->Host = "smtp.gmail.com"; //Gmail SMTP server address
$mail->Port = 465; //Gmail SMTP port
$mail->Encoding = '7bit';
$mail->Username = "chisulolevy8@gmail.com";
46
$mail->Password = "ssgt@9thlsk";
$mail->SetFrom($_POST['emailid'], 'Diplom web_registration form');
$mail->AddReplyTo($_POST['emailid'], $_POST['firstname']);
$mail->Subject = "New Contact Form Enquiry";
$mail->MsgHTML($message);
$mail->AddAddress("chisulolevy8@gmail.com", "Recipient Name");
$result = $mail->Send();
// Send!
$message = $result ? 'Successfully Sent!' : 'Sending Failed!';
unset($mail);
}
?>
Подтверждение успешного выполнения процесса регистрации показано
на рисунке 3.9.
Рис. 3.9 Успешное отправление анкеты
Рисунок 3.10 представляет информацию о форме, которая была заполнена
избирателем, полученной администратором страницы.
47
Рис. 3.10 Форма получена через почту администратором
Страница отзыва предлагает пользователю возможность обсудить или
задать вопрос администраторам страниц.На этой странице также используется
функция phpmailer. Интерфейс страниц показано на рисунке 3.11
Рис. 3.11 Страница для отзыва
48
Страница «Выборы» предоставляет пользователю статистику прошедших
выборов в загружаемом формате pdf и текущие выборы в формате
интерактивного пользовательского интерфейса.Можно загрузить файлы через
любой веб-браузер, как показано на рисунке 3.12.
Рис. 3.12 Страница для скачивания файлов
Текущую статистику выборов можно просмотреть на странице статистики
с помощью системы поиска как показано на рисунки 3.13. Пользователь может
просматривать статистику, например, результаты в конкретном регионе, процент
голосов за каждого кандидата, отклоненные голоса, адрес районаили код
избирательного участка.
49
Рис. 3.13Просмотр статиститку
Пользователь может также искать адрес, район или код избирательного
участка, как показано на рисунке 3.14
Рис. 3.14 Поисковая система
Данный веб-сайт требует от администратора обновления информации,
ввода результатов в базу данных или изменения информации о избирательных
участках. Для этого необходимо иметь страницу администрирования. Для
50
доступа к этой странице необходимо обладать регистрационными данными: имя
пользователя и пароль, полученные от системного администратора. На рисунке
3.15 показано страницы администратора.
Рис. 3.15Страница «login» для Администратора
Пароли администраторов и имена пользователей хранятся в таблице в базе
данных в качестве меры безопасности. Таким образом, когда пользователь вводит
пароль или имя пользователя, которых нет в базе данных, появляется сообщение
об ошибке, как показано на рисунке 3.16.
Рис. 3.16 Сообщение о неверной пароли
51
С использованиемактуальных учетных данных для входа, пользователь
может войти в редактированную часть системы. Толькоздесь пользователь может
добавить результаты голосования, как показано на рисунке 3.17
Рисунок 3.17Добавление результатов
Если пользователь введет ложные данные, например, неверный код
избирательного участка или неправильное имя кандидата, то появится
сообщение об ошибке как показано на рисунке 3.18
Рисунок 3.18 Сообщение об ошибке ввода
52
Если
введена
правильная
информацияпоявляется
сообщение,
подтверждающее успешное добавление информации в базу данных как показано
на рисунке 3.19
Рис. 3.19Сообщение об успешном вводе
Результат выполнения этого действия можно просмотреть в таблице
результатов базы данных или с помощью поисковой системыкак показано на
рисунке 3.20
3.20 Успешное добавление в базу
53
ЗАКЛЮЧЕНИЕ
На сегодняшний день информационные технологии используются во всех
областях человеческой деятельности.
перспективным
направлением
Рекомендательные системы являются
развития
информационных
технологий
в
современном мире.
В ходе выполнения выпускной квалификационной работы был разработан
полнофункциональный web – сайт для избирателей и избирательной комиссии
Замбии, полностью готовый к эксплуатации.С его помощью избиратели смогут
получать необходимую информацию и задавать интересующие их вопросы
руководству комиссии.
В процессе разработкиweb-приложения были использованыследующие
основные инструменты: языки PHP, JavaScript и СУБД PostgreSQL. Данный
проект включает:
•
страницы с информацией о кандидатах ;
•
страница регистрации избирателей;
•
страница отзыва;
•
систему поиска и просмотр информацию в базе данных;
•
систему добавления данных.
•
Поиск, добавление и просмотр данных значительно облегчают
работу с базой данных.
В ходе работы мной были изучены основы синтаксиса и
показаны
возможности применения JavaScript, PHP и СУБД PostgreSQL, приобретены
навыки создания web-приложений для доступа к БД. Полученные знания были
применены
для
разработки
web-приложения
по
теме
выпускной
54
квалификационнойработы
«Автоматизированная
система
избирательной
контроля избирательной активность граждан республики Замбия».
55
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
1. Макнейл П. Веб-дизайн. Книга идей веб – разработчика. – СПб.: Питер,
2014. – 288 с.
2. Агальцов, В.П. Базы данных. В 2-х т.Т. 1. Локальные базы данных:
Учебник / В.П. Агальцов. - М.: ИД ФОРУМ, НИЦ ИНФРА-М, 2013. - 392 c.
3. Голицына, О.Л. Базы данных / О.Л. Голицына, Н.В. Максимов, И.И.
Попов. - М.: Форум, 2004. - 352 c.
4. Уильям Стейнмец, Брайан Вард. 75 готовых решений для вашего webсайта на РНР, 2009
5. Стивен Хольцнер . РНР в примерах. / Стивен Хольцнер . М.: 000 «БиномПресс», 2007 г. Пер. с англ. 349 с
6. Apache, MySQL, and PHP Weekend Crash Course: Steven M. Schafer —
Санкт-Петербург, 2003 г.- 480 с.
7. Тубольцев М.Ф., Путивинцева Н.П., Гурьянова И.В., Немыкина О.В.
Лабораторный практикум по Web-технологиям. Часть 1. Основы HTML
технологий. Белгород: Изд-во БелГУ, 2003 - 49 с.
8. Эрик А. Мейер "CSS. Каскадные таблицы стилей. Подробное
руководство " 3-е издание. Издательство: Символ-Плюс, 2008 г.
9. Доументация на английском поЗамбийское национальное собрание
[Электронныйресурс] URL:http://www.parliament.gov.zm/
10. Википедиа [Электронныйресурс] URL:http://ru.Wikipedia.org/wiki/
11. Доументация
на
английском
по
CA
ERwin®
Data
Modeler[Электронныйресурс] URL:– // http://erwin.com/
12. Маклаков, С. В. Создание информационных систем с AllFusionModeling
Suite / С. В. Маклаков. – М.: Диалог – МИФИ, 2007. – 432 с
56
13. Документация по избирательному процессу[Электронный ресурс] : https://www.elections.org.zm/
14. Доументация
на
английском
по
избирательный
актЗамбии[Электронныйресурс]:http://www.parliament.gov.zm/node/700/
15. Доументация
на
английском
по
статистике
и
новостям
в
Замбии[Электронныйресурс] URL:http://www.times.co.zm/
16. Micheal, С. E. Elections and democracy in Zambia / C. K. Kabemba - EISE
2004 - 73с
17. XAMPP Apache + MariaDB + PHP + Perl [Электронныйресурс] URL:
http://localhost/dashboard/
18. Энциклопедия
Замбийского
законадательства
[Электронныйресурс]URL:: - //http://zambialaws.com/
19. Fackson, B. Elections and the press in Zambia, Zambia Independent Media
Association, 1997 - Всего страниц: 68
20. Доументация
на
английском
по
Замбии[Электронныйресурс] URL:http://www.znbc.co.zm/
новостям
в
57
ПРИЛОЖЕНИЕ
Index.html
<!DOCTYPE html>
<html class="no-js">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>zambia-elections</title>
<link
href='http://fonts.googleapis.com/css?family=Roboto:400,300,100,500'
rel='stylesheet'
<link
href='https://fonts.googleapis.com/css?family=Montserrat:400,700'
rel='stylesheet'
type='text/css'>
type='text/css'>
<script src="js/respond.min.js"></script>
</head>
<body>
<header id="fh5co-header" role="banner">
<nav class="navbar navbar-default" role="navigation">
<div class="container-fluid">
<div class="navbar-header">
<!-- Mobile Toggle Menu Button -->
<a
href="#"
class="js-fh5co-nav-toggle
fh5co-nav-toggle"
data-
toggle="collapse" data-target="#fh5co-navbar" aria-expanded="false" aria-controls="navbar"><i></i></a>
<img
src="images\ecz_logo.gif"
alt="ecz_logo"
style="float:left;
href="index.html"
>
width:60px;height:60px;">
<a
class="navbar-brand"
ИЗБИРАТЕЛЬНАЯКОМИССИЯЗАМБИИ</a>
</div>
<div id="fh5co-navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-right">
<li
class="active"><a
href="index.html"><span>Главная<span class="border"></span></span></a></li>
<li><a
href="info.html"
><span>Информация<span
class="border"></span></span></a></li>
<li><a
class="border"></span></span></a></li>
href="login.html"><span>Войти<span
58
<li><a
href="contact.html"><span>Контакты<span
class="border"></span></span></a></li>
</ul>
</div>
</div>
</nav>
</header>
<!-- END .header -->
<div class="fh5co-slider">
<div class="owl-carousel owl-carousel-fullwidth">
<div class="item" style="background-image:url(images/slide_5.jpg)">
<div class="fh5co-overlay"></div>
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="fh5co-owl-text-wrap">
<div
class="fh5co-owl-text
text-center
to-
animate">
<h1
class="fh5co-
lead">Политический Митинг</h1>
<h2
class="fh5co-sub-
lead">Политический митинг, организованный партией UPND</h2>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="item" style="background-image:url(images/slide_2.jpg)">
<div class="fh5co-overlay"></div>
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="fh5co-owl-text-wrap">
<div
animate">
class="fh5co-owl-text
text-center
to-
59
<h1
class="fh5co-
lead">Будущиелидеры</h1>
<h2
class="fh5co-sub-
lead">дискуссии кандидатов в президентских выборах</a></h2>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="item" style="background-image:url(images/na.jpg)">
<div class="fh5co-overlay"></div>
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="fh5co-owl-text-wrap">
<div
class="fh5co-owl-text
text-center
to-
animate">
<h1 class="fh5co-lead">национальная
ассамблея</h1>
<h2 class="fh5co-sub-lead">В
Национальную Ассамблею входят 158 депутатов. 150 депутатов избираются по мажоритарным округам.
Остальные 8 депутатов назначаются указом президента. Срок полномочий — 5 лет.
Спикером Ассамблеи является Амусаа Мванамвамбва.</a></h2>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="item" style="background-image:url(images/slide_1.jpg)">
<div class="fh5co-overlay"></div>
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="fh5co-owl-text-wrap">
60
<div
class="fh5co-owl-text
text-center
to-
animate">
<h1 class="fh5co-lead">ECZ</h1>
<h2
class="fh5co-sub-
lead">ИЗБИРАТЕЛЬНАЯ КОМИССИЯ ЗАМБИИ</a></h2>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="item" style="background-image:url(images/slide_3.jpg)">
<div class="fh5co-overlay"></div>
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="fh5co-owl-text-wrap">
<div
class="fh5co-owl-text
text-center
to-
animate">
<h1
class="fh5co-
lead">СтатуяСвободы</h1>
<h2
class="fh5co-sub-
lead">Открыли памятник 23 октября 1974 года в присутствии тогдашнего президента Замбии Давида
Каунды.</a></h2>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="item" style="background-image:url(images/slide_4.jpg)">
<div class="fh5co-overlay"></div>
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="fh5co-owl-text-wrap">
<div
animate">
class="fh5co-owl-text
text-center
to-
61
<h1
class="fh5co-
lead">ЭДГАРЧАГВАЛУНГУ</h1>
<h2
class="fh5co-sub-lead">
замбийский государственный деятель, бывший министр внутренних дел, обороны и юстиции, президент Замбии
с 25 января 2015 года.</a></h2>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="fh5co-main">
<!-- Features -->
<div id="fh5co-features">
<div class="container">
<div class="row text-center">
<div class="col-md-8 col-md-offset-2">
<h2 class="fh5co-section-lead">Всеобщие выборы в
Замбии проходили 11 августа 2016 года</h2>
<h3 class="fh5co-section-sub-lead">На них избирались
президент и депутаты Национальной ассамблеи. Одновременно с выборами проводился конституционный
референдум для подтверждения конституционного закона о правах и Статьи 79</h3>
</div>
<div class="fh5co-spacer fh5co-spacer-md"></div>
</div>
<div class="row">
<div class="col-md-6 col-sm-6 fh5co-feature-border">
<div class="fh5co-feature">
<div class="fh5co-feature-icon to-animate">
<i class="icon-file"></i>
</div>
<div class="fh5co-feature-text">
<h3>Статистки</h3>
<p>Подробные
резултаты о Выборах</p>
информации
и
62
<p><a
href="right-
sidebar.html">нажмитесюда</a></p>
</div>
</div>
<div class="fh5co-feature no-border">
<div class="fh5co-feature-icon to-animate">
<i class="icon-user"></i>
</div>
<div class="fh5co-feature-text">
<h3>Ползователи</h3>
<p><a
href="login.html">Войти</a></p>
</div>
</div>
</div>
<div class="col-md-6 col-sm-6">
<div class="fh5co-feature">
<div class="fh5co-feature-icon to-animate">
<i class="icon-news"></i>
</div>
<div class="fh5co-feature-text">
<h3>Новости</h3>
<p>Прочитаете свежее новости о
политике Замбии.</p>
<p><a
href="news.html">Читать</a></p>
</div>
</div>
<div class="fh5co-feature no-border">
<div class="fh5co-feature-icon to-animate">
<i class="icon-tv"></i>
</div>
<div class="fh5co-feature-text">
<h3>Видео</h3>
<p>в тот момент когда был объявлен
победитель.</p>
63
<p><a
href="https://www.youtube.com/watch?v=RuEMrbwqeGo" target='_blank'>смотреть прямо сейчас
</a></p>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Features -->
<div class="fh5co-spacer fh5co-spacer-lg"></div>
<!-- Products -->
<div class="container" id="fh5co-products">
<div class="row text-left">
<div class="col-md-8">
<h2 class="fh5co-section-lead">Горячеессылки</h2>
<h3 class="fh5co-section-sub-lead"></h3>
</div>
<div class="fh5co-spacer fh5co-spacer-md"></div>
</div>
<div class="row">
<div class="col-md-3 col-sm-6 col-xs-6 col-xxs-12 fh5co-mb30">
<div class="fh5co-product">
<img src="images/slide_2.jpg" a class="img-responsive
img-rounded to-animate">
<h4>кандидатов в президентских выборах</h4>
<p>Знакомиться со своими кандидатами</p>
<p><a href="left-sidebar.html">Знакомиться</a></p>
</div>
</div>
<div class="col-md-3 col-sm-6 col-xs-6 col-xxs-12 fh5co-mb30">
<div class="fh5co-product">
<img
src="images/inonge.jpg"
class="img-responsive
img-rounded to-animate">
<h4>вице-президенты.</h4>
<p>знакомиться с вице-президентами</p>
64
<p><a href="#">знакомиться</a></p>
</div>
</div>
<div class="visible-sm-block visible-xs-block clearfix"></div>
<div class="col-md-3 col-sm-6 col-xs-6 col-xxs-12 fh5co-mb30">
<div class="fh5co-product">
<img src="images/kk.jpg" class="img-responsive imgrounded to-animate">
<h4>Кабинет министров</h4>
<p>Кто был назначен на какую должность</p>
<p><a href="#">узнавать</a></p>
</div>
</div>
<div class="col-md-3 col-sm-6 col-xs-6 col-xxs-12 fh5co-mb30">
<div class="fh5co-product">
<img src="images/aa.png" class="img-responsive imgrounded to-animate">
<h4>Замбия</h4>
<p>
Быстрый тур по Замбии </p>
<p><a href="#">Телепорт в Замбию</a></p>
</div>
</div>
</div>
</div>
<!-- Products -->
<div class="fh5co-spacer fh5co-spacer-lg"></div>
<div id="fh5co-clients">
<div class="container">
<div class="row">
</div>
</div>
</div>
<div class="fh5co-bg-section" style="background-image: url(images/pm.jpg); backgroundattachment: fixed;">
65
<div class="fh5co-overlay"></div>
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="fh5co-hero-wrap">
<div class="fh5co-hero-intro text-center">
<h1
class="fh5co-lead"><span
class="quo">“</span>ОднаЗамбия, ОднаНация. <span class="quo">”</span></h1>
<p
class="author">—
<cite>Девиз:</cite></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<footer id="fh5co-footer">
<div class="container">
<div class="row">
<div class="col-md-6 col-sm-6">
<div class="fh5co-footer-widget">
<h2 class="fh5co-footer-logo">избирательная комиссия
замбии</h2>
<p> Подписывайтесь на нас в следующей социальнии
медии </p>
</div>
<div class="fh5co-footer-widget">
<ul class="fh5co-social">
<li><a
href="#"><i
class="icon-
<li><a
href="#"><i
class="icon-
<li><a
href="#"><i
class="icon-
facebook"></i></a></li>
twitter"></i></a></li>
instagram"></i></a></li>
66
<li><a
href="#"><i
class="icon-
<li><a
href="#"><i
class="icon-
<li><a
href="#"><i
class="icon-
<li><a
href="#"><i
class="icon-
<li><a
href="#"><i
class="icon-
<li><a
href="#"><i
class="icon-
<li><a
href="#"><i
class="icon-
<li><a
href="#"><i
class="icon-
linkedin"></i></a></li>
youtube"></i></a></li>
pinterest"></i></a></li>
vk"></i></a></li>
tumblr"></i></a></li>
google"></i></a></li>
mail"></i></a></li>
stumbleupon"></i></a></li>
</ul>
</div>
</div>
<div class="col-md-2 col-sm-6">
<div class="fh5co-footer-widget top-level">
<h4 class="fh5co-footer-lead ">Особенности
</h4>
<ul>
<li><a href="#">Главная</a></li>
<li><a href="#">Контакты</a></li>
<li><a href="#">Новости</a></li>
<li><a href="#">пользователи</a></li>
</ul>
</div>
</div>
<div class="visible-sm-block clearfix"></div>
<div class="col-md-2 col-sm-6">
<div class="fh5co-footer-widget top-level">
67
<h4
class="fh5co-footer-
lead">ИСПОЛЬЗУЕМЫЕЯЗЫКИ</h4>
<ul class="fh5co-list-check">
<li><a href="#">Bootstrap</a></li>
<li><a href="#">HTML5</a></li>
<li><a href="#">CSS</a></li>
<li><a href="#">JavaScript</a></li>
<li><a href="#">Jquery</a></li>
<li><a href="#">PHP</a></li>
</ul>
</div>
</div>
<div class="col-md-2 col-sm-6">
<div class="fh5co-footer-widget top-level">
<h4 class="fh5co-footer-lead ">БазаДанных</h4>
<ul class="fh5co-list-check">
<li><a href="#">Postgres 9.5</a></li>
</ul>
</div>
</div>
</div>
<div class="row fh5co-row-padded fh5co-copyright">
<div class="col-md-5">
<p><small>© 2017 All Rights Reserved. <br>сайт сделано
-
Чисуло
Леви.<a
target="_blank">https://facebook.com/chisulo</a></small></p>
</div>
</div>
</div>
</footer>
<!-- jQuery -->
<script src="js/jquery.min.js"></script>
<!-- jQuery Easing -->
<script src="js/jquery.easing.1.3.js"></script>
href="https://www.facebook.com/levy.chisulo"
68
<!-- Bootstrap -->
<script src="js/bootstrap.min.js"></script>
<!-- Owl carousel -->
<script src="js/owl.carousel.min.js"></script>
<!-- Waypoints -->
<script src="js/jquery.waypoints.min.js"></script>
<!-- Magnific Popup -->
<script src="js/jquery.magnific-popup.min.js"></script>
<!-- Main JS -->
<script src="js/main.js"></script>
</body>
</html>
insert.php
<?php
$posted = false;
if( $_POST ) {
$posted = true;
$db
=
pg_connect("host=localhost
port=5433
dbname=elections
user=postgres
password=ssgt@9thlsk");
$query = "INSERT INTO results VALUES ('$_POST[de_no]','$_POST[candidate]',
'$_POST[polling_station]','$_POST[votes]')";
$result = pg_query($query); }
?>
< html>
<head>
<title>Insert data to PostgreSQL with php - creating a simple web application</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style>
li {
list-style: none;
69
}
</style>
</head>
<body>
<center>
<hr>
<p style="font-family:Arial Narrow; font-size: 40px"><b>Добавлениерезультатов</b></p>
</center>
<hr>
<center>
<img src="images/ecz_logo.gif" width="80" height="80">
</center>
<?php
if( $posted ) {
if( $result )
echo "<script type='text/javascript'>alert('submitted successfully!')</script>";
else
echo "<script type='text/javascript'>alert('failed!')</script>";
}
?>
<center>
<h2>Добавление данных в таблице results</h2>
<ul>
<form name="insert" action="insertR.php" method="POST" >
<li>код:</li><li><input type="text" name="de_no" /></li>
<li>кандидаты:</li><li><input type="text" name="candidate" /></li>
<li>избирателныйучасток</li><li><input type="text" name="polling_station" /></li>
<li>голосов</li><li><input type="text" name="votes" /></li>
<br>
70
<li><input type="submit" /></li></center>
</form>
</ul>
</body>
</html>
main.js
;(function () {
// Burger Menu
var burgerMenu = function() {
$('body').on('click', '.js-fh5co-nav-toggle', function(){
if ( $('#fh5co-navbar').is(':visible') ) {
$(this).removeClass('active');
} else {
$(this).addClass('active');
}
});
};
var owlCrouselFeatureSlide = function() {
var owl = $('.owl-carousel');
owl.on('initialized.owl.carousel change.owl.carousel',function(elem){
var current = elem.item.index;
$(elem.target).find(".owl-item").eq(current).find(".toanimate").removeClass('fadeInUp animated');
});
owl.on('initialized.owl.carousel changed.owl.carousel',function(elem){
71
window.setTimeout(function(){
var current = elem.item.index;
$(elem.target).find(".owl-item").eq(current).find(".toanimate").addClass('fadeInUp animated');
}, 400);
});
owl.owlCarousel({
items: 1,
loop: true,
margin: 0,
responsiveClass: true,
nav: true,
dots: true,
smartSpeed: 500,
autoplay: true,
autoplayTimeout: 5000,
autoplayHoverPause: true,
navText: [
"<i class='icon-arrow-left2 owl-direction'></i>",
"<i class='icon-arrow-right2 owl-direction'></i>"
],
});
};
// Magnific Popup
// MagnificPopup
var magnifPopup = function() {
72
$('.image-popup').magnificPopup({
type: 'image',
removalDelay: 300,
mainClass: 'mfp-with-zoom',
gallery:{
enabled:true
},
zoom: {
enabled: true, // By default it's false, so don't forget to enable it
duration: 300, // duration of the effect, in milliseconds
easing: 'ease-in-out', // CSS transition easing function
// The "opener" function should return the element from which
popup will be zoomed in
// and to which popup will be scaled down
// By defailt it looks for an image tag:
opener: function(openerElement) {
// openerElement is the element on which popup was
initialized, in this case its <a> tag
// you don't need to add "opener" option if this code matches
your needs, it's defailt one.
return openerElement.is('img') ? openerElement :
openerElement.find('img');
}
}
});
};
// Animate Feature
73
var animateFeatureIcons = function() {
if ( $('#fh5co-features').length > 0 ) {
$('#fh5co-features .to-animate').each(function( k ) {
var el = $(this);
setTimeout ( function () {
el.addClass('bounceIn animated');
}, k * 200, 'easeInOutExpo' );
});
}
};
// Animate Products
var animateProducts = function() {
if ( $('#fh5co-products').length > 0 ) {
$('#fh5co-products .to-animate').each(function( k ) {
var el = $(this);
setTimeout ( function () {
el.addClass('bounceIn animated');
}, k * 200, 'easeInOutExpo' );
});
}
};
// Animate Clients Logo
var animateClientLogo = function() {
74
if ( $('#fh5co-clients').length > 0 ) {
$('#fh5co-clients .to-animate').each(function( k ) {
var el = $(this);
setTimeout ( function () {
el.addClass('bounceIn animated');
}, k * 200, 'easeInOutExpo' );
});
}
};
// Waypoints
var featureIconsWayPoint = function() {
if ( $('#fh5co-features').length > 0 ) {
$('#fh5co-features').waypoint( function( direction ) {
if( direction === 'down' && !$(this).hasClass('animated') ) {
setTimeout(animateFeatureIcons, 200);
$(this).addClass('animated');
}
} , { offset: '80%' } );
75
}
};
var productsWayPoint = function() {
if ( $('#fh5co-products').length > 0 ) {
$('#fh5co-products').waypoint( function( direction ) {
if( direction === 'down' && !$(this).hasClass('animated') ) {
setTimeout(animateProducts, 200);
$(this).addClass('animated');
}
} , { offset: '80%' } );
}
};
var clientsWayPoint = function() {
if ( $('#fh5co-products').length > 0 ) {
$('#fh5co-products').waypoint( function( direction ) {
if( direction === 'down' && !$(this).hasClass('animated') ) {
setTimeout(animateClientLogo, 200);
76
$(this).addClass('animated');
}
} , { offset: '80%' } );
}
};
$(function(){
burgerMenu();
owlCrouselFeatureSlide();
magnifPopup();
featureIconsWayPoint();
productsWayPoint();
clientsWayPoint();
});
}());
77
Выпускнаяквалификационнаяработавыполненамнойсовершенносамостоятельно.
Все
использованные в работе материалы и концепции из опубликованной научной литературы и
других источников имеют ссылки на них.
«___» ________________ _____ г.
__________________________
(подпись)
_____________________
(Ф.И.О.)
Отзывы:
Авторизуйтесь, чтобы оставить отзыв