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. CORS跨域与Nginx反向代理跨域优劣对比

    最近写了一些关于前后端分离项目之后,跨域相关方案的基本原理和常见误区的帖子,主要包括CORS和Nginx反向代理.这两种方案项目中都有在用,各有优缺,关于具体使用哪种方案,大家的观点也不大一致,本文主 ...

  2. SGU---101 无向图的欧拉回路

    题目链接: https://cn.vjudge.net/problem/SGU-101 题目大意: 给定你n张骨牌,每张牌左右两端有一个数字,每张牌的左右两端数字可以颠倒,找出一种摆放骨牌的顺序,使得 ...

  3. Oracle-本地连接没问题,远程连接有问题解决方式

    1. 问题 我的环境是oracle11gr2,本地用plsql还是toad连接都没有不论什么问题,而用别的机器远程连接就提示 无监听程序等错误. 2. 原因 oracle安装路径  --- 比如: F ...

  4. UVa 1642 - Magical GCD(数论)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  5. CF600E:Lomsat gelral(线段树合并)

    Description 一棵树有n个结点,每个结点都是一种颜色,每个颜色有一个编号,求树中每个子树的最多的颜色编号的和. Input 第一行一个$n$.第二行$n$个数字是$c[i]$.后面$n-1$ ...

  6. python-一个小爬虫,爬取图片

    import re import urllib.request # 爬取网页 def getHtml(url): page=urllib.request.urlopen(url) html=page. ...

  7. Android学习路线总结,绝对干货(转)

    转自:https://www.cnblogs.com/yishaochu/p/5436094.html 一.前言 不知不觉自己已经做了几年开发了,由记得刚出来工作的时候感觉自己能牛逼,现在回想起来感觉 ...

  8. mongodb的学习-1-NoSQL

    菜鸟教程的学习笔记-http://www.runoob.com/mongodb/nosql.html 关系型数据库遵循ACID规则 事务在英文中是transaction,和现实世界中的交易很类似,它有 ...

  9. regex_match

    原型:bool regex_match(InputSequence[,MatchResults] , Regex[ , Flags]); 当模式匹配整个输入序列成功时,返回的是true,否则返回fal ...

  10. 模糊控制——(3)模糊自适应整定PID控制

    1.原理 这种控制必须精确地确定对象模型,首先将操作人员(专家)长期实践积累的经验知识用控制规则模型化,然后运用推理便可对PID参数实现最佳调整. 自适应模糊PID控制器以误差e和误差变化ec作为输入 ...