资源描述:
《《mfc简单计算器》word版》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、信息科学与技术学院《程序设计基础》课程设计报告题目名称:60.编写一个能实现简单功能的计算器学生姓名:李海东学生学号:2011508154专业班级:电子信息工程(1)班指导教师:高攀991课程设计的题目编写一个能实现简单功能的计算器2题目要求1.有一个计算器图形。2.能实现加、减、乘、除及乘方的运算。3.当输入题目时,屏幕上要在指定位置上显示出相应的题目内容,且相应的数字键要改变颜色例如:输入数字1时,在计算器图形上的1键变为红色。4.屏幕、图形颜色、形状自定3总体设计3.1总体框架开始结束键入第一个按钮键入第二个按钮显示结果加
2、法减法乘法除法乘方清零图1系统框架93.2系统功能说明在VC++6.0中绘制计算器界面,各控件的设置对0~9控件设定相应的ID和其他属性:图2“1”控件设置对“+、-、*、”控件设定相应的ID和其他属性:图2“+”控件设置对其它控件设定相应的ID和其他属性:图3其它控件设置9主要使用到Layout菜单中的Align功能对各个按钮进行对其,使界面更加整洁。拖出的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。4程序详细设计4.1系统主调模块实现文件.cpp显示计算器界面开始执行工程全局对象资源文件.
3、rc模块定义文件.def头文件.h执行_twinmain()Afxmain()创建窗口实现窗口类注册SetwindowVoidclc::onpaint()Voidcal::onCE()点击鼠标发出消息Voidclce::onmouse()等待消息处理Voidclc::onMum0()Voidclc::onAdd()文本框中显示结果程序运行结束图5程序流程图94.2各模块详细设计4.2.1建立的变量,控件的命名,对应的消息处理函数对应表IDCAPTIONMessageHandlerIDD_CALC_DIALOG简易计算器N/AID
4、C_NUM00OnNum0IDC_NUM11OnNum1IDC_NUM22OnNum2IDC_NUM33OnNum3IDC_NUM44OnNum4IDC_NUM55OnNum5IDC_NUM66OnNum6IDC_NUM77OnNum7IDC_NUM88OnNum8IDC_NUM99OnNum9IDC_NEG+/-OnNegIDC_PT.OnPtIDC_DIV/OnDivIDC_MUL*OnMulIDC_MIN-OnMinIDC_ADD+OnAddIDC_BACKSPACEBACKOnBackspaceIDC_CECEOnCeI
5、DC_CLEARCOnClearIDC_EQU=OnEquIDC_DISN/AN/AOnCal(doublenum)变量定义:doublepoz;//保存小数点的位置,初始化为1,表示poz-1个小数点。doublem_Dis;//Edit控件上需要显示的数字BOOLpoint_flag;//小数点表示位,判定是否是小数,是小数为1,不是小数为0。doublenumfirst;//保存计算过程中的前一个数字,doublenumsecond;//保存计算过程中的第二个数字charop;//记录当前的计算符号,可以为’+’,’-’,
6、’*’,’/’,’=’,’c’,’n’变量初始化:poz=1;m_Dis=0.0;numfirst=0;numsecond=0;op=0;94.4.2设计思路a)首先考虑对所有按键分为两类,数字类和符号类,0,1,2,3,4,5,6,7,8,9为数字类,+,-,*,/,=为符号类。数字在计算的过程中最多需要保存两个,所以定义了两个double型变量numfirst和numsecond来进行存储。符号需要一个charop来存储。b)然后考虑在计算的过程中,numfirst和numsecond的存储状态有三种,一种是numfirst
7、==0&&numsecond==0也就是程序刚开始运行还没有开始录入数字的状态。二种是numfirst!=0&&numsecond==0也就是第一个数字已经录入,符号也已经录入时候把m_Dis的值直接赋值给numfirst,第三种是numfirst!=0&&numsecond!=0,表示可以通过op来把两数合并为一个数。c)考虑到该计算器支持连续的计算,比如3.33+1.33*88/96=?。所以必须在点符号Button也要计算出之前的结果,通过判断op,来计算,把两个数字合并为一个数字,方便下一次运算,功能近似于点=,所以把=
8、也划分到符号类。d)因为数字全部使用的是double,键入的数字必须通过一定的处理达到累加的效果,加上小数和整数的处理差异性大,所以分别用point_flag来判断,分别出来小数和整数。4.2.3成员函数及其释义因为对OnNum0()到OnNum9()的处理函数