95
textBox1,
свойство
Зна
чение
Name
txtO
utput
Font/Size
12
Size
250;
26
Location
10;2
4
TextAlign
Rig
ht
Дизайн нашего приложения готов. Теперь можно приступать к коду. Состоять он
будет из двух классов — public class Calc : System.Windows.Forms.Form —основного, в
котором будет реализовываться
вся обработка нажатия клавиш, и class
mehanizmcalkulyatora, в котором будет находиться вся логика его работы (
рис. 1.44
):
Рис. 1.44. Для просмотра структуры кода удобно сворачивать классы, щелкая на знаке (+)
Далее привожу листинг класса mehanizmcalkulyatora с комментариями:
class mehanizmcalkulyatora
{
///
///Создаем перечисление Deystvie для определения одного из четырех действий
калькулятора
///
public enum Deystvie:int
{
NeopredelDeystvie = 0,
Slojenie = 1,
Vichitanie = 2,
Umnojenie = 3,
Delenie = 4
96
}
///
/// Объявляем и инициализируем переменную,
/// которая будет использоваться для смены знака при нажатии клавиши (+/–)
///
private static double peremennayaMinus = -1;
///
/// Объявляем переменные для работы калькулятора:
/// resultatVichisleniy — переменная для хранения
/// промежуточного результата в механизме калькулятора;
/// resultatOutput — переменная, значение которой будет сниматься с
экрана и выводиться на него;
/// tekusheeDeystvieCalculatora — хранение одного из действий
калькулятора;
/// pervoeChislo — переменная, в которую будет записываться число на
экране
/// до нажатия на одну из четырех кнопок с действием;
/// vtoroeChislo — второе число на экране;
/// dobavlenierazryada — при добавлении следующего разряда эта
переменная примет значение true;
/// ChislosTochkoy — при добавлении десятичного разряда (знака точки)
эта переменная примет значение true
///
private static double resultatVichisleniy;
private static string resultatOutput;
private static Deystvie tekusheeDeystvieCalculatora;
private static double pervoeChislo;
private static double vtoroeChislo;
private static bool dobavlenierazryada;
private static bool ChislosTochkoy;
///
/// В конструкторе класса mehanizmcalkulyatora инициализируем
переменные
/// ChislosTochkoy и dobavlenierazryada — при запуске калькулятора на
экране
/// нет ни разрядности, ни десятичной части
///
public mehanizmcalkulyatora ()
{
ChislosTochkoy = false;
dobavlenierazryada = false;
}
///
97
/// В этом методе переменная resultatOutput изменяется — при вводе
числа ее значение перезаписывается
///
public static string chislonaEkrane (string najatayaKlavisha)
{
resultatOutput = resultatOutput + najatayaKlavisha;
return (resultatOutput);
}
///
/// Метод, в котором определяется peremenDeystviya, — одно значение
перечисления ///Deystvie,
///в зависимости от выбора клавиши +, –, * или /
///
public static void DeystvieCalculatora (Deystvie peremenDeystviya)
{
try
{
if (resultatOutput != "" && !dobavlenierazryada)
{
pervoeChislo = System.Convert.ToDouble
(resultatOutput);
tekusheeDeystvieCalculatora =
peremenDeystviya;
resultatOutput = "";
ChislosTochkoy = false;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
}
}
///
/// Принажатиикнопки +/– числонаэкране — tekusheeChislo умножаетсяна –1,
/// а затем результат снова присваивается переменной resultatOutput
///
public static string ZnakChisla ()
{
double tekusheeChislo;