MFC设计计算器论文.docx
- 文档编号:10370108
- 上传时间:2023-02-10
- 格式:DOCX
- 页数:38
- 大小:417.32KB
MFC设计计算器论文.docx
《MFC设计计算器论文.docx》由会员分享,可在线阅读,更多相关《MFC设计计算器论文.docx(38页珍藏版)》请在冰豆网上搜索。
MFC设计计算器论文
南京信息工程大学
C++面向对象程序设计
课程作业报告
设计课题:
计算器的设计
专业班级:
自动化2班
学生姓名:
学生学号:
指导教师:
成绩:
二○一一年六月二十日
计算器的设计
一、设计目的
学会用MFC设计一个简易计算器,能够求实数的四则运算以及求倒数和平方根,可自己增加功能。
二、需求分析
系统目标:
设计的计算器至少能够进行简单的四则运算和求倒数求反以及开方运算。
主体功能:
实现简单的四则运算和求倒数求反以及开方运算。
开发环境:
操作系统:
windowsXP;编程环境:
microsoft visual C++ 6.0。
三、总体设计思路
系统流程图:
图1(流程图)
基本功能划分:
1.加法运算
2.减法运算
3.乘法运算
4.除法运算
5.求倒数
6.求平方根
7.求余数
8.取反
9.Backspace功能
10.清零功能
11.操作帮助
四、详细设计
流程图:
图2(流程图)
(1)创建工程
启动MicrosoftVisual利用AppWizard向导,创建一个工程“Calculator
”。
选择基本表,Click完成。
(2)设计对话框界面
①看到如下界面,Delete删除页面上全部原配控件。
②利用MFC自带的控件选项编辑计算器界面
③设计的界面如下
当然作为“所见即所得”的MFC控件设计,干净整齐的界面是基本要求,界面是否整洁明了甚至会
影响用户的心情。
各控件的属性设置见下表:
表1:
各个控件
控件类型
控件的ID
控件的Caption
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
Button
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_Clear
IDC_Help
0
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"
#include"Calculator.h"
#include"CalculatorDlg.h"
#include"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;
//}}AFX_DATA_INIT
//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32
m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
voidCCalculatorDlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialog:
:
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCalculatorDlg)
DDX_Text(pDX,IDC_Num,m_Num);
//}}AFX_DATA_MAP
}
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)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
//CCalculatorDlgmessagehandlers
////////////////////////////////////////////////////////////////////////////
BOOLCCalculatorDlg:
:
OnInitDialog()
{
CDialog:
:
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);
pSysMenu->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
}
voidCCalculatorDlg:
:
OnSysCommand(UINTnID,LPARAMlParam)
{
if((nID&0xFFF0)==IDM_ABOUTBOX)
{
CAboutDlgdlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog:
:
OnSysCommand(nID,lParam);
}
}
//Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow
//todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,
//thisisautomaticallydoneforyoubytheframework.
voidCCalculatorDlg:
:
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);
}
else
{
CDialog:
:
OnPaint();
}
}
//Thesystemcallsthistoobtainthecursortodisplaywhiletheuserdrags
//theminimizedwindow.
HCURSORCCalculatorDlg:
:
OnQueryDragIcon()
{
return(HCURSOR)m_hIcon;
}
//键入0
voidCCalculatorDlg:
:
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
voidCCalculatorDlg:
:
OnNum1()
{
UpdateData();
if(dotflag)
{
quan2*=10;
m_Num+=1/(double)quan2;
}
else
{
if(numflag)
{
m_Num=m_Num*10+1;
}
elsem_Num=1;
}
numflag=1;
UpdateData(FALSE);
}
//键入2
voidCCalculatorDlg:
:
OnNum2()
{
UpdateData();
if(dotflag)
{
quan2*=10;
m_Num+=2/(double)quan2;
}
else
{
if(numflag)
{
m_Num=m_Num*10+2;
}
elsem_Num=2;
}
numflag=1;
UpdateData(FALSE);
}
//键入3
voidCCalculatorDlg:
:
OnNum3()
{
UpdateData();
if(dotflag)
{
quan2*=10;
m_Num+=3/(double)quan2;
}
else
{
if(numflag)
{
m_Num=m_Num*10+3;
}
elsem_Num=3;
}
numflag=1;
UpdateData(FALSE);
}
//键入4
voidCCalculatorDlg:
:
OnNum4()
{
UpdateData();
if(dotflag)
{
quan2*=10;
m_Num+=4/(double)quan2;
}
else
{
if(numflag)
{
m_Num=m_Num*10+4;
}
elsem_Num=4;
}
numflag=1;
UpdateData(FALSE);
}
//键入5
voidCCalculatorDlg:
:
OnNum5()
{
UpdateData();
if(dotflag)
{
quan2*=10;
m_Num+=5/(double)quan2;
}
else
{
if(numflag)
{
m_Num=m_Num*10+5;
}
elsem_Num=5;
}
numflag=1;
UpdateData(FALSE);
}
//键入6
voidCCalculatorDlg:
:
OnNum6()
{
UpdateData();
if(dotflag)
{
quan2*=10;
m_Num+=6/(double)quan2;
}
else
{
if(numflag)
{
m_Num=m_Num*10+6;
}
elsem_Num=6;
}
numflag=1;
UpdateData(FALSE);
}
//键入7
voidCCalculatorDlg:
:
OnNum7()
{
UpdateData();
if(dotflag)
{
quan2*=10;
m_Num+=7/(double)quan2;
}
else
{
if(numflag)
{
m_Num=m_Num*10+7;
}
elsem_Num=7;
}
numflag=1;
UpdateData(FALSE);
}
//键入8
voidCCalculatorDlg:
:
OnNum8()
{
UpdateData();
if(dotflag)
{
quan2*=10;
m_Num+=8/(double)quan2;
}
else
{
if(numflag)
{
m_Num=m_Num*10+8;
}
elsem_Num=8;
}
numflag=1;
UpdateData(FALSE);
}
//键入9
voidCCalculatorDlg:
:
OnNum9()
{
UpdateData();
if(dotflag)
{
quan2*=10;
m_Num+=9/(double)quan2;
}
else
{
if(numflag)
{
m_Num=m_Num*10+9;
}
elsem_Num=9;
}
numflag=1;
UpdateData(FALSE);
}
//键入+
voidCCalculatorDlg:
:
OnAdd()
{
UpdateData();
num1=m_Num;
cal='+';
numflag=0;
dotflag=0;
quan2=1;
}
//键入-
voidCCalculatorDlg:
:
OnSub()
{
UpdateData();
num1=m_Num;
cal='-';
numflag=0;
dotflag=0;
quan2=1;
}
//键入*
voidCCalculatorDlg:
:
OnMul()
{
UpdateData();
num1=m_Num;
cal='*';
numflag=0;
dotflag=0;
quan2=1;
}
//键入/
voidCCalculatorDlg:
:
OnDiv()
{
Up
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MFC 设计 计算器 论文
![提示](https://static.bdocx.com/images/bang_tan.gif)