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

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

Калькулятор


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




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


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


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


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

Ситуация 26. ПРОВЕРЕНО МИНЗДРАВОМ   Станислав Свердлов закончил российско-американский факультет менеджмента Томского государственного университета...

Различия в философии античности, средневековья и Возрождения ♦Венцом античной философии было: Единое Благо, Мировой Ум, Мировая Душа, Космос...

Характерные черты немецкой классической философии 1. Особое понимание роли философии в истории человечества, в развитии мировой культуры. Классические немецкие философы полагали, что философия призвана быть критической совестью культуры, «душой» культуры. 2. Исследовались не только человеческая...

САНИТАРНО-МИКРОБИОЛОГИЧЕСКОЕ ИССЛЕДОВАНИЕ ВОДЫ, ВОЗДУХА И ПОЧВЫ Цель занятия.Ознакомить студентов с основными методами и показателями...

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

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

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