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#平均值计算器具体实现的更多相关文章

  1. python基础篇(三)

    PYTHON基础篇(三) 装饰器 A:初识装饰器 B:装饰器的原则 C:装饰器语法糖 D:装饰带参数函数的装饰器 E:装饰器的固定模式 装饰器的进阶 A:装饰器的wraps方法 B:带参数的装饰器 C ...

  2. Windows计算器使用详解

    (1)Backspace:退格,删除当前输入数字中的最后一位 (2)CE:清除,清除显示的数字. (3)C:归零,清除当前的计算. (4)MC:清除存储器中的数值. (5)MR:将存于存储器中的数显示 ...

  3. casio计算器计算统计数据

    http://blog.csdn.net/pipisorry/article/details/50257319 使用casio计算器计算输入数据均值.标准差和相关系数的方法,lz使用casio fx8 ...

  4. Linux下的计算命令和求和、求平均值、求最值命令梳理

    在Linux系统下,经常会有一些计算需求,那么下面就简单梳理下几个常用到的计算命令 (1)bc命令bc命令是一种支持任意精度的交互执行的计算器语言.bash内置了对整数四则运算的支持,但是并不支持浮点 ...

  5. C语言 · 整数平均值

    编写函数,求包含n个元素的整数数组中元素的平均值.要求在函数内部使用指针操纵数组元素,其中n个整数从键盘输入,输出为其平均值. 样例输入: (输入格式说明:5为输入数据的个数,3 4 0 0 2 是以 ...

  6. 1.C#WinForm基础制作简单计算器

    利用c#语言编写简单计算器: 核心知识点: MessageBox.Show(Convert.ToString(comboBox1.SelectedIndex));//下拉序号 MessageBox.S ...

  7. 自己动手写计算器v1.1

    这个改动主要是使用工厂模式替代了简单工厂模式,这样做的好处是如果以后我们要扩充其他运算时,就不用总是去修改工厂类, 这是可以采取工厂模式,主要是将原来简单工厂类的逻辑判断分离出来,将它作为一个借口,与 ...

  8. 自己动手写计算器v1.0

    今天突发奇想,想着看了还几个设计模式了,倒不如写点东西来实践它们.发现计算器这种就比较合适,打算随着设计模式的学习,会对计算器不断的做改进. 包括功能的增加和算法的改进.初学者难免犯错,希望大家不吝指 ...

  9. 【IOS开发笔记03-视图相关】简单计算器的实现

    UIView 经过前几天的快速学习,我们初步了解的IOS开发的一些知识,中间因为拉的太急,忽略了很多基础知识点,这些知识点单独拿出来学习太过枯燥,我们在今后的项目中再逐步补齐,今天我们来学习APP视图 ...

随机推荐

  1. windows下python 正确安装词云包wordcloud的方法

    安装wordcloud的时候果然还是出现了问题,试了网上说的好多办法,最后找到了一种成功率高的,可以优先尝试一下 下载.whl文件http://www.lfd.uci.edu/~gohlke/pyth ...

  2. [MongoDB]------windos下的安装部署与基础使用

    1.安装 首先前往官网进行下载,这里贴个地址https://www.mongodb.com/download-center#community 点击大大的原谅色的DOWNLOAD(msi)按钮进行下载 ...

  3. Sequelize-nodejs-5-Querying

    Querying查询 Attributes To select only some attributes, you can use the attributes option. Most often, ...

  4. SSM框架之RestFul示例

    演示环境:maven+Spring+SpringMVC+MyBatis Plus或MyBatis都行+JDK8 JDK7我想应该没有问题,原因是用的基本都是JDK6或者JDK7的相关特性. 当然了,J ...

  5. unittest框架官方翻译:中文版

    指数 模块 | 下一个 | 上一个 | Python » 英语 法国 日本 朝鲜的   开发(3.8) 3.7.3rc1 3.6 3.5 2.7  文档 » Python标准库 » 开发工具 » | ...

  6. javascript---我对闭包的理解

    一.闭包       闭包是一种特殊的对象.它由两部分构成:函数,以及创建该函数的环境.环境由闭包创建时在作用域中的任何局部变量组成. 如何理解这句话:以一个例子说明;(from MDN) funct ...

  7. cleanCode[2]:函数编写的几大规则

    函数编写的几大规则 很难一开始就遵循这些规则,但是可以先想什么就写什么,然后再打磨它. 1.短小 函数的第一规则是短小,第二规则是还要更短小. if.else.while语句等,其中的代码块应该只有一 ...

  8. HTML5基础知识总结(一)

    新增的标签和属性 1.结构标签 article section aside nav header footer hgroup figure address 2.媒体标签 video audio emb ...

  9. Source Insight 创建工程(linux-2.6.22.6内核源码)

    1. 软件设置 安装完Source Insight,需要对其进行设置添加对“.S”汇编文件的支持: 2. 新建linux-2.6.22.6工程 1)选择工程存放的路径: 2)下载linux-2.6.2 ...

  10. 第八天- 基础数据操作补充 集合set 深浅拷贝

    字符串的操作补充: .join() 方法用于将序列(字符串/列表/元组/字典)中的 元素 以指定的字符连接生成一个新的字符串 str = "人生苦短我用python!" # 用于字 ...