Добавил:
Преподаватель Колледжа информационных технологий Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторные работы / Методические указания к ЛР по ОАИП (09.02.07)

.pdf
Скачиваний:
60
Добавлен:
08.05.2022
Размер:
3.68 Mб
Скачать

Листинг 12.5

1

private string GetHashString(string s)

2

{

3

byte[] bytes = Encoding.Unicode.GetBytes(s);

4

MD5CryptoServiceProvider CSP = new

MD5CryptoServiceProvider();

 

5

byte[] byteHash = CSP.ComputeHash(bytes);

6

string hash = "";

7

foreach (byte b in byteHash)

8

{

9

hash += string.Format("{0:x2}", b);

10

}

11

return hash;

12

}

В строке 3 мы переводим строку s, хранящую пароль, в массив байтов.

Далее, в строке 4, сейчас объект класса MD5CryptoServiceProvider,

реализующий средства шифрования. Средства шифрования реализованы в пространстве имен System.Security.Cryptography. В строке 5 вычисляем хеш-представление пароля и сохраняем его в массив байтов byteHash. Для вычисления хеша используется метод ComputeHash. После этого формируем одну цельную строку из массива (строка 7-10), сохраняя в строку hash

преобразованные в строковый тип байты из массива byteHash.

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

Листинг 12.6

User

user

=

new

User(textBoxLog.Text,

1this.GetHashString(textBoxPass.Text), textBoxEmail.Text, "User");

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

будет указан в соответствующем поле ввода.

5. Работа с электронной почтой

Для отправки почты в среде интернет используется протокол SMTP (Simple Mail Transfer Protocol). Данный протокол указывает, как почтовые сервера взаимодействуют при передаче электронной почты.

191

Для работы с протоколом SMTP и отправки электронной почты в .NET

предназначен класс SmtpClient из пространства имен System.Net.Mail.

Этот класс определяет ряд свойств, которые позволяют настроить отправку:

Host: smtp-сервер, с которого производится отправление почты.

Например, smtp.yandex.ru

Port: порт, используемый smp-сервером. Если не указан, то по умолчанию используется 25 порт.

Credentials: аутентификационные данные отправителя

EnableSsl: указывает, будет ли использоваться протокол SSL при отправке Еще одним ключевым классом, который используется при отправке,

является MailMessage. Данный класс представляет собой отправляемое

сообщение. Среди его свойств можно выделить следующие:

Attachments: содержит все прикрепления к письму

Body: непосредственно текст письма

From: адрес отправителя. Представляет объект MailAddress

To: адрес получателя. Также представляет объект MailAddress

Subject: определяет тему письма

IsBodyHtml: указывает, представляет ли письмо содержимое с кодом html

Используем эти классы и выполним отправку письма:

 

 

 

 

 

Листинг 12.7

 

 

 

 

1

private void

buttonSendPassword_Click(object sender,

 

EventArgs e)

 

 

 

 

 

 

 

 

 

 

 

2

