Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Проектирование информационных систем - Развитие и подготовка сотрудников

Содержание:

ВВЕДЕНИЕ

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

Цель курсовой работы – проектирование информационной системы для реализации бизнес-процесса «Развитие и подготовка сотрудников» на примере компании ООО «Дивизион».

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

  • проанализировать текущую организацию бизнес-процесса развития и подготовки сотрудников в отделе по работе с персоналом компании ООО «Дивизион» и возникающего при его выполнении документооборота;
  • выбрать и обосновать проектные решения по информационному и программному обеспечению;
  • составить информационную модель проектируемой информационной системы;
  • разработать базу данных и программные модули ИС;
  • описать контрольный пример реализации проекта.

1 глава. Аналитическая часть

1.1. Выбор комплекса задач автоматизации

ООО «Дивизион» существует с 2003 года. Компания представляет собой сеть розничных магазинов электронных устройств: мобильных телефонов, планшетов, фотоаппаратов, mp3-плееров и т.д. Компания имеет 23 розничных точки продаж, управляет которыми центральный офис.

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

Рисунок 1. Организационная схема предприятия

Организационная структура включает в себя следующие подразделения:

  • Бухгалтерия;
  • Отдел кадров;
  • Склад;
  • Розничные точки продаж;
  • Отдел закупок;
  • IT-отдел.

Руководитель – директор компании, которому подчиняются начальник соответствующих структурных подразделений.

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

1.2. Характеристика существующих бизнес – процессов

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

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

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

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

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

На первом этапе построения IDEF0-модели система представляется как единое целое. Основная цель данного этапа – выявить входные и выходные данные, а также механизмы и правила для данной системы. Диаграмма данного этапа называется контекстной, которая изображена на рисунке 2 (для построения диаграмм использовалось CASE- средство AllFusion Process Modeler 7).

Рисунок 2. Контекстная диаграмма деятельности отдела кадров

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

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

Следующий этап построения структурно-функциональной модели в нотации IDEF0 – декомпозиция контекстной диаграммы на составляющие. Диаграмма декомпозиции исследуемой деятельности приведена на рисунке 5.

Рисунок 3. Диаграмма декомпозиции

Деятельность отдела кадров, связанную с развитием и подготовкой сотрудников можно разделить на пять этапов:

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

1.3. Характеристика документооборота, возникающего при решении задачи

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

Схема документооборота приведена на рисунке 4.

Рисунок 4. Схема документооборота расписания мероприятий

1.4. Обоснование проектных решений по информационному обеспечению

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

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

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

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

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

Всего в информационной системе используется пять справочников:

  • сотрудники (они же пользователи ИС);
  • роли пользователей;
  • отделы сотрудников;
  • типы мероприятий;
  • статусы мероприятий;
  • должности.

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

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

Описание используемых идентификаторов приведено в таблице 1.

Таблица 1

Используемые идентификаторы

№ пп

Наименование кодируемого множества объектов

Значность кода

Мощность кода

Система кодирования

1

Идентификационный номер пользователя

4

9999

Порядковая

2

Идентификационный номер роли пользователя

4

9999

Порядковая

3

Идентификационный номер мероприятия

4

9999

Порядковая

4

Идентификационный номер отдела сотрудника

4

9999

Порядковая

5

Идентификационный номер должности сотрудника

4

9999

Порядковая

6

Идентификационный номер статуса мероприятия

4

9999

Порядковая

7

Идентификационный номер типа мероприятия

4

9999

Порядковая

1.5. Обоснование проектных решений по программному обеспечению

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

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

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

В качестве языка программирования был выбран язык php.

