• 计算器-面向对象-工厂


    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    
    namespace Windows_ji_suan_qi
    {
        public partial class Form1 : Form
    
        {
            
            public Form1()
            {
                
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
    
            }
    
            private void textBox1_TextChanged(object sender, EventArgs e)
            {
    
            }
    
            
            private void button3_Click(object sender, EventArgs e)       //输入数字1
            {
                textBox1.Text = textBox1.Text + 1;
            }
    
            private void button4_Click(object sender, EventArgs e)           //输入数字2
            {
                textBox1.Text = textBox1.Text + 2;
            }
    
            private void button5_Click(object sender, EventArgs e)         //输入数字3
            {
                textBox1.Text = textBox1.Text + 3;
            }
    
            private void button6_Click(object sender, EventArgs e)         //输入数字4
            {
                textBox1.Text = textBox1.Text + 4;
            }
    
            private void button7_Click(object sender, EventArgs e)        //输入数字5
            {
                textBox1.Text = textBox1.Text + 5;
            }
    
            private void button8_Click(object sender, EventArgs e)      //输入数字6
            {
                textBox1.Text = textBox1.Text + 6;
            }
    
            private void button11_Click(object sender, EventArgs e)          //输入数字7
            {
                textBox1.Text = textBox1.Text + 7;
            }
    
            private void button10_Click(object sender, EventArgs e)         //输入数字8
            {
                textBox1.Text = textBox1.Text + 8;
            }
    
            private void button9_Click(object sender, EventArgs e)     //输入数字9
            {
                textBox1.Text = textBox1.Text + 9;
            }
    
            private void button1_Click(object sender, EventArgs e)      //输入数字0
            {
                textBox1.Text = textBox1.Text + 0;
            }
    
            private void button2_Click(object sender, EventArgs e)        //输入 点
            {
                textBox1.Text = textBox1.Text + ".";
            }
    
            private void textBox1_TextChanged_1(object sender, EventArgs e)         //设置长度 为16
            {
                textBox1.MaxLength = 16;
            }
    
            private void button14_Click(object sender, EventArgs e)        //清零按钮
            {
                oper.NumberA = 0;
                oper.NumberB = 0;
                textBox1.Text = "";
                textBox1.Focus();
            }
    
            private void button12_Click(object sender, EventArgs e)        //撤销按键
            {
                string temp = null;
                temp = textBox1.Text;
                if (temp.Length < 1)
                    return;
                textBox1.Text = temp.Substring(0, temp.Length - 1);
    
    
            }
    
            private void button13_Click(object sender, EventArgs e)    //按钮+
            {
                oper.NumberA = Convert.ToDouble(textBox1.Text);   //转换变量 并赋值
                textBox1.Text = "";            //置空
                textBox1.Focus();             //聚焦
                oper = OperationFactory.createOperate("+");      //传值 
            }
    
            private void button15_Click(object sender, EventArgs e)//按钮-
            {
                oper.NumberA = Convert.ToDouble(textBox1.Text);
                textBox1.Text = "";
                textBox1.Focus(); 
                oper = OperationFactory.createOperate("-");
            }
            private void button16_Click(object sender, EventArgs e) //按钮*
            {
                oper.NumberA = Convert.ToDouble(textBox1.Text);
                textBox1.Text = "";
                textBox1.Focus(); 
                oper = OperationFactory.createOperate("*");
    
            }
    
            private void button17_Click(object sender, EventArgs e)  //按钮 /
            {
                oper.NumberA = Convert.ToDouble(textBox1.Text);
                textBox1.Text = "";
                textBox1.Focus(); 
                oper = OperationFactory.createOperate("/");
            }
            private void button18_Click(object sender, EventArgs e)  //按钮=
            {
                oper.NumberB = Convert.ToDouble(textBox1.Text);
    
                double result = oper.GetResult();
                textBox1.Text = result.ToString();
            }
    
    
            /**/
            ///<summary>
            ///运算类工厂
            ///</summary>
            Operation oper = new Operation();
            public class OperationFactory
            {
                public static Operation createOperate(string operate)
                {
                    /*
                     只有用了static后才能OperationFactory.createOperate("-");
    
                    不然要先OperationFactory a=new OpertationFactory();
                      a.cerateOperate("-");
                    */
                    Operation oper = null;
                    switch (operate)
                    {
                        case "+":
                            oper = new OperationAdd();
                            break;
                        case "-":
                            oper = new OperationSub();
                            break;
                        case "*":
                            oper = new OperationMul();
                            break;
                        case "/":
                            oper = new OperationDiv();
                            break;
    
                    }
                    return oper;
                }
            }
            /**/
            ///<summary>
            ///运算类
            ///</summary>
            public class Operation
            {
                private static double _numberA = 0;
                private static double _numberB = 0;
                /**/
                ///<summary>
                ///数字A
                ///</summary>
                public  double NumberA
                {
                    get { return _numberA; }
                    set { _numberA = value; }
                }
                ///<summary>
                ///数字B
                ///</summary>
                public  double NumberB
                {
                    get { return _numberB; }
                    set { _numberB = value; }
                }
                ///<summary>
                ///得到运算结果
                ///</summary>
                ///<returns></returns>
                public virtual double GetResult()
                {
                    double result = 0;
                    return result;
                }
            }
    
            ///<summary>
            ///加法类
            ///</summary>
            class OperationAdd : Operation
            {
                public override double GetResult()
                {
                    double result = 0;
                    result = NumberA + NumberB;
                    return result;
                }
    
            }
    
            ///<summary>
            ///减法类
            ///</summary>
            class OperationSub : Operation
            {
                public override double GetResult()
                {
                    double result = 0;
                    result = NumberA - NumberB;
                    return result;
    
                }
    
            }
            ///<summary>
            ///乘法类
            ///</summary>
            class OperationMul : Operation
            {
                public override double GetResult()
                {
                    double result = 0;
                    result = NumberA * NumberB;
                    return result;
                }
            }
            ///<summary>
            ///除法类
            ///</summary>
            class OperationDiv : Operation
            {
                public override double GetResult()
                {
                    double result = 0;
                    if (NumberB == 0)           //判断除数是否为0
                    {
                        MessageBox.Show("输入的除数不能为0,请重新输入!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        
                    }
                    result = NumberA / NumberB;
                    return result;
                }
            }
    
        
    
            private void Form1_FormClosing(object sender, FormClosingEventArgs e) //退出 按钮
            {
                DialogResult aaa = MessageBox.Show("真的要退出吗?", "退出", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
                if (aaa == DialogResult.Cancel)
              
                    e.Cancel = true;
               
            }
    
           
        }
    
        
    }
  • 相关阅读:
    java练习按要求编写Java程序:
    java基础练习编写2个接口
    java基础练习 给定一个正整数m,统计m的位数,分别打印每一位数字,再按照逆序打印出各位数字。
    java泛型(转)
    Java程序设计上机作业1
    java基础练习继承
    java冒泡排序
    java基础作业
    java 加深了解
    java基本代码的解释
  • 原文地址:https://www.cnblogs.com/elves/p/4257568.html
Copyright © 2020-2023  润新知