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

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

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

Удаление темы происходит при выборе удаляемого объекта в списке

ListBox1 и нажатии после этого кнопки Удалить.

Разработанный интерфейс формы просмотра информации о преподавателе представлен на рисунке 14.31.

Рисунок 14.31 – Форма профиля преподавателя

5.2.7.Форма информации о студентах

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

ВLabel1 выводится информация о данной форме (например, «Обзор студентов»).

Возврат в предыдущую форму (форму профиля преподавателя)

происходит при нажатии кнопки Выход.

ФИО студентов, зарегистрированных в системе, выводится в список

ListBox1.

ФИО, номер группы и данные «О себе» выводится в соответствующие

RichTextBox, а фотография в PictureBox при выборе студента в списке

ListBox1.

221

Разработанный интерфейс формы просмотра информации о студентах представлен на рисунке 14.32.

Рисунок 14.32 – Форма просмотра информации о студентах

5.2.8.Форма профиля администратора

Вданной форме есть элементы управления, позволяющие просмотреть,

добавить или удалить пользователей.

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

При нажатии кнопки Удаление пользователя открывается панель со списком listBoxUsers для выбора удаляемого пользователя. Для удаления необходимо выбрать элемент из появившегося списка и нажать кнопку

Удалить в нижнем правом углу формы.

Возврат в предыдущую форму (форму авторизации) происходит при нажатии кнопки Выход.

222

Рисунок 14.33 – Панель администратора

6.Разработка функционала приложения

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

При регистрации новый пользователь выбирает свою роль

(comboBoxRole), вводит ФИО (textBoxFIO), номер группы

(textBoxNumGroup), логин (textBoxLogin), пароль (textBoxPassword), и

информацию о себе (richTextBoxPersonalData) и выбирает фотографию для создания аватара своего профиля.

Выбор фотографии для аватара происходит по нажатию кнопки Обзор.

Реализация обработчика кнопки Обзор представлена в листинге 14.2.

Листинг 14.2. – Метод загрузки фотографии

1 byte[] imageBytes;

223

2

private void buttonOverview_Click(object sender, EventArgs

e)

 

 

3

{

 

 

4

OpenFileDialog open_dialog = new OpenFileDialog();

 

 

open_dialog.Filter

=

"Image

5

Files(*.BMP;*.JPG;*.GIF;*.PNG)|*.BMP;*.JPG;*.GIF;*.PNG|All

 

files (*.*)|*.*";

 

 

6

if (open_dialog.ShowDialog() == DialogResult.OK)

 

7

{

 

 

8

try

 

 

9

{

 

 

10

this.imageBytes = File.ReadAllBytes(open_dialog.FileName);

11

labelLoadingStatus.Text = "Успешно";

 

12

}

 

 

13

catch

 

 

14

{

 

 

15

labelLoadingStatus.Text = "Ошибка";

 

16

}

 

 

17

}

 

 

18

}

 

 

Для хранения картинок в памяти и сохранения в базе данных необходимо преобразовывать их в массив байтов. В строке 1 создается массив imageBytes, который будет хранить набор байтов. Поиск картинки происходит через диалоговое окно OpenFileDialog, экземпляр которого open_dialog создается в строке 4. Свойство Filter задает фильтр файлов,

благодаря чему в диалоговом окне можно отфильтровать файлы по расширению. Фильтр задается в следующем формате

Название_файлов|*.расширение

Например,

Текстовые файлы(*.txt)|*.txt

Можно задать сразу несколько фильтров, для этого они разделяются вертикальной линией |. Например,

Bitmap files (*.bmp)|*.bmp|Image files (*.jpg)|*.jpg

С помощью метода ShowDialog() происходит открытие диалогового

окна для открытия файла.

224

Рисунок 14.34 – Диалоговое окно для открытия файла

Если в окне была нажата кнопка «Открыть», то абсолютный путь до загружаемой картинки сохраняется в свойство FileName объекта open_dialog и передается в качестве параметра в метод ReadAllBytes,

который открывает этот файл, считывает содержимое файла в массив байтов imageBytes и затем закрывает файл. После корректного завершения загрузки файла в labelLoadingStatus выводится сообщение «Успешно». Если во время чтения возникнет исключение, то в labelLoadingStatus выведется сообщение «Ошибка».

