收藏 分享(赏)

c++面向对象程序设计MFC简单计算器实验报告.doc

上传人:精品资料 文档编号:8706759 上传时间:2019-07-08 格式:DOC 页数:11 大小:120.50KB
下载 相关 举报
c++面向对象程序设计MFC简单计算器实验报告.doc_第1页
第1页 / 共11页
c++面向对象程序设计MFC简单计算器实验报告.doc_第2页
第2页 / 共11页
c++面向对象程序设计MFC简单计算器实验报告.doc_第3页
第3页 / 共11页
c++面向对象程序设计MFC简单计算器实验报告.doc_第4页
第4页 / 共11页
c++面向对象程序设计MFC简单计算器实验报告.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、计算机与信息工程学院程序设计基础课程设计报告题目名称: 60.编写一个能实现简单功能的计算器学生姓名: 刘沛东 学生学号: 2011508154 专业班级:电子信息工程(1)班 指导教师: 高攀 1 课程设计的题目编写一个能实现简单功能的计算器2 题目要求1. 有一个计算器图形。2. 能实现加、减、乘、除及乘方的运算。3. 当输入题目时,屏幕上要在指定位置上显示出相应的题目内容,且相应的数字键要改变颜色例如:输入数字 1 时,在计算器图形上的 1键变为红色。4. 屏幕、图形颜色、形状自定3 总体设计3.1 总体框架开始结束键入第一个按钮键入第二个按钮 显 示 结 果加 法单调的 加法减 法乘

2、法除 法乘 方清 零图 1 系统框架13.2 系统功能说明在 VC+6.0中绘制计算器界面,各控件的设置对 09控件设定相应的 ID和其他属性:图 2 “1”控件设置对“+、-、*、”控件设定相应的 ID和其他属性:图 2 “+”控件设置对其它控件设定相应的 ID和其他属性:图 3 其它控件设置2主要使用到 Layout菜单中的 Align功能对各个按钮进行对其,使界面更加整洁。拖出的控件有上面的一个 Edit控件用于显示数字,Button 控件用于处理鼠标的消息。4 程序详细设计4.1系统主调模块 图 5 程序流程图实现文件.cpp显示计算器界面开始执行工程全局对象资源文件.rc模块定义文件

3、.def头文件.h执行_twinmain()Afxmain()创建窗口实现窗口类注册Set window Void clc:onpaint() Void cal:onCE()点击鼠标发出消息 Void clce:onmouse() 等待消息处理Void clc:onMum0() Void clc:onAdd()文本框中显示结果程序运行结束34.2各模块详细设计4.2.1 建立的变量,控件的命名,对应的消息处理函数对应表ID CAPTION Message HandlerIDD_CALC_DIALOG 简易计算器 N/AIDC_NUM0 0 OnNum0IDC_NUM1 1 OnNum1IDC_

4、NUM2 2 OnNum2IDC_NUM3 3 OnNum3IDC_NUM4 4 OnNum4IDC_NUM5 5 OnNum5IDC_NUM6 6 OnNum6IDC_NUM7 7 OnNum7IDC_NUM8 8 OnNum8IDC_NUM9 9 OnNum9IDC_NEG +/- OnNegIDC_PT . OnPtIDC_DIV / OnDivIDC_MUL * OnMulIDC_MIN - OnMinIDC_ADD + OnAddIDC_BACKSPACE BACK OnBackspaceIDC_CE CE OnCeIDC_CLEAR C OnClearIDC_EQU = OnEqu

5、IDC_DIS N/A N/AOnCal(double num)变量定义:double poz; /保存小数点的位置,初始化为 1,表示 poz-1 个小数点。double m_Dis; /Edit 控件上需要显示的数字BOOL point_flag; /小数点表示位,判定是否是小数,是小数为 1,不是小数为 0。double numfirst; /保存计算过程中的前一个数字,double numsecond;/保存计算过程中的第二个数字 char op;/记录当前的计算符号,可以为+,-,*,/,=,c,n变量初始化:poz=1; m_Dis = 0.0;numfirst=0;numseco

