VC++ 多功能计算器
C语言实现计算器功能
是否结束运算?
GL是1•否
请选择。或1>:1
7.000000
×
2
I结果:=
1⅛.Θ00Θ0Θ
是否结束运算?
0堤1•否
(3)这时输入:0
测试目的:退出算术运算
结果输出:
please chose One Ietter from "a,b,c,r,and t" a
输入煜
÷
7 *ΘΘΘΘΘΘ
Void SUanshuyunsuan2() //选择继续做算术运算调用的函数,将上次运算的结果做为下次算术运算的第一个操作数〃判断算术运算是否继续
void Pan dua n()〃判断算术运算是否继续
void biaodashiyu nsua n()〃单运算符表达式实现函数
void qin gpi ng()〃清除屏幕
程序要完成的功能及所要用到的函数如下:
使用各菜单分别调用的函数
'≡ua∩ξhuyun≡u anO
■>SUanShUyUnSLLan2
panduan()
> bi aodashiyunsuan 0
> QirLgPing()
>fanhuicaidan()
2•算法说明(即函数说明)
Void SUa nshuyu nsua n()//做算术运算时调用的函数
Letter from a,bφc1r,and t
Ietter from,,a,bfc,r,and t
3•第三组测试用例
测试输入:C
国"F:\学习匹语言程序设计实习\实验"'IkbTigUJ语書欢验一.
+
⅛
7.000000
多功能计算器的C语言实现
多功能计算器的C语言实现题目:设计一个多功能计算软件实现功能:具备整型数据、浮点型数据的算术(加、减、乘、除)运算功能。
依次输入第一个运算数、运算符(+,-,*,/)、第二个运算数,然后输出结果。
结果可以作为下一个运算的第一运算数。
按‘C’清屏,按‘R’返回菜单。
例如:输入:2+5输出:7C语言实现:#include<stdio.h>#include<string.h>#include<stdlib.h>#define MaxLength 50void Show_screen(){printf("####################################################\n");printf("#依次输入操作数1、运算符和操作数2,例如:2+5。
#\n");printf("#按回车键显示运算结果,其可作为下一个输入的操作数。
#\n");printf("#按键c清除屏幕,按键r返回菜单。
#\n");printf("####################################################\n");}double myadd(double x, double y){double sum;sum=x+y;if(sum-(int)sum==0)printf("%.0f",sum);elseprintf("%.6f",sum);return sum;}double mysub(double x, double y){double sub;sub=x-y;if(sub-(int)sub==0)printf("%.0f",sub);elseprintf("%.6f",sub);return sub;}double mymul(double x, double y){double mul;mul=x*y;if(mul-(int)mul==0)printf("%.0f",mul);elseprintf("%.6f",mul);return mul;}double mydiv(double x, double y){double div;div=x/y;if(div-(int)div==0)printf("%.0f",div);elseprintf("%.6f",div);return div;}int main(){int myoffset;int flag;//判断是否将上次计算结果作为下次运算操作数1的标志,是的话值为1。
用VC++做计算器
用VC++做计算器在这一章,要实现一个简单计算器。
其类似于Windows附件中自带的计算器。
实际效果如图3-1所示,这个计算器不仅实现了简单的四则运算功能,还实现了高级的科学计算功能,而且具有简洁大方的图文外观。
该计算器具有一个菜单栏,一个编辑框及若干按键。
编辑框可以用任何指定的字体和颜色显示文本。
按钮控件具有对鼠标敏感的功能,当鼠标处于不同的位置和状态时,按钮控件会显示不同的颜色,并且所有按钮控件的客户区域为椭圆或圆形。
其实际效果如图3-1所示:图3-1计算器示例效果图●为对话框添加菜单。
●制定高级按钮控件,该按钮具有不规则的形状,并可以根据用户鼠标的位置和点击状态的不同,显示不同的颜色。
●制定高级编辑控件,该编辑控件可以指定文本文字的字体和颜色。
●实现对话框的扩展功能。
3.1窗体设计该计算器是基于对话框的应用程序,利用MFC AppWizard生成应用计算器应用程序框架,具体步骤如下:(1)执行VC程序,选择FILE|New命令,弹出New对话框,单击Projects选项卡,选择MFC AppWizard(exe)选项,然后在Project Name文本框中输入Calculator。
Location 文本框是指项目的本地路径,这里读者可以自行设定。
保持Platform里的Win32复选框不变。
如图3-2所示。
(2)单击OK按钮,弹出MFC AppWizard-Step1对话框。
选择Dialog Based单选按钮。
如图3-3所示。
Visual C ++简明教程图3-2 New对话框图3-3 MFC AppWizard-Step1对话框(3)单击Next按钮,弹出MFC AppWizard-Step2 of 6对话框。
如图3-4所示。
(4)单击Next按钮,弹出MFC AppWizard-Step3 of 6对话框,如图3-5所示。
图3-4 MFC AppWizard-Step2对话框图3-5 MFC AppWizard-Step3对话框(5)单击Next按钮,弹出MFC AppWizard-Step4 of 6对话框。
vc计算器课程设计
描写童年趣事作文600字高二描写童年趣事作文600字高二6篇童年是七色的,是热忱的、可爱的、好玩的,布满笑声的。
共享一下你的童年趣事吧。
下面是我为大家收集的描写童年趣事作文600字高二例文,期望你宠爱。
描写童年趣事作文600字高二(篇1)一进教室,映入眼帘的就是讲台上的那几个易拉罐和几根“专业”的钓鱼竿。
我一下子就呆住了,心里不禁猜想起老师葫芦里卖的是什么药?“莫非是去钓鱼,不对,要易拉罐干什么?莫非里面装的是鱼食?不对,不对”“下面我们来玩一个叫‘钓旱鱼’的玩耍吧!”老师的一句话打断了我的猜想,也点破了我的困惑。
首先,江老师将我们分成四个大组,每个大组有六名“钓鱼者”。
老师为了让我们生疏玩耍规章,便让我们先进行练习。
在练习的过程中,我渐渐把握了要领,能在十五秒之内钓起一条“旱鱼”了。
在为自己的成绩窃喜时,我才发觉真是“人外有人,天外有天”啊!———有些同学格外娴熟,不出十秒就能钓起一条“旱鱼”,这使我不由得站在一旁观看起其他人的动作。
不一会儿,练习结束,老师让各组前来抽签。
令我欣喜的是:我们组竟幸运的抽到了第5号,这样我们就有机会进行训练了。
这时,老师让每组选出2名队员来参赛。
然而,在参赛问题上,大家竟不约而同的推选了我和刘宇欣,这是我颇感意外的。
竞赛最终开头了。
首先上场的是闵耀东和王涵,他们或许是由于第一个上场产生了恐惊心理,或许是由于不太娴熟,所以显得有些力不从心,连续2次都使“鱼儿”顺当脱钩,最终才钓起了2次。
我和队友们马上对他们报以了“鼓舞”的掌声。
最精彩的也是最使人感到意外的,是第四个上场的李亦桐和方菁如一组。
她们一开头上场的表现是顺风顺水,一连钓起了2个,但到中间的时候,不知是谁顺手将竿一抖,两根鱼竿就像热恋情人一般纠缠在一起了,害得同学们费了九牛二虎之力才将难分难舍的它们分开。
“哈!哈!哈!”的笑声始终萦绕在我的耳畔,它不仅使我的童年丰富多彩,更使它意义非凡。
描写童年趣事作文600字高二(篇2)每个人的童年生活都是丰富多彩的,布满了无穷的乐趣。
VC6.0制作简易计算器MFC[整理]
1、单击File(文件)菜单,选中New(新建),创建新工程。
2、选择工程栏中MFC AppWizard[exe]应用程序,并命名工程名称为calculator.(如图)3、选择MFC应用程序为“基于对话框”类型,其他选项默认。
单击完成(如图)4、修改界面。
经过前3步骤,VC6.0生成的工作界面如图所示。
先将对话框中的“TODO:在这里设置对话控制”静态文字控件和“确定”按钮控件删除,再使用工具箱将界面拖动控件修改为如图所示的界面。
该图所示是使用工具箱的控件拖放制作的计算器初始界面。
由于这些控件都有默认的名字,所以我们要对控件进行改名,右击Button1按钮,选中Properties(属性)选项以修改控件的属性,如图所示。
在弹出的对话框中,将Button1按钮的Caption(标题)属性修改为“+”,此时初始界面同时变成相应的“+”如下图所示。
修改后的界面如图所示,控件的Caption属性就是控件显示出来的值。
按照前文所讲述的方式,将界面上的按钮控件和静态文本控件的Caption属性都做相应的修改,修改后的界面如图所示。
5、为Edit(编辑)控件添加类的成员变量。
首先,右击Edit控件,选择ClassWizard(建立类向导)选项,如下图所示。
在弹出的对话框中,选择上方MemberVariables选项卡,选中DIC_EDIT1,然后单击单击右侧的Add Variable按钮,如图所示。
单击Add Variable按钮后会跳出,如图所示的对话框,该对话框是设置成员变量的命名和数据类型,在此可以命名为m_data1.注意:控件的ID只是标记一个控件,程序中不能直接控制ID,只能通过修改变量来改变控件的状态。
00相应的,再将另外两个Edit控件命名,本项目就将这3个Edit控件命名为:●IDC_EDIT1:m_data1,类型为double.●IDC_EDIT2:m_data2,类型为double.●IDC_EDIT3:m_result,类型为double.6、添加按钮控件的消息处理函数。
VC多功能计算器
还要实现数据的输入,输出,计算,显示及程序退出等功能。
另外还可以实现多种科学计算的功能,如:三角函数的计算,弧度与角度间的转换,对数指数的计算等等。
、总体方案设计(1)功能框架图1 功能框架图(2)主要功能原理:①正弦、余弦、正切、余切函数:制度的选择,程序运行默认制度选中角度,当选项中“角度”按钮时,则需将其转换为角度计算,由公式:弧度=PI*角度/180,可将表达式中角度转换为弧度既s[ll-1]=PI*s[ll-1]/180。
对于反、正余弦和反正余切,由于C++库函数提供的计算结果是弧度的,所以当选中默认的“弧度”按钮时可不必将计算结果转换,当选中“角度”按钮时,则由公式:角度=弧度*180/PI,既可计算出来。
②实现进制间浮点数的转换对不同进制的输入,将其转换为十进制数后出入,显示时转换为所选择的进行输出。
所以进制间的转换输出,其实只是将已存的那个十进制数转换为其他进制输出。
③历史计算的记忆功能对(和),使用一个运算符栈和一个操作数栈存储。
按(时,进栈保存;按)时,出栈运算。
对MC、MR、MS、M+,使用一个浮点数存储中间值,MC为将其清零,MR为读取其值,MS为保存、M+为在原有值的基础上加当前值。
、详细设计(1)进行开始编程前的数据结构分析:double m_mem; ;break;num = num*base + change2(i));i++;}i++;if(i >= len)k = 1;++程序设计. [M].科学出版社,2007[2] 荣钦科技.Visual C++游戏编程基础. [M].电子工业出版社,2004[3] 揣锦华.面向对象程序设计与VC++实践. [M].西安电子科技大学出版社,2005[4] 罗伟坚.Visual C++经典游戏程序设计. [M].人民邮电出版社,2006[5]《Visual C ++ 程序设计—基础与实例分析》,朱晴婷,黄海鹰,陈莲君,[M].清华大学出版社[6]《Visual C++面向对象与可视化程序设计(第2版)》,黄维通,[M].清华大学出版社[7] 刘振安、刘燕君、孙忱,《C++语言课程设计》,[M].机械工业出版社,2007年[8] 严华峰. Visual C++课程设计案例精编. [M].北京:中国水利水电出版社,2002。
VC++6.0计算器简易功能实现
VC++6.0计算器简易功能实现内容:任务2_3,编写计算机菜单并实行运算,再添加几个功能日期:0401----------------------------------------------------------*/#include "stdio.h"#include "conio.h"#include "stdlib.h"#include "math.h"#define PI 3.1415926void main(){char opere;int x,y,n,k,fact=1;double r,r1,r2,r3,r4,i,j,h,result;float m,a,b,c,e,x1,x2,max,min;char ch='%';system("cls");printf("\n\n");printf("\t****************************************************** **\n");printf("\t 简单计算器菜单功能 \n");printf("\t****************************************************** **\n");printf("\n");printf("\t + --------------加法运算\n");printf("\t - --------------减法运算\n");printf("\t * --------------乘法运算\n");printf("\t / --------------除法运算\n");printf("\t %c --------------余数\n", ch);printf("\t ! --------------阶乘\n");printf("\t ^ --------------平方值\n");printf("\t @ --------------平均值\n");printf("\t & --------------奇偶数\n");printf("\t J --------------绝对值\n");printf("\t $ --------------极值\n");printf("\t ~ --------------方程一元二次的实数根\n");printf("\t ? --------------根号\n");printf("\t A --------------三角函数\n");printf("\t Y --------------圆的面积和周长\n");printf("\t S --------------三角形的面积及周长\n");printf("\t Q --------------球的体积及表面积\n");printf("\t # --------------退出\n");printf("\n");printf("\t****************************************************** ***\n");printf("\n请选择菜单功能(+ - * / % ! ^ @ & J $ ~ #):");scanf("%c",&opere);if(opere=='!'){printf("请输入你的运算数据(整数):");scanf("%d",&n);if(n<0) printf("输入错误!\n");else if(n==0) printf("0!=%d\n",fact);else{for(k=1;k<=n;k++) fact*=k;printf("%d!=%d\n",n,fact);exit(0);}if(opere=='S'){printf("请分别输入三角形的三条边(逗号隔开):");scanf("%f,%f,%f",&a,&b,&c);if(a+b<=c&&a-b>=c||a+c<=b&&a-c>=b||b+c<=a&&b-c>=a) printf("不是三角形的三条边,请重新输入!");else{m=(a+b+c)/2;x1=(float)(sqrt(m*(m-a)*(m-b)*(m-c)));x2=a+b+c;printf("三角形的面积:%f\n三角形的周长:%f\n",x1,x2);}exit(0);}if(opere=='Y'){printf("请输入圆的半径:");scanf("%lf",&h);if(h<0) printf("半径不小于0,请重新输入!");else{r1=PI*h*h;r2=2*PI*h;}printf("圆的面积是:%4lf\n圆的周长是:%4lf\n",r1,r2);exit(0);}if(opere=='Q')printf("请输入球的半径:");scanf("%lf",&h);if(h<0) printf("半径不小于0,请重新输入!");else{r3=4/3*PI*h*h*h;r4=4*PI*h*h;}printf("球的体积是:%lf\n球的体积是:%lf\n",r3,r4);exit(0);}if(opere=='A'){printf("请输入度数:");scanf("%lf",&h);r=h/180*PI;printf("正弦: %lf\n余弦: %lf\n正切: %lf\n", sin(r), cos(r), tan(r)); exit(0);}if(opere=='&'){printf("请输入一个整数:");scanf("%d",&x);y=x%2;if(y==0) printf("%d为偶数\n",x);else printf("%d为奇数\n",x);exit(0);}if(opere=='J')printf("请输入一个整数:");scanf("%f",&m);if(m<0) m=-m;printf("绝对值为%f\n",m);exit(0);}if(opere=='~'){printf("请分别输入系数a,b,c的值(并用逗号','隔开):\n"); scanf("%f,%f,%f",&a,&b,&c);e=b*b-4*a*c;if(e==0){x1=(-b)/(2*a);printf("x1=x2=%f\n",x1);}if(e>=0){x1=(float)((-b)+sqrt(e))/(2*a);x2=(float)((-b)-sqrt(e))/(2*a);printf("x1=%0.2f\tx2=%0.2f\n",x1,x2);}if(e<0) printf("方程无实数根\n");exit(0);}if(opere=='$'){printf("请输入两个值(SP):\n");scanf("%f %f",&a,&b);max=(a>=b)? a:b;min=(a<=b)? a:b;printf("max=%f\tmin=%f\n",max,min); exit(0);}if(opere=='^'){printf("请分别输入底数和指数(SP):"); scanf("%d %d",&k,&y);if(k==0&&y==0) printf("该函数无意义\n"); elsefor(x=1;x<=y;x++)fact*=k;printf("%d^%d=%d\n",k,y,fact);exit(0);}if(opere=='?'){printf("请输入一个整数:\n");scanf("%d",&x);a=(float)sqrt(x);printf("%d的根号是%f\n",x,a);exit(0);}if(opere=='#') exit(0);if(opere=='+'||'-'||'*'||'/'||'%'||'@')printf("请输入两个正整数(SP):\n");scanf("%lf %lf",&i,&j);switch( opere ){case '+': printf("%f+%f=%f\n",i,j,i+j); break;case '-': printf("%f-%f=%f\n",i,j,i-j); break;case '*': printf("%f*%f=%f\n",i,j,i*j); break;case '/': printf("%f/%f=%f\n",i,j,i/j); break;case '%': result = (int)i%(int)j; printf("余数为:%f\n",result); break;case '@': printf("(%f+%f)/2=%f\n",i,j,(i+j)/2); break;default: printf("数据输入无效,请按菜单选择重新输入!\n");};}/*个人闲暇解闷敲敲,请勿吐槽*/。
C++课程设计(计算器)--用VC++制作多功能计算器
C++课程设计(计算器)--用VC++制作多功能计算器用VC++制作多功能计算器目录摘要 ..................................................................... ............................... 2 1 引言 ..................................................................... . (2)1.1 课题背景 ..................................................................... (2)1.2课程设计目的 ..................................................................... .. 2 2 开发工具的介绍 ..................................................................... (3)2.1关于VisualC++ ....................................................................32.2可行性分析 ..................................................................... (4)2.3需求分析 ..................................................................... .......... 4 3 功能说明 ..................................................................... ................. 4 4 系统的实现 ..................................................................... .. (5)4.1窗体设计 ..................................................................... . (5)4.2编辑资源 ..................................................................... . (6)4.3实现高级按钮控件类 (8)4.4实现高级编辑控件类 (12)4.5对话框界面设计 (15)4.6数值计算功能的实现 (20)5 程序结果的演示 ..................................................................... . (21)5.1测试的研究与选择 (21)5.2测试环境 ..................................................................... .. (21).3实例测试结果 .....................................................................22 5结束语 ..................................................................... . (23)参考文献 ..................................................................... . (23)用VC++制作多功能计算器摘要本课程设计将实现一个简单计算器。
VC++MFC计算器课程设计
Windows程序设计作业报告设计题目:MFC计算器系别:信息与自动化工程专业:电子与通信工程姓名:高小雨学号:2013704011一、设计目的及要求1.1设计目的能够熟练掌握MFC中的各个控件,消息的处理与添加,能够独立完成一些简单的算法,并且能够具体实现一些功能,真正可以利用功能比较强大的MFC 编译出较好的程序代码。
本设计完成的是一个具有比较齐全运算功能的计算器。
1.2设计要求利用Microsoft Visual C++的MFC制作一个多功能计算器,要求:(1)能够实现最基本的加、减、乘、除四则基本运算;(2)添加了计算类型,分别是弧度制、度数制;(3)界面有正负、清空、等于方便用户计算使用;(4)重点是此计算器具有倒数、多次方、开方、三角函数、反三角函数、指数、阶乘等高级运算。
1.3软件、硬件环境本程序采用Microsoft Visual C++6.0的英文版本进行编译。
VisualC++6.0是Microsoft公司推出的基于Windows操作系统的可视化C++编程工具,尽管Microsoft公司推出了.NET平台的集成开发环境,但由于其良好的界面和可操作性,加上支持标准C/C++规范,但仍有相当多的编程人员使用VisualC++6.0进行应用系统的开发。
二、课程设计步骤2.1 Windows消息处理机制的理解首先编写程序需要对Windows程序的消息处理机制有个比较清晰的了解。
Windows的程序都是通过消息来传送数据,有不需要用户参与的系统消息,比如异常处理等。
2.2界面的设计仿照Windows附件里面的计算器,在Dialog视图中画好界面,主要使用的菜单中的相关控件,并合理布置各个按钮的位置,使界面更加整洁。
在各个控件的属性里依次定义好名称,之后屏幕显示的就是如图一样的可视计算器界面:三、课程设计内容3.1 概要设计依次将各个功能按钮设置相关的ID和控件类,一下为各类按键的一个举例,以下为数字0的属性设置,及其ID和标题名称,其余数字键属性设置与其相似。
vc课程设计计算器
vc 课程设计计算器一、教学目标本课程旨在让学生掌握计算器的基本使用方法,理解计算器在数学和科学计算中的应用,培养学生的逻辑思维能力和解决问题的能力。
具体目标如下:知识目标:使学生了解计算器的各种功能及其应用场景,掌握计算器的基本操作方法。
技能目标:能够运用计算器进行简单的数学计算、科学计算和数据处理,提高计算准确性和效率。
情感态度价值观目标:培养学生对科学技术的兴趣和好奇心,激发学生探索未知、创新思维的精神。
二、教学内容本课程的教学内容主要包括以下几个部分:1.计算器的基本结构:介绍计算器的各种按键功能及其对应的操作。
2.计算器的使用方法:讲解如何使用计算器进行数学计算、科学计算和数据处理。
3.计算器在实际应用中的案例分析:通过实际案例,使学生了解计算器在日常生活和学习中的重要作用。
4.计算器的维护与保养:教授学生如何正确使用和维护计算器,延长其使用寿命。
三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式:1.讲授法:教师讲解计算器的基本原理、功能及使用方法。
2.讨论法:分组讨论计算器在实际应用中遇到的问题,培养学生解决问题的能力。
3.案例分析法:分析实际案例,使学生了解计算器在生活和学习中的重要作用。
4.实验法:让学生亲自动手操作计算器,进行实际计算,巩固所学知识。
四、教学资源为了支持本课程的教学,我们将准备以下教学资源:1.教材:选用内容丰富、适合学生年龄特点的计算器教材。
2.参考书:提供相关的计算器使用手册和资料,供学生课后自学。
3.多媒体资料:制作课件、教学视频等,以生动形象的方式展示计算器的使用方法。
4.实验设备:为学生提供足够的计算器,以便进行实际操作和实验。
五、教学评估为了全面、客观地评估学生的学习成果,本课程将采用以下评估方式:1.平时表现:观察学生在课堂上的参与程度、提问回答等情况,了解学生的学习态度和兴趣。
2.作业:布置适量的课后作业,检查学生对课堂所学知识的掌握程度。
C++课程设计(计算器)--用VC++制作多功能计算器
C++课程设计(计算器)--用VC++制作多功能计算器用VC++制作多功能计算器目录摘要 ..................................................................... ............................... 2 1 引言 ..................................................................... . (2)1.1 课题背景 ..................................................................... (2)1.2课程设计目的 ..................................................................... .. 2 2 开发工具的介绍 ..................................................................... (3)2.1关于VisualC++ ....................................................................32.2可行性分析 ..................................................................... (4)2.3需求分析 ..................................................................... .......... 4 3 功能说明 ..................................................................... ................. 4 4 系统的实现 ..................................................................... .. (5)4.1窗体设计 ..................................................................... . (5)4.2编辑资源 ..................................................................... . (6)4.3实现高级按钮控件类 (8)4.4实现高级编辑控件类 (12)4.5对话框界面设计 (15)4.6数值计算功能的实现 (20)5 程序结果的演示 ..................................................................... . (21)5.1测试的研究与选择 (21)5.2测试环境 ..................................................................... .. (21).3实例测试结果 .....................................................................22 5结束语 ..................................................................... . (23)参考文献 ..................................................................... . (23)用VC++制作多功能计算器摘要本课程设计将实现一个简单计算器。
VC++设计简易计算器
VC++设计简易计算器// CalculatorDlg.cpp : implementation file//#include "stdafx.h"#include "Calculator.h"#include "CalculatorDlg.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endifextern MyOperator optrs[14];extern Compare op[14][14];/////////////////////////////////////////////////////////////////// //////////// CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialog{public:CAboutDlg();// Dialog Data//{{AFX_DATA(CAboutDlg)enum { IDD = IDD_ABOUTBOX };//}}AFX_DATA// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support//}}AFX_VIRTUAL// Implementationprotected://{{AFX_MSG(CAboutDlg)//}}AFX_MSGDECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD){//{{AFX_DATA_INIT(CAboutDlg)//}}AFX_DATA_INIT}void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CAboutDlg)//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)//{{AFX_MSG_MAP(CAboutDlg)// No message handlers//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////// //////////// CCalculatorDlg dialogCCalculatorDlg::CCalculatorDlg(CWnd* pParent /*=NULL*/) : CDialog(CCalculatorDlg::IDD, pParent){//{{AFX_DATA_INIT(CCalculatorDlg)m_strResult = _T("");//}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}void CCalculatorDlg::DoDataExchange(CDataExchange* pDX) {CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CCalculatorDlg)DDX_Control(pDX, IDC_EDIT_RESULT, m_editResult);DDX_Text(pDX, IDC_EDIT_RESULT, m_strResult);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CCalculatorDlg, CDialog)//{{AFX_MSG_MAP(CCalculatorDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_EQUAL, OnEqual)ON_BN_CLICKED(IDC_NUM_1, OnNum1)ON_BN_CLICKED(IDC_NUM_0, OnNum0)ON_BN_CLICKED(IDC_NUM_2, OnNum2)ON_BN_CLICKED(IDC_NUM_3, OnNum3)ON_BN_CLICKED(IDC_NUM_4, OnNum4)ON_BN_CLICKED(IDC_NUM_5, OnNum5)ON_BN_CLICKED(IDC_NUM_6, OnNum6)ON_BN_CLICKED(IDC_NUM_7, OnNum7)ON_BN_CLICKED(IDC_NUM_8, OnNum8)ON_BN_CLICKED(IDC_NUM_9, OnNum9)ON_BN_CLICKED(IDC_POW, OnPow)ON_BN_CLICKED(IDC_SIN, OnSin)ON_BN_CLICKED(IDC_TAN, OnTan)ON_BN_CLICKED(IDC_NEGATIVE, OnNegative) ON_BN_CLICKED(IDC_MUT, OnMut)ON_BN_CLICKED(IDC_LOG, OnLog)ON_BN_CLICKED(IDC_LN, OnLn)ON_BN_CLICKED(IDC_DIV, OnDiv)ON_BN_CLICKED(IDC_DOT, OnDot)ON_BN_CLICKED(IDC_DEC, OnDec)ON_BN_CLICKED(IDC_COT, OnCot)ON_BN_CLICKED(IDC_ADD, OnAdd)ON_BN_CLICKED(IDC_COS, OnCos)ON_BN_CLICKED(IDC_AC, OnAc)ON_BN_CLICKED(IDC_BACK, OnBack)//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CCalculatorDlg message handlersBOOL CCalculatorDlg::OnInitDialog(){CDialog::OnInitDialog();// Add "About..." menu item to system menu.// IDM_ABOUTBOX must be in the system command range.ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// Set the icon for this dialog. The framework does this automatically// when the application's main window is not a dialogSetIcon(m_hIcon, TRUE); // Set big iconSetIcon(m_hIcon, FALSE); // Set small icon// TODO: Add extra initialization heremc.InitStack();OperatorPressed=false;m_strResult="0.0";UpdateData(FALSE);Restarted=true;return TRUE; // return TRUE unless you set the focus to a control}void CCalculatorDlg::OnSysCommand(UINT nID, LPARAM lParam){if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialog::OnSysCommand(nID, lParam);}}// If you add a minimize button to your dialog, you will need the code below// to draw the icon. For MFC applications using the document/view model,// this is automatically done for you by the framework.void CCalculatorDlg::OnPaint(){if (IsIconic()){CPaintDC dc(this); // device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);// Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// Draw the icondc.DrawIcon(x, y, m_hIcon);}else{CDialog::OnPaint();}// The system calls this to obtain the cursor to display while the user drags// the minimized window.HCURSOR CCalculatorDlg::OnQueryDragIcon(){return (HCURSOR) m_hIcon;}void CCalculatorDlg::OnEqual(){UpdateData(TRUE);if(OperatorPressed==false)mc.PushOpnd(mc.StringToDouble(m_strResult));mc.CalculateAll();m_strResult=mc.GetResult();UpdateData(FALSE);}void CCalculatorDlg::OnNum1(){UpdateData(TRUE);if(OperatorPressed==true||Restarted==true)m_strResult="1";elsem_strResult+="1";OperatorPressed=false;Restarted=false;UpdateData(FALSE);void CCalculatorDlg::OnNum0(){UpdateData(TRUE);if(OperatorPressed==true||Restarted==true) m_strResult="0";elsem_strResult+="0";OperatorPressed=false;Restarted=false;UpdateData(FALSE);}void CCalculatorDlg::OnNum2(){UpdateData(TRUE);if(OperatorPressed==true||Restarted==true) m_strResult="2";elsem_strResult+="2";OperatorPressed=false;Restarted=false;UpdateData(FALSE);}void CCalculatorDlg::OnNum3(){UpdateData(TRUE);if(OperatorPressed==true||Restarted==true) m_strResult="3";elsem_strResult+="3";OperatorPressed=false;Restarted=false;UpdateData(FALSE);}void CCalculatorDlg::OnNum4(){UpdateData(TRUE);if(OperatorPressed==true||Restarted==true) m_strResult="4";elsem_strResult+="4";OperatorPressed=false;Restarted=false;UpdateData(FALSE);}void CCalculatorDlg::OnNum5(){UpdateData(TRUE);if(OperatorPressed==true||Restarted==true) m_strResult="5";elsem_strResult+="5";OperatorPressed=false;Restarted=false;UpdateData(FALSE);}void CCalculatorDlg::OnNum6(){UpdateData(TRUE);if(OperatorPressed==true||Restarted==true) m_strResult="6";elsem_strResult+="6";OperatorPressed=false;Restarted=false;UpdateData(FALSE);}void CCalculatorDlg::OnNum7(){UpdateData(TRUE);if(OperatorPressed==true||Restarted==true) m_strResult="7";elsem_strResult+="7";OperatorPressed=false;Restarted=false;UpdateData(FALSE);}void CCalculatorDlg::OnNum8(){UpdateData(TRUE);if(OperatorPressed==true||Restarted==true)m_strResult="8";elsem_strResult+="8";OperatorPressed=false;Restarted=false;UpdateData(FALSE);}void CCalculatorDlg::OnNum9(){UpdateData(TRUE);if(OperatorPressed==true||Restarted==true)m_strResult="9";elsem_strResult+="9";OperatorPressed=false;Restarted=false;UpdateData(FALSE);}void CCalculatorDlg::OnPow(){UpdateData(TRUE);mc.PushOpnd(mc.StringToDouble(m_strResult)); mc.PushOptr(optrs[9]);m_strResult=mc.GetResult();UpdateData(FALSE);OperatorPressed=true;}void CCalculatorDlg::OnSin(){UpdateData(TRUE);mc.PushOpnd(mc.StringToDouble(m_strResult)); mc.PushOptr(optrs[4]);m_strResult=mc.GetResult();UpdateData(FALSE);OperatorPressed=true;}void CCalculatorDlg::OnTan(){UpdateData(TRUE);mc.PushOpnd(mc.StringToDouble(m_strResult)); mc.PushOptr(optrs[6]);m_strResult=mc.GetResult();UpdateData(FALSE);OperatorPressed=true;}void CCalculatorDlg::OnNegative(){UpdateData(TRUE);if(m_strResult.GetAt(0)=='-')m_strResult=m_strResult.Mid(1);elsem_strResult="-"+m_strResult;UpdateData(FALSE);}void CCalculatorDlg::OnMut(){UpdateData(TRUE);mc.PushOpnd(mc.StringToDouble(m_strResult)); mc.PushOptr(optrs[2]);m_strResult=mc.GetResult();UpdateData(FALSE);OperatorPressed=true;}void CCalculatorDlg::OnLog(){UpdateData(TRUE);mc.PushOpnd(mc.StringToDouble(m_strResult)); mc.PushOptr(optrs[11]);m_strResult=mc.GetResult();UpdateData(FALSE);OperatorPressed=true;}void CCalculatorDlg::OnLn(){UpdateData(TRUE);mc.PushOpnd(mc.StringToDouble(m_strResult)); mc.PushOptr(optrs[10]);m_strResult=mc.GetResult();UpdateData(FALSE);OperatorPressed=true;void CCalculatorDlg::OnDiv(){UpdateData(TRUE);mc.PushOpnd(mc.StringToDouble(m_strResult)); mc.PushOptr(optrs[3]);m_strResult=mc.GetResult();UpdateData(FALSE);OperatorPressed=true;}void CCalculatorDlg::OnDot(){UpdateData(TRUE);m_strResult+=".";UpdateData(FALSE);}void CCalculatorDlg::OnDec(){UpdateData(TRUE);mc.PushOpnd(mc.StringToDouble(m_strResult)); mc.PushOptr(optrs[1]);m_strResult=mc.GetResult();UpdateData(FALSE);OperatorPressed=true;}void CCalculatorDlg::OnCot()UpdateData(TRUE);mc.PushOpnd(mc.StringToDouble(m_strResult)); mc.PushOptr(optrs[7]);m_strResult=mc.GetResult();UpdateData(FALSE);OperatorPressed=true;}void CCalculatorDlg::OnAdd(){UpdateData(TRUE);mc.PushOpnd(mc.StringToDouble(m_strResult)); mc.PushOptr(optrs[0]);m_strResult=mc.GetResult();UpdateData(FALSE);OperatorPressed=true;}void CCalculatorDlg::OnCos(){UpdateData(TRUE);mc.PushOpnd(mc.StringToDouble(m_strResult)); mc.PushOptr(optrs[5]);m_strResult=mc.GetResult();UpdateData(FALSE);OperatorPressed=true;}void CCalculatorDlg::OnAc(){Restarted=true;mc.InitStack();m_strResult="0.0";UpdateData(FALSE);}void CCalculatorDlg::OnBack(){UpdateData(TRUE);if(m_strResult!="0"&&m_strResult!="0.0"&&m_strResult.Lef t(m_strResult.GetLength()-1)!="")m_strResult=m_strResult.Left(m_strResult.GetLength()-1);elsem_strResult="0.0";UpdateData(FALSE);}。
用C语言设计一个多功能计算器
用C语言设计一个多功能计算器实现功能:1)具备整型数据、浮点型数据的算术(加、减、乘、除)运算功能。
依次输入第一个运算数、运算符(+,-,*,/),第二个运算数,然后输出结果。
结果可以作为下一个运算的第一运算数。
按‘C’清屏,按‘X’退出。
例如:输入:2+5输出:72)实现单运算符表达式计算的功能。
输入的操作数可以包含整数或浮点数。
如果遇到错误的表达式,应输出错误提示信息。
输入表达式如下:例如:输入:2+5输出:7目录摘要 (1)第一章引言 (3)1.1 计算器概述 (3)第二章设计任务及要求 (5)2.1 设计任务 (5)2.2 设计要求 (6)第三章计算器硬件设计 (7)3.1 方案说明 (7)3.2 设计单片机主体电路图 (8)第四章软件设计 (9)4.1 模块介绍 (9)4.2 程序流程图 (10)4.3 程序部分 (11)第五章总结 (16)参考文献 (17)摘要:[目录]一、课程设计题目及任务要求二、设计思路三、部分程序介绍四、程序框图五、汇编程序六、参考资料[原文]一、课程设计题目及任务要求请设计十进制加减法计算器。
要求能(不同时)显示3位输入和4位输出。
二、设计思路1、操作显示设备显示设备采用八片七段共阴极LED显示器,共设置16 个键,其中数字键0~9 共十个,接下来依次是加号键、减号键、等于号、清除键。
操作设备是两行八列共16键的简单键盘。
第一行从左至右分别为0、1、2、3、4、5、6、7,第二行分别为8、9、A(+)、B(-)、C(=)、D(清除键)、E (清除键)、F(清除键),“清除键”表示程序初始化,为下次输入准备。
2、程序实现功能(1)十进制加减法计算:输入范围为(1~999),该程序输入两个定点数,每个3位,输出4位;A为加,B为减,C为等于,输出为四位计算结果。
数据输入采用规范化输入,即必须输入3个数才算完成一个运算数的输入,两个运算数之间输入运算符A或者B,输入完成按C显示计算结果;(2)计算机复位功能:DEF均为清零重启,任何时候按下DEF中一个将重新开始;三、部分程序介绍(1)主程序(START)程序开始运行初始化程序,设置输入输出口PA、PB、PC,扫描键盘,输入两个待求数据和运算符,存入寄存器,等待输入等号同时显示第二个数,运行计算程序,并将计算结果分离,输出到显示器;(2)读键子程序(RD_KB)程序分别扫描两行键盘,若有键按下则通过移位的方式计算键码;若无键按下,则将键码缓存设置为10H,判断后进行相应的跳转。
vc计算器实验报告
VC计算器实验报告1. 引言计算器是我们日常生活中经常使用的工具之一。
它可以帮助我们进行简单的数学运算,如加减乘除,以及更复杂的科学计算。
然而,传统的计算器通常功能有限,无法满足我们日益增长的计算需求。
为了解决这个问题,我们设计并实现了一款名为VC计算器的应用程序。
本文将详细介绍VC计算器的设计思路、功能特点以及实现过程。
2. 设计思路VC计算器的设计思路基于“step by step thinking”的理念,即通过逐步思考和分解问题来实现复杂的功能。
我们希望用户能够通过简单的步骤,逐渐构建出复杂的计算式,并获得准确的计算结果。
3. 功能特点3.1 基本计算功能VC计算器支持基本的四则运算,包括加法、减法、乘法和除法。
用户可以通过逐步输入数字和运算符,构建出复杂的计算式,并得到准确的计算结果。
3.2 科学计算功能除了基本的四则运算,VC计算器还提供了一些常用的科学计算功能,如三角函数、对数函数、指数函数等。
用户可以通过简单的步骤,构建出复杂的科学计算式,并得到准确的计算结果。
3.3 变量和函数支持为了进一步增强计算器的功能,我们在VC计算器中添加了变量和函数的支持。
用户可以定义和使用变量,以及定义和调用函数。
这样,用户可以根据自己的需求,自定义复杂的计算式,并得到准确的计算结果。
4. 实现过程4.1 界面设计我们通过使用Markdown文本格式来展示VC计算器的界面设计。
下面是一个示例界面:==========================================VC计算器==========================================[1] 2 + 3 = 5[2] sin(45) = 0.707[3] x = 10[4] y = 5[5] x + y = 15[6] f(x) = 2x + 1[7] f(5) = 114.2 代码实现VC计算器的代码实现主要分为以下几个步骤:1.解析用户输入,获取操作符和操作数。
C语言编写一个计算器界面(可视化界面和多功能)
C语⾔编写⼀个计算器界⾯(可视化界⾯和多功能)⽬录引⾔计算器总结引⾔在⼤学期间,C 语⾔或者数据结构等课程,⽼师会要求学⽣编写⼀个⼩项⽬练⼿,或者期末编写⼀个⼩软件等课程设计。
今天在电脑看到⼤⼀学C语⾔时,实验课上写的计算器功能,挺有意思。
所以在此分享给学C语⾔的学弟学妹,记得收藏保留!计算器简单版本计算器,主要实现的是简单两个数的加法,减法,乘法,除法,求余功能。
⽤户可以在主菜单选择需要计算的功能,然后根据⽤户输⼊的数字,进⾏计算,输出结果。
⾸先,我们定义五个⽅法,实现两个数的加法,减法,乘法,除法,求余功能。
代码如下:// 加法float add(float a, float b) {return a + b;}// 减法float sub(float a, float b) {return a - b;}// 乘法float mul(float a, float b) {return a * b;}// 除法float mod(float a, float b) {return a / b;}// 求余int com(int a, int b) {return a % b;}然后定义⼀个打印主菜单界⾯的函数,使⽤简介美观的菜单界⾯,供⽤户选择要计算的功能,代码如下:// 打印主功能菜单void printMenu() {// 清屏// system("cls");printf("|----------------------- 计算器 -----------------------|\n");printf("| |\n");printf("| By -- 陈⽪的JavaLib |\n");printf("| |\n");printf("|---------------------- 1:加法 -----------------------|\n");printf("|---------------------- 2:减法 -----------------------|\n");printf("|---------------------- 3:乘法 -----------------------|\n");printf("|---------------------- 4:除法 -----------------------|\n");printf("|---------------------- 5:求余 -----------------------|\n");printf("|---------------------- 6:退出 -----------------------|\n");printf("| |\n");printf("|----------------------- 计算器 -----------------------|\n");}最后,我们在主函数 main 中,定义⼀个 while 循环代码块,不断读取⽤户输⼊的内容,进⾏数字计算,代码如下:int main() {// 选择的功能int select = 0;// 定义算术的两个数float a, b;while (select != 6){select = 0;// 打印主菜单printMenu();// 只允许选择菜单栏内的数字,不是则重新选择while (select < 1 || select > 6) {printf("请输⼊菜单功能(1-6):");scanf("%d", &select);}if (6 == select) {printf("\n|----------------- 欢迎使⽤计算器!再见!-----------------|\n"); return 0;}printf("\n请输⼊两个数(⽤空格隔开两个数):");scanf("%f %f", &a, &b);switch (select) {case 1:printf("%f+%f=%f\n\n", a, b, add(a, b));break;case 2:printf("%f-%f=%f\n\n", a, b, sub(a, b));break;case 3:printf("%f*%f=%f\n\n", a, b, mul(a, b));break;case 4:printf("%f/%f=%f\n\n", a, b, mod(a, b));break;case 5:printf("%f/%f=%d\n\n", a, b, com((int)a, (int)b));break;case 6:default:break;}}}下⾯我们演⽰⼏个例⼦,能更加直观体验计算器的功能:菜单功能选择错误,会提⽰重新选择加法除法退出简单版本计算器,完整代码如下:#include <stdio.h>#include <stdlib.h>// 加法float add(float a, float b) {return a + b;}// 减法float sub(float a, float b) {return a - b;}// 乘法float mul(float a, float b) {return a * b;}// 除法float mod(float a, float b) {return a / b;}// 求余int com(int a, int b) {return a % b;}// 打印主功能菜单void printMenu() {// 清屏// system("cls");printf("|----------------------- 计算器 -----------------------|\n");printf("| |\n");printf("| By -- 陈⽪的JavaLib |\n"); printf("| |\n");printf("|---------------------- 1:加法 -----------------------|\n");printf("|---------------------- 2:减法 -----------------------|\n");printf("|---------------------- 3:乘法 -----------------------|\n");printf("|---------------------- 4:除法 -----------------------|\n");printf("|---------------------- 5:求余 -----------------------|\n");printf("|---------------------- 6:退出 -----------------------|\n");printf("| |\n");printf("|----------------------- 计算器 -----------------------|\n");}/*** 简单版本计算器功能 By -- 陈⽪的JavaLib* @return*/int main() {// 选择的功能int select = 0;// 定义算术的两个数float a, b;while (select != 6){select = 0;// 打印主菜单printMenu();// 只允许选择菜单栏内的数字,不是则重新选择while (select < 1 || select > 6) {printf("请输⼊菜单功能(1-6):");scanf("%d", &select);}if (6 == select) {printf("\n|----------------- 欢迎使⽤计算器!再见!-----------------|\n");return 0;}printf("\n请输⼊两个数(⽤空格隔开两个数):");scanf("%f %f", &a, &b);switch (select) {case 1:printf("%f+%f=%f\n\n", a, b, add(a, b));break;case 2:printf("%f-%f=%f\n\n", a, b, sub(a, b));break;case 3:printf("%f*%f=%f\n\n", a, b, mul(a, b));break;case 4:printf("%f/%f=%f\n\n", a, b, mod(a, b));break;case 5:printf("%f/%f=%d\n\n", a, b, com((int)a, (int)b));break;case 6:default:break;}}}总结在⼤学期间,如果是计算机类的专业,⼀般都会学习 C 语⾔,作为编程⼊门语⾔,⼤家⼀定要学习好此门语⾔,⽽且如果学好了,其实学习其他编程语⾔就很容器上⼿的,不同语⾔其实⼤同⼩异,只要你编程思维提升了,基础语法掌握了,才能学习更加深⼊的知识。
VC计算器的实现
功能概述:一个计算器的制作主要实现数与数之间的加、减、乘、除运算,其中包括整数以及小数之间的加、减、乘、除运算,因此计算器要实现的功能大致如下:(1)实现整数与整数之间的加减乘除运算,并输出结果;(2)实现整数与小数之间的加减乘除运算,并输出结果;(3)实现小数与小数之间的加减乘除运算,并输出结果;实现上述功能的总体结构如下:基本流程:(1)根据效果图创建基于对话框的应用程序;(2)在对话框资源上添加按钮控件,并设置按钮控件和编辑框控件的标题和ID,并且将编辑框设置为只读属性。
最终运行结果如下图:(3)添加单击数字按钮和加、减、乘、除按钮,及单击“等号”按钮的消息响应函数;(4)添加消息响应函数的函数体;(5)程序调试无误后,进行测试,分析测试结果。
保证程序的正确性。
程序中所添加代码的分析:(1)在类CGeliangDlg中添加数据成员:CString num1;(数值计算符号前面的数值)CString num2;(数值计算后面的数值)BOOL isresult;(是否按下加、减、乘、除符号)int witch;(判断是加、减、乘、除哪种运算)上面的数据成员是为了保存所按按钮的信息。
(2)在CGeliangDlg::OnInitDialog()函数中进行变量的初始化工作。
num1="";(初始化第一个数据)num2="";(初始化第二个数据)isresult=FALSE;(保存是否点击了运算按钮)witch=0;(保存运算按钮)添加按钮“1”函数操作如下:代码如下:void CGeliang1Dlg::OnN1() //单击1按钮{// TODO: Add your control notification handler code hereif(isresult==FALSE) //没有单击运算符,则num1变化,且当前显示num1 {num1+="1";m_result=num1;UpdateData(false);}if(isresult==TRUE) //单击运算符,则num2变化,且当前显示num2 {num2+="1";m_result=num2;UpdateData(false);}}添加按钮“2”操作如下:具体操作如按钮“1”,代码如下:void CGeliang1Dlg::OnN2() //单击"2"按钮{// TODO: Add your control notification handler code hereif(isresult==FALSE) //没有单击运算符,则num1变化,且当前显示num1 {num1+="2";m_result=num1;UpdateData(false);}if(isresult==TRUE) //单击运算符,则num2变化,且当前显示num2 {num2+="2";m_result=num2;UpdateData(false);}}添加按钮“3”操作如下:具体操作如按钮“1”,代码如下:void CGeliang1Dlg::OnN3() //单击"3"按钮{// TODO: Add your control notification handler code hereif(isresult==FALSE) //没有单击运算符,则num1变化,且当前显示num1 {num1+="3";m_result=num1;UpdateData(false);}if(isresult==TRUE) //单击运算符,则num2变化,且当前显示num2 {num2+="3";m_result=num2;UpdateData(false);}}添加按钮“4”操作如下:具体操作如按钮“1”,代码如下:void CGeliang1Dlg::OnN4() //单击"4"按钮{// TODO: Add your control notification handler code hereif(isresult==FALSE) //没有单击运算符,则num1变化,且当前显示num1 {num1+="4";m_result=num1;UpdateData(false);}if(isresult==TRUE) //单击运算符,则num2变化,且当前显示num2 {num2+="4";m_result=num2;UpdateData(false);}}添加按钮“5”操作如下:具体操作如按钮“1”,代码如下:void CGeliang1Dlg::OnN5() //单击"5"按钮{// TODO: Add your control notification handler code hereif(isresult==FALSE) //没有单击运算符,则num1变化,且当前显示num1 {num1+="5";m_result=num1;UpdateData(false);}if(isresult==TRUE) //单击运算符,则num2变化,且当前显示num2 {num2+="5";m_result=num2;UpdateData(false);}}添加按钮“6”操作如下:具体操作如按钮“1”,代码如下:void CGeliang1Dlg::OnN6() //单击"6"按钮{// TODO: Add your control notification handler code hereif(isresult==FALSE) //没有单击运算符,则num1变化,且当前显示num1 {num1+="6";m_result=num1;UpdateData(false);}if(isresult==TRUE) //单击运算符,则num2变化,且当前显示num2 {num2+="6";m_result=num2;UpdateData(false);}}添加按钮“7”操作如下:具体操作如按钮“1”,代码如下:void CGeliang1Dlg::OnN7() //单击"7"按钮{// TODO: Add your control notification handler code hereif(isresult==FALSE) //没有单击运算符,则num1变化,且当前显示num1 {num1+="7";m_result=num1;UpdateData(false);}if(isresult==TRUE) //单击运算符,则num2变化,且当前显示num2 {num2+="7";m_result=num2;UpdateData(false);}}添加按钮“8”操作如下:具体操作如按钮“1”,代码如下:void CGeliang1Dlg::OnN8() //单击"8按钮"{// TODO: Add your control notification handler code hereif(isresult==FALSE) //没有单击运算符,则num1变化,且当前显示num1 {num1+="8";m_result=num1;UpdateData(false);}if(isresult==TRUE) //单击运算符,则num2变化,且当前显示num2 {num2+="8";m_result=num2;UpdateData(false);}}添加操作按钮“9”操作如下:具体操作如按钮“1”,代码如下:void CGeliang1Dlg::OnN9() //单击"9"按钮{// TODO: Add your control notification handler code hereif(isresult==FALSE) //没有单击运算符,则num1变化,且当前显示num1 {num1+="9";m_result=num1;UpdateData(false);}if(isresult==TRUE) //单击运算符,则num2变化,且当前显示num2 {num2+="9";m_result=num2;UpdateData(false);}}添加按钮“0”操作如下:具体操作如按钮“1”,代码如下:void CGeliang1Dlg::OnN0() //单击"0"按钮{// TODO: Add your control notification handler code hereif(isresult==FALSE) //没有单击运算符,则num1变化,且当前显示num1 {num1+="0";m_result=num1;UpdateData(false);}if(isresult==TRUE) //单击运算符,则num2变化,且当前显示num2 {num2+="0";m_result=num2;UpdateData(false);}}添加按钮“+/-”操作如下:具体操作如按钮“1”,代码如下:void CGeliang1Dlg::OnN10() //单击"+/-"按钮{// TODO: Add your control notification handler code hereCString m_m="-";if(isresult==FALSE) //没有单击运算符,则把num1显示内容加"-"{m_m+=num1;m_result=m_m;UpdateData(false);}if(isresult==TRUE) //单击运算符,则把num2显示内容加"-"{m_m+=num2;m_result=m_m;UpdateData(false);}}添加按钮“.”操作如下:具体操作如按钮“1”,代码如下:void CGeliang1Dlg::OnN11() //单击"."按钮{// TODO: Add your control notification handler code hereif(isresult==FALSE) //没有单击运算符,则把num1显示内容加"."{num1+=".";m_result=num1;UpdateData(false);}if(isresult==TRUE) //单击运算符,则把num2显示内容加"."{num2+=".";m_result=num2;UpdateData(false);}}添加按钮“+”操作如下:具体操作如按钮“1”,代码如下:void CGeliang1Dlg::OnJia() //单击"+"按钮{// TODO: Add your control notification handler code hereisresult=TRUE;witch=1;}添加按钮“-”操作如下:具体操作如按钮“1”,代码如下:void CGeliang1Dlg::OnJian() //单击"-"按钮{// TODO: Add your control notification handler code hereisresult=TRUE;witch=2;}添加按钮“*”操作如下:具体操作如按钮“1”,代码如下:void CGeliang1Dlg::OnCheng() //单击"*"按钮{// TODO: Add your control notification handler code hereisresult=TRUE;witch=3;}添加按钮“/”操作如下:具体操作如按钮“1”,代码如下:void CGeliang1Dlg::OnChu() //单击"/"按钮{// TODO: Add your control notification handler code hereisresult=TRUE;witch=4;}添加按钮“=”操作如下:具体操作如按钮“1”,代码如下:void CGeliang1Dlg::OnResult() //单击等号按钮{// TODO: Add your control notification handler code heredouble number1=atof(num1); //CString变量转为实型变量double number2=atof(num2); //CString变量转为实型变量double result=0.0; //保存结果switch(witch){case 1:result=number1+number2;break;case 2:result=number1-number2;break;case 3:result=number1*number2;break;case 4:result=number1/number2;break;default:AfxMessageBox("程序运行错误!");break;}m_result="";m_result.Format("%f",result);UpdateData(false); //利用DDX进行数据交换num1="";num2="";}添加清除按钮如下:void CGeliang1Dlg::OnClear(){// TODO: Add your control notification handler code herem_result="";UpdateData(false);}所用到的关键技术:在类CGeliangDlg中添加的数据成员num1和num2在结果输出之前是字符型的,输出的结果是实型的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
沈阳大学
定的帮助
3.2、需求分析
本软件主要用于计算机windows 2000/XP以上版本的用户的使用,这次课程设计一般是实现简单计算器的功能。
要程序能实现:加,减,乘,除,开方,倒数等运算功能;还要实现数据的输入,输出,计算,显示及程序退出等功能。
另外还可以实现多种科学计算的功能,如:三角函数的计算,弧度与角度间的转换,对数指数的计算等等。
3.3、总体方案设计
(1)功能框架
图1 功能框架图
(2)主要功能原理:
①正弦、余弦、正切、余切函数:
制度的选择,程序运行默认制度选中角度,当选项中“角度”按钮时,则需将其转换为角度计算,由公式:弧度=PI*角度/180,可将表达式中角度转换为弧度既s[ll-1]=PI*s[ll-1]/180。
对于反、正余弦和反正余切,由于C++math.h库函数提供的计算结果是弧度的,所以当选中默认的“弧度”按钮时可不必将计算结果转换,当选中“角度”按钮时,则由公式:角度=弧度*180/PI,既可计算出来。
②实现进制间浮点数的转换
对不同进制的输入,将其转换为十进制数后出入,显示时转换为所选择的进行输出。
所以进制间的转换输出,其实只是将已存的那个十进制数转换为其他进制输出。
沈阳大学
沈阳大学
沈阳大学
沈阳大学
沈阳大学
沈阳大学
沈阳大学
(5)增加方便用户功能:
加入加速键:
图2 增加控件图
沈阳大学
4、运行结果
(1)基本计算器的运行效果如图3所示
图3 基本计算器的运行图
沈阳大学
(2)科学计算器的运行效果如图4所示
图4 科学计算器运行效果图
(3)不可以对浮点数进行取模运算,例如9.2 mod 9.2=?。
运行结果如图5所示
沈阳大学
图5 浮点数不能取摸示意图
(4)不可以对90度角进行正切操作。
Tan 90=?。
运行结果如图6所示。
图6 90度角不能进行正切操作示意图
(5)不可以对0度角进行取余切操作。
Cot0=?。
运行结果如图7所示
图7 0度角不能取余示意图
(6)不可以对负数求对数。
例如Ln -9=?。
运行结果如图8所示
沈阳大学
图8 对数不可求对数示意图
(7)不可以对负数进行开方。
运行结果如图9所示
图9 负数不能开方示意图
沈阳大学
沈阳大学
沈阳大学
沈阳大学
沈阳大学
沈阳大学
沈阳大学
沈阳大学
沈阳大学
沈阳大学
沈阳大学
沈阳大学
沈阳大学。