首页 > 技术文章 > 封装,策略模式,Asp换脸

lizanqirxx 2015-11-26 13:40 原文

1.简单封装

1》计算类

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

namespace 计算
{
    class operater1
    {
        private int x;
        private int y;
        private string opers;
        private int answer;
        public int X
        {
            set
            {
                x = value;
            }
        }
        public int Y
        {
            set
            {
                y = value;
            }
        }
        public string Opers
        {
            set
            {
                opers = value;
            }
        }
        public int Answer
        {
            get
            {
                return answer;
            }
        }
        public void operation()
        {
            switch (opers)
            {
                case "+":
                    answer = x + y;
                    break;
                case "-":
                    if (x > y)
                    {
                        answer = x - y;
                    }
                    else
                    {
                        throw new Exception("被减数不能小于减数!");
                       
                    }
                    break;
                case "*":
                    answer = x * y;
                    break;
                case "/":
                    if (y == 0)
                    {
                        throw new Exception("除数不能为零!");
                    }
                    else
                    {
                        answer = x / y;
                    }
                    break;
                    
            }
            
 
        }
    }

}

 2》写入类

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

namespace 计算
{
    class writes
    {
        public void inscribe(string a, string b)
        {

            StreamWriter aaa = new StreamWriter(a, true);
            aaa.WriteLine(b);
            aaa.Close();

        }
        public void cleanup(string c, string d,string e)
        {
            StreamWriter ddd = new StreamWriter(c);
            ddd.WriteLine(" ");
            ddd.Close();    
            StreamWriter aaa = new StreamWriter(d);
            aaa.WriteLine("");
            aaa.Close(); 
            StreamWriter fff = new StreamWriter(e);
            fff.WriteLine("");
            fff.Close();
        }
    }
}

 form1代码

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();
        }

        private void button1_Click(object sender, EventArgs e)//写入
        {
            writes writ = new writes();
            string fnm = @"one";
            string text1=this.textBox1.Text;          
            writ.inscribe(fnm, text1);
            string fnmm = @"tow";
            string text2 = this.textBox2.Text;
            writ.inscribe(fnmm, text2);
            string fnm1 = @"fuhao";
            string text3 = this.comboBox1.Text;
            writ.inscribe(fnm1, text3);
                textBox1.Clear();
                textBox2.Clear();
                                 
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Form2 fam = new Form2();
            fam.ShowDialog();
         
        }

        private void button3_Click(object sender, EventArgs e)//清空题库
        {
            string a = @"tow";     
            string b = @"one";
            string c = @"fuhao";
            writes clean = new writes();
            clean.cleanup(a, b, c);
        }
      
 
        }
    }

 form2代码

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 Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

     
       private int i = 1;
       public static int count;
       public static int right;
        private void timer1_Tick(object sender, EventArgs e)
        {
            try
            {
                int t = int.Parse(textBox5.Text);
                if (t <= 0)
                {
                    timer1.Enabled = false;
                    textBox5.Enabled = false;
                    MessageBox.Show("时间到了!");
                    Form3 fr3 = new Form3();
                    fr3.ShowDialog();
                }
                t = t - 1;
                textBox5.Text = t.ToString();

            }
            catch
            { 
            }

        }
        private void button1_Click(object sender, EventArgs e)//开始
        {
            butt();
            try
            {
                string t = textBox5.Text;
                textBox5.Text = t;
                timer1.Enabled = true;
                timer1.Interval = 1000;
                timer1.Start();
            }
            catch
            { 
            }

           
      
        }
        private void textBox4_KeyDown(object sender, KeyEventArgs e)//后台代码的应用
        {                      
            if (e.KeyCode == Keys.Enter)
            {
               
                operater1 operater = new operater1();
                operater.X = int.Parse(textBox1.Text);
                operater.Y = int.Parse(textBox3.Text);
                operater.Opers = textBox2.Text;
                operater.operation();              
                if (textBox4.Text == operater.Answer.ToString())
                {
                    MessageBox.Show("回答正确!");
                    right++;
                }
                else
                {
                    MessageBox.Show("回答错误!");
                }
                count++;
                textBox4.Clear();
                butt();      
               
              
              
            }
            
            
        }//用户的输入
        private void button2_Click(object sender, EventArgs e)//停止
        {
            textBox4.Enabled=false;

        }
        private void butt()
        {
            string[] line = File.ReadAllLines("one");
            if (i < line.Length)
            {
                textBox1.Text = line[i];
                string[] lines = File.ReadAllLines("tow");
                textBox3.Text = lines[i];
                string[] lin = File.ReadAllLines("fuhao");
                textBox2.Text = lin[i];

            }
            i++;
            if (i == line.Length + 1)
            {
                Form3 foo = new Form3();
                foo.ShowDialog();
            }



        }//读题
        private void button3_Click(object sender, EventArgs e)
        {
            this.Close();
        }//关闭窗体

    }
}

 2.策略模式

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

namespace 计算
{
    interface operater1
    {
    
        int calculate(int a, int b);

    }
    class Add : operater1
    {

        public int calculate(int a, int b)
        {

            return a + b;

        }

    }
    class Sub : operater1
    {
        public int calculate(int a, int b)
        {
            return a - b;
        }
    }
    class Mul : operater1
    {
        public int calculate(int a, int b)
        {
            return a * b;
        }
    }
    class Div : operater1
    {
        public int calculate(int a, int b)
        {
            if (b == 0)
            {
                throw new Exception("除数不能为零!");
            }
            else
            {
                return a / b;
            }
        }
    }
}
    

