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

Разработка программных систем на основе объектного подхода. Учебно-методическое пособие к выполнению практических работ

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
1 Мб
Скачать

основных свойств. Подготовить сообщение.

4.Меню и панели инструментов. Краткое описание элементов и основных свойств. Подготовить сообщение.

5.Данные. Краткое описание элементов и основных свойств. Подготовить сообщение.

6.Компоненты. Краткое описание элементов и основных свойств. Подготовить сообщение.

7.Абстрактные классы и интерфейсы в С#. Описание и области применения. Подготовить сообщение.

Требования к содержимому отчету:

1.Титульный лист

2.Оформление ГОСТ

3.Содержание:

3.1Создание учетных записей Microsoft Live ID (Скриншот)

3.2Установка Visual Studio Community (Скриншот)

3.3Пройти тест по тематике C#/Visual Studio в любой бесплатной среде обучения (Скриншот)

3.4Заполненная анкета (слайд 6)

3 . 2 . З а д а н и я д л я п р а к т и ч ес к о й р а б от ы № 2

Требуется создать программу, реализующую: 1) обработку данных, введенных пользователем; 2) передачу данных между объектами:

1)сложение двух чисел;

2)вычитание двух чисел;

3)возведение числа в степень;

4)сравнение двух чисел;

5)отображение счетчика выполненных действий.

Требования к программе:

1)начальная форма приложения должна содержать 2 поля для ввода данных,

-21 -

поле для вывода текущего значения счетчика и отдельную кнопку для реализации каждого действия из указанных в задании;

2)заголовок начальной формы включает: ФИО студента, номер группы, заголовок формы с выводом результата действий – по названию действия («Результат сложения», «Результат вычитания» и т.д.);

3)результат выполнения каждого из действий выводится на новой форме, имеющей поле для вывода результата и кнопку ОК, реализующей закрытие формы и увеличение значения счетчика, расположенного на начальной форме на 1;

4)передача данных между формами должна осуществляться как минимум тремя разными способами;

5)предусмотреть проверку введенных пользователем данных с генерацией сообщения об ошибке в случае необходимости;

6)программа не должна содержать более 2-х форм.

Примечание.

Полезные ссылки и функции:

http://www.cyberforum.ru/windows-forms/thread110436.html#a_Q2 – некоторые способы передачи данных между объектами;

Try / catch – удобно использовать для проверки данных;

{ MessageBox.Show("Неверный формат введенных данных"); } – для генерации сообщения о неверном формате введенных пользователем данных

Math.Pow(основание_степени, показатель_степени) Закрытие текущей формы: this.Close();

Создание новой формы: Form2 b = new Form2()

Открытие новой формы в диалоговом режиме: b.ShowDialog();

Способы передачи данных между формами возможны:

1 способ. Изменение модификатора доступа

В Form2 установить модификатор доступа для контроля/поля public в любом месте Form1:

Form2 f = new Form2(); f.ShowDialog();

- 22 -

this.textBox1.Text = f.textBox1.Text;

Преимущества: Самый быстрый в реализации и удобный способ. Недостатки: 1) Противоречит всем основам ООП; 2) возможно только из

более поздней формы в более раннюю; 3) форма f показывается только с использованием ShowDialog(), т.е. в первую форму управление вернется только по закрытию второй (избежать этого можно, сохранив ссылку на вторую форму в поле первой формы).

2 способ. Использование открытого свойства/метода

Вклассе Form2 определяем свойство (или метод):

Public string Data

{

get

{

return textBox1.Text

}

}

Влюбом месте Form1:

Form2 f = new Form2(); f.ShowDialog(); this.textBox1.Text = f.Data;

Преимущества: противоречит НЕ всем основам ООП.

Недостатки: 1) возможна передача только из более поздней формы в более раннюю; 2) форма f показывается только с использованием ShowDialog(), т.е. в первую форму управление вернется только по закрытию второй (избежать этого можно, сохранив ссылку на вторую форму в поле первой формы).

3 способ. Передача данных в конструктор Form2

Изменяем конструктор Form2: public Form2(string data)

{

InitializeComponent();

//Обрабатываем данные

- 23 -

//Или записываем их в поле this.data = data;

}

string data;

Создаем форму в любом месте Form1 так:

Form2 f = new Form2(this.textBox1.Text); f.ShowDialog();

//Или f.Show();

Преимущества: 1) простой в реализации способ; 2) не нарушает ООП Недостатки: возможна передача только из более ранней формы в более

позднюю.

4 способ. Передача ссылки в конструктор

Изменяем конструктор Form2: public Form2(Form1 f1)

{

InitializeComponent(); //Обрабатываем данные

//Или записываем их в поле string s = f1.textBox1.Text;

}

Создаем форму в любом месте Form1 так, т.е. передаем ей ссылку на первую форму:

Form2 f = new Form2(this); f.ShowDialog();

//Или f.Show();

Преимущества: 1) доступ ко всем открытым полям/функциям первой формы; 2) п

Недостатки: 1) передача данных возможна в обе стороны; 2) нарушает

ООП.

5 способ. Используем свойство 'родитель'

При создании второй формы устанавливаем владельца:

- 24 -

Form2 f = new Form2(); f.Owner = this; f.ShowDialog();

Во второй форме определяем владельца:

Form1 main = this.Owner as Form1; if(main != null)

{

string s = main.textBox1.Text; main.textBox1.Text = "OK";

}