PHP (PersonalHomePageTools – «Инструмент для создания персональных веб-страниц») – является скриптовым языком программирования общего пользования, используемый для создания Web-приложений. В данный момент времени поддерживают подавляющие большинство хостинг-провайдеров и стал одним из ведущих языком программирования, использующих для разработки динамических Web-сайтов.

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

  • автоматически извлекаемые GET и POST -параметров, а также переменных окружения веб-сервера в предопределённые массивы;
  • взаимодействует с очень большим количеством разныхСУБД (MySQL, SQLite,MySQLi, Oracle (OCI8), PostgreSQL, Microsoft SQL Server и пр.);
  • автоматическая отправка HTTP-заголовков;
  • работает с HTTP-авторизацией;
  • работает с сессиями и cookies;
  • работает с удалёнными и локальными файлами, сокетами;
  • обрабатывает файлы, загруженные на сервер;

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

MySQL – разработка шведской компании MySQL AB. СУБД MySQL является программным обеспечением с открытым исходным кодом, распространяемым по лицензии GNU (GPL) и коммерческой лицензии для ситуаций, не подпадающих под действие лицензии GPL.

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

Основные достоинства СУБД MySQL:

  • Высокое качество – MySQL характеризуется устойчивой работой.
  • Наряду с Oracle, MySQL считается одной из самых быстрых СУБД в мире.
  • Открытый код доступен для просмотра и модернизации, что позволяет постоянно улучшать программный продукт.
  • СУБД MySQL, разработанная с использованием языков C/C++, протестирована на многих платформах, среди которых Windows, Linux, FreeBSD, Mac OS X, OS/2, Solaris и др.
  • MySQL поддерживает API (Application Programming Interface, программный интерфейс приложения) для С, C++, Eiffel, Java, Perl, PHP, Python, Ruby и Tcl. MySQL можно успешно применять как для построения Web-страниц с использованием Perl, PHP и Java, так и для работы прикладной программы, созданной с использованием Delphi, Builder C++ или платформы .NET.4
  • СУБД MySQL предоставляет широкий выбор типов таблиц, в том числе и сторонних разработчиков, что позволяет реализовать оптимальную для решаемой задачи производительность и функциональность.
  • Локализация в MySQL выполнена корректно. У пользователя, как правило, не возникает проблем при обработке русского содержимого БД

2 глава. Проектная часть

2.1. Информационная модель и её описание

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

Рисунок 5. Информационная модель

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

2.2. Характеристика нормативно-справочной, входной и оперативной информации

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

Таблица 2

Справочники информационной системы

№ пп

Название справочника

Ответственный за ведение

Средний объём справочника в записях

Среднюю частоту актуализации

Средний объем актуализации, %

1

Пользователи

Администратор

50

1 раз в неделю

2

2

Роли пользователей

-

2

-

-

3

Отделы

-

10

1 раз в год

10

4

Должности

Администратор

10

1 раз в год

10

5

Типы мероприятий

Администратор

4

1 раз в месяц

25

6

Статусы мероприятий

Администратор

3

-

10

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

Реквизитный состав каждого справочника представлен в виде таблицы 3.

Таблица 3

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

№ пп

Название справочника

Перечень реквизитов

1

Пользователи

ФИО

логин

пароль

электронная почта

телефон

2

Роли пользователей

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

3

Статусы мероприятий

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

4

Типы мероприятий

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

5

Должности

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

6

Отделы

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

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

На рисунке 6 изображена макет формы для работы с записями справочника «Пользователи».

Рисунок 6. Макет формы Пользователь

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

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

Формы для работы с записями других справочников имеют аналогичный вид (Рисунок 7-9).

Рисунок 7. Макет формы Тип мероприятия

Рисунок 8. Макет формы Должность

Рисунок 9. Макет Формы Отдел

В качестве входных данных для информационной системы выступают и данные о мероприятиях. Эти данные вводятся в ИС с помощью формы, макет которой приведен на рисунке 10.

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

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

2.3. Характеристика результатной информации

В качестве выходных данных выступают расписание и отчет о деятельности сотрудников отдела кадров.

Подробное описание выходных данных представлено в таблице 4.

Таблица 4

Описание результатной информации

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

Расписание

