小型计算器程序的编写文档格式.docx
《小型计算器程序的编写文档格式.docx》由会员分享,可在线阅读,更多相关《小型计算器程序的编写文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
四:
设计思路
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)运算符按钮的处理函数
Onadd()
sign=1;
data=atof(m_jisuan);
m_jisuan="
+"
"
3)等号的按钮的处理函数
Onequal()
switch(sign){
case1:
data=data+atof(m_jisuan);
break;
case2:
data=data-atof(m_jisuan);
case3:
data=data*atof(m_jisuan);
case4:
if(atof(m_jisuan)==0)
{
MessageBox("
ERROR"
);
}
else
data=data/atof(m_jisuan);
}
charDrray[50];
memset(Drray,0,50);
sprintf(Drray,"
%f"
data);
m_jisuan=Drray;
UpdateData(FALSE);
4)编辑框的按钮的处理函数
OnChangeEdit1()
IfthisisaRICHEDITcontrol,thecontrolwillnot
//sendthisnotificationunlessyouoverridetheCDialog:
OnInitDialog()
//functionandcallCRichEditCtrl().SetEventMask()
//withtheENM_CHANGEflagORedintothemask.
六:
结论与心得体会
这次课程设计用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>
/////////////////////////////////////////////////////////////////////////////
//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)
};
//{{AFX_INSERT_LOCATION}}
//MicrosoftVisualC++willinsertadditionaldeclarationsimmediatelybeforethepreviousline.