Меню
Разработки
Разработки  /  Информатика  /  Презентации  /  Прочее  /  Калькулятор Windows Forms на языке C#

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

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

21.12.2017

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

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

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

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

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

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

Сложение

Вычитание

Умножение

Деление

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

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

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

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

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

Функция сложения

public static double sum ( double a , double b )

         {

             return a + b ;

         }

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

Функция вычитания public  static  double  razn ( double  a ,  double  b )          {              return  a - b ;          }

Функция вычитания

public static double razn ( double a , double b )

         {

             return a - b ;

         }

Функция умножения    public  static  double  umnog ( double  a ,  double  b )          {              return  a *  b ;          }

Функция умножения

   public static double umnog ( double a , double b )

         {

             return a * b ;

         }

Функция деления    public  static  double  del ( double  a ,  double  b )          {              return  a / b ;          }

Функция деления

   public static double del ( double a , double b )

         {

             return a / b ;

         }

Функция возведения в степень  public  static  double  step ( double  a ,  double  b )          {              return  Math . Pow ( a ,  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 );          } Функции созданы, сталось лишь привязать их к кнопкам в форме. Дважды щёлкаем мышью в форме на первую кнопку. Нас переносит в часть кода, которая отвечает за событие, которое произойдет, когда пользователь кликнет на данную кнопку. В теле этого события мы пишем:

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

   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 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 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 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 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 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)));          }

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  

Усложненный калькулятор

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

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

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

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

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

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

Для этого дважды кликаем на кнопке  “0”  и в открывшемся коде пишем private void button17_Click(object sender, EventArgs e)  {  textBox1.Text = textBox1.Text + 0;  }

Для этого дважды кликаем на кнопке  “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 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 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 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 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 button10_Click(object sender, EventArgs e)

{

textBox1.Text = textBox1.Text + 5;

}

 private void button11_Click(object sender, EventArgs e)  {  textBox1.Text = textBox1.Text + 6;  }

private void button11_Click(object sender, EventArgs e)

{

textBox1.Text = textBox1.Text + 6;

}

 private void button5_Click(object sender, EventArgs e)  {  textBox1.Text = textBox1.Text + 7;  }

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 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 button7_Click(object sender, EventArgs e)

{

textBox1.Text = textBox1.Text + 9;

}

 private void button18_Click(object sender, EventArgs e)  {  textBox1.Text = textBox1.Text +

private void button18_Click(object sender, EventArgs e)

{

textBox1.Text = textBox1.Text + ",";

}

float a, b; int count; bool znak = true; Кнопки нажимаются, в  TextBox’e  отображаются нажатые цифры. Теперь надо научить программу производить с ними какие-либо операции. Как видно из формы, наш калькулятор сможет производить стандартные математические операции: сложение, вычитание, умножение и деление. Для начала мы создадим  в самом начале программы несколько переменных, которые нам для этого понадобятся:

float a, b;

int count;

bool znak = true;

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

Кнопка «+» Первым двум переменным будут присваиваться значения, набранные пользователем в калькуляторе. В последствии с ними будут производиться нужные математические операции. Тип  float  – это тип с плавающей точкой, позволяющий работать с десятичными дробями, что нам, безусловно, нужно при наличии кнопки  “.”  . Благодаря второй переменной мы будем давать программе указания, какую именно операцию производить с переменными, описанными выше. Здесь нам не нужна дробь, поэтому обойдёмся целочисленным типом  int . Последняя переменная  znak  нам понадобится для того, чтобы менять знаки у введённых чисел. Тип  bool  может иметь два значения –  ture  и  false . Мы представим, что если  znak имеет значение  true  в программе, то это означает, что у числа знак  + , если  false  – число отрицательное и перед собой имеет знак  - . Изначально в калькуляторе вбиваются положительные числа, поэтому мы сразу присвоили переменной значение  true . Далее мы дважды нажимаем на кнопку  “+” , обозначающую сложение, на форме и пишем следующий код:

Кнопка «+»

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

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

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

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

Кнопка «-» В строке 3 мы присваиваем первой переменной  a  то, что будет написано в  TextBox’e  (а именно число, которое введёт пользователь перед тем, как нажать кнопку  “+” ). Затем  TextBox  очищается, число, введённое пользователем, в нём пропадает (но остаётся в переменной  a ) Переменной  count  присваивается число 1, которая потом укажет программе, что именно операцию сложения надо будет произвести с числами. Затем в  Label  записывается число из переменной  a  (то самое, которое изначально ввёл пользователь) и знак плюса. Выглядеть в форме это будет так, как описано ниже. Пользователь вводит какое-либо число:

Кнопка «-»

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

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

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

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

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

Кнопка «*»

Кнопка «*»

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

Кнопка «/»

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

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

Кнопка «=» То есть, при нажатии пользователем на кнопку  “=” , как раз выполнится наша функция подсчёта  calculate , и, заодно, очистится Label , так как результат мы в будущем коде выведем в  TextBox . Теперь-таки создаём нашу функцию  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 2case 3  и  case 4  с той разницей, что в них происходит не сложение, а вычитание, умножение и деление соответственно.

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

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

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

Кнопка «С»

Кнопка «С»

Кнопка «  »

Кнопка « »

Кнопка «+/-»

Кнопка «+/-»

-80%
Курсы повышения квалификации

Современные педагогические технологии в образовательном процессе

Продолжительность 72 часа
Документ: Удостоверение о повышении квалификации
4000 руб.
800 руб.
Подробнее
Скачать разработку
Сохранить у себя:
Калькулятор Windows Forms на языке C# (534.51 KB)

Комментарии 0

Чтобы добавить комментарий зарегистрируйтесь или на сайт