用MFC制作简易计算器.docx
《用MFC制作简易计算器.docx》由会员分享,可在线阅读,更多相关《用MFC制作简易计算器.docx(13页珍藏版)》请在冰豆网上搜索。
用MFC制作简易计算器
用VC++制作简单计算器
简述:
该课程设计将实现一个简单计算器。
其类似于Windows附件中自带的计算器。
这个计算器可以实现简单的四则运算功能,而且具有简洁大方的图文外观。
系统具有良好的界面和必要的交互信息。
即时准确地获得需要的计算的结果,充分降低了数字计算的难度,从而节约了时间,对人们的生活有一定的帮助。
在课程设计中,程序设计设计语言采用VisualC++,在程序设计中,采用了面向对象解决问题的方法。
课题背景
计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除简单运算的工具。
要实现计算功能,可以用VC++的知识编写程序来解决此问题。
该计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度。
该计算器使用非常简单和方便,对广大中小学生的学习有巨大帮助作用,也对在职人员的工作有点帮助作用。
功能说明
系统具有良好的界面;必要的交互信息;简约美观的效果。
使用人员能快捷简单地进行操作。
可单机按钮进行操作即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。
(1)包含的功能有:
加、减、乘、除;
(2)计算器上数字分为显示区,可以显示用户所点击的按键,最后显示结果;按键区,可以让用户选择所需的数字以及小数点;功能区,该区域提供用户所需的运算按钮;
(3)计算功能基本上是用系统内部函数;
(4)“AC”按钮可以清除所有已输入的数据从头计算;
(5)“DEL”按钮可以删除所输入的最后以为数字;
编辑资源
按钮名称
按钮ID
用途
0
IDC_BUTTON0
按键0
1
IDC_BUTTON1
按键1
2
IDC_BUTTON2
按键2
3
IDC_BUTTON3
按键3
4
IDC_BUTTON4
按键4
5
IDC_BUTTON5
按键5
6
IDC_BUTTON6
按键6
7
IDC_BUTTON7
按键7
8
IDC_BUTTON8
按键8
9
IDC_BUTTON9
按键9
.
IDC_point
小数点
=
IDC_result
求值
+
IDC_add
加号
-
IDC_jian
减号
*
IDC_cheng
乘号
/
IDC_chu
除号
AC
IDC_ac
清屏
DEL
IDC_del
删除
创建步骤
新建一个MFC基于对话框的工程
VC++对话框界面
右击按钮,修改按钮的属性
建立类向导
最后点击EditCode就可以添加代码
对其它按钮的操作与之类似,对编辑框的“建立类向导”有点区别,这里不附详细步骤
代码展示
“1”按钮对应的代码
voidCMyDlg:
:
OnButton1()
{
UpdateData
(1);
if(pass1==1)
m_str="1";
elsem_str+="1";
pass1=0;
UpdateData(0);
}
“2”按钮对应的代码
voidCMyDlg:
:
OnButton2()
{
UpdateData
(1);
if(pass1==1)
m_str="2";
elsem_str+="2";
pass1=0;
UpdateData(0);
}
“3”按钮对应的代码
voidCMyDlg:
:
OnButton3()
{
UpdateData
(1);
if(pass1==1)
m_str="3";
elsem_str+="3";
pass1=0;
UpdateData(0);
}
“4”按钮对应的代码
voidCMyDlg:
:
OnButton3()
{
UpdateData
(1);
if(pass1==1)
m_str="4";
elsem_str+="4";
pass1=0;
UpdateData(0);
}
“5、6、7、8、9、0”按钮对应的代码与“1、2、3、4”按钮对应的代码相近
“=”按钮对应的代码
voidCMyDlg:
:
Onresult()
{
UpdateData
(1);
inti,z,s,j,x=0,y=1,t,m=1;
charb[10];
doublerate=10.0,itemp=0.0,a[20];
for(i=0;i<20;i++)
a[i]=1000000.0;
for(i=0;i<10;i++)
b[i]='';
z=0;
for(i=0;i{
if(isdigit(m_str.GetAt(i)))
{
if(rate==10.0)
{itemp=itemp*rate+(m_str.GetAt(i)-'0');
if(i==m_str.GetLength()-1)
a[z]=itemp;
}
else
{
itemp=itemp+rate*(m_str.GetAt(i)-'0');
rate=rate/10;
if(i==m_str.GetLength()-1)
a[z]=itemp;
}
}
elseif(m_str.GetAt(i)=='.')
rate=0.1;
elseif(m_str.GetAt(i)=='+')
{
a[z]=itemp;itemp=0;
z++;
b[z]='+';
z++;
rate=10.0;
}
elseif(m_str.GetAt(i)=='-')
{
a[z]=itemp;itemp=0;
z++;
b[z]='-';
z++;
rate=10.0;
}
elseif(m_str.GetAt(i)=='*')
{
a[z]=itemp;itemp=0;
z++;
b[z]='*';
z++;
rate=10.0;
}
elseif(m_str.GetAt(i)=='/')
{
a[z]=itemp;itemp=0;
z++;
b[z]='/';
z++;
rate=10.0;
}
}
s=z;
for(j=0;j<=s;j++)
{
if(b[j]=='/')
{
a[j+1]=1/a[j+1];
b[j]='*';
}
}
for(j=0;j<=s;j++)
{
if(b[j]=='*')
{
if(j-t==2)
{
a[t-m]=a[t-m]*a[j+1];
m=m+2;
}
else
a[j-1]=a[j-1]*a[j+1];
a[j+1]=1000000.0;
b[j]='';
t=j;
}
}
for(j=0;j<=s;j++)
{
if(a[j]!
=1000000.0)//如果a[i]的值不为0.0
{
a[x]=a[j];//把a[i]的值赋给a[x]
x+=2;//x自加2
}
if(b[j]!
='')//如果b[i]的值不为空格
{
b[y]=b[j];//把b[i]的值赋给b[y]
y=y+2;//y自加2
}
}
for(j=0;j<=y-2;j++)
{
if(b[j]=='+')//如果b[i]等于加号
a[0]=a[0]+a[j+1];
elseif(b[j]=='-')//如果b[i]等于减号
a[0]=a[0]-a[j+1];
}
m_str.Format("%1f",a[0]);
UpdateData(0);
}
“+”按钮对应的代码
voidCMyDlg:
:
Onadd()
{
UpdateData
(1);
m_str+="+";
UpdateData(0);
}
“-”按钮对应的代码
voidCMyDlg:
:
Onjian()
{
UpdateData
(1);
m_str+="-";
UpdateData(0);
}
“*”按钮对应的代码
voidCMyDlg:
:
Oncheng()
{
UpdateData
(1);
m_str+="*";
UpdateData(0);
}
“/”按钮对应的代码
voidCMyDlg:
:
Onchu()
{
UpdateData
(1);
m_str+="/";
UpdateData(0);
}
“AC”按钮对应的代码
voidCMyDlg:
:
Onac()
{
UpdateData
(1);
m_str="0";
pass1=1;
UpdateData(0);
}
“DEL”按钮对应的代码
voidCMyDlg:
:
Ondel()
{
UpdateData
(1);
if(m_str!
="0"&&m_str.GetLength()>1)
m_str=m_str.Left(m_str.GetLength()-1);
else
{
m_str="0";
}
UpdateData(0);
}
“.”按钮对应的代码
voidCMyDlg:
:
Onpoint()
{
UpdateData
(1);
if(pass1==1)
m_str=".";
else
m_str+=".";
pass1=0;
UpdateData(0);
}
效果图