MFC课程设计报告模拟计算器.doc

上传人:李司机 文档编号:1165880 上传时间:2022-07-12 格式:DOC 页数:12 大小:86.50KB
返回 下载 相关 举报
MFC课程设计报告模拟计算器.doc_第1页
第1页 / 共12页
MFC课程设计报告模拟计算器.doc_第2页
第2页 / 共12页
MFC课程设计报告模拟计算器.doc_第3页
第3页 / 共12页
MFC课程设计报告模拟计算器.doc_第4页
第4页 / 共12页
MFC课程设计报告模拟计算器.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《MFC课程设计报告模拟计算器.doc》由会员分享,可在线阅读,更多相关《MFC课程设计报告模拟计算器.doc(12页珍藏版)》请在三一办公上搜索。

1、计 算 机MFC课程设计报告模拟计算器摘要摘要容:以课本简单计算器为根底,首先实现了加、减、乘、除、求倒数和平方根的混合运算,并能进展清屏及倒退操作,然后自行完善了书中未能实现的乘、除运算的连续操作,最后自行设计并完成了lg、ln 、sin、cos、.、pi、e 八个按钮控件的消息映射及程序代码的添加和修改。从中学会了制作简单的基于对话框的小工具、掌握了常用控件的使用、明白了消息映射及消息处理、提高了VC+编程水平。关键词:四则运算 小数点 计算器Analog calculatorAbstractContent of abstract: Simple calculator in te*tboo

2、ks as the foundation, first realized the addition, subtraction, multiplication, division, and reciprocal and square root of the mi*ed operation, and can clear screen and reverse operation, and then to improve the book failed to realize the multiplication, division operation of continuous operation,

3、and finally to be designed and pleted the eight button control news mapping and program code to add and modify. Learnt how to make simple dialog-based small tools, mastered the use of monly used controls, see news mapping and information processing, improve the level of programming. Key word: arithm

4、eticDecimal point Calculator本计算器是基于VC+的MFC编程,可完成大多数简单操作,其运行后界面如以下图:以课本简单计算器为根底,首先实现了加、减、乘、除、求倒数和平方根的混合运算,并能进展清屏及倒退操作,然后自行完善了书中未能实现的乘、除运算的连续操作,最后自行设计并完成了lg、ln 、sin、cos、.、pi、e 八个按钮控件的消息映射及程序代码的添加和修改。完整的操作步骤:1、创立MFC应用程序框架。使用MFC AppWizard【e*e】向导生成一个基于对话框的应用程序 Calculator。2、编辑对话框。按图添加前21个控件,其中1个为编辑框,20个为按

5、钮,控件ID及Caption设置如下:IDC_EDIT_PUTOUT IDC_NUMBER1 1IDC_NUMBER2 2 IDC_NUMBER3 3IDC_NUMBER4 4IDC_NUMBER5 5IDC_NUMBER6 6 IDC_NUMBER7 7IDC_NUMBER8 8IDC_NUMBER9 9IDC_NUMBER0 0IDC_ADD +IDC_SUBTRACT -IDC_MULTIPLY *IDC_DIVIDE /IDC_RESULT =IDC_MINUS +/-IDC_BACK Back IDC_CLEAR ClearIDC_SQRT Sqrt IDC_RECIPROCAL 1

