用VC60编写计算器程序.docx
- 文档编号:16732860
- 上传时间:2023-07-16
- 格式:DOCX
- 页数:20
- 大小:272.82KB
用VC60编写计算器程序.docx
《用VC60编写计算器程序.docx》由会员分享,可在线阅读,更多相关《用VC60编写计算器程序.docx(20页珍藏版)》请在冰点文库上搜索。
用VC60编写计算器程序
用C++编写计算器程序
一、计算器介绍
1.计算器主界面
1.1、计算器打开运行后界面如下所示:
1.2主界面的说明
主界面主要由三部分组成:
Ø文本框:
用于数据的输入(可由下面的按钮或键盘输入),以及计算结果的输出;
Ø基本计算区:
主要可用于数字的输入以及简单的加减乘除的计算,还有可用于清楚文本框的数据;
Ø数学函数计算区:
主用可实现基本常用的数学函数的计算,包括常用的三角函数和反三角函数以及e指数、开平方和以e和10为底对数的计算。
2.计算器的操作说明及注意事项
2.1、基本操作:
使用计算器进行基本数据计算时通过键盘及基本计算区的按钮输入数据,然后根据计算需要点击“+、-、*、/”按钮,然后点击”=”按钮得出计算结果。
若需使用函数计算时,可先输入数据,然后点击对应使用函数的按钮即可得出结果。
特别的,对于三角函数的计算时,可点击单选框“弧度制”、“角度制”以实现弧度制及角度制数据的三角计算。
2.2、注意事项:
✧使用除法计算时应注意不能使被除数为0,否则会出错:
出现此错误时只需点击确定即可继续之前的计算。
✧在使用三角函数时应先确定所输入的数据是角度制还是弧度制的数据,否则计算器会跳出提醒框,如下所示:
而计算反三角函数时只能计算弧度制数据得到角度制结果:
在使用常用函数进行计算时应特别注意所输入的数应满足函数的定义域,使函数有意义,否则会出错:
✧另注:
当所得数据很小时会以科学计数法的形式输出:
其中e-002即表示×10-2。
二、MFC编程的实现
1.计算器主界面的设计
1.1、建立对话框
1.启动VisualC++6.0集成开发环境
2.创建对话框类型应用程序
在【工程】选项卡中选择【MFCAppWizard】应用程序类型,工程文件名为Calculator。
单击确定后选择【基本对话】建立基本对话框应用程序。
1.2、添加控件,设计界面
界面设计如下所示:
2.控件ID及变量
◆控件:
ID:
IDC_NUM1IDC_NUM2IDC_NUM3IDC_NUM4IDC_NUM5
消息函数:
OnNum1OnNum2OnNum3OnNum4OnNum5
◆控件:
ID:
IDC_NUM6IDC_NUM7IDC_NUM8IDC_NUM9IDC_NUM12
消息函数:
OnNum6OnNum7OnNum8OnNum9OnNum12
◆控件:
ID:
IDC_NUM10IDC_ADDIDC_SUBTRACTIDC_MULPTIPLYIDC_DIVISION
消息函数:
OnNum10OnAddOnSubtractOnMulptiplyOnDivision
◆控件:
ID:
IDC_EQUALIDC_BACKSPACEIDC_CLEAR1IDC_Exit
消息函数:
OnEqualOnBackspaceOnClear1OnExit
◆控件:
ID:
IDC_RADIO1IDC_RADIO2IDC_SINIDC_ARCSINIDC_COSIDC_TAN
消息函数:
OnRadio1OnRadio2OnSinOnArcsinOnCosOnTan
◆控件:
ID:
IDC_ARCCOSIDC_ARCTANVIDC_EXPIDC_SQRTIDC_LNIDC_LOG
消息函数:
OnArccosOnArctanOnExpOnSqrtOnLnOnLog
◆编辑框为IDC_EDIT1,定义类型为CEdit的变量m_Edit1.
3.程序代码的实现
3.1、定义变量
1)
向CalculatorDlg.h的CCalculatorDlg类定义中添加public型变量:
2)在CalculatorDlg.cpp中定义四个全局变量;
3)控件函数代码的实现
Ø数字输入按钮下函数的实现
以下是数字键
的函数的代码,其余以此类推
voidCCalculatorDlg:
:
OnNum1()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
CStringt;
GetDlgItem(IDC_NUM1)->GetWindowText(t);//获取按钮的数字
t=Num+t;//字符串连接
m_Edit1.SetWindowText(t);//在编辑框中显示
Num=t;
}
Ø退格键
及清屏键
函数代码的实现
voidCCalculatorDlg:
:
OnBackspace()//退格
{
Num=Num.Left(Num.GetLength()-1);//使Num的长度减1
m_Edit1.SetWindowText(Num);
}
voidCCalculatorDlg:
:
OnClear1()//清楚屏幕
{
//TODO:
Addyourcontrolnotificationhandlercodehere
m_Edit1.SetSel(0,-1);
m_Edit1.ReplaceSel("");
Num='';
result=0;
control=0;
UpdateData(FALSE);
}
Ø计算的实现,
按钮下程序代码的实现:
voidCCalculatorDlg:
:
OnAdd()//加法运算
{
//TODO:
Addyourcontrolnotificationhandlercodehere
charcs[30];
doubleadd;
m_Edit1.GetWindowText(cs,30);
add=atof((LPCTSTR)cs);
switch(control)//每次计算之前前进行之前的运算
{
case0:
result=add;break;//第一个数应存储
case1:
result=result+add;break;
case2:
result=result-add;break;
case3:
result=result*add;break;
case4:
{
if(add==0)
{
MessageBox("除数不能为0!
请重新输入.");
chared[50];
_gcvt(result,50,ed);
m_Edit1.SetWindowText(ed);
Num='';
control=0;//control赋初值
return;
}
else
{result=result/add;break;}
}
}
control=1;
chared[50];
_gcvt(result,50,ed);
m_Edit1.SetWindowText(ed);
Num='';
UpdateData(FALSE);
}
voidCCalculatorDlg:
:
OnSubtract()//减法运算
{
//TODO:
Addyourcontrolnotificationhandlercodehere
charcs[30];
doublesub;
m_Edit1.GetWindowText(cs,30);
sub=atof((LPCTSTR)cs);
switch(control)//每次计算之前前进行之前的运算
{
case0:
result=sub;break;//第一个数应存储
case1:
result=result+sub;break;
case2:
result=result-sub;break;
case3:
result=result*sub;break;
case4:
{
if(sub==0)
{
MessageBox("除数不能为0!
请重新输入.");
chared[50];
_gcvt(result,50,ed);
m_Edit1.SetWindowText(ed);
Num='';
control=0;//control回到初值
return;
}
else
{result=result/sub;break;}
}
}
control=2;
chared[50];
_gcvt(result,50,ed);
m_Edit1.SetWindowText(ed);
Num='';
}
voidCCalculatorDlg:
:
OnMulptiply()//乘法运算
{
//TODO:
Addyourcontrolnotificationhandlercodehere
charcs[30];
doublesub;
m_Edit1.GetWindowText(cs,30);
sub=atof((LPCTSTR)cs);
switch(control)//每次计算之前前进行之前的运算
{
case0:
result=sub;break;//第一个数应存储
case1:
result=result+sub;break;
case2:
result=result-sub;break;
case3:
result=result*sub;break;
case4:
{
if(sub==0)
{
MessageBox("除数不能为0!
请重新输入.");
chared[50];
_gcvt(result,50,ed);
m_Edit1.SetWindowText(ed);
Num='';
control=0;//control回到初值
return;
}
else
{result=result/sub;break;}
}
}
control=3;
chared[50];
_gcvt(result,50,ed);
m_Edit1.SetWindowText(ed);
Num='';
}
voidCCalculatorDlg:
:
OnDivision()//除法运算
{
//TODO:
Addyourcontrolnotificationhandlercodehere
charcs[30];
doublesub;
m_Edit1.GetWindowText(cs,30);
sub=atof((LPCTSTR)cs);
switch(control)//每次计算之前前进行之前的运算
{
case0:
result=sub;break;//第一个数应存储
case1:
result=result+sub;break;
case2:
result=result-sub;break;
case3:
result=result*sub;break;
case4:
{
if(sub==0)
{
MessageBox("除数不能为0!
请重新输入.");
chared[50];
_gcvt(result,50,ed);
m_Edit1.SetWindowText(ed);
Num='';
control=0;//control回到初值
return;
}
else
{result=result/sub;break;}
}
}
control=4;
chared[50];
_gcvt(result,50,ed);
m_Edit1.SetWindowText(ed);
Num='';
}
Ø等于
的实现
voidCCalculatorDlg:
:
OnEqual()//等于的实现
{
//TODO:
Addyourcontrolnotificationhandlercodehere
charcs[30],seq[50];
doubleequal;
switch(control)
{
case1:
{
m_Edit1.GetWindowText(cs,30);
equal=atof((LPCTSTR)cs);
result=result+equal;
_gcvt(result,50,seq);
m_Edit1.SetWindowText(seq);
Num='';
result=0;
control=0;
break;
}
case2:
{
m_Edit1.GetWindowText(cs,30);
equal=atof((LPCTSTR)cs);
result=result-equal;
_gcvt(result,50,seq);
m_Edit1.SetWindowText(seq);
Num='';
result=0;
control=0;
break;
}
case3:
{
m_Edit1.GetWindowText(cs,30);
equal=atof((LPCTSTR)cs);
result=result*equal;
_gcvt(result,50,seq);
m_Edit1.SetWindowText(seq);
Num='';
result=0;
control=0;
break;
}
case4:
{
m_Edit1.GetWindowText(cs,30);
equal=atof((LPCTSTR)cs);
if(equal==0)
{
MessageBox("除数不能为0!
请重新输入.");
chared[50];
_gcvt(result,50,ed);
m_Edit1.SetWindowText(ed);
Num='';
control=0;//control回到初值
return;
}
else
{
result=result/equal;
_gcvt(result,50,seq);
m_Edit1.SetWindowText(seq);
Num='';
result=0;
control=0;
break;
}
}
}
}
Ø以下是角度制
和弧度制
的实现代码
voidCCalculatorDlg:
:
OnRadio2()//角度制
{
//TODO:
Addyourcontrolnotificationhandlercodehere
math=2;
}
voidCCalculatorDlg:
:
OnRadio1()//弧度制
{
//TODO:
Addyourcontrolnotificationhandlercodehere
math=1;
}
Ø数学函数的实现,以下给出
和
的程序代码,其余函数依此类推即可得到:
voidCCalculatorDlg:
:
OnSin()//正弦函数计算的实现
{
//TODO:
Addyourcontrolnotificationhandlercodehere
charcs[30];
doublesub;
m_Edit1.GetWindowText(cs,30);
sub=atof((LPCTSTR)cs);
switch(control)//先进行判断之前是否有简单运算
{
case0:
break;
case1:
sub=result+sub;break;
case2:
sub=result-sub;break;
case3:
sub=result*sub;break;
case4:
{
if(sub==0)
{
MessageBox("除数不能为0!
请重新输入.");
chared[50];
_gcvt(result,50,ed);
m_Edit1.SetWindowText(ed);
Num='';
control=0;//control回到初值
return;
}
else
{sub=result/sub;break;}
}
}
switch(math)
{
case0:
MessageBox("计算三角函数前请选择单位制!
");return;
case1:
break;
case2:
sub=(sub*pi)/180;break;
}
result=sin(sub);
chared[50];
_gcvt(result,50,ed);
m_Edit1.SetWindowText(ed);
Num='';
control=0;
UpdateData(FALSE);
}
voidCCalculatorDlg:
:
OnArcsin()//arcsin函数计算的实现
{
//TODO:
Addyourcontrolnotificationhandlercodehere
charcs[30];
doublesub;
m_Edit1.GetWindowText(cs,30);
sub=atof((LPCTSTR)cs);
switch(control)//先进行判断之前是否有简单运算
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC60 编写 计算器 程序