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

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

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

6.6. Удаление темы дипломной работы

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

Реализация метода обработчика события нажатия на кнопку Удалить

представлена в листинге 14.10.

Листинг 14.10 – Удаление темы

1

private

void buttonDeleteThesis_Click(object

sender,

EventArgs e)

 

 

 

 

 

 

 

2

{

 

 

 

 

3

using

(EntityModelContainer

db

=

new

EntityModelContainer())

 

 

 

 

 

 

 

4

{

 

 

 

 

5

string

str

 

 

=

Convert.ToString(listBoxTheses.SelectedItem);

 

 

 

 

Thesis ModifiableThesis = (from t in db.ThesisSet

6

where t.Name == str

 

 

 

 

select t).FirstOrDefault();

 

 

 

7

db.ThesisSet.Remove(ModifiableThesis);

 

 

8

db.SaveChanges();

 

 

 

9

}

 

 

 

 

10

this.UpdateListBoxTheses();

 

 

 

11

}

 

 

 

 

Реализация удаления темы мало отличается от метода редактирования темы. Единственное отличие – строка 7. В ней происходит вызов метода

Remove коллекции ThesisSet, который выполняет удаление объекта

ModifiableThesis.

6.7. Просмотр информации о студентах

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

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

Листинг 14.11 – Поиск студентов

1

private void buttonFind_Click(object sender, EventArgs e)

2 {

241

3

FormOverviewStudent

formOverviewStudent

=

new

FormOverviewStudent(this);

 

 

 

 

 

4

formOverviewStudent.Show();

 

 

5

this.Visible = false;

 

 

 

6

}

 

 

 

При нажатии на кнопку в строке 3 создается форма просмотра информации о студентах formOverviewStudent, конструктор которой принимается ссылку на текущую форму. В строке 4 происходит открытие

новой формы, а в строке 5 – закрытие формы профиля преподавателя.

Реализация конструктора класса формы представлена в листинге 14.12.

Листинг 14.12 – Конструктор формы FormOverviewStudent

1

public

FormOverviewStudent(FormProfessorAccount

formProfessorAccount)

 

 

 

 

 

 

 

2

{

 

 

 

 

3

InitializeComponent();

 

 

 

4

this.FormProfessorAccount = formProfessorAccount;

 

5

using

(EntityModelContainer

db

=

new

EntityModelContainer())

 

 

 

 

 

 

 

6

{

 

 

 

 

7

foreach (User user in db.UserSet)

 

 

 

8

{

 

 

 

 

9

if (user.Student != null)

 

 

 

10

{

 

 

 

 

11

listBoxStudents.Items.Add(user.Student.Name);

 

12

}

 

 

 

 

13

}

 

 

 

 

14

}

 

 

 

 

15

}

 

 

 

 

В конструкторе происходит заполнение списка listBoxStudents

элементами коллекции db.UserSet, которые являются студентами.

Проверить на принадлежность пользователя роли студента можно, сравнив свойство Student на неравенство значению null или на равенство свойства

Role значению «Студент».

Вывод информации о студенте происходит при выборе ФИО студента в списке listBoxStudents. Реализация метода обработчика события нажатия на элемент списка представлен в листинге 14.13.

242

Листинг 14.13 – Вывод информации о выбранном студенте

 

private

 

 

 

 

void

1

listBoxStudents_SelectedIndexChanged(object

 

sender,

 

EventArgs e)

 

 

 

 

2

{

 

 

 

 

 

3

using

(EntityModelContainer

db

=

new

EntityModelContainer())

 

 

 

 

 

 

 

 

 

4

{

 

 

 

 

 

5

if (listBoxStudents.SelectedItem != null)

 

 

6

{

 

 

 

 

 

7

string

 

SelectedName

 

=

Convert.ToString(listBoxStudents.SelectedItem);

 

 

Student student =

 

 

 

 

8

 

 

(from s in db.StudentSet

 

 

where s.Name == SelectedName

 

 

 

 

 

 

select s).FirstOrDefault();

 

 

 

 

9

richTextBoxName.Text = student.Name;

 

 

10

richTextBoxNumberGroup.Text

 

 

=

Convert.ToString(student.NumberGroup);

 

 

11

richTextBoxPersonalData.Text = student.PersonalData;

12

pictureBoxPhoto.Image

=

(Image)(Image)((new

ImageConverter()).ConvertFrom(student.Photo));

 

13

}

 

 

 

 

 

14

else

 

 

 

 

 

15

{

 

 

 

 

 

16

MessageBox.Show("Ошибка выбора");

 

 

 

17

}

 

 

 

 

 

18

}

 

 

 

 

 

19

}

 

 

 

 

 

В строке 7 создается строковая переменная SelectedName, в которую сохраняется ФИО студента, выбранное в списке listBoxStudents. В строке

8 создается объект student, которому присваивается результат выполнения запроса на выборку, где ищется совпадение ФИО студента s.Name,

хранящейся в таблице StudentSet базы данных со строкой SelectedName.

Далее происходит вывод в соответствующие текстовые поля ФИО, номера группы и информации «О себе» выбранного в списке студента и вывод фотографии студента в pictureBoxPhoto (аналогичное просмотрю информации о преподавателе).

243

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

Лабораторная работа №13

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

преподавателем.

Лабораторная работа №14

Выполнить программную реализацию информационную систему,

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

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

