C#||应用框体设计计算器

简介: C#||应用框体设计计算器

题目:

设计一个简单计算器

思路:

首先在应用框体中设计自己喜欢的计算器格式,接着编辑其中的函数。抽取一个Call函数用来显示从键盘输入的数字,cleanall()函数进行清屏操作,mode()函数进行四则运算,switchmode()函数显示符号,最后将结果输出即可。


示例代码:

using System;
using System.Windows.Forms;
namespace Calculator
{
    public partial class FormMain : Form
    {
        double number1 = 0,number2 = 0,result;
        int inputnumber;
        enum Operator { none,plus,minus,multiplication,division}
        Operator mode = Operator.none;
        bool isequal = false;
        public FormMain()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            inputnumber =4;
            call(inputnumber);
        }
      private void button4_Click(object sender, EventArgs e)
        {
            inputnumber = 1;
            call(inputnumber);
        }
        private void button16_Click(object sender, EventArgs e)
        {
            inputnumber = 9;
            call(inputnumber);
        }
        private void button2_Click(object sender, EventArgs e)
        {
            inputnumber = 5;
            call(inputnumber);
        }
        private void button3_Click(object sender, EventArgs e)
        {
            inputnumber = 6;
            call(inputnumber);
        }
        private void button5_Click(object sender, EventArgs e)
        {
            inputnumber =2;
            call(inputnumber);
        }
        private void button6_Click(object sender, EventArgs e)
        {
            inputnumber =3;
            call(inputnumber);
        }
        private void button7_Click(object sender, EventArgs e)
        {
            inputnumber = 0;
            call(inputnumber);
        }
        private void button12_Click(object sender, EventArgs e)
        {
            mode = Operator.plus;
            switchmode();
        }
        private void button11_Click(object sender, EventArgs e)
        {
            mode = Operator.minus;
            switchmode();
        }
        private void button10_Click(object sender, EventArgs e)
        {
            mode = Operator.multiplication;
            switchmode();
        }
        private void button9_Click(object sender, EventArgs e)
        {
            mode = Operator.division;
            switchmode();
        }
        private void button8_Click(object sender, EventArgs e)
        {
            switch (mode)
            {
                case Operator.plus:
                    result = number1 + number2;
                    break;
                case Operator.minus:
                    result = number1 - number2;
                    break;
                case Operator.multiplication:
                    result = number1 * number2;
                    break;
                case Operator.division:
                    result = number1 / number2;
                    break;
            }
            number1 = 0;
            number2 = 0;
            isequal = true;
            labelbefore.Text = " ";
            labelmode.Text = " ";
       labelout.Text = Convert.ToString(result);
        }
        private void button14_Click(object sender, EventArgs e)
        {
            inputnumber = 8;
            call(inputnumber);
        }
        private void button13_Click(object sender, EventArgs e)
        {
            inputnumber = 7;
            call(inputnumber);
        }
        private void button15_Click(object sender, EventArgs e)
        {
            cleanall();
        }
        public void call(int an)
        {
            if (mode == Operator.none)
            {
                number1 = number1 * 10 + an;
                labelout.Text = Convert.ToString(number1);
            }
            else
            {
                number2 = number2 * 10 + an;
                labelout.Text = Convert.ToString(number2);
            }
        }
        private void labelout_Click(object sender, EventArgs e)
        {
            labelout.Text = Convert.ToString(number1);
        }
        public void cleanall()
        {
            number1 = 0;
            number2 = 0;
            labelout.Text = Convert.ToString(number1);
            labelbefore.Text = " ";
            labelmode.Text = " ";
            isequal = false;
            mode = Operator.none;
        }
        public void switchmode()
        {
            switch (mode)
            {
                case Operator.plus:
                     labelmode.Text = "+";
                     break;
                case Operator.minus:
                    labelmode.Text = "-";
                    break;
                case Operator.multiplication:
                    labelmode.Text = "x";
                    break;
                case Operator.division:
                    labelmode.Text = "/";
                    break;
            }
            if(isequal == true)
            {
                number1 = result;
            }
            labelbefore.Text = Convert.ToString(number1);
            labelout.Text = Convert.ToString(number2);
           
        }
    }
}


