51113

Разработка калькулятора с использованием формы и компонентов Button, Label и TextBox

Лабораторная работа

Информатика, кибернетика и программирование

Разработать калькулятор с использованием формы и компонентов Button, Label и TextBox. Сделать проверку вводимых значений, реализовать 4 действия: сложение, умножение, деление, вычитание. Код программы...

Русский

2014-02-06

64.94 KB

3 чел.

ПЕРВОЕ ВЫСШЕЕ ТЕХНИЧЕСКОЕ УЧЕБНОЕ ЗАВЕДЕНИЕ РОССИИ

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

«НАЦИОНАЛЬНЫЙ МИНЕРАЛЬНО-СЫРЬЕВОЙ УНИВЕРСИТЕТ «ГОРНЫЙ»

Лабораторные работы №1, №2

по дисциплине

«Объектно-ориентированное программирование»

Выполнил студент: Орлов Антон Юрьевич

Шифр 0402020012 группа ПОВТв-10

Специальность 230105.65 , курс 3

Санкт-Петербург

2013

Проверил:   _________________   /  Шумова Е.О.  

Задание на работу:

Разработать калькулятор с использованием формы и компонентов Button, Label и TextBox. Сделать проверку вводимых значений, реализовать 4 действия: сложение, умножение, деление, вычитание.

Код программы (файл Form1.cs)

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace calc2

