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

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

Калькулятор


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




Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...


Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...


Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...


Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Сущность, виды и функции маркетинга персонала Перснал-маркетинг является новым понятием. В мировой практике маркетинга и управления персоналом он выделился в отдельное направление лишь в начале 90-х гг.XX века...

Разработка товарной и ценовой стратегии фирмы на российском рынке хлебопродуктов В начале 1994 г. английская фирма МОНО совместно с бельгийской ПЮРАТОС приняла решение о начале совместного проекта на российском рынке. Эти фирмы ведут деятельность в сопредельных сферах производства хлебопродуктов. МОНО – крупнейший в Великобритании...

ОПРЕДЕЛЕНИЕ ЦЕНТРА ТЯЖЕСТИ ПЛОСКОЙ ФИГУРЫ Сила, с которой тело притягивается к Земле, называется силой тяжести...

Определение трудоемкости работ и затрат машинного времени На основании ведомости объемов работ по объекту и норм времени ГЭСН составляется ведомость подсчёта трудоёмкости, затрат машинного времени, потребности в конструкциях, изделиях и материалах (табл...

Гидравлический расчёт трубопроводов Пример 3.4. Вентиляционная труба d=0,1м (100 мм) имеет длину l=100 м. Определить давление, которое должен развивать вентилятор, если расход воздуха, подаваемый по трубе, . Давление на выходе . Местных сопротивлений по пути не имеется. Температура...

Огоньки» в основной период В основной период смены могут проводиться три вида «огоньков»: «огонек-анализ», тематический «огонек» и «конфликтный» огонек...

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