当前位置: 代码网 > it编程>编程语言>Asp.net > 用C#做一个简易计算器

用C#做一个简易计算器

2024年08月02日 Asp.net 我要评论
1.我们需要选择“C#”语言,然后选择“Windows窗体应用(.NET Framework )”,这个窗体类型一定不能选错,接着就下一步创建项目。2.我先放我搭建好的计算器界面,但%的代码没有放进来,因此这按键不可用。

一、form界面搭建

1.我们需要选择“c#”语言,然后选择“windows窗体应用(.net framework )”,这个窗体类型一定不能选错,接着就下一步创建项目。

2.我先放我搭建好的计算器界面,但%的代码没有放进来,因此这按键不可用。

 

 二、代码展示

peogram.cs代码

using system;
using system.collections.generic;
using system.linq;
using system.threading.tasks;
using system.windows.forms;

namespace 计算器2
{
    internal static class program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [stathread]
        static void main()
        {
            application.enablevisualstyles();
            application.setcompatibletextrenderingdefault(false);
            application.run(new formcalculator());
        }
    }
}

formcalculator.cs代码

using system;
using system.collections;
using system.collections.generic;
using system.componentmodel;
using system.data;
using system.drawing;
using system.linq;
using system.text;
using system.text.regularexpressions;
using system.threading.tasks;
using system.windows.forms;

namespace 计算器2
{
    public partial class formcalculator : form
    {
        #region 方法二:对表达式分析
        string precede(string p, string q)
        {
            switch (p)
            {
                case "+":
                case "-":
                    return ("*/(".indexof(q) != -1) ? "<" : ">";
                case "*":
                case "/":
                    return (q == "(") ? "<" : ">";
                case "(":
                    return (q == ")") ? "=" : "<";
                case ")":
                    return (q == "(") ? "?" : ">";
                case "#":
                    return (q == "#") ? "=" : "<";
            }
            return "?";
        }

        double operate(double a, char o, double b)
        {
            switch (o)
            {
                case '+':
                    return a + b;
                case '-':
                    return a - b;
                case '*':
                    return a * b;
                case '/':
                    return a / b;
            }
            return 0;
        }

        public object eval_2(string expression)
        {
            stack narr = new stack(), oarr = new stack();
            int j = 0;
            double a = 0, b = 0;
            string w = "";
            char o;
            matchcollection arr = regex.matches(expression.replace(" ", "") + "#", @"(((?<=(^|\())-)?\d+(\.\d+)?|\d)");
            oarr.push('#');
            w = convert.tostring(arr[j++]);
            while (!(w == "#" && convert.tostring(oarr.peek()) == "#"))
            {
                if ("+-*/()#".indexof(w) != -1)
                {
                    switch (precede(oarr.peek().tostring(), w))
                    {
                        case "<":
                            oarr.push(w);
                            w = convert.tostring(arr[j++]);
                            break;
                        case "=":
                            oarr.pop();
                            w = convert.tostring(arr[j++]);
                            break;
                        case ">":
                            o = convert.tochar(oarr.pop());
                            b = convert.todouble(narr.pop());
                            a = convert.todouble(narr.pop());
                            narr.push(operate(a, o, b));
                            break;
                        default:
                            return "error";
                    }
                }
                else
                {
                    narr.push(w);
                    w = convert.tostring(arr[j++]);
                }
            }
            return narr.pop();
        }
        #endregion
        public formcalculator()
        {
            initializecomponent();


            this.maximizebox = false;//禁止最大化
        }

        private void tablelayoutpanel1_paint(object sender, painteventargs e)
        {

        }

        private void textbox1_textchanged(object sender, eventargs e)
        {

        }

        private void formcalculator_load(object sender, eventargs e)
        {

        }

        private void button1_click(object sender, eventargs e)
        {
            this.textbox1.text += "1";
        }

        private void button2_click(object sender, eventargs e)
        {
            this.textbox1.text += "2";
        }

        private void button3_click(object sender, eventargs e)
        {
            this.textbox1.text += "3";
        }

        private void button4_click(object sender, eventargs e)
        {
            this.textbox1.text += "4";
        }

        private void button7_click(object sender, eventargs e)
        {
            this.textbox1.text += "5";
        }

        private void button6_click(object sender, eventargs e)
        {
            this.textbox1.text += "6";
        }

        private void button11_click(object sender, eventargs e)
        {
            this.textbox1.text += "7";
        }

        private void button8_click(object sender, eventargs e)
        {
            this.textbox1.text += "8";
        }

        private void button9_click(object sender, eventargs e)
        {
            this.textbox1.text += "9";
        }

        private void buttondot_click(object sender, eventargs e)
        {
            this.textbox1.text += ".";
        }

        private void button0_click(object sender, eventargs e)
        {
            this.textbox1.text += "0";
        }

        

        private void buttondiv_click(object sender, eventargs e)
        {
            this.textbox1.text += "/";
        }

        private void buttonmul_click(object sender, eventargs e)
        {
            this.textbox1.text += "*";
        }

        private void buttonsub_click(object sender, eventargs e)
        {
            this.textbox1.text += "-";
        }

        private void buttonadd_click(object sender, eventargs e)
        {
            this.textbox1.text += "+";
        }

        private void buttonclear_click(object sender, eventargs e)
        {
            this.textbox1.text = " ";
        }

        private void buttonparentheses1_click(object sender, eventargs e)
        {
            this.textbox1.text += "(";
        }

        private void buttonparentheses2_click(object sender, eventargs e)
        {
            this.textbox1.text += ")";
        }

        private void buttonper_click(object sender, eventargs e)
        {
            this.textbox1.text += "%";
        }

        //计算结果
        private void buttonequal_click(object sender, eventargs e)
        {
            string str = textbox1.text;
            double result = (double)eval_2(str);
            this.textbox1.text = result.tostring();
        }
    }
}
注:本篇博文只是随意写,还有很多细节未展示,一定会报错,不适于用来参考。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com