Написать калькулятор windows forms

Написать калькулятор windows forms

Одна из задач, задаваемых студентам по программированию, это создание калькулятора. Раскрою вам небольшой секрет: немало практических, курсовых и лабораторных работ на C++, C# и Java можно и не делать самостоятельно – есть готовые решения в сети. Однако, я был несколько удивлен, что для такого распространенного задания, как визуальный калькулятор на C++ нет такого готового решения. Ну что ж, нет, так нет, давайте напишем его сами.

Итак, как в большинстве проектов, все начинается с создания приложения Windows Forms, а уже в нем – с редактирования формы. У нас получилась вот такая:


Проект для VS2015

В чем будем считать и хранить числа? Я выбрал тип double – точности его нам вполне хватит; это все же студенческая работа, а не для точных инженерных расчетов. Дальше определимся с тем, сколько чисел и операций будем хранить в памяти. Предположим, штук двадцать: тогда надо создать два массива – один для чисел, а другой для операций между ними.

Почему мы воспользовались указателями, а не просто создали глобальные переменные за пределами windows forms? Дело в том, что, использование глобальных переменных – это плохой тон при программировании, и очень часто преподаватели против данной практики студентов.

В нашей программе будут три основных метода: vvod — принимает цифру (нажатую кнопку) в качестве аргумента и добавляет её к числу. ravno — нажатие на кнопку равно — все считает, ravno2 — это нажатие на кнопку знака. Факториал, деление единицы на число и корень квадратные — там реализуются методы сразу при нажатии все обрабатывается.

Добавим также флаг для памяти:

И еще систему флагов:

Вот, например, как у нас будет выглядеть метод vvod():

Здесь мы проверяем, какая клавиша в нашем калькуляторе была нажата перед этим – цифра, арифметическая операция или знак равно. Далее получаем из текстбокса значение, конвертируем предыдущее из массива, конкатенируем строки, потом обратно в double и обновляем значение массива. Также в этом методе мы проверяем длину числа – мы поставили ограничение на 10 знаков.

Обработка кнопки равно – то есть метод вычисления – также не представляет сложности. Пользуясь оператором ветвления switch перебираем все варианты.

Также реализуем собственный класс для обработки ошибок. Зачем это надо? Дело в том, что мы оперируем с числами типа double, а они не выбрасывают некоторые стандартные исключения, например – деление на ноль. Также мы предусмотрим обработку переполнения и вычисления квадратного корня из отрицательного числа. На вход конструкторов этого класса будем принимать пару чисел. Выводятся ошибки при:

  1. взятии корня четной степени из отрицательного числа
  2. логарифмировании отрицательного числа и нуля
  3. делении на нуль.
  4. переполнении (калькулятор все же не бесконечный)

Также не забудем и обработку клавиши запятой. Для этого проверяем, есть ли она уже во введённом числе:

Вот такие основные моменты надо знать для написания данной программы. Ну а если вы не можете самостоятельно написать визуальный калькулятор на C++, то обратитесь ко мне. Актуальную цену за архив с готовой программой и исходниками с подробными комментариями в настоящий моент 500 рублей. Это будет проект в Visual Studio C++ 2010 — он откроется в любой другой версии студии не ниже 2010. Также есть проект для Visual Studio 2015.

Мой калькулятор реализует все основные функции: сложение, вычитание, деление, умножение, факториал, возведение в степень, извлечение квадратного корня, вычисление 1/x, функции памяти (занести в память, вывести содержимое памяти, очистить память).

Добавились новые функции в калькуляторе. А именно:

  • Извлечение корня четной и нечетной степени из числа
  • Вычисление логарифма по любому основанию
  • Вычисление экспоненты

Если вам требуется реализация других функций, то это делается за отдельную плату. Пишите на почту up777up@yandex.ru, стучитесь vk.com/idup7, @upreadru или по другим контактам.


Автор этого материала — я — Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML — то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

Читайте также:  Check bios version from windows

статьи IT, си плюс плюс, visual studio, калькулятор

Методическая разработка по теме «Создание простого калькулятора в Windows Forms на С++ «

Методическая разработка по теме

«Создание простого калькулятора на языке С#

с использованием технологии Windows Forms».

Дисциплина: Информационные технологии и платформы разработки информационных систем

Специальности технического профиля

Тип урока: практическая работа

Ход практической работы

