C#实现简单的计算器功能完整实例

本文实例讲述了C#实现简单的计算器功能。分享给大家供大家参考,具体如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using System.Threading;
using System.Diagnostics;
namespace CALCULATOR
{
  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
    }
    private string _sign;
    private double _first = 10241024;
    private double _second = 10241024;
    private string _number;
    private void button1_Click(object sender, EventArgs e)
    {
      _number += "1";
      this.textBox1.Text += "1";
    }
    private void button2_Click(object sender, EventArgs e)
    {
      _number += "2";
      this.textBox1.Text += "2";
    }
    private void button3_Click(object sender, EventArgs e)
    {
      _number += "3";
      this.textBox1.Text += "3";
    }
    private void button4_Click(object sender, EventArgs e)
    {
      _number += "4";
      this.textBox1.Text += "4";
    }
    private void button8_Click(object sender, EventArgs e)
    {
      _number += "5";
      this.textBox1.Text += "5";
    }
    private void button7_Click(object sender, EventArgs e)
    {
      _number += "6";
      this.textBox1.Text += "6";
    }
    private void button6_Click(object sender, EventArgs e)
    {
      _number += "7";
      this.textBox1.Text += "7";
    }
    private void button5_Click(object sender, EventArgs e)
    {
      _number += "8";
      this.textBox1.Text += "8";
    }
    private void button9_Click(object sender, EventArgs e)
    {
      _number += "9";
      this.textBox1.Text += "9";
    }
    private void button10_Click(object sender, EventArgs e)
    {
      _number += "0";
      this.textBox1.Text += "0";
    }
    private void button16_Click(object sender, EventArgs e)
    {
      //设置加号计算数
      SetNumber(Convert.ToDouble(_number));
      if (_sign == null || _second == 10241024)
      {
        _sign = "+";
        this.textBox1.Text += "+";
        return;
      }
      if (_second != 10241024)
      {
        //开始进行计算
        Computer ComPro = new Computer(_sign, _first, _second);
        this.textBox1.Text = ComPro.Comt(out _first).ToString();
        //验证除数为零的情况
        if (_first == 10241024.10241023)
        {
          this.textBox1.Text = "0";
          MessageBox.Show("除数不能为零!");
          _number = null;
          _first = 10241024;
          _second = 10241024;
          this.textBox1.Text = null;
          _sign = null;
          this.textBox1.Text = null;
        }
        //开始初始化数据
        _sign = "+";
        this.textBox1.Text += "+";
        _second = 10241024;
        _number = null;
        return;
      }
    }
    private void button15_Click(object sender, EventArgs e)
    {
      //设置减号计算数
      SetNumber(Convert.ToDouble(_number));
      if (_sign == null || _second == 10241024)
      {
        _sign = "-";
        this.textBox1.Text += "-";
        return;
      }
      if (_second != 10241024)
      {
        //开始进行计算
        Computer ComPro = new Computer(_sign, _first, _second);
        this.textBox1.Text = ComPro.Comt(out _first).ToString();
        //验证除数为零的情况
        if (_first == 10241024.10241023)
        {
          this.textBox1.Text = "0";
          MessageBox.Show("除数不能为零!");
          _number = null;
          _first = 10241024;
          _second = 10241024;
          this.textBox1.Text = null;
          _sign = null;
          this.textBox1.Text = null;
        }
        //开始初始化数据
        _sign = "-";
        this.textBox1.Text += "-";
        _second = 10241024;
        _number = null;
        return;
      }
    }
    private void button14_Click(object sender, EventArgs e)
    {
      //设置乘号计算数
      SetNumber(Convert.ToDouble(_number));
      if (_sign == null || _second == 10241024)
      {
        _sign = "*";
        this.textBox1.Text += "*";
        return;
      }
      if (_second != 10241024)
      {
        //开始进行计算
        Computer ComPro = new Computer(_sign, _first, _second);
        this.textBox1.Text = ComPro.Comt(out _first).ToString();
        //验证除数为零的情况
        if (_first == 10241024.10241023)
        {
          this.textBox1.Text = "0";
          MessageBox.Show("除数不能为零!");
          _number = null;
          _first = 10241024;
          _second = 10241024;
          this.textBox1.Text = null;
          _sign = null;
          this.textBox1.Text = null;
        }
        //开始初始化数据
        _sign = "*";
        this.textBox1.Text += "*";
        _second = 10241024;
        _number = null;
        return;
      }
    }
      /// <summary>
      /// 设置除号计算数
      /// </summary>
      /// <param name="sender"></param>
      /// <param name="e"></param>
    private void button11_Click(object sender, EventArgs e)
    {
      SetNumber(Convert.ToDouble(_number));
      if (_sign == null || _second == 10241024)
      {
        _sign = "/";
        this.textBox1.Text += "/";
        return;
      }
      if (_second != 10241024)
      {
        //开始进行计算
        Computer ComPro = new Computer(_sign, _first, _second);
        this.textBox1.Text = ComPro.Comt(out _first).ToString();
        //验证除数为零的情况
        if (_first == 10241024.10241023)
        {
          this.textBox1.Text = "0";
          this.textBox1.Text = "除数不能为零!";
          _number = null;
          _first = 10241024;
          _second = 10241024;
          this.textBox1.Text = null;
          _sign = null;
          this.textBox1.Text = null;
        }
        //开始初始化数据
        _sign = "/";
        this.textBox1.Text += "/";
        _second = 10241024;
        _number = null;
        return;
      }
    }
    /// <summary>
    /// 清空输入框
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void button12_Click(object sender, EventArgs e)
    {
      _number = null;
      _first = 10241024;
      _second = 10241024;
      this.textBox1.Text = null;
      _sign = null;
      this.textBox1.Text = null;
    }
    private void button13_Click(object sender, EventArgs e)
    {
      SetNumber(Convert.ToDouble(_number));
      //判断是否设置了_second的值
      if (_second == 10241024)
      {
        _second = Convert.ToDouble(_number);
        _number = null;
      }
      //判断是否设置了_first的值
      if (_first == 10241024)
      {
        _first = Convert.ToDouble(_number);
        _number = null;
      }
      //判断是否有_sign的值
      if (_sign == null)
      {
        _sign = "+";
      }
      //开始进行计算
      Computer ComPro = new Computer(_sign, _first, _second);
      this.textBox1.Text = ComPro.Comt(out _first).ToString();
      //验证除数为零的情况
      if (_first == 10241024.10241023)
      {
        this.textBox1.Text = "0";
        MessageBox.Show("除数不能为零!");
        _number = null;
        _first = 10241024;
        _second = 10241024;
        this.textBox1.Text = null;
        _sign = null;
        this.textBox1.Text = null;
      }
      //开始初始化数据
      _sign = null;
      _second = 10241024;
      _number = null;
    }
    public class Computer
    {
      private string _sign;
      private double _first;
      private double _second;
      public Computer(string str, double first, double second)
      {
        _sign = str;
        _first = first;
        _second = second;
      }
      //选择相应的运算符进行运算
      public double Comt(out double first)
      {
        if (_sign == "+")
        {
          first = _first + _second;
          return _first + _second;
        }
        else if (_sign == "-")
        {
          first = _first - _second;
          return _first - _second;
        }
        else if (_sign == "*")
        {
          first = _first * _second;
          return _first * _second;
        }
        else if (_sign == "/")
        {
          if (_second == 0)
          {
            first = 10241024.10241023;
            return 10241024.10241023;
          }
          else
          {
            first = _first / _second;
            return _first / _second;
          }
        }
        else
        {
          first = 10241024.10241024;
          return 10241024.10241024;
        }
      }
    }
    //设置数字函数
    public void SetNumber(double number)
    {
      if (_first == 10241024 && _number != null)
      {
        _first = Convert.ToDouble(_number);
        _number = null;
      }
      else if (_second == 10241024 && _number != null)
      {
        _second = Convert.ToDouble(_number);
        _number = null;
      }
    }
    private void timer1_Tick(object sender, EventArgs e)
    {
      this.label2.Text = DateTime.Now.ToString();
    }
    private void button24_Click(object sender, EventArgs e)
    {
      if (this.textBox1.Text == " ")
      {
        MessageBox.Show("请输入数据");
        this.textBox1.Text = Convert.ToInt64(textBox1.Text.ToString(), 2).ToString();
      }
      else
      {
        this.textBox1.Text = Convert.ToInt64(textBox1.Text.ToString(), 2).ToString();
      }
    }
    private void button22_Click(object sender, EventArgs e)
    {
      if (this.textBox1.Text == " ")
      {
        MessageBox.Show("请输入数据");
        Int64 int64 = Convert.ToInt64(textBox1.Text.ToString(), 2);
        this.textBox1.Text = Convert.ToString(int64,16);
      }
      else
      {
        Int64 int64 = Convert.ToInt64(textBox1.Text.ToString(), 2);
        this.textBox1.Text = Convert.ToString(int64, 16);
      }
    }
    private void button23_Click(object sender, EventArgs e)
    {
      if (this.textBox1.Text == " ")
      {
        MessageBox.Show("请输入数据");
        Int64 int64 = Convert.ToInt64(textBox1.Text.ToString(), 2);
        this.textBox1.Text = Convert.ToString(int64, 8);
      }
      else
      {
        Int64 int64 = Convert.ToInt64(textBox1.Text.ToString(), 2);
        this.textBox1.Text = Convert.ToString(int64, 8);
      }
    }
    private void button21_Click(object sender, EventArgs e)
    {
      if (this.textBox1.Text == " ")
      {
        MessageBox.Show("请输入数据");
        Int64 int64 = Convert.ToInt64(textBox1.Text);
        this.textBox1.Text = Convert.ToString(int64, 2);
      }
      else
      {
        Int64 int64 = Convert.ToInt64(textBox1.Text);
        this.textBox1.Text = Convert.ToString(int64, 2);
      }
    }
    private void button27_Click(object sender, EventArgs e)
    {
      double buffer1= Convert.ToDouble(textBox1.Text);
        buffer1 = 1 / buffer1;
      this.textBox1.Text = buffer1.ToString();
    }
    private void button17_Click(object sender, EventArgs e)
    {
      _number += ".";
      this.textBox1.Text += ".";
    }
    private void button25_Click(object sender, EventArgs e)
    {
      double buffer1 = Convert.ToDouble(textBox1.Text);
      buffer1 = buffer1 * buffer1;
      this.textBox1.Text = buffer1.ToString();
    }
    private void button26_Click(object sender, EventArgs e)
    {
      if (this.textBox1.Text == " ")
      {
        MessageBox.Show("请输入数据");
        Int64 int64 = Convert.ToInt64(this.textBox1.Text);
        Int64 temp1 = 1;
        while (int64 > 1)
        {
          temp1 = temp1*int64 ;
          int64--;
        }
        this.textBox1.Text = temp1.ToString();
      }
      else
      {
        Int64 int64 = Convert.ToInt64(this.textBox1.Text);
        Int64 temp1 = 1;
        while (int64 > 1)
        {
          temp1 = temp1 * int64;
          int64--;
        }
        this.textBox1.Text = temp1.ToString();
      }
    }
    private void button28_Click(object sender, EventArgs e)
    {
      //Int64 int64 = Convert.ToInt64(this.textBox1.Text);
      //double temp=Math.Log10(int64);
      //this.textBox1.Text = temp.ToString();
      Double temp1, temp2;
      string[] STRarry = new string[2];
      STRarry = this.textBox1.Text.Split('.');
      temp1 = Convert.ToDouble(STRarry[0]);
      temp2 = Convert.ToDouble(STRarry[1]);
      // double temp1 = Convert.ToDouble(this.textBox1.Text);
      temp2 = Math.Log(temp2,temp1 );
      this.textBox1.Text = temp2.ToString();
    }
    private void button18_Click(object sender, EventArgs e)
    {
      double temp1 = Convert.ToDouble(this.textBox1.Text);
      double temp2 = Math.Sin(temp1);
      this.textBox1.Text = temp2.ToString();
    }
    private void button19_Click(object sender, EventArgs e)
    {
      double temp1 = Convert.ToDouble(this.textBox1.Text);
      double temp2 = Math.Cos(temp1);
      this.textBox1.Text = temp2.ToString();
    }
    private void button20_Click(object sender, EventArgs e)
    {
      double temp1 = Convert.ToDouble(this.textBox1.Text);
      double temp2 = Math.Tan(temp1);
      this.textBox1.Text = temp2.ToString();
    }
    private void button33_Click(object sender, EventArgs e)
    {
      Double temp1, temp2;
      string[] STRarry=new string[2];
      STRarry=this.textBox1.Text.Split('.');
      temp1 = Convert.ToDouble(STRarry[0]);
      temp2 = Convert.ToDouble(STRarry[1]);
      // double temp1 = Convert.ToDouble(this.textBox1.Text);
      temp2 = Math.Pow(temp1,temp2);
      this.textBox1.Text = temp2.ToString();
    }
    /// <summary>
    /// 计算e的temp1次幂
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void button31_Click(object sender, EventArgs e)
    {
      double temp1 = Convert.ToDouble(this.textBox1.Text);
      double temp2 = Math.Exp(temp1);
      this.textBox1.Text = temp2.ToString();
    }
    private void button34_Click(object sender, EventArgs e)
    {
       double temp1 = Convert.ToDouble(this.textBox1.Text);
      double temp2 = Math.Sqrt(temp1);
      this.textBox1.Text = temp2.ToString();
    }
    private void button32_Click(object sender, EventArgs e)
    {
      Double temp1, temp2;
      string[] STRarry = new string[2];
      STRarry = this.textBox1.Text.Split('.');
      temp1 = Convert.ToDouble(STRarry[0]);
      temp2 = Convert.ToDouble(STRarry[1]);
      // double temp1 = Convert.ToDouble(this.textBox1.Text);
      temp2 = Math.IEEERemainder(temp1, temp2);
      this.textBox1.Text = temp2.ToString();
    }
    /// <summary>
    /// 圆的面积
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void button30_Click(object sender, EventArgs e)
    {
      double buffer1 = Convert.ToDouble(textBox1.Text);
      buffer1 =3.1415926*buffer1*buffer1;
      this.textBox1.Text = buffer1.ToString();
    }
    /// <summary>
    /// 三角形面积
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void button29_Click(object sender, EventArgs e)
    {
      Double temp1, temp2,temp3,p,area;
      string[] STRarry = new string[3];
      STRarry = this.textBox1.Text.Split('.');
      temp1 = Convert.ToDouble(STRarry[0]);
      temp2 = Convert.ToDouble(STRarry[1]);
      temp3 = Convert.ToDouble(STRarry[2]);
      // double temp1 = Convert.ToDouble(this.textBox1.Text);
      p = (temp1 + temp2 + temp3) / 2;
      area= p * (p - temp1) * (p - temp2) * (p - temp3);
      area = Math.Sqrt(area);
      this.textBox1.Text = area.ToString();
    }
    private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
    {
      string str = e.Link.ToString();
      Process.Start(str);
    }
    private void Form1_Load(object sender, EventArgs e)
    {
    }
  }
}

