MFC设计计算器论文Word文档格式.docx
- 文档编号:6409162
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:38
- 大小:417.32KB
MFC设计计算器论文Word文档格式.docx
《MFC设计计算器论文Word文档格式.docx》由会员分享,可在线阅读,更多相关《MFC设计计算器论文Word文档格式.docx(38页珍藏版)》请在冰点文库上搜索。
5.求倒数
6.求平方根
7.求余数
8.取反
9.Backspace功能
10.清零功能
11.操作帮助
四、详细设计
流程图:
图2(流程图)
(1)创建工程
启动MicrosoftVisual利用AppWizard向导,创建一个工程“Calculator
”。
选择基本表,Click完成。
(2)设计对话框界面
①看到如下界面,Delete删除页面上全部原配控件。
②利用MFC自带的控件选项编辑计算器界面
③设计的界面如下
当然作为“所见即所得”的MFC控件设计,干净整齐的界面是基本要求,界面是否整洁明了甚至会
影响用户的心情。
各控件的属性设置见下表:
表1:
各个控件
控件类型
控件的ID
控件的Caption
Button
IDC_Num0
IDC_Num1
……
IDC_Num9
IDC_Dot
IDC_Sign
IDC_Sub
IDC_Mul
IDC_Div
IDC_Clear
IDC_Sqrt
IDC_Reci
IDC_Equal
IDC_Mod
IDC_Backspace
IDC_Help
1
9
.
+/-
+
-
*
/
sqrt
1/x
=
%
Backspace
Clear
Help
(3)为编辑框“IDC_DISPLAY”连接成员变量
为编辑框“IDC_DISPLAY”连接一个CString类型的成员变量m_display,用来显示操作数和运算结果。
(4)建立向导
(5)这里我把添加的控件消息响应函数列出来,控件消息响应函数具体代码部分。
双击控件,首先从加减乘除开始
注释:
UpdateData()是MFC的窗口函数,用来刷新数据的
由于我们进行基本运算需要更新数据所以必须添加这个函数。
无独有偶剩下的求余,开平方,清零,取反,Backspace,求倒数也是大同小异(只是把符号小改一下便可~~)
(6)编译CalculatorDlg.cpp
(7)编译CalculatorDlg.h
(8)编译、链接、运行程序。
五、系统测试
开始界面
运行9+3=12
运行9-3=6
运行9*3=27
运行9/3=3
运行8sqrt=2.828
运行3取倒数
运行9/5求余数
运行9取反
输入“98754”点Backspace清除最后一位数“5”
利用CE实现清零功能
点击Help,弹出Help窗口。
六、参考文献
1、段兴,《visualC++使用程序100例》北京:
人民邮电出版社2002;
2、杨永国,《VisualC++6.0实用教程》清华大学出版社2007;
七、程序附录
CalculatorDlg.cpp
//CalculatorDlg.cpp:
implementationfile
//
/************************************************************************************
*****MyCalculator
*****bySiwenzi
************************************************************************************/
#include"
stdafx.h"
Calculator.h"
CalculatorDlg.h"
math.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/DDVsupport
//}}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()
//CCalculatorDlgdialog
CCalculatorDlg:
CCalculatorDlg(CWnd*pParent/*=NULL*/)
:
CDialog(CCalculatorDlg:
IDD,pParent)
//{{AFX_DATA_INIT(CCalculatorDlg)
m_Num=0.0;
//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32
m_hIcon=AfxGetApp()->
LoadIcon(IDR_MAINFRAME);
voidCCalculatorDlg:
//{{AFX_DATA_MAP(CCalculatorDlg)
DDX_Text(pDX,IDC_Num,m_Num);
BEGIN_MESSAGE_MAP(CCalculatorDlg,CDialog)
//{{AFX_MSG_MAP(CCalculatorDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_Num0,OnNum0)
ON_BN_CLICKED(IDC_Num1,OnNum1)
ON_BN_CLICKED(IDC_Num2,OnNum2)
ON_BN_CLICKED(IDC_Num3,OnNum3)
ON_BN_CLICKED(IDC_Num4,OnNum4)
ON_BN_CLICKED(IDC_Num5,OnNum5)
ON_BN_CLICKED(IDC_Num6,OnNum6)
ON_BN_CLICKED(IDC_Num7,OnNum7)
ON_BN_CLICKED(IDC_Num8,OnNum8)
ON_BN_CLICKED(IDC_Num9,OnNum9)
ON_BN_CLICKED(IDC_Add,OnAdd)
ON_BN_CLICKED(IDC_Sub,OnSub)
ON_BN_CLICKED(IDC_Mul,OnMul)
ON_BN_CLICKED(IDC_Div,OnDiv)
ON_BN_CLICKED(IDC_Equal,OnEqual)
ON_BN_CLICKED(IDC_Sign,OnSign)
ON_BN_CLICKED(IDC_Inv,OnInv)
ON_BN_CLICKED(IDC_Mod,OnMod)
ON_BN_CLICKED(IDC_Sqrt,OnSqrt)
ON_BN_CLICKED(IDC_Dot,OnDot)
ON_BN_CLICKED(IDC_Clear,OnClear)
ON_BN_CLICKED(IDC_Backspace,OnBackspace)
ON_BN_CLICKED(IDC_Help,OnHelp)
//CCalculatorDlgmessagehandlers
////////////////////////////////////////////////////////////////////////////
BOOLCCalculatorDlg:
OnInitDialog()
OnInitDialog();
//Add"
About..."
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);
AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);
}
}
//Settheiconforthisdialog.Theframeworkdoesthisautomatically
//whentheapplication'
smainwindowisnotadialog
SetIcon(m_hIcon,TRUE);
//Setbigicon
SetIcon(m_hIcon,FALSE);
//Setsmallicon
//TODO:
Addextrainitializationhere
quan2=1;
dotflag=0;
numflag=0;
returnTRUE;
//returnTRUEunlessyousetthefocustoacontrol
OnSysCommand(UINTnID,LPARAMlParam)
if((nID&
0xFFF0)==IDM_ABOUTBOX)
CAboutDlgdlgAbout;
dlgAbout.DoModal();
else
CDialog:
OnSysCommand(nID,lParam);
//Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow
//todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,
//thisisautomaticallydoneforyoubytheframework.
OnPaint()
if(IsIconic())
CPaintDCdc(this);
//devicecontextforpainting
SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);
//Centericoninclientrectangle
intcxIcon=GetSystemMetrics(SM_CXICON);
intcyIcon=GetSystemMetrics(SM_CYICON);
CRectrect;
GetClientRect(&
rect);
intx=(rect.Width()-cxIcon+1)/2;
inty=(rect.Height()-cyIcon+1)/2;
//Drawtheicon
dc.DrawIcon(x,y,m_hIcon);
OnPaint();
//Thesystemcallsthistoobtainthecursortodisplaywhiletheuserdrags
//theminimizedwindow.
HCURSORCCalculatorDlg:
OnQueryDragIcon()
return(HCURSOR)m_hIcon;
//键入0
OnNum0()
UpdateData();
if(dotflag)
quan2*=10;
m_Num+=0/(double)quan2;
else
if(numflag)
m_Num=m_Num*10+0;
elsem_Num=0;
numflag=1;
UpdateData(FALSE);
//键入1
OnNum1()
m_Num+=1/(double)quan2;
m_Num=m_Num*10+1;
elsem_Num=1;
//键入2
OnNum2()
m_Num+=2/(double)quan2;
m_Num=m_Num*10+2;
elsem_Num=2;
//键入3
OnNum3()
m_Num+=3/(double)quan2;
m_Num=m_Num*10+3;
elsem_Num=3;
//键入4
OnNum4()
m_Num+=4/(double)quan2;
m_Num=m_Num*10+4;
elsem_Num=4;
//键入5
OnNum5()
m_Num+=5/(double)quan2;
m_Num=m_Num*10+5;
elsem_Num=5;
//键入6
OnNum6()
m_Num+=6/(double)quan2;
m_Num=m_Num*10+6;
elsem_Num=6;
//键入7
OnNum7()
m_Num+=7/(double)quan2;
m_Num=m_Num*10+7;
elsem_Num=7;
//键入8
OnNum8()
m_Num+=8/(double)quan2;
m_Num=m_Num*10+8;
elsem_Num=8;
//键入9
OnNum9()
m_Num+=9/(double)quan2;
m_Num=m_Num*10+9;
elsem_Num=9;
//键入+
OnAdd()
num1=m_Num;
cal='
+'
;
//键入-
OnSub()
-'
//键入*
OnMul()
*'
//键入/
OnDiv()
Up
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MFC 设计 计算器 论文