Отчет о деятельности

Реквизиты

Наименование мероприятия;

Тип мероприятия;

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

Место проведения;

Описание мероприятия;

Ответственный сотрудник.

Количество запланированных мероприятий

Количество проведенных мероприятий

С группировкой по типам;

Среднее количество сорудников на мероприятии

Таблицы, на основе которых формируется

Мероприятия

Пользователи

Типы мероприятий

Статусы мероприятий

Мероприятия

Типы мероприятий

Статусы мероприятий

Частота формирования

По мере необходимости

По мере необходимости

Способ доставки

Файл в формате Excel

Таблица на html-странице

2.4. Общие положения (дерево функций и сценарий диалога)

Базовый набор функций разработанной информационной системы можно изобразить в виде дерева, изображенного на рисунке 11.

Рисунок 11. Дерево функций

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

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

Рисунок 12. Сценарий диалога

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

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

2.5. Характеристика базы данных

В качестве системы управления базой данный для разрабатываемой информационной системы была выбрана СУБД Mysql.

Для хранения всех необходимых данных была спроектирована и создана база данных, состоящая из 7 таблиц. ER-модель спроектированной базы данных представлена на рисунке 13.

Рисунок 13. ER-модель базы данных

Описание всех таблиц базы данных представлено в таблице 5.

Таблица 5

Описание таблиц базы данных

Атрибут

Поле таблицы

Тип данных

Размер

Обязательность значений

Таблица Otdel (Отдел)

Идентификатор

id

integer

4

Да

Название

caption

varchar

255

Да

Таблица Staff (Должность)

Идентификатор

id

integer

4

Да

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

caption

varchar

255

Да

Таблица TypeEvent (Тип мероприятия)

Идентификатор

id

integer

4

Да

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

caption

varchar

255

Да

Таблица StatusEvent (Статус мероприятия)

Идентификатор

id

integer

4

Да

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

caption

varchar

255

Да

Таблица User (Сотрудник)

Идентификатор

id

integer

4

Да

ФИО

userfio

varchar

255

Да

Логин

login

varchar

255

Да

Пароль

password

varchar

255

Да

Телефон

phone

varchar

255

Да

Почта

email

varchar

255

Да

Роль

roleid

int

4

Да

Статус

status

varchar

255

Нет

Таблица Role (Роль пользователя)

Идентификатор

id

integer

4

Да

Название

caption

varchar

255

Да

Таблица Event (Мероприятия)

Номер

id

integer

4

Да

Название

caption

varchar

255

Да

Продолжительность

duration

varchar

255

Да

Место проведения

place

varchar

255

Да

Статус

statusid

integer

4

Да

Дата и время начала

eventdate

datetime

10

Да

Описание

description

varchar

255

Нет

Тип мероприятия

typeid

integer

4

Да

Таблица UserEvent (Мероприятия сотрудников)

Идентификатор

id

integer

4

Да

Сотрудник

userid

integer

4

Да

Мероприятие

eventid

integer

4

Да

Обязательное

requred

varchar

1

Нет

Отметка о прохождении

factvisit

tinyint

1

Нет

2.6. Структурная схема пакета (дерево вызова программных модулей)

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

Таблица 6

Описание программных модулей

Наименование модуля

Назначение

check.php

Проверяет корректность введенных данных на форме авторизации

checkauth.php

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

config.php

Вводит общие настройки для ИС (подключает файлы css-стилей и javascript-функций)

connet.php

Инициализирует подключение к базе данных

event.php

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

document.php

Содержит функции формирования выходных документов: ведомостей о мониторинге ППС

index.php

Отображает главную панель администрирования

login.php

Отображает форму авторизации

logout.php

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

sprav.php

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

user.php

Содержит функции для работы со списком кафедр: просмотр списка, добавление, редактирование

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