СПИСОК ИНДИВИДУАЛЬНЫХ ВАРИАНТОВ

Тема

1Книжное издательство

2Магазин канц. товаров

3Библиотека

4Магазин автомобильных запасных частей

5Архив фотографий

6Компьютерная мастерская

7Сеть магазинов одежды

8Система регистрации заданий для художников

9Электронный заказ в ресторане

10Электронный каталог периодических изданий

11Конкурс детских рисунков

12Кинотеатр

13Реестр научных статей

14Книжный магазин

15Доставка еды

16Новостной портал

17Система тестирования знаний

18Фотостудия

19Ателье по пошиву одежды

20Цветочный магазин

21Форум

22Портфолио художника

23Электронный ежедневник

24Электронно-обучающая система

25Поликлиника

244

26Стоматология

27Ювелирный дом

28Метеорологическая служба

29Отель

30Отдел кадров

31Служба продажи билетов на массовые мероприятия

32Доставка воды

33Приемная комиссия

34Аптека

35Строительная фирма

36Туристический гид по городу (на выбор)

37Рейтинг ресторанов

38Кофейный автомат

39Кулинарная книга

40Туристическая фирма

245

ЛАБОРАТОРНАЯ РАБОТА №15

Тема: «Разработка приложения с клиент-серверной архитектурой»

ЦЕЛЬ РАБОТЫ

Получение навыков разработки клиент-серверных приложений.

ХОД РАБОТЫ

1. Архитектура «Клиент-сервер»

«Клиент — сервер» — вычислительная или сетевая архитектура, в

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

клиентами.

Фактически клиент и сервер — это программное обеспечение. Обычно эти программы расположены на разных вычислительных машинах и взаимодействуют между собой через вычислительную сеть посредством сетевых протоколов, но они могут быть расположены также и на одной машине.

Программы-серверы ожидают от клиентских программ запросы и предоставляют им свои ресурсы в виде данных (например, загрузка файлов посредством HTTP, FTP, потоковое мультимедиа или работа с базами данных)

или в виде сервисных функций (например, работа с электронной почтой,

общение посредством систем мгновенного обмена сообщениями или просмотр web-страниц во всемирной паутине).

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

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

специфики её оборудования и программного обеспечения, её также называют сервером, а машины, выполняющие клиентские программы, соответственно,

клиентами.

246

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

которые дают то, что надо. При этом взаимодействие всегда начинает клиент,

а правила, по которым происходит взаимодействие, описывает протокол.

Существует два вида архитектуры взаимодействия клиент-сервер:

первый получил название двухзвенная архитектура клиент-серверного взаимодействия, второй – многоуровневая архитектура клиент-сервер

(иногда его называют трехуровневая архитектура или трехзвенная архитектура, но это частный случай).

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

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

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

серверного взаимодействия.

Рисунок 15.1 – Двухзвенная архитектура клиент-серверного взаимодействия

Здесь четко видно, что есть клиент (1-е звено), который позволяет человеку сделать запрос, и есть сервер (2-е звено), который обрабатывает запрос клиента.

Если говорить про многоуровневую архитектуру взаимодействия клиент-сервер, то в качестве примера можно привести любую современную

247

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

Рисунок 15.2 – Трехзвенная архитектура клиент-серверного приложения

Если говорить в контексте систем управления базами данных, то первое звено – это клиент, который позволяет нам писать различные SQL запросы к базе данных. Второе звено – это сервер приложения, являющийся промежуточным звеном между клиентом и хранилищем данных, а третье звено – это движок СУБД, который интерпретирует запросы и реализует взаимодействие между клиентом и файловой системой.

2. Создание библиотеки классов

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

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

248

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

Возьмем имеющийся проект, созданный на предыдущей лабораторной работе. В структуре проекта нажмем правой кнопкой на название решения и далее в появившемся контекстном меню выберем Добавить → Создать проект:

Далее в списке шаблонов проекта найдем пункт Библиотека классов

(.NET Framework):

Рисунок 15.3 – Создание библиотеки классов

Затем дадим новому проекту какое-нибудь название, например, MyLib.

После этого в решение будет добавлен новый проект, в нашем случае с названием MyLib:

249

Рисунок 15.4

По умолчанию новый проект имеет один пустой класс Class1 в файле

Class1.cs. Мы можем этот файл удалить или переименовать, как нам больше нравится.

Например, переименуем файл Class1.cs в User.cs, а класс Class1 в User. Определим в классе User простейший код для сущности

«Пользователь»:

 

Листинг 15.1 – Класс «Пользователь»

 

 

 

1

namespace MyLib

 

2

{

 

3

[Serializable]

 

4

public partial class User

 

5

{

 

6

public int Id { get; set; }

 

7

public string Login { get; set; }

 

8

public string Password { get; set; }

 

9

public string Role { get; set; }

 

10

public virtual Professor Professor { get; set; }

 

11

public virtual Student Student { get; set; }

 

12

}

 

13

}

 

 

Теперь скомпилируем библиотеку классов. Для этого нажмем правой

кнопкой на проект библиотеки классов и в контекстном меню выберем пункт

Перестроить.

После компиляции библиотеки классов в папке проекта в каталоге bin/Debug/ мы сможем найти скомпилированный файл dll (MyLib.dll).

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

Добавить ссылку…:

250

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