{

 

 

 

 

 

3

MailAddress

from

=

new

MailAddress("zaid-

 

mingaliev@mail.ru", "Zaid");

 

 

 

 

 

 

 

4

MailAddress to = new MailAddress(textBoxEmail.Text);

 

192

5

MailMessage m = new MailMessage(from, to);

6

m.Subject = "Тест";

 

 

 

7

using (UserContext db = new UserContext())

8

{

 

 

 

9

foreach (User user in db.Users)

10

{

 

 

 

11

if (textBoxEmail.Text == user.Email)

12

{

 

 

 

13

m.Body = "<h1>Пароль: " + user.Password + "</h1>";

14

}

 

 

 

15

}

 

 

 

16

}

 

 

 

17

m.IsBodyHtml = true;

 

 

18

SmtpClient smtp = new SmtpClient("smtp.mail.ru", 587);

19

smtp.Credentials

=

new

NetworkCredential("zaid-

mingaliev@mail.ru", "123");

 

20

smtp.EnableSsl = true;

 

 

21

smtp.Send(m);

 

 

 

22

}

 

 

 

Объект from – это отправитель – в конструкторе данного объекта устанавливаем адрес и отображаемое в письме имя.

Объект to – это получатель письма – в конструктор объекта-получателя передаем его адрес электронной почты.

Объект m – это объект сообщения, в конструктор которого передается объект отправитель и получатель. Subject – это свойство темы письма. В

свойство body

В цикле foreach (строка 9-15) производится поиск в БД через контекст данных пользователя с адресом электронной почты, соответствующим адресу,

введенному в форме.

Объект smtp хранит адрес (имя или IP-адрес хоста) smtp-сервера и порт,

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

В свойстве Credentials хранится логин и пароль электронной почты,

являющейся отправителем электронного письма.

Для отправки применяется метод Send(), в который передается объект

MailMessage.

193

ЗАДАНИЕ НА ЛАБОРАТОРНУЮ РАБОТУ

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

1.Регистрация пользователя согласно атрибутам сущности

«Пользователь», определенным в индивидуальном варианте. Сохранение

данных о пользователе производить в базе данных.

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

3.Восстановление доступа к учетной записи пользователя путем отправки в электронную почту пароля.

Пароли, сохраняемые в БД, должны хешироваться.

194

ЛАБОРАТОРНАЯ РАБОТА №13-14

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

ЦЕЛЬ РАБОТЫ Получение навыков проектирования модели данных и разработки

информационных систем.

ХОД РАБОТЫ

1. Понятие информационной системы

Информационная система, согласно ISO/IEC 2382:2015, — система,

предназначенная для хранения, поиска и обработки информации, и

соответствующие организационные ресурсы (человеческие, технические,

финансовые и т. д.), которые обеспечивают и распространяют информацию.

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

информационные массивы, базы данных и информационные услуги.

По степени распределённости отличают следующие виды информационных систем:

настольные (desktop), или локальные информационные системы,

вкоторых все компоненты (БД, СУБД, клиентские приложения) находятся на одном компьютере;

распределённые (distributed) информационные системы, в

которых компоненты распределены по нескольким компьютерам.

Распределённые информационные системы, в свою очередь, разделяют

на:

файл-серверные информационные системы (информационные системы с архитектурой «файл-сервер»);

клиент-серверные информационные системы

(информационные системы с архитектурой «клиент-сервер»).

195

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

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

Вданной лабораторной работе будет рассматриваться разработка настольной (desktop) версии информационной системы.

2. Формирование требований к системе

Предположим, что перед нами стоит задача разработать

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

первую очередь мы должны изучить предметную область и процессы,

происходящие в ней. Для этого мы опрашиваем преподавателей, студентов,

читаем документацию, изучаем формы заявлений и т.п.

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

1.Регистрация и авторизация пользователей;

2.Просмотр тем дипломных проектов, предлагаемых преподавателями;

3.Просмотр аннотации о предлагаемой теме дипломного проекта;

4.Просмотр информации о преподавателе;

5.Просмотр информации о студенте;

6.Изменение персональных данных (логина, пароля, номера группы,

информация о себе …) учетной записи;

7.Добавление темы дипломного проекта и аннотации к ней;

8.Редактирование темы дипломного проекта и аннотации к ней;

9.Удаление темы дипломного проекта;

10.Закрепление студента-дипломника за преподавателем;

11.Открепление студента-дипломника от преподавателя.

196

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

3.Распределение ролей пользователей в информационной системе

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

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

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

Преподаватель – это пользователь информационной системы,

которому предоставляется возможность просмотра информации о студенте,

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

закрепление/открепления студента.

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

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

качестве инструмента семантического моделирования используются различные варианты диаграмм сущность-связь (ER - Entity-Relationship).

Основные понятия ER-диаграмм

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

Каждая сущность должна иметь наименование, выраженное существительным в единственном числе.

197

Примерами сущностей могут быть такие классы объектов как

«Поставщик», «Сотрудник», «Накладная».

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

Рисунок 14.1 – Сущность «Сотрудник»

Экземпляр сущности - это конкретный представитель данной сущности.

Например, представителем сущности «Сотрудник» может быть

«Сотрудник Мингалиев».

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

Атрибут сущности - это именованная характеристика, являющаяся некоторым свойством сущности.

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

Примерами атрибутов сущности «Сотрудник» могут быть такие атрибуты как «Табельный номер», «Фамилия», «Имя», «Отчество», «Должность», «Зарплата» и т.п.

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

Рисунок 14.2 – Сущность «Сотрудник» с атрибутами

198

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

Сущность может иметь несколько различных ключей.

Ключевые атрибуты изображаются на диаграмме подчеркиванием:

Рисунок 14.3 – Сущность «Сотрудник» с ключом «Табельный номер»

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

Связи позволяют по одной сущности находить другие сущности,

связанные с нею.

Например, связи между сущностями могут выражаться следующими фразами – «СОТРУДНИК может иметь несколько ДЕТЕЙ», «каждый СОТРУДНИК обязан числиться ровно в одном ОТДЕЛЕ».

Графически связь изображается линией, соединяющей две сущности:

Рисунок 14.4 – Связь между сущностями «Сотрудник» и «Ребенок»

Каждая связь имеет два конца и одно или два наименования.

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

Каждая связь может иметь один из следующих типов связи:

199

Рисунок 14.5 – Типы связей

Связь типа один-к-одному означает, что один экземпляр первой сущности (левой) связан с одним экземпляром второй сущности (правой). Эта связь имеет еще один подвид, который называется ноль-или-один-к-одному

(zero-or-one-to-one). При этом виде связи, в зависимой таблице необязательно указывать связанную строку, т.е. одной строке в главной таблице, может соответствовать ноль или одна строка в зависимой таблице.

Связь типа один-ко-многим означает, что один экземпляр первой сущности (левой) связан с несколькими экземплярами второй сущности

(правой). Это наиболее часто используемый тип связи. Левая сущность (со стороны «один») называется родительской, правая (со стороны «много») -

дочерней. Характерный пример такой связи приведен на рисунке 14.4.

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

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

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

дальнейшем этот тип связи должен быть заменен двумя связями типа один-ко-

многим путем создания промежуточной сущности.

Пример разработки ER-модели

При разработке ER-моделей мы должны получить следующую информацию о предметной области:

1.Список сущностей предметной области.

2.Список атрибутов сущностей.

3.Описание взаимосвязей между сущностями.

200

Соседние файлы в папке Лабораторные работы