Например, модуль для работы с данными пользователей принимает GET-запрос, и в зависимости от указанного параметра action выполняет необходимые действия. Возможные варианты параметров и описание выполняемых действий в модуле user.php приведены в виде схемы, изображенной на рисунке 14.

Рисунок 14 – GET-параметры в модуле user.php

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

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

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

Кроме того, по умолчанию настроена привязка сессии к ip адресу пользователя, в момент авторизации. Это сделано для того, чтобы при хищении сессии (то есть хищении cookies авторизованного пользователя) и заходе с другого ip-адреса система прерывала такую похищенную сессию. Тем не менее, эту привязку можно отключить, поставив соответствующую галочку на форме авторизации.

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

2.8. Контрольный пример реализации проекта и его описание

После перехода на адрес ИС открывается страница авторизации (Рисунок 15).

Рисунок 15. Страница авторизации в ИС

После прохождения авторизации открывается главная страница панели администрирования, на которой отображается список мероприятий (Рисунок 16).

Рисунок 16. Главная страница панели администрирования

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

Для добавления нового мероприятия необходимо нажать на кнопку «Добавить новое мероприятие», откроется форма добавления нового мероприятия (Рисунок 17).

Рисунок 17. Форма добавления нового мероприятия

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

Рисунок 18. Страница выбора справочника

После выбора справочника открывается список записей в нем. Например, на рисунке 19 приведен скриншот страницы с записями справочника «Тип мероприятия».

Рисунок 19. Страница справочника «Типы мероприятий»

Для добавления новой записи в справочник необходимо нажать на кнопку «Добавить», а для редактирования – на саму запись. Откроется форма работы с записями справочника (Рисунок 20).

Рисунок 20. Форма работы с запись справочника «Тип мероприятия»

Форма работы с данными пользователей/сотрудников имеет аналогичный вид, только на ней добавлена вкладка, на которой можно посмотреть историю мероприятий, на который был записан данный сотрудник (Рисунок 21).

Рисунок 21. Форма работы с данными сотрудника

При переходе в раздел составления отчета открывается форма ввода параметров отчета (Рисунок 22).

Рисунок 22. Форма для ввода интервала формирования отчета

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

Рисунок 23. Результат формирования отчета

ЗАКЛЮЧЕНИЕ

В ходе проделанной работы были решены следующие задачи:

  • Была проанализирована текущая организация бизнес-процесса планирования развития и подготовки сотрудников в компании ООО «Дивизион», были выделены основные этапы выполнения бизнес-процесса, изучен возникающий документооборот;
  • Были выбран проектные решения по информационному обеспечению и программному, в качестве языка программирования был выбран php, а в качестве СУБД – Mysql;
  • Была составлена информационная модель информационной системы, которая отражает пути преобразования входной информации в выходную;
  • Была разработана база данных и программные модули, реализующие работу ИС.
  • Был описан контрольный пример реализации проекта.

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

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1. ГОСТ 2.105 – 95. Общие требования к текстовым документам.

2. ГОСТ 7.32 – 2001. Отчет по научно-исследовательской работе. Структура и правила оформления.

3. ГОСТ 7.82-2001. Библиографическое описание электронных ресурсов.

4. ГОСТ 24.702-85 Эффективность автоматизированных систем управления.

5. ГОСТ Р 7.0.5-2008. Библиографическая запись. Библиографическое описание.

6. Алистер Коберн, Современные методы описания функциональных требований к системам, М.: издательство "Лори", 2017. – 288 с

9. Дунаев В. HTML, скрипты и стили / В. Дунаев. – Спб. : БХВ-Петербург, 2015. – 816 с.

10. Жадеев А. PHP для начинающих / А. Жадеев. – Спб.: «Питер», 2014. – 592 c.

11. Колисниченко Д. PHP и MySQL. Разработка WEB-приложений / Д. Колисниченков – Спб: БХВ-Петербург, 2013. – 560 с.