Преимущества: 1) доступ ко всем открытым полям/функциям первой формы; 2) передача данных возможна в обе стороны; 3) не нарушает ООП.

6 способ. Используем отдельный класс

Создаем отдельный класс, лучше статический, в основном namespace, т.е. например, в файле Program.cs:

static class Data

{

public static string Value { get; set; }

}

Его открытые свойства/методы доступны из любой формы:

Data.Value = "111";

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

7 способ. Использование функций обратного вызова. Передача метода в конструктор

Создаем в основном namespace делегат: public delegate void MyDelegate(string data);

В Form1 создаем метод, который будет обрабатывать принятые данные: void func(string param)

{

// обработка

- 25 -

}

Создаем вторую форму так:

Form2 f = new Form2(new MyDelegate(GetData)); f.ShowDialog();

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

MyDelegate d;

public Form2(MyDelegate sender)

{

InitializeComponent(); d= sender;

}

И в любой момент отправляем данные: d(textBox1.Text);

Пример формы Form1.cs button1 (сложение величин): private void button1_Click(object sender, EventArgs e)

{

try

{

Form2 f = new Form2();

f.label1.Text = Convert.ToString(Convert.ToInt64(textBox1.Text) + Convert.ToInt64(textBox2.Text));

f.Text = "Результат сложения"; f.ShowDialog();

//this.textBox1.Text = f.textBox1.Text;

//label3.Text = Convert.ToString(Convert.ToInt64(textBox1.Text) + Convert.ToInt64(textBox2.Text));

}

catch

{

MessageBox.Show ("Недопустимый тип данных");

}

}

- 26 -

Пример формы Form2.cs button1 (кнопка ОК)

private void button1_Click(object sender, EventArgs e)

{

this.Close();

}

Требования к содержимому отчету:

1)Оформление по ГОСТ

2)Содержание:

2.1) формулировка задания; 2.2) использованные способы передачи данных между объектами (с кратким

описанием); 2.3) блок схема программы (укрупненная)

2.4) скриншоты работы программы (начальная форма + результат каждого действия + сообщение об ошибке)

2.5) листинг программы (форма1 + форма2)

3 . 3 . З а д а н и я д л я п р а к т и ч ес к о й р а б от ы № 3

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

1)запись набора введенных пользователем данных в массив;

2)отбор данных(вводятся пользователем) с последующей сортировкой по указанным признакам(по вариантам);

3)вывод всех элементов массива в алфавитном порядке.

Требования к программе:

1)начальная форма приложения должна содержать 9 полей для ввода данных, поле для вывода текущего значения количества записей, кнопку по которой создается новый элемент массива из введенных пользователем данных

иотдельную кнопку для реализации каждого действия из указанных в задании;

2)заголовок начальной формы – ФИО студента и номер группы, заголовок

-27 -

формы с выводом результата действий – по названию действия («Результат обработки», «Список группы» и т.д.);

3)результат выполнения каждого из действий выводится на новой форме, имеющей табличное поле для вывода результата и кнопку ОК, реализующей закрытие формы (предусмотреть блокирование начальной формы до закрытия форм с выводом результатов; на форме, демонстрирующей все текущие элементы массива создать возможность редактирования и удаления записей (дополнительно));

4)для передачи данных между объектами-формами использовать отдельный класс;

5)для ввода полей с ограниченным набором значений (пол, основа обучения) использовать элемент comboBox, для даты рождения – dateTimePicker;

6)предусмотреть проверку введенных пользователем данных с генерацией сообщения об ошибке в случае необходимости (обязательно добавить проверку на уникальность № студенческого билета);

7)обеспечить базовое наполнение массива 10 записями.

При выполнении работы использовать поля записей и критерии проверки, представленные в табл. 3.4:

 

 

Таблица 3.4

 

 

 

 

Поле

Тип

Возможные значения и

 

 

 

критерии проверки

 

 

 

 

 

Фамилия

строка

Не пустое

 

 

 

 

 

Имя

строка

Не пустое

 

 

 

 

 

Отчество

строка

Не пустое

 

 

 

 

 

Дата рождения

datetime

Не позднее текущей даты

 

 

 

 

 

Пол

строка

Мужской или женский

 

 

 

 

 

№ студ. билета

Целое число

Целое число, уникальность

 

 

 

 

 

Основа обучения

строка

Бюджетная или платная

 

 

 

 

 

Кол-во задолженностей

Целое число

Пустое или целое число

 

 

 

 

 

Примечание

строка

 

 

 

 

 

 

- 28 -

Пример основной формы представлен на рис. 3.4:

Рис. 3.4. Пример основной формы.

Пример формы с результатами обработки представлен на рис. 3.5:

Рис. 3.5. Пример формы с результатами обработки.

- 29 -

Пример формы, отображающей список группы, представлен на рис. 3.6:

Рис. 3.6. Пример формы со списком группы.

Пример конструкции пользовательского класса:

public class Student

 

{

 

public string Surname ;

// Фамилия

public string Name;

// Имя

public string SName;

// Отчество

public int BDateD;

// Число ДР

public int BDateM;

// Месяц ДР

public int BDateY;

// Год ДР

public string Gender;

// Пол

public int S_number;

// № студенческого билета

public string L_base;

// основа обучения

public int Debts;

// количество задолженностей

public string Note;

// примечание

}

 

- 30 -

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]