zoukankan      html  css  js  c++  java
  • C#平均值计算器具体实现

    1. 题目及要求

    2. Avg.cs

    在直接编写窗口程序之前,我们需要创建一个Avg类,我们可以在类库中编辑,也可以像java一样直接在项目中新建类。

    有关类库的创建与连接方法,我们在上一次的《C#四则运算器(多态方法实现)》中已经详细讲述过,这里就不再赘述,我这里是直接项目中新建类编写的

    Avg.cs的具体代码如下:

      1 using System;
      2 using System.Collections.Generic;
      3 using System.Linq;
      4 using System.Text;
      5 using System.Threading.Tasks;
      6 
      7 namespace cs平均值计算器_20181024
      8 {
      9     public class Avg     //声明平均数的类
     10     {
     11         private double num1;    //声明操作数A
     12         private double num2;    //声明操作数B
     13         private double weight1; //声明权重A
     14         private double weight2; //声明权重B
     15 
     16         //声明四个变量的索引器
     17         public double Num1
     18         {
     19             get
     20             {
     21                 return num1;
     22             }
     23             set
     24             {
     25                 num1 = value;
     26             }
     27         }
     28         public double Num2
     29         {
     30             get
     31             {
     32                 return num2;
     33             }
     34             set
     35             {
     36                 num2 = value;
     37             }
     38         }
     39         public double Weight1
     40         {
     41             get
     42             {
     43                 return weight1;
     44             }
     45             set
     46             {
     47                 weight1 = value;
     48             }
     49         }
     50         public double Weight2
     51         {
     52             get
     53             {
     54                 return weight2;
     55             }
     56             set
     57             {
     58                 weight2 = value;
     59             }
     60         }
     61 
     62         //检查输入的字符串是否能够转换为数字
     63         public static bool CheckNum(string s1, string s2, string s3, string s4)
     64         {
     65             double num;
     66             bool flag = true;   //声明标志信号flag
     67 
     68             //四个字符串中若有任何一个无法转换为数字,flag都为假
     69             if (!double.TryParse(s1, out num))
     70                 flag = false;   
     71             else if (!double.TryParse(s2, out num))
     72                 flag = false;
     73             else if (!double.TryParse(s3, out num))
     74                 flag = false;
     75             else if (!double.TryParse(s4, out num))
     76                 flag = false;
     77 
     78             return flag;    //返回flag的值
     79         }
     80         //只检查两个数字的CheckNum
     81         public static bool CheckNum(string s1, string s2)
     82         {
     83             double num;
     84             bool flag = true;   //声明表示信号flag
     85 
     86             //两个数中的任意一个无法转换为数字,flag都为假
     87             if (!double.TryParse(s1, out num))
     88                 flag = false;
     89             else if (!double.TryParse(s2, out num))
     90                 flag = false;
     91 
     92             return flag;    //返回flag的值
     93         }
     94 
     95         //得到结果字符串
     96         public virtual string GetResult()
     97         {
     98             return "两数没有做任何操作";
     99         }
    100     }
    101 
    102     public class CalAvg:Avg     //声明计算算术平均值的类
    103     {
    104         //CalAvg的构造函数
    105         public CalAvg(double num1, double num2)
    106         {
    107             Num1 = num1;
    108             Num2 = num2;
    109         }
    110 
    111         //重载父方法中的GetResult()方法
    112         public override string GetResult()
    113         {
    114             string result = "两数的算术平均值为:";
    115             double num = (Num1 + Num2) / 2;
    116             result += string.Format("{0:f}", num);  //将结果变为字符串并保留两位小数
    117             return result;
    118         }
    119     }
    120 
    121     public class CalWAvg : Avg  //声明计算加权平均值的类
    122     {
    123         //CalWAvg的构造函数
    124         public CalWAvg(double num1, double num2, double weight1, double weight2)
    125         {
    126             Num1 = num1;
    127             Num2 = num2;
    128             Weight1 = weight1;
    129             Weight2 = weight2;
    130         }
    131 
    132         //重载父方法中的GetResult()方法
    133         public override string GetResult()
    134         {
    135             string result = "两数的加权平均值为:";
    136             double num = (Num1 * Weight1 + Num2 * Weight2) / 2; //计算两数的加权平均值
    137             result += string.Format("{0:f}", num);  //将结果变为字符串并保留两位小数
    138             return result;
    139         }
    140     }
    141 }

    3. Form1.cs

    接下来我们在可视化窗口上拖动控件并编程,关于可视化窗口控件的操作这里也不再详细讲解了,不懂的同学请自行翻阅《C#四则运算器(多态实现方法)》的文章。

    页面布局及部分控件命名如下:

    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 
    11 namespace cs平均值计算器_20181024
    12 {
    13     public partial class Form1 : Form
    14     {
    15         public Form1()
    16         {
    17             InitializeComponent();
    18             this.Text = "平均数计算器";   //设置窗口标题
    19         }
    20 
    21         private void ButtonAvg_Click(object sender, EventArgs e)
    22         {
    23             string n1 = TextBoxNum1.Text;   //得到第一个数的字符串
    24             string n2 = TextBoxNum2.Text;   //得到第二个数的字符串
    25             if(!Avg.CheckNum(n1,n2))    //若输入的数字不符合规范,发出警告并返回
    26             {
    27                 MessageBox.Show("请输入符合规范的数字!", "警告",
    28                     MessageBoxButtons.OK, MessageBoxIcon.Warning);
    29                 return;
    30             }
    31 
    32             //创建CalAvg实例对象avg
    33             Avg avg = new CalAvg(Convert.ToDouble(n1), Convert.ToDouble(n2));
    34 
    35             LabelResult.Text = avg.GetResult(); //将结果显示到窗口上
    36         }
    37 
    38         private void ButtonWAvg_Click(object sender, EventArgs e)
    39         {
    40             string n1 = TextBoxNum1.Text;   //得到第一个数的字符串
    41             string n2 = TextBoxNum1.Text;   //得到第二个数的字符串
    42             string w1 = TextBoxWeight1.Text;//得到第一个权重的字符串
    43             string w2 = TextBoxWeight2.Text;//得到第二个权重的字符串
    44             if(!Avg.CheckNum(n1, n2, w1, w2))   //若输入的数字不符合规范,发出警告并返回
    45             {
    46                 MessageBox.Show("请输入符合规范的数字!", "警告",
    47                     MessageBoxButtons.OK, MessageBoxIcon.Warning);
    48                 return;
    49             }
    50 
    51             //创建CalWAvg实例对象avg
    52             Avg avg = new CalWAvg(Convert.ToDouble(n1), Convert.ToDouble(n2),
    53                 Convert.ToDouble(w1), Convert.ToDouble(w2));
    54 
    55             LabelResult.Text = avg.GetResult(); //将结果显示到窗口上
    56         }
    57     }
    58 }

    4. 实际效果

  • 相关阅读:
    HDU 5835 Danganronpa 贪心
    HDU 5842 Lweb and String 水题
    HDU 5832 A water problem 水题
    Codeforces Beta Round #14 (Div. 2) A. Letter 水题
    Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem K. UTF-8 Decoder 模拟题
    Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem I. Alien Rectangles 数学
    Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem H. Parallel Worlds 计算几何
    Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem F. Turning Grille 暴力
    Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem C. Cargo Transportation 暴力
    Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem G. k-palindrome dp
  • 原文地址:https://www.cnblogs.com/sunriseblogs/p/9936803.html
Copyright © 2011-2022 走看看