12. Конналли Т. Базы данных. Проектирование, реализация и сопровождение. Теория и практика / Т. Коналли, К. Бегг. – М.: Издательский дом «Вильямс», 2013. – 1093 c.

13. Лобова Г. Моделирование и анализ бизнес-процессов SADT. – М.: LAP Lambert Academic Publishing, 2014. – 352 c.

14. Макдональд, М. Созданиец Web-сайта. Недостающее руководство / М. Макдональд. – Спб. : БХВ-Петербург, 2013. – 624 с.

17. Маклаков С.В. BPwin и Erwin. CASE-средства разработки информационных систем / С.В. Маклаков. – М. : ДИАЛОГ–МИФИ, 2014. – 369 c.

18. Тельнов, Ю.Ф. Информационные системы и технологии. Information System and Technologies: науч. издание под ред. Тельнова Ю. Ф. – М: Юнити-Дана, 2012 – 303 с.

19. Флэнаган, Д. Javascript. Подробное руководство / Д. Флэнаган : пер с англ. – М. : Символ-Плюс, 2013. – 1080 с.

ПРИЛОЖЕНИЯ

<?php

include('checkauth.php');

if ($auth)

{

if ($_GET['action']=='add'){

print "<head>

<meta charset='utf-8'>

<title>Vossen - Пользователи</title>

<link rel='stylesheet' href='../css/style.css'>

</head>";

print " <div class='page'>

<h1>Управление системой</h1>

<hr>

<form class='form-ticket' method='GET'>

<h2>Добавление нового пользователя</h2>

<div class='form-group'>

Логин<span class='text-danger'>*</span>

<input type='text' class='form-control' required name='login' id='login' placeholder='Логин'>

</div>

<div class='form-group'>

ФИО<span class='text-danger'>*</span>

<input type='text' class='form-control' required name='fio' id='caption' placeholder='Фамилия Имя отчество сотрудника'>

</div>

<div class='form-group'>

Пароль<span class='text-danger'>*</span>

<input type='text' class='form-control' required name='password' id='password' placeholder='Пароль'>

</div>

<div class='form-group'>

Электронная почта<span class='text-danger'>*</span>

<input type='email' class='form-control' required name='email' id='email' placeholder='email'>

</div>

<input type='hidden' name='action' value='adding'>

<em>Знаком <span class='text-danger'>*</span> отмечены поля, обязательные для заполнения</em><hr>

<a href='users.php' class='btn btn-lg btn-default'>Назад</a>

<button type='submit' class='btn btn-lg btn-primary '>Сохранить</button>

</form>

</div>

";

}

elseif ($_GET['action']=='edit') {

print "<head>

<meta charset='utf-8'>

<title>Vossen - Пользователи</title>

<link rel='stylesheet' href='../css/style.css'>

</head>";

$query = mysqli_query($link, "SELECT * FROM user WHERE id=".$_GET['id']." LIMIT 1");

$data = mysqli_fetch_assoc($query);

print " <div class='page'>

<h1>Управление системой</h1>

<hr>

<form class='form-ticket' method='GET'>

<h2>Изменение данных пользователя</h2>

<div class='form-group'>

Логин<span class='text-danger'>*</span>

<input type='text' class='form-control' required name='login' id='login' placeholder='Логин' value='".$data['login']."'>

</div>

<div class='form-group'>

ФИО<span class='text-danger'>*</span>

<input type='text' class='form-control' required name='fio' id='fio' placeholder='Фамилия Имя отчество сотрудника' value='".$data['fio']."'>

</div>

<div class='form-group'>

Новый пароль

<input type='text' class='form-control' name='password' id='password' placeholder='Задайте новый пароль'>

</div>

<div class='form-group'>

Электронная почта<span class='text-danger'>*</span>

<input type='email' class='form-control' required name='email' id='email' placeholder='email' value='".$data['email']."'>

</div>

<input type='hidden' name='action' value='editing'>

<input type='hidden' name='id' value='".$data['id']."'>

<em>Знаком <span class='text-danger'>*</span> отмечены поля, обязательные для заполнения</em><hr>

<a href='users.php' class='btn btn-lg btn-default'>Назад</a>

<button type='submit' class='btn btn-lg btn-primary '>Сохранить</button>

</form>

</div>

";

}

elseif ($_GET['action']=='adding' ) {

$err = array();

# проверям логин

if(!preg_match("/^[a-zA-Z0-9]+$/",$_GET['login']))

{

$err[] = "Логин может состоять только из букв английского алфавита и цифр";

}

if(strlen($_GET['login']) < 3 or strlen($_GET['login']) > 30)

{

$err[] = "Логин должен быть не меньше 3-х символов и не больше 30";

}

# проверяем, не сущестует ли пользователя с таким именем

$query = mysqli_query($link, "SELECT id FROM user WHERE login='".$_GET['login']."'");

if(mysqli_num_rows($query) > 0)

{

$err[] = "Пользователь с таким логином уже существует в базе данных";

}

# Если нет ошибок, то добавляем в БД нового пользователя

if(count($err) == 0)

{

$login = $_GET['login'];

# Убераем лишние пробелы и делаем двойное шифрование

$password = md5(md5(trim($_GET['password'])));

mysqli_query($link,"INSERT INTO user SET login='".$login."', password='".$password."', fio='".$_GET['fio']."', email='".$_GET['email']."'");

header("Location: users.php"); exit();

}

else

{

print "<head>

<title>АИС Туризм</title>

<link rel='stylesheet' href='../css/style.css'>

</head>";

print " <div class='page'>

<h1>Управление системой</h1>

<hr>

<form class='form-ticket' method='GET'>

<h2>Добавление нового пользователя</h2>

<b>При добавлении пользователя произошли следующие ошибки:</b><br>";

foreach($err AS $error)

{

print $error."<br>";

}

print "<a class='btn btn-default' href='user.php?action=add'>Попробовать еще раз</a></form></div>";

}

}

elseif ($_GET['action']=='editing' && isset ($_GET['id'])) {

$err = array();

# проверям логин

if(!preg_match("/^[a-zA-Z0-9]+$/",$_GET['login']))

{

$err[] = "Логин может состоять только из букв английского алфавита и цифр";

}

if(strlen($_GET['login']) < 3 or strlen($_GET['login']) > 30)

{

$err[] = "Логин должен быть не меньше 3-х символов и не больше 30";

}

# проверяем, не сущестует ли пользователя с таким именем

$query = mysqli_query($link, "SELECT id FROM user WHERE login='".$_GET['login']."' LIMIT 1");

$data = mysqli_fetch_assoc($query);

if ($data['id'] !=$_GET['id'])

{

$err[] = "Пользователь с таким логином уже существует в базе данных";

}

# Если нет ошибок, то добавляем в БД нового пользователя

if(count($err) == 0)

{

$login = $_GET['login'];

if (isset($_GET['password'])) {

# Убераем лишние пробелы и делаем двойное шифрование

$password = md5(md5(trim($_GET['password'])));

mysqli_query($link,"UPDATE user SET login='".$login."', password='".$password."', fio='".$_GET['fio']."', email='".$_GET['email']."' WHERE id=".$_GET['id']);

}

else {

mysqli_query($link,"UPDATE user SET login='".$login."', fio='".$_GET['fio']."', email='".$_GET['email']."' WHERE id=".$_GET['id']);

}

header("Location: users.php"); exit();

}

else

{

print "<head>

<title>АИС Банк</title>

<link rel='stylesheet' href='../css/style.css'>

</head>";

print " <div class='page'>

<h1>Управление системой</h1>

<hr>

<form class='form-ticket' method='GET'>

<h2>Именение пользователя</h2>

<b>При изменении пользователя произошли следующие ошибки:</b><br>";

foreach($err AS $error)

{

print $error."<br>";

}

print "<a class='btn btn-default' href='user.php?action=edit&id=".$_GET['id']."'>Попробовать еще раз</a></form></div>";

}

}

else {

header("Location: users.php"); exit();

}

}