运行效果:

PS:这里再为大家推荐几款计算工具供大家进一步参考借鉴:

在线一元函数(方程)求解计算工具:
http://tools.jb51.net/jisuanqi/equ_jisuanqi

科学计算器在线使用_高级计算器在线计算:
http://tools.jb51.net/jisuanqi/jsqkexue

在线计算器_标准计算器:
http://tools.jb51.net/jisuanqi/jsq

更多关于C#相关内容感兴趣的读者可查看本站专题:《C#数据结构与算法教程》、《C#程序设计之线程使用技巧总结》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#数组操作技巧总结》及《C#面向对象程序设计入门教程》

希望本文所述对大家C#程序设计有所帮助。

时间: 2017-08-26

C#编写的windows计算器的实例代码

复制代码 代码如下: using System; using System.Drawing; using System.Windows; using System.Windows.Forms; using System.Collections; using System.ComponentModel; using System.Data; namespace comput {     /// <summary>     /// 这是一个计算器的简单实现.     /// </summar

C#实现的简单整数四则运算计算器功能示例

本文实例讲述了C#实现的简单整数四则运算计算器功能.分享给大家供大家参考,具体如下: 运行效果图如下: 具体代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace 计算器 { public pa

C#实现Winform版计算器

本文实例为大家分享Winform版计算器的具体实现方法,供大家参考,具体内容如下 前台页面设计 后台代码实现 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace 计

c#入门之实现简易存款利息计算器示例

本想把练习题做了的结果放上来,不过发现附录是有答案的,就算了吧,自己做了没问题就行了哈.之前提到过,要是有朋友有想法,需要做小工具我可以帮忙实现,不过貌似大家都很忙.SO,自己学完第4章后,决定做一个工具:简易存款利息计算器,可以更好地复习前面学过的知识. 原理介绍为啥叫简易呢,因为现在只能计算整存整取(只有1.2.3.5四种年限哈)的利息,并且没有启用自动转存(俗称利滚利,就是把本年和上年的利息之和,作为下年利息计算时的本金)功能,方便和网上已有的工具对比计算结果,判断自己的程序算出来正不正确

C#日历样式的下拉式计算器实例讲解

本文介绍了如何在Visual Studio中创建用户控件来显示下拉式计算器,弹出效果类似于日历控件. 介绍 如果我们正在做一个类似于库存控制和计费系统的项目,有些部分可能必须手动计算数值.因此,用户就不得不使用计算器得到结果,再填入到输入字段中,或者在工作窗口上单独打开一个计算器窗口.总之,各种不便和麻烦. 这篇文章主要描述的是如何添加下拉式计算器到DataGridView单元格中,如下图: 使用代码 第一步,我们必须先创建一个函数计算器,并且能够使用控件.因此,不妨先创建一个Visual St

C#计算器编写代码

利用C#编写一个计算器.如下图,能够完成基本的四则运算. 当然这个程序甚至还不上Windows附件那个自带的多功能计算器.  不过这个程序的逻辑还是非常值得思考的,首先你要考虑好用户按+ - * / =等运算符号.数字键之后计算器的状态记录问题.  然后要防止多次按某一个键的问题.比如小数点.就不应该让用户在输入一个数的时候键入两次.  最后,还要弄两个数组,一个存放用户在输入的数字,另一个存放用户输入的符号.  制作过程如下,  1.布局如下,同时可以参考<简单实现C#窗体程序判断是否闰年 >

Android计算器编写代码

其实这个安卓计算机,所有的后台思想与<C#计算器编写代码>是一模一样的.Win窗体程序移植到安卓,从C#到Java其实很简单的,因为两者的基本语法都很相像,唯一的难点是安卓的xml布局部分,不像C#窗体能够直接拖.  还是如下图一个能够完成基本四则运算的计算器: 先在res\values\strings.xml设置按钮相应的字体,以免布局文件警告满天飞: <?xml version="1.0" encoding="utf-8"?> <r

Android入门计算器编写代码

这个简易计算器是我按照一本android开发入门书学的,书上的第一个例子就是计算器的编写.计算器的编写主要涉及到按键的布局和按键输入要点. 一个总的Lnearlayout的布局下orientation设置为vertical垂直分布,然后此布局下再设置1给我Edittext的一个文本框4个Lnearlayout子布局(第4个布局里可以嵌套另外3个Lnearlayout的布局来实现按钮排版)这4个子布局在你的界面上肯定是垂直分布的,因为你的总布局设置vertical.第一个子布局放置4个Button

批处理实现计算器功能代码(小结)

一个用bat/批处理做的小计算器 这是我自己用bat/批处理做的小计算器,将后附代码直接复制到记事本里保存为.bat格式就可以使用了. 支持算式,比如输入:12+12/(7-5):但只支持整数计算,不支持小数. 用处不是很大,技术含量也不是很高,但流程控制还是蛮好的.自认为逻辑和抽象思维还是很强的,也无耻地自恋一下~~ 如下: 复制代码 代码如下: @echo off cls :: System Parameter set xpProgName=DosCalculator set xpProgV

JavaScript实现一个简易的计算器实例代码

自己期末复习的时候就一直想要写一个计算器,闲暇的时候也在想具体怎么实现,觉得应该不难,但就是想写.昨天终于可以开始动工,刚开始还以为实现出来需要一个周左右至少两天的时间,想着实现完我就可以先回家两天了.但没想到整个实现过程算比较顺利吧,昨天用了大概六个小时完成了从设计到具体实现. 有大概一个月没怎么写代码了,整个大脑都不适应,反应也慢,一些基本的东西都有点模糊不清了.可能是原来就没有太理解,再加上没有其余练习,导致效率有些低. 正文 html代码: <div class="errorHin

javascript实现简易计算器的代码

今天闲来无聊,想写点什么,突然想到用javascript写一个计算器.程序还存在很多的Bug,先在这里记录一下,以后慢慢更正. 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.or

C#拼图游戏编写代码(2)

前言:在C#拼图游戏编写代码程序设计 之 C#实现<拼图游戏>(上),上传了各模块代码,而在本文中将详细剖析原理,使读者更容易理解并学习,程序有诸多问题,欢迎指出,共同学习成长! 正文: 拼图是一个非常经典的游戏,基本每个人都知道他的玩法,他的开始,运行,结束.那么,当我们想要做拼图的时候如何入手呢?答案是:从现实出发,去描述需求(尽量描述为文档),当我们拥有了全面的需求,就能够提供可靠的策略,从而在代码中实现,最终成为作品! (一)需求: (这个需求书写较为潦草,为广大小白定制,按照最最最普

PHP房贷计算器实例代码,等额本息,等额本金

实例如下: debx(); function debx() { $dkm = 240; //贷款月数,20年就是240个月 $dkTotal = 10000; //贷款总额 $dknl = 0.0515; //贷款年利率 $emTotal = $dkTotal * $dknl / 12 * pow(1 + $dknl / 12, $dkm) / (pow(1 + $dknl / 12, $dkm) - 1); //每月还款金额 $lxTotal = 0; //总利息 for ($i = 0; $

微信小程序 简易计算器实现代码实例

这篇文章主要介绍了微信小程序 简易计算器实现代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 只能进行简单的运算 效果图如下: cal.wxml <view class="screen">{{result}}</view> <view class="content"> <view class="buttonGroup"> <button

keras topN显示,自编写代码案例

对于使用已经训练好的模型,比如VGG,RESNET等,keras都自带了一个keras.applications.imagenet_utils.decode_predictions的方法,有很多限制: def decode_predictions(preds, top=5): """Decodes the prediction of an ImageNet model. # Arguments preds: Numpy tensor encoding a batch of p