C#平均值计算器具体实现

1. 题目及要求

C#平均值计算器具体实现

2. Avg.cs

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

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

C#平均值计算器具体实现

Avg.cs的具体代码如下:

   using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace cs平均值计算器_20181024
{
public class Avg //声明平均数的类
{
private double num1; //声明操作数A
private double num2; //声明操作数B
private double weight1; //声明权重A
private double weight2; //声明权重B //声明四个变量的索引器
public double Num1
{
get
{
return num1;
}
set
{
num1 = value;
}
}
public double Num2
{
get
{
return num2;
}
set
{
num2 = value;
}
}
public double Weight1
{
get
{
return weight1;
}
set
{
weight1 = value;
}
}
public double Weight2
{
get
{
return weight2;
}
set
{
weight2 = value;
}
} //检查输入的字符串是否能够转换为数字
public static bool CheckNum(string s1, string s2, string s3, string s4)
{
double num;
bool flag = true; //声明标志信号flag //四个字符串中若有任何一个无法转换为数字,flag都为假
if (!double.TryParse(s1, out num))
flag = false;
else if (!double.TryParse(s2, out num))
flag = false;
else if (!double.TryParse(s3, out num))
flag = false;
else if (!double.TryParse(s4, out num))
flag = false; return flag; //返回flag的值
}
//只检查两个数字的CheckNum
public static bool CheckNum(string s1, string s2)
{
double num;
bool flag = true; //声明表示信号flag //两个数中的任意一个无法转换为数字,flag都为假
if (!double.TryParse(s1, out num))
flag = false;
else if (!double.TryParse(s2, out num))
flag = false; return flag; //返回flag的值
} //得到结果字符串
public virtual string GetResult()
{
return "两数没有做任何操作";
}
} public class CalAvg:Avg //声明计算算术平均值的类
{
//CalAvg的构造函数
public CalAvg(double num1, double num2)
{
Num1 = num1;
Num2 = num2;
} //重载父方法中的GetResult()方法
public override string GetResult()
{
string result = "两数的算术平均值为:";
double num = (Num1 + Num2) / ;
result += string.Format("{0:f}", num); //将结果变为字符串并保留两位小数
return result;
}
} public class CalWAvg : Avg //声明计算加权平均值的类
{
//CalWAvg的构造函数
public CalWAvg(double num1, double num2, double weight1, double weight2)
{
Num1 = num1;
Num2 = num2;
Weight1 = weight1;
Weight2 = weight2;
} //重载父方法中的GetResult()方法
public override string GetResult()
{
string result = "两数的加权平均值为:";
double num = (Num1 * Weight1 + Num2 * Weight2) / ; //计算两数的加权平均值
result += string.Format("{0:f}", num); //将结果变为字符串并保留两位小数
return result;
}
}
}

3. Form1.cs

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

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

C#平均值计算器具体实现

Form1.cs的代码如下:

  using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; namespace cs平均值计算器_20181024
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.Text = "平均数计算器"; //设置窗口标题
} private void ButtonAvg_Click(object sender, EventArgs e)
{
string n1 = TextBoxNum1.Text; //得到第一个数的字符串
string n2 = TextBoxNum2.Text; //得到第二个数的字符串
if(!Avg.CheckNum(n1,n2)) //若输入的数字不符合规范,发出警告并返回
{
MessageBox.Show("请输入符合规范的数字!", "警告",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
} //创建CalAvg实例对象avg
Avg avg = new CalAvg(Convert.ToDouble(n1), Convert.ToDouble(n2)); LabelResult.Text = avg.GetResult(); //将结果显示到窗口上
} private void ButtonWAvg_Click(object sender, EventArgs e)
{
string n1 = TextBoxNum1.Text; //得到第一个数的字符串
string n2 = TextBoxNum1.Text; //得到第二个数的字符串
string w1 = TextBoxWeight1.Text;//得到第一个权重的字符串
string w2 = TextBoxWeight2.Text;//得到第二个权重的字符串
if(!Avg.CheckNum(n1, n2, w1, w2)) //若输入的数字不符合规范,发出警告并返回
{
MessageBox.Show("请输入符合规范的数字!", "警告",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
} //创建CalWAvg实例对象avg
Avg avg = new CalWAvg(Convert.ToDouble(n1), Convert.ToDouble(n2),
Convert.ToDouble(w1), Convert.ToDouble(w2)); LabelResult.Text = avg.GetResult(); //将结果显示到窗口上
}
}
}

4. 实际效果

C#平均值计算器具体实现

上一篇:说明os,sys模块不同?并列举常用的模块方法


下一篇:String.getBytes()和String.tocharArray(),字节数组和字符数组的区别