测试:

相关文章
|
1月前
|
存储 安全 物联网
C# 在物联网 (IoT) 应用中的应用
本文介绍了C#在物联网(IoT)应用中的应用,涵盖基础概念、优势、常见问题及其解决方法。重点讨论了网络通信、数据处理和安全问题,并提供了相应的代码示例,旨在帮助开发者更好地利用C#进行IoT开发。
52 3
|
1月前
|
编译器 C#
c# - 运算符<<不能应用于long和long类型的操作数
在C#中,左移运算符的第二个操作数必须是 `int`类型,因此需要将 `long`类型的位移计数显式转换为 `int`类型。这种转换需要注意数据丢失和负值处理的问题。通过本文的详细说明和示例代码,相信可以帮助你在实际开发中正确使用左移运算符。
37 3
|
1月前
|
编译器 C#
c# - 运算符<<不能应用于long和long类型的操作数
在C#中,左移运算符的第二个操作数必须是 `int`类型,因此需要将 `long`类型的位移计数显式转换为 `int`类型。这种转换需要注意数据丢失和负值处理的问题。通过本文的详细说明和示例代码,相信可以帮助你在实际开发中正确使用左移运算符。
61 1
|
1月前
|
编译器 C#
c# - 运算符<<不能应用于long和long类型的操作数
在C#中,左移运算符的第二个操作数必须是 `int`类型,因此需要将 `long`类型的位移计数显式转换为 `int`类型。这种转换需要注意数据丢失和负值处理的问题。通过本文的详细说明和示例代码,相信可以帮助你在实际开发中正确使用左移运算符。
17 0
|
3月前
|
设计模式 开发框架 前端开发
MVC 模式在 C# 中的应用
MVC(Model-View-Controller)模式是广泛应用于Web应用程序开发的设计模式,将应用分为模型(存储数据及逻辑)、视图(展示数据给用户)和控制器(处理用户输入并控制模型与视图交互)三部分,有助于管理复杂应用并提高代码可读性和维护性。在C#中,ASP.NET MVC框架常用于构建基于MVC模式的Web应用,通过定义模型、控制器和视图,实现结构清晰且易维护的应用程序。
65 2
|
3月前
|
编译器 C# Android开发
Uno Platform 是一个用于构建跨平台应用程序的强大框架,它允许开发者使用 C# 和 XAML 来创建适用于多个平台的应用
Uno Platform 是一个用于构建跨平台应用程序的强大框架,它允许开发者使用 C# 和 XAML 来创建适用于多个平台的应用
362 8
|
2月前
|
消息中间件 网络协议 安全
C# 一分钟浅谈:WebSocket 协议应用
【10月更文挑战第6天】在过去的一年中,我参与了一个基于 WebSocket 的实时通信系统项目,该项目不仅提升了工作效率,还改善了用户体验。本文将分享在 C# 中应用 WebSocket 协议的经验和心得,包括基础概念、C# 实现示例、常见问题及解决方案等内容,希望能为广大开发者提供参考。
157 0
|
3月前
|
存储 C# 开发者
枚举与结构体的应用:C#中的数据组织艺术
在C#编程中,枚举(`enum`)和结构体(`struct`)是非常重要的数据类型。枚举用于定义命名常量集合,提高代码可读性;结构体则封装相关数据字段,适合小型数据集。本文从基本概念入手,探讨它们的使用技巧、常见问题及解决方案,帮助开发者更好地利用这些特性构建健壮的应用程序。
51 8
|
2月前
|
Web App开发 网络协议 API
基于C#编写一个远程桌面应用
基于C#编写一个远程桌面应用
65 0
|
2月前
|
Java 程序员 C#
【类的应用】C#应用之派生类构造方法给基类构造方法传参赋值
【类的应用】C#应用之派生类构造方法给基类构造方法传参赋值
15 0