ASP.net之策略模式
设计思路:
用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之策略模式相关推荐
- 学习笔记 --- 工厂、单体、适配器、策略、观察者、MVC设计模式及ASP.NET MVC开发模式、关闭缓存的方法...
关于工厂.单体.适配器.策略.观察者没啥好说的, 代码中有说明 //DesignPattern.cs View Code using System; using System.Collections. ...
- 研磨设计模式之 策略模式--转
http://www.uml.org.cn/sjms/201009092.asp 研磨设计模式之 策略模式 2010-09-09 作者:云飞龙行 来源:云飞龙行的blog 先感谢众多朋友的支持 ...
- 设计模式:策略模式(Strategy)
定 义:它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化, 不会影响到使用算法的客户. 示例:商场收银系统,实现正常收费.满300返100.打8折.......等不同收费 ...
- 解读设计模式----策略模式(Strategy Pattern)
一.模式概述 策略模式(Strategy Pattern)在外形上与状态模式很相似,但在意图上有些不同.其意图是使这些算法可以相互替换,并提供一种方法来选择最合适的算法. 在我应 ...
- 面试官:策略模式和代理模式有什么区别?
大家好,我是田哥,昨天一哥们面试被问到代理模式,刚好,我也正在写<MyBatis源码分析:小白系列>专栏中的代理模式. 这里也说明一下,本文是MyBatis源码分析专栏中的一篇文章. 感兴 ...
- 【Design pattern】简单工厂过渡策略模式
把自己当做小菜来跟学<大话设计模式>,跟着故事的思路来走 简单工厂模式:实现一个计算器代码 策略模式:商场打折代码 根据大鸟和小菜的故事,一步步的完善问题的过程!
- 设计模式 之美 -- 策略模式
策略模式作为行为型设计模式中的一种,主要封装相同功能的不同实现算法,用于在用户程序内部灵活切换.对用户来说能够快速替换对应的算法,能够让算法的实现独立于使用的用户. 基本的UML类图如下: 用户使用S ...
- 设计模式之策略模式(Strategy)摘录
23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...
- Java中的策略模式实例教程
策略模式是一种行为模式.用于某一个具体的项目有多个可供选择的算法策略,客户端在其运行时根据不同需求决定使用某一具体算法策略. 策略模式也被称作政策模式.实现过程为,首先定义不同的算法策略,然后客户端把 ...
最新文章
- 两小时入门 Docker
- LintCode 1.A+B的问题
- 基于阿里云搭建的适合初创企业的轻量级架构--架构总结
- LIST OF CITIES FOR POTENTIAL VISIT IN SOUTHERN UK
- python打包脚本_py2exe打包python脚本
- Tomcat 配置支持APR
- 高性能mysql 小查询_高性能MySql进化论(十一):常见查询语句的优化
- 携程启动“2021混合办公试验”,梁建章:拥抱疫情之外的在家办公
- 第4章 Selenium2-java WebDriver API (三)
- POJ 2975 Nim(博弈论)
- R语言从初级到精通-张长志-专题视频课程
- 推荐FPGA入门书籍
- 人工智能之产生式系统(c++实现)
- flutter doctor --android-licenses命令之后出现JAVA_HOME错误
- 2023年推荐几款开源或免费的web应用防火墙
- 下一个风电”黑马“诞生,数字孪生 3D 智慧风电
- IDEA中下方git的提交记录上有黄、绿、紫色标记的意思
- PTA习题4-11 兔子繁衍问题 (15 分)-好容易入坑
- mahout 推荐算法 java_Mahout推荐算法API详解
- 为什么要降息--关于双降(转)
热门文章
- 网易笔试题——计算机视觉_深度学习方向
- 七步带你认识计算机视觉
- 输入整型数组和排序标识,对其元素按照升序或降序进行排序(华为OJ系列)
- string 与char *的区别
- oracle分组聚合查询,Oracle中分组查询group by用法规则解析
- MATLAB在温室中的应用,基于MATLAB的日光温室内气温的图形显示方法与流程
- php json encode html,php – json_encode不能使用html字符串作为值
- 进去springstrap显示无响应_2020年,28寸IPS面板4K显示器合集,推荐几款代表性的...
- 在python中、列表中的元素可以是_在Python中存储一个列表的元素,在另一个列表中 – 通过引用?...
- mysql %用户域_MySQL运维---用户权限及管理