Для создания графического проекта нам потребуется среда разработки Visual Studio. На компьютерах установлена версия Visual Studio 2013.

Логотипом и иконкой Visual Studio 2013 является символ, похожий на математический символ «бесконечность», но с неодинаковыми левой и правой частями, фиолетового цвета.

Щелкнув по этой иконке на панели инструментов, выполняем вход в Visual Studio 2013.

В результате сначала появляется вертикально расположенный баннер Visual Studio 2013 (черного цвета), а затем — стартовая страница

Создадим проект графического приложения.

Для этого выберете пункт Создать проект . После этого откроется диалоговое окно создания нового проекта:

В поле внизу задайте имя данному проекту – ProstoCalculator . Нажмите ОК.

После этого Visual Studio откроет наш проект с созданными по умолчанию файлами:

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

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

Теперь найдем в этом окне свойство формы Text и изменим его значение на «Калькулятор»:

Далее расположите все нужные элементы на форме. Нам понадобятся три элемента TextBox и 4 кнопки – Button.

Для этого нажимаем Вид → Панель элементов:

Появляется Панель элементов , из которой будем брать необходимые элементы TextBox и Button простым перетаскиванием.

Устанавливаем их так, как показано на рисунке ниже и переименовываем кнопки в свойствах. Сделать это можно, выделив элемент:

Наш калькулятор основан на взаимодействии двух чисел, поэтому математические операции будут следующие:

Итак, после того, как с графическим оформлением закончено, приступаем к самому коду.

Для всех вышеописанных операций (Сложение, Вычитание, Умножение, Деление) мы должны создать отдельные функции. Функции – это подпрограммы в самой программе, выполняющие отдельные задачи. Они помогают сократить и облегчить код.

Вот так будут выглядеть функции сложения, вычитания, умножения и деления:

public static double sum(double a, double b)

public static double razn(double a, double b)

public static double umnog(double a, double b)

public static double del(double a, double b)

Данный фрагмент кода помещаем на форму. Для этого выполним следующие действия:

Кликните в любое пустое место формы дважды, у вас появится окно с кодом, уже сформированным программой.

Мы дополним код, разместив наш фрагмент перед строчкой

private void button1_Click( object sender, EventArgs e)

У вас должно получиться:

Затем данные функции привязываем к кнопкам в форме.

Дважды щёлкаем мышью в форме на первую кнопку (Сложение).

Открывается та часть кода, которая отвечает за событие, которое произойдет, когда пользователь кликнет на данную кнопку. В теле этого события мы пишем:

private void button1_Click( object sender, EventArgs e)

textBox3.Text = Convert .ToString(sum( Convert .ToDouble(textBox1.Text), Convert .ToDouble(textBox2.Text)));

Нажимаем на кнопку 2 ( Вычитание ):

private void button2_Click( object sender, EventArgs e)

textBox3.Text = Convert .ToString(razn( Convert .ToDouble(textBox1.Text), Convert .ToDouble(textBox2.Text)));

Нажимаем на кнопку 3 ( Умножение ):

private void button3_Click(object sender, EventArgs e)

textBox3.Text = Convert.ToString(umnog(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text)));

Нажимаем на кнопку 4 ( Деление ):

private void button4_Click(object sender, EventArgs e)

textBox3.Text = Convert.ToString(del(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text)));

У вас должно получиться:

Вот и всё. Наш калькулятор готов!

Дальнейших успехов Вам!

Данная работа дает возможность в среде Microsoft Visual Studio с помощью Windows Forms создать простой калькулятор на языке С++.

Практическая работа предназначена для студентов колледжа 4 курса специальности «Информационные системы», изучающих дисциплину «Информационные технологии и платформы разработки информационных систем»

Номер материала: ДБ-550043

Не нашли то что искали?

Вам будут интересны эти курсы:

Оставьте свой комментарий

Подарочные сертификаты

Ответственность за разрешение любых спорных моментов, касающихся самих материалов и их содержания, берут на себя пользователи, разместившие материал на сайте. Однако администрация сайта готова оказать всяческую поддержку в решении любых вопросов, связанных с работой и содержанием сайта. Если Вы заметили, что на данном сайте незаконно используются материалы, сообщите об этом администрации сайта через форму обратной связи.

Читайте также:  Объем флешки для линукс

