|
textBoxPassword.Text, Role = |
(навигационному свойству Professor |
|
|
(string)comboBoxRole.SelectedItem }; |
присваивается созданный ранее объект |
|
|
|
professor) |
|
|
|
|
|
|
|
Добавление созданного объекта user в |
|
23 |
db.UserSet.Add(user); |
коллекцию сущностей UserSet из контекста |
|
данных, отвечающую за хранение сущностей в |
|||
|
|
||
|
|
базе данных |
|
|
|
|
|
24 |
db.SaveChanges(); |
Сохранение изменений результата запроса в базе |
|
данных |
|||
|
|
||
|
|
|
|
25 |
} |
|
|
|
|
|
|
26 |
} |
|
|
|
|
|
|
27 |
this.Form1.Visible = true; |
Открытие формы авторизации |
|
|
|
|
|
28 |
this.Visible = false; |
Скрытие формы регистрации |
|
|
|
|
|
29 |
} |
|
|
|
|
|
§17.17.2 Авторизация пользователя
При авторизации пользователь вводит в форме авторизации свой логин
(textboxLogin), пароль (textBoxPassword) и нажимает на кнопку Войти
(buttonAuth).
Реализация метода обработчика нажатия на кнопку Войти представлена в листинге 17.4.
|
|
|
Листинг 17.4 – Авторизация пользователя |
||||||
|
|
|
|
|
|
|
|
||
1 |
FormReg FormReg; |
|
|
|
|
|
|
||
2 |
FormStudentAccount FormStudentAccount; |
|
|
|
|||||
3 |
FormProfessorAccount FormProfessorAccount; |
|
|
|
|||||
4 |
FormAdminPanel FormAdminPanel; |
|
|
|
|
|
|||
5 |
private void buttonAuth_Click(object sender, EventArgs |
|
|||||||
e) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
{ |
|
|
|
|
|
|
|
|
7 |
using(EntityModelContainer |
|
db |
= |
|
new |
|
||
EntityModelContainer()) |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|||
8 |
{ |
|
|
|
|
|
|
|
|
9 |
foreach (User user in db.UserSet) |
|
|
|
|
||||
10 |
{ |
|
|
|
|
|
|
|
|
11 |
if(user.Login == textBoxLogin.Text && user.Password == |
|
|||||||
textBoxPassword.Text && user.Role == "Студент") |
|
|
|
||||||
12 |
{ |
|
|
|
|
|
|
|
|
13 |
this.FormStudentAccount = new FormStudentAccount(this, |
|
|||||||
user); |
|
|
|
|
|
|
|
|
|
14 |
this.FormStudentAccount.Text |
= |
"Профиль |
" |
+ |
|
|||
user.Student.Name; |
|
|
|
|
|
|
|||
15 |
this.FormStudentAccount.labelStudentName.Text = "Добро |
|
|||||||
пожаловать, " + user.Student.Name; |
|
|
|
|
|||||
16 |
this.FormStudentAccount.Visible = true; |
|
|
|
|||||
17 |
this.Visible = false; |
|
|
|
|
|
|
||
18 |
} |
|
|
|
|
|
|
|
|
|
else |
if |
(user.Login |
== |
textBoxLogin.Text |
&& |
|
||
19 |
user.Password == textBoxPassword.Text && user.Role == |
|
|||||||
|
"Преподаватель") |
|
|
|
|
|
|
||
20 |
{ |
|
|
|
|
|
|
|
|
21 |
this.FormProfessorAccount |
|
|
= |
|
new |
|
||
FormProfessorAccount(this, user); |
|
|
|
|
|||||
22 |
this.FormProfessorAccount.Text |
= |
"Профиль |
" |
+ |
|
|||
|
user.Professor.Name; |
|
|
|
|
|
|
||
23 |
this.FormProfessorAccount.labelProfessorName.Text |
= |
||||
"Добро пожаловать, " + user.Professor.Name; |
|
|||||
24 |
this.FormProfessorAccount.Visible = true; |
|
||||
25 |
this.Visible = false; |
|
|
|
||
26 |
} |
|
|
|
|
|
|
else |
if |
(user.Login |
== |
textBoxLogin.Text |
&& |
27 |
user.Password == textBoxPassword.Text && user.Role == |
|||||
|
"Администратор") |
|
|
|
||
28 |
{ |
|
|
|
|
|
29 |
this.FormAdminPanel = new FormAdminPanel(this, user); |
|||||
30 |
this.FormAdminPanel.Visible = true; |
|
||||
31 |
this.Visible = false; |
|
|
|
||
32 |
} |
|
|
|
|
|
33 |
} |
|
|
|
|
|
34 |
} |
|
|
|
|
|
35 |
} |
|
|
|
|
|
В представленном методе идет последовательный перебор элементов коллекции UserSet, представляющий собой набор данных элементов из таблицы UserSet в базе данных. Если значение свойства Role элемента из коллекции равно «Студент», логин и пароль совпадают с теми, которые были введены в соответствующие текстовые поля (строка 11), то создается и открывается форма профиля студента FormStudentAccount. Если значение свойства Role элемента из коллекции равно «Преподаватель», логин и пароль совпадают с теми, которые были введены в соответствующие текстовые поля
(строка 19), то создается и открывается форма профиля преподавателя
FormProfessorAccount. Если значение свойства Role элемента из коллекции равно «Администратор», логин и пароль совпадают с теми, которые были введены в соответствующие текстовые поля (строка 27), то создается и открывается форма профиля администратора FormAdminPanel.
Обратите внимание, что при создании объекта одной из трех форм в конструктор передается дополнительно два параметра – ссылка на экземпляр текущего класса (формы авторизации) с помощью ключевого слова this и
ссылка на объект user, для которого осуществляется процесс авторизации,
чтобы использовать данные о пользователе при загрузке информации о нем в его профиле.
§17.17.3 Просмотр списка преподавателей
Рассмотрим, как будет осуществляться просмотр списка преподавателей через профиль студента. Список выводится в listBoxLecturer при нажатии кнопки Просмотр списка преподавателей (buttonShowProfessors). После нажатия на эту кнопку она меняет свою надпись на Просмотр и свое назначение – после этого после выбора из списка преподавателя, если нажать на кнопку Просмотр откроется форма информации о преподавателе (форма
5).
Реализация метода обработчика события нажатия на кнопку Просмотр списка преподавателей/Просмотр представлена в листинге 17.5.
|
|
Листинг 17.5 – Просмотр списка преподавателей |
|
|
|
|
|
1 |
private void buttonShowProfessors_Click(object |
|
Метод обработчик события нажатия на |
sender, EventArgs e) |
|
кнопку buttonShowProfessors |
|
|
|
||
|
|
|
|
2 |
{ |
|
|
|
|
|
|
|
if (buttonShowProfessors.Text == "Просмотр списка |
|
Проверка на равенство надписи кнопки |
3 |
|
buttonShowProfessors значению |
|
преподавателей") |
|
||
|
|
"Просмотр списка преподавателей" |
|
|
|
|
|
|
|
|
|
4 |
{ |
|
Если условие в строке 3 истинно, то |
|
производим следующие действия |
||
|
|
|
|
|
|
|
|
5 |
using (EntityModelContainer db = new |
|
Создание объекта db контекста данных |
EntityModelContainer()) |
|
EntityModelContainer |
|
|
|
||
|
|
|
|
6 |
{ |
|
|
|
|
|
|
|
|
|
Цикл для обработки элементов коллекции |
7 |
foreach (Professor professor in db.ProfessorSet) |
|
db.ProfessorSet (коллекция сущностей |
|
|
|
ProfessorSet из базы данных) |
|
|
|
|
8 |
{ |
|
|
|
|
|
|
9 |
listBoxLecturer.Items.Add(professor.Name); |
|
Добавление в список listBoxLecturer |
|
значений свойства Name каждого |
||
|
|
|
|
|
|
|
|