计算器基于 C++MFC实现.docx
《计算器基于 C++MFC实现.docx》由会员分享,可在线阅读,更多相关《计算器基于 C++MFC实现.docx(22页珍藏版)》请在冰豆网上搜索。
计算器基于C++MFC实现
课程实验报告
课程名称
C++面向对象程序设计
班级
XXXXX
实验日期
2015-05-19
姓名
XXX
学号
XXXXX
实验成绩
实验名称
C++简单程序设计
实
验
目
的
及
要
求
1.学习使用VisualC++的MFC开发程序的步骤。
2.综合运用所学的类、继承和多态的知识开发程序。
3.进一步熟练掌握程序调试方法。
实验环境
MicrosoftVisualC++
实
验
内
容
1.利用MFC的向导创建基于对话框的应用程序,添加按钮、编辑框等控件。
2.实现算数“加、减、乘、除”的运算。
算
法
描
述
及
实
验
步
骤
设计步骤:
(1)打开MicrosoftVisualC++6.0,在文件中点击新建,在弹出框内选择MFCAppWizard[exe]工程,输入工程名JISUANQI并在其所在的位置点击确定。
(2)将弹出MFCAppWizard-step1对话框,选择基本对话框点击完成。
(3)基于对话窗口的程序框架建立成功。
界面设计:
(1)创建控件:
在ResourceView选项卡中打开Dialog资源组,双击IDD_JISUANQI,在右边的窗口中显示待编辑的对话框。
开始摆放控件,包括编辑框和按钮的创建。
(2)在对话框编辑窗口上合适的位置按下鼠标左键并拖动鼠标画出一个大小合适的编辑框。
在编辑框上单击鼠标右键,在弹出的快捷菜单中选择属性选项,此时弹出Edit属性对话框。
(3)在对话框上的合适的位置上按下鼠标左键并拖动鼠标画出一个大小合适的下压式按钮。
在按钮上单击鼠标右键,在弹出的快捷菜单中选择属性选项,此时也会弹出pushbutton对话框。
标题
ID
说明
编辑框
ID_Edit
结果显示
按钮
ID_Button0
0
按钮
ID_Button1
1
按钮
ID_Button2
2
按钮
ID_Button3
3
按钮
ID_Button4
4
按钮
ID_Button5
5
按钮
ID_Button6
6
按钮
ID_Button7
7
按钮
ID_Button8
8
按钮
ID_Button9
9
按钮
ID_ButtonJIA
+
按钮
ID_ButtonJIAN
-
按钮
ID_ButtonCHENG
*
按钮
ID_ButtonCHU
/
按钮
ID_Buttonequal
=
按钮
ID_Buttonc
0
链接代码和变量:
(1)给编辑框连接变量。
在编辑框上单击鼠标右键,在弹出的菜单中选择ClassWizard菜单项,弹出MFCClassWizard对话框选择MemberVariables选项卡。
(2)在ControlIDs列表框中选择IDC_Edit,单击AddVariables按钮,在弹出的对话框中链接变量m_NUM。
变量类型设定为double型。
m_NUM属性设置:
给X按钮链接代码。
在X按钮上单击鼠标右键,选择ClassWizard菜单项,在弹出的对话框中选择MessageMaps选项卡,然后在ObjectIDs列表框中选择BN_CLICKED项,即单击按钮事件。
菜单设计:
(1)选择插入/资源命令,将显示插入资源对话框。
选择Menu,点击新建即可。
(2)ResourceView选项卡中打开Menu资源组,双击IDR_MENU1,然后给菜单添加相应的标题,并把每个菜单对应的ID值与相应的按钮一致。
(3)在对话框的任何一个空白域单击鼠标右键,然后在弹出的快捷菜单中选择Properties命令,弹出DialogProperties对话框,在对话框中的菜单组合框中选择IDR_MENU1。
结构图:
调
试
过
程
及
实
验
结
果
1.初始化状态:
2.加法运算:
3.乘法运算:
4.清零运算:
总
结
通过此次试验极大的锻炼了编码能力,巩固了之前所学的知识。
实验过程中出现了些许问题,所幸都可以解决,并为以后的实验提供了经验。
附
录
#include"stdafx.h"
#include"JISUANQI.h"
#include"JISUANQIDlg.h"
#include"math.h"
boolele2;
intaddt;
inti;
intdint;
boolele;
doublenum1;
doublenum2;
classCAboutDlg:
publicCDialog
{
public:
CAboutDlg();
enum{IDD=IDD_ABOUTBOX};
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport
protected:
DECLARE_MESSAGE_MAP()
};
BOOLCJISUANQIDlg:
:
OnInitDialog()
{
OnBUTTONc();
CDialog:
:
OnInitDialog();
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);
}
}
SetIcon(m_hIcon,TRUE);//Setbigicon
SetIcon(m_hIcon,FALSE);//Setsmallicon
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
}
voidCJISUANQIDlg:
:
OnSysCommand(UINTnID,LPARAMlParam)
{
if((nID&0xFFF0)==IDM_ABOUTBOX)
{
CAboutDlgdlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog:
:
OnSysCommand(nID,lParam);
}
}
voidCJISUANQIDlg:
:
OnPaint()
{
if(IsIconic())
{
CPaintDCdc(this);//devicecontextforpainting
SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);
intcxIcon=GetSystemMetrics(SM_CXICON);
intcyIcon=GetSystemMetrics(SM_CYICON);
CRectrect;
GetClientRect(&rect);
intx=(rect.Width()-cxIcon+1)/2;
inty=(rect.Height()-cyIcon+1)/2;
dc.DrawIcon(x,y,m_hIcon);
}
else
{
CDialog:
:
OnPaint();
}
}
voidCJISUANQIDlg:
:
OnButton0()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
if(addt==0)
num2=0;
if(ele2==TRUE)
m_NUM=m_NUM*10+0;
else
m_NUM=m_NUM*10-0;
if(ele==TRUE)
{
num1=0;
dint=dint++;
for(i=0;i{
num1=num1/10;
}
if(ele2==TRUE)
{
m_NUM=(m_NUM-1)/10+num1;
}
else
{
m_NUM=(m_NUM+1)/10-num1;
}
}
UpdateData(FALSE);
}
voidCJISUANQIDlg:
:
OnButton1()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
inti;
if(addt==0)
num2=0;
if(ele2==TRUE)
m_NUM=m_NUM*10+1;
else
m_NUM=m_NUM*10-1;
if(ele==TRUE)
{
num1=1;
dint=dint++;
for(i=0;i{
num1=num1/10;
}
if(ele2==TRUE)
{
m_NUM=(m_NUM-1)/10+num1;
}
else
{
m_NUM=(m_NUM+1)/10-num1;
}
}
UpdateData(FALSE);
}
voidCJISUANQIDlg:
:
OnButton2()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
inti;
if(addt==0)
num2=0;
if(ele2==TRUE)
m_NUM=m_NUM*10+2;
else
m_NUM=m_NUM*10-2;
if(ele==TRUE)
{
num1=2;
dint=dint++;
for(i=0;i{
num1=num1/10;
}
if(ele2==TRUE)
{
m_NUM=(m_NUM-1)/10+num1;
}
else
{
m_NUM=(m_NUM+1)/10-num1;
}
}
UpdateData(FALSE);
}
voidCJISUANQIDlg:
:
OnButton3()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
if(addt==0)
num2=0;
if(ele2==TRUE)
m_NUM=m_NUM*10+3;
else
m_NUM=m_NUM*10-3;
if(ele==TRUE)
{
num1=3;
dint=dint++;
for(i=0;i{
num1=num1/10;
}
if(ele2==TRUE)
{
m_NUM=(m_NUM-1)/10+num1;
}
else
{
m_NUM=(m_NUM+1)/10-num1;
}
}
UpdateData(FALSE);
}
voidCJISUANQIDlg:
:
OnButton4()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
if(addt==0)
num2=0;
if(ele2==TRUE)
m_NUM=m_NUM*10+4;
else
m_NUM=m_NUM*10-4;
if(ele==TRUE)
{
num1=4;
dint=dint++;
for(i=0;i{
num1=num1/10;
}
if(ele2==TRUE)
{
m_NUM=(m_NUM-1)/10+num1;
}
else
{
m_NUM=(m_NUM+1)/10-num1;
}
}
UpdateData(FALSE);
}
voidCJISUANQIDlg:
:
OnButton5()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
if(addt==0)
num2=0;
if(ele2==TRUE)
m_NUM=m_NUM*10+5;
else
m_NUM=m_NUM*10-5;
if(ele==TRUE)
{
num1=5;
dint=dint++;
for(i=0;i{
num1=num1/10;
}
if(ele2==TRUE)
{
m_NUM=(m_NUM-1)/10+num1;
}
else
{
m_NUM=(m_NUM+1)/10-num1;
}
}
UpdateData(FALSE);
}
voidCJISUANQIDlg:
:
OnButton6()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
if(addt==0)
num2=0;
if(ele2==TRUE)
m_NUM=m_NUM*10+6;
else
m_NUM=m_NUM*10-6;
if(ele==TRUE)
{
num1=6;
dint=dint++;
for(i=0;i{
num1=num1/10;
}
if(ele2==TRUE)
{
m_NUM=(m_NUM-1)/10+num1;
}
else
{
m_NUM=(m_NUM+1)/10-num1;
}
}
UpdateData(FALSE);
}
voidCJISUANQIDlg:
:
OnButton7()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
if(addt==0)
num2=0;
if(ele2==TRUE)
m_NUM=m_NUM*10+7;
else
m_NUM=m_NUM*10-7;
if(ele==TRUE)
{
num1=7;
dint=dint++;
for(i=0;i{
num1=num1/10;
}
if(ele2==TRUE)
{
m_NUM=(m_NUM-1)/10+num1;
}
else
{
m_NUM=(m_NUM+1)/10-num1;
}
}
UpdateData(FALSE);
}
voidCJISUANQIDlg:
:
OnButton8()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
if(addt==0)
num2=0;
if(ele2==TRUE)
m_NUM=m_NUM*10+8;
else
m_NUM=m_NUM*10-8;
if(ele==TRUE)
{
num1=8;
dint=dint++;
for(i=0;i{
num1=num1/10;
}
if(ele2==TRUE)
{
m_NUM=(m_NUM-1)/10+num1;
}
else
{
m_NUM=(m_NUM+1)/10-num1;
}
}
UpdateData(FALSE);
}
voidCJISUANQIDlg:
:
OnButton9()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
if(addt==0)
num2=0;
if(ele2==TRUE)
m_NUM=m_NUM*10+9;
else
m_NUM=m_NUM*1019;
if(ele==TRUE)
{
num1=9;
dint=dint++;
for(i=0;i{
num1=num1/10;
}
if(ele2==TRUE)
{
m_NUM=(m_NUM-1)/10+num1;
}
else
{
m_NUM=(m_NUM+1)/10-num1;
}
}
UpdateData(FALSE);
}
voidCJISUANQIDlg:
:
OnButtonPoint()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
}
voidCJISUANQIDlg:
:
OnButtonEqual()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
switch(addt)
{
case0:
UpdateData(FALSE);
break;
case1:
m_NUM=num2+m_NUM;
UpdateData(FALSE);
break;
case2:
m_NUM=num2-m_NUM;
UpdateData(FALSE);
break;
case3:
m_NUM=num2*m_NUM;
UpdateData(FALSE);
break;
case4:
m_NUM=num2/m_NUM;
UpdateData(FALSE);
break;
}
num2=m_NUM;
m_NUM=0;
num1=0;
dint=0;
ele=FALSE;
addt=0;
ele2=TRUE;
}
voidCJISUANQIDlg:
:
OnButtonJia()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
if(addt!
=0)
OnButtonEqual();
if(num2==0)
num2=m_NUM;
m_NUM=0;
ele=FALSE;
ele2=TRUE;
dint=0;
addt=1;
}
voidCJISUANQIDlg:
:
OnButtonJian()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
if(addt!
=0)
OnButtonEqual();
if(num2==0)
num2=m_NUM;
m_NUM=0;
ele=FALSE;
ele2=TRUE;
dint=0;
addt=2;
}
voidCJISUANQIDlg:
:
OnButtonCheng()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
if(addt!
=0)
OnButtonEqual();
if(num2==0)
num2=m_NUM;
m_NUM=0;
ele=FALSE;
ele2=TRUE;
dint=0;
addt=3;
}
voidCJISUANQIDlg:
:
OnButtonChu()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
if(addt!
=0)
OnButtonEqual();
if(num2==0)
num2=m_NUM;
m_NUM=0;
ele=FALSE;
ele2=TRUE;
dint=0;
addt=4;
}
voidCJISUANQIDlg:
:
OnBUTTONc()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
m_NUM=0;
num1=0;
num2=0;
dint=0;
addt=0;
ele=FALSE;
ele2=TRUE;
UpdateData(FALSE);
}