C#實(shí)現(xiàn)簡(jiǎn)易計(jì)算器小功能
本文實(shí)例為大家分享了C#實(shí)現(xiàn)簡(jiǎn)易計(jì)算器小功能的具體代碼,供大家參考,具體內(nèi)容如下
簡(jiǎn)易的登陸界面。
具有幻燈片效果。(picturebox time控件)
計(jì)算器支持多位數(shù),小數(shù),括號(hào)的運(yùn)算。
音樂是一個(gè)練習(xí)用的小控件(Listbox),可以選擇指定的歌曲播放,直接忽略掉吧。
建立winform窗體
數(shù)字和運(yùn)算符都為button,輸入和輸出的為textbox
基本代碼
在所有button控件的click事件均為加上所對(duì)應(yīng)的文本。
例如:數(shù)字1所對(duì)應(yīng)的button就為
textBox1.Text += '1';
運(yùn)算符同理
textBox1.Text += '*';
核心代碼
核心代碼均在‘=’的click的事件中
Stack<double> vs = new Stack<double>();//運(yùn)算符棧 Stack<char> vvs = new Stack<char>();//操作符棧 ? ? ? ?string a = textBox1.Text + '='; ? ? ? ?string b = ""; ? ? ? ?vvs.Push('='); ? ? ? for (int i = 0; i < a.Length; i++) ? ? ? { ? ? ? ?if (a[i] >= '0' && a[i] <= '9'||a[i]=='.') ? ? ? { ? ? ? ? ? ?b += a[i]; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? else if (a[i] == '=') ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? if (b != "") ? ? ? ? ? ? ? ? ? ? ? ? vs.Push(Convert.ToDouble(b)); ? ? ? ? ? ? ? ? ? ? while (vvs.Peek() != '=') ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? char t = vvs.Pop(); double d = vs.Pop(); ? ? ? ? ? ? ? ? ? ? ? ? if (vs.Count() != 0) ? ? ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? double j = vs.Pop(); ? ? ? ? ? ? ? ? ? ? ? ? ? ? vs.Push(Jisuan(d, t, j)); ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? ? else ? ? ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? ? ? MessageBox.Show("你輸入的有問題"); ? ? ? ? ? ? ? ? ? ? ? ? ? ? textBox1.Text = ""; ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? else ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? if (b != "") ? ? ? ? ? ? ? ? ? ? ? ? vs.Push(Convert.ToDouble(b)); ? ? ? ? ? ? ? ? ? ? switch (Bijiao(vvs.Peek(), a[i])) ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? case '>': ? ? ? ? ? ? ? ? ? ? ? ? ? ? while (vvs.Count != 1 && vvs.Peek() != '(') ? ? ? ? ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? char th = vvs.Pop(); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?double f = vs.Pop(); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?double g = vs.Pop(); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? vs.Push(Jisuan(f, th, g)); ? ? ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (vvs.Peek() == '(' && a[i] == ')') ? ? ? ? ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? vvs.Pop(); ? ? ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? ? ? ? else ? ? ? ? ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? vvs.Push(a[i]); ? ? ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? ? ? ? case '<': ? ? ? ? ? ? ? ? ? ? ? ? ? ? vvs.Push(a[i]); ? ? ? ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? ? ? ? case '=': ? ? ? ? ? ? ? ? ? ? ? ? ? ? while (vvs.Peek() != '=') ? ? ? ? ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? char th = vvs.Pop(); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? double f = vs.Pop(); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? double g = vs.Pop(); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? vs.Push(Jisuan(f, th, g)); ? ? ? ? ? ? ? ? ? ? ? ? ?} ? ? ? ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? b = ""; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? ? ? textBox1.Text = ""; ? ? ? ? ? ? if(vs.Count()!=0) ? ? ? ? ? ? { textBox1.Text = vs.Peek().ToString(); } ? ? ? ? }
所用到的方法(函數(shù))
public double Jisuan(double c, char t, double a)//用來計(jì)算的方法 ? ? ? ? { ? ? ? ? ? ? switch (t) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? case '+': ? ? ? ? ? ? ? ? ? ? return a + c; ? ? ? ? ? ? ? ? case '-': ? ? ? ? ? ? ? ? ? ? return a - c; ? ? ? ? ? ? ? ? case '*': ? ? ? ? ? ? ? ? ? ? return a * c; ? ? ? ? ? ? ? ? case '/': ? ? ? ? ? ? ? ? ? ? if (c == 0) ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? MessageBox.Show("0不能作為被除數(shù)"); ? ? ? ? ? ? ? ? ? ? ? ? return ?0; ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? else ? ? ? ? ? ? ? ? ? ? ? ? return a / c; ? ? ? ? ? ? ? ? case '%': ? ? ? ? ? ? ? ? ? ? return a % c; ? ? ? ? ? ? ? ? default: ? ? ? ? ? ? ? ? ? ? return 0; ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? char Bijiao(char theta1, char theta2)//比較運(yùn)算符優(yōu)先級(jí)的方法 ? ? ? ? { ? ? ? ? ? ? if ((theta1 == '(' && theta2 == ')') || (theta1 == '#' && theta2 == '#')) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? return '='; ? ? ? ? ? ? } ? ? ? ? ? ? else if (theta1 == '(' || theta1 == '#' || theta2 == '(' || (theta1 ? ? ? ? ? ? ? ? ? == '+' || theta1 == '-') && (theta2 == '*' || theta2 == '/')) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? return '<'; ? ? ? ? ? ? } ? ? ? ? ? ? else ? ? ? ? ? ? ? ? return '>'; ? ? ? ? }
為了使計(jì)算器更加美觀,可以添加picturebox控件等等。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C#計(jì)算器編寫代碼
- C#編寫的windows計(jì)算器的實(shí)例代碼
- C#開發(fā)簡(jiǎn)易winform計(jì)算器程序
- C#實(shí)現(xiàn)簡(jiǎn)單的計(jì)算器功能完整實(shí)例
- C#實(shí)現(xiàn)簡(jiǎn)單計(jì)算器功能
- C#實(shí)現(xiàn)簡(jiǎn)單加減乘除計(jì)算器
- C#實(shí)現(xiàn)Winform版計(jì)算器
- C#實(shí)現(xiàn)的簡(jiǎn)單整數(shù)四則運(yùn)算計(jì)算器功能示例
- c#入門之實(shí)現(xiàn)簡(jiǎn)易存款利息計(jì)算器示例
- C# WinForm程序設(shè)計(jì)簡(jiǎn)單計(jì)算器
相關(guān)文章
C#常用數(shù)據(jù)結(jié)構(gòu)和算法總結(jié)
這篇文章主要介紹了C#常用數(shù)據(jù)結(jié)構(gòu)和算法,這里我們總結(jié)了一些知識(shí)點(diǎn),可以幫助大家理解這些概念。2016-06-06C#和SQL實(shí)現(xiàn)的字符串相似度計(jì)算代碼分享
這篇文章主要介紹了C#和SQL實(shí)現(xiàn)的字符串相似度計(jì)算代碼分享,本文分別給出了C#語言和SQL語言的實(shí)現(xiàn)代碼,需要的朋友可以參考下2014-10-10C#中GridView動(dòng)態(tài)添加列的實(shí)現(xiàn)方法
這篇文章主要介紹了C#中GridView動(dòng)態(tài)添加列的實(shí)現(xiàn)方法,涉及C#中GridView的相關(guān)使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07C# Dictionary和SortedDictionary的簡(jiǎn)介
今天小編就為大家分享一篇關(guān)于C# Dictionary和SortedDictionary的簡(jiǎn)介,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-10-10