Студопедия — Калькулятор
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Калькулятор

1. Создайте новое приложение Windows Forms, сохраните проект.

2. Разместите в верхней части формы компонент label с именем label1 – он будет выполнять функции экрана калькулятора (рис. 1).

Рисунок 1. Форма программы Калькулятор

3. Добавьте в класс формы следующие описания:

private const int bw = 40, bh = 22; // размер кнопки

private const int dx = 5, dy = 5; // расстояние между кнопками

private Button[] btn = new Button[15]; // кнопки

char[] btnText = {'7','8','9','+','4','5','6','-','1','2','3','=','0',',','c'};// текст на кнопках

int[] btnTag = {7,8,9,-3,4,5,6,-4,1,2,3,-2,0,-1,-5};

// кнопку будем идентифицировать по значению свойства Tag

private double ac = 0;// переменная-аккумулятор

private int op = 0; // код операции

private Boolean fd;

//если fd == true, то ждем первую цифру числа (например, после нажатия

// кнопки операции), если fd == false, то ждем следующую цифру числа или

// нажатие кнопки операции.

4. Добавьте в конструктор класса следующие операторы:

fd = true;

// координаты кнопки

int x, y;

// установить размер клиентской области формы

this.ClientSize = new Size(4*bw + 5*dx, 5*bh + 7*dy);

// задать размер и положение индикатора

label1.SetBounds(dx, dy, 4*bw + 3*dx, bh);

label1.Text = "0";

y = label1.Bottom + dy;

// создать кнопки

int k =0; // номер кнопки

for (int i=0; i < 4; i++)

{

x = dx;

for (int j = 0; j < 4; j++)

{

if (!((i == 3) && (j == 0)))

{

// создать и настроить кнопку

btn[k] = new Button();

btn[k].SetBounds(x, y, bw, bh);

btn[k].Tag = btnTag[k];

btn[k].Text = btnText[k].ToString();

// задать функцию обработки события Click

this.btn[k].Click += new System.EventHandler(this.Button_Click);

if (btnTag[k] < 0) // кнопка операции

{

btn[k].BackColor = SystemColors.ControlLight;

}

// поместить кнопку на форму

this.Controls.Add(this.btn[k]);

x = x + bw + dx;

k++;

}

else // кнопка ноль

{

// создать и настроить кнопку

btn[k] = new Button();

btn[k].SetBounds(x, y, bw * 2 + dx, bh);

btn[k].Tag = btnTag[k];

btn[k].Text = btnText[k].ToString();

// задать функцию обработки события Click

this.btn[k].Click += new System.EventHandler(this.Button_Click);

// поместить кнопку на форму

this.Controls.Add(this.btn[k]);

x = x + 2*bw + 2*dx;

k++;

j++;

}

}

y = y + bh + dy;

}

5. Создайте метод, обрабатывающий нажатие кнопок калькулятора.

private void Button_Click(object sender, System.EventArgs e)

{

Button btn = (Button) sender; // нажатая кнопка

if (Convert.ToInt32(btn.Tag) > 0) // кнопки 1..9

{

if (fd) // на индикаторе ноль, т.е. это первая цифра

{

label1.Text = btn.Text;

fd = false;

}

else

label1.Text += btn.Text;

return;

}

if (Convert.ToInt32(btn.Tag) == 0) // кнопка ноль

{

if (fd) label1.Text = btn.Text;

if (label1.Text!= "0")

label1.Text += btn.Text;

return;

}

if (Convert.ToInt32(btn.Tag) == -1) // запятая

{

if (fd)

{

label1.Text = "0,";

fd = false;

}

else

if (label1.Text.IndexOf(",") == -1)

label1.Text += btn.Text;

return;

}

if (Convert.ToInt32(btn.Tag) == -5) // кнопка "с" - очистить

{

ac = 0; // очистить аккумулятор

op = 0;

label1.Text = "0";

fd = true; // снова ждем первую цифру

return;

}

if (Convert.ToInt32(btn.Tag) < -1) // кнопки "+","-","=";

{

double n; // число на индикаторе

n = Convert.ToDouble(label1.Text);

// Нажатие клавиши операции означает, что пользователь ввел операнд.

//Если в аккумуляторе есть число, то выполним операцию. Если это не так,

//запомним операцию, чтобы выполнить ее при следующем нажатии

// клавиши операции.

if (ac!= 0)

{

switch (op)

{

case -3: ac += n;

break;

case -4: ac -= n;

break;

case -2: ac = n;

break;

}

label1.Text = ac.ToString("N");

}

else

ac = n;

}

op = Convert.ToInt32(btn.Tag); // запомнить операцию

fd = true; // ждем следующее число

}

}


6. Сохраните и запустите программу, проверьте её работоспособность.

Рисунок 2. Окно программы Калькулятор.




<== предыдущая лекция | следующая лекция ==>
Каждый, кто чувствует, что дошел до такого уровня понимания и ответственности за свою жизнь, может подписать собственное Волеизъявление об утверждении правосубъектности человека. | Просим не оставаться равнодушными!

Дата добавления: 2015-10-01; просмотров: 497. Нарушение авторских прав; Мы поможем в написании вашей работы!



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

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Логические цифровые микросхемы Более сложные элементы цифровой схемотехники (триггеры, мультиплексоры, декодеры и т.д.) не имеют...

Классификация и основные элементы конструкций теплового оборудования Многообразие способов тепловой обработки продуктов предопределяет широкую номенклатуру тепловых аппаратов...

Именные части речи, их общие и отличительные признаки Именные части речи в русском языке — это имя существительное, имя прилагательное, имя числительное, местоимение...

Интуитивное мышление Мышление — это пси­хический процесс, обеспечивающий познание сущности предме­тов и явлений и самого субъекта...

Патристика и схоластика как этап в средневековой философии Основной задачей теологии является толкование Священного писания, доказательство существования Бога и формулировка догматов Церкви...

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

Вопрос 1. Коллективные средства защиты: вентиляция, освещение, защита от шума и вибрации Коллективные средства защиты: вентиляция, освещение, защита от шума и вибрации К коллективным средствам защиты относятся: вентиляция, отопление, освещение, защита от шума и вибрации...

Studopedia.info - Студопедия - 2014-2024 год . (0.012 сек.) русская версия | украинская версия