在ASP.NET中实现四则运算,同样使用了类的封装,以及策略模式。
只不过是把封装的类、前台代码以及后台的代码分离开来,但同样是要达到功能的实现。

Calculator.cs

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

 /// <summary>
 ///Calculator 的摘要说明
 /// </summary>
 public abstract class Calculator
 {
     public abstract double Cal(double a, double b);
 }
 public class Add : Calculator      //派生类Add继承抽象类Calculator
 {
     public override double Cal(double a, double b)//并重写了抽象方法Cal
     {
         ;
         result = a + b;
         return result;
     }
 }
 public class Sub : Calculator
 {
     public override double Cal(double a, double b)
     {
         ;
         result = a - b;
         return result;
     }
 }
 public class Mul : Calculator
 {
     public override double Cal(double a, double b)
     {
         ;
         result = a * b;
         return result;
     }
 }
 public class Div : Calculator
 {
     public override double Cal(double a, double b)
     {
         ;
         result = a / b;
         return result;
     }
 }
 public class Context           //上下文
 {
     private Calculator calculate = null;//实例化一个基类的引用对象
     public Context(Calculator _cal)//_cal为派生类的一个对象
     {
         this.calculate = _cal;    //把派生类的对象赋给基类的引用对象
     }
     public double Cal(double a, double b, String symbol)
     {
         return this.calculate.Cal(a, b);//返回计算结果
     }
 }

index.aspx.cs

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

 public partial class index : System.Web.UI.Page
 {
     protected void Page_Load(object sender, EventArgs e)
     {
         //界面加载
     }
     protected void Cal_Click(object sender, EventArgs e)
     {
         string symbol = DropDownList1.SelectedItem.ToString();
         double a = Convert.ToDouble(TextBox1.Text);
         double b = Convert.ToDouble(TextBox2.Text);
         Context contex = null;
         )
         {
             contex = new Context(new Add());    //加法策略
         }
         )
         {
             contex = new Context(new Sub());    //减法策略
         }
         )      //若为乘号
         {
             contex = new Context(new Mul());    //乘法策略
         }
         )      //若为乘号
         {
             contex = new Context(new Div());    //除法策略
         }
         string answer = contex.Cal(a, b, symbol).ToString();  //用answer来存计算出来的答案,此时已经计算出a,b两个数的运算结果。

         string result = TextBox1.Text + DropDownList1.SelectedItem.ToString() + TextBox2.Text;//把运算式子存在result里面
         if (TextBox3.Text == answer)                                  //如果输入答案与计算出的answer相等
         {
             Response.Write("<script>alert('回答正确!')</script>");          //弹出回答正确
             ListBox1.Items.Add(result + "=" + TextBox3.Text.Trim() + "√");//并把运算式子存在listbox里
         }

         else                                                          //如果答错
         {
             Response.Write("<script>alert('答题错误!')</script>");           //弹出答题错误
             ListBox1.Items.Add(result + "=" + TextBox3.Text.Trim() + "×");//同样把运算式子放在listbox
         }
         TextBox1.Text = "";//把文本框清空,进行下一次出题
         TextBox2.Text = "";
         TextBox3.Text = "";
     }
 }

运行测试:

回答正确给出提示!

出题保存到listbox列表:

ASP.NET中,把Calculator.cs放到App_Code文件夹。

总的来说不算难,主要就是初步实现对类的封装,以及策略模式的使用!感受一下:经过老师给我们介绍的设计模式,先是让我们欣赏,发现代码原来可以写的这么漂亮!

ASP.NET四则运算--策略模式的更多相关文章

  1. ASP.NET四则运算--工厂模式

    这次是在ASP.NET上实现四则运算,之前用策略模式实现了,所以这次想着用工厂模式实现一下. Calculator.cs using System; using System.Collections. ...

  2. ASP.net之策略模式

    设计思路: 用ASP.net设计,调用策略模式.在第一个数和第二个数的文本框中输入数值,单击录题按钮,数值保存在n1,n2文档中,把要做的题都保存完后,单击开始按钮,开始做题,做完单击判断按钮,进行判 ...

  3. 封装,策略模式,Asp换脸

    1.简单封装 1>计算类 using System; using System.Collections.Generic; using System.Linq; using System.Text ...

  4. 计算器软件的代码实现 (策略模式+asp.net)

    一 策略模式代码的编写 using System; using System.Collections.Generic; using System.Linq; using System.Web; /// ...

  5. 策略模式,ASP.NET实现

    策略模式,ASP.NET实现 using System; using System.Collections.Generic; using System.Linq; using System.Web; ...

  6. 计算器软件实现系列(五)策略模式+asp.net

    一 策略模式代码的编写 using System; using System.Collections.Generic; using System.Linq; using System.Web; /// ...

  7. asp.net core 集成JWT(二)token的强制失效,基于策略模式细化api权限

    [前言] 上一篇我们介绍了什么是JWT,以及如何在asp.net core api项目中集成JWT权限认证.传送门:https://www.cnblogs.com/7tiny/p/11012035.h ...

  8. ASP.NET MVC 学习笔记-2.Razor语法 ASP.NET MVC 学习笔记-1.ASP.NET MVC 基础 反射的具体应用 策略模式的具体应用 责任链模式的具体应用 ServiceStack.Redis订阅发布服务的调用 C#读取XML文件的基类实现

    ASP.NET MVC 学习笔记-2.Razor语法   1.         表达式 表达式必须跟在“@”符号之后, 2.         代码块 代码块必须位于“@{}”中,并且每行代码必须以“: ...

  9. asp.net—策略模式

    一.什么是策略模式 定义:定义一系列算法,把一个个算法封装成独立类并实现同一个接口,使得它们之间可以相互替换. 二.怎么使用策略模式 首先模拟一个场景:有一个用户想买车.  可以有多种方式买车: (1 ...

随机推荐

  1. Windows7(x64)下Oracle10g安装

    安装环境:Windows7 (64位版本) + Oracle10g 问题描述1:无法启动安装程序,程序提示“程序异常终止.发生内部错误....” 解决过程:按网上说法加6.1版本参数,按xp兼容模式启 ...

  2. ASP.NET输出流至少要有256个字节的数据后Response.Flush方法才会生效

    很多时候我们写的asp.net程序会因为做很多操作,所以会花上一分钟甚至几分钟时间.为了使软件使用者能够耐心的等待程序的执行,我们经常会希望有一个进度条来表示程序执行的状态.或者最起码要显示一个类似: ...

  3. Revit 二次开发 (二) 倾斜的板

    在Revit二次开发过程中,建立一个倾斜的板是可以通过如下方法进行的: // // 摘要: // Creates a slab within the project with the given ho ...

  4. 什么是BI(Business Intelligence)【转】

    谈谈对BI的理解,从BI的定义.基本技术.专业名词.实例应用及扩展等方面进行重新描述,巩固对BI的理解. 一.BI的定义 BI是Business Intelligence的英文缩写,中文解释为商务智能 ...

  5. 如何从innodb的数据字典里恢复表结构

    需要学会使用percona-data-recovery-tool-for-innodb,用这个:sys_parser,参考这篇文章,

  6. ThinkPHP 3.2.3的 R 方法

    R方法是可以调用其他的Controller中的方法, 例如 我想在Mit/DebugController.class.php中调用Foo/DoController.class.php中的share方法 ...

  7. html5 canvas 笔记三(绘制文本和图片)

    绘制文本 fillText(text, x, y [, maxWidth])   在指定的(x,y)位置填充指定的文本,绘制的最大宽度是可选的. strokeText(text, x, y [, ma ...

  8. ALTFP_CONVERT IP使用与仿真

    ALTFP_CONVERT IP使用与仿真   近期项目要使用到整型数据转浮点型数据,将16位的整数转换为单精度浮点数(32bit).本打算自己写逻辑实现的,不过考虑到本身项目时间紧,能力也有限,就没 ...

  9. PL/SQL显示行号和高亮当前行

    PL/SQL Developer 如何显示行号: PL/SQL Developer 高亮当前行: OK!

  10. discuz x2 diy 模块的样式点击不管用,模块的数据、标题都可以编辑

    这个是diy模板的文件忘记添加   <style id="diy_style" type="text/css"></style>   一 ...