C# (初入江湖)-写个简单的计算器(对象三要素与变量、数据类型)

C# -写个简单的计算器(对象三要素与变量、数据类型)

效果

在这里插入图片描述

程序分析

  • 需要三个TextBox 文本框,第一个和第二个 作为数字输入框,第三个作为结果显示框(并且设置属性ReadOnly 为 true 不可编辑)

  • 需要一个 Combobox下拉框,编辑下拉选项里面输入 加减乘除 四个符号,并且在程序中初始化默认选中第一项
    在这里插入图片描述

  • 需要一个Button 按钮,添加点击事件,执行运算,并且将结果显示到第三个TextBox框中

  • 修改主窗体名称为 简易计算器(在窗体属性中 修改 Text 属性值即可)
    在这里插入图片描述

  • 鼠标位置显示,需要两个label标签,第一个显示 鼠标位置 文案,第二个显示 鼠标坐标

  • 鼠标位置显示: 选中窗体,在窗体的事件中找到MouseMove事件,双击该事件 自动生成方法
    在这里插入图片描述

直接上代码

namespace 简单计算器
{
    public partial class Form1 : Form
    {
        public Form1()
		{
            InitializeComponent();
            // 设置下拉框默认选中第一项
            comboBox1.SelectedIndex = 0;
        }

        private void button1_Click(object sender, EventArgs e)
		{
            // 获取运算符号
            string f = comboBox1.Text.Trim();
            //获取输入的数字
            int num1 = Convert.ToInt32(textBox1.Text.Trim());
            int num2 = Convert.ToInt32(textBox2.Text.Trim());

            //计算
            switch (f)
            {
                case "+":
                    textBox3.Text = (num1 + num2).ToString();
                    break;
                case "-":
                    textBox3.Text = (num1 - num2).ToString();
                    break;
                case "*":
                    textBox3.Text = (num1 * num2).ToString();
                    break;
                case "/":
                    textBox3.Text = (num1 / num2).ToString();
                    break;
                default:
                    textBox3.Text = "未知数";
                    break;
            }
        }

        private void Form1_MouseMove(object sender, MouseEventArgs e)
		{ 
            // 显示鼠标位置
            this.label3.Text =e.X +" , "+e.Y;
        }
    }
}

程序解析

  • 对象三要素
    • 属性(property)
      • 如:上述案例中的 label3.Text、comboBox1.SelectedIndex等
    • 方法(method)
      • 如:上述中的 Convert.ToInt32()、 xxx.ToString()
    • 事件(event)
      • 如:上述中用到的 Click、MouseMove 等
      • 事件的绑定方式
this.MouseMove+=new System.Windows.Forms.MouseEventHandler(this.Form1_MouseMove);
  • 上述代码中的鼠标事件,winform已经自动帮助我们绑定了,可以在Designer.cs文件中查看
    在这里插入图片描述

变量

  • 程序的基本任务是对数据进行处理,数据则分为 变量(variable)与 常量( literal)
    • 变量的值是可以改变的
    • 上述的 string f、 int num1 这里面的 f、num1 都是变量
  • 变量的命名
    • 不能是c#关键字
    • https://learn.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords
    • 由字母、数字、下划线构成
    • 第一个字符必须是字母或下划线
    • 不要太长,一般不超过 31个字符为宜
    • 变量名不要与库函数名、类名相同
    • 如:name、_name、num 、countNum等,多个单词可用驼峰式命名,如:countNum、totalPage、listPerson等
    • 注:c#是大小写敏感的
  • 常量
    • 常量是不可变的值,在编译时是已知的,在程序的生命周期内不会改变
    • 常量使用 const 修饰符声明
    • 仅 C# 内置类型(不包括 System.Object)可声明为 const。用户定义的类型(包括类、结构和数组)不能为 const
class Calendar1
{
    // 在此示例中,常量 Weeks 始终为 12,即使类本身也无法更改它
    public const int Weeks= 12;
}
class Calendar1
{
    // 初始化常量的表达式可以引用另一个常量
    public const int Weeks = 52;
    public const int Days = 365;
    public const double DaysPerWeek = (double) Days / (double) Weeks;

}

数据类型

在这里插入图片描述

注:每种简单数据类型都有一个关键词

  • int 相当于 System.Int32
  • double 相当于 System.Double
  • bool 相当于 System.Boolean
  • string 相当于 System.String
    -(如果using System则 string相当于String)
namespace 简单计算器
{
    internal static class Program
	{
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
		{
            test();           
        }


        static void test()
		{

            //整型
            byte a = 17;
            int c = 123;
            // 值后面需要加个 L
            long c2 = 323L;
            Console.WriteLine(a);
            Console.WriteLine(c);
            Console.WriteLine(c2);

            //浮点型
            double d = 12.3;
            // 后面加个 m
            decimal de = 2.1m;
            // 值后面需要加个 F
            float f = 3_000.5F;
            Console.WriteLine(d + (double)de);
            Console.WriteLine((decimal)a + de);

            // 布尔型
            bool check = true;
            Console.WriteLine(check ? "Checked" : "Not checked");

            //字符型
            char ch = 'j';
            // 可以直接写 unicode码
            char ch2 = '\u006A';
            Console.WriteLine(ch);
            Console.WriteLine(ch2);

            //枚举
            Console.WriteLine(Season.Winter);

            //结构
            Coords coord=new Coords();
            Console.WriteLine(coord);

            //元组
            (double, int) t = (4.5, 3);
            Console.WriteLine(t.ToString());

            // 类
            Person person = new Person();
            Console.WriteLine(person);
            // 字符串 类型
            String aa = "123";
            Console.WriteLine(aa);
        }
    }

