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

上传人:b****6 文档编号:15534251 上传时间:2023-07-05 格式:DOCX 页数:26 大小:233.28KB
下载 相关 举报
小型计算器程序的编写.docx_第1页
第1页 / 共26页
小型计算器程序的编写.docx_第2页
第2页 / 共26页
小型计算器程序的编写.docx_第3页
第3页 / 共26页
小型计算器程序的编写.docx_第4页
第4页 / 共26页
小型计算器程序的编写.docx_第5页
第5页 / 共26页
小型计算器程序的编写.docx_第6页
第6页 / 共26页
小型计算器程序的编写.docx_第7页
第7页 / 共26页
小型计算器程序的编写.docx_第8页
第8页 / 共26页
小型计算器程序的编写.docx_第9页
第9页 / 共26页
小型计算器程序的编写.docx_第10页
第10页 / 共26页
小型计算器程序的编写.docx_第11页
第11页 / 共26页
小型计算器程序的编写.docx_第12页
第12页 / 共26页
小型计算器程序的编写.docx_第13页
第13页 / 共26页
小型计算器程序的编写.docx_第14页
第14页 / 共26页
小型计算器程序的编写.docx_第15页
第15页 / 共26页
小型计算器程序的编写.docx_第16页
第16页 / 共26页
小型计算器程序的编写.docx_第17页
第17页 / 共26页
小型计算器程序的编写.docx_第18页
第18页 / 共26页
小型计算器程序的编写.docx_第19页
第19页 / 共26页
小型计算器程序的编写.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

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

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

小型计算器程序的编写

目录一设计题目:

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

二设计目的和内容.................................................................................2

三:

基本功能描述.................................................................................3

四:

设计思路.........................................................................................3

五:

软件设计:

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

1设计步骤:

....................................................................................................................3

2界面设计........................................................................................................................4

3关键功能的实现............................................................................................................6

六:

结论与心得体会..............................................................................7

七.参考文献..........................................................................................7

八附录:

.............................................................................................8

设计题目:

小型计算器程序的编写一二设计目的和内容

【设计目的】开发程序的步骤。

的MFC学习1VisualC++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中,如下:

椣据畬敤尠慃捬汵瑡?

屨。

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

}

界面设计21)界面的初步设计

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

2)修改每个static的属性

IDCAPTION

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的修改类似

最终结果如下:

关键功能的实现31).OnButton1()按钮的处理函数

voidCMy1Dlg:

:

On1()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

m_jisuan=m_jisuan+;

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/DDV

support

//}}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++willinsertadditionaldeclarationsimmediately

beforethepreviousline.

#endif

//!

defined(AFX_1DLG_H__B53FAC72_C8D2_473B_BF3F_DF4E3D42EB50__INCLUDED_)

voidCMy1Dlg:

:

OnChangeEdit1()

{

//TODO:

IfthisisaRICHEDITcontrol,thecontrolwillnot

//sendthisnotificationunlessyouoverridethe

CDialog:

:

OnInitDialog()

//functionandcallCRichEditCtrl().SetEventMask()

//withtheENM_CHANGEflagORedintothemask.

//TODO:

Addyourcontrolnotificationhandlercodehere

}

CPP文件中关键代码:

//计算器1Dlg.cpp:

implementationfile

//

#includestdafx.h

椣据畬敤尠计算器1.h

椣据畬敤尠计算器1Dlg.h

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

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

//CAboutDlgdialogusedforAppAbout

classCAboutDlg:

publicCDialog

{

public:

CAboutDlg();

//DialogData

//{{AFX_DATA(CAboutDlg)

enum{IDD=IDD_ABOUTBOX};

//}}AFX_DATA

//ClassWizardgeneratedvirtualfunctionoverrides

//{{AFX_VIRTUAL(CAboutDlg)

protected:

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

support

//}}AFX_VIRTUAL

//Implementation

protected:

//{{AFX_MSG(CAboutDlg)

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

CAboutDlg:

:

CAboutDlg():

CDialog(CAboutDlg:

:

IDD)

{

//{{AFX_DATA_INIT(CAboutDlg)

//}}AFX_DATA_INIT

}

voidCAboutDlg:

:

DoDataExchange(CDataExchange*pDX)

{

CDialog:

:

DoDataExchange(pDX);

//{{AFX_DATA_MAP(CAboutDlg)

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)

//{{AFX_MSG_MAP(CAboutDlg)

//Nomessagehandlers

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

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

//CMy1Dlgdialog

CMy1Dlg:

:

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

:

CDialog(CMy1Dlg:

:

IDD,pParent)

{

//{{AFX_DATA_INIT(CMy1Dlg)

m_jisuan=_T(\);

//}}AFX_DATA_INIT

//NotethatLoadIcondoesnotrequireasubsequentDestroyIconin

Win32

m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

voidCMy1Dlg:

:

DoDataExchange(CDataExchange*pDX)

{

CDialog:

:

DoDataExchange(pDX);

//{{AFX_DATA_MAP(CMy1Dlg)

DDX_Text(pDX,IDC_EDIT1,m_jisuan);

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CMy1Dlg,CDialog)

//{{AFX_MSG_MAP(CMy1Dlg)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_EN_CHANGE(IDC_EDIT1,OnChangeEdit1)

ON_BN_CLICKED(IDC_1,On1)

ON_BN_CLICKED(IDC_2,On2)

ON_BN_CLICKED(IDC_3,On3)

ON_BN_CLICKED(IDC_4,On4)

ON_BN_CLICKED(IDC_5,On5)

ON_BN_CLICKED(IDC_6,On6)

ON_BN_CLICKED(IDC_7,On7)

ON_BN_CLICKED(IDC_8,On8)

ON_BN_CLICKED(IDC_9,On9)

ON_BN_CLICKED(IDC_0,On0)

ON_BN_CLICKED(IDC_equal,Onequal)

ON_BN_CLICKED(IDC_add,Onadd)

ON_BN_CLICKED(IDC_min,Onmin)

ON_BN_CLICKED(IDC_plus,Onplus)

ON_BN_CLICKED(IDC_div,Ondiv)

ON_BN_CLICKED(IDC_delete,Ondelete)

ON_BN_CLICKED(IDC_countdown,Oncountdown)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

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

//CMy1Dlgmessagehandlers

BOOLCMy1Dlg:

:

OnInitDialog()

{

CDialog:

:

OnInitDialog();

//AddAbout...menuitemtosystemmenu.

//IDM_ABOUTBOXmustbeinthesystemcommandrange.

ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX<0xF000);

CMenu*pSysMenu=GetSystemMenu(FALSE);

if(pSysMenu!

=NULL)

{

CStringstrAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX);

if(!

strAboutMenu.IsEmpty())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,

strAboutMenu

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2