6、/* IDC_LG lg IDC_LN ln IDC_SIN sin IDC_COS cos IDC_CHENGFANG IDC_POINT . IDC_PI pi IDC_CHAOYUESHU e3、 添加成员变量。为编辑框在CCalculatorDlg对话框类中添加double型成员变量m_result,再为CCalculatorDlg类添加:int m_OperationCount 存放加减乘除等运算符的顺序号、 int m_NumberCount 存放操作数的顺序号、 double m_number15存放操作数 、 double m_Operation15 存放操作符、 bool f

7、lag 判断整数和小数、 double p小数退位。4、 添加消息映射及成员函数1、在CalculatorDlg.h头文件中声明消息映射函数。af*_msg void OnNumberKey(UINT nID); /响应数字按钮的单击操作af*_msg void OnOperationKey(UINT nID); /响应操作符按钮的单击操作2、在CalculatorDlg.cpp实现文件消息映射表中参加ON_MAND_RANGE命令消息ON_MAND_RANGE(IDC_NUMBER1,IDC_NUMBER0,OnNumberKey)ON_MAND_RANGE(IDC_ADD,IDC_CHAO

8、YUESHU,OnOperationKey) /有新增功能时命令消息中参数记得修改3、在CalculatorDlg.cpp实现文件中参加消息处理函数。void CCaculatorDlg:OnNumberKey (UINT nID)int n=0;switch(nID)case IDC_NUMBER1:n=1;break;case IDC_NUMBER2:n=2;break;case IDC_NUMBER3:n=3;break;case IDC_NUMBER4:n=4;break;case IDC_NUMBER5:n=5;break;case IDC_NUMBER6:n=6;break;cas

9、e IDC_NUMBER7:n=7;break;case IDC_NUMBER8:n=8;break;case IDC_NUMBER9:n=9;break;case IDC_NUMBER0:n=0;break;if(flag=true)/判断是否为小数p*=0.1;m_numberm_NumberCount=m_numberm_NumberCount+n*p;elsem_numberm_NumberCount=m_numberm_NumberCount*10+n;flag=false;m_result=m_numberm_NumberCount;UpdateData(false); /功能加强

10、,不仅可输入整数,还可输入小数,使运算围大大扩增void CCaculatorDlg:OnOperationKey (UINT nID)int i;switch(nID)case IDC_ADD:m_Operationm_OperationCount=1;break;case IDC_SUBTRACT:m_Operationm_OperationCount=2;break;case IDC_MULTIPLY:m_Operationm_OperationCount=3;break;case IDC_DIVIDE:m_Operationm_OperationCount=4;break;case I

11、DC_RESULT:cal();break;case IDC_MINUS:m_numberm_NumberCount=-m_numberm_NumberCount;break;case IDC_BACK:if(flag=false)m_numberm_NumberCount=(int)m_numberm_NumberCount/10;m_result=m_numberm_NumberCount;elsem_numberm_NumberCount=m_numberm_NumberCount/p;m_numberm_NumberCount=(int)m_numberm_NumberCount/10

12、;m_numberm_NumberCount=m_numberm_NumberCount*10*p;m_result=m_numberm_NumberCount;/增加小数之后Back操作有所改变UpdateData(false);break;case IDC_CLEAR:for(i=1;i11;i+)m_numberi=0;m_Operationi=999;m_NumberCount=1;m_OperationCount=1;flag=false;p=1; /增加小数之后Clear操作有所改变m_result=0;UpdateData(false);break;case IDC_SQRT:m

13、_numberm_NumberCount=sqrt(m_numberm_NumberCount);break;case IDC_RECIPROCAL:m_numberm_NumberCount=(double)1/m_numberm_NumberCount;break;case IDC_LG:m_numberm_NumberCount=log10(m_numberm_NumberCount);break;case IDC_LN:m_numberm_NumberCount=log(m_numberm_NumberCount);break;case IDC_SIN:m_numberm_Number

14、Count=sin(m_numberm_NumberCount);break;case IDC_COS:m_numberm_NumberCount=cos(m_numberm_NumberCount);break;case IDC_CHENGFANG:m_Operationm_OperationCount=5;break;case IDC_POINT:flag=true;break;case IDC_PI:m_result=m_numberm_NumberCount=acos(-1);UpdateData(false);break;case IDC_CHAOYUESHU:m_result=m_

15、numberm_NumberCount=e*p(1);UpdateData(false);break;/新增功能,使运算更完善if(m_Operationm_OperationCount6)m_NumberCount+;m_OperationCount+;flag=false;p=1;/照应小数点和乘方的功能4、在CalculatorDlg对话框中添加void型成员函数cal(),并在CalculatorDlg.cpp实现文件前加上包含语句 *include 。void CCaculatorDlg:cal()m_result=m_number1;for(int i=1;iLoadIcon(ID

16、R_MAINFRAME);m_NumberCount=1;m_OperationCount=1;flag=false;p=1; /为自己新添的成员变量初始化for(int i=0;i15;i+)m_numberi=0;m_Operationi=999;结论: 看起来虽然简单,不过自己做起来还是挺难的。首先一定要细心,例如在CCalculator.cpp消息映射表中的命令消息ON_MAND_RANGE(IDC_ADD,IDC_CHAOYUESHU,OnOperationKey)前2个参数的ID号不可出错。其中最难的新增功能实现是小数点,为实现小数点功能,增加了2个成员变量flag和p,然后在初始化时不要忘记新增变量的初始化,以及OnNumberKey(UINT nID)函数和Back按钮实现中有整数及小数之分等。圆周率pi和超越数e的值,采用库存函数 acosdouble和e*pdouble实现而非自己定义,与三角函数和自然对数相对应,保证运算准确性。做完此次MFC大作业,我从中学会了制作简单的基于对话框的小工具、掌握了常用控件的使用、明白了消息映射及消息处理、提高了VC+编程水平。参考文献:Visual C+程序设计与应用教程 马石安等 编附录:输入小数1.23 显示如以下图:计算 lg5= 结果显示如图:点击圆周率 pi 编辑框显示如图:点击超越数 e 编辑框显示如图:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号