标题:小白:请问如何在C#计算器程序中加入历史功能?
只看楼主
con2008
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2020-2-29
结帖率:50%
已结贴  问题点数:10 回复次数:2 
小白:请问如何在C#计算器程序中加入历史功能?
我是按照网上的示范做的。
程序代码:
using System;
using System.Windows.Forms;

namespace MyCounter
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button6_Click(object sender, EventArgs e)
        {
            //将第一个TextBox控件里用户输入的数据(string类型),转换成浮点类型,并赋值给变量num1
            float num1 = Convert.ToSingle(maskedTextBox4.Text);
            //将第二个TextBox控件里用户输入的数据(string类型),转换成浮点类型,并赋值给变量num2
            float num2 = Convert.ToSingle(maskedTextBox5.Text);
            //计算两个数字相加,并赋值给变量jieguo
            float jieguo = num1 + num2;
            //将结果的值,赋值给第三个TextBox控件(需要将float类型的数据先转换成string类型再赋值)
            maskedTextBox6.Text = Convert.ToString(jieguo);
           
        }

        private void button7_Click(object sender, EventArgs e)
        {
            //将第一个TextBox控件里用户输入的数据(string类型),转换成浮点类型,并赋值给变量num1
            float num1 = Convert.ToSingle(maskedTextBox4.Text);
            //将第二个TextBox控件里用户输入的数据(string类型),转换成浮点类型,并赋值给变量num2
            float num2 = Convert.ToSingle(maskedTextBox5.Text);
            //计算两个数字相减,并赋值给变量jieguo
            float jieguo = num1 - num2;
            //将结果的值,赋值给第三个TextBox控件(需要将float类型的数据先转换成string类型再赋值)
            maskedTextBox6.Text = Convert.ToString(jieguo);
        }

        private void button8_Click(object sender, EventArgs e)
        {
            //将第一个TextBox控件里用户输入的数据(string类型),转换成浮点类型,并赋值给变量num1
            float num1 = Convert.ToSingle(maskedTextBox4.Text);
            //将第二个TextBox控件里用户输入的数据(string类型),转换成浮点类型,并赋值给变量num2
            float num2 = Convert.ToSingle(maskedTextBox5.Text);
            //计算两个数字相乘,并赋值给变量jieguo
            float jieguo = num1 * num2;
            //将结果的值,赋值给第三个TextBox控件(需要将float类型的数据先转换成string类型再赋值)
            maskedTextBox6.Text = Convert.ToString(jieguo);
        }

        private void button9_Click(object sender, EventArgs e)
        {
            //将第一个TextBox控件里用户输入的数据(string类型),转换成浮点类型,并赋值给变量num1
            float num1 = Convert.ToSingle(maskedTextBox4.Text);
            //将第二个TextBox控件里用户输入的数据(string类型),转换成浮点类型,并赋值给变量num2
            float num2 = Convert.ToSingle(maskedTextBox5.Text);
            //计算两个数字相除,并赋值给变量jieguo
            float jieguo = num1 / num2;
            //将结果的值,赋值给第三个TextBox控件(需要将float类型的数据先转换成string类型再赋值)
            maskedTextBox6.Text = Convert.ToString(jieguo);
        }

        private void button10_Click(object sender, EventArgs e)
        {
            maskedTextBox4.Text = null;
            maskedTextBox5.Text = null;
            maskedTextBox6.Text = null;
        }

        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
         
        }

        private void button11_Click(object sender, EventArgs e)
        {

        }
    }
}

(listBox1是我不小心加进去的)
button11就是“历史”按钮。
搜索更多相关主题的帖子: 数据 类型 Text 赋值 float 
2020-03-02 21:31
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
得分:10 
怎么显示出历史?当点击任何按钮时就合成字符串,可为历史。
2020-03-03 06:21
tzjtzj18
Rank: 2
等 级:论坛游民
帖 子:14
专家分:40
注 册:2013-5-9
得分:0 
这是个啥计算器啊
程序代码:
using System;
using System.Collections.Generic;


namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string expression;
            Console.Write("输入算式:");
            expression = Console.ReadLine();
            Console.WriteLine(new Calculator().Calculate(expression));
        }


        public class Calculator
        {
            public Calculator()
            {
                _OptStack = new Stack<char>();
                _SuffixStack = new Stack<float>();
            }
            private Stack<char> _OptStack;
            private Stack<float> _SuffixStack;
            public float Calculate(string expression)
            {
                string lastNum = string.Empty;
                for (int i = 0; i < expression.Length; i++)
                {
                    if (char.IsNumber(expression[i]) || expression[i].Equals('.'))
                    {
                        lastNum += expression[i];
                    }
                    else
                    {
                        if (lastNum != string.Empty)
                        {
                            Merger(float.Parse(lastNum));
                            lastNum = string.Empty;
                        }
                        AddOpt(expression[i]);
                    }
                }
                if (lastNum != string.Empty)
                {
                    Merger(float.Parse(lastNum));
                }
                while (_OptStack.Count > 0)
                {
                    Merger(_OptStack.Pop());
                }
                return _SuffixStack.Pop();
            }
            private void AddOpt(char opt)
            {
                if (_OptStack.Count == 0)
                {
                    _OptStack.Push(opt);
                    return;
                }
                if (opt.Equals(')'))
                {
                    while (!_OptStack.Peek().Equals('('))
                    {
                        Merger(_OptStack.Pop());
                    }
                    _OptStack.Pop();
                    return;
                }
                char tempOpt = _OptStack.Peek();
                if ((opt.Equals('-') || opt.Equals('+')) &&
                    (tempOpt.Equals('*') || tempOpt.Equals('/')))
                {
                    while (_OptStack.Count > 0)
                    {
                        Merger(_OptStack.Pop());
                    }
                }
                _OptStack.Push(opt);
            }
            private void Merger(float exp)
            {
                _SuffixStack.Push(exp);
            }
            private void Merger(char exp)
            {
                float num1 = _SuffixStack.Pop();
                float num2 = _SuffixStack.Pop();
                float result = 0;
                switch (exp)
                {
                    case '+':
                        result = num2 + num1;
                        break;
                    case '-':
                        result = num2 - num1;
                        break;
                    case '*':
                        result = num2 * num1;
                        break;
                    case '/':
                        result = num2 / num1;
                        break;
                }
                _SuffixStack.Push(result);
            }
        }
    }
}

2020-03-17 13:29



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-499516-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014832 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved