首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

c#写的小型计算器 缺少一个功能 大家帮帮忙看看!小弟我是新手

2013-04-12 
c#写的小型计算器 缺少一个功能 大家帮帮忙看看!我是新手不多说先上代码:using Systemusing System.Colle

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;

namespace WindowsFormsApplication7
{
    public partial class Form1 : Form
    {
        public enum CalcuType
        {
            None,
            /// <summary>
            /// 加法
            /// </summary>
            Addition,
            /// <summary>
            /// 减法
            /// </summary>
            Substraction,
            /// <summary>
            /// 乘法
            /// </summary>
            Multiplication,
            /// <summary>
            /// 除法
            /// </summary>
            Division,
            /// <summary>
            /// 乘方
            /// </summary>
            Involution,
            /// <summary>
            /// 开方
            /// </summary>
            Square,
        }
        private double? _ValueF =null;//表示可为数字或者null
        private double? _ValueL =null;
        private CalcuType _CalulateType = CalcuType.None;
        private bool _isNew = false;
        string numberStr;
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)//动态注册btnVal的click事件
        {


            btnVal0.Click += new EventHandler(btnVal_Click);
            btnVal1.Click += new EventHandler(btnVal_Click);
            btnVal2.Click += new EventHandler(btnVal_Click);
            btnVal3.Click += new EventHandler(btnVal_Click);
            btnVal4.Click += new EventHandler(btnVal_Click);
            btnVal5.Click += new EventHandler(btnVal_Click);
            btnVal6.Click += new EventHandler(btnVal_Click);
            btnVal7.Click += new EventHandler(btnVal_Click);
            btnVal8.Click += new EventHandler(btnVal_Click);
            btnVal9.Click += new EventHandler(btnVal_Click);
        }

        private void btnVal_Click(object sender, EventArgs e)//判断输入的是btnval
        {
            Button btn = (Button)sender;
            numberStr = this.txtValue.Text;
            if (this._isNew)
            {
                numberStr += btn.Text;
                this._ValueL = double.Parse(numberStr);

            }
            else
            {
                
                numberStr += btn.Text;
                this._ValueF = double.Parse(numberStr);
            }  
            this.txtValue.Text = numberStr;
        }


   private void btnResult_Click(object sender, EventArgs e)
        {
            switch (_CalulateType)
            {
                case CalcuType.Addition:
                    this.txtValue.Text = (_ValueF + _ValueL).ToString();
                    break;


                case CalcuType.Substraction:
                    this.txtValue.Text = (_ValueF - _ValueL).ToString();
                    break;
                case CalcuType.Multiplication:
                    this.txtValue.Text = (_ValueF * _ValueL).ToString();
                    break;
                case CalcuType.Division:
                    this.txtValue.Text = (_ValueF / _ValueL).ToString();
                    break;
                case CalcuType.Involution:
                    this.txtValue.Text = Math.Pow((double)_ValueF, (double)_ValueL).ToString();
                    break;
                case CalcuType.Square:
                    this.txtValue.Text = Math.Pow((double)_ValueF, 1 / (double)_ValueL).ToString();
                    break;
            }

            this._ValueF = double.Parse(this.txtValue.Text);
            _isNew = false;
        }

        private void btnAddition_Click(object sender, EventArgs e)//按下+键
        {
            this.btnResult_Click(sender, e);
            this._CalulateType = CalcuType.Addition;
            _isNew = true;
            numberStr = "";
            txtValue.Text = "";

        }

        private void btnclear_Click(object sender, EventArgs e)
        {
            this._ValueL = null;
            this._ValueF = null;
            this._CalulateType = CalcuType.None;


            txtValue.Text ="";
        }

        private void btnSubstraction_Click(object sender, EventArgs e)
        {
            this.btnResult_Click(sender, e);
            this._CalulateType = CalcuType.Substraction;
            _isNew = true;
            numberStr = "";
            txtValue.Text = "";
        }

        private void btnMultiplication_Click(object sender, EventArgs e)
        {
            this.btnResult_Click(sender, e);
            this._CalulateType = CalcuType.Multiplication;
            _isNew = true;
            numberStr = "";
            txtValue.Text = "";
        }

        private void btnDivision_Click(object sender, EventArgs e)
        {
            this.btnResult_Click(sender, e);
            this._CalulateType = CalcuType.Division;
            _isNew = true;
            numberStr = "";
            txtValue.Text = "";

        }

