• WPF+WEB+WinForm->>表现层共用类


    首先在解决方案里新建一个类库,然后在解决方案里新建三个项目,WPF,WEB,WinForm,但是这三个项目都需要一个计算类进行计算,那么就在新建的类库Calculator里面放一个Calculat.cs类,以便于三个项目共用,调用的时候需要引用一下,下面会有图解。

    在类库引用Calculat.cs:

    引用后:

    共用类Calculat.cs

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 
     6 namespace Calculator
     7 {
     8     public class Calculat
     9     {
    10         public abstract class Calculator    //抽象类 Calculator
    11         {
    12             public abstract double Cal(double a, double b); //抽象方法Cal
    13         }
    14         public class Add : Calculator      //派生类Add继承抽象类Calculator
    15         {
    16             public override double Cal(double a, double b)//并重写了抽象方法Cal
    17             {
    18                 double result = 0;
    19                 result = a + b;
    20                 return result;
    21             }
    22         }
    23         public class Sub : Calculator
    24         {
    25             public override double Cal(double a, double b)
    26             {
    27                 double result = 0;
    28                 result = a - b;
    29                 return result;
    30             }
    31         }
    32         public class Mul : Calculator
    33         {
    34             public override double Cal(double a, double b)
    35             {
    36                 double result = 0;
    37                 result = a * b;
    38                 return result;
    39             }
    40         }
    41         public class Div : Calculator
    42         {
    43             public override double Cal(double a, double b)
    44             {
    45                 double result = 0;
    46                 result = a / b;
    47                 return result;
    48             }
    49         }
    50         public class Context           //上下文
    51         {
    52             private Calculator calculate = null;//实例化一个基类的引用对象
    53             public Context(Calculator _cal)//_cal为派生类的一个对象
    54             {
    55                 this.calculate = _cal;    //把派生类的对象赋给基类的引用对象
    56             }
    57             public double Cal(double a, double b, String symbol)
    58             {
    59                 return this.calculate.Cal(a, b);//返回计算结果
    60             }
    61         }
    62     }
    63 }

    MainWindow.xaml.cs

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Windows;
     6 using System.Windows.Controls;
     7 using System.Windows.Data;
     8 using System.Windows.Documents;
     9 using System.Windows.Input;
    10 using System.Windows.Media;
    11 using System.Windows.Media.Imaging;
    12 using System.Windows.Navigation;
    13 using System.Windows.Shapes;
    14 
    15 namespace WPF
    16 {
    17     /// <summary>
    18     /// MainWindow.xaml 的交互逻辑
    19     /// </summary>
    20     public partial class MainWindow : Window
    21     {
    22         public MainWindow()
    23         {
    24             InitializeComponent();
    25         }
    26         int Count=0;
    27         int Right=0;
    28         public static String AddSymbol = "+";  //加法
    29         public static String SubSymbol = "-";  //减法
    30         public static String MulSymbol = "*";  //乘法
    31         public static String DivSymbol = "/";  //除法
    32         private void textBox3_KeyDown(object sender, KeyEventArgs e)
    33         {
    34             double a = double.Parse(textBox1.Text); //用来存第一个数
    35             string symbol = comboBox1.Text;          //用来存运算符
    36             double b = double.Parse(textBox2.Text); //用来存第二个数
    37             Calculator.Calculat.Context contex = null;  //上下文
    38             if (symbol.Equals(AddSymbol))           //若为加号
    39             {
    40                 contex = new Calculator.Calculat.Context(new Calculator.Calculat.Add());    //加法策略
    41             }
    42             else if (symbol.Equals(SubSymbol))      //如果减号
    43             {
    44                 contex = new Calculator.Calculat.Context(new Calculator.Calculat.Sub());    //减法策略
    45             }
    46             else if (symbol.Equals(MulSymbol))      //若为乘号
    47             {
    48                 contex = new Calculator.Calculat.Context(new Calculator.Calculat.Mul());    //乘法策略
    49             }
    50             else if (symbol.Equals(DivSymbol))      //若为除号
    51             {
    52                 contex = new Calculator.Calculat.Context(new Calculator.Calculat.Div());    //除法策略
    53             }
    54             string answer = contex.Cal(a, b, symbol).ToString();  //用answer来存计算出来的答案,此时已经计算出a,b两个数的运算结果。
    55             if (e.Key == Key.Enter)              //回车操作
    56             {
    57                 string result = textBox1.Text + comboBox1.Text + textBox2.Text;//把运算式子存在result里面
    58                 Count++;  //出题总数加一
    59                 if (textBox3.Text == answer) //如果输入答案与计算出的answer相等
    60                 {
    61                     MessageBox.Show("回答正确!");  //弹出回答正确
    62                     listBox1.Items.Add(result + "=" + textBox3.Text.Trim() + "");//并把运算式子存在listbox里
    63                     Right++; //答对题数加一
    64                 }
    65                 else //如果答错
    66                 {
    67                     MessageBox.Show("答题错误!"); //弹出答题错误
    68                     listBox1.Items.Add(result + "=" + textBox3.Text.Trim() + "×");//同样把运算式子放在listbox
    69                 }
    70                 label2.Content = "正确率:" + Convert.ToString(Right * 1.0 / Count * 100).PadRight(5, ' ').Substring(0, 5) + "%";//统计正确率
    71                 textBox1.Clear();//把文本框清空,进行下一次出题
    72                 textBox2.Clear();
    73                 textBox3.Clear();
    74             }
    75         } 
    76     }
    77 }

    出题答题:

    统计:

    感觉WPF的界面会比WEB、WinForm要美观一些。

  • 相关阅读:
    【NIPS 2018】完整论文下载链接
    【今日CV 视觉论文速览】30 Nov 2018
    【超好玩的在线AI项目】浏览器里玩AI------持续更新
    hdu 4035 Maze 概率DP
    hdu 4089 Activation 概率DP
    hdu 4405 Aeroplane chess 概率DP
    zoj 3329 One Person Game 概率DP
    poj 2096 Collecting Bugs 概率DP
    poj 3744 Scout YYF I
    2013 Multi-University Training Contest 5 Partition
  • 原文地址:https://www.cnblogs.com/yumaster/p/5042664.html
Copyright © 2020-2023  润新知