VC++MFC计算器课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Windows程序设计作业报告设计题目:MFC计算器
系别:信息与自动化工程
专业:电子与通信工程
姓名:高小雨
学号:2013704011
一、设计目的及要求
1.1设计目的
能够熟练掌握MFC中的各个控件,消息的处理与添加,能够独立完成一些简单的算法,并且能够具体实现一些功能,真正可以利用功能比较强大的MFC 编译出较好的程序代码。本设计完成的是一个具有比较齐全运算功能的计算器。
1.2设计要求
利用Microsoft Visual C++的MFC制作一个多功能计算器,要求:
(1)能够实现最基本的加、减、乘、除四则基本运算;
(2)添加了计算类型,分别是弧度制、度数制;
(3)界面有正负、清空、等于方便用户计算使用;
(4)重点是此计算器具有倒数、多次方、开方、三角函数、反三角函数、指数、阶乘等高级运算。
1.3软件、硬件环境
本程序采用Microsoft Visual C++6.0的英文版本进行编译。VisualC++6.0是Microsoft公司推出的基于Windows操作系统的可视化C++编程工具,尽管Microsoft公司推出了.NET平台的集成开发环境,但由于其良好的界面和可操作性,加上支持标准C/C++规范,但仍有相当多的编程人员使用VisualC++6.0进行应用系统的开发。
二、课程设计步骤
2.1 Windows消息处理机制的理解
首先编写程序需要对Windows程序的消息处理机制有个比较清晰的了解。Windows的程序都是通过消息来传送数据,有不需要用户参与的系统消息,比如异常处理等。
2.2界面的设计
仿照Windows附件里面的计算器,在Dialog视图中画好界面,主要使用的菜单中的相关控件,并合理布置各个按钮的位置,使界面更加整洁。在各个控件的属性里依次定义好名称,之后屏幕显示的就是如图一样的可
视计算器界面:
三、课程设计内容
3.1 概要设计
依次将各个功能按钮设置相关的ID和控件类,一下为各类按键的一个举例,以下为数字0的属性设置,及其ID和标题名称,其余数字键属性设置与其相似。
下图是清零键C的属性,及其ID和标题名称
下图为四则运算加、减、乘、除中“+”的ID和标题名称
下图是弧度按键的属性设置
下图为计算器中三角函数和反三角函数的属性设置
下图是做的一个简单的运算,结果如图中的显示,为double型。
3.1.1 程序总体框架描述
3.1.2程序常用类声明
按键0~9的ID设置
IDC_BUT0 IDC_BUT1 IDC_BUT2 IDC_BUT3 IDC_BUT4 IDC_BUT5 IDC_BUT6 IDC_BUT7 IDC_BUT8 IDC_BUT9
计算类型的ID设置
弧度:IDC_HUDU
角度:IDC_JIAODU
次方的ID设置
10^x:IDC_BUTTON_10X x^y:IDC_XDEY
2^x:IDC_2DEX x^2:IDC_BUTTON_SQRT
三角函数的ID设置
sin:IDC_SIN cos:IDC_COS tan:IDC_TAN
tanh:IDC_TANH arctan:IDC_ARCTAN arcos:IDC_ARCCOS
cosh:IDC_COSH arcsin:IDC_ARCSIN sinh:IDC_SINH
四则运算的ID设置
+:IDC_BUTTON_ADD -: IDC_BUTTON_MINUS
*: IDC_BUTTON_MUTIPLY /: IDC_BUTTON_DIV
清空、等于、正负号、exp、ln、Log、1/x的ID设置
C: IDC_BUTTON_CLEAR =:IDC_BUTTON_EQUAL
+/—: IDC_BUTTON_SIGN exp: IDC_BUTTON_EXP
ln: IDC_LN log: IDC_LOG 1/x: IDC_BUTTON_RECI 下图是基于基本对话框中的所有函数:
3.2 主要代码
计算器主要功能的实现,0—9 数字键的代码如下:
//用于数字按钮的调用
void CCounterDlg::onButtonN(int n)
{
if( m_coff == 1.0)
m_second = m_second*10 + n;//作为整数输入数字时
else
{
m_second = m_second + n*m_coff; //作为小数输入数字
}
UpdateDisplay(m_second);//更新编辑框的数字显示
}
//添加各个按钮的消息响应函数
void CCounterDlg::OnBut0()
{
// TODO: Add your control notification handler code here
onButtonN(0);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void CCounterDlg::OnBut9()
{
// TODO: Add your control notification handler code here
onButtonN(9);
}
//用于显示数据
void CCounterDlg::UpdateDisplay(double n)
{
m_display.Format(_T("%f"),n); //将double型转换成字符型
int i=m_display.GetLength();
while(m_display.GetAt(i-1)=='0') //格式化输出,将输出结果后的零截去
{ m_display.Delete(i-1,1); i--; }
UpdateData(false);//更新编辑框变量m_display