else

{

header("Location: login.php"); exit();

}

?>

<?php

include('checkauth.php');

if ($auth)

{

$queryusers = mysqli_query($link, "SELECT user.id, user.fio, user.login, user.email FROM user");

print "<head>

<meta charset='utf-8'>

<title>Vossen - Пользователи</title>

<link rel='stylesheet' href='../css/style.css'>

</head>";

print "

<div class='page'>

<h1>Управление системой</h1>

<hr>

<h2>Список пользователей</h2>

<a href='index.php' class='btn btn-default'>Назад</a>

<a href='user.php?action=add' class='btn btn-success'>Добавить нового</a>

<table class=\"table table-striped\">

<thead>

<tr>

<th>Логин</th>

<th>email</th>

<th>Имя</th>

<th>Действия</th>

</tr>

</thead>

<tbody>";

While ($user = mysqli_fetch_assoc($queryusers)) {

print "<tr>

<td>".$user['login']."</td>

<td>".$user['email']."</td>

<td>".$user['fio']."</td>

<td><a href='user.php?action=edit&id=".$user['id']."' class=\"btn btn-primary\">Изменить</a>

</td>

</tr>";

}

print "</tbody>

</table>

</div>

";

}

else

{

header("Location: login.php"); exit();

}

?> <?php