Добавление нового пользователя в базу данных происходит по нажатию кнопки Зарегистрироваться (buttonReg). Реализация метода обработчика нажатия на кнопку Зарегистрироваться представлена в листинге 14.3.

225

 

 

Листинг 14.3. – Регистрация пользователя

 

 

 

1

private void buttonReg_Click(object sender,

Метод обработчик нажатия на кнопку buttonReg

EventArgs e)

 

 

 

 

 

2

{

 

 

 

 

3

if (comboBoxRole.SelectedItem.ToString() ==

Проверка выбранной при регистрации роли на

"Студент")

соответствие значению «Студент»

 

 

 

 

4

{

 

 

 

 

5

using (EntityModelContainer db = new

Создание объекта db контекста данных

EntityModelContainer())

EntityModelContainer

 

 

 

 

6

{

 

 

 

 

 

Student student = new Student() { Name =

 

 

textBoxFIO.Text, NumberGroup =

Создание объекта student класса Student и

7

int.Parse(textBoxNumGroup.Text), PersonalData =

инициализация его свойств значениями,

 

richTextBoxPersonalData.Text, Photo =

введенными в соответствующие текстовые поля

 

this.imageBytes };

 

 

 

 

 

 

Добавление созданного объекта student в

8

db.StudentSet.Add(student);

коллекцию сущностей StudentSet из контекста

 

 

данных, отвечающую за хранение сущностей в

 

 

 

226

 

 

базе данных

 

 

 

9

db.SaveChanges();

Сохранение изменений результата запроса в базе

данных

 

 

 

 

 

 

User user = new User() { Student = student,

Создание объекта user класса User и

 

инициализация его свойств значениями,

 

Login = textBoxLogin.Text, Password =

10

введенными в соответствующие текстовые поля

textBoxPassword.Text, Role =

 

(навигационному свойству Student

 

(string)comboBoxRole.SelectedItem };

 

присваивается созданный ранее объект student)

 

 

 

 

 

 

 

Добавление созданного объекта user в

11

db.UserSet.Add(user);

коллекцию сущностей UserSet из контекста

данных, отвечающую за хранение сущностей в

 

 

 

 

базе данных

 

 

 

12

db.SaveChanges();

Сохранение изменений результата запроса в базе

данных

 

 

 

 

 

13

}

 

 

 

 

14

}

 

 

 

 

15

else if (comboBoxRole.SelectedItem.ToString() ==

Проверка выбранной при регистрации роли на

"Преподаватель")

соответствие значению «Преподаватель»

 

 

 

 

227

16

{

 

 

 

 

17

using (EntityModelContainer db = new

Создание объекта db контекста данных

EntityModelContainer())

EntityModelContainer

 

 

 

 

18

{

 

 

 

 

 

Professor professor = new Professor() { Name =

 

 

textBoxFIO.Text, Position =

Создание объекта professor класса Professor

19

textBoxNumGroup.Text, PersonalData =

и инициализация его свойств значениями,

 

richTextBoxPersonalData.Text, Photo =

введенными в соответствующие текстовые поля

 

this.imageBytes };

 

 

 

 

 

 

Добавление созданного объекта professor в

20

db.ProfessorSet.Add(professor);

коллекцию сущностей ProfessorSet из

контекста данных, отвечающую за хранение

 

 

 

 

сущностей в базе данных

 

 

 

21

db.SaveChanges();

Сохранение изменений результата запроса в базе

данных

 

 

 

 

 

 

User user = new User() { Professor = professor,

Создание объекта user класса User и

22

инициализация его свойств значениями,

Login = textBoxLogin.Text, Password =

 

введенными в соответствующие текстовые поля

 

 

 

 

 

228

 

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

}

 

 

 

 

229

6.2. Авторизация пользователя

При авторизации пользователь вводит в форме авторизации свой логин

(textboxLogin), пароль (textBoxPassword) и нажимает на кнопку Войти

(buttonAuth).

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

 

 

 

Листинг 14.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;

 

 

 

 

 

 

230

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