计算器1230644802

计算器1230644802

ID:20623165

大小:224.00 KB

页数:6页

时间:2018-10-14

计算器1230644802_第1页
计算器1230644802_第2页
计算器1230644802_第3页
计算器1230644802_第4页
计算器1230644802_第5页
资源描述:

《计算器1230644802》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、一.题目:简易计算器要求使用MFC框架在VisualStudio6.0环境下编写一个简易的计算器,支持任意位数的加减乘数,正负转换,并且实现BackSpaceCEC功能。二.设计过程1.建立工程新建-》工程2.3.4.界面的设计仿照Windows附件里面的计算器,在资源视图中画好界面,如图:主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。拖出的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。1.建立的变量,控件的命名,对应的消息处理函数对应表IDC

2、APTIONMessageHandlerIDC_EDIT1IDC_NUM00OnNum0IDC_NUM11OnNum1IDC_NUM22OnNum2IDC_NUM33OnNum3IDC_NUM44OnNum4IDC_NUM55OnNum5IDC_NUM66OnNum6IDC_NUM77OnNum7IDC_NUM88OnNum8IDC_NUM99OnNum9IDC_NEG+/-OnNegIDC_PT.OnPtIDC_DIV/OnDivIDC_MUL*OnMulIDC_MIN-OnMinIDC_ADD+OnAdd

3、IDC_BACKSPACEBACKOnBackspaceIDC_CECEOnCeIDC_CLEARCOnClearIDC_EQU=OnEqu变量定义:doublepoz;//保存小数点的位置,初始化为1,表示poz-1个小数点。doublem_Dis;//Edit控件上需要显示的数字BOOLpoint_flag;//小数点表示位,判定是否是小数,是小数为1,不是小数为0。doublenumfirst;//保存计算过程中的前一个数字,doublenumsecond;//保存计算过程中的第二个数字intop;//

4、记录当前的计算符号0,1,2,3,4,可以为'+','-','*','/',变量初始化:poz=1;m_Dis=0.0;numfirst=0;numsecond=0;op=0;1.设计思路a)首先考虑对所有按键分为两类,数字类和符号类,0,1,2,3,4,5,6,7,8,9为数字类,+,-,*,/,=为符号类。数字在计算的过程中最多需要保存两个,所以定义了两个double型变量numfirst和numsecond来进行存储。符号需要一个charop来存储。b)然后考虑在计算的过程中,numfirst和nums

5、econd的存储状态有三种,一种是numfirst==0&&numsecond==0也就是程序刚开始运行还没有开始录入数字的状态。二种是numfirst!=0&&numsecond==0也就是第一个数字已经录入,符号也已经录入时候把m_Dis的值直接赋值给numfirst,第三种是numfirst!=0&&numsecond!=0,表示可以通过op来把两数合并为一个数。c)考虑到该计算器支持连续的计算,比如3.33+1.33*88/96=?。所以必须在点符号Button也要计算出之前的结果,通过判断op,来计

6、算,把两个数字合并为一个数字,方便下一次运算,功能近似于点=,所以把=也划分到符号类。d)因为数字全部使用的是double,键入的数字必须通过一定的处理达到累加的效果,加上小数和整数的处理差异性大,所以分别用point_flag来判断,分别出来小数和整数。2.成员函数及其释义因为对OnNum0()到OnNum9()的处理函数差异仅在一个数字上,双击按钮,生成相应函数voidCMyDlg::OnNum0(){//TODO:Addyourcontrolnotificationhandlercodehereif(p

7、oint_flag==TRUE)//判定为小数{poz*=0.1;//小数进位m_Dis=m_Dis+poz*0;//递增UpdateData(false);//把结果从内存传递到屏幕}else{m_Dis=m_Dis*10+0;UpdateData(false);}}voidCMyDlg::OnNum1(){//TODO:Addyourcontrolnotificationhandlercodehereif(point_flag==TRUE)//判定为小数{poz*=0.1;//小数进位m_Dis=m_Di

8、s+poz*1;//递增UpdateData(false);//把结果从内存传递到屏幕}else{m_Dis=m_Dis*10+1;UpdateData(false);}}‘.’按钮的处理函数voidCCalcDlg::OnPt(){point_flag=TRUE;//把标志位改为“小数点”状态}‘C’按钮处理函数voidCMyDlg::OnClear(){//TODO:Addyourcontrol

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。