Язык С++
Характеристика языка программирования С++. Описание классов и методов. Выполнение решения вычислительных процессов по заданным формулам. Создание диалогового приложения. Разработка инструкции пользователя. Операции над одномерными и двумерными массивами.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 16.04.2017 |
Размер файла | 2,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Таблица 6.1 - свойство элементы управления
Идентификатор |
Caption |
Disabled |
|
IDC_EDIT3 |
- |
True |
|
IDC_BUTTON1 |
Посчитать по шаблону |
- |
|
IDC_BUTTON2 |
Посчитать через функцию |
- |
|
IDCANCEL |
Выход |
- |
6.3 Описание методов и классов
В проект z5_v13 с помощью мастера ClassWizard был создан для диалоговых окн классы наследники класса CWinApp.
Класс z5_v13Dlg создан путем добавления переменных и методов:
OnButton1 () (выполняется переход на форму работы с конусом);
OnButton2 () (выполняется переход на форму работы с шаром);
Класс С1 создан путем добавления переменных и методов:
переменная h1 типа float; (высота для работы с конусом, связанный с EditBox1);
переменная r1 типа float; (радиус для работы с конусом, связанный с EditBox2);
переменная shar1 типа float; (выводит объем шара, связанный с EditBox4);
OnButton1 () (выполняет вычисление по формулам через шаблон);
OnButton2 () (выполняет вычисление по формулам через функцию);
Класс С2 создан путем добавления переменных и методов:
переменная r типа float; (радиус для работы с конусом, связанный с EditBox5);
переменная shar типа float; (выводит объем шара, связанный с EditBox3);
OnButton1 () (выполняет вычисление по формулам через шаблон);
OnButton2 () (выполняет вычисление по формулам через функцию);
Целью решения задач является расчет по формулам (6.1 и 6.2), которые рассматриваем как объекты.
Разрабатывается класс с именем "vichl" для объекта формула.
Итерфейс класса "vichl" (файл "vichl. h")
class Cvichl: public CObject // создаем новый класс
{float k, r, h;
public:
Cvichl ();
float ob (float);
float ob (float, float);
virtual ~Cvichl ();
const double P=3.1415926535897932384626433832795;
template <class L>L summa (L g, L r, L h)
{L p= (1.0/3.0) *P*pow (r,2) *h;
return (p); }
template <class T>T summa (T g, T r)
{T p= (4.0/3.0) *P*pow (k,3);
return (p); }
6.4 Программный код
Код приложения создан автоматически приложением MFC AppWizard. С помощью Class Wizard созданы обработчики событий. Данные обработчики представляют собой методы созданных классов.
Коды методов класса CZ5_V13Dlg
void CZ5_v13Dlg:: OnButton4 () // кнопочное меню
{C1 q;
q. DoModal (); }
void CZ5_v13Dlg:: OnButton5 () // кнопочное меню
{C2 q;
q. DoModal (); }
Коды методов класса С1
void C1:: OnButton1 () /*обработчик события на кнопку "Посчитать по шаблону*/
{UpdateData ();
if (r1<0) MessageBox ("Радиус не может быть меньше нуля!!!");
else if (h1<0) MessageBox ("Высота не может быть меньше нуля!!!");
else shar1= summa (h1, r1);
UpdateData (false); }
void C1:: OnButton2 ( () /*обработчик события на кнопку "Посчитать через функцию*/
{UpdateData ();
if (r1<0) MessageBox ("Радиус не может быть меньше нуля!!!");
else if (h1<0) MessageBox ("Высота не может быть меньше нуля!!!");
else shar1= z. ob (h1, r1);
UpdateData (false); }
Коды методов класса С2
void C2:: OnButton1 () /*обработчик события на кнопку "Посчитать по шаблону"*/
{UpdateData ();
if (r<0) MessageBox ("Радиус не может быть меньше нуля!!!");
else
shar=summa (r);
UpdateData (false); }
void C2:: OnButton2 () /*обработчик события на кнопку "Посчитать через функцию*/
{UpdateData ();
if (r<0) MessageBox ("Радиус не может быть меньше нуля!!!");
else
shar=z. ob (r);
UpdateData (false); }
Реализация класса "vichl" (файл "vichl. cpp")
float Cvichl:: ob (float k) // вычисление объема шара
{float q;
q= (4.0/3.0) *P*pow (k,3);
return (q); }
float Cvichl:: ob (float r, float h) // вычисление объема конуса
{float w;
w= (1.0/3.0) *P*pow (r,2) *h;
return (w); }
6.5 Инструкция пользователю
Для реализации задания 5 необходимо наличия файла z5_v13. exe.
Для осуществления работы с данным приложением, требуется запустить этот файл. На экране появится диалоговое окно с именем "Главное меню" (см. рисунок 6.1)
Рисунок 6.1 - диалоговое окно z5_v13
При выборе "Работа с конусом" откроется диалоговое окно с именем "Конус" (см. рисунок 6.2)
Рисунок 6.2 - Работа с конусом
Если введены не допустимые значения, выдаст сообщение (см. рисунок 6.2 и 6.3)
Рисунок 6.2 - ошибка о недопустимом значении высоты
Рисунок 6.3 - ошибка о недопустимом значении радиуса
При выборе "Работа с шаром" откроется диалоговое окно с именем "шар" (см. рисунок 6.4)
Рисунок 6.4 - Работа с шаром
6.6 Контрольный пример
Тест 1
Конус
Высота=3Радиус=2ответ=12,57
Шар
Радиус=5ответ=523,6
Тест 2
Конус
Высота=1Радиус=-1ответ = радиус не должна быть меньше нуля
Шар
Радиус=-1ответ = радиус не должна быть меньше нуля
Тест 3
Конус
Высота=3,78Радиус=0,25ответ=0,2474
Шар
Радиус=0,1ответ=0,004
7. Задание 6
7.1 Постановка задачи
Основная цель задания 6 состоит в создании приложения по обработке объектов (массивы и геометрические фигуры) с использованием иерархии классов.
В качестве объектов рассматривается динамические массивы.
Для этих объектов создается иерархия классов, один из которых является базовым (Mas1) и классы наследники (Mas2 и Mas3).
В задаче предусматриваются следующие виды обработки информации массивов: поиск минимального элемента, поиск суммы четных и нечетных элементов.
Входные данные (размерность массива, целочисленные значения-элементы массива) вводятся с экрана.
Результаты по обработке элементов массива выводятся на экран.
Обработка элементов массива реализуется с помощью методов класса.
В качестве объектов выступают геометрические фигуры (точка, прямая и треугольник), для которых определяются следующие параметры: вычисление длины прямой, вычисления периметра и площади треугольника. Для объектов создаётся иерархия классов. В качестве базового класса выступает точка, на основании которого строятся классы наследники, определяющие геометрические фигуры прямая и треугольник. Обработка выходных данных производится с помощью методов разработанных классов. Выходные данные (длина прямой, периметр треугольника и площадь треугольника) выводится на экран в вещественном типе одинарной точности в отформатированном виде. Входные данные вещественного типа одинарной точности (координаты точек) вводятся с экрана
7.2 Проектирование форм
Для реализации задания 6 создадим диалоговое приложение с помощью
MFC APPWizard, которое будет содержать одно основное диалоговое окно и два дополнительных.
Основное диалоговое окно с именем "Меню".
На основном диалоговом окне спроектируем кнопочное меню.
Кнопочное меню содержит 3 пункта "Первое", "Второе" и "Выход", создается с помощью CButton.
С помощью обработчиков события каждая из команд осуществляет вызов дополнительных диалоговых окон. В каждой из трех кнопок производится задание следующих свойств, представленных в таблице 7.1.
Таблица 7.1 - Свойства кнопок
Идентификатор кнопки |
Свойство Caption |
|
IDC_BUTTON1 |
Первое |
|
IDC_BUTTON2 |
Второе |
|
IDCANCEL |
Выход |
Диалоговое окно "Первое".
Диалоговое окно служит для выполнения ввода исходных данных и вывода результата, полученных при решении первой задачи. Для этих целей добавим на форму четыре Editbox.
Для обозначения вводимых данных добавим четыре GroupBox.
Для выполнения расчета используются три кнопки CButton и две кнопки RadioButton, удалим кнопку ОК, и оставим CANCEL. Изменим свойство каждого из выбранных компонентов. Описание заданных свойств смотреть в таблице 7.2
Таблица 7.2-Свойства элементов управления
Идентификатор |
Caption |
Disabled |
Soft |
|
IDC_BUTTON1 |
Ввод |
- |
- |
|
IDC_BUTTON3 |
Ввод |
- |
- |
|
IDC_BUTTON4 |
Поиск |
- |
- |
|
IDC_EDIT3 |
- |
True |
- |
|
Продолжение таблицы 7.2 |
||||
Идентификатор |
Caption |
Disabled |
Soft |
|
IDC_EDIT4 |
- |
True |
- |
|
IDC_STATIC (GroupBox) |
Размер |
- |
- |
|
IDC_STATIC (GroupBox) |
Ввод массив |
- |
- |
|
IDC_STATIC (GroupBox) |
Найти минимальный элемент |
- |
- |
|
IDC_STATIC (GroupBox) |
Поиск суммы четных и нечетных чисел |
- |
- |
|
IDC_LIST1 |
- |
- |
False |
Диалоговое окно "Второе".
Диалоговое окно служит для выполнения ввода исходных данных и вывода результата, полученных при решении второй задачи. Для этих целей добавим на форму девять Editbox. Для обозначения вводимых данных добавим четыре GroupBox и шесть StaticText.
Для выполнения расчета используются четыре кнопки CButton, удалим кнопку ОК, и оставим CANCEL. Изменим свойство каждого из выбранных компонентов. Описание заданных свойств смотреть в таблице 7.3
Таблица 7.3-Свойства элементов управления
Идентификатор |
Caption |
Disabled |
|
IDC_BUTTON1 |
Ввод |
- |
|
IDC_BUTTON3 |
Длина |
- |
|
IDC_BUTTON4 |
Периметр |
- |
|
IDC_BUTTON5 |
Площадь |
- |
|
IDCANCEL |
Выйти в главное меню |
- |
|
IDC_EDIT4 |
- |
True |
|
IDC_EDIT5 |
- |
True |
|
IDC_EDIT6 |
- |
True |
|
IDC_STATIC (GroupBox) |
Ввод точек |
- |
|
IDC_STATIC (GroupBox) |
Периметр |
- |
|
IDC_STATIC (GroupBox) |
Длина прямой |
- |
|
IDC_STATIC (GroupBox) |
Площадь |
- |
7.3 Описание методов и классов
В проект z6_v13 с помощью мастера ClassWizard был создан для диалогового окна классы наследники класса CWinApp.
Класс z6_v13Dlg создан путем добавление методов:
ON_BN_CLICKED (IDC_BUTTON1, OnButton1) (кнопочное меню "Первое")
ON_BN_CLICKED (IDC_BUTTON2, OnButton2) (кнопочное меню "Второе")
Класс C1 создан путем добавление переменных и методов:
переменная n типа int (вводится размер массива, связанный с EditBox1);
переменная m типа int (вводится элементы массива, связанный с EditBox2);
переменная min типа int (выводит минимальный элемент массива, связанный с EditBox3);
переменная summa типа int; (выводит сумму четных или нечетных чисел по выбору, связанный с EditBox4);
переменная lb типа CListBox (служит для вывода массива, связанный с ListBox);
Класс C2 создан путем добавление переменных и методов:
переменная x11 типа float (вводится координата точки, связанный с EditBox1);
переменная x22 типа float (вводится координата точки, связанный с EditBox7);
переменная x33 типа float (вводится координата точки, связанный с EditBox8);
переменная y11 типа float (вводится координата точки, связанный с EditBox2);
переменная y22 типа float (вводится координата точки, связанный с EditBox3);
переменная y33 типа float (вводится координата точки, связанный с EditBox9);
переменная pr типа float (выводится периметр, связанный с EditBox5);
переменная pl типа float (выводится площадь, связанный с EditBox6);
переменная dl типа float (выводится длина, связанный с EditBox4);
ON_BN_CLICKED (IDC_BUTTON5, OnButton5) (Найти площадь)
ON_BN_CLICKED (IDC_BUTTON1, OnButton1) (Ввод координат точек)
ON_BN_CLICKED (IDC_BUTTON3, OnButton3) (Найти длину)
ON_BN_CLICKED (IDC_BUTTON4, OnButton4) (Найти периметр)
В данном задании рассматриваем массив в виде объекта, поэтому создадим класс с именем "clas" и опишем его в файле "clas. h"
class Cclas: public CObject
{public: int *mas;
protected: int i, razm;
public:
Cclas ();
int Vvodmas (int);
void IMas (int);
virtual ~Cclas (); };
class Cmin: public Cclas
{int min;
public: int Min (); };
class Csum: public Cclas
{protected: int sum;
public:
int sum1 ();
int sum2 (); };
Сделаем реализацию класса clas и опишем его в файл "clas. cpp"
Cclas:: Cclas () // конструктор
{i=0; }
Cclas:: ~Cclas () // деструктор
{delete [] mas; }
void Cclas:: IMas (int n) // Виділення динамічної пам'яті массиву
{razm=n;
mas=new int [n];
i=0;
for (int j=0; j<n; j++) mas [j] =0; }
int Cclas:: Vvodmas (int m) // Формування значень массиву
{mas [i] =m;
i++;
return (i); }
int Cmin:: Min () // минимум
{min=999; // mas [0];
for (i=0; i<razm; i++)
if (mas [i] <min) min=mas [i];
return (min); }
int Csum:: sum1 () // нечетные
{sum=0;
for (i=0; i<razm; i++)
if (mas [i] %2==1) sum+=mas [i];
return (sum); }
int Csum:: sum2 () // четные
{sum=0;
for (i=0; i<razm; i++)
if (mas [i] %2==0) sum+=mas [i];
return (sum); }
В данном задании рассматриваем массив в виде объекта, поэтому создадим класс с именем "fig" и опишем его в файле "fig. h"
class Cfig: public CObject // создадим класс точки
{public: void vvod (float, float);
protected: float x1,y1;
public: Cfig ();
virtual ~Cfig (); };
class Cprm: public Cfig /* создадим класс прямая, базовый класс Cfig*/
{protected: float x2,y2, dl1;
public: float dl (float, float,float, float); };
class Ctrg: public Cprm/* создадим класс треугольник, базовый класс Cprm*/
{protected: float x3,y3, pl1,pr1;
public:
float pl ();
float pr (float,float); };
Сделаем реализацию классов и опишем его в файл "fig. cpp"
Cfig:: Cfig ()
{}
Cfig:: ~Cfig ()
{}
void Cfig:: vvod (float x11, float y11)
{x1=x11;
y1=y11; }
float Ctrg:: pl () // ПЛОЩАДЬ
{float a, b, c;
b=dl (x2,y2,x3,y3);
a=dl (x1,y1,x2,y2);
c=dl (x3,y3,x1,y1);
pl1=sqrt (pr1/2.0* (pr1/2.0-a) * (pr1/2.0-b) * (pr1/2.0-c));
return (pl1); }
float Ctrg:: pr (float x33, float y33) // ПЕРИМЕТР
{x3=x33, y3=y33;
pr1=pow (pow (x2-x1,2.0) +pow (y2-y1,2.0),1.0/2.0) +pow (pow (x3-x2,2.0) +pow (y3-y2,2.0),1.0/2.0) +pow (pow (x1-x3,2.0) +pow (y1-y3,2.0),1.0/2.0);
return (pr1); }
float Cprm:: dl (float x11, float y11,float x22, float y22)
{float x111=x11, y111=y11;
x2=x22; y2=y22;
dl1=pow (pow (x2-x111,2.0) +pow (y2-y111,2.0),1.0/2.0);
return (dl1); }
7.4 Программный код
Код приложения создан автоматически приложением MFCWizard. С помощью Class Wizard созданы обработчики событий для кнопок, спроектированных в каждом из диалоговых окон. Данные обработчики представляют собой методы созданных классов.
Коды методов класса CZ6_V13Dlg
void CZ6_v13Dlg:: OnButton1 () // кнопочное меню "Первое"
{C1 q;
q. DoModal (); }
void CZ6_v13Dlg:: OnButton2 () // кнопочное меню "Второе"
{C2 q;
q. DoModal (); }
Коды методов класса C1
void C1:: OnButton1 () // ввод размерности
{int n1;
h=0;
UpdateData ();
int q=lb. GetCount ();
if (n<1) MessageBox ("не меньше 1");
else {n1=n;
z. IMas (n1);
for (int j=0; j<q; j++)
lb. DeleteString (0);
summa=0;
min=0;
h++; }}
void C1:: OnButton3 () // ввод элементов в массив
{if (h==0) MessageBox ("Введите размерность для новых данных");
else{CString str1;
UpdateData ();
int rl=z. Vvodmas (m);
if (rl>n) MessageBox ("Введите размерность для новых данных");
else
{str1. Format ("%d",m);
lb. AddString (str1);
if (rl==n)
MessageBox ("Формування масиву закінчено"); }
h++;
UpdateData (false); }}
void C1:: OnButton4 () // поиск минимального
{if (h==0) MessageBox ("Введите массив для начала");
else
if (h<=n) MessageBox ("Закончите ввод");
else
min=z. Min ();
UpdateData (false); }
void C1:: OnRadio1 () // сумма нечетных
{if (h==0) MessageBox ("Введите массив для начала");
else
if (h<=n) MessageBox ("Закончите ввод");
else
summa=z. sum1 ();
UpdateData (false); }
void C1:: OnRadio2 () // сумма четных
{if (h==0) MessageBox ("Введите массив для начала");
else
if (h<=n) MessageBox ("Закончите ввод");
else
summa=z. sum2 ();
UpdateData (false); }
Коды методов класса C2
void C2:: OnButton1 () // ввод координат точек
{UpdateData ();
fig. vvod (x11,y11);
c++; } void C2:: OnButton3 () // нахождение длины
{if (c==0) MessageBox ("Введите координаты точек ");
else
{float dl;
dl=prm. dl (x11,y11,x22,y22);
dlq. Format ("%5.2f",dl); }
UpdateData (false); }
void C2:: OnButton4 () // нахождение периметра
{if (c==0) MessageBox ("Введите координаты точек");
else
{float pr;
z. vvod (x11,y11);
z. dl (x11,y11,x22,y22);
pr=z. pr (x33,y33);
prq. Format ("%5.2f",pr); }
UpdateData (false); }
void C2:: OnButton5 () // нахождение площади
{if (c==0) MessageBox ("Введите координаты точек ");
else {float pl1;
z. vvod (x11,y11);
z. dl (x11,y11,x22,y22);
z. pr (x33, y33);
pl1=z. pl ();
plq. Format ("%5.2f",pl1); }
UpdateData (false); }
7.5 Инструкция пользователю
Для реализации задания 6 необходимо наличия файла z6_v13. exe.
Для осуществления работы с данным приложением запустить этот файл. На экране появится главное окно (см. рисунок 7.1)
Рисунок 7.1 - главное окно
При выборе команды "Первое" появится диалоговое окно с заданием про массив (см. рисунок 7.2)
Рисунок 7.2 - Работа с массивом
При выборе команды "Второе" появится диалоговое окно с точками на плоскости (см. рисунок 7.3)
Рисунок 7.3 - Работа с точками на плоскости
7.6 Контрольный пример
Задание 1
Тест 1
{-1,1,4}
Минимальный элемент = - 1
Сумма четных чисел = 4
Тест 2
Размер = - 1
Ответ = размер должно быть не меньше 1
Тест 3
{-5,8,3}
Минимальный элемент = - 5
Сумма нечетных чисел = - 2
Задание 2
Тест 1
А (0,0), В (2,1), С (1,2)
Периметр = 5,89
Длина = 2,24
Площадь = 1,5
Список использованных источников
1. "Бьерн Страуструп. Язык программирования C++"
2. Джесс либерти, "Освой самостоятельной С++ за 21 день", изд. Дом "Вильямс", Москва - Санкт-Петербург - Киев, 2001
3. Н. Секунов, "Самоучитель Visual C++ 6", изд. "БХВ - Петербург", Санкт-Петербург, 2003
Список книг и статей, на которые есть прямые ссылки.
1. Bjarne Stroustrup: Adding Classes to C: An Exercise in Language Evolution. Software Practice & Experience, Vol.13.1983. pp.139-61.
2. Bjarne Stroustrup: The C++ Programing Language. Addison-Wesley. 1986
3. Bjarne Stroustrup: Multiple Inheritance for C++. Proc. EUUG String Conference, May 1987. Also USENIX Computer Systems, Vol.2 No 4, Fall 1989.
4. Bjarne Stroustrup and Jonatan Shopiro: A Set of C clsses for Co-Routine Style Programming. Proc USENIX C++ conference, Santa Fe. November 1987. pp.417-439.
5. Bjarne Stroustrup: Standardizing C++. The C++ Report. Vol.1 No.1. January 1989.
6. Для подготовки данной работы были использованы материалы с сайта http://www.realcoding.net
7. Visual C++ на примерах (+CD-ROM): Галина Довбуш, Анатолий Хомоненко - Москва, БХВ - Петербург, 2007г. - 528 с.
8. С/С++ и MS Visual C++ 2010 для начинающих (+ DVD-ROM): Барис Пахомов - Москва, БХВ - Петербург, 2011г. - 726с
9. Visual Basic на приктике (+CD-ROM): - Москва, БХВ-Петербург, 2008г. - 480с.
Размещено на Allbest.ru
Подобные документы
Особенности синтаксиса языка программирования С++. Создание панели меню, для получения информации о программе, сохранения результата и выхода из программы. Работа с файлами, двумерными и одномерными динамическими массивами, функциями, строками и циклами.
курсовая работа [782,3 K], добавлен 06.02.2016Изучение объектно-ориентированного языка программирования Java, его функциональные возможности. Создание программного кода. Описание классов и методов, использованных в программе. Руководство пользователя, запуск сервера и клиентского приложения.
курсовая работа [1,8 M], добавлен 16.09.2015Изучение функций и возможностей среды разработки языка программирования Pascal. Рассмотрение работы с одномерными и двумерными массивами, со строками и числами. Математическая формулировка задач. Разработка алгоритмов, описание структуры программ.
курсовая работа [879,8 K], добавлен 11.02.2016Ознакомление с понятием, особенностями объявления, инициализацией и принципами работы с одномерными и двумерными массивами. Изучение смысла тернарной операции вывода элементов матрицы. Рассмотрение сущности и способов использования указателей переменных.
лабораторная работа [22,1 K], добавлен 15.07.2010Обзор различных способов реализации много поточности в языках программирования и операционных системах, а также разработка прототипа приложения реализующего многопоточность. Создание приложения в Delphi, реализующего потоки выполнения уровня пользователя.
курсовая работа [86,7 K], добавлен 27.05.2012Особенности работы с процедурами и двумерными массивами, последовательность вызова процедур. Способы описания и использования многомерных массивов, назначение процедур, их описание и обращение к ним. Набор программы, ее отладка и тестирование данных.
лабораторная работа [112,1 K], добавлен 03.10.2010Разработка консольного приложения, которое обрабатывает входной файл с расширением .pas и транслирует в выходной файл с расширением .cpp или .txt (по выбору пользователя). Синонимичные операторы языков Паскаль и С. Разработка алгоритма решения задачи.
курсовая работа [329,6 K], добавлен 04.06.2013Встроенные типы данных, основные конструкции, структуры и применение языка Javа. Введение в интегрированную среду разработки Eclipse. Листинг программы, иллюстрирующей работу с одномерными массивами (создание массива). Спецификация класса Figure.
методичка [1,4 M], добавлен 30.06.2009Разработка программы в среде Delphi, позволяющей оперативно вести учет наличия свободных мест на авиарейсах, отправляющихся из города Саранска. Описание алгоритма решения задачи и его машинная реализация. Разработка диалогового приложения пользователя.
курсовая работа [1,1 M], добавлен 22.03.2014Обоснование языка программирования Object Pascal и среды разработки Delphi. Создание интерфейса пользователя. Проектирование структуры и описание компонентов, использованных при разработке программного продукта. Составление инструкции пользователя.
курсовая работа [888,7 K], добавлен 20.05.2015