Главная страница
Навигация по странице:

  • Ход работы Создадим проект графического приложения. Для этого выберите пункт «Создать проект»

  • «Имя проекта»

  • «Добавить»

  • «Форма Windows Forms»

  • «Свойства»

  • «Свойства конфигурации»

  • «Дополнить»

  • «Применить»

  • MyForm

  • Лабораторная работа 13 vol 2. Построение и обоснование модели проекта


    Скачать 0.61 Mb.
    НазваниеПостроение и обоснование модели проекта
    Дата29.04.2022
    Размер0.61 Mb.
    Формат файлаdocx
    Имя файлаЛабораторная работа 13 vol 2.docx
    ТипЛабораторная работа
    #504361
    страница1 из 3
      1   2   3

    Лабораторная работа № 13-14


    Тема: Построение и обоснование модели проекта

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

    Ход работы

    Создадим проект графического приложения. Для этого выберите пункт «Создать проект». После этого откроется диалоговое окно создания нового проекта.



    Рисунок 1 – Окно создания проекта
    В поле «Имя проекта» вводим название ProstoCalculator, а затем нажимаем кнопку «Создать».



    Рисунок 2 – Настройки проекта
    После создания пустого проекта необходимо добавить новую форму в проекте. Для этого в окне проекта необходимо открыть контекстное меню созданного проекта и выбрать пункт «Добавить», затем выбрать пункт «Создать элемент» или нажать комбинацию клавиш Ctrl+Shift+A.



    Рисунок 3 – Добавление нового элемента
    В появившемся окне необходимо выбрать пункт «Форма Windows Forms», затем нажать кнопку «Добавить».



    Рисунок 4 – Добавление формы
    После добавления новой формы Visual Studio вывел на экран штатную ошибку, для ее устранения необходимо перезапустить Visual Studio и еще раз открыть ранее созданное решение.



    Рисунок 5 – Созданная форма
    После того, как форма загрузилась, необходимо произвести настройку вашего проекта. Для этого необходимо вызвать контекстное меню созданного проекта и выбрать пункт «Свойства» или нажать комбинацию клавиш Alt + ВВОД.



    Рисунок 6 – Свойства решения
    Так как мы готовим решение для операционной системы Windows с использованием графического интерфейса, необходимо в категории «Свойства конфигурации» выбрать категорию «Компоновщик», затем выбрать пункт «Система» и задать значение параметра «Подсистема» - «Windows (/SUBSYSTEM:WINDOWS)».



    Рисунок 7 – Изменение параметра «Подсистема»
    После внесенных изменений необходимо также определить точку входа при компиляции решения, для этого необходимо открыть категорию «Дополнить» и внести изменения в параметр «Точка входа».



    Рисунок 8 – Изменение параметра «Точка входа»
    После внесения всех изменений необходимо нажать кнопку «Применить», а затем кнопку «ОК».

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

    #include "MyForm.h"

    using namespace System;

    using namespace System::Windows::Forms;

    [STAThreadAttribute]

    void Main(array^ args)

    {

    Application::EnableVisualStyles();

    Application::SetCompatibleTextRenderingDefault(false);

    ProstoCalculator::MyForm form;

    Application::Run(% form);

    }
    На этом предварительные настройки решения завершены.

    Большую часть пространства Visual Studio занимает графический дизайнер, который содержит форму будущего положения. Пока она пуста и имеет только заголовок MyForm. Сбоку от формы находится окно файлов решения/проекта – SolutionExplorer (Обозреватель решений). Там и находятся все связанные с нашим приложением файлы, в том числе файлы формы MyForm.h.

    В противоположной стороне от обозревателя решений находится окно свойств – Properties. Так как в данный момент выбрана форма как элемент управления, то в этом поле отображаются свойства, связанные с формой.

    В окне свойств формы необходимо найти параметр Text и изменить его значение на «Калькулятор».



    Рисунок 9 – Изменение свойств формы
    Альтернативным методом задания свойств для формы является указание параметров формы в коде. Для этого необходимо дважды нажать на пустую форму. Visual Studio перенес в обработчик событий формы и сама задаст часть кода. В данный момент обработчик не выполняет никаких операций. Чтобы изменить название формы, используя обработчик событий, для этого необходимо добавить соответствующий код. Таким образом, код будет выглядеть следующим образом:

    private: System::Void MyForm_Load(System::Object^ sender, System::EventArgs^ e)

    {

    this->Text = "Калькулятор vol. 2";

    }

    Запустим полученное решение на компиляцию и получим следующий результат.



    Рисунок 10 – Форма приложения
    Далее необходимо расположить элементы на форме:

    • TextBox;

    • Button:

    • Label.

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



    Рисунок 11 – Обновленная форма приложения
    Далее через обработчик событий укажем названия кнопки, а также очистим элементы от значений по умолчанию. Для этого добавим в код следующие строки:

    button1->Text = "+";

    label1->Text = String::Empty;

    textBox1->Clear();

    textBox2->Clear();

    Добавим параметр, который строго переместит курсор на элемент TextBox1 при запуске нашего решения:

    textBox1->TabIndex = 0;

    После компиляции решения получим следующее:



    Рисунок 12 – Обновленная форма приложения
    Добавим в код нашей программы несколько глобальных переменных

    Single firstNum; //Хранится первое число

    Single secondNum; //Хранится второе число

    Single result; //Хранится результат действий

    bool isNumber = true; //Проверка на число
    Создадим обработчик событий для кнопки. Для этого дважды нажмем на нее и перейдем к обработчику событий. В код добавим следующую часть кода, который проверяет данные, когда ввел пользователь.

    isNumber = (Single::TryParse(

    textBox1->Text,

    System::Globalization::NumberStyles::Number,

    System::Globalization::NumberFormatInfo::CurrentInfo,

    firstNum)

    && (Single::TryParse(

    textBox2->Text,

    System::Globalization::NumberStyles::Number,

    System::Globalization::NumberFormatInfo::CurrentInfo,

    secondNum)));

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

    if (isNumber == false)

    {

    label1->Text = "Введены некорректные данные"; //Выводим сообщение на экран

    label1->ForeColor = Color::Red;

    return;

    }

    else

    {

    result = firstNum + secondNum;

    label1->Text = String::Format("{0}+{1}={2}", firstNum, secondNum, result);

    }

    После добавления кода для операции сложения добавим операцию вычитания: для начала необходимо добавить Button, прописать в обработчике событий следующую строку.

    button2->Text = "-";

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



    Рисунок 13 – Обновленная форма приложения

    После необходимо добавить код для операции вычитания:

    label1->ForeColor = Color::Black;

    isNumber = (Single::TryParse(

    textBox1->Text,

    System::Globalization::NumberStyles::Number,

    System::Globalization::NumberFormatInfo::CurrentInfo,

    firstNum)

    && (Single::TryParse(

    textBox2->Text,

    System::Globalization::NumberStyles::Number,

    System::Globalization::NumberFormatInfo::CurrentInfo,

    secondNum)));

    if (isNumber == false)

    {

    label1->Text = "Введены некорректные данные"; //Выводим сообщение на экран

    label1->ForeColor = Color::Red;

    return;

    }

    else

    {

    result = firstNum - secondNum;

    label1->Text = String::Format("{0}-{1}={2}", firstNum, secondNum, result);

    }

    После добавления кода для операции вычитания добавим операцию умножения: для начала необходимо добавить Button, прописать в обработчике событий следующую строку.

    button3->Text = "*";

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



    Рисунок 14 – Обновленная форма приложения

    После необходимо добавить код для операции умножения:

    label1->ForeColor = Color::Black;

    isNumber = (Single::TryParse(

    textBox1->Text,

    System::Globalization::NumberStyles::Number,

    System::Globalization::NumberFormatInfo::CurrentInfo,

    firstNum)

    && (Single::TryParse(

    textBox2->Text,

    System::Globalization::NumberStyles::Number,

    System::Globalization::NumberFormatInfo::CurrentInfo,

    secondNum)));

    if (isNumber == false)

    {

    label1->Text = "Введены некорректные данные"; //Выводим сообщение на экран

    label1->ForeColor = Color::Red;

    return;

    }

    else

    {

    result = firstNum * secondNum;

    label1->Text = String::Format("{0}*{1}={2}", firstNum, secondNum, result);

    }

    После добавления кода для операции умножения добавим операцию деления: для начала необходимо добавить Button, прописать в обработчике событий следующую строку.

    button4->Text = "/";

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



    Рисунок 15 – Обновленная форма приложения

    После необходимо добавить код для операции деления:

    label1->ForeColor = Color::Black;

    isNumber = (Single::TryParse(

    textBox1->Text,

    System::Globalization::NumberStyles::Number,

    System::Globalization::NumberFormatInfo::CurrentInfo,

    firstNum)

    && (Single::TryParse(

    textBox2->Text,

    System::Globalization::NumberStyles::Number,

    System::Globalization::NumberFormatInfo::CurrentInfo,

    secondNum)));

    if (isNumber == false)

    {

    label1->Text = "Введены некорректные данные"; //Выводим сообщение на экран

    label1->ForeColor = Color::Red;

    return;

    }

    else

    {

    result = firstNum / secondNum;

    label1->Text = String::Format("{0}/{1}={2}", firstNum, secondNum, result);

    }

    После добавления кода для операции деления добавим операцию функции cos(): для начала необходимо добавить Button, прописать в обработчике событий следующую строку.

    Button5->Text = "cos()";

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



    Рисунок 16 – Обновленная форма приложения

    После необходимо добавить код для операции нахождения cos():

    label1->ForeColor = Color::Black;

    isNumber = (Single::TryParse(

    textBox1->Text,

    System::Globalization::NumberStyles::Number,

    System::Globalization::NumberFormatInfo::CurrentInfo,

    firstNum)

    && (Single::TryParse(

    textBox2->Text,

    System::Globalization::NumberStyles::Number,

    System::Globalization::NumberFormatInfo::CurrentInfo,

    secondNum)));

    if (isNumber == false)

    {

    label1->Text = "Введены некорректные данные"; //Выводим сообщение на экран

    label1->ForeColor = Color::Red;

    return;

    }

    else

    {

    result = cos(firstNum*M_PI/180);

    result2 = cos(secondNum*M_PI/180);

    label1->Text = String::Format("cos({0})={1} cos({2})={3}", firstNum, result, secondNum, result2);

    }

    После добавления кода для операции функции cos() добавим операцию функции sin(): для начала необходимо добавить Button, прописать в обработчике событий следующую строку.

    button6->Text = "sin()";

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



    Рисунок 17 – Обновленная форма приложения

    После необходимо добавить код для операции нахождения sin():

    label1->ForeColor = Color::Black;

    isNumber = (Single::TryParse(

    textBox1->Text,

    System::Globalization::NumberStyles::Number,

    System::Globalization::NumberFormatInfo::CurrentInfo,

    firstNum)

    && (Single::TryParse(

    textBox2->Text,

    System::Globalization::NumberStyles::Number,

    System::Globalization::NumberFormatInfo::CurrentInfo,

    secondNum)));

    if (isNumber == false)

    {

    label1->Text = "Введены некорректные данные"; //Выводим сообщение на экран

    label1->ForeColor = Color::Red;

    return;

    }

    else

    {

    result = sin(firstNum*M_PI/180);

    result2 = sin(secondNum*M_PI/180);

    label1->Text = String::Format("sin({0})={1} sin({2})={3}", firstNum, result, secondNum, result2);

    }

    После добавления кода для операции функции sin() добавим операцию функции нахождения квадратного корня: для начала необходимо добавить Button, прописать в обработчике событий следующую строку.

    Button7->Text = "Кв. корень";

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



    Рисунок 18 – Обновленная форма приложения

    После необходимо добавить код для операции нахождения квадратного корня:

    label1->ForeColor = Color::Black;

    isNumber = (Single::TryParse(

    textBox1->Text,

    System::Globalization::NumberStyles::Number,

    System::Globalization::NumberFormatInfo::CurrentInfo,

    firstNum)

    && (Single::TryParse(

    textBox2->Text,

    System::Globalization::NumberStyles::Number,

    System::Globalization::NumberFormatInfo::CurrentInfo,

    secondNum)));

    if (isNumber == false)

    {

    label1->Text = "Введены некорректные данные"; //Выводим сообщение на экран

    label1->ForeColor = Color::Red;

    return;

    }

    else

    {

    result = sqrt(firstNum);

    result2 = sqrt(secondNum);

    label1->Text = String::Format("Кв.корень({0})={1} Кв.корень({2})={3}", firstNum, result, secondNum, result2);

    }

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

    Button8->Text = "x^y";

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



    Рисунок 19 – Обновленная форма приложения

    После необходимо добавить код для операции возведения в степень:

    label1->ForeColor = Color::Black;

    isNumber = (Single::TryParse(

    textBox1->Text,

    System::Globalization::NumberStyles::Number,

    System::Globalization::NumberFormatInfo::CurrentInfo,

    firstNum)

    && (Single::TryParse(

    textBox2->Text,

    System::Globalization::NumberStyles::Number,

    System::Globalization::NumberFormatInfo::CurrentInfo,

    secondNum)));

    if (isNumber == false)

    {

    label1->Text = "Введены некорректные данные"; //Выводим сообщение на экран

    label1->ForeColor = Color::Red;

    return;

    }

    else

    {

    result = pow(firstNum, secondNum);

    label1->Text = String::Format("{0}^{1}={2}", firstNum, secondNum, result);

    }

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

    button9->Text = "1";

    button10->Text = "2";

    button11->Text = "3";

    button12->Text = "4";

    button13->Text = "5";

    button14->Text = "6";

    button15->Text = "7";

    button16->Text = "8";

    button17->Text = "9";

    button18->Text = "0";

    button19->Text = "ВВОД";

    button20->Text = "<-";

    Для того, чтобы исключить возможность ввода добавим следующие строки

    textBox1->ReadOnly = true;

    textBox2->ReadOnly = true;

    Для переключения между TextBox добавим также переменную vvod

    vvod = true;

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

      1   2   3


    написать администратору сайта