{

   public partial class Form1 : Form

   {

       //класс исключения

       public class SquareRootLessZero : System.Exception

       {

       };

       //класс исключения

       public class IncorrectSymbols : System.Exception

       {

       };

       public Form1()

       {

           InitializeComponent();

       }

       private void button1_Click(object sender, EventArgs e)

       {

           try

           {

               double i;

               if (!double.TryParse(textBox1.Text, out i) || !double.TryParse(textBox2.Text, out i))

                       throw new IncorrectSymbols();

               if (radioButton1.Checked == true)//сложение

               {

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

               }

               else if (radioButton2.Checked == true)//вычитание

               {

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

               }

               else if (radioButton3.Checked == true)//умножение

               {

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

               }                 

               else if (radioButton4.Checked == true)//деление

               {

                   if (Convert.ToDouble(textBox2.Text) == 0)

                       throw new System.DivideByZeroException();

                   else

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

               }

               else if (radioButton5.Checked == true)

               {

                   if (Convert.ToDouble(textBox1.Text) < 0)

                       throw new SquareRootLessZero();

                   else

                       textBox3.Text = Convert.ToString(Math.Sqrt(Convert.ToDouble(textBox1.Text)));

               }

               if (checkBox1.Checked == true && checkBox2.Checked == false)//история

                   listBox1.Items.Add(textBox3.Text);

               if (checkBox1.Checked == true && checkBox2.Checked == true)//расширенная история

               {

                   if (radioButton1.Checked == true)//сложение

                       listBox1.Items.Add(textBox1.Text + " + " + textBox2.Text + " = " + textBox3.Text);

                   else if (radioButton2.Checked == true)//вычитание

                       listBox1.Items.Add(textBox1.Text + " - " + textBox2.Text + " = " + textBox3.Text);

                   else if (radioButton3.Checked == true)//умножение

                       listBox1.Items.Add(textBox1.Text + " * " + textBox2.Text + " = " + textBox3.Text);

                   else if (radioButton4.Checked == true)//деление

                       listBox1.Items.Add(textBox1.Text + " / " + textBox2.Text + " = " + textBox3.Text);                        

                   else if (radioButton5.Checked == true)//sqrt

                       listBox1.Items.Add("sqrt(" + textBox1.Text + ") = " + textBox3.Text);

               }

           }

           catch (IncorrectSymbols IncSym)

           {

               double i;

               MessageBox.Show("Неправильный ввод!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

               if (!double.TryParse(textBox1.Text, out i) && !double.TryParse(textBox2.Text, out i))

               {

                   textBox1.Text = "0";

                   textBox2.Text = "0";

               }

               else if (!double.TryParse(textBox1.Text, out i))

                   textBox1.Text = "0";

               else

                   textBox2.Text = "0";

           }

           catch (DivideByZeroException divByZero)

           {

               textBox3.Text = "На ноль делить нельзя!";

           }

           catch (SquareRootLessZero SqrtLessZero)

           {

               textBox3.Text = "Число меньше нуля!";

           }

               

           catch (System.Exception exc)

           {

               MessageBox.Show(exc.ToString(), "Error", MessageBoxButtons.RetryCancel, MessageBoxIcon.Error);

           }

       }

       private void radioButton5_CheckedChanged(object sender, EventArgs e)

       {

           if (radioButton5.Checked == true)

           {

               textBox2.Text = "0";

               textBox2.Enabled = false;

           }

           else

           {

               textBox2.Enabled = true;

               textBox2.Text = "0";

           }

       }

       private void checkBox1_CheckedChanged(object sender, EventArgs e)

       {

           if (checkBox1.Checked == true)

               checkBox2.Show();

               //checkBox2.Enabled = true;

           else

               checkBox2.Hide();

               //checkBox2.Enabled = false;

       }

       private void выходToolStripMenuItem_Click(object sender, EventArgs e)

       {

           Application.Exit();

       }

       private void оПрограммеToolStripMenuItem_Click(object sender, EventArgs e)

       {

           AboutBox1 ab = new AboutBox1();

           ab.Show();

       }

   }

}

Скриншот с результатами выполнения программы:


 

А также другие работы, которые могут Вас заинтересовать

33927. Понятие и виды рядов динамики. Требования к рядам динамики 13.07 KB
  Понятие и виды рядов динамики. Требования к рядам динамики. Ряд динамики ряд стат. Ряд динамики характеризуют 2 элемента: показатель времени t и уровни ряда y – числовая характеристика изучаемого явления.
33929. Методы прогнозирования разновидность математических методов прогнозирования, позволяющих построить динамические ряды на перспективу 12.01 KB
  Методы прогнозирования разновидность математических методов прогнозирования позволяющих построить динамические ряды на перспективу. Статистические методы прогнозирования охватывают разработку изучение и применение современных математикостатистических методов прогнозирования на основе объективных данных в том числе непараметрических методов наименьших квадратов с оцениванием точности прогноза адаптивных методов методов авторегрессии и других; развитие теории и практики вероятностностатистического моделирования экспертных методов...
33930. Индексы 13.21 KB
  За базу сравнения могут приниматься плановые показатели если необходимо использовать индексы как показатели выполнения плана По степени охвата элементов явления индексы делят на индивидуальные и общие сводные. Индивидуальные индексы i это индексы которые характеризуют изменение только одного элемента совокупности. Если индексы охватывают только часть явления то их называют групповыми. В зависимости от способа изучения общие индексы могут быть построены или как агрегатные от лат.
33931. Индивидуальные индексы 11.05 KB
  Индивидуальные индексы характеризуют изменения отдельных единиц элементов статистической совокупности.Для определения индекса надо произвести сопоставление не менее двух величин отражающих изменения индексируемого показателя признака. Например при изучении изменения физического объема продукции в качестве индексируемой величины выступают данные об объеме количестве продукции в натуральных измерениях; при изучении изменения цен индексируемой величиной является цена единицы товара и т.
33932. Агрегатные индексы 18.04 KB
  Агрегатные индексы Агрегатный индекс общий индекс полученный путем сопоставления итогов выражающих величину сложного явления в отчетном и базисном периодах при помощи соизмерителей. Веса среднего арифметического и среднего гармонического индексов должны определяться исходя из соблюдения условия этого тождества. При исчислении среднего арифметического индекса объема продукции должно выполняться следующее условие: iFf=q1p0q0p0 В векторной символике средний арифметический индекс объема будет иметь вид: Jq=ip0q0p0q0=HqP0Q0 где Нq вектор...
33933. Индексы Пааше, Ласпейреса, Фишера. Их практическое применение 36.76 KB
  Этот индекс был построен по среднеарифметической формуле без применения какойлибо системы взвешивания. В XIX веке при построении индексов цен в основном по агрегатной или соответствующей ей среднеарифметической формуле статистики начинают использовать систему взвешивания. Более широкое практическое применение находят две другие их формы: в формуле Ласпейреса – средняя арифметическая форма в формуле Пааше – средняя гармоническая которые отражены в табл. Она устанавливает изменение цен при предположении что количества товаров неизменны...
33934. Средние индексы 11.06 KB
  Средние экономические показатели статистические показатели определяемые как средние за несколько лет по ряду экономических объектов или по всей совокупности производителей и потребителей. Следует иметь в виду что средние объемы производства доходы и расходы населения средняя заработная плата определяются как средневзвешенные по всем производственным объектам лицам и семьям работникам потребителям.
33935. Понятие статистической связи, ее виды и формы 14.3 KB
  При функциональной связи определенному значению факторного признака соответствует определенное же значение результативного признака. При статистической связи каждому значению факторного признака Х соответствует множество значений результативного признака Y причем не известно заранее какое именно. Корреляционной является статистическая связь между признаками при которой изменение значений независимой переменной Х приводит к закономерному изменению математического ожидания случайной величины Y....