Все материалы, размещенные на сайте, созданы авторами сайта либо размещены пользователями сайта и представлены на сайте исключительно для ознакомления. Авторские права на материалы принадлежат их законным авторам. Частичное или полное копирование материалов сайта без письменного разрешения администрации сайта запрещено! Мнение администрации может не совпадать с точкой зрения авторов.

Калькулятор Windows Forms на языке C#

Реализация калькулятора Windows Forms на языке C#

Содержимое разработки

Калькулятор Windows Forms на языке C#

Простой калькулятор Windows Forms на C#

Наш калькулятор основан на взаимодействии двух чисел, поэтому математические операции будут следующие:

Возведение первого числа в степень второго

Взятие корня первого числа степени второго числа.

Итак, после того, как с графическим оформлением закончено, приступаем к самому коду.

Для всех вышеописанных операций мы создадим отдельные функции. Функции – это, так сказать, подпрограммы в самой программе, выполняющие отдельные задачи. Они помогают сократить и облегчить код.

public static double sum ( double a , double b )

Для начала мы объявляем программе, что создаем функцию (пишем public static ), затем определяем тип функции( double – числовой тип повышенной точности с плавающей запятой, лучший вариант), после даём имя функции( sum ) и в скобках записываем то, что, так сказать, получает функция от программы( double a и double b – первое и второе числа, которые мы запишем в первые два TextBox’a ). Выражение return возвращает в функцию результат сложения a и b . То есть наша функция получает два числа от пользователя, который введет их в форме и, при помощи return’a , в неё же заносится результат вычисления.

public static double razn ( double a , double b )

public static double umnog ( double a , double b )

public static double del ( double a , double b )

Функция возведения в степень

public static double step ( double a , double b )

return Math . Pow ( a , b );

Функция извлечения корня

public static double koren ( double a , double b )

return Math . Pow ( a, 1/b );

Функции созданы, сталось лишь привязать их к кнопкам в форме. Дважды щёлкаем мышью в форме на первую кнопку. Нас переносит в часть кода, которая отвечает за событие, которое произойдет, когда пользователь кликнет на данную кнопку. В теле этого события мы пишем:

private void button1_Click(object sender, EventArgs e)

textBox3.Text = Convert.ToString(sum(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text)));

Разбор кода начнём, как ни странно, с конца. Мы помним, что при объявлении функции мы писали вот такую часть кода: sum(double a, double b) . То есть функция может получить только значения типа double . Также мы помним, что эти значения мы получаем от пользователя, который, в свою очередь, вводит их в первый и второй TextBox’ы. Однако проблема в том, что значения из TextBox’ов воспринимаются программой как строки, то есть типом string . Поэтому их надо конвертировать в нужный нам double , что мы и делаем: sum(Convert.ToDouble(textBox1.Text),Convert.ToDouble(textBox2.Text))

private void button2_Click(object sender, EventArgs e)

textBox3.Text = Convert.ToString(razn(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text)));

private void button3_Click(object sender, EventArgs e)

textBox3.Text = Convert.ToString(umnog(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text)));

private void button4_Click(object sender, EventArgs e)

textBox3.Text = Convert.ToString(del(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text)));

private void button5_Click(object sender, EventArgs e)

textBox3.Text = Convert.ToString(step(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text)));

private void button6_Click(object sender, EventArgs e)

textBox3.Text = Convert.ToString(koren(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text)));

Здесь у нас 19 кнопок Button , 1 Textbox и ещё 1 пустой Label

Создаём форму. Увеличим ширину TextBox’a , используя MultiLine :

Также в Свойствах мы увеличили размер шрифта в TextBox’e и Label’e до 12 пт.

Теперь делаем так, чтобы при нажатии на цифровые кнопки, в TextBox’e появлялась соответствующая цифра.

Для этого дважды кликаем на кнопке “0” и в открывшемся коде пишем

private void button17_Click(object sender, EventArgs e)

textBox1.Text = textBox1.Text + 0;

private void button13_Click(object sender, EventArgs e)

textBox1.Text = textBox1.Text + 1;

private void button14_Click(object sender, EventArgs e)

textBox1.Text = textBox1.Text + 2;

private void button15_Click(object sender, EventArgs e)

textBox1.Text = textBox1.Text + 3;

private void button9_Click(object sender, EventArgs e)

textBox1.Text = textBox1.Text + 4;

private void button10_Click(object sender, EventArgs e)

textBox1.Text = textBox1.Text + 5;

private void button11_Click(object sender, EventArgs e)

Читайте также:  Eds windows 10 tuner