    // 定义枚举
    enum Season
    {
        Spring,
        Summer,
        Autumn,
        Winter
    }

    // 定义结构 
    public struct Coords
    {
        public Coords(double x, double y)
		{
            X = x;
            Y = y;
        }
        public double X { get; }
        public double Y { get; }
        public override string ToString() => $"({X}, {Y})";
    }
}

转义符

  • \uxxxx 1到4位十六进制数所表示的字符
  • \’ 单引号字符
  • \" 双引号字符
  • \\ 反斜杠字符
  • \r 回车
  • \n 换行
  • \t 横行表格化
  • \b 退格

字符串类型

  • 字符串是引用类型,但对字符串常量有特殊处理
  • 字符串前可使用 @,表示不进行转义
    • 如:string url=@“”
 static void test2()
 {
     // 前面加 @ 表示不用转义
     string url = @"C:\Windows\System32";
     Console.WriteLine(url);

     // 默认情况下会转义,需要加转义符
     string a = "C:\\Windows\\System32";
     string b = "C:\\Windows\\System32 \r\n 你好";
     string c = "C:\\Windows\\System32 \"你好\"";
     Console.WriteLine(a);
     Console.WriteLine(b);
     Console.WriteLine(c);
 }

扩展

  • 推断类型(c# 3.0)
    • var a=1+1; 推断是 整数
    • 与javascript不同,其类型是由编译器推断,在编译时就确定了
  • Nullable 类型(c# 3.0)
    • int? a=32; 是否有值, 可以用 if(a.HasValue)来判断是否有值
  • Dynamic(c#4.0) 由DLR支持
    • dynamic x=new Cell();
    • 编译时不检查,运行时才确定,主要用于与COM组件或其他语言交互
1.参照Windows系统提供的计算器功能,制作一个自己的计算器,至少能完成数据的加减乘除的基本功能。 2.控件的焦点以及Tab键的设置和使用 3.多个控件(按钮)事件的共享 4.键盘的事件的应用 创建主体框架:主要是对计算器的外观进行手动的设计,系统自动生成界面的主要窗口生成代码。对于每个按钮的的代码段中,分别添加事件触发的处理代码,在label标签中,显示输入的信息和显示处理后的结果。 其中标签的上面显示的是运算式子,下面是当前输入或者是结果。 数字1-9的按键的事件处理都是在label标签中分别添加相对应的数字字符,把数字当成是字符串处理。对于加减乘除四则运算按键,事件触发后的处理是在label标签中显示相应的四则运算符,是清屏label标签的,按了“=”按键才开始运算并显示结果。 程序使用时是先把整个运算的式子输入到两个计数器中,程序把这一表达式转化成字符串和double数值数组,运行四则运算函数,把字符从数组中读出,根据所选的模式进行相应的运算。 数字0-9的优先级同级,加减同级,乘除、求模同级,由于它们相互之间的优先级有别,因此为了在运算处理当中能够处理表达式当中的不同的优先级的四则运算符时,就要采用数据结构当中处理表达式的方法,对label当中的信息进行处理通过相应的模式运算得到结果。    通常地,计算机组成原理当中介绍的四则运算算法一般如下,在计算器编程当中可以从中获取可行的思想。四则运算算法的一般描述: 加法算法    首先假定两个操作数均为小数(其他情况可以看做这种情况的特殊情况)。 通过界面输入获得两个操作数的值; 若两个数同号,则将两个操作数的整数部分和小数部分分别对应逐位相加,从最低位开始,若此位上的数字大于10,则向前位进1,此位减10; 若两个数字异号,则将负数放在第二个操作数内,正数放在第一个操作数内,然后将两个操作数的整数部分和小数部分分别对应逐位相减,判断结果的正负,若是整数,则要完成进位操作,若是负数则要完成借位操作; 将计算结果保存并输出。 减法算法    首先通过界面输入两个操作数,然后调用令第二个操作数取相反数,调用加法函数就可以实现减法计算。 乘法算法    乘法的算法就是简单的按照一般的乘法计算方法来进行的。考虑一般情况,两个操作数均为小数,从低位到高位,依次用第二个操作数的每一位上的数字乘以第一个操作数,然后将得出的结果调用加法函数相加即得到乘法的最后结果。 除法算法    除法算法也是按照中学学到的除法算法进行。建立如下的除法算法: 输入两个操作数; 若第二个操作数为0,则输出除数不能为0的出错信息; 若第二个操作数不是0,则将第二个操作数乘以适当的倍率使其整数化,第一个操作数也做相应的变化; 从高位到低位,依次寻找每一个位置上的商值(这个值在0到9之间),直到第一个操作数的末尾; 保存并输出结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值