简易计算器课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《C++程序设计》(MFC)课程设计报告
设计题目:简易计算器
班级:
姓名:
学号:
指导教师:
时间:2010年6月30日
目录
1.设计目标……………………………………………………………
2.设计内容……………………………………………………………
3.设计思想……………………………………………………………
4.设计说明……………………………………………………………
5.设计步骤……………………………………………………………
6.主要成员函数关系图………………………………………………
7.程序主要代码………………………………………………………
8. 难点分析……………………………………………………………
9. 总结…………………………………………………………………
简易计算器(MFC)
1.设计目标
了解Windows应用程序的结构与DOS程序的不同,掌握应用MFC类库编写Windows应用程序的基本模式。
2.设计内容
以简易计算器为例,通过对简单应用软件计算器的设计,编制、调试,实现简单的加,减,乘,除等运算,以学习应用MFC库类编写对话框的原理,加深对C++类的学习及应用。
3. 设计思想
基于MFC库类对对话框界面的设计,通过创建类成员函数成员变量,编辑控件创建消息映射,调用消息函数完成数据的输入输出,实现计算功能。生成简单的应用软件。
4.设计说明
(1)包含的功能有:加、减、乘、除运算,开方、平方等功能。
(2)计算器上数字0—9为一个控件数组,加、减、乘、除为一个控件数组,其余为单一的控件。
(3)输入的原始数据、运算中间数据和结果都显示在窗口顶部的同一个标签中。
(4)计算功能基本上是用系统内部函数。
(5)程序可以能自动判断输入数据的正确性,保证不出现多于一个小数点、以0开头等不正常现象。
(6)“CE”按钮可以清除所有已输入的数据从头计算
5. 设计步骤
(1)选择FileNewlProject命令,选择MFC AppWizard(exe)创建Project名为Caa,按确定。在弹出界面选择创建对话框,单击Finish按钮
(2)在生成的设计界面中加入控件,得到计算器应用界面。如图:
(3)为控件编辑框编辑ID,如图:
(4)进入ClassWizard界面选择Message Maps为控件插入消息映射,插入消息函数,实现控件命令功能。如图:
(5) 进入ClassWizard界面Message Varibles为编辑框添加成员变量m_result 用以显示结果。如图:
(6)在CaaDlg.h中加入在主要成员函数和成员变量的申明在CaaDlg.cpp 中加入主要成员函数实现过程和成员变量的初始化(代码片段将于后面介绍)。
6. 主要成员函数关系图
7.程序主要代码
//在头文件中手动添加成员函数与变量声明
// caaDlg.h : header file
//定义两个euum型结构
enum Operator { OpNone, OpAdd, OpSubtract, OpMultiply, OpDivide }; enum CalcError { ErrNone, ErrDivideByZero };
float m_operand; //存储当前输入的操作数float m_accum; //存储当前的计算处理结束BOOL m_bCoff; //标识当前输入是否是小数float m_coff; //小数输入时的系数Operator m_operator; //enum型变量用以标识当前运算符CalcError m_errorState; //enum型变量用以标识当前运算状态BOOL m_bOperandAvail; //标识当前输入是否是新输入数字void UpdateDisplay(); //处理显示void Calculate(); //处理计算void OnOperandInput(int a); //处理数字输入
//在执行文件中添加成员函数实现部分与变量初始
// caaDlg.cpp : implementation file
//以下是对声明变量进行初始
CCaaDlg::CCaaDlg(CWnd* pParent /*=NULL*/)
: CDialog(CCaaDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CCaaDlg)
m_result = _T(""); //默认为m_result变量初始//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_coff=0.1; //为变量进行初始m_bCoff=0; //为变量进行初始
m_errorState = ErrNone; //为变量进行初始m_bOperandAvail=FALSE; //为变量进行初始m_operator=OpNone; //为变量进行初始}
//以下是消息处理函数,用以响应消息映射
void CCaaDlg::On0() //处理“ 0”按钮{
// TODO: Add your control notification handler code here
OnOperandInput(0);
}
void CCaaDlg::On1() //处理“ 1”按钮{
// TODO: Add your control notification handler code here
OnOperandInput(1);
}
void CCaaDlg::On2() //处理“ 2”按钮{
// TODO: Add your control notification handler code here
OnOperandInput(2);
}
void CCaaDlg::On3() //处理“ 3”按钮{
// TODO: Add your control notification handler code here
OnOperandInput(3);
}
void CCaaDlg::On4() //处理“ 4”按钮{
// TODO: Add your control notification handler code here
OnOperandInput(4);
}
void CCaaDlg::On5() //处理“ 5”按钮{
// TODO: Add your control notification handler code here
OnOperandInput(5);
}
void CCaaDlg::On6() //处理“ 6”按钮{
// TODO: Add your control notification handler code here
OnOperandInput(6);
}
void CCaaDlg::On7() //处理“ 7”按钮{
// TODO: Add your control notification handler code here
OnOperandInput(7);