设计思路:

用ASP.net设计,调用策略模式。在第一个数和第二个数的文本框中输入数值,单击录题按钮,数值保存在n1,n2文档中,把要做的题都保存完后,单击开始按钮,开始做题,做完单击判断按钮,进行判断,进入下一题,同时提示回答是否正确。如果在时间内做完题就单击结束按钮,弹出对话框“答题结束” 总计,正确的个数及正确率显示出来。

页面设计代码如下:

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Web;
  5 using System.Web.UI;
  6 using System.Web.UI.WebControls;
  7 using System.IO;
  8
  9 public partial class one : System.Web.UI.Page
 10 {
 11     protected void Page_Load(object sender, EventArgs e)
 12     {
 13
 14     }
 15     public static int Count = 0;//总计的个数
 16     public static int right = 0;//正确的个数
 17     int n = 0;
 18
 19     protected void Button8_Click(object sender, EventArgs e)
 20     {
 21         fh.Text="+";
 22         fh.Visible = true;
 23     }
 24     protected void Button9_Click(object sender, EventArgs e)
 25     {
 26         fh.Text = "-";
 27         fh.Visible = true;
 28     }
 29     protected void Button10_Click(object sender, EventArgs e)
 30     {
 31         fh.Text = "*";
 32         fh.Visible = true;
 33     }
 34     protected void Button11_Click(object sender, EventArgs e)
 35     {
 36         fh.Text = "/";
 37         fh.Visible = true;
 38     }
 39   //以上四个分别是+,-,*,/的单击事件
 40     protected void luti_Click(object sender, EventArgs e)//录题事件
 41     {
 42         StreamWriter n1 = File.AppendText("n1.txt");//第一个数存入第一文档
 43         n1.WriteLine(No1.Text);
 44         n1.Close();
 45         StreamWriter n2 = File.AppendText("n2.txt");//第二个数存入第二个文档
 46         n2.WriteLine(fh.Text);
 47         n2.Close();
 48         StreamWriter n3 = File.AppendText("n3.txt");//结果存入第三个文档
 49         n3.WriteLine(No2.Text);
 50         n3.Close();
 51         No1.Text = "";//清空数一,数二,结果
 52         No2.Text="";
 53         No3.Text="";
 54         Response.Write("录题成功");
 55     }
 56     protected void ready_Click(object sender, EventArgs e)//开始的单击事件
 57     {
 58
 59         string[] n1 = new string[100];
 60         n1 = File.ReadAllLines("n1.txt");//数值一的文档
 61         No1.Text = n1[n];
 62         string[] n2 = new string[100];
 63         n2 = File.ReadAllLines("n2.txt");
 64         fh.Text = n2[n];
 65         string[] n3 = new string[100];
 66         n3 = File.ReadAllLines("n3.txt");
 67         No2.Text = n3[n];
 68         n++;
 69
 70     }
 71     protected void over_Click(object sender, EventArgs e)
 72     {
 73
 74         No3.Enabled = false;
 75        Response.Write("运算结束!");
 76         all.Text = Count.ToString();//题目总数
 77        rt.Text = right.ToString();//正确的个数
 78        rt1.Text = ((right / (double)(Count)) * 100).ToString() + "%";//正确率
 79     }
 80     protected void ifright_Click(object sender, EventArgs e)
 81     {
 82         Class1.mark mark = null;
 83         double a = Convert.ToDouble(No1.Text);//第一个数赋值
 84         double b = Convert.ToDouble(No2.Text);//第二个数赋值
 85         string c = fh.Text;//运算符号
 86         switch (c)
 87         {
 88             case "+":
 89                 mark = new Class1.mark(new Class1.add());//调用策略模式
 90                 break;
 91             case "-":
 92                 mark = new Class1.mark(new Class1.sub());
 93                 break;
 94             case "*":
 95                 mark = new Class1.mark(new Class1.mul());
 96                 break;
 97             case "/":
 98                 mark = new Class1.mark(new Class1.div());
 99                 break;
100
101             default:
102                 break;
103         }
104         string result = mark.Call(a, b,c).ToString();
105         if (No3.Text == result.ToString())
106         {
107             Response.Write("回答正确!下一题请按开始按钮!");
108             right++;
109             Count++;
110         }
111
112         else
113         {
114
115             Response.Write("回答错误!下一题请按开始按钮!");
116             Count++;
117
118         }
119         //清空
120         No3.Style.Clear();
121     }
122 }

策略模式代码:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5
 6 /// <summary>
 7 ///Class1 的摘要说明
 8 /// </summary>
 9 public class Class1
10 {
11
12     //定义一个接口
13         public interface Calculator
14         {
15             double Call(double a, double b);//定义一个方法用于计算
16         }
17           private double a;
18           private double b;//定义变量
19         public class add : Calculator
20         {
21             public double Call(double a, double b)
22             {
23                 double result;
24                 result = a + b;
25                 return result;
26             }
27         }
28         public class sub : Calculator
29         {
30             public double Call(double a, double b)
31             {
32                 double result;
33                 result = a - b;
34                 return result;
35             }
36         }
37         public class mul : Calculator
38         {
39             public double Call(double a, double b)
40             {
41                 double result;
42                 result = a * b;
43                 return result;
44             }
45         }
46         public class div : Calculator
47         {
48             public double Call(double a, double b)
49             {
50                 double result;
51                 result = a / b;
52                 return result;
53             }
54         }
55         public class mark
56         {
57             private Calculator calculate;
58
59             public mark(Calculator calculate)
60             {
61                 this.calculate = calculate;
62             }
63             public double Call(double a, double b, string m)
64             {
65                 return this.calculate.Call(a, b);
66             }
67         }
68     }

