小型计算器程序的编写.docx

上传人:b****3 文档编号:635758 上传时间:2022-10-11 格式:DOCX 页数:21 大小:191.10KB
下载 相关 举报
小型计算器程序的编写.docx_第1页
第1页 / 共21页
小型计算器程序的编写.docx_第2页
第2页 / 共21页
小型计算器程序的编写.docx_第3页
第3页 / 共21页
小型计算器程序的编写.docx_第4页
第4页 / 共21页
小型计算器程序的编写.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

小型计算器程序的编写.docx

《小型计算器程序的编写.docx》由会员分享,可在线阅读,更多相关《小型计算器程序的编写.docx(21页珍藏版)》请在冰豆网上搜索。

小型计算器程序的编写.docx

小型计算器程序的编写

 

一设计题目:

小型计算器程序的编写

二设计目的和内容

【设计目的】

1学习VisualC++的MFC开发程序的步骤。

2综合运用所学的类、继承和多态的知识。

3进一步掌握程序的调试方法。

【设计内容】

1利用MFC的向导,创建基于对话框的应用程序,添加按钮、编辑框等控件;

2实现算术加、减、乘、除等运算;

3选做:

三角函数的运算、对数运算、指数运算、进制转换等。

界面参考

三:

基本功能描述

程序运行时,显示一个MFC程序窗口,等待用户输入,用户可以单击鼠标输入要计算的表达式,输入的表达式在窗口中,用户键入“=”符号后,窗口显示出结果,该计算器实现了加减乘除以及求倒数运算。

四:

设计思路

1Windows消息处理机制的理解

首先编写程序需要对Windows程序的消息处理机制(MessageHandle)有个比较清晰的了解。

Windows的程序都是通过消息来传送数据,有不需要用户参与的系统消息,比如异常处理等。

还有用户消息,比如鼠标的单击,双击,键盘的键入等。

2.界面的设计,对需要的各种运算符在窗口中划出,然后定义各个的属性

3成员函数及其定义,首先对编辑框的相关变量进行定义,定义为m_edit,将消息框和函数联系起来,然后进行编写相应函数。

4运行结果并测试

五:

软件设计:

设计步骤、界面设计、关键功能的实现

1设计步骤:

1).添加头文件

将Calculate.cpp(见附录)改为Calculate.h将其添加到计算器Dlg.cpp:

implementationfile中,如下:

#include"Calculate.h"。

2.):

成员函数及其释义

virtualBOOLOnInitDialog();

afx_msgvoidOnSysCommand(UINTnID,LPARAMlParam);

afx_msgvoidOnPaint();

afx_msgHCURSOROnQueryDragIcon();

afx_msgvoidOnChangeEdit1();

afx_msgvoidOn1();

afx_msgvoidOn2();

afx_msgvoidOn3();

afx_msgvoidOn4();

afx_msgvoidOn5();

afx_msgvoidOn6();

afx_msgvoidOn7();

afx_msgvoidOn8();

afx_msgvoidOn9();

afx_msgvoidOn0();

afx_msgvoidOnequal();

afx_msgvoidOnadd();

afx_msgvoidOnmin();

afx_msgvoidOnplus();

afx_msgvoidOndiv();

afx_msgvoidOndelete();

afx_msgvoidOncountdown();

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

CAboutDlg:

:

CAboutDlg():

CDialog(CAboutDlg:

:

IDD)

{

//{{AFX_DATA_INIT(CAboutDlg)

//}}AFX_DATA_INIT

}

2界面设计

1)界面的初步设计

仿照Windows附件里面的计算器,在资源视图中画好界面。

2)修改每个static的属性

ID

CAPTION

IDD_STATIC4

简易表达式计算器

IDC_STATIC1

待求表达式

IDC_STATIC2

运算结果

3)修改每个button的属性

IDC_BUTTON1

等于(=)

IDC_BUTTON2

全清(CE)

IDC_BUTTON3

清除(C)

 

4)修改每个button的处理机制

在类向导Classwizard窗口中进行,如下图:

其button按钮的修改类似

5)修改每个edit的类型和名称

在类向导Classwizard窗口中进行:

单击AddVariable按钮,在如下窗口中进行修改

其他edit的修改类似

最终结果如下:

3关键功能的实现

1).OnButton1()按钮的处理函数

voidCMy1Dlg:

:

On1()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

