Методуказания II семестр
.pdf
Задание 2: создать приложение для работы содномерным массивом - удалить минимальный элемент.
Ход работы:
1.Запустите Microsoft Visual Studio .Net 2008;
2.Выберите пункт меню File → New → Project.
3.Выберите пункт Visual C++ Projects (Проекты Visual C++) в списке Project Types.
4.Выберите пункт .Net и ярлык Windows Forms Application (.Net) (для создания приложения с графическим интерфейсом).
5.В окне Name введите название проекта, например вашу фамилию с названием лабораторной работы (Иванов ГИ массив); нажмите на кнопку browse… → откройте каталог D → 1 курс»→ «ПИЭ» → папка с вашей фамилией) → нажмите «Open» (В строке Location отобразится путь к вашему проекту) → Ок → Finish.
6.Перед вами откроется среда визуальной разработки приложений.
7.Создайте графический интерфейс приложения по рисунку и таблице свойств объектов внизу.
Рисунок – Форма в процессе проектирования
Таблица – Таблица свойств объектов
Контейнер |
Элемент |
Name |
Text |
Другие свойства |
|
управления |
|
|
|
- |
Form |
- |
Одномерный массив |
StartPosition: |
|
|
|
|
CenterScreen |
|
Label |
lblKol |
Введите количество |
|
Form |
|
|
элементов |
|
TextBox |
txtN |
“” |
|
|
|
Button |
btnN |
Решить |
|
|
GroupBox |
grbArray |
Массив |
Visible: false |
|
Label |
lblBasic |
Исходный массив |
|
|
lblWork |
Результирующий |
|
|
grbArray |
|
|
массив |
|
|
TextBox |
txtBasic |
“” |
|
|
txtWork |
“” |
|
|
|
|
|
8. Напишите программные коды
Файл “stdafx.h”
#include<stdlib.h>
Файл “Form1.h”
// Открытие формы
private:System::Void Form1_Shown(System::Object^sender,System::EventArgs^ e){ txtN->Focus(); // поместить курсор в текстовое окно
}
11
// Открытие формы
private:System::Void btnN_Click(System::Object^sender, System::EventArgs^ e){ grbArray->Visible = true;
int *b,n,i, imin = 0; //объявление переменных n=Convert::ToInt32(this-> txtN->Text);
b=new int[n]; // выделение памяти for(i=0;i<n;i++) // определение элементов массива
b[i]=rand()%20-10;
for (i=0;i<n;i++) // вывод массива на экран в окно исходного массива txtBasic->Text=String::Concat(txtBasic->Text," ",
Convert::ToString(b[i]));
for (i=1;i<n;i++) // решение задачи if(b[i]<b[imin])
imin = i;
for (i=imin;i<n-1;i++) b[i]=b[i+1];
n--; b=(int*)realloc(b,sizeof(int)*n);
for (i=0;i<n;i++) // вывод массива на экран в окно результирующ. массива
txtWork->Text=String::Concat(txtWork->Text," ", Convert::ToString(b[i]));
delete b; // освобождение памяти
}
// Нажатие Enter в текстовом окне ввода количества информации private: System::Void txtN_KeyPress(System::Object^ sender, System::Windows::Forms::KeyPressEventArgs^ e) {
if(e->KeyChar == 13) button1_Click(sender, e);
}
12
Задание 3: создать приложение «Выдача книг на дом», содержащее информацию:
Список читателей (ComboBox);
Статус: Школьник, Студент, Работник(RadioButton);
Список книг (ListBox);
Книги на руках (CheckBox);
Количество книг (TextBox).
Предусмотреть кнопки вывода информации на экран выделенной информации, удаление информации как всей, так и частично, завершения приложения.
Форма в процессе проектирования
Таблица свойств объектов отличных от по умолчанию
Контейнер |
Объект |
Name |
Text |
Другие свойства |
|
GroupBox |
grbReader |
Карточка читателя |
|
|
grbInform |
Информация |
|
|
|
|
|
||
|
|
btnInform |
Получить информацию |
|
Form |
|
btnRemove |
Удалить строку |
Enabled=false |
|
Button |
btnClear |
Очистить |
Enabled=false |
|
|
btnVisibleInform |
Скрыть информацию |
Enabled=false |
|
|
btnExit |
Выход |
|
|
|
lblReader |
Читатель |
Font=bold |
|
Label |
lblBooks |
Список книг фондов |
Font=bold |
|
|
lblKol |
Количество дней |
Font=bold |
|
|
|
|
|
|
ComboBox |
cmbReader |
|
DropDownStyle= |
|
|
|
|
DropDownList |
|
|
|
|
Sorted=true |
|
|
|
|
Items: |
grbReader |
|
|
|
Арбузов Н.В. |
|
|
|
|
Вылегжанина О.Ю. |
|
|
|
|
Иванов П.Р. |
|
|
|
|
Петров С.Е. |
|
|
|
|
Сидоров А.И. |
|
|
|
|
|
|
GroupBox |
grbStatus |
Статус |
|
|
CheckBox |
chkBook |
Книги на руках |
|
|
TextBox |
txtKol |
|
|
13
|
ListBox |
lstBooks |
|
Items: |
|
|
|
|
|
Достоевский "Идиот" |
|
|
|
|
|
Куприн |
"Сборник |
|
|
|
|
рассказов" |
|
|
|
|
|
Лермонтов "Мцыри" |
|
|
|
|
|
Толстой |
"Война и |
|
|
|
|
мир" |
|
|
|
rdbStatus1 |
Школьник |
Checked=true |
|
grbStatus |
RadioButton |
rdbStatus2 |
Студент |
|
|
|
|
rdbStatus3 |
Работник |
|
|
grbInform |
ListBox |
lstInform |
|
|
|
Программные коды
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
cmbReader->SelectedIndex = 0; |
// выделение/первого элемента списка |
|
|
lstBooks->SelectedIndex = 0; |
// выделение/первого элемента списка |
|
|
} |
|
sender, System::EventArgs^ |
e) { |
private: System::Void btnExit_Click(System::Object^ |
|||
Close(); |
// закрытие приложения |
|
|
} |
|
|
|
private: System::Void btnVisibleInform_Click(System::Object^ sender, |
|
||
System::EventArgs^ e) { |
// рамка «Информация» невидима |
|
|
grbInform->Visible = false; |
|
||
btnRemove->Enabled = false; |
// кнопка «Удалить строку» недоступна |
|
|
btnClear->Enabled = false; |
// кнопка «Очистить» недоступна |
|
|
btnVisibleInform->Enabled = false; |
// кнопка «Скрыть информацию» недоступна |
||
} |
|
sender, System::EventArgs^ |
e) |
private: System::Void btnClear_Click(System::Object^ |
|||
{ |
// очистка элементов списка |
|
|
lstInform->Items->Clear(); |
|
||
btnRemove->Enabled = false; |
// кнопка «Удалить строку» недоступна |
|
|
btnClear->Enabled = false; |
// кнопка «Очистить» недоступна |
|
|
}
private: System::Void btnRemove_Click(System::Object^ sender, System::EventArgs^ e)
{
lstInform->Items->Remove(lstInform->Text); // удаление выделенного элемента lstInform->SelectedIndex = lstInform->Items->Count - 1; // выделение последнего
элемента if(lstInform->Items->Count == 0){// если список пустой, тогда кнопки недоступны
btnRemove->Enabled = false; btnClear->Enabled = false;
}
}
private: System::Void btnInform_Click(System::Object^ sender, System::EventArgs^ e)
{
grbInform->Visible = true; btnRemove->Enabled = true; btnClear->Enabled = true; btnVisibleInform->Enabled = true; lstInform->Items->Clear();
lstInform->Items->Add(cmbReader->Text); // добавление нового элемента в список if(rdbStatus1->Checked)
lstInform->Items->Add(rdbStatus1->Text); else if(rdbStatus2->Checked)
lstInform->Items->Add(rdbStatus2->Text);
else
lstInform->Items->Add(rdbStatus3->Text); if(chkBook->Checked)
lstInform->Items->Add("Книги на руках"); lstInform->Items->Add(lstBooks->Text); lstInform->Items->Add(String::Concat("Количество дней ", txtKol->Text)); lstInform->SelectedIndex = lstInform->Items->Count - 1;
}
14
Основные объекты
1. Form (Форма)
Form (Форма) – пустой холст, на котором пишется приложение (создается пользовательский интерфейс). Форма является основным объектом программы, на ней будут располагаться другие объекты. Форма – это контейнер для других объектов, на котором и создается пользовательский интерфейс.
Основные свойства (Properties) формы:
Свойство |
Название |
Значение |
Действие |
BackgroundImage |
Картинка |
Список файлов, |
Изображение растровой картинки |
|
|
содержащих |
|
|
|
картинки |
|
StartPosition |
Положение окна при |
Manual |
Положение при проектировании |
|
запуске |
CenterScreen |
проекта. |
|
|
и др. |
В центре экрана |
WindowState |
Состояние окна при |
Normal |
Нормально (по умолч.) |
|
запуске |
Minimized |
Свернуто |
|
|
Maximized |
Развернуто |
А также свойства: Text2, BackColor, Enabled, Font, ForeColor, Size (см. выше) и т.д.
Основные события:
Click (щелчок). Событие наступает, если поместить указатель мыши на поле формы и нажать левую кнопку мыши.
DblClick (двойной щелчок). Событие наступает при двойном щелчке левой кнопки мыши.
Load (загрузка). Событие происходит при загрузке формы, например при запуске приложения, используется для инициализации значений свойств и переменных при запуске программы.
Activated - событие возникает всякий раз, когда форма становится активной.
Closing – событие возникает когда пользователь закрывает форму, перед тем как форма будет закрыта. Closed – событие возникает когда пользователь закрывает форму, после того как форма будет закрыта.
2. Label (Метка) 
Label (Метка)
(с панели инструментов) – это поле, заполняемое программистом текстовой информацией, недоступной пользователю для редактирования: заголовки, надписи к редактируемым полям, поясняющая информация.
Основные свойства метки:
Autosize |
Автоподстройка размера в длину, при True |
False (по умолчанию) |
|
|
|
размер подгоняется под размер текста |
True |
|
|
BorderStyle |
Тип границ |
нет; фиксировано простая |
||
|
|
линия; |
фиксировано |
с |
|
|
углублением |
|
|
TextAlignment |
Выравнивание и размещение текста |
|
|
|
А также свойствами, с которыми вы уже знакомы: Name, Text, BackColor, ForeColor, Font, Enabled, Visible, Size и
др.
В свойство Name данного объекта обычно добавляют префикс lbl, чтобы понимать, что объект с этим именем является меткой.
Основное событие:
Click (щелчок). Событие наступает, если поместить указатель мыши на поле метки и нажать левую кнопку мыши.
3. TextBox (Текстовое окно) 
TextBox (Текстовое окно)
– поле ввода, основное средство организации ввода и вывода информации (текстовой или цифровой) на экран.
Основные свойства текстового окна: Name, Text, BackColor, ForeColor, Font, Enabled, Locked, Visible, Size и др.
В свойство Name обычно добавляют префикс txt.
Основные события текстового окна:
KeyPress – нажатие любой клавиши при нахождении курсора в текстовом окне. TextChanged – значение свойства Text изменилось
2 |
Жирным шрифтом здесь и далее отмечены основные свойства объектов |
|
15
Основной метод текстового окна
Focus() – установить курсор в выбранное текстовое окно.
Пример, textBox2->Focus();
4. Button (Кнопка) 
Button (Кнопка)
– элемент, при нажатии на который позволяет выполнить процедуру обработки события Click.
Основные свойства кнопки: Name, Text, BackColor, ForeColor, Font, Enabled, Locked, Visible, Size и др.
В свойство Name обычно добавляют префикс btn.
Основное событие кнопки:
Click – реакция на нажатие на кнопку.
5. MainMenu (Меню) 
Объект меню
предоставляет следующие возможности:
эффективное использование пространства экрана;
меню для пользователей является привычным элементом.
Создание меню:
поместите на форму объект меню
;
внизу окна дизайнера форм появится соответствующий значок, выделите его;
в верхнем левом углу разрабатываемой формы появится прямоугольник с текстом
TypeHere;
нажмите на него правой кнопкой мыши и выберите пункт Insert New (Вставить Новый);
в окне свойств можно изменить его свойства, в том числе Name (Имя объекта) и Text (Информация, выводимая на экран), например, mnuTask и Задачи соответственно, где mnu – префикс;
для создания подменю на нижележащий TypeHere нажмите правой кнопкой мыши и выберите пункт Insert New и т.д.
6.Panel (Панель) 
Panel (Панель)
– это контейнер, который служит для объединения элементов в группу, после чего, помещенными в него объектами, можно управлять как единым целым.
Основные свойства панели: Name, BackColor, ForeColor, Font, Enabled, Locked, Visible, Size и др.
В свойство Name обычно добавляют префикс pnl.
7. GroupBox (Рамка) 
GroupBox (Рамка)
– это контейнер, который служит для объединения элементов в группу, после чего, помещенными в него объектами, можно управлять как единым целым.
Основные свойства рамки : Name, Text, BackColor, ForeColor, Font, Enabled, Locked, Visible, Size и др.
В свойство Name обычно добавляют префикс grb.
16
8. ListView (Список просмотра)
ListView (Список просмотра)
– позволяет выводить список элементов, в том числе и в табличной форме.
Для того чтобы список выводился в виде таблицы, необходимо определить следующие свойства:
GridLines – True
View – Details
9. PictureBox (Графическое окно) 
PictureBox (Графическое окно)
- - окно, которое может использоваться для отображения графических объектов в различных форматах и для рисования графических элементов с использованием класса
Graphics.
В свойство Name обычно добавляют префикс pct.
Для класса Graphics существуют следующие методы рисования:
DrawArc |
Рисует дугу, которая является частью эллипса, заданного парой координат, шириной и высотой. |
|
|
||
|
|
|
DrawEllipse |
Формирует эллипс, определенный ограничивающим прямоугольником, заданным с помощью |
|
пары координат — ширины и высоты. |
||
|
||
|
|
|
DrawImage |
Рисует заданный объект Image в заданном месте, используя исходный размер. |
|
|
|
|
DrawLine |
Проводит линию, соединяющую две точки, определенные парами координат. |
|
|
|
|
DrawLines |
Формирует набор сегментов линии, которые соединяют массив структур Point. |
|
|
|
|
DrawPie |
Рисует сектор, определенный эллипсом, который задан парой координат, шириной, высотой и |
|
двумя радиальными линиями. |
||
|
||
|
|
|
DrawPolygon |
Рисует многоугольник, определяемый массивом структур Point. |
|
|
|
|
DrawRectangle |
Рисует прямоугольник, который определен парой координат, шириной и высотой. |
|
|
|
|
DrawRectangles |
Рисует набор прямоугольников, определяемых структурой Rectangle. |
|
|
|
|
DrawString |
Создает текстовую строку в заданном месте с указанными объектами Brush и Font. |
|
|
|
10. CheckBox (Флажок) 
CheckBox (Флажок)
позволяет пользователю выбрать значение из списка параметров или сочетание параметров.
Основные свойства:
Appearance определяет, отображается флажок как обычный флажок или как кнопка. ThreeState определяет, поддерживает ли элемент управления два или три состояния.
Checked используется для того, чтобы получить или задать значение элемента управления флажком с двумя состояниями.
CheckState применяется для того, чтобы получить или задать значение элемента управления флажком с тремя состояниями. Если для свойства ThreeState задано значение true, свойство Checked будет возвращать значение true либо для отмеченного флажком, либо для неопределенного состояния.
FlatStyle определяет стиль и внешний вид элемента управления.
Основные события:
Click.
CheckedChahged – происходит, когда свойство Checked изменилось.
11. RadioButton (Переключатель) 
RadioButton (Переключатель)
представляют собой набор как минимум из двух взаимоисключающих вариантов выбора для пользователя.
Основные свойства:
17
Appearance определяет, отображается флажок как обычный флажок или как кнопка.
Checked используется для того, чтобы получить или задать значение элемента управления флажком с двумя состояниями.
FlatStyle определяет стиль и внешний вид элемента управления.
Основные события:
Click, CheckedChahged.
12. ListBox (Список) 
ListBox (Список)
позволяет отобразить список позиций, из которых пользователь может выбрать нужную щелчком мыши.
Основные свойства:
MultiColumn отображение списка позиций в виде нескольких столбцов, а не одного вертикального столбца. Items предоставляет доступ кэлементам ListBox
Основные методы: Add, AddItem, Remove, Select.
13. ComboBox (Выпадающий список) 
ComboBox (Выпадающий список)
отображает редактируемое поле вместе со списком ListBox и позволяет пользователю выбрать значение из списка или ввести новый текст. По умолчанию поле со списком ComboBox отображается как редактируемое поле со скрытым раскрывающимся списком.
Основные свойства:
DropDownStyle определяет стиль отображения поля со списком. Можно ввести значение, которое предусматривает простой раскрывающийся список, когда список отображается всегда; раскрывающееся поле со списком, где текстовая часть не редактируется и пользователь должен выбрать стрелку для просмотра раскрывающегося списка; или заданное по умолчанию поле с раскрывающимся списком, когда текстовая часть является редактируемой и для просмотра списка пользователю необходимо нажать клавишу со стрелкой.
Основные методы: Add, AddRange.
14. TabControl (Закладки) 
TabControl (Закладки)
используется для отображения нескольких вкладок, аналогичных разделителям в записной книжке или меткам в наборе папок картотечного блока. Вкладки могут содержать рисунки и другие элементы управления. Можно использовать элемент управления TabControl для создания многостраничных диалоговых окон, наподобие тех, что отображаются во многих компонентах интерфейса операционной системы Windows, например на панели управления свойствами экрана.
Основные свойства:
TabPages содержит отдельные вкладки. Каждая вкладка представляет собой объект TabPage
Основные события:
Если перейти на вкладку, вызывается событие Click для соответствующего объекта TabPage.
15. HScrollBar, VScrollBar (Полоса прокрутки)
, 
HScrollBar (Горизонтальная полоса прокрутки)
используется для реализации возможности прокрутки в контейнерах, не предоставляющих собственных полос прокрутки, например PictureBox, или для ввода числовых данных вручную. Числовые данные могут отображаться в объекте или использоваться в коде.
Основные свойства полосы прокрутки:
Value – значение полосы прокрутки.
Minimum, Maximum – минимальное и максимальное значение; SmallChange – шаг изменения.
В свойство Name обычно добавляют префикс scr.
Основное событие:
Scroll – реакция на изменение значения.
VScrollBar (Вертикальная полоса прокрутки)
- аналогично HScrollBar.
18
ЛАБОРАТОРНАЯ РАБОТА №8
Графика
Цель работы: создать приложение с графическим интерфейсом для построения графика функции.
План работы: в течение двух занятий студент должен изучить материал текущей лабораторной работы и продемонстрировать свои навыки преподавателю. В результате чего студент получает две оценки: за приложение и за изученный материал.
Задание: создать приложение построения графика функции.
Требования:
для выбора цвета графика функции воспользуйтесь объектом ColorDialog. Открыть диалог
– функция ShowDialog(); считывание цвета – свойство Color.
при изображении рисунка, напишите его название при помощи метода DrawString, например, Ежик.
при изображении рисунка, разукрасьте его.
Требование к отчету:
1.Номер и название лабораторной работы.
2.Текст задания.
3.Таблица свойств объектов.
4.Список идентификаторов.
5.Блок-схема алгоритма.
6.Программные коды.
Методические указания 1. Построение графика
Существует четыре способа задания функции:в явной форме у = F(x) ;
в неявной форме F(x,y) = 0 ;
параметрическая х = f1( t), y = f2( t);
в полярных координатах ρ= ρ (φ), φ ? (φ1, φ 2). Полярные координаты ρ и φ связаны с декартовой системой координат следующими соотношениями х = ρCosφ, y = ρSinφ.
Если функция задана явно у = F(x) , то для построения можно воспользоваться циклом, в котором осуществляется вычисление значения функции для значений х, меняющихся с заданным шагом, и нанесение этих точек на график. В этом случае графическая зависимость будет представлять собой последовательность точек.
2. Рисование фигур
Для рисования объектов в Windows Forms приложениях язык С++ содержит очень богатый набор методов. Пространство имен Drawing содержит множество объектов, которые облегчают программисту работу с графикой. Специально для .NET платформы разработчики Microsoft разработали GDI+ библиотеку, значительно повысив возможности GDI (Graphic Device Interface). GDI+ включает возможности рисования простейших объектов (линии, эллипсы...), рисование различных объектов 2D графики, отображение файлов различных графических форматов (bmp, jpeg, gif, wmf, ico, tiff, ...) и многое другое.
.Net позволяет рисовать линии, прямоугольники и другие фигуры в координатной системе. Кроме того, можно выбирать различные координатные системы, но по умолчанию начало координат находится в верхнем левом углу, где ось Х направлена вправо, а ось У вниз. Единицей
19
измерения является пиксель (pixel).
Для рисования графических элементов используется класса Graphics. Для класса Graphics существуют следующие методы рисования:
DrawArc |
Рисует дугу, которая является частью эллипса, заданного парой координат, шириной и |
|
высотой. |
||
|
||
|
|
|
DrawBezier |
Рисует сплайны Безье, которые заданы точками структуры Point. |
|
|
|
|
DrawBeziers |
Рисует сплайны Безье, которые соединяют массив структур Point. |
|
|
|
|
DrawClosedCurve |
Рисует замкнутые кардинальные сплайны, точки которых определены как массив |
|
|
структур Point. |
|
|
|
|
DrawCurve |
Рисует кардинальные сплайны (это кривая, которая плавно проходит через набор точек), |
|
|
точки которых определены как массив структур Point. |
|
|
|
|
DrawEllipse |
Формирует эллипс, определенный ограничивающим прямоугольником, заданным с |
|
помощью пары координат, ширины и высоты. |
||
|
||
|
|
|
DrawImage |
Рисует заданный объект Image в заданном месте, используя исходный размер. |
|
|
|
|
DrawLine |
Проводит линию, соединяющую две точки, определенные парами координат. |
|
|
|
|
DrawLines |
Формирует набор сегментов линии, которые соединяют массив структур Point. |
|
|
|
|
DrawPie |
Рисует сектор, определенный эллипсом, который задан парой координат, шириной, |
|
высотой и двумя радиальными линиями. |
||
|
||
|
|
|
DrawPolygon |
Рисует многоугольник, определяемый массивом структур Point. |
|
|
|
|
DrawRectangle |
Рисует прямоугольник, который определен парой координат, шириной и высотой. |
|
|
|
|
DrawRectangles |
Рисует набор прямоугольников, определяемых структурой Rectangle. |
|
|
|
|
DrawString |
Создает текстовую строку в заданном месте с указанными объектами Brush и Font. |
|
|
|
|
FillClosedCurve |
Закрашивает замкнутые кардинальные сплайны, точки которых определены как массив |
|
|
структур Point. |
|
|
|
|
FillEllipse |
Закрашивает эллипс, определенный ограничивающим прямоугольником, заданным с |
|
|
помощью пары координат, ширины и высоты. |
|
|
|
|
FillPie |
Закрашивает сектор, определенный эллипсом, который задан парой координат, шириной, |
|
|
высотой и двумя радиальными линиями |
|
|
|
|
FillPolygon |
Закрашивает многоугольник, определяемый массивом структур Point. |
|
|
|
|
FillRectangle |
Закрашивает прямоугольник, который определен парой координат, шириной и высотой. |
|
|
|
|
FillRectangles |
Закрашивает набор прямоугольников, определяемых структурой Rectangle. |
|
|
|
В качестве инструмента рисования используется перо (Pen), которое имеет следующие свойства: цвет (например, Color::Blue – голубой цвет), толщина, стиль (System :: Drawing ::
20