function generateCode($length=6) {

$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHI JKLMNOPRQSTUVWXYZ0123456789";

$code = "";

$clen = strlen($chars) - 1;

while (strlen($code) < $length) {

$code .= $chars[mt_rand(0,$clen)];

}

return $code;

}

include('connect.php');

if(isset($_POST['login']))

{

# Вытаскиваем из БД запись, у которой логин равняеться введенному

$query = mysqli_query($link,"SELECT id, password FROM user WHERE login='".mysqli_real_escape_string($link,$_POST['login'])."' LIMIT 1");

$data = mysqli_fetch_assoc($query);

# Сравниваем пароли

if($data['password'] === md5(md5($_POST['password'])))

{

# Генерируем случайное число и шифруем его

$hash = md5(generateCode(10));

if(!@$_POST['not_attach_ip'])

{

# Если пользователя выбрал привязку к IP

# Переводим IP в строку

$insip = ", ip=INET_ATON('".$_SERVER['REMOTE_ADDR']."')";

}

# Записываем в БД новый хеш авторизации и IP

mysqli_query($link, "UPDATE user SET hash='".$hash."' ".$insip." WHERE id='".$data['id']."'");

# Ставим куки

setcookie("id", $data['id'], time()+60*60*24*30);

setcookie("hash", $hash, time()+60*60*24*30);

# Переадресовываем браузер на страницу проверки нашего скрипта

header("Location: check.php"); exit();

}

else

{

print "Вы ввели неправильный логин/пароль";

}

}

?>

<head>

<meta charset='utf-8'>

<title>Vossen - Вход</title>

<link rel='stylesheet' href='../css/style.css'>

</head>

<body style='height:100%;padding-bottom: 52px;' cz-shortcut-listen='true'>

<div class='container-fluid' style='min-height:100%'>

<form class='form-login' method='POST'>

<h1>Вход</h1>

<div class='form-group'>

Логин<span class='text-danger'>*</span>

<input type='text' id='login' name='login' required class='form-control' placeholder='Логин' autofocus>

</div>

<div class='form-group'>

Пароль<span class='text-danger'>*</span>

<input type='password' id='password' name='password' required class='form-control' placeholder='Пароль'>

</div>

Не прикреплять к IP(не безопасно) <input type="checkbox" name="not_attach_ip"><br>

<button type='submit' class='btn btn-lg btn-primary btn-block'>Войти</button>

</form>

</div>

</body>