VC++MFC计算器课程设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档