6、nd=0;op=0;44.4.2 设计思路a) 首先考虑对所有按键分为两类,数字类和符号类,0,1,2,3,4,5,6,7,8,9 为数字类,+,- ,*,/,= 为符号类。数字在计算的过程中最多需要保存两个,所以定义了两个 double 型变量 numfirst 和 numsecond 来进行存储。符号需要一个 char op 来存储。b) 然后考虑在计算的过程中,numfirst 和 numsecond 的存储状态有三种,一种是numfirst=0 /小数进位m_Dis=m_Dis+poz*num;/递增UpdateData(false); /把结果从内存传递到屏幕elsem_Dis=m_

7、Dis*10+num;UpdateData(false);if(numfirst!=0 m_Dis=m_Dis+poz*num;UpdateData(false); else/判定为整数m_Dis=m_Dis*10+num;/递增UpdateData(false);if(numfirst=0 m_Dis=m_Dis+poz*num;UpdateData(false); elsem_Dis=m_Dis*10+num;UpdateData(false);4.2.4 以 OnAdd()为例子讲解符号的处理函数,函数的功能是先判定之前按下字符时 op 的值,更具 op 的值来进行相应的运算。void

8、CCalcDlg:OnAdd() /根据numfirst和numsecond和op的值分为5种状态。if(numfirst!=0 numfirst=numfirst+numsecond; /之前按的是加把两个数赋值到前一个数m_Dis=numfirst;/赋值给屏幕numsecond=0; /从新赋值为0,清空,不影响下一次判断UpdateData(FALSE);m_Dis=0; /屏幕的值同时清空if(numfirst!=0 numfirst=numfirst-numsecond;m_Dis=numfirst;numsecond=0;UpdateData(FALSE);m_Dis=0;if(

9、numfirst!=0 numfirst=numfirst*numsecond;m_Dis=numfirst;numsecond=0;UpdateData(FALSE);m_Dis=0;if(numfirst!=0 numfirst=numfirst/numsecond;m_Dis=numfirst;numsecond=0;UpdateData(FALSE);m_Dis=0; if(numfirst=0 /屏幕的值赋值到numfirstUpdateData(FALSE); m_Dis=0;op=+; /最后记录最后一个操作是+poz=1;/小数点位置归位point_flag=FALSE;/默认

10、小数点标志为整数,也就是0,也就是FALSE“+/-“按钮的处理函数void CCalcDlg:OnNeg() m_Dis=-m_Dis;/换个符号,其他都一样UpdateData(FALSE);poz=1;point_flag=FALSE;.按钮的处理函数void CCalcDlg:OnPt() point_flag=TRUE; /把标志位改为“小数点”状态“Backspace”按钮的处理void CCalcDlg:OnBackspace() /主要通过_gcvt()和strtod()函数进行字符串和浮点数之间的转换char buffer30; /定义个装字符的数组_gcvt(m_Dis,s

11、izeof(m_Dis),buffer); /把m_Dis存的数字转换为stringfor(int i=0;imessage,pMsg-wParam,pMsg-lParam); return CDialog:PreTranslateMessage(pMsg);5 程序运行结果6 课程设计总结通过这次课程设计,我又收获到很多,平时的在做作业时,因为题1形与结构都是很简单的,并且每一章的内容都是有相应的例题可以参考,所以在做题时没有遇到过很麻烦的问题,而这次不同了,一个课题拿到手时,给我的感觉是无从下手,而且要求很多,使得题目要求更大了。我将整个程序分块完成的.将整个大的程序的实现分 8个功能,每

12、个功能都通过一个相应的函数来实现.在调试时分别进行调试,使得调试更方便些.在编写各个函数只是按着题目要求的去完成,后来经指导老师指导后,发现了很多自己欠缺的地方,又一次将程序整体进行调试.最后把程序完善了许多。本次 MFC计算器的制作,学习到了 MFC基本的编程方法。对 OOP编程的理解进一步加深。但是程序仍然存在一定的问题,比如除数不能为 0的 Exception handle,符号键多次点击结果混乱。通过这次课程设计,以后 Windows 应用程序势必会轻车熟路。参考书目:1 谭浩强, C+程序设计 ,北京,清华大学出版社,2006 年。2 孙鑫深入浅出 MFC ,视频教程。3 Visual_C+MFC 入门教程 ,电子版。

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报