简易运算(运用策略模式实现)

策略实现代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 简易运算
{
    public interface ODD
    {
        int members(int a, int b);

    }
    class Class2 : ODD
    {

        public int members(int a, int b)
        {
            return a + b;
        }

    }
    class sub : ODD
    {
        public int members(int a, int b)
        {
            return a - b;
        }

    }
    class Mul : ODD
    {
        public int members(int a, int b)
        {
            return a * b;

        }

    }
    class Div : ODD
    {
        public int members(int a, int b)
        {
            return a / b;

        }
    }

    class suanfa
    {
        public int result = 0;
        public int fa = 0;
        public int fb = 0;
        public void math(string TR)
        {
            if (TR == "+")
            {
                Class2 being= new Class2();
                result = being.members(fa, fb);

            }
            if (TR == "-")
            {
                sub Jian = new sub();
              result=  Jian.members(fa, fb);


            }
            if (TR == "*")
            {
                Mul CH = new Mul();
                result = CH.members(fa, fb);

            }
            if (TR == "/")
            {

                Div CF = new Div();
                result = CF.members(fa, fb);

            }

        }
    }
}

  Form代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace 简易运算
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        string path = "E:/";
        public static int count = 0;
        
        public static int right = 0;
        public static int sum;

        public int m = 0;
        public int n = 0;
        private void Form1_Load(object sender, EventArgs e)
        {
            Class1 s = new Class1();
            s.text1();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            StreamWriter l1 = File.AppendText("1.txt");
            l1.WriteLine(text1.Text);
            l1.Close();
            StreamWriter l2 = File.AppendText("2.txt");
            l2.WriteLine(textBox2.Text);
            l2.Close();
            StreamWriter l3 = File.AppendText("3.txt");
            l3.WriteLine(text2.Text);
            l3.Close();
            richTextBox1.Text += text1.Text + textBox2.Text +text2.Text+ "
";
            n++;
            text1.Text = "";
            text2.Text = "";
            textBox2.Text = "";
            savet.Enabled = true;
            opent.Enabled = true;
            text1.Focus();
        }

        private void savet_Click(object sender, EventArgs e)
        {
            SaveFileDialog TxtSaveDialog = new SaveFileDialog();
            TxtSaveDialog.Filter = "RTF文件(*.RTF)|*.RTF";
            if (File.Exists(path))
            {
                this.richTextBox1.SaveFile(path, RichTextBoxStreamType.RichText);
                MessageBox.Show("保存成功", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                this.richTextBox1.Clear();
                savet.Enabled = false;
            }
            else
            {
                if (TxtSaveDialog.ShowDialog() == DialogResult.OK)
                {

                    this.richTextBox1.SaveFile(TxtSaveDialog.FileName, RichTextBoxStreamType.RichText);
                    MessageBox.Show("保存成功", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    this.richTextBox1.Clear();
                    savet.Enabled = false;
                }
            }
        }

        private void opent_Click(object sender, EventArgs e)
        {
            OpenFileDialog TxTOpenDialog = new OpenFileDialog();
            TxTOpenDialog.Filter = "RTF文件(*.RTF)|*.RTF";
            if (TxTOpenDialog.ShowDialog() == DialogResult.OK)
            {
                path = TxTOpenDialog.FileName;
                this.richTextBox1.LoadFile(TxTOpenDialog.FileName, RichTextBoxStreamType.RichText);
                savet.Enabled = false;
                opent.Enabled = false;
                MessageBox.Show("打开成功", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            int a = Convert.ToInt32(jishi.Text);

            jishi.Text = a.ToString();
            timer1.Enabled = true;
            timer1.Interval = 1000;

           
            string[] l1 = new string[100];
            l1 = File.ReadAllLines("1.txt");
            string[] l2 = new string[100];
            l2 = File.ReadAllLines("2.txt");
            string[] l3 = new string[100];
            l3 = File.ReadAllLines("3.txt");
            Box1.Text = l1[0];
            Box4.Text = l2[0];
            Box2.Text = l3[0];
          
        } 

        private void Box3_KeyDown(object sender, KeyEventArgs e)
        {
            
            //string s = Box4.Text;
            //Pack  operast = new Pack();
            //operast.OP = int.Parse(Box1.Text);
            //operast.Pt = int.Parse(Box2.Text);
            //operast.Oper = Box4.Text;
            suanfa fan = new suanfa();
            string str = textBox2.Text;
            fan.fa = int.Parse(Box1.Text);
            fan.fb = int.Parse(Box2.Text);
            string st = Box4.Text;
            fan.math(st);
            int sum = fan.result;
            //switch (s)
            //{
            //    case "+":
            //        sum = int.Parse(Box1.Text) + int.Parse(Box2.Text);

            //        break;
            //    case "-":
            //        sum = int.Parse(Box1.Text) - int.Parse(Box2.Text);

            //        break;
            //    case "*":
            //        sum = int.Parse(Box1.Text) * int.Parse(Box2.Text);

            //        break;
            //    case "/":
            //        sum = int.Parse(Box1.Text) / int.Parse(Box2.Text);

            //        break;
            //    default:
            //        break;
            //}


            if (e.KeyCode == Keys.Enter)
            {
                if (sum.ToString() == Box3.Text)
                {
                    MessageBox.Show("回答正确哦!");
                    count++;
                    right++;
                }
                else
                {
                    MessageBox.Show("回答错误哦!");
                    count++;
                }
                m++;
                if (m < n)
                {
                    Box3.Clear();
                    string[] ll = new string[100];
                    ll = File.ReadAllLines("1.txt");
                    Box1.Text = ll[m];
                    string[] l2 = new string[100];
                    l2 = File.ReadAllLines("2.txt");
                    Box4.Text = l2[m];
                    string[] l3 = new string[100];
                    l3 = File.ReadAllLines("3.txt");
                    Box2.Text = l3[m];
                }
                else
                {
                    jishi.Enabled = false;
                    Form2 frm = new Form2();
                    frm.ShowDialog();
                }
            }
        }


        private void timer1_Tick(object sender, EventArgs e)
        {
            //t = t + 1;
            //jishi.Text = t.ToString();
            if(Convert.ToInt32(jishi.Text)<=0)
            {
                timer1.Enabled = false;
                MessageBox.Show("时间到");
            }
            int a = Convert.ToInt32(jishi.Text);
            a = a - 1;
            jishi.Text = a.ToString();

        }
       
    }
}

  测试截图:

  总结:运用策越模式 感觉到可使算法具有灵活性,实现一个功能 原来有这么多的途径、、

原文地址:https://www.cnblogs.com/harlem/p/5014066.html