C#四則運算器(多態方法實現)


在上一節C#課上,我們學習了用類的繼承的方式來做一個四則運算器,然而老師的代碼在課上演示的效果並不理想,而且沒有使用多態的思想實現,今天我們就來用多態的方式實現四則運算器。

 

1. 題目及要求

  

  

 

2. Arithmetic類的實現

  在實現Arithmetic類之前,我們需要一個類庫,類庫的創建方法如下:

 

  打開VisualStidio,新建--項目--在c#一欄中選中類庫

  

 

  我們將我們的類庫命名為MyClassLibrary1,當然你也可以根據自己的喜好命名

 

  進入類庫后,將c#文件重命名為Airthmetic,並開始編寫代碼

  

 

  Aeithmetic.cs具體代碼如下:

 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. 連接到類庫  

  首先,我們創建一個c#窗口程序

  

 

  然后,我們需要將剛才創建的類庫引用到這個項目中去(直接在項目里面新建類的就不需要)

 

  對你的項目右鍵--添加--引用

  

 

  然后點擊 瀏覽,在生成的路徑里找到你的類庫並添加

  

 

  之后我們再在代碼里加入using MyClassLibrary1;便可以正常使用類庫了

 

 

  當然,如果你嫌創建和引用類庫過於麻煩,你也可以像java一樣直接在項目里新建類,這里只是提供一下類庫的創建和連接!

 

 

1. 窗體應用程序的具體實現

接下來,讓我們回到窗體應用程序的實現中來,在創建了窗體應用程序后,右手邊會出現一個可視化界面,將要用的控件拖到合適位置並右鍵--屬性對他們的名字和文本進行改變

 

 

這里提供我的界面布局和命名(命名用紅字標出)

然后我們雙擊確定按鈕進入編程界面。

Form1.cs具體代碼如下:

 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 }

 

 

運行結果如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM