制作简单的计算器
(word完整版)用MATLAB GUI设计简单计算器

摘要基于MATLAB GUI的计算器设计是利用GUIDE创建图形用户界面进行计算器设计。
设计计算器时,主要是考虑到计算器的易用性、功能的常用程度进行计算器界面与功能的设计。
通过调整控件和文本的布局及颜色,使界面简单大方、布局合理,达到界面友好的效果。
计算器设计时主要利用到get和set两个函数进行各个控件属性值的传递和设置。
计算器实现的功能有:数字0~9和小数点的输入显示,平方、开平方和对数的输入显示。
进行四则运算、正弦计算、余弦计算、正切计算和余切计算,可以求阶乘、求百分数和求倒数。
可以进行括号及变量x与变量y的输入,结合坐标轴编辑框和曲线颜色编辑框实现函数的曲线绘制。
最后运行调试,实现基于MATLAB GUI的计算器的设计。
MATLAB GUI介绍MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。
MATLAB是matrix和laboratory两个词的组合,意为矩阵工厂,主要面对科学计算、可视化以及交互式程设计的高科技计算环境。
MATLAB是将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言的编辑模式,特别是所附带的30多种面向不同领域的工具箱支持,使得它在许多科学领域中成为计算机辅助设计和分析、算法研究和应用开发的基本工具和首选平台。
MATLAB的图形用户界面(Graphical User Interface,简称GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。
与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。
MATLAB的图形用户界(GUI)是由光标,窗口,菜单、文字说明等对象构成一个用户界面。
软件代做:利用Python编写一个行业专用的小计算器

软件代做:利⽤Python编写⼀个⾏业专⽤的⼩计算器前⾔:本⽂讲述的是如何利⽤python编程制作⼀个适⽤于指定⾏业的计算器,⽅便计算结果,涵盖的知识点由Python编写GUI界⾯程序,利⽤爬⾍采集实时的汇率数据,将Python⽂件打包成可以单独运⾏的exe⽂件。
⾸先,分析我们的需求,编写⼀个适⽤于指定⾏业的计算器,这⾥我们⽤到的计算公式很简单,就是淘宝提供的⾦⽯定价公式,如下图所⽰淘宝定价计算器这⾥可以看到这个计算公式还是蛮简单的,对于Python来说也就是⼀⾏代码的事,那么我们就开始着⼿写代码,⾸先搭建我们的页⾯布局,这⾥我们采⽤的是tkinter,这个框架在画GUI⽅⾯还是很简单⽅便的,⾸先给⼤家展⽰下我的最终布局,如下图所⽰最终样式其实也不是很好看,不过我已经尽我所能去美化了,其实功能很简单,就是⼏个输⼊框,两个按钮,点击计算按钮,获取输⼊框中的值,通过Python代码计算结果,最后将计算结果写⼊指定的输⼊框中,关于tkinter的组件介绍,可以⾃⾏百度,我这⾥就直接上代码了class Application():def __init__(self):super().__init__()self.createUI()def createUI(self):self.ft = tf.Font(family='微软雅⿊', size=18,weight=tf.BOLD)self.ft1 = tf.Font(family='微软雅⿊', size=12)self.fm = tk.Frame(self)bel = bel(self.fm,text="计算结果:",font=self.ft)bel.pack(side=tk.LEFT)self.fm_new1 = tk.Frame(self.fm)bel0 = bel(self.fm_new1,text="⼈民币:",font=self.ft1)bel0.pack(side=tk.LEFT)self.entry0 = tk.Entry(self.fm_new1,font=self.ft1)self.entry0.pack(side=tk.LEFT)bel11 = bel(self.fm_new1,text="美元:",font=self.ft1)bel11.pack(side=tk.LEFT)self.entry11 = tk.Entry(self.fm_new1,font=self.ft1)self.entry11.pack(side=tk.LEFT)self.fm_new1.pack(side=tk.TOP,padx=5, pady=10)self.fm_new2 = tk.Frame(self.fm)bel12 = bel(self.fm_new2,text="新加坡币:",font=self.ft1)bel12.pack(side=tk.LEFT)self.entry12 = tk.Entry(self.fm_new2,font=self.ft1)self.entry12.pack(side=tk.LEFT)bel13 = bel(self.fm_new2,text="⽇元:",font=self.ft1)bel13.pack(side=tk.LEFT)self.entry13 = tk.Entry(self.fm_new2,font=self.ft1)self.entry13.pack(side=tk.LEFT)self.fm_new2.pack(side=tk.TOP,padx=5, pady=10)self.fm.pack(side=tk.TOP,padx=5, pady=10)self.fm1 = tk.Frame(self)bel1 = bel(self.fm1,text="⾦重:",font=self.ft1)bel1.pack(side=tk.LEFT,padx=10, pady=10)self.entry1 = tk.Entry(self.fm1,font=self.ft1)self.entry1.pack(side=tk.LEFT,padx=5, pady=10)bel10 = bel(self.fm1,text="浮动⽐率:",font=self.ft1)bel10.pack(side=tk.LEFT,padx=10, pady=10)self.entry10 = tk.Entry(self.fm1,font=self.ft1)self.entry10.pack(side=tk.LEFT,anchor=tk.W,padx=5, pady=10)self.fm1.pack(side=tk.TOP,padx=5, pady=5)self.fm2 = tk.Frame(self)bel2 = bel(self.fm2,text="⾦价:",font=self.ft1)bel2.pack(side=tk.LEFT,padx=10, pady=10)self.entry2 = tk.Entry(self.fm2,font=self.ft1)self.entry2.pack(side=tk.LEFT,padx=5, pady=10)be3 = bel(self.fm2,text="14K/18K:",font=self.ft1)be3.pack(side=tk.LEFT,padx=10, pady=10)self.entry3 = tk.Entry(self.fm2,font=self.ft1)self.entry3.pack(side=tk.LEFT,padx=5, pady=10)self.fm2.pack(side=tk.TOP,padx=5, pady=5)self.fm3 = tk.Frame(self)bel4 = bel(self.fm3,text="主⽯重:",font=self.ft1)bel4.pack(side=tk.LEFT,padx=10, pady=10)self.entry4 = tk.Entry(self.fm3,font=self.ft1)self.entry4.pack(side=tk.LEFT,padx=5, pady=10)bel5 = bel(self.fm3,text="价格:",font=self.ft1)bel5.pack(side=tk.LEFT,padx=10, pady=10)self.entry5 = tk.Entry(self.fm3,font=self.ft1)self.entry5.pack(side=tk.LEFT,padx=5, pady=10)self.fm3.pack(side=tk.TOP,padx=5, pady=5)self.fm4 = tk.Frame(self)bel6 = bel(self.fm4,text="副⽯重:",font=self.ft1)bel6.pack(side=tk.LEFT,padx=10, pady=10)self.entry6 = tk.Entry(self.fm4,font=self.ft1)self.entry6.pack(side=tk.LEFT,padx=5, pady=10)be7 = bel(self.fm4,text="价格:",font=self.ft1)be7.pack(side=tk.LEFT,padx=10, pady=10)self.entry7 = tk.Entry(self.fm4,font=self.ft1)self.entry7.pack(side=tk.LEFT,padx=5, pady=10)self.fm4.pack(side=tk.TOP,padx=5, pady=5)self.fm5 = tk.Frame(self)bel8 = bel(self.fm5,text="⼯费:",font=self.ft1)bel8.pack(side=tk.LEFT,padx=10, pady=10)self.entry8 = tk.Entry(self.fm5,font=self.ft1)self.entry8.pack(side=tk.LEFT,padx=5, pady=10)be9 = bel(self.fm5,text="设计费:",font=self.ft1)be9.pack(side=tk.LEFT,padx=5, pady=10)self.entry9 = tk.Entry(self.fm5,font=self.ft1)self.entry9.pack(side=tk.LEFT,padx=10, pady=10)self.fm5.pack(side=tk.TOP,padx=5, pady=5)self.fm6 = tk.Frame(self)self.selectButton = tk.Button(self.fm6, text="重置", command=self.selectFile,font=self.ft1)self.selectButton.pack(side=tk.LEFT,padx=10, pady=10)self.startButton = tk.Button(self.fm6, text="计算", command=lambda :self.thread_it(self.startAction),font=self.ft1)self.startButton.pack(side=tk.LEFT,padx=10, pady=10)self.fm6.pack(side=tk.TOP,padx=5, pady=5)self.title("我的计算器")#窗⼝⼤⼩width ,height= 600, 500#窗⼝居中显⽰self.geometry('%dx%d+%d+%d' % (width,height,(self.winfo_screenwidth() - width ) / 2, (self.winfo_screenheight() - height) / 2))#窗⼝最⼤值self.maxsize(600, 500)#窗⼝最⼩值self.minsize(300,200)self.entry0.insert('end',0)self.entry1.insert('end',0)self.entry2.insert('end',0)self.entry3.insert('end',0)self.entry4.insert('end',0)self.entry5.insert('end',0)self.entry6.insert('end',0)self.entry7.insert('end',0)self.entry8.insert('end',150)self.entry9.insert('end',50)self.entry10.insert('end',1.25)self.entry11.insert('end',0)self.entry12.insert('end',0)self.entry13.insert('end',0)说实话这段代码写的很随意,变量命名很随意,因为很多都是重复的东西,这⾥⼤致讲⼀下,⾸先是创建定义⼀个类继承⾃tkinter,这就相当于整个对象就是⼀个窗体了,之后就在这个窗体中进⾏布局,这⾥我们采⽤的是pack布局,说⽩了就是浮动布局,就是按照⼀⾏或者⼀列依次排列组件,这⾥就是利⽤Frame组件⽣成了⼏⾏的布局,然后在每个Frame⾥排列我们的标签和输⼊框,其中包含的⼀些细节就是组件的字体,组件之间的间距之类,完成了布局这⼀步之后,我们需要给按钮绑定事件,就是点击按钮触发什么操作,这⾥我们有两个按钮。
简易计算器

做的一个简易计算器,4X4键盘,1602液晶,一个最小系统,原理图就不给了,看程序也应该知道怎么接线除加减乘除外,有sin,tan,cos,N!,。
等10个附加功能,使用自己摸索。
开始复制了。
对了,是拿别的程序改得,下面是包涵的几个c文件/*-----------------------------------------------名称:LCD1602论坛:编写:shifang日期:2009.5修改:无内容:引脚定义如下:1-VSS 2-VDD 3-V0 4-RS 5-R/W 6-E 7-14 DB0-DB7 15-BLA 16-BLK------------------------------------------------*/#include "1602.h"#include "delay.h"#define CHECK_BUSYsbit RS = P1^0; //定义端口sbit RW = P1^1;sbit EN = P2^5;#define RS_CLR RS=0#define RS_SET RS=1#define RW_CLR RW=0#define RW_SET RW=1#define EN_CLR EN=0#define EN_SET EN=1#define DataPort P0/*------------------------------------------------判忙函数------------------------------------------------*/bit LCD_Check_Busy(void){#ifdef CHECK_BUSYDataPort= 0xFF;RS_CLR;RW_SET;EN_CLR;_nop_();EN_SET;return (bit)(DataPort & 0x80);#elsereturn 0;#endif}/*------------------------------------------------写入命令函数------------------------------------------------*/ void LCD_Write_Com(unsigned char com) {while(LCD_Check_Busy()); //忙则等待RS_CLR;RW_CLR;EN_SET;DataPort= com;_nop_();EN_CLR;}/*------------------------------------------------写入数据函数------------------------------------------------*/ void LCD_Write_Data(unsigned char Data) {while(LCD_Check_Busy()); //忙则等待RS_SET;RW_CLR;EN_SET;DataPort= Data;_nop_();EN_CLR;}/*------------------------------------------------清屏函数------------------------------------------------*/ void LCD_Clear(void){LCD_Write_Com(0x01);DelayMs(5);}/*------------------------------------------------写入字符串函数------------------------------------------------*/void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) {while (*s){LCD_Write_Char(x,y,*s);s ++; x++;}}/*------------------------------------------------写入字符函数------------------------------------------------*/void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data) {if (y == 0){LCD_Write_Com(0x80 + x);}else{LCD_Write_Com(0xC0 + x);}LCD_Write_Data( Data);}/*------------------------------------------------初始化函数------------------------------------------------*/void LCD_Init(void){LCD_Write_Com(0x38); /*显示模式设置*/DelayMs(5);LCD_Write_Com(0x38);DelayMs(5);LCD_Write_Com(0x38);DelayMs(5);LCD_Write_Com(0x38);LCD_Write_Com(0x08); /*显示关闭*/LCD_Write_Com(0x01); /*显示清屏*/LCD_Write_Com(0x06); /*显示光标移动设置*/DelayMs(5);LCD_Write_Com(0x0C); /*显示开及光标设置*/}延时程序的#include "delay.h"/*------------------------------------------------uS延时函数,含有输入参数unsigned char t,无返回值unsigned char 是定义无符号字符变量,其值的范围是0~255 这里使用晶振12M,精确延时请使用汇编,大致延时长度如下T=tx2+5 uS------------------------------------------------*/void DelayUs2x(unsigned char t){while(--t);}/*------------------------------------------------mS延时函数,含有输入参数unsigned char t,无返回值unsigned char 是定义无符号字符变量,其值的范围是0~255 这里使用晶振12M,精确延时请使用汇编------------------------------------------------*/void DelayMs(unsigned char t){while(t--){//大致延时1mSDelayUs2x(245);DelayUs2x(245);}}按键扫描的/*-----------------------------------------------名称:矩阵键盘论坛:编写:shifang日期:2009.5修改:无内容:------------------------------------------------*/#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include"keyboard.h"#include"delay.h"#define KeyPort P3/*------------------------------------------------按键扫描函数,返回扫描键值------------------------------------------------*/unsigned char KeyScan(void) //键盘扫描函数,使用行列反转扫描法{unsigned char cord_h,cord_l;//行列值中间变量KeyPort=0x0f; //行线输出全为0cord_h=KeyPort&0x0f; //读入列线值if(cord_h!=0x0f) //先检测有无按键按下{DelayMs(10); //去抖if((KeyPort&0x0f)!=0x0f){cord_h=KeyPort&0x0f; //读入列线值KeyPort=cord_h|0xf0; //输出当前列线值cord_l=KeyPort&0xf0; //读入行线值while((KeyPort&0xf0)!=0xf0);//等待松开并输出return(cord_h+cord_l);//键盘最后组合码值}}return(0xff); //返回该值}/*------------------------------------------------按键值处理函数,返回扫键值可以根据需要改变返回值| 1 | 2 | 3 | + || 4 | 5 | 6 | - || 7 | 8 | 9 | * || 0 | . | = | / |------------------------------------------------*/unsigned char KeyPro(void){switch(KeyScan()){case 0x7e:return '1';break;//0 按下相应的键显示相对应的码值case 0x7d:return '2';break;//1case 0x7b:return '3';break;//2case 0x77:return '+';break;//3case 0xbe:return '4';break;//4case 0xbd:return '5';break;//5case 0xbb:return '6';break;//6case 0xb7:return '-';break;//7case 0xde:return '7';break;//8case 0xdd:return '8';break;//9case 0xdb:return '9';break;//acase 0xd7:return 'x';break;//bcase 0xee:return '0';break;//ccase 0xed:return '.';break;//dcase 0xeb:return '=';break;//ecase 0xe7:return '/';break;//fdefault:return 0xff;break;}}主程序/*-----------------------------------------------名称:液晶显示计算器论坛:编写:shifang日期:2009.5修改:无内容:由于单片机浮点数限制,可以计算6位数字运算,大于这个长度,用科学计数法表示小数位精度后6位,大于6位按四舍五入------------------------------------------------*/#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include<stdio.h>#include"1602.h"#include"delay.h"#include"keyboard.h"#include"math.h"unsigned char num,ii,pp,fuhao,i;unsigned char temp[10]; //最大输入16个unsigned char shu[6];unsigned char shu1[6];unsigned char mima[5]={'1','2','3','4','5'};bit firstflag;double n=0,m=0;unsigned char s;bit K,G; //K是两种运算的变换标志位,G是sin元算和加减运算的转换标志bit flag1; //需输入两个数的标志位bit flag2; //输入第二个数的标志位void fuyunsuan (void);void suanshu (void);/*------------------------------------------------阶乘------------------------------------------------*/double jiecheng (unsigned int x )//求阶乘{unsigned int j;double p=1;for (j=1 ; j<=x ; j++ ){p=p*j;}return p ;}/*------------------------------------------------阶和------------------------------------------------*/unsigned int jiehe (float x,float y )//求阶和{unsigned int j,p=0;for (j=x ; j<=y ; j++ ){p=p+j;}return p ;}/*------------------------------------------------输出SIN,COS,TAN....符号并计算------------------------------------------------*/void fuyunsuan (void)//{if(('+'==num)|| ('-'==num) || ('x'==num)|| ('/'==num) || ('.'==num))//判断第一个是否为符号{K=~K; //取反是为了,没按一次键,转换一次运算LCD_Clear(); //清屏if(num=='+') //‘+’复用的功能改变,下面的同理{if(K==0){LCD_Write_String(0,0,"SIN :"); fuhao=1;flag1=0;}if(K==1){LCD_Write_String(0,0,"COS :"); fuhao=2;flag1=0;}}if(num=='-'){if(K==0){LCD_Write_String(0,0,"TAN :"); fuhao=3;flag1=0;}if(K==1){LCD_Write_String(0,0,"LOG :"); fuhao=4; flag1=1;}}if(num=='x'){if(K==0){LCD_Write_String(0,0,"N^M :"); fuhao=5;flag1=1;}if(K==1){LCD_Write_String(0,0,"root:"); fuhao=6;flag1=0;}}if(num=='/'){if(K==0){LCD_Write_String(0,0,"E^ :"); fuhao=7;flag1=0;}if(K==1)LCD_Write_String(0,0,"LG E:");fuhao=8;flag1=0;}}if(num=='.'){if(K==0){LCD_Write_String(0,0,"N+ :");fuhao=9;flag1=1;}if(K==1){LCD_Write_String(0,0,"N! :");fuhao=10;flag1=0;}}LCD_Write_Com(0x80 + 5);//为了输入的数据定好位置}else{if('='!=num) //判定是否为‘=‘号,不是就取数据,是就进行运算{if(flag2!=1) //取第一个数据{shu[ii]=num-0x30;LCD_Write_Data(num);num=0xff;ii++;}else //取第二个数据,前提的是要输入第二个,并且按过一次等号{shu1[pp]=num-0x30;LCD_Write_Data(num);num=0xff;pp++;}}else //这边的else已经是为=号的情况了if(flag1==1&&shu[0]!=0) //这是判定第二次=号的功能的,flag=1就是要输入第二个数,并且已经输入第一个数{ //这里让flag2=1,看上面,是不是就可以去第二个数了flag2=1;flag1=0;if(fuhao==4)LCD_Write_Data('-');if(fuhao==5)LCD_Write_Data('^');if(fuhao==9)LCD_Write_Data('~');}else //这边当然是搞结果的啦{for(s=0;s<ii;s++) //n=n+shu[s]*pow(10,ii-s-1); //把前面输入的数据,处理一下,赋值给nfor(s=0;s<pp;s++) //m=m+shu1[s]*pow(10,pp-s-1); //把输入的第二组数据给mfor(ii=0;ii<6;ii++) //赋值完成后把缓冲区清零,防止下次输入影响结果shu[ii]=0;for(pp=0;pp<6;pp++) //赋值完成后把缓冲区清零,防止下次输入影响结果shu[pp]=0;ii=0;pp=0;switch(fuhao) //通过符号的值运算,前面的fuhao终于有用了吧{case 1 :n=sin((3.1415926/180)*n);break;case 2 :n=cos((3.1415926/180)*n);break;case 3 :n=tan((3.1415926/180)*n);break;case 4 :n=log(m) / log(n);break;case 5 :n=pow(n,m);break;case 6 :n=sqrt(n);break;case 7 :n=exp(n);break;case 8 :n=log(n);break;case 9 :n=jiehe(n,m);break;case 10 :n=jiecheng(n);break;default:break;}for(s=0;s<10;s++) //赋值完成后把缓冲区清零,防止下次输入影响结果temp[s]=0;LCD_Write_Char(0,1,num);sprintf(temp,"%g",n); //输出浮点型,无用的0不输出LCD_Write_String(1,1,temp);//显示到液晶屏for(s=0;s<16;s++) //赋值完成后把缓冲区清零,防止下次输入影响结果temp[s]=0;flag1=0;flag2=0; n=0;m=0;G=0; //输出完之后,以后还要混的,清理现场先LCD_Write_Com(0x0C);}}}}/*------------------------------------------------加减乘除------------------------------------------------*/void suanshu (void){if(i==0) //输入是第一个字符的时候需要把改行清空,方便观看LCD_Clear();if(('+'==num)|| (i==16) || ('-'==num) || ('x'==num)|| ('/'==num) || ('='==num))//输入数字最大值16,输入符号表示输入结束{i=0; //计数器复位if(firstflag==0) //如果是输入的第一个数据,赋值给a,并把标志位置1,到下一个数据输入时可以跳转赋值给b{sscanf(temp,"%f",&n);firstflag=1;}elsesscanf(temp,"%f",&m);for(s=0;s<16;s++) //赋值完成后把缓冲区清零,防止下次输入影响结果temp[s]=0;LCD_Write_Char(0,1,num);///////////////////////if(num!='=') //判断当前符号位并做相应处理fuhao=num; //如果不是等号记下标志位else{firstflag=0; //检测到输入=号,判断上次读入的符合switch(fuhao){case '+':n=n+m;break;case '-':n=n-m;break;case 'x':n=n*m;break;case '/':n=n/m;break;default:break;}sprintf(temp,"%g",n); //输出浮点型,无用的0不输出LCD_Write_String(1,1,temp);//显示到液晶屏fuhao=0;n=m=0; G=0; //用完后所有数据清零for(s=0;s<16;s++)temp[s]=0;shu[0]=0;shu1[0]=0;LCD_Write_Com(0x0C);}}else if(i<16){if((1==i)&& (temp[0]=='0') )//如果第一个字符是0,判读第二个字符{if(num=='.') //如果是小数点则正常输入,光标位置加1{temp[1]='.';LCD_Write_Char(1,0,num);//输出数据i++;} //这里没有判断连续按小数点,如0.0.0else{temp[0]=num; //如果是1-9数字,说明0没有用,则直接替换第一位0LCD_Write_Char(0,0,num);//输出数据LCD_Write_Com(0x0e);}}else{temp[i]=num;LCD_Write_Char(i,0,num);//输出数据i++; //输入数值累加}}}/*------------------------------------------------输入密码------------------------------------------------*/void mimashuru (void){while(K){for(i=0;i<5;){num=KeyPro(); //扫描键盘if(num!=0xff){shu[i]=num;LCD_Write_Data('*');i++;}}for(i=0;i<5;i++){if(shu[i]==mima[i])pp++;}if(pp==5){K=0;}else{LCD_Clear();pp=0;LCD_Write_String(0,0," NO! NO! NO!"); //写入第一行信息,主循环中不再更改此信息,所以在while之前写入LCD_Write_String(0,1,"Password:"); //写入第二行信息,提示输入密码}}for(s=0;s<25;s++)//延时5sDelayMs(200);LCD_Clear();LCD_Write_Com(0x0C);LCD_Write_String(0,0," Well done"); //写入第一行信息,主循环中不再更改此信息,所以在while之前写入i=0;pp=0;shu[0]=0;for(s=0;s<25;s++)//延时5sDelayMs(200);LCD_Clear();}/*------------------------------------------------主程序------------------------------------------------*/main(){K=1;ii=0;pp=0;flag1=0;flag2=0;i=0;G=0;LCD_Init(); //初始化液晶屏DelayMs(10); //延时用于稳定,可以去掉LCD_Clear(); //清屏LCD_Write_String(0,0,"Welcome2 my work"); //写入第一行信息,主循环中不再更改此信息,所以在while之前写入LCD_Write_String(0,1,"HYJ Productions"); //写入第二行信息,提示输入密码for(s=0;s<75;s++)//延时5sDelayMs(200);LCD_Clear();LCD_Write_String(0,0,"Please enter your"); //写入第一行信息,主循环中不再更改此信息,所以在while之前写入LCD_Write_String(0,1,"Password:"); //写入第二行信息,提示输入密码LCD_Write_Com(0x0f);//光标开,光标闪烁开mimashuru();LCD_Write_Com(0x0f);//光标开,光标闪烁开while (1) //主循环{num=KeyPro(); //扫描键盘if(num!=0xff){LCD_Write_Com(0x0f);//光标开,光标闪烁开if((('+'==num)||('-'==num) || ('x'==num)|| ('/'==num) || ('.'==num))&&shu[0]==0&&shu1[0]==0&&temp[0]==0)G=1; //判定第一个按键是否为功能键if(G==1){fuyunsuan ();}else{suanshu();}}}}结束语,初学者的劳动成果啊,不容易啊,我试过,程序没问题,就是有些小瑕疵,不过懒得弄了,这程序也很容易仿真,那I/O自己改吧,得。
htmljs实现简单的计算器代码(加减乘除)

下面小编就为大家带来一篇 html+js 实现简单的计算器代码 (加减乘除 ) 。
小编觉得挺不错的,现在就分享给大家,也给大家做个参考。
html+js 实现简单的计算器代码(加减乘除 )<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title></title></head><body><table> <tr> <td><input type="button"value="add" onclick="setOp('+', 'add');"/></td> <td><input type="button"value="miner"onclick="setOp('-', 'miner');"/></td> <td><input type="button"value="times"onclick="setOp('*', 'times');"/></td> <td><input type="button"value="divide"onclick="setOp('/', 'divide');"/></td> </tr></table><table id="tb_calc" style="display:none;"> <tr> <td> <input id="x" type="text" style="width:100px" value="" name="x" /></td> <td> <lable id="op" name="op"></lable> </td> <td> <input id="y" type="text" style="width:100px"value="" name="y" /> </td> <td> <input id="opTips" type="button" value="" onclick="calc();"/> </td> <td> <lable id="z" name="z"></lable> </td> </tr></table><script type="application/javascript"> function setOp(op, opTips) { var tb=document.getElementById("tb_calc"); tb.style.display = "none"; document.getElementById("x").value = ""; document.getElementById("y").value = ""; document.getElementById("z").innerText = ""; document.getElementById("op").innerText = op; document.getElementById("opTips").value = opTips; tb.style.display = "block"; } function calc() { var x = parseInt(document.getElementById("x").value); var y = parseInt(document.getElementById("y").value); var op = document.getElementById("op").innerText; var z = ""; switch(op) { case '+': z = x + y; break; case '-': z = x - y; break; case '*': ; z = x * y; break; case '/': ; z = x / y; break; default: z = ''; } console.log(x, op, y, '=', z); document.getElementById("z").innerText = z; }</script></body></html>以上这篇 html+js 实现简单的计算器代码 (加减乘除 ) 就是小编分享给大家的全部内容了,希望能给大家一个参考。
JS实现简易计算器的7种方法

JS实现简易计算器的7种⽅法先放图(好吧⽐较挫)⽅法⼀:最容易版<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8" /><title>简易计算器</title><style>body {background-color: #eee;}#calculator {margin: 100px 0 0 150px;}</style></head><body><!-- 简易计算器 --><div id="calculator"><p><input type="text" class="formerInput" value="1" /><span class="sign">+</span><input type="text" class="laterInput" value="1" /><span>=</span><span class="resultOutput">2</span></p><p><input type="button" value="+" onclick="addHandler();" /><input type="button" value="-" onclick="subtractHandler();" /><input type="button" value="×" onclick="multiplyHandler();" /><input type="button" value="÷" onclick="divideHandler();" /></p></div><script>// 获取元素var calculator = document.querySelector('#calculator');var formerInput = calculator.querySelector('.formerInput');var laterInput = calculator.querySelector('.laterInput');var sign = calculator.querySelector('.sign');var resultOutput = calculator.querySelector('.resultOutput');// 加function addHandler() {sign.innerHTML = '+';resultOutput.innerHTML = +formerInput.value + +laterInput.value;}// 减function subtractHandler() {sign.innerHTML = '-';resultOutput.innerHTML = formerInput.value - laterInput.value;}// 乘function multiplyHandler() {sign.innerHTML = '×';resultOutput.innerHTML = formerInput.value * laterInput.value;}// 除function divideHandler() {sign.innerHTML = '÷';resultOutput.innerHTML = formerInput.value / laterInput.value;}</script></body></html>⽅法⼆:结构和⾏为分离<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8" /><title>简易计算器</title>#calculator {margin: 100px 0 0 150px;}</style></head><body><!-- 简易计算器 --><div id="calculator"><p><input type="text" class="formerInput" value="1" /><span class="sign">+</span><input type="text" class="laterInput" value="1" /><span>=</span><span class="resultOutput">2</span></p><p><input type="button" value="+" onclick="addHandler();" /><input type="button" value="-" onclick="subtractHandler();" /><input type="button" value="×" onclick="multiplyHandler();" /><input type="button" value="÷" onclick="divideHandler();" /></p></div><script>// 获取元素var calculator = document.querySelector('#calculator');var formerInput = calculator.querySelector('.formerInput');var laterInput = calculator.querySelector('.laterInput');var sign = calculator.querySelector('.sign');var resultOutput = calculator.querySelector('.resultOutput');var btns = calculator.querySelectorAll('.btn');// 绑定事件// +btns[0].onclick = addHandler;// -btns[1].onclick = subtractHandler;// ×btns[2].onclick = multiplyHandler;// ÷btns[3].onclick = divideHandler;// 加function addHandler() {sign.innerHTML = '+';resultOutput.innerHTML = +formerInput.value + +laterInput.value; }// 减function subtractHandler() {sign.innerHTML = '-';resultOutput.innerHTML = formerInput.value - laterInput.value;}// 乘function multiplyHandler() {sign.innerHTML = '×';resultOutput.innerHTML = formerInput.value * laterInput.value;}// 除function divideHandler() {sign.innerHTML = '÷';resultOutput.innerHTML = formerInput.value / laterInput.value;}</script></body></html>⽅法三:循环绑定事件<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8" /><title>简易计算器</title><style>body {background-color: #eee;}#calculator {margin: 100px 0 0 150px;<!-- 简易计算器 --><div id="calculator"><p><input type="text" class="formerInput" value="1" /><span class="sign">+</span><input type="text" class="laterInput" value="1" /><span>=</span><span class="resultOutput">2</span></p><p><input type="button" value="+" onclick="addHandler();" /><input type="button" value="-" onclick="subtractHandler();" /><input type="button" value="×" onclick="multiplyHandler();" /><input type="button" value="÷" onclick="divideHandler();" /></p></div><script>// 获取元素var calculator = document.querySelector('#calculator');var formerInput = calculator.querySelector('.formerInput');var laterInput = calculator.querySelector('.laterInput');var sign = calculator.querySelector('.sign');var resultOutput = calculator.querySelector('.resultOutput');var btns = calculator.querySelectorAll('.btn');// 绑定事件for (var i = 0; i < btns.length; i++) {btns[i].onclick = function () {switch (this.title) {case 'add':addHandler();break;case 'subtract':subtractHandler();break;case 'multiply':multiplyHandler();break;case 'divide':divideHandler();break;}};}// 加function addHandler() {sign.innerHTML = '+';resultOutput.innerHTML = +formerInput.value + +laterInput.value; }// 减function subtractHandler() {sign.innerHTML = '-';resultOutput.innerHTML = formerInput.value - laterInput.value;}// 乘function multiplyHandler() {sign.innerHTML = '×';resultOutput.innerHTML = formerInput.value * laterInput.value;}// 除function divideHandler() {sign.innerHTML = '÷';resultOutput.innerHTML = formerInput.value / laterInput.value;}</script></body></html>⽅法四:提取函数<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8" /><title>简易计算器</title><style>body {margin: 100px 0 0 150px;}</style></head><body><!-- 简易计算器 --><div id="calculator"><p><input type="text" class="formerInput" value="1" /><span class="sign">+</span><input type="text" class="laterInput" value="1" /><span>=</span><span class="resultOutput">2</span></p><p><input type="button" value="+" class="btn" title="add" /><input type="button" value="-" class="btn" title="subtract" /> <input type="button" value="×" class="btn" title="multiply" /> <input type="button" value="÷" class="btn" title="divide" /> </p></div><script>// 获取元素var calculator = document.querySelector('#calculator');var formerInput = calculator.querySelector('.formerInput');var laterInput = calculator.querySelector('.laterInput');var sign = calculator.querySelector('.sign');var resultOutput = calculator.querySelector('.resultOutput');var btns = calculator.querySelectorAll('.btn');// 绑定事件each(btns, function (index, elem ) {elem.onclick = function () {switch (this.title) {case 'add':addHandler();break;case 'subtract':subtractHandler();break;case 'multiply':multiplyHandler();break;case 'divide':divideHandler();break;}};});// 遍历function each(array, fn) {for (var i = 0; i < array.length; i++) {fn(i, array[i]);}}// 更新符号function updateSign(symbol) {sign.innerHTML = symbol;}// 加法function add(num1, num2) {return +num1 + +num2;}// 减法function subtract(num1, num2) {return num1 - num2;}// 乘法function multiply(num1, num2) {return num1 * num2;}// 除法function divide(num1, num2) {return num1 / num2;}// 输出结果}// 加function addHandler() {// sign.innerHTML = '+';updateSign('+');outputResult(add(formerInput.value, laterInput.value));}// 减function subtractHandler() {updateSign('-');outputResult(subtract(formerInput.value, laterInput.value)); }// 乘function multiplyHandler() {updateSign('×');outputResult(multiply(formerInput.value, laterInput.value)); }// 除function divideHandler() {updateSign('÷');outputResult(divide(formerInput.value, laterInput.value)); }</script></body></html>⽅法五:管理代码(找到组织)<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8" /><title>简易计算器</title><style>body {background-color: #eee;}#calculator {margin: 100px 0 0 150px;}</style></head><body><!-- 简易计算器 --><div id="calculator"><p><input type="text" class="formerInput" value="1" /><span class="sign">+</span><input type="text" class="laterInput" value="1" /><span>=</span><span class="resultOutput">2</span></p><p><input type="button" value="+" class="btn" title="add" /><input type="button" value="-" class="btn" title="subtract" /> <input type="button" value="×" class="btn" title="multiply" /> <input type="button" value="÷" class="btn" title="divide" /> </p></div><script>// 获取元素var wrapElem = document.querySelector('#calculator');var calculatorElem = {formerInput: wrapElem.querySelector('.formerInput'),laterInput: wrapElem.querySelector('.laterInput'),sign: wrapElem.querySelector('.sign'),resultOutput: wrapElem.querySelector('.resultOutput'), btns: wrapElem.querySelectorAll('.btn')};// 绑定事件each(calculatorElem.btns, function (index, elem ) {elem.onclick = function () {switch (this.title) {case 'add':addHandler();break;case 'subtract':multiplyHandler();break;case 'divide':divideHandler();break;}};});// 遍历function each(array, fn) {for (var i = 0; i < array.length; i++) {fn(i, array[i]);}}// 更新符号function updateSign(symbol) {calculatorElem.sign.innerHTML = symbol;}var operation = {add: function(num1, num2) {return +num1 + +num2;},subtract: function(num1, num2) {return num1 - num2;},multiply: function(num1, num2) {return num1 * num2;},divide: function(num1, num2) {return num1 / num2;}};// 输出结果function outputResult(result) {calculatorElem.resultOutput.innerHTML = result;}// 加function addHandler() {// sign.innerHTML = '+';updateSign('+');outputResult(operation.add(calculatorElem.formerInput.value, terInput.value));}// 减function subtractHandler() {updateSign('-');outputResult(operation.subtract(calculatorElem.formerInput.value, terInput.value)); }// 乘function multiplyHandler() {updateSign('×');outputResult(operation.multiply(calculatorElem.formerInput.value, terInput.value)); }// 除function divideHandler() {updateSign('÷');outputResult(operation.divide(calculatorElem.formerInput.value, terInput.value)); }</script></body></html>⽅法六:OCP开放--封闭原则<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8" /><title>简易计算器</title><style>body {background-color: #eee;}#calculator {margin: 100px 0 0 150px;}</style></head><!-- 简易计算器 --><div id="calculator"><p><input type="text" class="formerInput" value="1" /><span class="sign">+</span><input type="text" class="laterInput" value="1" /><span>=</span><span class="resultOutput">2</span></p><p><input type="button" value="+" class="btn" title="add" /><input type="button" value="-" class="btn" title="subtract" /><input type="button" value="×" class="btn" title="multiply" /><input type="button" value="÷" class="btn" title="divide" /><input type="button" value="%" class="btn" title="mod" /><input type="button" value="^" class="btn" title="power" /><!-- <input type="button" value="1/x" class="btn" title="invert" /> --></p></div><script>// 获取元素var wrapElem = document.querySelector('#calculator');var calculatorElem = {formerInput: wrapElem.querySelector('.formerInput'),laterInput: wrapElem.querySelector('.laterInput'),sign: wrapElem.querySelector('.sign'),resultOutput: wrapElem.querySelector('.resultOutput'),btns: wrapElem.querySelectorAll('.btn')};// 绑定事件each(calculatorElem.btns, function (index, elem ) {elem.onclick = function () {updateSign(this.value);outputResult(operate(this.title, calculatorElem.formerInput.value, terInput.value)); };});// 遍历function each(array, fn) {for (var i = 0; i < array.length; i++) {fn(i, array[i]);}}// 更新符号function updateSign(symbol) {calculatorElem.sign.innerHTML = symbol;}// 运算function operate(name, num1, num2) {if (!operation[name]) throw new Error('不存在名为' + name + '的运算⽅法!');return operation[name](num1, num2);}var operation = {add: function(num1, num2) {return +num1 + +num2;},subtract: function(num1, num2) {return num1 - num2;},multiply: function(num1, num2) {return num1 * num2;},divide: function(num1, num2) {return num1 / num2;},addOperation: function (name, fn) {if (!this[name]) {this[name] = fn;}return this;}};operation.addOperation('mod', function (num1, num2) {return num1 % num2;}).addOperation('power', function (base, power) {return Math.pow(base, power);function outputResult(result) {calculatorElem.resultOutput.innerHTML = result;}</script></body></html>⽅法七:模块化<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8" /><title>简易计算器</title><style>body {background-color: #eee;}#calculator {margin: 100px 0 0 150px;}</style></head><body><!-- 简易计算器 --><div id="calculator"><p><input type="text" class="formerInput" value="1" /><span class="sign">+</span><input type="text" class="laterInput" value="1" /><span>=</span><span class="resultOutput">2</span></p><p><input type="button" value="+" class="btn" title="add" /><input type="button" value="-" class="btn" title="subtract" /><input type="button" value="×" class="btn" title="multiply" /><input type="button" value="÷" class="btn" title="divide" /><input type="button" value="%" class="btn" title="mod" /><input type="button" value="^" class="btn" title="power" /><input type="button" value="1/x" class="btn" title="invert" /></p></div><script>(function () {// 获取元素var wrapElem = document.querySelector('#calculator');var calculatorElem = {formerInput: wrapElem.querySelector('.formerInput'),laterInput: wrapElem.querySelector('.laterInput'),sign: wrapElem.querySelector('.sign'),resultOutput: wrapElem.querySelector('.resultOutput'),btns: wrapElem.querySelectorAll('.btn')};// 绑定事件each(calculatorElem.btns, function (index, elem ) {elem.onclick = function () {updateSign(this.value);outputResult(operate(this.title, calculatorElem.formerInput.value, terInput.value)); };});// 遍历function each(array, fn) {for (var i = 0; i < array.length; i++) {fn(i, array[i]);}}// 更新符号function updateSign(symbol) {calculatorElem.sign.innerHTML = symbol;}// 运算var operate = (function () {subtract: function(num1, num2) {return num1 - num2;},multiply: function(num1, num2) {return num1 * num2;},divide: function(num1, num2) {return num1 / num2;},addOperation: function (name, fn) {if (!operation[name]) {operation[name] = fn;}return operation;}};function operate(name) {if (!operation[name]) throw new Error('不存在名为' + name + '的运算⽅法!');return operation[name].apply(operation, [].slice.call(arguments, 1, arguments.length)); }operate.addOperation = operation.addOperation;return operate;})();operate.addOperation('mod', function (num1, num2) {return num1 % num2;}).addOperation('power', function (base, power) {return Math.pow(base, power);}).addOperation('invert', function (num) {return 1 / num;});// 输出结果function outputResult(result) {calculatorElem.resultOutput.innerHTML = result;}})();</script></body></html>。
流明简易计算器

T5 14W 1100
T5 14W 1100
T5 14W 1100
T5 14W 11ຫໍສະໝຸດ 0T5 14W 1100T5 14W 1100
T5 14W 1100
T5 14W 1100
T5 14W 1100
平均照度(Lux)
说明:
先在输入栏内输入灯具安装地点,之后由灯具高度决定利用系数以及维护系数,输入准确的房间这区域的面积,选择灯具类型,根据计划 要安装的灯具确定单套根数,再填入灯具总套数。显示栏中自动计算出平均照度,对于需要计算灯具数的可以填入数量后慢慢推出来。 P.S:此计算器为本人闲来无事做着玩玩,如有错误请高人指正!此计算器结果仅供参考!!精确计算照度可以使用DIALux软件,本计算器 仅适合于为懒人做简单的灯光设计做参考使用。郑重声明!!!
输入栏:
地点 灯具高度(米) 灯具型号 T5 14W T5 14W T5 14W T5 14W T5 14W T5 14W T5 14W T5 14W T5 14W 灯具光通量(Lm) 利用系数(CU) 1100 1100 1100 1100 1100 1100 1100 1100 1100 维护系数(MF) 区域面积(m2) 灯具类型 暗装格栅灯 暗装格栅灯 暗装格栅灯 暗装格栅灯 暗装格栅灯 暗装格栅灯 暗装格栅灯 暗装格栅灯 暗装格栅灯 单套根数(根) 灯具套数(套)
简易T5/T8灯管流明计算器
制作人:张晓昕
显示栏:
数据 灯具型号 灯管根数(根) 灯具数量(套) 灯具瓦数(W) 灯具光通量(Lm) 利用系数(Cu) 维护系数(Mf) 区域面积(m2) 地点 暗装格栅灯 暗装格栅灯 暗装格栅灯 暗装格栅灯 暗装格栅灯 暗装格栅灯 暗装格栅灯 暗装格栅灯 暗装格栅灯
综合实验1 简单贷款计算器的制作

加入控制后,将公式写入模板。 如序号,在A9:A369内输入:
=if(录入完成*还款期内,还款次序,””)
还款日期
期初余额
期末余额
还款本金
还款利息
还款期内
=IF(还款次序<=还款次数,1,0)
Print_Titles =分期付款表!$10:$10 整个打印区域=分期付款表!$A$1:$G$370
最后一行
=IF(录入完成,标题行号+还款次数,标题 行号)
Print_Area =OFFSET(整个打印区域,0,0,最后一行)
=分期付款表!$C$7
录入完成
=IF(贷款总额*年息*贷款年限*起贷日期 >0,1,0)
还款次数 月还款额 本息总计 利息总计
=贷款年限*12 =-PMT(年息/12, 还款次数, 贷款总额) =月还款额*还款次数 =本息总计-贷款总额
标Hale Waihona Puke 行号 还款次序=ROW(分期付款表!$10:$10) =ROW()-标题行号 =DATE(YEAR(起贷日期), MONTH(起贷日期)+ 还款次序, DAY(起贷日期)) =-FV(年息/12,还款次序-1,-月还款额,贷款总 额) =-FV(年息/12,还款次序,-月还款额,贷款总额) =-PPMT(年息/12,还款次数,还款次序,贷款总 额) =-IPMT(年息/12,还款次数,还款次序,贷款总 额)
1. 2. 3.
学习如何设计Excel模板 格式化Excel表格 编写公式与名称
与传统的表格(Excel)不同 只有当贷款总额、年息、贷款年限、起贷日期
都输入后,才显示结果 除了贷款总额、年息、贷款年限、起贷日期, 其它位置都不能编辑 只打印有数据的区域
用MFC制作简易计算器

面向对象编程技术课程设计课题名称:用VC++制作简单计算器用VC++制作简单计算器简述:该课程设计将实现一个简单计算器。
其类似于Windows附件中自带的计算器。
这个计算器可以实现简单的四则运算功能,而且具有简洁大方的图文外观。
系统具有良好的界面和必要的交互信息。
即时准确地获得需要的计算的结果,充分降低了数字计算的难度,从而节约了时间,对人们的生活有一定的帮助。
在课程设计中,程序设计设计语言采用Visual C++,在程序设计中,采用了面向对象解决问题的方法。
课题背景计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除简单运算的工具。
要实现计算功能,可以用VC++的知识编写程序来解决此问题。
该计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度。
该计算器使用非常简单和方便,对广大中小学生的学习有巨大帮助作用,也对在职人员的工作有点帮助作用。
功能说明系统具有良好的界面;必要的交互信息;简约美观的效果。
使用人员能快捷简单地进行操作。
可单机按钮进行操作即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。
(1)包含的功能有:加、减、乘、除;(2)计算器上数字分为显示区,可以显示用户所点击的按键,最后显示结果;按键区,可以让用户选择所需的数字以及小数点;功能区,该区域提供用户所需的运算按钮;(3)计算功能基本上是用系统内部函数;(4)“AC”按钮可以清除所有已输入的数据从头计算;(5)“DEL”按钮可以删除所输入的最后以为数字;编辑资源创建步骤新建一个MFC基于对话框的工程VC++对话框界面右击按钮,修改按钮的属性建立类向导最后点击Edit Code就可以添加代码对其它按钮的操作与之类似,对编辑框的“建立类向导”有点区别,这里不附详细步骤代码展示“1”按钮对应的代码void CMyDlg::OnButton1(){UpdateData(1);if(pass1==1 )m_str="1";else m_str+="1";pass1=0;UpdateData(0);}“2”按钮对应的代码void CMyDlg::OnButton2(){UpdateData(1);if(pass1==1 )m_str="2";else m_str+="2";pass1=0;UpdateData(0);}“3”按钮对应的代码void CMyDlg::OnButton3(){UpdateData(1);if(pass1==1 )m_str="3";else m_str+="3";pass1=0;UpdateData(0);}“4”按钮对应的代码void CMyDlg::OnButton3(){UpdateData(1);if(pass1==1 )m_str="4";else m_str+="4";pass1=0;UpdateData(0);}“5、6、7、8、9、0”按钮对应的代码与“1、2、3、4”按钮对应的代码相近“=”按钮对应的代码void CMyDlg::Onresult(){UpdateData(1);int i,z,s,j,x=0,y=1,t,m=1;char b[10];double rate=10.0,itemp=0.0,a[20];for(i=0;i<20;i++)a[i]=1000000.0;for(i=0;i<10;i++)b[i]=' ';z=0;for(i=0;i<m_str.GetLength();i++) {if(isdigit(m_str.GetAt(i))){if(rate==10.0){ itemp=itemp*rate+(m_str.GetAt(i)-'0');if(i==m_str.GetLength()-1)a[z]=itemp;}else{itemp=itemp+rate*(m_str.GetAt(i)-'0');rate=rate/10;if(i==m_str.GetLength()-1)a[z]=itemp;}}else if(m_str.GetAt(i)=='.')rate=0.1;else if(m_str.GetAt(i)=='+') {a[z]=itemp;itemp=0;z++;b[z]='+';z++;rate=10.0;}else if(m_str.GetAt(i)=='-') {a[z]=itemp;itemp=0;z++;b[z]='-';z++;rate=10.0;}else if(m_str.GetAt(i)=='*')a[z]=itemp;itemp=0;z++;b[z]='*';z++;rate=10.0;}else if(m_str.GetAt(i)=='/'){a[z]=itemp;itemp=0;z++;b[z]='/';z++;rate=10.0;}}s=z;for(j=0;j<=s;j++){if(b[j]=='/'){a[j+1]=1/a[j+1];b[j]='*';}}for(j=0;j<=s;j++){if(b[j]=='*'){if(j-t==2){a[t-m]=a[t-m]*a[j+1];m=m+2;}elsea[j-1]=a[j-1]*a[j+1];a[j+1]=1000000.0;b[j]=' ';t=j;}}for(j=0;j<=s;j++){if(a[j]!=1000000.0) //如果a[i]的值不为0.0a[x]=a[j]; //把a[i]的值赋给a[x] x+=2; //x自加2}if(b[j]!=' ') //如果b[i]的值不为空格{b[y]=b[j]; //把b[i]的值赋给b[y]y=y+2; //y自加2}}for(j=0;j<=y-2;j++) {if(b[j]=='+') //如果b[i]等于加号a[0]=a[0]+a[j+1];else if(b[j]=='-') //如果b[i]等于减号a[0]=a[0]-a[j+1];}m_str.Format("%1f",a[0]);UpdateData(0);}“+”按钮对应的代码void CMyDlg::Onadd(){UpdateData(1);m_str+="+";UpdateData(0);}“-”按钮对应的代码void CMyDlg::Onjian(){UpdateData(1);m_str+="-";UpdateData(0);}“*”按钮对应的代码void CMyDlg::Oncheng(){UpdateData(1);m_str+="*";UpdateData(0);}“/”按钮对应的代码void CMyDlg::Onchu(){UpdateData(1);m_str+="/";UpdateData(0);}“AC”按钮对应的代码void CMyDlg::Onac(){UpdateData(1);m_str="0";pass1=1;UpdateData(0);}“DEL”按钮对应的代码void CMyDlg::Ondel(){UpdateData(1);if(m_str!="0" && m_str.GetLength()>1)m_str=m_str.Left(m_str.GetLength()-1);else{m_str="0";}UpdateData(0);}“.”按钮对应的代码void CMyDlg::Onpoint(){UpdateData(1);if(pass1==1)m_str=".";elsem_str+=".";pass1=0;UpdateData(0);}效果图。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
制作简单的计算器
现代社会中,计算器是我们不可或缺的工具之一、它可以帮助我们进
行快速而准确的数学运算,使得我们的工作和生活更加便利。
本篇文章将
介绍如何制作一个简单的计算器,帮助你更好地了解计算器的原理和构造。
首先,我们需要明确计算器的基本功能。
一个简单的计算器应该具备
加法、减法、乘法和除法的四则运算功能。
此外,我们还可以添加一些其
他常用的功能,例如百分比计算、开方和平方等。
接下来,我们将使用Python语言来实现这个计算器。
在Python中,我们可以使用GUI库Tkinter来创建一个简单的图形
界面。
首先,我们需要导入Tkinter库,并创建一个主窗口:```python
from tkinter import *
root = Tk
root.title("简易计算器")
```
接下来,我们可以创建显示结果的文本框和按钮,代码如下:
```python
#创建文本框
input_label = Entry(root, justify="right")
input_label.grid(row=0, column=0, columnspan=4, padx=10,
pady=10)
#创建按钮
buttons =
"7","8","9","/",
"4","5","6","*",
"1","2","3","-",
"0",".","=","+"
row_num = 1
col_num = 0
for button in buttons:
Button(root, text=button, padx=10, pady=10).grid(row=row_num, column=col_num)
col_num += 1
if col_num > 3:
col_num = 0
row_num += 1
```
然后,我们可以为按钮添加相应的点击事件,使得点击按钮时可以进
行相应的计算操作。
```python
#计算函数
def calculate(:
expression = input_label.get
try:
result = eval(expression)
input_label.delete(0, END)
input_label.insert(0, str(result)) except:
input_label.delete(0, END)
input_label.insert(0, "Error")
#绑定按钮点击事件
row_num = 1
col_num = 0
for button in buttons:
col_num += 1
if col_num > 3:
col_num = 0
row_num += 1
```
最后,我们需要运行主窗口,使得计算器界面可以正常显示。
代码如下:
```python
root.mainloop
```
至此,一个简单的计算器就完成了。
你可以根据需要自行扩展功能,例如添加按钮点击效果、改变按钮样式等。
总结起来,制作一个简单的计算器可以通过Python的Tkinter库来实现。
我们通过创建文本框和按钮,添加按钮点击事件来实现计算器的基本功能。
希望本文能对你了解计算器的制作有所帮助。