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

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

Калькулятор

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



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

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

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

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

Методы анализа финансово-хозяйственной деятельности предприятия   Содержанием анализа финансово-хозяйственной деятельности предприятия является глубокое и всестороннее изучение экономической информации о функционировании анализируемого субъекта хозяйствования с целью принятия оптимальных управленческих...

Образование соседних чисел Фрагмент: Программная задача: показать образование числа 4 и числа 3 друг из друга...

Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

Трамадол (Маброн, Плазадол, Трамал, Трамалин) Групповая принадлежность · Наркотический анальгетик со смешанным механизмом действия, агонист опиоидных рецепторов...

Мелоксикам (Мовалис) Групповая принадлежность · Нестероидное противовоспалительное средство, преимущественно селективный обратимый ингибитор циклооксигеназы (ЦОГ-2)...

Менадиона натрия бисульфит (Викасол) Групповая принадлежность •Синтетический аналог витамина K, жирорастворимый, коагулянт...

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