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. 实际效果

  • 相关阅读:
    wp8 入门到精通 测量代码执行时间
    过滤器——Filter
    hisui培训笔记
    监听器——servlet
    easyui导出excel表格和遇到的问题
    Java自定义注解
    Json
    Ajax
    探索Java中new一个对象时发生了什么
    SpringBoot常用注解
  • 原文地址:https://www.cnblogs.com/sunriseblogs/p/9936803.html
Copyright © 2011-2022 走看看