Задача 1: Обеспечение безопасности данных
Задание 1.Создать БД для обеспечения безопасности данных.
Запустите среду разработки «SQL Server Management Studio». Для этого в меню «Пуск» выберите пункт «Все приложения\Microsoft SQL Server \SQL Server Management Studio».
- После запуска среды разработки появится окно подключения к серверу Connect to Server».

- В этом окне необходимо нажать кнопку «Соединить» (Connect).
- После нажатия кнопки «Соединить» появится окно среды разработки «SQL Server Management Studio».
- В обозревателе объектов щелкните ПКМ на папке «Базы данных» и в появившемся меню выберите пункт «Создать базу данных».

- Появится окно настроек параметров файла данных новой БД «Создание базы данных». В левой части окна настроек имеется список «Выбор страницы». Этот список позволяет переключаться между группами настроек.
- Настроим основные настройки «Общие». Для выбора основных настроек нужно щелкнуть мышью по пункту «Общие» в списке «Выбор страницы».
- В верхней части окна расположено два параметра: «Имя БД» и «Владелец». Задайте параметр «Имя базы данных» равным «SecurityDB». Параметр «Владелец» нажмите кнопку с многоточием. В окне «Выбор владельца базы данных» нажмите кнопку «Обзор». В окне «Поиск объектов» выделите строку «NT AUTHORITY\система» и нажмите кнопку «ОК».

- Для принятия всех настроек и создание файла данных и журнала транзакций БД нажмите кнопку «ОК».
- Произойдет возврат в окно среды разработки «SQL Server Management Studio». На панели обозревателя объектов в папке «Базы данных» появится новая БД «SecurityDB».
Все таблицы БД находятся в подпапке «Таблицы» папки «SecurityDB» в окне обозревателя объектов.

Задание 2. Создайте таблицу «User_tbl» в базе данных «SecurityDB».
- Для этого щелкните ПКМ по папке «Таблицы» и в появившемся меню выберите пункт «Таблица…»

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

- Так как, поле «ID» будет являться первичным полем связи в запросе, то следует сделать его числовым счетчиком. То есть данное поле должно автоматически заполняться числовыми значениями. Более того, оно должно быть ключевым.
- Сделайте поле «ID» счетчиком. Для этого выделите поле, просто щелкнув по нему мышкой в таблице определения полей. В таблице свойств поля отобразятся свойства поля «ID» Разверните группу свойств «Спецификация идентификатора». Свойство «(Идентификатор)» установите в значение «Да». Задайте свойства «Начальное значение идентификатора» и «Шаг приращения идентификатора» равными 1. Эти настройки показывают, что значение поля «ID» у первой записи в таблице будет равным 1, у второй - 2, у третьей 3 и т.д.

- Теперь сделайте поле «ID» ключевым полем. Выделите поле, а затем на панели инструментов нажмите кнопку с изображением ключа
.

- На этом настройку таблицы «User_tbl»можно считать завершенной. Закройте окно создания новой таблицы, нажав кнопку закрытия
в верхнем правом углу окна, над таблицей определения полей. Появиться окно с запросом о сохранении таблицы.

- В этом окне необходимо нажать «Да» Появиться «Выбор имени», предназначенное для определения имени новой таблицы. В этом окне задайте имя новой таблицы как «User_tbl» и нажмите кнопку «ОК»

- В окне «Обозревателя объектов» нажмите правой кнопкой мыши по ветви «Таблицы» и в меню выберите строку «Обновить», после этого созданная таблица появится в обозревателе объектов.

Задание 3. Заполните таблицу «User_tbl» начальными данными.
- Для заполнения таблицы «User_tbl» в обозревателе объектов щелкните правой кнопкой мыши по таблице «User_tbl» и в появившемся меню выберите пункт «Изменить первые 200 строк».

- В рабочей области «Microsoft SQL Server Management Studio» проявится окно заполнения таблиц. Заполните таблицу «User_tbl», как показано на рисунке. Даты последнего входа пользователей Admin и Me установите либо текущую дату компьютера, либо не менее месяца.

- Закройте окно заполнения таблицы «User_tbl» щелкнув по кнопке закрытия окна
в верхнем правом углу, над таблицей.
Задание 4.Создайте проект в «Microsoft Visual Studio»
- Запустите «SQL Server Browser» (Обозреватель SQL серверов) сервис, обеспечивающий доступ сторонним приложениям к «Microsoft SQL Server». Для запуска данного сервиса необходимо запустить утилиту «SQL Server Configuration Manager» (Менеджер настроек SQL сервера), входящую в состав «Microsoft SQL Server». Для запуска данной утилиты в меню «Пуск» выберите пункт «Программы/Microsoft SQL Server 2012/Средства надстройки/ Диспетчер конфигурации SQL Server» как это представлено на рисунке.

Появится окно менеджера настроек SQL сервера имеющее следующий вид:

- В правой части окна менеджера настроек SQL сервера, в списке сервисов «Microsoft SQL Server» выделите сервис «Обозреватель SQL Server», затем на панели инструментов нажмите кнопку «Запустить службу»
. После запуска вышеуказанного сервиса окно менеджера настроек SQL сервера можно закрыть.

ВНИМАНИЕ: Если кнопка запуска службы не активно, тогда следует в службах компьютера, найти службу «Обозреватель SQL Server» и настроить тип запуска «Вручную», после чего выполнить все выше перечисленные действия по запуску службы из «SQL Server Configuration Manager», предварительно закрыв и открыв данную утилиту.

- Запустите «Microsoft Visual Studio 2012», выбрав в меню «Пуск» пункт «Программы/Microsoft Visual Studio 2012/ Microsoft Visual Studio 2012».
- Появится окно со стартовой страницей «Microsoft Visual Studio 2012 (Начальная страница)».

- Для создания нового проекта на стартовой странице в области «Пуск» необходимо щелкнуть ЛКМ по ссылке «Создать проект…».

Появится окно выбора типа создаваемого проекта, и используемого языка программирования «Создать проект».
- В правой колонке типы проектов выберите «Visual C#\Windows», а в качестве шаблона проекта выберите «Приложение Windows Forms». В качестве имени проекта задайте «WSR_GIA_Ваша Фамилия», укажите путь сохранения проекта, в отдельную папку созданную для данного проекта и нажмите кнопку «ОК».

Задание 5.Подключите к проекту БД «SecurityDB».
- Для подключения БД к проекту в оконном меню среды разработки выберите пункт «Проект\Добавить новый источник данных…».

Появится окно мастера подключения к новому источнику данных Мастер настройки источника данных».

- Выберите вариант источника данных «База данных» и нажимаем кнопку «Далее». Появится окно выбора модели БД. Выберите «Набор данных» и нажмите на кнопку «Далее».

- На следующем шаге мастера появится окно выбора подключения к БД. В окне выбора подключения к БД, для создания нового подключения нажмите кнопку «Создать подключение…».

- Появится окно «Выбор источника данных», выделите строку «Microsoft SQL Server» и нажмите на кнопку «Продолжить».

- В окне «Добавить подключение» в выпадающем списке «Имя сервера» выберите имя сервера заданное при установке SQL сервера. В качестве логина и пароля для входа на сервер выберите «Использовать проверку подлинности Windows». В качестве БД для подключения из выпадающего списка «Выберите или введите имя БД» выберите БД «SecurityDB».

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

- Закройте окно сообщения и окно «Добавления подключения» нажав на кнопку «ОК». Просмотрите созданную строку подключения, щелкнув по знаку «+» в нижней части окна.

- Нажмите кнопку «Далее». Появится окно с запросом о сохранении строки подключения. Для сохранения строки подключения включите опцию «Да, сохранить подключение как:» и нажмите кнопку «Далее».

- Появится окно выбора объектов подключаемой БД. Выберите все объекты как это показано на рисунке и нажмите кнопку «Готово». Подключение завершено.

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

- Для просмотра источника данных отобразите панель «Источник данных», выполнив команду «Вид/Другие окна/Источники данных».

Задание 6. Создайте и настройте форму для входа в систему.
- Настройте свойства формы Form1. Выделите форму, щелкнув ЛКМ в пустом месте формы.

- На панели свойств задайте значения для свойств формы следующим образом:
| Свойство | Значение свойства |
| Name (Имя формы) | Authorization_frm |
| StartPosition(Первоначальное положение формы) | CenterScreen |
| Text (Текст надписи в заголовке формы) | Для входа введите логин и пароль |

- Поместите на форму два элемента Label, два элемента TextBox и один элемент Button с панели элементов (если панель не отображается, активируйте её в меню «Вид»-«Панель элементов»), в разделе «Стандартные элементы управления», как показано на рисунке.

