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. SQLMap-----初识

    前言 昨天收到一封来自客户网络中心发来的邮件,说是之前的一个项目存在sql注入漏洞,并附上了一张sqlmap检测结果的图片.记得第一次接触sql注入这些关于系统安全的问题还是从老师口中得知,当时也了解 ...

  2. IM——技术方案

    一. 即时通讯技术方案 1. 第三方SDK: 环信, 融云, 网易云信, 腾讯 中小型公司/初创型: 建议使用第三方. 好处: 快, 符合快速开发的需求, 自己和后台人员不需要做什么操作 缺点: 你的 ...

  3. SQLException: Io 异常: Connection refused ERR=12514 ERR=1153异常处理过程

    solr更新索引连接数据库地址时发生的错误,数据库拒绝连接,经过调查是因为solr的data-config.xml 文件中配置数据库连接的地方,不应该配置数据库实例名而应该是数据库server_nam ...

  4. Java并发编程--7.Java内存操作总结

    主内存和工作内存 工作规则 Java内存模型, 定义变量的访问规则, 即将共享变量存储到内存和取出内存的底层细节  所有的变量都存储在主内存中,每条线程有自己的工作内存,工作内存中用到的变量, 是从主 ...

  5. 集合之LinkedList

    一.概述 LinkedList与ArrayList一样实现List接口,只是ArrayList是List接口的大小可变数组的实现,LinkedList是List接口链表的实现.基于链表实现的方式使得L ...

  6. 51 Nod 1107 斜率小于0的连线数量 (转换为归并求逆序数或者直接树状数组,超级详细题解!!!)

    1107 斜率小于0的连线数量 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题   二维平面上N个点之间共有C(n,2)条连线.求这C(n,2)条线中斜率小于0的线 ...

  7. Zookeeper核心原理

    Zookeeper 的核心原理 Zookeeper 的由来 各个节点的数据一致性 怎么保证任务只在一个节点执行 如果orderserver1挂了,其他节点如何发现并接替 存在共享资源,互斥性.安全性 ...

  8. iOS 11 使用方法替换(Method Swizzling),去掉导航栏返回按钮的文字

    方法一:设置BarButtonItem的文本样式为透明颜色,代码如下: [[UIBarButtonItem appearance] setTitleTextAttributes:@{NSForegro ...

  9. JavaSE日常笔记汇总

    1. If和switch的比较 2. continue的注意事项 在for循环中,当执行continue语句时,i++还是会执行,continue语句只代表此次循环结束,i还是会累加,并继续执行下次循 ...

  10. Delphi 实现不规则窗体

    最近为了要兼容XP系统(守旧的市场),又需要做出产品的特效,不得不从头学习一下这门 “聪明的语言” . 开发环境: win10 Delphi 10.2 Version 25.0.26309.314 产 ...