textBox1.Text = textBox1.Text + 6;

private void button5_Click(object sender, EventArgs e)

textBox1.Text = textBox1.Text + 7;

private void button6_Click(object sender, EventArgs e)

textBox1.Text = textBox1.Text + 8;

private void button7_Click(object sender, EventArgs e)

textBox1.Text = textBox1.Text + 9;

private void button18_Click(object sender, EventArgs e)

bool znak = true;

Кнопки нажимаются, в TextBox’e отображаются нажатые цифры. Теперь надо научить программу производить с ними какие-либо операции. Как видно из формы, наш калькулятор сможет производить стандартные математические операции: сложение, вычитание, умножение и деление. Для начала мы создадим в самом начале программы несколько переменных, которые нам для этого понадобятся:

Первым двум переменным будут присваиваться значения, набранные пользователем в калькуляторе. В последствии с ними будут производиться нужные математические операции. Тип float – это тип с плавающей точкой, позволяющий работать с десятичными дробями, что нам, безусловно, нужно при наличии кнопки “.” .

Благодаря второй переменной мы будем давать программе указания, какую именно операцию производить с переменными, описанными выше. Здесь нам не нужна дробь, поэтому обойдёмся целочисленным типом int .

Последняя переменная znak нам понадобится для того, чтобы менять знаки у введённых чисел. Тип bool может иметь два значения – ture и false . Мы представим, что если znak имеет значение true в программе, то это означает, что у числа знак + , если false – число отрицательное и перед собой имеет знак . Изначально в калькуляторе вбиваются положительные числа, поэтому мы сразу присвоили переменной значение true .

Далее мы дважды нажимаем на кнопку “+” , обозначающую сложение, на форме и пишем следующий код:

В строке 3 мы присваиваем первой переменной a то, что будет написано в TextBox’e (а именно число, которое введёт пользователь перед тем, как нажать кнопку “+” ).

Затем TextBox очищается, число, введённое пользователем, в нём пропадает (но остаётся в переменной a )

Переменной count присваивается число 1, которая потом укажет программе, что именно операцию сложения надо будет произвести с числами.

Затем в Label записывается число из переменной a (то самое, которое изначально ввёл пользователь) и знак плюса. Выглядеть в форме это будет так, как описано ниже.

Пользователь вводит какое-либо число:

Разница лишь в значении переменной count и в том, какой знак добавляется в Label’e .

Далее нам понадобится создать функцию, которая будет применять нужные нам математические операции к числам. Назовём её calculate . Но перед этим мы кликнем дважды на кнопку “=” на форме и в коде к ней мы запишем:

То есть, при нажатии пользователем на кнопку “=” , как раз выполнится наша функция подсчёта calculate , и, заодно, очистится Label , так как результат мы в будущем коде выведем в TextBox .

Теперь-таки создаём нашу функцию calculate и пишем следующий код:

Здесь мы используем конструкцию switch-case .

Switch – это оператор управления. Он может включать в себя несколько case’ов . Case – метки, от значения которых зависит, какие операции будут происходить.

Строка switch(count) означает, что именно от значения count будет зависеть, какое действие будет происходить в коде switch’a .

Итак, если count=1 (в коде case 1: ), то произойдёт следующее:

После того, как пользователь нажал “+” , он, естественно, должен ввести второе слагаемое, что он и делает по стандартному сценарию, а затем нажать кнопку “=” (и в ней, как мы помним, как раз выполнится наша функция).

Как только кнопка “=” будет нажата, программа сложит число из переменной a с тем вторым слагаемым, которое записал пользователь в TextBox , и запишет результат в переменную b (строка 6 кода функции). В строке 7 программа выведет в TextBox результат сложения – переменную b .

Оператор break (строка 8) завершает исполнение кода switch при выполнении кода метки case 1 , так как больше нам в нём делать нечего.

Точно так же строится алгоритм при case 2 , case 3 и case 4 с той разницей, что в них происходит не сложение, а вычитание, умножение и деление соответственно.

Оператор default срабатывает, если вдруг что-то пойдёт не по плану и count примет какое-либо иное значение, не описанное в switch . Тогда срабатывает лишь оператор break .

Львиная доля программы готова. Нам надо лишь написать код для трёх оставшихся нетронутыми до этого время кнопок.

Дважды жмём в форме на кнопку “С” . Она будет очищать все записи из TextBox’a и Label’a .

Оцените статью