Язык С++
Характеристика языка программирования С++. Описание классов и методов. Выполнение решения вычислительных процессов по заданным формулам. Создание диалогового приложения. Разработка инструкции пользователя. Операции над одномерными и двумерными массивами.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 16.04.2017 |
Размер файла | 2,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
75
Размещено на http://www.allbest.ru/
Содержание
- 1. Характеристика языка программирования С++
- 2. Задание 1
- 2.1 Постановка задачи
- 2.2 Проектирование форм
- 2.3 Описание классов и методов
- 2.4 Программный код
- 2.5 Инструкция пользователю
- 2.6 Контрольный пример
- 3. Задание 2
- 3.1 Постановка задачи
- 3.2 Проектирование форм
- 3.3 Описание классов и методов
- 3.4 Программный код
- 3.5 Инструкция пользователю
- 3.6 Контрольный пример
- 4. Задание 3
- 4.1 Постановка задачи
- 4.2 Проектирование форм
- 4.3 Описание методов и классов
- 4.4 Программный код
- 4.5 Инструкция пользователю
- 4.6 Контрольный пример
- 5. Задание 4
- 5.1 Постановка задачи
- 5.2 Проектирование форм
- 5.3 Описание методов и классов
- 5.4 Программный код
- 5.5 Инструкция пользователю
- 5.6 Контрольный пример
- 6. Задание 5
- 6.1 Постановка задачи
- 6.2 Проектирование форм
- 6.3 Описание методов и классов
- 6.4 Программный код
- 6.5 Инструкция пользователю
- 6.6 Контрольный пример
- 7. Задание 6
- 7.1 Постановка задачи
- 7.2 Проектирование форм
- 7.3 Описание методов и классов
- 7.4 Программный код
- 7.5 Инструкция пользователю
- 7.6 Контрольный пример
- Список использованных источников
1. Характеристика языка программирования С++
Язык С++ появился в начале 80-х годов. Создателем языка является Бьерн Страуструп. Первоначальной целью создания - избавить себя и своих друзей от программирования на ассеглблере, Си или различных других языках высокого уровня.
Очевидно, что больше всего С++ позаимствовал из языка Си, а также из непосредственного его предшественника языка BCPL. Эти заимствования обеспечили С++ мощными средствами низкого уровня, позволяющие решать сложные задачи системного программирования. Отличие языка С++ от Си - это разная степень внимания к типам и структурам данных. Это связанно с появлением понятий класса, производного класса и виртуальной функции, перенятых в свою очередь из языка Симула 67. Это дает в С++ более эффективные возможности для контроля типов и обеспечивает модульность программы.
По мнению автора языка. различие между идеологией Си и С++ заключается примерно в следующем: программа на Си отражает "способ мышления" процессора. а С++ - способ мышления программиста. Отвечая требованиям современного программирования. С++ делает акцент на разработке новых типов данных наиболее полно соответствующих концепциям выбранной области знаний и задачам приложения. Класс является ключевым понятием С++. Описание класса содержит описание данных, требующихся для представления объектов этого типа и набор операций для работы с подобными объектами.
В отличие от традиционных структур Си и Паскаля, членами класса являются не только данные, но и функции. Функции - члены класса имеют привилегированный доступ к данным внутри объектов этого класса и обеспечивают интерфейс между этими объектами и остальной программой, при дальнейшей работе совершенно не обязательно подгнить о внутренней структуре класса и механизме работы встроенных функций. В этом смысле класс подобен электрическому прибору - мало кто знает о его устройстве, но все знают, как им пользоваться.
Введение класса в язык С++ дало возможность использовать его как язык объектного программирования. Объектно-ориентированное программирование изменило методику проектирования и реализации программ, которая в настоящие время заменило традиционное процедурное программирование. Главной целью создателя языка доктора Бьерна Страустрапа было оснащение языка С++ конструкциями, позволяющими увеличить производительность труда программистов и облегчить процесс овладения большими программными продуктами.
Объектно-ориентированное программирование основано на следующих концепциях: абстракция, наследование и полиморфизм.
Абстрамкция - в объектно-ориентированном программировании это придание объекту характеристик, которые отличают его от всех других объектов, четко определяя его концептуальные границы. Основная идея состоит в том, чтобы отделить способ использования составных объектов данных от деталей их реализации в виде более простых объектов, подобно тому, как функциональная абстракция разделяет способ использования функции и деталей её реализации в терминах более примитивных функций, таким образом, данные обрабатываются функцией высокого уровня с помощью вызова функций низкого уровня. Такой подход является основой объектно-ориентированного программирования. Это позволяет работать с объектами, не вдаваясь в особенности их реализации.
Наслемдование - один из четырёх важнейших механизмов объектно-ориентированного программирования, позволяющий описать новый класс на основе уже существующего (родительского), при этом свойства и функциональность родительского класса заимствуются новым классом. Другими словами, класс-наследник реализует спецификацию уже существующего класса (базовый класс). Это позволяет обращаться с объектами класса-наследника точно так же, как с объектами базового класса.
Полиморфимзм - возможность объектов с одинаковой спецификацией иметь различную реализацию. Язык программирования поддерживает полиморфизм, если классы с одинаковой спецификацией могут иметь различную реализацию - например, реализация класса может быть изменена в процессе наследования [1]. Кратко смысл полиморфизма можно выразить фразой: "Один интерфейс, множество реализаций". Полиморфизм - один из четырёх важнейших механизмов объектно-ориентированного программирования.
2. Задание 1
2.1 Постановка задачи
Основная цель задания 1 состоит в выполнении решения вычислительных процессов по заданным формулам. Вычисление производится для трёх задач. В задаче 1 осуществляется вычисление функции f (x,y,z) по формуле 2.1:
(2.1)
Если
Расчёты по данной формула выполняются на основании входных данных вещественного типа двойной точности, которые вводятся с экрана. Выходные данные вещественного типа двойной точности выводятся на экран.
В задаче 2 осуществляется вычисление функции y (x) по формуле 2.2.
(2.2)
Расчёты по данной формула выполняются на основании входных данных, которые вводятся с экрана. Выходные данные выводятся на экран.
В задаче 3 осуществляется табулирования функции y (x) по формуле 2.3.
(2.3)
Входные данные:
Значение переменных a и b, область определения и шаг изменения значений переменной х вводятся с экрана как вещественные типы данных двойной точности. Значения функции выводятся на экран, в вещественном типе данных в отформатированном виде.
2.2 Проектирование форм
Для реализации задания 1 создадим диалоговое приложение с помощью MFC APP Wizard, которое будет содержать одно основное диалоговое окно и три дополнительных.
Основное диалоговое окно с именем "Меню".
На основном диалоговом окне спроектируем два вида меню системное и кнопочное.
Системное меню содержит 2 пункта "Задание" и "Дополнительно", создается с помощью мастера Menu.
Пункт "Задание" содержит команды "Задача 1", "Задача 2" и "Задача 3", а в пункте "Дополнительно" - "Об авторе" и "О программе".
С помощью обработчиков события каждая из команд осуществляет вызов дополнительных диалоговых окон. Кнопочное меню организуется с помощью пяти CButton. В каждой из шести кнопок производится задание следующих свойств, представленных в таблице 2.1.
Таблица 2.1 - Свойства кнопок
Идентификатор кнопки |
Свойство Caption |
|
IDC_BUTTON1 |
Задача 1 |
|
IDC_BUTTON2 |
Задача 2 |
|
IDC_BUTTON3 |
Задача 3 |
|
IDC_BUTTON4 |
О программе |
|
IDC_BUTTON5 |
Об авторе |
|
IDCANCEL |
Выход |
Каждая кнопка дублирует аналогичные команды системного меню
Диалоговое окно "Задание 1".
Диалоговое окно служит для выполнения ввода исходных данных и вывода результата полученных при решении задачи 1. Для этих целей добавим на форму четыре Edit box.
Для обозначения вводимых данных добавим четыре Static text, и одну Picture для вывода формулы виде картинки.
Для выполнения расчета используется кнопка CButton1, удалим кнопку ОК, и оставим CANCEL. Изменим свойство каждого из выбранных компонентов. Описание заданных свойств смотреть в таблице 2.2
Таблица 2.2 - Свойства элементов управления
Идентификатор |
Caption |
Disabled |
Type |
Bitmap |
|
IDC_BUTTON6 |
Посчитать! |
- |
- |
- |
|
IDC_EDIT3 |
- |
true |
- |
- |
|
IDC_EDIT4 |
- |
true |
- |
- |
|
IDC_STATIC (Static Text) |
X= |
- |
- |
- |
|
IDC_STATIC (Static Text) |
Y= |
- |
- |
- |
|
IDC_STATIC (Static Text) |
Z= |
- |
- |
- |
|
IDC_STATIC (Static Text) |
F= |
- |
- |
- |
|
IDC_STATIC (Picture) |
- |
- |
Bitmap |
IDB_BITMAP1 |
Диалоговое окно "Задание 2".
Диалоговое окно служит для выполнения ввода исходных данных и вывода результата полученных при решении задачи 2. Для этих целей добавим на форму три Edit box.
Для обозначения вводимых данных добавим три Static text, и одну Picture для вывода формулы виде картинки.
Для выполнения расчета используется кнопка CButton1, удалим кнопку ОК, и оставим CANCEL. Изменим свойство каждого из выбранных компонентов. Описание заданных свойств смотреть в таблице 2.3
Таблица 2.3 - Свойства элементов управления
Идентификатор |
Caption |
Disabled |
Type |
Image |
|
IDC_BUTTON1 |
Посчитать! |
- |
- |
- |
|
IDC_EDIT5 |
- |
true |
- |
- |
|
IDC_STATIC (Static Text) |
X= |
- |
- |
- |
|
IDC_STATIC (Static Text) |
G= |
- |
- |
- |
|
IDC_STATIC (Static Text) |
ответ |
- |
- |
- |
|
IDC_STATIC (Picture) |
- |
- |
Bitmap |
IDB_BITMAP2 |
Диалоговое окно "Задание 3".
Диалоговое окно служит для выполнения ввода исходных данных и вывода результата полученных при решении задачи 3. Для этих целей добавим на форму пять Edit box. Для обозначения вводимых данных добавим шесть Static text, и одну Picture для вывода формулы виде картинки.
Для выполнения расчета используется кнопка CButton1, удалим кнопку ОК, и оставим CANCEL. Изменим свойство каждого из выбранных компонентов. Описание заданных свойств смотреть в таблице 2.4
Таблица 2.4 - Свойства элементов управления
Идентификатор |
Caption |
Soft |
Type |
Bitmap |
|
IDC_BUTTON1 |
Вычислить! |
- |
- |
- |
|
IDC_STATIC (Static Text) |
начальное х |
- |
- |
- |
|
IDC_STATIC (Static Text) |
конечное х |
- |
- |
- |
|
IDC_STATIC (Static Text) |
шаг |
- |
- |
- |
|
IDC_STATIC (Static Text) |
a= |
- |
- |
- |
|
IDC_STATIC (Static Text) |
b= |
- |
- |
- |
|
IDC_STATIC (Static Text) |
X || Y |
- |
- |
- |
|
IDC_LIST1 |
- |
True |
- |
- |
|
IDC_STATIC (Picture) |
- |
- |
Bitmap |
IDB_BITMAP3 |
2.3 Описание классов и методов
В проект z1_v13 с помощью мастера ClassWizard были созданы для каждого диалогового окна классы наследники класса CDialog.
Класс CZ1_v13Dlg создан путем добавление методов:
void OnButton5 () (вызывает сообщение с информацией об авторе);
void OnButton4 () (вызывает сообщение с информацией о программе);
void OnButton1 () (осуществляет переход на диалоговое окно С1);
void OnButton2 () (осуществляет переход на диалоговое окно С2);
void OnButton3 () (осуществляет переход на диалоговое окно С3);
void On1 () (осуществляет переход на диалоговое окно С1);
void On2 () (осуществляет переход на диалоговое окно С2);
void On3 () (осуществляет переход на диалоговое окно С3);
void OnMenuitem32776 () (завершает работу с программой);
void OnMenuitem32774 () (вызывает сообщение с информацией о программе);
void OnMenuitem32775 () (вызывает сообщение с информацией об авторе);
Класс C1 создан путем добавлением членов классов:
переменной double x (связана с editbox1);
переменная double y (связана с editbox2);
переменная double z (связана с editbox3);
переменная double f (связана с editbox4);
Метод OnButton1 () (осуществляется расчет переменных f (x,y,z) и z (x,y));
Класс C2 создан путем добавлением членов классов:
переменная double I (связана с editbox1);
переменная double g (связана с editbox4);
переменная double y (связана с editbox5);
void OnButton1 () (осуществляется разветвляющийся расчет y (i,g));
Класс C3 создан путем добавлением членов классов:
void OnButton1 () (осуществляется циклический-разветвляющийся расчет y);
переменная типа ListBox (связана с ListBox1);
переменная double xn (связана с editbox1);
переменная double xk (связана с editbox2);
переменная double h (связана с editbox3);
переменная double a (связана с editbox4);
переменная double b (связана с editbox6);
2.4 Программный код
Код приложения создан автоматически приложением MFCWizard. С помощью Class Wizard созданы обработчики событий для системного меню, а так же кнопок спроектированных в каждом из диалоговых окон. Данные обработчики представляют собой методы созданных классов.
Коды методов класса CZ1_V13Dlg
void CZ1_v13Dlg:: OnButton1 () // Пункт кнопочного меню "Задача 1"
{C1 Dlg;
UpdateData (TRUE);
Dlg. DoModal (); }
void CZ1_v13Dlg:: OnButton2 () // Пункт кнопочного меню "Задача 2"
{C2 Dlg;
UpdateData (TRUE);
Dlg. DoModal (); }
void CZ1_v13Dlg:: OnButton3 () // Пункт кнопочного меню "Задача 3"
{C3 Dlg;
UpdateData (TRUE);
Dlg. DoModal (); }
void CZ1_v13Dlg:: OnButton4 () // Пункт кнопочного меню "О программе"
{MessageBox ("Программа сделана для решения 3х задач: Линейного уравнения, разветляющегося уравнения и циклического уравнения!"); }
void CZ1_v13Dlg:: OnButton5 () // Пункт кнопочного меню "Об авторе"
{MessageBox ("Програму сделал студент 3 курса группы 1рп-12 Киселёв Евгений"); }
void CZ1_v13Dlg:: On1 () /* Обработчик событий системного меню на команду "Задача 1" */
{C1 Dlg;
UpdateData (TRUE);
Dlg. DoModal (); }
void CZ1_v13Dlg:: On2 () /* Обработчик событий системного меню на команду "Задача 2" */
{C2 Dlg;
UpdateData (TRUE);
Dlg. DoModal (); }
void CZ1_v13Dlg:: On3 () /* Обработчик событий системного меню на команду "Задача 3" */
{C3 Dlg;
UpdateData (TRUE);
Dlg. DoModal (); }
void CZ1_v13Dlg:: OnMenuitem32776 () /* Обработчик событий системного меню на команду "Выход" */
{OnOK (); }
void CZ1_v13Dlg:: OnMenuitem32774 () /* Обработчик событий системного меню на команду "О программе" */
{MessageBox ("Программа сделана для решения 3х задач: Линейного уравнения, разветвляющегося уравнения и циклического уравнения!"); }
void CZ1_v13Dlg:: OnMenuitem32775 () /* Обработчик событий системного меню на команду "О программе" */
{MessageBox ("Программу сделал студент 3 курса группы 1рп-12 Киселёв Евгений"); }
Коды методов класса C1
void C1:: OnButton6 () // Вычисление задачи 1 по формуле 1
{UpdateData ();
if ( (fabs (atan (5*x) /exp (x+y)) * (pow (x,1/3) +pow (x,y+2)) <0) MessageBox ("Подкоренное выражение не может быть отрицательным!!!");
else
{z=atan (5*x) /exp (x+y);
f=sqrt (fabs (z) * (pow (x,1/3) +pow (x,y+2))); }
UpdateData (false); }
Коды методов класса C2
void C2:: OnButton1 () // Вычисление задачи 2 по формуле 2
{UpdateData ();
if (i>0)
{y=log (i+1) + (3/2) *pow (i,2) - g*cos (i); }
if (i<0) {
if (g! =0 || (i/g) >0) y=log (fabs (i/g)) +exp (i);
else MessageBox ("g не может равняться 0 при отрицательном x!!!"); }
if (i==0) {y=sin (g) /3; }
UpdateData (false); }
Коды методов класса C3
void C3:: OnButton1 () // Вычисление задачи 3 по формуле 3
{int q=y. GetCount ();
for (int j=0; j<q; j++)
y. DeleteString (0);
CString str1,str2;
UpdateData ();
if (xn<=xk && h<0 || xn>xk && h>0 || h==0) MessageBox ("Введен неправильный шаг!!!");
else
{for (double i=xn; i<=xk; i=i+h)
{if (i==0)
{str2. Format ("%5.2f", i); y. AddString (str2+" || натур. лог.0 не сущ. "); }
else
if (log (i) <a) {w=exp (fabs (a*i)) +sqrt (fabs (pow (b,3) *i));
str1. Format ("%5.2f",w);
str2. Format ("%5.2f", i);
y. AddString (str2+" || "+str1); }
else { if (atan (b*i) - 4.7*a*i<0)
{w=pow (fabs (atan (b*i) - 4.7*a*i),1.0/3.0);
w=w* (-1); }
else
w=pow (atan (b*i) - 4.7*a*i,1.0/3.0);
str1. Format ("%5.2f",w);
str2. Format ("%5.2f", i);
y. AddString (str2+" || "+str1); }}}
UpdateData (false); }
2.5 Инструкция пользователю
Для реализации задания 1 необходимо наличия файла z1_v13. exe.
Для осуществления работы с данным приложением запустить этот файл. На экране появится главное диалоговое окно (см. рисунок 2.1)
Рисунок 2.1 - Главное диалоговое окно
При выборе пункта "Задание" появится всплывающие меню (см. рисунок 2.2)
Рисунок 2.2 - всплывающие меню "Задание"
При выборе пункта "Дополнительно" появиться всплывающие меню (см. рисунок 2.3)
Рисунок 2.3 - всплывающие меню "Дополнительно"
При выборе команды "Задача 1" (дублирование команды кнопка "Задача 1") появится диалоговое окно (см. рисунок 2.4)
Рисунок 2.4 - диалоговое окно "Задание 1"
При выборе команды "Задача 2" (дублирование команды кнопка "Задача 2") появится диалоговое окно (см. рисунок 2.5)
Рисунок 2.5 - диалоговое окно "Задание 2"
При выборе команды "Задача 3" (дублирование команды кнопка "Задача 3") появится диалоговое окно (см. рисунок 2.6)
Рисунок 2.6 - диалоговое окно "Задание 3"
При выборе команды "О программе" (дублирование команды кнопка "О программе") появится сообщение с информацией (см. рисунок 2.7)
Рисунок 2.7 - сообщение "z1_v13"
При выборе команды "Об авторе" (дублирование команды кнопка "Об авторе") появится сообщение с информацией (см. рисунок 2.8)
Рисунок 2.8 - сообщение "z1_v13"
2.6 Контрольный пример
Задача 1.
Тест 1
x=1y=2ответ z=0.068ответ f=0.37
Тест 2
x=0y=0ответ z=0ответ f=0
Тест 1
x=0y=-3ответ: введены неправильные данные
Задача 2.
Тест 1
x=0g=0ответ =0
Тест 2
x=-1g=1ответ =0.37
Тест 3
x=1g=-1ответ =2.2
Тест 4
x=-1g=0ответ =g не может равняться 0 при отрицательном x
Задача 3.
Тест 1
х начальное=-0.1ответ
х конечное=0.1 x y
шаг=0.1-0.101.32
a=00.00натур. лог.0 не сущ
b=10.101.32
3. Задание 2
3.1 Постановка задачи
Целью решение задания 2 является выполнение операций над одномерными и двумерными массивами.
Одномерный массив содержит значение целых чисел.
Требуется найти и выдать на экран:
сумму всех отрицательных чисел;
количество элементов с разными знаками, которые находятся рядом;
все положительные значения до заданного числа.
На экран выдается сообщение, если по какой то из поставленных задач не возможно вычислить значение.
Предусматривается, что значения элементов массива вводятся с экрана или заполняется случайными числами от - 300 до 300 включительно.
Размерность массива и заданное число вводятся с экрана.
Двумерный массив содержит значения элементов вещественного типа одинарной точности.
Требуется найти и выдать на экран:
количество элементов, у которых произведение индексов равно значению элемента;
произведение всех элементов кратных 7;
поделить весь массив на максимальный элемент.
На экран выдается сообщение, если по какой то из поставленных задач не возможно вычислить значение.
Предусматривается, что значения элементов вводятся с экрана или заполняются случайными числами.
Размерность массива вводится с экрана.
3.2 Проектирование форм
Для реализации задания 2 создадим однооконное приложение с именем z2_v13, которое будет содержать одно основное окно и два дополнительных диалоговых окна.
Основное окно
Удалить содержание панели инструментов с помощью мастера Toolbar и содержание системного меню c помощью мастера Menu. Добавим две кнопки в панель инструментов и создаем их внешний вид с помощью мастера Toolbar. Добавим в системное меню пункт "Задачи", которое будет содержать в себе команды "Работа с одномерным массивом", "Работа с двумерным массивом" и "Выход".
Диалоговое окно "Работа с одномерным массивом"
Диалоговое окно служит для выполнения ввода исходных данных и вывода результата, полученных при работе с одномерным массивом. Для этих целей добавим на форму шесть EditBox.
StaticText, ListBox и пять GroupBox используем для обозначения входных и выходных данных.
Для ввода данных в массив и работы с ним добавим шесть кнопок CButton, удалим кнопку ОК, и оставим CANCEL. Изменим свойство каждого из выбранных компонентов. Описание заданных свойств представлена в таблице 3.1
Таблица 3.1 - свойство элементы управления
Идентификатор |
Caption |
Disabled |
Soft |
|
IDC_BUTTON1 |
Ввод |
- |
- |
|
IDC_BUTTON2 |
Ввод |
- |
- |
|
IDC_BUTTON3 |
Заполнить случайным образом |
- |
- |
|
IDC_BUTTON4 |
Сумма отрицательных |
- |
- |
|
IDC_BUTTON5 |
Найти |
- |
- |
|
IDC_BUTTON6 |
Посчитать |
- |
- |
|
IDC_EDIT3 |
- |
True |
- |
|
IDC_EDIT4 |
- |
- |
- |
|
IDC_EDIT5 |
- |
True |
- |
|
IDC_EDIT6 |
- |
True |
- |
|
IDC_LIST1 |
- |
- |
True |
|
IDC_STATIC (Static Text) |
N= |
- |
- |
|
IDC_STATIC (Group box) |
Размерность |
- |
- |
|
IDC_STATIC (Group box) |
Ввод элементов |
- |
- |
|
IDC_STATIC (Group box) |
- |
- |
- |
|
IDC_STATIC (Group box) |
Кол-во положительных значений до N |
- |
- |
|
IDC_STATIC (Group box) |
Последняя пара с разными знаками |
- |
- |
Диалоговое окно "Работа с двумерным массивом"
Диалоговое окно служит для выполнения ввода исходных данных и вывода результата, полученных при работе с двумерным массивом. Для этих целей добавим на форму:
пять EditBox;
четыре панели GroupBox-для выделения блоков (ввода размерности, ввода элементов массива, вывода результатов вычисление - произведение кратных 7 и количество элементов равных произведению своих индексов);
элемент ActiveX Control - FlexGrid (для отображение входных элементов массива).
Для организации обработчиков события по реализации добавим пять кнопок CButton.
Удалим кнопку ОК, и оставим CANCEL. Изменим свойство каждого из выбранных компонентов. Описание заданных свойств представлено в таблице 3.2
Таблица 3.2 - Свойство элементов управления
Идентификатор |
Caption |
Disabled |
Soft |
|
IDC_BUTTON1 |
Ввод |
- |
- |
|
IDC_BUTTON2 |
Посчитать |
- |
- |
|
IDC_BUTTON3 |
Изменить делением на максимальный |
- |
- |
|
IDC_BUTTON4 |
посчитать |
- |
- |
|
IDC_BUTTON5 |
Ввод |
- |
- |
|
IDC_EDIT3 |
- |
True |
- |
|
IDC_EDIT4 |
- |
True |
- |
|
IDC_STATIC (Group box) |
Размерность |
- |
- |
|
IDC_STATIC (Group box) |
Ввод элементов |
- |
- |
|
IDC_STATIC (Group box) |
Кол-во mas [i] [j] =i*j |
- |
- |
|
IDC_STATIC (Group box) |
Произведение кратных 7 |
- |
- |
3.3 Описание классов и методов
В проект z2_v13 с помощью мастера ClassWizard были созданы для каждого диалогового окна классы наследники класса CWinApp.
Класс C1 создан путем добавление методов:
void OnButton1 () (вводит размерность массива)
void OnButton2 () (вводит элементы массива)
void OnButton3 () (заполняет массив случайными числами от - 300 до 300 включительно, если не был введен хоть один элемент)
void OnButton4 () (выводит сумму отрицательных элементов
void OnButton5 () (выводит количество положительных элементов не превышающих заданное число)
void OnButton6 () (находит номер последней пары элементов с разными знаками)
переменная m_n типа int (размер массива)
переменная m_1 типа int (вводит элемент массива по порядку, от нулевого до последнего)
переменная m_2 типа int (по требованию выводит на экран сумму отрицательных чисел, если таковы имеются)
переменная vc типа int (задается пользователем условие поиска количества положительных значений и не превышающих заданное)
переменная m_k типа int (выводит на экран количество чисел не превышающих заданное число со знаком плюс без нуля)
переменная num типа int (выводит номер последней пары элементов с разным знаком)
Класс C2 создан путем добавление методов:
переменная str типа int (количество строк в массиве, связана с editbox1)
переменная stb типа int (количество столбов в массиве, связана с editbox2)
переменная pr типа int (произведение кратных 7, связана с editbox4)
переменная kol2 типа int (количество элементов которые равно произведению своих индексов, связана с editbox3)
переменная m типа float (вводит поочередно элементы в массив, связана с editbox5)
ON_BN_CLICKED (IDC_BUTTON1, OnButton1) (применяет размер введенный пользователем в editbox'ы)
ON_BN_CLICKED (IDC_BUTTON5, OnButton5) (вводить элементы в массив поочередно начиная с нулей)
ON_BN_CLICKED (IDC_BUTTON2, OnButton2) (считает количество элементов которые равны произведению своих индексов)
ON_BN_CLICKED (IDC_BUTTON4, OnButton4) (находит произведение кратных 7)
ON_BN_CLICKED (IDC_BUTTON3, OnButton3) (изменяет массив путем деление всех его элементов на максимальный)
ON_BN_CLICKED (IDC_BUTTON6, OnButton6) (заполнение массива случайным способом)
3.4 Программный код
Код приложения создан автоматически приложением MFCWizard. С помощью Class Wizard созданы обработчики событий для системного меню, а так же кнопок спроектированных в каждом из диалоговых окон. Данные обработчики представляют собой методы созданных классов.
Коды методов класса C1
void C1:: OnButton1 () // вводит размер массива и очищает list box
{h=0;
UpdateData ();
int q=m_z. GetCount ();
if (m_n<1) MessageBox ("не меньше 1");
else {n=m_n;
m. IMas (n);
for (int j=0; j<q; j++)
m_z. DeleteString (0);
h++; }}
void C1:: OnButton2 () // Сохраняет элемент в массиве
{if (h==0) MessageBox ("Введите размерность для новых данных");
else{CString str1;
UpdateData ();
int rl=m. InitMas (m_1);
if (rl>n) MessageBox ("Введите размерность для новых данных");
else
{str1. Format ("%d",m_1);
m_z. AddString (str1);
if (rl==n)
MessageBox ("Формування масиву закінчено"); }
h++;
UpdateData (false); }}
void C1:: OnButton3 () /*заполняет массив случайными целечислеными числами от - 300 до 300*/
{if (h==1)
{CString str;
UpdateData ();
int q=m_z. GetCount ();
for (int j=0; j<q; j++)
m_z. DeleteString (0);
int p;
for (int i=0; i<n; i++)
{p=rand () %601-300;
m. InitMas (p);
str. Format ("%d",p);
m_z. AddString (str); }
UpdateData (false);
h++; }
else
MessageBox ("Введите размерность для новых данных"); }
void C1:: OnButton4 () // Сумма отрицательных элементов
{m_2=m. WriteMas2 ();
if (m_2==0) MessageBox ("Нет отрицательных элементов в массиве!");
UpdateData (false); }
void C1:: OnButton5 () /*Кол-во положительных элементов не выше заданного числа*/
{UpdateData ();
int q=m. WriteMas1 (vc);
m_k=q;
if (m_k==0) MessageBox ("Нет таких элементов!");
UpdateData (false); }
void C1:: OnButton6 () /*номер последней пары в массиве с разными знаками перед значением*/
{UpdateData ();
if (h==0) MessageBox ("Введите размерность для начала работы!");
else
{num=m. WriteMas3 ();
if (num==0) MessageBox ("Нет пар с разными знаками в заданном массиве"); }
UpdateData (false); }
Коды методов класса C2
void C2:: OnButton1 () // Размер массива
{UpdateData ();
m=0; pr=0; kol2=0;
q. IMas (str,stb);
i=0; t++; p=0; kol=0; j=0;
UpdateData (false); }
void C2:: OnButton5 () // ввод элементов
{UpdateData ();
if (t==0) MessageBox ("Создайте массив");
else
{if (j>stb-1) {i++; j=0; }
q. InitMas (m, i, j);
j++; kol++;
if (kol+1> (str*stb)) MessageBox ("Формування масиву закінчено"); }
UpdateData (false); }
void C2:: OnButton2 () /* количество элементов которые равны произведению своих индексов*/
{if (t==0 || kol< str*stb) MessageBox ("Создайте массив или закончите его ввод!!!");
else
{int kol4=0,op;
UpdateData ();
for (int i1=0; i1<str; i1++)
for (int j1=0; j1<stb; j1++)
{op=q. Massiv1 (i1,j1);
if (op==i1*j1)
kol4++; }
kol2=kol4;
UpdateData (false); }}
void C2:: OnButton4 () // произведение кратных 7
{if (t==0 || kol< str*stb) MessageBox ("Создайте массив или закончите его ввод!!!");
else{int t=1, y;
UpdateData ();
for (int i1=0; i1<str; i1++)
for (int j1=0; j1<stb; j1++)
{y=q. Massiv1 (i1,j1);
if (y%7==0 && y! =0)
t=t*y; }
pr=t;
UpdateData (false); }}
void C2:: OnButton3 () // деление на максимальный элемент
{if (t==0 || kol< str*stb) MessageBox ("Создайте массив или закончите его ввод!!!");
else{
q. Massiv2 (); }}
void C2:: OnButton6 () // создает случайные числа
{if (t==0) MessageBox ("Создайте массив");
else {
q. Massiv3 ();
t++; kol=stb*str; }}
3.5 Инструкция пользователю
Для работы с массивами необходимо наличия файла z2_v13. exe.
Для осуществления работы с данным приложением запустить этот файл. На экране появится главное окно (см. рисунок 3.1)
Рисунок 3.1 - главное окно
При выборе пункта "Задание" появится всплывающие меню (см. рисунок 3.2)
Рисунок 3.2 - всплывающие меню "Задачи"
При выборе команды "1. Работа с одномерным массивом" (дублирование кнопка на панели инструментов (см. рисунок 3.3)) появится диалоговое окно (см. рисунок 3.4)
Рисунок 3.3 - Панель инструментов
Рисунок 3.4 - Работа с одномерным массивом
При выборе команды "2. Работа с двумерным массивом" (дублирование кнопка на панели инструментов (см. рисунок 3.3)) появится диалоговое окно (см. рисунок 3.5)
Рисунок 3.5 - Работа с двумерным массивом
3.6 Контрольный пример
Работа с одномерным массивом
Тест 1
Mas [-1; 2; - 3; 4; - 5]
Сумма отрицательных = - 9
Количество положительных элементов до 3х= 1
Последняя пара с разными знаками = 4
Тест 2
Массив имеет размерность 15, а заполним его случайным способом т.к. в моем случае применен обычный рандом который повторяется после каждого запуска.
Сумма отрицательных = - 950
Количество положительных элементов до 13х= 0 и выдаст сообщение
Последняя пара с разными знаками = 7
Работа с двумерным массивом
Тест 1
Произведение кратных 7=7
Элементы равные произведению своих индексов =2
Тест 2
Произведение кратных 7=нет таковых
Элементы равные произведению своих индексов = нет таковых
4. Задание 3
4.1 Постановка задачи
Целью задания 3 является формирование информации о сданной в ремонт радиоаппаратуры и предоставление информации пользователю о состояние заказов по отдельной введенной группе аппаратуры.
Входные данные: наименование группы изделий, модель изделия, дата принятия в ремонт и состояние готовности вводится пользователем с экрана со слов заказчика и сдаваемой в ремонт аппаратуры. Введенные данные сохраняются в файле. Выходные данные (состояние заказов по отдельной введенной группе аппаратуры) формируются из информации файла и выдаются на экран.
4.2 Проектирование форм
Для реализации задания 3 создадим диалоговое приложение с помощью
MFC APPWizard, которое будет содержать одно основное диалоговое окно и два дополнительных.
Основное диалоговое окно с именем "Меню".
На основном диалоговом окне спроектируем кнопочное меню.
Кнопочное меню содержит 3 пункта "Ввод", "Вывод" и "Выход", создается с помощью двух кнопок CButton, удалим кнопку "Ok" и изменим название кнопки "Cancel".
С помощью обработчиков события каждая из команд осуществляет вызов дополнительных диалоговых окон. В каждой из трех кнопок производится задание следующих свойств, представленных в таблице 4.1.
Таблица 4.1 - Свойства кнопок
Идентификатор кнопки |
Свойство Caption |
|
IDC_BUTTON1 |
Ввод |
|
IDC_BUTTON2 |
Вывод |
|
IDCANCEL |
Выход |
Диалоговое окно "Ввод".
Диалоговое окно служит для заполнения и дополнения файла. Для этих целей добавим на форму пять Editbox и два ComboBox.
Для обозначения введенных данных добавим одну FlexGrid.
Для обозначения вводимых данных добавим два GroupBox.
Для открытия или создания файла, заполнения или дополнения данных в файл используется две кнопки CButton.
Удалим кнопку ОК, и оставим CANCEL. Изменим свойство каждого из выбранных компонентов. Описание заданных свойств смотреть в таблице 4.2
Таблица 4.2-Свойства элементов управления
Идентификатор |
Caption |
Disabled |
Data |
|
IDC_BUTTON1 |
Выбрать |
- |
- |
|
IDC_BUTTON2 |
Записать |
- |
- |
|
IDC_STATIC (GroupBox) |
Выбор файла |
- |
- |
|
Продолжение таблицы 4.2 |
||||
Идентификатор |
Caption |
Disabled |
Data |
|
IDC_STATIC (StaticText) |
Имя файла |
- |
- |
|
IDC_STATIC (GroupBox) |
Заполнение квитанции |
- |
- |
|
IDC_STATIC (StaticText) |
Группа |
- |
- |
|
IDC_STATIC (StaticText) |
Модель |
- |
- |
|
IDC_STATIC (StaticText) |
Число |
- |
- |
|
IDC_STATIC (StaticText) |
Месяц |
- |
- |
|
IDC_STATIC (StaticText) |
Год |
- |
- |
|
IDC_STATIC (StaticText) |
Состояние |
- |
- |
|
IDC_COMBO1 |
Микроволновка Сигнализация Светильник Ноутбук Процессор Монитор Радио Пылесос Принтер Сканер |
|||
IDC_COMBO2 |
Не готово Готово |
|||
IDCANCEL |
Выйти в главное меню |
- |
- |
Диалоговое окно "Вывод".
Диалоговое окно служит для вывода всех и отсортированных по группе данных. Для этих целей добавим на форму Editbox.
Для обозначения выводимых данных добавим GroupBox и две StaticText.
Для вывода данных из файла используются три кнопки CButton и два FlexGrid.
Удалим кнопку ОК, и оставим CANCEL.
Изменим свойство каждого из выбранных компонентов. Описание заданных свойств смотреть в таблице 4.3
Таблица 4.3-Свойства элементов управления
Идентификатор |
Caption |
Disabled |
Data |
|
IDC_BUTTON1 |
Показать! |
- |
||
IDC_BUTTON2 |
Группировать по - -> |
- |
||
IDC_BUTTON3 |
Выбрать |
- |
||
IDCANCEL |
Выйти в главное меню |
- |
||
IDC_STATIC (GroupBox) |
Выбор файла |
- |
||
IDC_STATIC (StaticText) |
Имя файла |
- |
||
IDC_STATIC (StaticText) |
Полное содержание файла |
- |
||
IDC_COMBO1 |
- |
- |
Микроволновка Сигнализация Светильник Ноутбук Процессор Монитор Радио Пылесос Принтер Сканер |
4.3 Описание методов и классов
В проект z3_v13 с помощью мастера ClassWizard были созданы для каждого диалогового окна классы наследники класса CWinApp.
Класс z3_v13dlg создан путем добавление методов:
ON_BN_CLICKED (IDC_BUTTON1, OnButton1) (переход на диалоговое окно ввод)
ON_BN_CLICKED (IDC_BUTTON2, OnButton2) (переход на диалоговое окно вывод)
Класс С1 создан путем добавление методов и переменных:
Переменная m_filename типа CString (Связанный с EditBox1, предназначен для ввода имени файла)
Переменная m_sost типа CString (Связанный с ComboBox2, предназначен для ввода состояния заявки)
Переменная den типа int (связанный с EditBox3, предназначен для ввода числа заявки)
Переменная mes типа int (связанный с EditBox4, предназначен для ввода месяца заявки)
Переменная god типа int (связанный с EditBox5, предназначен для ввода года заявки)
Переменная m_grup типа CString (Связанный с ComboBox1, предназначен для ввода группы заявки)
Переменная m_marka типа CString (Связанный с EditBox2, предназначен для ввода имени файла)
ON_BN_CLICKED (IDC_BUTTON1, OnButton1) (Ввод имени файла)
ON_BN_CLICKED (IDC_BUTTON2, OnButton2) (Ввод данных в файл)
Класс С2 создан путем добавление методов и переменных:
ON_BN_CLICKED (IDC_BUTTON1, OnButton1) (Выводит полное содержание файла)
ON_BN_CLICKED (IDC_BUTTON3, OnButton3) (Вводит имя файла)
ON_BN_CLICKED (IDC_BUTTON2, OnButton2) (Выводит отсортировыные заявки по группе)
Переменная m_prov типа CString (Связана с ComboBox1, выбор группы для сортировки)
Переменная m_filename1 типа CString (Связана с EditBox1, ввод имя файла)
В данном задании рассматриваем файл в виде объекта, поэтому создадим класс с именем "file" и опишем его в файле "file. h"
#include "fstream. h"
class Cfile: public CObject
{char filename [20];
int z;
public:
int proverka (char [20]), zxc;
void cozdanie (int z, char [20]);
void otkritie (int z, char [20]);
void zakritie ();
void vvod (char [], char [], int *, int *, int *, char []);
void vivod (char [], char [], int *, int *, int *, char []);
int vivod2 (char [], char [], int *, int *, int *, char [], char []);
fstream f; };
Сделаем реализацию класса и опишем его в файл "file. cpp"
struct file // структура для заполнения файла
{char file_grup [15];
char file_marka [15];
int file_den;
int file_mes;
int file_god;
char file_sost [10];
} vedom;
void Cfile:: otkritie (int z,char filename [20]) /*открытие файла с разными режимами*/
{if (z==2) f. open (filename, ios:: app);
if (z==0) f. open (filename, ios:: out);
if (z==1) f. open (filename, ios:: in); }
void Cfile:: zakritie ()
{f. close (); }
void Cfile:: vvod (char grup1 [15], char marka1 [15], int *den1, int *mes1, int *god1, char sost1 [10]) /* ввод данных в файл*/
{strcpy (vedom. file_grup,grup1);
strcpy (vedom. file_marka,marka1);
vedom. file_den=*den1;
vedom. file_mes=*mes1;
vedom. file_god=*god1;
strcpy (vedom. file_sost,sost1);
f. write ( (char*) &vedom,sizeof (file)); }
void Cfile:: vivod (char grup1 [15], char marka1 [15], int *den1, int *mes1, int *god1, char sost1 [10]) /*вывод данных из файла без сортировки */
{f. read ( (char*) &vedom,sizeof (file));
{strcpy (grup1,vedom. file_grup);
strcpy (marka1,vedom. file_marka);
*den1=vedom. file_den;
*mes1=vedom. file_mes;
*god1=vedom. file_god;
strcpy (sost1,vedom. file_sost); }}
int Cfile:: vivod2 (char grup1 [15], char marka1 [15], int *den1, int *mes1, int *god1, char sost1 [10], char prov1 [15]) /* вывод данных из файла с сортировкой */
{int p=0;
char a [15];
strcpy (a, prov1);
f. read ( (char*) &vedom,sizeof (file));
{if (a [0] ==vedom. file_grup [0])
if (a [1] ==vedom. file_grup [1])
if (a [2] ==vedom. file_grup [2])
{strcpy (grup1,vedom. file_grup);
strcpy (marka1,vedom. file_marka);
*den1=vedom. file_den;
*mes1=vedom. file_mes;
*god1=vedom. file_god;
strcpy (sost1,vedom. file_sost); p=1; }
else p=0; else p=0; else p=0;
return (p); }}
int Cfile:: proverka (char namef [20]) /*проверка существует ли файл*/
{int q=0;
f. open (namef, ios:: nocreate|ios:: in);
if (f. is_open () ==0) q=1;
f. close ();
return (q); }
4.4 Программный код
Код приложения создан автоматически приложением MFCWizard. С помощью Class Wizard созданы обработчики событий для кнопок, спроектированных в каждом из диалоговых окон. Данные обработчики представляют собой методы созданных классов.
Коды методов класса CZ3_V13Dlg
void CZ3_v13Dlg:: OnButton1 () // кнопочное меню "Ввод"
{C1 dlg;
dlg. DoModal (); }
void CZ3_v13Dlg:: OnButton2 () // кнопочное меню "Вывод"
{C2 dlg;
dlg. DoModal (); }
Коды методов класса С1
Cfile V; // создадим переменную классу файл
char namef [20];
int i=1;
void C1:: OnButton1 () /* создание или открытие файла в зависимости от того есть ли файл или нет */
{UpdateData ();
if (m_filename=="") MessageBox ("Введите имя файла", "Уведомление");
else
{strcpy (namef,m_filename+". txt");
int p=V. proverka (namef);
if (p==0)
{V. otkritie (2, namef);
V. zakritie ();
MessageBox ("Файл ОТКРЫТ успешно! Данные будут дописанны!!!", "Уведомление"); }
else{
V. otkritie (0, namef);
V. zakritie ();
MessageBox ("Файл СОЗДАН успешно!!!", "Уведомление"); }
m_grid. SetTextMatrix (0,0,"Группа");
m_grid. SetTextMatrix (0,1,"Модель");
m_grid. SetTextMatrix (0,2,"Дата");
m_grid. SetTextMatrix (0,3,"Состояние");
i=1; }
UpdateData (false); }
void C1:: OnButton2 () /* запись данных в файл*/
{int z=0;
UpdateData ();
if (namef=="") MessageBox ("Введите имя файла", "Уведомление");
else
{int p=V. proverka (namef);
if (p==1) MessageBox ("Выберете файл!!!", "Уведомление");
else
{if (m_grup=="") MessageBox ("Введите группу!!!", "Уведомление");
else
if (m_marka=="") MessageBox ("Введите марку!!!", "Уведомление");
else
if (m_sost=="") MessageBox ("Введите состояние!!!", "Уведомление");
else
if (god<1950) MessageBox ("Минимально возможный год 1950!!!", "Уведомление");
else
if (mes>12 || mes<1) MessageBox ("Введите месяц коректно!!!", "Уведомление");
else
{switch (mes)
{case 1: if (den>31 || den <1) z=1; break;
case 2: if (den>28 || den <1) z=1; break;
case 3: if (den>31 || den <1) z=1; break;
case 4: if (den>30 || den <1) z=1; break;
case 5: if (den>31 || den <1) z=1; break;
case 6: if (den>30 || den <1) z=1; break;
case 7: if (den>31 || den <1) z=1; break;
case 8: if (den>31 || den <1) z=1; break;
case 9: if (den>30 || den <1) z=1; break;
case 10: if (den>31 || den <1) z=1; break;
case 11: if (den>30 || den <1) z=1; break;
case 12: if (den>31 || den <1) z=1; break; }
if (z==0)
{CString str1,str2,str3;
str1. Format ("%d",den);
str2. Format ("%d",mes);
str3. Format ("%d",god);
m_grid. SetTextMatrix (0,0,"Группа");
m_grid. SetTextMatrix (0,1,"Модель");
m_grid. SetTextMatrix (0,2,"Дата");
m_grid. SetTextMatrix (0,3,"Состояние");
m_grid. SetRows (i+1);
m_grid. SetTextMatrix (i,0,m_grup);
m_grid. SetTextMatrix (i,1,m_marka);
m_grid. SetTextMatrix (i,2,str1+". "+str2+". "+str3);
m_grid. SetTextMatrix (i,3,m_sost);
i++;
char a [15], b [15], k [10];
strcpy (a,m_grup);
strcpy (b,m_marka);
strcpy (k,m_sost);
V. otkritie (2,namef);
V. vvod (a,b,&den,&mes,&god,k);
V. zakritie ();
m_grup=""; m_marka=""; den=0; mes=0; god=0; m_sost=""; }
else MessageBox ("Введите число коректно!!!", "Уведомление"); }}}
UpdateData (false); }
Коды методов класса С2
Cfile V1;
char namef1 [20];
int prov=0;
void C2:: OnButton3 () // выбирает файл
{int j=1;
UpdateData ();
if (m_filename1=="") MessageBox ("Введите имя файла", "Уведомление");
else
{strcpy (namef1,m_filename1+". txt");
int p=V1. proverka (namef1);
if (p==0)
{prov=1;
m_grid. SetTextMatrix (0,0,"Группа");
m_grid. SetTextMatrix (0,1,"Модель");
m_grid. SetTextMatrix (0,2,"Дата");
m_grid. SetTextMatrix (0,3,"Состояние");
MessageBox ("Файл ОТКРЫТ успешно!!!", "Уведомление"); }
else{prov=0;
MessageBox ("Файл НЕСУЩЕСТВУЕТ!!!", "Уведомление"); }}
UpdateData (false); }
void C2:: OnButton1 () // выводит полное содержание файла
{if (prov==0) MessageBox ("Выберите файл для начала работы!!!", "Уведомление");
else
{int j=1;
char a [15], b [15], k [10];
CString str1,str2,str3;
int den, mes, god;
m_grid. SetTextMatrix (0,0,"Группа");
m_grid. SetTextMatrix (0,1,"Модель");
m_grid. SetTextMatrix (0,2,"Дата");
m_grid. SetTextMatrix (0,3,"Состояние");
for (int y=1; y<j; y++)
{m_grid2. SetTextMatrix (y,0,"");
m_grid2. SetTextMatrix (y,1,"");
m_grid2. SetTextMatrix (y,2,"");
m_grid2. SetTextMatrix (y,3,""); }
V1. otkritie (1, namef1);
V1. vivod (a,b,&den,&mes,&god,k);
do{ str1. Format ("%d",den);
str2. Format ("%d",mes);
str3. Format ("%d",god);
m_grid. SetRows (j+1);
m_grid. SetTextMatrix (j,0,a);
m_grid. SetTextMatrix (j,1,b);
m_grid. SetTextMatrix (j,2,str1+". "+str2+". "+str3);
m_grid. SetTextMatrix (j,3,k); j++;
V1. vivod (a,b,&den,&mes,&god,k); }
while (! V1. f. eof ());
V1. zakritie (); }}
int j2=1;
void C2:: OnButton2 () // групировка
{UpdateData ();
if (prov==0) MessageBox ("Выберите файл для начала работы!!!", "Уведомление");
else if (m_prov=="") MessageBox ("Введите группу для сортировки!!!", "Уведомление");
else {int j1=1;
char a [15], b [15], k [10], prov1 [15];
CString str1,str2,str3;
int den, mes, god;
strcpy (prov1, m_prov);
m_grid2. SetTextMatrix (0,0,"Группа");
m_grid2. SetTextMatrix (0,1,"Модель");
m_grid2. SetTextMatrix (0,2,"Дата");
m_grid2. SetTextMatrix (0,3,"Состояние");
for (int y=1; y<j1; y++)
{m_grid2. SetTextMatrix (y,0,"");
m_grid2. SetTextMatrix (y,1,"");
m_grid2. SetTextMatrix (y,2,"");
m_grid2. SetTextMatrix (y,3,""); }
int p, io=0;
V1. otkritie (1, namef1);
p=V1. vivod2 (a,b,&den,&mes,&god,k, prov1);
do { if (p==1) {io=1;
str1. Format ("%d",den);
str2. Format ("%d",mes);
str3. Format ("%d",god);
m_grid2. SetRows (j1+1);
m_grid2. SetTextMatrix (j1,0,a);
m_grid2. SetTextMatrix (j1,1,b);
m_grid2. SetTextMatrix (j1,2,str1+". "+str2+". "+str3);
m_grid2. SetTextMatrix (j1,3,k);
j1++;; }
p=V1. vivod2 (a,b,&den,&mes,&god,k, prov1); }
while (! V1. f. eof ());
if (io==0) {m_grid2. SetRows (1); MessageBox ("Нет такой группы"); }
V1. zakritie ();
UpdateData (false); }}
4.5 Инструкция пользователю
Для реализации задания 3 необходимо наличия файла z3_v13. exe.
Для осуществления работы с данным приложением, требуется запустить этот файл. На экране появится диалоговое окно с именем "Главное меню" (см. рисунок 3.1)
Рисунок 3.1 - главное меню
Для ввода информации в файл необходимо выбрать в кнопочном меню пункт "Ввод" после чего появиться диалоговое окно с именем "Ввод" (см. рисунок 3.2)
Рисунок 3.2 - Ввод
Затем нужно выбрать имя файла (если файла нет то он создастся (см. рисунок 3.3), а если есть то откроется (см. рисунок 3.4)), если имя не ввести создание файла будет невозможно (см. рисунок 3.5)
Рисунок 3.3 - ошибка о вводе имя файла
Рисунок 3.4 - уведомление о создание файла
Рисунок 3.5 - уведомления о открытии файла
Для того что бы записать данные в файл необходимо заполнить все поля иначе Вас предупредят о не заполненных полях (см. рисунки 3.6-3.11)
Рисунок 3.6 - ошибка о вводе группы
Рисунок 3.7 - ошибка о вводе модели/марки
Рисунок 3.8 - ошибка о вводе состояния
Рисунок 3.9 - ошибка о вводе года
Рисунок 3.10 - ошибка о вводе месяца
Рисунок 3.11 - ошибка о вводе числа
При выборе пункта вывода информации из файла необходимо выбрать "Вывод" в кнопочном меню, и тогда откроется диалоговое окно с именем "Вывод" (см. рисунок 3.12)
Рисунок 3.12 - Диалоговое окно "Вывод"
Для начала работы необходимо выбрать файл иначе будет предупреждение (см. рисунок 3.13), а если не ввести название файла то выдаст ошибку (см. рисунок 3.3)
Рисунок 3.13 - ошибка о невыбранном файле
После открытия файла Вас уведомят об этом (см. рисунок 3.14)
Рисунок 3.14 - уведомление о открытии файла
А если файла такого нет, то Вы не сможете дальше продолжит работы с этим пунктом (см. рисунок 3.15)
Рисунок 3.15 - уведомление о не существовании файла
После выбора файла можно вывести содержимое файла, а можно отсортировать по группе, и если не будет введена или выбрана из списка группа аппаратуры то выдаст уведомление об этом (см. рисунок 3.16)
Рисунок 3.16 - уведомление о не веденной графе группа
Если не найдет таких записей выдаст сообщение (см. рисунок 3.17)
Рисунок 3.17 - Сообщение
4.6 Контрольный пример
Создадим файл с именем "Заявки".
Заполним её следующими заявками:
Группа: видеокамера
Модель: камера
Число: 12 Месяц: 12 Год: 2010
Состояние: готово
Группа: DVD
Модель: Canon
Число: 30 Месяц: 10 Год: 2012
Состояние: готово
Группа: видеокамера
Модель: Canon
Число: 15 Месяц: 10 Год: 2013
Состояние: не готово
Выведем все видеокамеры для файла с именем "Заявки":
Видеокамеракамера12.12.2010готово
Видеокамера Canon 15.10.2013не готово
5. Задание 4
5.1 Постановка задачи
Основная цель задания 4 состоит в выполнении решения вычислительных процессов по формуле (1), где формула представляет собой объект.
Расчёты по формуле выполняются на основании входных данных вещественного типа одинарной точности, которые вводятся с экрана. Выходные данные выводятся на экран в вещественном типе одинарной точности в отформатированном виде.
5.2 Проектирование форм
Для реализации задания 4 создадим диалоговое приложение с помощью MFC APP Wizard, которое будет содержать одно основное диалоговое окно.
Основное диалоговое окно
Диалоговое окно служит для выполнения ввода исходных данных и вывода результата, полученных при работе. Для этих целей добавим на форму три компонента EditBox.
Для обозначения входных данных и результата используем два компонента StaticText и два компонента GroupBox.
Для организации обработчиков события по реализации вычислений добавим одну кнопку CButton.
Удалим кнопку ОК, и оставим CANCEL.
Изменим свойство каждого из выбранных компонентов. Описание заданных свойств представлено в таблице 5.1
Таблица 5.1 - Свойство компонентов
Идентификатор |
Caption |
Disabled |
Type |
Bitmap |
|
IDC_EDIT4 |
- |
True |
- |
- |
|
IDC_STATIC (StaticText) |
Х= |
- |
- |
- |
|
IDC_STATIC (StaticText) |
N= |
- |
- |
- |
|
IDC_STATIC (GroupBox) |
Результат |
- |
- |
- |
|
IDC_STATIC (GroupBox) |
Ввод данных |
- |
- |
- |
|
IDC_STATIC (Picture) |
- |
- |
Bitmap |
IDB_BITMAP1 |
5.3 Описание методов и классов
В проект z4_v13 с помощью мастера ClassWizard был создан для диалогового окна класс наследник класса CDialog.
Класс CZ4_V13Dlg создан путем добавление методов и переменных:
ON_BN_CLICKED (IDC_BUTTON1, OnButton1) (метод, где выполняется решение задания по формуле (1));
переменная Х типа float (используется для ввода исходных данных задания (связаннас с объектом EditBox1));
переменная N типа float (используется для ввода исходных данных (связанна с объектом EditBox3));
переменная OTV типа float (используется для вывода ответа (связанна с объектом EditBox4)).
Целью решения задачи является расчет по формуле (5.1), которою рассматриваем как объект.
Разрабатывается класс с именем "pr" для объекта формула.
Итерфейс класса "pr" (файл "pr. h")
class Cpr: public CObject
{float x,n;
public:
Cpr ();
float rew1 (float, float);
virtual ~Cpr ();
5.4 Программный код
Код приложения создан автоматически приложением MFC AppWizard. С помощью мастера Class Wizard созданы обработчики событий для кнопок спроектированных в диалоговом окне. Данные обработчики представляют собой методы созданных классов.
Коды методов класса CZ1_V13Dlg
void CZ4_v13Dlg:: OnButton1 () // обработчик события кнопки "решить"
{UpdateData ();
if (n<1) MessageBox ("N должно быть не меньше 1");
else
otv=a. rew1 (x,n);
UpdateData (false); }
Реализация класса "pr" (файл "pr. cpp")
Cpr:: Cpr () // конструктор
{x=0; n=0; }
Cpr:: ~Cpr () // деструктор
{}
float Cpr:: rew1 (float x, float n) // выполнения вычисления по формуле 1
{float q, w, otv=1;
for (int k=1; k<=n; k++)
{q=1;
for (int i=1; i<=k; i++)
q=q*i;
w= (pow (fabs (x*q),1/2)) / (pow (k,3) - tan (x));
otv=w*otv; }
return (otv); }
5.5 Инструкция пользователю
Для реализации задания 4 необходимо наличия файла z4_v13. exe.
Для осуществления работы с данным приложением запустить этот файл. На экране появится главное диалоговое окно (см. рисунок 5.1)
Рисунок 5.1 - Главное диалоговое окно "z4_v13"
Для получения результата необходимо ввести значения и нажать на кнопку "Решить", если данные введены корректно в графе "Результат" будут выходные данные (см. рисунок 5.2), в противном случае выдается сообщение (см. рисунок 5.3)
Рисунок 5.2 - Результат
Рисунок 5.3 - Ошибка о вводе данных
5.6 Контрольный пример
Тест 1 |
Тест 2 |
Тест 3 |
||
x |
3 |
0 |
-1 |
|
n |
2 |
0 |
3 |
|
Ответ |
0,1 |
N не должен быть меньше 1 |
0,001 |
язык программирование диалоговое приложение
6. Задание 5
6.1 Постановка задачи
Целью решения задачи 5 является разработка приложения с использованием принципа объектно-ориентированного программирования - полиморфизм, путем использования перегрузки функций и шаблонов фунций.
Вычисления производятся для вещественного и целого типа данных по формулам (6.1) (6.1), где формулы представляют собой объект:
объем шара по формуле (6.1);
(6.1)
объем конуса по формуле (6.2);
(6.2)
Входные данные вещественного типа с одинарной точностью или целого типа вводятся с экрана. Выходные данные выводятся на экран вещественном типа данных одинарной точности в отформатированном виде.
6.2 Проектирование форм
Для реализации задания 5 создадим приложение MFC AppWizqrd, в котором будет содержатся 3 диалоговых окна
Диалоговое окно с именем "Главное меню"
На основном диалоговом окне спроектируем кнопочное меню.
С помощью обработчиков события каждая из команд осуществляет вызов дополнительных диалоговых окон. Кнопочное меню организуется с помощью двух CButton.
Удалим кнопку ОК, и оставим CANCEL. В каждой из трех кнопок производится задание следующих свойств, представленных в таблице 2.1.
Таблица 2.1 - Свойства кнопок
Идентификатор кнопки |
Свойство Caption |
|
IDC_BUTTON4 |
Работа с конусом |
|
IDC_BUTTON5 |
Работа с шаром |
|
IDCANCEL |
Выход |
Диалоговое окно с именем "Конус"
Диалоговое окно служит для выполнения ввода исходных данных и вывода результата, полученных при работе с программой. Для этих целей добавим на форму три компонента EditBox.
Три компонента StaticText и два компонента GroupBox используем для обозначения входных и выходных данных.
Для ввода данных в приложение и работы с ним добавим две кнопки CButton, удалим кнопку ОК, и оставим CANCEL. Изменим свойство каждого из выбранных компонентов. Описание заданных свойств представлена в таблице 6.1
Таблица 6.1 - свойство элементы управления
Идентификатор |
Caption |
Disabled |
|
IDC_EDIT4 |
- |
True |
|
IDC_BUTTON1 |
Посчитать по шаблону |
- |
|
IDC_BUTTON2 |
Посчитать через функцию |
- |
|
IDCANCEL |
Выход |
- |
Диалоговое окно с именем "Шар"
Диалоговое окно служит для выполнения ввода исходных данных и вывода результата, полученных при работе с программой. Для этих целей добавим на форму два компонента EditBox.
Два компонента StaticText и два компонента GroupBox используем для обозначения входных и выходных данных.
Для ввода данных в приложение и работы с ним добавим две кнопки CButton, удалим кнопку ОК, и оставим CANCEL. Изменим свойство каждого из выбранных компонентов. Описание заданных свойств представлена в таблице 6.1
Подобные документы
Особенности синтаксиса языка программирования С++. Создание панели меню, для получения информации о программе, сохранения результата и выхода из программы. Работа с файлами, двумерными и одномерными динамическими массивами, функциями, строками и циклами.
курсовая работа [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