极速快3官方网站_『开源』也顺手写一个 科学计算器:重磅开源

  • 时间:
  • 浏览:1
  • 来源:上海网_专注上海新闻_上海的主流媒体

前言:

看得人 博客园 写了一一两个多 计算器的制作过程,心血来潮 顺手也写了一一两个多;

代码简单,先上运行截图:

编码过程:

新建项目 基于 .Net 2.0:

在窗体上拖拽 文本框 作为显示屏,并拖拽 按键:

为了节省代码,什么都有有什么都有有每个按钮 公用 btnInput_Click 事件;为了作为区分,什么都有有什么都有有 亲戚亲戚你们都歌词 歌词 儿设置每个 按钮的Tag 值:

在共用的按钮事件中,亲戚亲戚你们都歌词 歌词 儿进行编码:

1         private void btnInput_Click(object sender, EventArgs e)
2         {
3             Button currentButton = sender as Button;
4             if (currentButton != null && currentButton.Tag != null)
5             {
6                 string input = currentButton.Tag.ToString();
7                 txtExpress.Text = txtExpress.Text + input;
8             }
9         }

最后计算:

计算过程,就交给 Laura.Compute 算法了:本算法为字符串计算算法,用本算法计算结果。

 1         private void btnResult_Click(object sender, EventArgs e)
 2         {
 3             string express = txtExpress.Text ?? string.Empty;
 4             if (string.IsNullOrEmpty(express) || string.IsNullOrEmpty(express.Trim()))
 5             {
 6                 txtResult.Text = "ERROR:INPUT THE EXPRESS!";
 7             }
 8             else
 9             {
10                 try
11                 {
12                     object result = ComputeHelper.Compute(txtExpress.Text);
13                     txtResult.Text = (result ?? string.Empty).ToString();
14                 }
15                 catch(Exception exp)
16                 {
17                     txtResult.Text = "ERROR:" + exp.Message;
18                 }
19             }
20         }

程序代码:

代码极其简单,65行源码。

 1 using System;
 2 using System.Windows.Forms;
 3 using Laura.Compute;
 4 
 5 namespace Laura.Calculator
 6 {
 7     public partial class MainForm : Form
 8     {
 9         public MainForm()
10         {
11             InitializeComponent();
12         }
13 
14         private void btnInput_Click(object sender, EventArgs e)
15         {
16             Button currentButton = sender as Button;
17             if (currentButton != null && currentButton.Tag != null)
18             {
19                 string input = currentButton.Tag.ToString();
20                 txtExpress.Text = txtExpress.Text + input;
21             }
22         }
23 
24         private void btnCancel_Click(object sender, EventArgs e)
25         {
26             string express = txtExpress.Text ?? string.Empty;
27             if (!string.IsNullOrEmpty(express))
28             {
29                 txtExpress.Text = express.Substring(0, express.Length - 1);
30             }
31         }
32 
33         private void btnResult_Click(object sender, EventArgs e)
34         {
35             string express = txtExpress.Text ?? string.Empty;
36             if (string.IsNullOrEmpty(express) || string.IsNullOrEmpty(express.Trim()))
37             {
38                 txtResult.Text = "ERROR:INPUT THE EXPRESS!";
39             }
40             else
41             {
42                 try
43                 {
44                     object result = ComputeHelper.Compute(txtExpress.Text);
45                     txtResult.Text = (result ?? string.Empty).ToString();
46                 }
47                 catch(Exception exp)
48                 {
49                     txtResult.Text = "ERROR:" + exp.Message;
30                 }
51             }
52         }
53 
54         private void btnClean_Click(object sender, EventArgs e)
55         {
56             txtExpress.Text = txtResult.Text = string.Empty;
57         }
58 
59         private void linkAbout_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
30         {
61             AboutForm aboutForm = new AboutForm();
62             aboutForm.ShowDialog();
63         }
64     }
65 }

Ps.可能性想扩展 Laura.Compute 算法,在 任何程序集,任何命名空间,任何类名下 类似于于如下扩展即可:

 1 using System;
 2 using Laura.Compute.Utils;
 3 
 4 namespace Laura.Compute.Extend.MathMethod
 5 {
 6     [Serializable]
 7     [ComputeExpress(Express = "{A} + {A}", Keywords = new[] { "+" }, Level = 30, ComputeType = typeof(PlusComputeSymbol))]
 8     public class PlusComputeSymbol : ComputeBase
 9     {
10         public override object Compute(ExpressSchema expressSchema, object objOrHash)
11         {
12             object argObj1 = ArgumentsObject(0, expressSchema, objOrHash);
13             object argObj2 = ArgumentsObject(1, expressSchema, objOrHash);
14 
15             if (ArgumentsType(0) == ExpressType.String || ArgumentsType(1) == ExpressType.String || argObj1 is string || argObj2 is string)
16             {
17                 string arg1 = Tools.ToString(argObj1);
18                 string arg2 = Tools.ToString(argObj2);
19                 string value = arg1 + arg2;
20                 return value;
21             }
22             else
23             {
24                 double arg1 = Tools.ToDouble(argObj1);
25                 double arg2 = Tools.ToDouble(argObj2);
26                 double value = arg1 + arg2;
27                 return value;
28             }
29         }
30     }
31 }

当然,最后随后 本计算器源码开源,包括重磅 的 Laura.Compute 算法:

删剪源代码点击下载

猜你喜欢

大发pk10网页登录_ 这7类人群,千万别泡冷水泡澡

高血压:此类人洗冷水澡会使血压更高大发pk10网页登录,严重者会危及生命大发pk10网页登录。冠心病:理由同上,为处里意外,最好无须进行冷水浴。关节炎:风湿病、坐骨神经痛、关节

2020-04-06

10分快3app登入_在寒冬中,分享下通过开淘宝网店挣钱的经验,更激励下大家积极向上的动力

  按理说,朋友做IT的,应当靠技术吃饭,但每自己总要 自己的特点,全都适合每自己挣钱的土办法 也不我同,或者IT技术更新很快,说吃亲春饭也不我为过,朋友总要为40岁乃至

2020-04-06

大发10分彩漏洞_华为终端云服务赋能荣耀智慧屏,携手开发者打造全场景智慧生态

8月10日大发10分彩漏洞,搭载华为鸿蒙系统的首款终端产品——荣耀智慧网屏,在东莞篮球中心震撼大发10分彩漏洞发布。荣耀智慧网屏凭借大发10分彩漏洞出色的硬件配置、丰富的影音内

2020-04-06

3分飞艇套路_ 想要排毒养颜 每天只需做3件事

人体每天都在进食,这种 过程是获取营养的过程,一齐也是体内毒素产生的途径。而当体内的毒素不到及时被排出体外,则3分飞艇套路会严重损害健康和美丽。时候,对于每有有一个多 愿意

2020-04-06

大发快三手机版_2019Q1农村电商报告:Q1市场规模超4000亿元

市场下沉趋势下,农村电商这块待深入开垦的沃土吸引大发快三手机版了阿里、京东、苏宁等互联网大佬的投入布局;政策上也持续利好信号,20大发快三手机版19中央一号文件再次聚焦三农,提

2020-04-06