运行后的图片:

转载于:https://www.cnblogs.com/xueyanan/p/5059016.html

ASP.net之策略模式相关推荐

  1. 学习笔记 --- 工厂、单体、适配器、策略、观察者、MVC设计模式及ASP.NET MVC开发模式、关闭缓存的方法...

    关于工厂.单体.适配器.策略.观察者没啥好说的, 代码中有说明 //DesignPattern.cs View Code using System; using System.Collections. ...

  2. 研磨设计模式之 策略模式--转

    http://www.uml.org.cn/sjms/201009092.asp 研磨设计模式之 策略模式   2010-09-09 作者:云飞龙行 来源:云飞龙行的blog   先感谢众多朋友的支持 ...

  3. 设计模式:策略模式(Strategy)

    定   义:它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化, 不会影响到使用算法的客户. 示例:商场收银系统,实现正常收费.满300返100.打8折.......等不同收费 ...

  4. 解读设计模式----策略模式(Strategy Pattern)

    一.模式概述      策略模式(Strategy Pattern)在外形上与状态模式很相似,但在意图上有些不同.其意图是使这些算法可以相互替换,并提供一种方法来选择最合适的算法.       在我应 ...

  5. 面试官:策略模式和代理模式有什么区别?

    大家好,我是田哥,昨天一哥们面试被问到代理模式,刚好,我也正在写<MyBatis源码分析:小白系列>专栏中的代理模式. 这里也说明一下,本文是MyBatis源码分析专栏中的一篇文章. 感兴 ...

  6. 【Design pattern】简单工厂过渡策略模式

    把自己当做小菜来跟学<大话设计模式>,跟着故事的思路来走 简单工厂模式:实现一个计算器代码 策略模式:商场打折代码 根据大鸟和小菜的故事,一步步的完善问题的过程!

  7. 设计模式 之美 -- 策略模式

    策略模式作为行为型设计模式中的一种,主要封装相同功能的不同实现算法,用于在用户程序内部灵活切换.对用户来说能够快速替换对应的算法,能够让算法的实现独立于使用的用户. 基本的UML类图如下: 用户使用S ...

  8. 设计模式之策略模式(Strategy)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  9. Java中的策略模式实例教程

    策略模式是一种行为模式.用于某一个具体的项目有多个可供选择的算法策略,客户端在其运行时根据不同需求决定使用某一具体算法策略. 策略模式也被称作政策模式.实现过程为,首先定义不同的算法策略,然后客户端把 ...

最新文章

  1. 两小时入门 Docker
  2. LintCode 1.A+B的问题
  3. 基于阿里云搭建的适合初创企业的轻量级架构--架构总结
  4. LIST OF CITIES FOR POTENTIAL VISIT IN SOUTHERN UK
  5. python打包脚本_py2exe打包python脚本
  6. Tomcat 配置支持APR
  7. 高性能mysql 小查询_高性能MySql进化论(十一):常见查询语句的优化
  8. 携程启动“2021混合办公试验”,梁建章:拥抱疫情之外的在家办公
  9. 第4章 Selenium2-java WebDriver API (三)
  10. POJ 2975 Nim(博弈论)
  11. R语言从初级到精通-张长志-专题视频课程
  12. 推荐FPGA入门书籍
  13. 人工智能之产生式系统(c++实现)
  14. flutter doctor --android-licenses命令之后出现JAVA_HOME错误
  15. 2023年推荐几款开源或免费的web应用防火墙
  16. 下一个风电”黑马“诞生,数字孪生 3D 智慧风电
  17. IDEA中下方git的提交记录上有黄、绿、紫色标记的意思
  18. PTA习题4-11 兔子繁衍问题 (15 分)-好容易入坑
  19. mahout 推荐算法 java_Mahout推荐算法API详解
  20. 为什么要降息--关于双降(转)

热门文章

  1. 网易笔试题——计算机视觉_深度学习方向
  2. 七步带你认识计算机视觉
  3. 输入整型数组和排序标识,对其元素按照升序或降序进行排序(华为OJ系列)
  4. string 与char *的区别
  5. oracle分组聚合查询,Oracle中分组查询group by用法规则解析
  6. MATLAB在温室中的应用,基于MATLAB的日光温室内气温的图形显示方法与流程
  7. php json encode html,php – json_encode不能使用html字符串作为值
  8. 进去springstrap显示无响应_2020年,28寸IPS面板4K显示器合集,推荐几款代表性的...
  9. 在python中、列表中的元素可以是_在Python中存储一个列表的元素,在另一个列表中 – 通过引用?...
  10. mysql %用户域_MySQL运维---用户权限及管理