        private void btnSquare_Click(object sender, EventArgs e)
        {
            this.btnResult_Click(sender, e);
            this._CalulateType = CalcuType.Square;
            _isNew = true;
            numberStr = "";
            txtValue.Text = "";

        }

        private void btnInvolution_Click(object sender, EventArgs e)
        {
            this.btnResult_Click(sender, e);
            this._CalulateType = CalcuType.Involution;
            _isNew = true;
            numberStr = "";


            txtValue.Text = "";

        }

        private void btnBackspace_Click(object sender, EventArgs e)
        {
            if (this.txtValue.Text.Length == 1)
            {
                this.txtValue.Text = "0";
            }
            else
            {
                this.txtValue.Text = txtValue.Text.Substring(0, txtValue.Text.Length - 1);//从0开始返回length-1个字符
            }
            }

        private void btnPI_Click(object sender, EventArgs e)
        {
            if (_isNew)
            {
                _ValueL = Math.PI;
            }
            else
            {
                _ValueF = Math.PI;
            }
            this.txtValue.Text = Math.PI.ToString();
        }

       

      
        
    }
}


c#写的小型计算器 缺少一个功能 大家帮帮忙看看!小弟我是新手
这是学习的别的老师的计算器视频教程后自己稍作修改后的代码。。但是有个功能没有实现!
就是当年你按下 3+5+8=16后再按+8的话他会得出32.。(应该是的吧)我知道我的错误所在。
我目前的难题就在我想 如果我再按+的话 他不会执行一次16+8,而是等我按了+ 和8后他执行一次16+8.
有高手替我想想注意么?我是新手 谢谢大家了!
分数不高 还希望大家给点主意。。新人在此多谢了 C#
[解决办法]
写简单计算器的前提就是知道这个世界上有一种东西 叫做 前/中/后 根表达式

[解决办法]
你可以在数值部分放两个Label,相互重叠。其中一个可见(visible属性控制),另一个不可见。

当按下=号时,让第二个可见并且显示当前结果数值。此时第一个Label(用于显示正在录入的数值的那个)不可见,并且内容被清空。

然后在你的 btnVal_Click 中首先判断第一个 Label 是否可见。如果不可见,把它切换回来变为可见的。

编程首先要想好数据结构,然后才是程序过程。如果连不同的逻辑意义的数据结构都胡乱共享了,那么程序流程就容易混乱了。
[解决办法]
我不适合赞成滥用很多flag之类的东西。现在的电脑内存很大、CPU很快,你设计程序时应该追求自然和简单,让普通的不太懂程序设计的人也一下子会拿出比较酷的产品,我们宁可“浪费”一些程序资源,也不要过度地追求小伎俩。
[解决办法]
     private void btnAddition_Click(object sender, EventArgs e)//按下+键
        {


            this.btnResult_Click(sender, e);
            this._CalulateType = CalcuType.Addition;
            _isNew = true;
            numberStr = "";
            txtValue.Text = "";
 
        }
 
        private void btnclear_Click(object sender, EventArgs e)
        {
            this._ValueL = null;
            this._ValueF = null;
            this._CalulateType = CalcuType.None;
            txtValue.Text ="";
        }
 
        private void btnSubstraction_Click(object sender, EventArgs e)
        {
            this.btnResult_Click(sender, e);
            this._CalulateType = CalcuType.Substraction;
            _isNew = true;
            numberStr = "";
            txtValue.Text = "";
        }
这里最后都是“”?

[解决办法]
说真的打开这个帖子看到一坨没有注释的代码我就…… 分数拿走
[解决办法]

引用:
引用:引用:引用:写简单计算器的前提就是知道这个世界上有一种东西 叫做 前/中/后 根表达式
数据结构么?我是新手 是不是我的编程思想和数据结构不能在写程序的时候相结合导致 我的编程很混乱?
抛开编程语言,如果你能把你的问题想清楚,那么你就是真正的会解……

记录思想,跟语言没什么关系
[解决办法]
说啥好呢.乱糟糟的
[解决办法]
新手加注释是必须的啊,不然怎么学习。下次遇到的时候翻源码来看就知道应该怎么用了。
[解决办法]
学人家的程序一定要思路清晰,对一个这么长的小程序来说,没有注释去构建程序框架,再帮你修改,这本来就是个很费时间和精力的事情。把逻辑理清楚了,调试监视变量值的变化,找问题。

热点排行