C++ 用VC 编写计算器程序
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
t=Num+t;
//字符串连接
m_Edit1.SetWindowText(t);//在编辑框中显示
Num=t;
6
01. 12
}
微机上机报告
退格键 及清屏键
函数代码的实现
void CCalculatorDlg::OnBackspace()
//退格
{
Num=Num.Left(Num.GetLength()-1);
数字输入按钮下函数的实现
以下是数字键 的函数的代码,其余以此类推
void CCalculatorDlg::OnNum1()
{
// TODO: Add your control notification handler code here
CString t;
GetDlgItem(IDC_NUM1)->GetWindowText(t); //获取按钮的数字
{
if(sub==0)
{
MessageBox("除数不能为 0!请重新输入.");
char ed[50];
_gcvt(result,50,ed);
m_Edit1.SetWindowText(ed);
Num=' ';
control=0;
//control 回到初值
return;
}
else
{result=result/sub;break;}
IDC_Exit OnExit
5
01. 12
微机上机报告
控件:
ID:IDC_RADIO1 IDC_RADIO2 IDC_SIN IDC_ARCSIN IDC_COS IDC_TAN 消息函数: OnRadio1 OnRadio2 OnSin OnArcsin OnCos OnTan
控件:
ID:IDC_ARCCOS IDC_ARCTANV IDC_EXP IDC_SQRT IDC_LN IDC_LOG 消息函数: OnArccos OnArctan OnExp OnSqrt OnLn OnLog
//每次计算之前前进行之前的运算
{
case 0: result=sub;break;
//第一个数应存储
case 1: result=result+sub;break;
case 2: result=result-sub;break;
case 3: result=result*sub;break;
case 4:
case 2: result=result-sub;break;
case 3: result=result*sub;break;
case 4:
{
if(sub==0)
{
MessageBox("除数不能为 0!请重新输入.");
char ed[50];
_gcvt(result,50,ed);
m_Edit1.SetWindowText(ed);
在【工程】选项卡中选择【MFC AppWizard】应用程序类型,工程 文件名为 Calculator。单击确定后选择【基本对话】建立基本对 话框应用程序。
1.2、添加控件,设计界面 界面设计如下所示:
4
01. 12
微机上机报告
2. 控件 ID 及变量
控件:
ID: IDC_NUM1 消息函数: OnNum1
Num=' ';
control=0;
wenku.baidu.com
//control 回到初值
return;
}
else
{result=result/sub;break;}
}
}
control=4;
char ed[50];
_gcvt(result,50,ed);
m_Edit1.SetWindowText(ed);
Num=' ';
}
等于 的实现
控件:
ID: IDC_NUM10 IDC_ADD IDC_SUBTRACT IDC_MULPTIPLY IDC_DIVISION 消息函数: OnNum10 OnAdd OnSubtract OnMulptiply OnDivision
控件:
ID: IDC_EQUAL IDC_BACKSPACE IDC_CLEAR1 消息函数: OnEqual OnBackspace OnClear1
//control 回到初值
return;
}
else
{result=result/sub;break;}
}
8
01. 12
微机上机报告
} control=2; char ed[50]; _gcvt(result,50,ed); m_Edit1.SetWindowText(ed);
Num=' ';
}
void CCalculatorDlg::OnMulptiply()
case 3: result=result*sub;break;
case 4:
{
if(sub==0)
{
MessageBox("除数不能为 0!请重新输入.");
char ed[50];
_gcvt(result,50,ed);
m_Edit1.SetWindowText(ed);
Num=' ';
control=0;
char cs[30];
double add;
m_Edit1.GetWindowText(cs,30);
add=atof((LPCTSTR)cs);
switch(control)
//每次计算之前前进行之前的运算
{
case 0: result=add;break;
//第一个数应存储
case 1: result=result+add;break;
//control 赋初值
void CCalculatorDlg::OnSubtract()
//减法运算
{
// TODO: Add your control notification handler code here
char cs[30];
double sub;
m_Edit1.GetWindowText(cs,30);
sub=atof((LPCTSTR)cs);
switch(control)
//每次计算之前前进行之前的运算
{
case 0: result=sub;break;
//第一个数应存储
case 1: result=result+sub;break;
case 2: result=result-sub;break;
m_Edit1.ReplaceSel(" ");
Num=' ';
result=0;
control=0;
UpdateData(FALSE);
}
计算的实现,
按钮下程序代码的实现:
void CCalculatorDlg::OnAdd()
//加法运算
{
// TODO: Add your control notification handler code here
double result=0;//存放结果数据,赋初值 0,得出结果后清 0
int control=0; //用于判断是何种运算,注意得出结果后清 0
const double pi=3.14159265358979323846; //圆周率的值
int math=0; 3) 控件函数代码的实现
//用于区分弧度制和角度制
//乘法运算
{
// TODO: Add your control notification handler code here
char cs[30];
double sub;
m_Edit1.GetWindowText(cs,30);
sub=atof((LPCTSTR)cs);
switch(control)
void CCalculatorDlg::OnEqual()
//等于的实现
10
01. 12
微机上机报告
{ // TODO: Add your control notification handler code here char cs[30],seq[50]; double equal; switch(control) { case 1: { 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; } case 2: { 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; } case 3: { 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; } case 4: {
char cs[30];
double sub;
m_Edit1.GetWindowText(cs,30);
sub=atof((LPCTSTR)cs);
switch(control)
//每次计算之前前进行之前的运算
{
case 0: result=sub;break;
//第一个数应存储
case 1: result=result+sub;break;
在使用常用函数进行计算时应特别注意所输入的数应满足 函数的定义域,使函数有意义,否则会出错:
另注:当所得数据很小时会以科学计数法的形式输出: 3
01. 12
微机上机报告
其中 e-002 即表示×10-2。
二、MFC 编程的实现
1. 计算器主界面的设计
1.1、建立对话框 1. 启动 Visual C++ 6.0 集成开发环境 2. 创建对话框类型应用程序
及角度制数据的三角计算。 2.2、注意事项:
使用除法计算时应注意不能使被除数为 0,否则会出错:
出现此错误时只需点击确定即可继续之前的计算。 在使用三角函数时应先确定所输入的数据是角度制还是弧度
制的数据,否则计算器会跳出提醒框,如下所示:
2
01. 12
微机上机报告
而计算反三角函数时只能计算弧度制数据得到角度制结果:
7
01. 12
微机上机报告
Num=' '; control=0; return; } else {result=result/add;break;} } } control=1; char ed[50]; _gcvt(result,50,ed); m_Edit1.SetWindowText(ed); Num=' '; UpdateData(FALSE); }
编辑框为 IDC_EDIT1,定义类型为 CEdit 的变量 m_Edit1.
3. 程序代码的实现
3.1、定义变量
1) 向 CalculatorDlg.h 的 CCalculatorDlg 类定义中添加 public 型
变量:
CString Num;
//用于按钮输入数字的连接的连接
2) 在 CalculatorDlg.cpp 中定义四个全局变量;
IDC_NUM2 OnNum2
IDC_NUM3 OnNum3
IDC_NUM4 IDC_NUM5 OnNum4 OnNum5
控件:
ID: IDC_NUM6 消息函数: OnNum6
IDC_NUM7 IDC_NUM8 OnNum7 OnNum8
IDC_NUM9 IDC_NUM12
OnNum9
OnNum12
case 2: result=result-add;break;
case 3: result=result*add;break;
case 4:
{
if(add==0)
{
MessageBox("除数不能为 0!请重新输入.");
char ed[50];
_gcvt(result,50,ed);
m_Edit1.SetWindowText(ed);
01. 12
微机上机报告
用 C++编写计算器程序
一、计算器介绍
1. 计算器主界面
1.1、计算器打开运行后界面如下所示:
1.2 主界面的说明 主界面主要由三部分组成: 文本框:用于数据的输入(可由下面的按钮或键盘输入),以及计
算结果的输出; 基本计算区:主要可用于数字的输入以及简单的加减乘除的计算,
//使 Num 的长度减 1
m_Edit1.SetWindowText(Num);
}
void CCalculatorDlg::OnClear1()
//清楚屏幕
{
// TODO: Add your control notification handler code here
m_Edit1.SetSel(0,-1);
}
}
control=3;
char ed[50];
_gcvt(result,50,ed);
m_Edit1.SetWindowText(ed);
Num=' ';
9
01. 12
微机上机报告
}
void CCalculatorDlg::OnDivision()
//除法运算
{
// TODO: Add your control notification handler code here
还有可用于清楚文本框的数据; 数学函数计算区:主用可实现基本常用的数学函数的计算,包括
常用的三角函数和反三角函数以及 e 指数、开平方和以 e 和 10 为
1
01. 12
微机上机报告
底对数的计算。
2.计算器的操作说明及注意事项
2.1、基本操作: 使用计算器进行基本数据计算时通过键盘及基本计算区的按钮输 入数据,然后根据计算需要点击“+、-、*、/”按钮,然后点击”=” 按钮得出计算结果。若需使用函数计算时,可先输入数据,然后 点击对应使用函数的按钮即可得出结果。特别的,对于三角函数 的计算时,可点击单选框“弧度制”、“角度制”以实现弧度制