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

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

Калькулятор


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; просмотров: 524. Нарушение авторских прав; Мы поможем в написании вашей работы!




Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...


Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...


Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...


Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Меры безопасности при обращении с оружием и боеприпасами 64. Получение (сдача) оружия и боеприпасов для проведения стрельб осуществляется в установленном порядке[1]. 65. Безопасность при проведении стрельб обеспечивается...

Весы настольные циферблатные Весы настольные циферблатные РН-10Ц13 (рис.3.1) выпускаются с наибольшими пределами взвешивания 2...

Хронометражно-табличная методика определения суточного расхода энергии студента Цель: познакомиться с хронометражно-табличным методом опреде­ления суточного расхода энергии...

Что такое пропорции? Это соотношение частей целого между собой. Что может являться частями в образе или в луке...

Растягивание костей и хрящей. Данные способы применимы в случае закрытых зон роста. Врачи-хирурги выяснили...

ФАКТОРЫ, ВЛИЯЮЩИЕ НА ИЗНОС ДЕТАЛЕЙ, И МЕТОДЫ СНИЖЕНИИ СКОРОСТИ ИЗНАШИВАНИЯ Кроме названных причин разрушений и износов, знание которых можно использовать в системе технического обслуживания и ремонта машин для повышения их долговечности, немаловажное значение имеют знания о причинах разрушения деталей в результате старения...

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