Лабораторная №5. Создание приложения - калькулятор действительных чисел
Целью лабораторной работы заключается отработка навыков создания оконного приложения, библиотеки классов и их взаимодействие.
Задание:
1. Создать оконное приложение Windows Forms.
2. Разместить в главном окне приложения элементы управления для ввода чисел и отображения результата.
3. Создание библиотеки классов, в этом же проекте, для описания структуры данных чисел и операций с ними.
Краткое руководство к лабораторной работе
Создание оконного приложения уже описано выше, поэтому просто добавим на главное окно приложения необходимые элементы управления. Такие как, Button, TextBox, Label.
Следующий этап - создание библиотеки классов для структур данных и процедур операций с ними. Создадим библиотеку классов в этом же приложении и назовем ее Numbers. Для хранения чисел и операций с ними создадим структуру «число». Программный код получится:
namespace Numbers
{
public struct Number // Структура число
{
public double Value; // Поле для хранения числа
public Number(double value) // Конструктор числа
{
Value = value;
}
public Number(string valueString) // Конструктор получения числа из строки
{
Value = double.Parse(valueString);
}
public override string ToString() // Получение строки из числа
{
return Value.ToString();
}
// Операция сложения двух чисел
public static Number operator +(Number number1, Number number2)
{
return new Number(number1.Value + number2.Value);
}
// Операция вычитания
public static Number operator -(Number number1, Number number2)
{
return new Number(number1.Value - number2.Value);
}
// Операция умножения
public static Number operator *(Number number1, Number number2)
{
return new Number(number1.Value * number2.Value);
}
// Операция деления
public static Number operator /(Number number1, Number number2)
{
return new Number(number1.Value / number2.Value);
}
}
}
Для задания типа операции добавим перечисление «тип операции»:
namespace Numbers
{
// Перечисление - тип операции
public enum OperationType
{
Сложение,
Вычитание,
Умножение,
Деление
}
}
Для организации алгебраических операций создадим класс «операция»:
namespace Numbers
{
// Класс - операция
public class Operation
{
private Number number1; // Число 1
private Number number2; // Число 2
private OperationType oper; // Тип операции
public Number Result; // Результат
// Конструктор
public Operation(string number1str, string number2str, OperationType operType)
{
number1 = new Number (number1str);
number2 = new Number (number2str);
oper = operType;
Result = new Number(0);
}
// Преобразование результата в строку
public override string ToString()
{
return Result.ToString();
}
// Выполнение операции
public string Execute ()
{
switch (oper)
{
case OperationType.Сложение:
Result = number1 + number2;
break;
case OperationType.Вычитание:
Result = number1 - number2;
break;
case OperationType.Умножение:
Result = number1 * number2;
break;
case OperationType.Деление:
Result = number1 / number2;
break;
}
return ToString();
}
}
}
Теперь напишем функции элементов управления главного окна приложения.
namespace Calculator1
{
public partial class Form1 : Form
{
// Обработчик события нажатия на кнопку «+»
private void button1_Click(object sender, EventArgs e)
{
Operation oper = new Operation(textBox1.Text, textBox2.Text,
OperationType.Сложение);
textBox3.Text = oper.Execute();
}
// Обработчик события нажатия на кнопку «-»
private void button2_Click(object sender, EventArgs e)
{
Operation oper = new Operation(textBox1.Text, textBox2.Text,
OperationType.Вычитание);
textBox3.Text = oper.Execute();
}
// Обработчик события нажатия на кнопку «*»
private void button3_Click(object sender, EventArgs e)
{
Operation oper = new Operation(textBox1.Text, textBox2.Text,
OperationType.Умножение);
textBox3.Text = oper.Execute();
}
// Обработчик события нажатия на кнопку «/»
private void button4_Click(object sender, EventArgs e)
{
Operation oper = new Operation(textBox1.Text, textBox2.Text,
OperationType.Деление);
textBox3.Text = oper.Execute();
}
}
}
Таким образом, создано оконное приложение, соответствующее целям и задачам лабораторной работы. Стоит отметить, что в ходе решения было отработана система использования классов, структур, перечислений и пространств имен для упрощения использования итогового программного кода.