m_jisuan=m_jisuan+"1";

UpdateData(FALSE);

}

其他数字按钮类似

2)运算符按钮的处理函数

voidCMy1Dlg:

:

Onadd()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

sign=1;

data=atof(m_jisuan);

m_jisuan="+";

UpdateData(FALSE);

m_jisuan="";

}

3)等号的按钮的处理函数

voidCMy1Dlg:

:

Onequal()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

switch(sign){

case1:

data=data+atof(m_jisuan);

break;

case2:

data=data-atof(m_jisuan);

break;

case3:

data=data*atof(m_jisuan);

break;

case4:

if(atof(m_jisuan)==0)

{

MessageBox("ERROR");

break;

}

else

{

data=data/atof(m_jisuan);

break;

}

}

charDrray[50];

memset(Drray,0,50);

sprintf(Drray,"%f",data);

m_jisuan=Drray;

UpdateData(FALSE);

}

4)编辑框的按钮的处理函数

voidCMy1Dlg:

:

OnChangeEdit1()

{

//TODO:

IfthisisaRICHEDITcontrol,thecontrolwillnot

//sendthisnotificationunlessyouoverridetheCDialog:

:

OnInitDialog()

//functionandcallCRichEditCtrl().SetEventMask()

//withtheENM_CHANGEflagORedintothemask.

//TODO:

Addyourcontrolnotificationhandlercodehere

}

六:

结论与心得体会

这次课程设计用MFC的相关知识编写一个小型计算器,刚开整个始感觉这个题目挺新鲜,很想好好尝试下,平时只知道用计算器,其中的原理却不甚了解。

此次课程设计没有像上次那样尴尬,不知从何做起,可能是有了上次的经验。

老师开始的讲解感觉作用挺大的,知道了从那块着手,编写的过程中不断出错,写的源代码总是找不到头文件,这是最让人郁闷的了。

和同学的交流,探讨过程,是我对这学期学的类有了更深刻的了解。

身边有很多高手的存在,通过他们的讲解很容易对整个过程熟悉,比上次好多了。

七.参考文献

VisualC++7.0实战入口

八附录:

调试及测试结果如上,关键源代码如下:

#if!

defined(AFX_1DLG_H__B53FAC72_C8D2_473B_BF3F_DF4E3D42EB50__INCLUDED_)

#defineAFX_1DLG_H__B53FAC72_C8D2_473B_BF3F_DF4E3D42EB50__INCLUDED_

#if_MSC_VER>1000

#pragmaonce

#endif//_MSC_VER>1000

/////////////////////////////////////////////////////////////////////////////

//CMy1Dlgdialog

classCMy1Dlg:

publicCDialog

{

//Construction

public:

doubledata;

intsign;

CMy1Dlg(CWnd*pParent=NULL);//standardconstructor

//DialogData

//{{AFX_DATA(CMy1Dlg)

enum{IDD=IDD_MY1_DIALOG};

CStringm_jisuan;

//}}AFX_DATA

//ClassWizardgeneratedvirtualfunctionoverrides

//{{AFX_VIRTUAL(CMy1Dlg)

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport

//}}AFX_VIRTUAL

//Implementation

protected:

HICONm_hIcon;

//Generatedmessagemapfunctions

//{{AFX_MSG(CMy1Dlg)

virtualBOOLOnInitDialog();

afx_msgvoidOnSysCommand(UINTnID,LPARAMlParam);

afx_msgvoidOnPaint();

afx_msgHCURSOROnQueryDragIcon();

afx_msgvoidOnChangeEdit1();

afx_msgvoidOn1();

afx_msgvoidOn2();

afx_msgvoidOn3();

afx_msgvoidOn4();

afx_msgvoidOn5();

afx_msgvoidOn6();

afx_msgvoidOn7();

afx_msgvoidOn8();

afx_msgvoidOn9();

afx_msgvoidOn0();

afx_msgvoidOnequal();

afx_msgvoidOnadd();

afx_msgvoidOnmin();

afx_msgvoidOnplus();

afx_msgvoidOndiv();

afx_msgvoidOndelete();

afx_msgvoidOncountdown();

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

//{{AFX_INSERT_LOCATION}}

//MicrosoftVisualC++willinsertadditionaldeclarationsimmediatelybeforethepreviousline.

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

当前位置:首页 > 医药卫生 > 药学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1