C#平均值计算器具体实现
1. 题目及要求

2. Avg.cs
在直接编写窗口程序之前,我们需要创建一个Avg类,我们可以在类库中编辑,也可以像java一样直接在项目中新建类。
有关类库的创建与连接方法,我们在上一次的《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#四则运算器(多态实现方法)》的文章。
页面布局及部分控件命名如下:

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#平均值计算器具体实现的更多相关文章
- python基础篇(三)
PYTHON基础篇(三) 装饰器 A:初识装饰器 B:装饰器的原则 C:装饰器语法糖 D:装饰带参数函数的装饰器 E:装饰器的固定模式 装饰器的进阶 A:装饰器的wraps方法 B:带参数的装饰器 C ...
- Windows计算器使用详解
(1)Backspace:退格,删除当前输入数字中的最后一位 (2)CE:清除,清除显示的数字. (3)C:归零,清除当前的计算. (4)MC:清除存储器中的数值. (5)MR:将存于存储器中的数显示 ...
- casio计算器计算统计数据
http://blog.csdn.net/pipisorry/article/details/50257319 使用casio计算器计算输入数据均值.标准差和相关系数的方法,lz使用casio fx8 ...
- Linux下的计算命令和求和、求平均值、求最值命令梳理
在Linux系统下,经常会有一些计算需求,那么下面就简单梳理下几个常用到的计算命令 (1)bc命令bc命令是一种支持任意精度的交互执行的计算器语言.bash内置了对整数四则运算的支持,但是并不支持浮点 ...
- C语言 · 整数平均值
编写函数,求包含n个元素的整数数组中元素的平均值.要求在函数内部使用指针操纵数组元素,其中n个整数从键盘输入,输出为其平均值. 样例输入: (输入格式说明:5为输入数据的个数,3 4 0 0 2 是以 ...
- 1.C#WinForm基础制作简单计算器
利用c#语言编写简单计算器: 核心知识点: MessageBox.Show(Convert.ToString(comboBox1.SelectedIndex));//下拉序号 MessageBox.S ...
- 自己动手写计算器v1.1
这个改动主要是使用工厂模式替代了简单工厂模式,这样做的好处是如果以后我们要扩充其他运算时,就不用总是去修改工厂类, 这是可以采取工厂模式,主要是将原来简单工厂类的逻辑判断分离出来,将它作为一个借口,与 ...
- 自己动手写计算器v1.0
今天突发奇想,想着看了还几个设计模式了,倒不如写点东西来实践它们.发现计算器这种就比较合适,打算随着设计模式的学习,会对计算器不断的做改进. 包括功能的增加和算法的改进.初学者难免犯错,希望大家不吝指 ...
- 【IOS开发笔记03-视图相关】简单计算器的实现
UIView 经过前几天的快速学习,我们初步了解的IOS开发的一些知识,中间因为拉的太急,忽略了很多基础知识点,这些知识点单独拿出来学习太过枯燥,我们在今后的项目中再逐步补齐,今天我们来学习APP视图 ...
随机推荐
- #002 Emmet完整API
介绍 这里包含了,所有的Emmet API,非常的详细,但是有一点详细过头了,如果只想快速上手,那么推荐<#001 Emmet的API图片> Emmet (前身为 Zen Coding) ...
- 【C#】#102 发送邮件
项目需求:定时的发送邮件,于是学习了如何发送邮件 下面有一个简单的例子.能够实现简单的发送邮件,加上附件可以添加一个属性[Attachment],然后配置上附件的路径 Demo下载 代码总共只有一下这 ...
- [MongoDB]------windos下的安装部署与基础使用
1.安装 首先前往官网进行下载,这里贴个地址https://www.mongodb.com/download-center#community 点击大大的原谅色的DOWNLOAD(msi)按钮进行下载 ...
- 4034. [HAOI2015]树上操作【树链剖分】
Description 有一棵点数为 N 的树,以点 1 为根,且树点有边权.然后有 M 个 操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a . 操作 2 :把某个节点 x 为根的子树中 ...
- orge资源
1. OGRE官网 http://www.ogre3d.org (重要) 2. OGRE WIKI http://www.ogre3d.org/wiki/index.php/Main_Page( ...
- mongodb的学习-3-在Mac上的安装配置
1.使用homebrew安装: brew install mongodb 查看安装好的版本: mongo --version MongoDB shell version v3.6.4 git vers ...
- R函数-时间序列ETS参数说明
alpha\beta\gamma分别代表水平.趋势.季节分量的平滑参数α.β.γ.这三个参数我们希望接近于0,以便于更平滑,即越小越平滑.在乘法模型的情况下,参数需要非常低,否则模型会对噪声太敏感. ...
- SQLserver中取众位数的写法
取众位数:先按个数倒排序,再取第一条SELECT * FROM ( select a.billid,a.DemandVoltage,count(1) as RecordCount, Row_NUMBE ...
- [原创]C/C++语言中,如何在main.c或main.cpp中调用另一个.c文件
C/C++语言中,如何在main.cpp中调用另一个.c文件主要有5种思路: 1.在VS2012 IDE中,将被引用的.c文件后缀名全部修改为.h,然后通过IDE的解决方案资源管理器中鼠标右键单击“头 ...
- PCB设计工程师面试题
网上的一套PCB设计工程师面试题,测下你能不能拿90分? [复制链接] 一.填空 1.PCB上的互连线按类型可分为()和() . 2.引起串扰的两个因素是()和(). 3.EMI ...