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

Методуказания II семестр

.pdf
Скачиваний:
11
Добавлен:
02.06.2015
Размер:
2.32 Mб
Скачать

Задание 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