- Настройте свойства элементов, значения которых представлены в таблице.
| Элемент | Свойство | Значение свойства |
| Label1 | Text (Текст надписи) | Логин |
| Label2 | Пароль | |
| TextBox1 | Name (Имя элемента для обращения к нему из кода программы) |
|
| TextBox2 |
| |
| Button1 |
| |
| Button1 | Text (Текст надписи) | Войти в приложение |
| Label1 | Font (Шрифт) | Размер 14 пт |
| Label2 | ||
| TextBox1 | ||
| TextBox2 | ||
| Button1 | ||
| TextBox2 | PasswordChar (символы срытия пароля при вводе) |
|
- Внешний вид формы представлен на рисунке.

Задание 7. Подключение таблицы базы данных с помощью создания класса «LINQ to SQL».
- Добавьте в решение класс «LINQ to SQL». Для этого откройте обозреватель решений, на проекте «WSR_GIA_Serkova» щелкните ПКМ, в контекстном меню выберите пункт «Добавить», а затем «Создать элемент».

- В открывшемся окне добавления элементов перейдите на вкладку «Данные» и выберите в списке элемент «Классы LINQ to SQL», задайте имя новому классу: Users.dbml как показано на рисунке ниже.

- Откройте созданный класс LINQ. Откройте обозреватель серверов, найдите в нем подключение нашей БД. Из папки «Таблицы» перетащите на рабочую область таблицу «User_tbl» расположите их как показано на рисунке ниже, Сохраните класс и закройте вкладку.

Задание 8. Создайте форму Администратора.
- Добавьте в решение форму. Для этого откройте обозреватель решений, на проекте «WSR_GIA_Serkova» щелкните ПКМ, в контекстном меню выберите пункт «Добавить», а затем «Форма Windows».

- В открывшемся окне добавления элементов задайте имя новой форме: «Admin_frm.cs» как показано на рисунке ниже.

- Настройте свойство «Text» формы «Admin_frm» в значение «Раздел администратора системы».

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

- Появится заготовка метод события «FormClosing» (Закрытие формы). Измените метод в соответствии с рисунком.

Задание 9. Создайте форму Пользователя.
- Добавьте в решение форму. Для этого откройте обозреватель решений, на проекте «WSR_GIA_Serkova» щелкните ПКМ, в контекстном меню выберите пункт «Добавить», а затем «Форма Windows».
- В открывшемся окне добавления элементов задайте имя новой форме: «Root_frm.cs».
- Настройте свойство «Text» формы «Root_frm» в значение «Раздел пользователя системы».
- Для корректного закрытия всего приложения, после закрытия окна «Root_frm» создайте процедуру закрытия формы, выделив форму, переключитесь на список методов, в списке методов напротив метода «FormClosing» кликните два раза мышью в пустой строке соседнего столбца.

- Появится заготовка метод события «FormClosing» (Закрытие формы). Измените метод в соответствии с рисунком.

Задание 10. При аутентификации связка «имя пользователя/пароль» должна совпадать с одной из записей в соответствующей таблице. В случае успешной аутентификации должен быть осуществлен вход в систему. Если аутентификация неуспешна должно появляться сообщение «Вы ввели неверный логин или пароль. Пожалуйста проверьте ещё раз введенные данные».
- Щелкните два раза ЛКМ по кнопке «Войти в приложение». Появится заготовка метод события «Click» (щелчок).

- В методе добавьте код, как показано на рисунке ниже.
- Обратите внимание на «UsersDataContext», так вызывается класс «LINQ to SQL», где «Users»- это имя созданного ранее файла. Также в данном коде имеются массив (Users), в который записываются построчно строки из заданной таблицы. Это позволяет легко производить операции по выборке данных.
- Запустите приложение, проведите тестирование по представленному плану.
Правильные данные
| Логин | Пароль | (следующий переход) |
| Admin | Форма Администратора | |
| Root | Форма Пользователя |
Не правильные данные
| Логин | Пароль | (следующий переход) |
| SSS | Сообщение «Вы ввели неверный логин или пароль. Пожалуйста, проверьте ещё раз введенные данные» | |
| Root |
Задание 11. Если в течение трех раз подряд был неверно введен логин/пароль, то система должна заблокировать пользователя.
- Щелкните два раза ЛКМ по кнопке «Войти в приложение». Появится заготовка метод события «Click» (щелчок). Измените метод, как показано на рисунке ниже.



