C#四则运算器(多态方法实现)
2021-07-02 04:06
标签:src visual 9.png alt radio 标题 位置 改变 文件重命名 在上一节C#课上,我们学习了用类的继承的方式来做一个四则运算器,然而老师的代码在课上演示的效果并不理想,而且没有使用多态的思想实现,今天我们就来用多态的方式实现四则运算器。 在实现Arithmetic类之前,我们需要一个类库,类库的创建方法如下: 打开VisualStidio,新建--项目--在c#一栏中选中类库 我们将我们的类库命名为MyClassLibrary1,当然你也可以根据自己的喜好命名 进入类库后,将c#文件重命名为Airthmetic,并开始编写代码 Aeithmetic.cs具体代码如下: 在编写完代码之后,我们在菜单栏上点击 生成--生成解决方案即可保存类库 生成后的结果如下: 请记住生成的路径名,我们在等下引用此类库时要用到 首先,我们创建一个c#窗口程序 然后,我们需要将刚才创建的类库引用到这个项目中去(直接在项目里面新建类的就不需要) 对你的项目右键--添加--引用 然后点击 浏览,在生成的路径里找到你的类库并添加 之后我们再在代码里加入using MyClassLibrary1;便可以正常使用类库了 当然,如果你嫌创建和引用类库过于麻烦,你也可以像java一样直接在项目里新建类,这里只是提供一下类库的创建和连接! 接下来,让我们回到窗体应用程序的实现中来,在创建了窗体应用程序后,右手边会出现一个可视化界面,将要用的控件拖到合适位置并右键--属性对他们的名字和文本进行改变 这里提供我的界面布局和命名(命名用红字标出) 然后我们双击确定按钮进入编程界面。 Form1.cs具体代码如下: 运行结果如下: C#四则运算器(多态方法实现) 标签:src visual 9.png alt radio 标题 位置 改变 文件重命名 原文地址:https://www.cnblogs.com/sunriseblogs/p/9936791.html1. 题目及要求
2. Arithmetic类的实现
1 using System;
2
3 namespace MyClassLibrary1
4 {
5 public class Arithmetic //声明算术运算类
6 {
7 private double num1;
8 private double num2; //设置两个操作数
9 //声明两个操作数的索引
10 public double Num1
11 {
12 get
13 {
14 return num1;
15 }
16 set
17 {
18 num1 = value;
19 }
20 }
21 public double Num2
22 {
23 get
24 {
25 return num2;
26 }
27 set
28 {
29 num2 = value;
30 }
31 }
32 //声明Airthmetic类的计算值方法
33 public virtual string GetResult()
34 {
35 return "两数没有做任何算术运算";
36 }
37 //检查输入的数据是否符合规范
38 public static bool CheckNum(string s1, string s2)
39 {
40 double num;
41 bool flag; //声明标志变量flag
42 if (!double.TryParse(s1, out num))
43 flag = false; //当第一个数字不合规范时,flag为假
44 else if (!double.TryParse(s2, out num))
45 flag = false; //第二个数字不合规范时,flag为假
46 else flag = true; //当两个数字都符合规范时,flag为真
47 return flag;
48 }
49 }
50
51 public class NumAdd:Arithmetic //声明加法运算类
52 {
53 //重载父类中的计算值方法
54 public override string GetResult()
55 {
56 string result = "两数相加的结果为:";
57 double num = Num1 + Num2; //计算两个数的和
58 result += Convert.ToString(num); //将计算结果转换为字符串
59 return result;
60 }
61 }
62
63 public class NumSub : Arithmetic //声明减法运算类
64 {
65 //重载父类中的计算值方法
66 public override string GetResult()
67 {
68 string result = "两数相减的结果为:";
69 double num = Num1 - Num2; // 计算两个数的差
70 result += Convert.ToString(num); // 将计算结果转换为字符串
71 return result;
72 }
73 }
74
75 public class NumMul : Arithmetic //声明乘法运算类
76 {
77 //重载父类中的计算值方法
78 public override string GetResult()
79 {
80 string result = "两数相乘的结果为:";
81 double num = Num1 * Num2; //计算两个数的积
82 result += Convert.ToString(num); //将计算结果转换为字符串
83 return result;
84 }
85 }
86
87 public class NumDiv : Arithmetic //声明除法运算类
88 {
89 //重载父类中的计算值方法
90 public override string GetResult()
91 {
92 string result = "两个数相除的结果为:";
93 double num = Num1 / Num2; //计算两个数的商
94 result += Convert.ToString(num); //将计算结果转换为字符串
95 return result;
96 }
97 }
98 }
1. 连接到类库
1. 窗体应用程序的具体实现
1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Linq;
7 using System.Text;
8 using System.Threading.Tasks;
9 using System.Windows.Forms;
10 using MyClassLibrary1;
11
12 namespace cs四则运算器2018_1023
13 {
14 public partial class Form1 : Form
15 {
16 public Form1()
17 {
18 InitializeComponent();
19 this.Text = "四则运算工具"; //声明标题文字
20 }
21
22 private void ButtonSubmit_Click(object sender, EventArgs e)
23 {
24 string a = textBoxNum1.Text; //获取操作数A的字符串
25 string b = textBoxNum2.Text; //获取操作数B的字符串
26 if (!Arithmetic.CheckNum(a, b)) //当数字不符合规范时,打印警告信息并退出
27 {
28 MessageBox.Show("请输入符合规范的数字!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
29 return;
30 }
31
32
33 Arithmetic ari = new Arithmetic(); //声明一个Arithmetic类实例。
34
35 //根据单选控件选中的值来决定使用哪一个子类来初始化
36 if (RadioAdd.Checked)
37 ari = new NumAdd();
38 if (RadioSub.Checked)
39 ari = new NumSub();
40 if (RadioMul.Checked)
41 ari = new NumMul();
42 if (RadioDiv.Checked)
43 ari = new NumDiv();
44
45 ari.Num1 = Convert.ToDouble(a);
46 ari.Num2 = Convert.ToDouble(b); //将两个操作数赋值给实例ari
47 LabelResult.Text = ari.GetResult(); //将结果转换为字符串
48 }
49 }
50 }