实现策略

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

namespace 计算
{
    public class Clacuter
    {
        private operater1 oper1;
        public Clacuter(string aSS)
        {
            switch (aSS)
            {
                case "+":
                    oper1 = new Add();
                    break;
                case "-":
                    oper1 = new Sub();
                    break;
                case "*":
                    oper1 = new Mul();
                    break;
                case "/":
                    oper1 = new Div();
                    break;
            }





        }
        public int Calculation(int a,int b)
        {
            return oper1.calculate(a, b);
        }
    }
}

 

2,》写入类

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

namespace 出题
{
    class writes
    {
        public void inscribe(string a, string b)
        {

            StreamWriter aaa = new StreamWriter(a, true);
            aaa.WriteLine(b);
            aaa.Close();

        }
        public void cleanup(string c, string d,string e)
        {
            StreamWriter ddd = new StreamWriter(c);
            ddd.WriteLine(" ");
            ddd.Close();    
            StreamWriter aaa = new StreamWriter(d);
            aaa.WriteLine("");
            aaa.Close(); 
            StreamWriter fff = new StreamWriter(e);
            fff.WriteLine("");
            fff.Close();
        }
    }
}

 3》form2代码

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 Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

     
       private int i = 1;
       public static int count;
       public static int right;
        private void timer1_Tick(object sender, EventArgs e)
        {
            try
            {
                int t = int.Parse(textBox5.Text);
                if (t <= 0)
                {
                    timer1.Enabled = false;
                    textBox5.Enabled = false;
                    MessageBox.Show("时间到了!");
                    Form3 fr3 = new Form3();
                    fr3.ShowDialog();
                }
                t = t - 1;
                textBox5.Text = t.ToString();

            }
            catch
            { 
            }

        }
        private void button1_Click(object sender, EventArgs e)//开始
        {
            butt();
            try
            {
                string t = textBox5.Text;
                textBox5.Text = t;
                timer1.Enabled = true;
                timer1.Interval = 1000;
                timer1.Start();
            }
            catch
            { 
            }

           
      
        }
        private void textBox4_KeyDown(object sender, KeyEventArgs e)//策略模式代码的实现
        {                      
            if (e.KeyCode == Keys.Enter)
            {
                Clacuter clacuter=new Clacuter(textBox2.Text);
                int B = clacuter.Calculation(int.Parse(textBox1.Text), int.Parse(textBox3.Text));
              
                if (textBox4.Text ==B.ToString())
                {
                    MessageBox.Show("回答正确!");
                    right++;
                }
                else
                {
                    MessageBox.Show("回答错误!");
                }
                count++;
                textBox4.Clear();
                butt();      
               
              
              
            }
            
            
        }//用户的输入
        private void button2_Click(object sender, EventArgs e)//停止
        {
            textBox4.Enabled=false;

        }
        private void butt()
        {
            string[] line = File.ReadAllLines("one");
            if (i < line.Length)
            {
                textBox1.Text = line[i];
                string[] lines = File.ReadAllLines("tow");
                textBox3.Text = lines[i];
                string[] lin = File.ReadAllLines("fuhao");
                textBox2.Text = lin[i];

            }
            i++;
            if (i == line.Length + 1)
            {
                Form3 foo = new Form3();
                foo.ShowDialog();
            }



        }//读题
        private void button3_Click(object sender, EventArgs e)
        {
            this.Close();
        }//关闭窗体

    }
}

 

3.Asp换脸

1》后台代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
///operater1 的摘要说明
/// </summary>
interface operater1
{

    int calculate(int a, int b);

}
class Add : operater1
{

    public int calculate(int a, int b)
    {

        return a + b;

    }

}
class Sub : operater1
{
    public int calculate(int a, int b)
    {
        return a - b;
    }
}
class Mul : operater1
{
    public int calculate(int a, int b)
    {
        return a * b;
    }
}
class Div : operater1
{
    public int calculate(int a, int b)
    {
        if (b == 0)
        {
            throw new Exception("除数不能为零!");
        }
        else
        {
            return a / b;
        }
    }
}
 public class Clacuter
    {
        private operater1 oper1;
        public Clacuter(string aSS)
        {
            switch (aSS)
            {
                case "+":
                    oper1 = new Add();
                    break;
                case "-":
                    oper1 = new Sub();
                    break;
                case "*":
                    oper1 = new Mul();
                    break;
                case "/":
                    oper1 = new Div();
                    break;
            }





        }
        public int Calculation(int a,int b)
        {
            return oper1.calculate(a, b);
        }
    }

web代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            chuti();
        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        int a = int.Parse(TextBox1.Text);
        int b = int.Parse(TextBox2.Text);
        Clacuter claacuter = new Clacuter(TextBox3.Text);
        string answer = claacuter.Calculation(a, b).ToString();
        if (TextBox4.Text == answer)
        {
            Response.Write("回答正确!");
        }
        else
        {
            Response.Write("回答错误!");
            Response.Write(answer);
        }
    
    }
    protected void Button2_Click(object sender, EventArgs e)
    {
        chuti();
    }
    private void chuti()
    {
        Random random = new Random();
        TextBox1.Text = random.Next(1, 100).ToString();
        TextBox2.Text = random.Next(1, 100).ToString();
        string[] arry = new string[] { "+", "-", "*", "/" };
        TextBox3.Text = arry[random.Next(0, 4)];

    }
}

 

运行图片

 

推荐阅读