- Запустите приложение, проведите тестирование по представленному плану.
Данные для изменения записей в базе данных и для ввода в форму авторизации.
| Логин | Пароль | (следующий переход) |
| Root | Сообщение «Вы ввели неверный логин или пароль. Пожалуйста, проверьте ещё раз введенные данные» | |
| Root | ||
| Root | ||
| Root | Сообщение «Вы заблокированы. Обратитесь к администратору системы» |
Задание 12. Учетная запись должна блокироваться если пользователь системы не заходил в неё в течении 1 месяца.
- Щелкните два раза ЛКМ по кнопке «Войти в приложение». Появится заготовка метод события Click (щелчок). Измените метод, как показано на рисунке ниже.
- Запустите приложение, проведите тестирование по представленному плану.
Данные для изменения записей в базе данных и для ввода в форму авторизации.
| Логин | Пароль | Дата входа | (следующий переход) |
| Me | от текущей даты ПК отсчитайте назад равное или большее 30 дней (месяц назад) | Сообщение «Вы заблокированы. Обратитесь к администратору системы» |
Задание 13. Создайте и настройте форму смены пароля.
- Добавьте в решение форму. Для этого откройте обозреватель решений, на проекте «WSR_GIA_Serkova» щелкните ПКМ, в контекстном меню выберите пункт «Добавить», а затем «Форма Windows».
- В открывшемся окне добавления элементов задайте имя новой форме: «UpdatePass.cs».
- Настройте свойство «Text» формы «UpdatePass» в значение «Измените пароль».

- Поместите на форму 4 элемента «Label», 3 элемента «TextBox» и один элемент «Button» с панели элементов (если панель не отображается, активируйте её в меню «Вид»-«Панель элементов»), в разделе «Стандартные элементы управления», как показано на рисунке.

- Настройте свойства элементов, значения которых представлены в таблице.
| Элемент | Свойство | Значение свойства |
| Label1 | Text (Текст надписи) | Измените пароль Вашей учетной записи, т. к. Вы не меняли пароль более 14 дней |
| Label2 | Старый пароль | |
| Label3 | Новый пароль | |
| Label4 | Подтвердите пароль | |
| Button1 | Изменить пароль | |
| Label1 | ForeColor (Цвет текста) |
|
| Label1 | Font (Шрифт) | Размер 14 пт |
| Label2 | ||
| Label3 | ||
| Label4 | ||
| TextBox1 | ||
| TextBox2 | ||
| Button1 | ||
| Label1 | MaximumSize (Для переноса строки) |
|
- Внешний вид формы представлен на рисунке.

Задание 14. Для того, чтобы между формами была передача данных о текущем пользователе, создайте глобальную переменную номер редактируемого пользователя.
- Щелкните два раза ЛКМ по кнопке «Войти в приложение». Появится заготовка метод события «Click» (щелчок). Измените метод, как показано на рисунке ниже.
Задание 15. После успешной авторизации, в случае если пользователь не менял пароль в течение 14 дней должна выводиться форма для смены пароля. Если в форме смены пароля - текущий пароль введен неверно или новый пароль не совпадает с подтверждением должно выводиться соответствующее сообщение.
- Щелкните два раза ЛКМ по кнопке «Изменить пароль» на форме «UpdatePass». Появится заготовка метод события «Click» (щелчок). Внесите изменения в верхнюю часть перед методом «button1_Click», как показано на рисунке. Данный код позволит загрузить номер пользователя, который меняет пароль.

- Внесите изменения метод «button1_Click», как показано на рисунке.

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

- Появится заготовка метод события «FormClosing» (Закрытие формы). Измените метод в соответствии с рисунком.

- Откройте форму

- Щелкните два раза ЛКМ по кнопке «Войти в приложение». Появится заготовка метод события «Click» (щелчок). Измените метод, как показано на рисунке ниже.

- Запустите приложение, проведите тестирование по представленному плану.
Данные для изменения записей в базе данных и для ввода в форму авторизации
| Логин | Пароль | Дата входа | (следующий переход) |
| Ivan | от текущей даты ПК отсчитайте назад равное или большее 14 дней | Форма смены пароля |
Правильные данные для формы Смены пароля
| Пароль | Новый пароль | Подтверждение | (следующий переход) |
| Сообщение «Смена пароля прошла успешно» |
Не правильные данные