简单计算器可视化程序编程Word文档下载推荐.docx
《简单计算器可视化程序编程Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《简单计算器可视化程序编程Word文档下载推荐.docx(34页珍藏版)》请在冰豆网上搜索。
按照上面的操作过程编辑其他按钮和编辑框等对象的属性。
表1各按钮和编辑框等对象的属性
对象
ID
标题或说明
编辑框
IDC_DC_EDIT_INPUT
结果显示
按钮
IDC_BUTTON1
1
IDC_BUTTON2
2
IDC_BUTTON3
3
IDC_BUTTON4
4
IDC_BUTTON5
5
IDC_BUTTON6
6
IDC_BUTTON7
7
IDC_BUTTON8
8
IDC_BUTTON9
9
IDC_BUTTON10
IDC_BUTTON11
.
IDC_BUTTON12
空格
IDC_BUTTON23
-
IDC_BUTTON26
*
IDC_BUTTON27
/
IDC_BUTTON38
sqrt
IDC_BUTTON30
%
IDC_BUTTON25
^
IDC_BUTTON31
sin
IDC_BUTTON32
cos
IDC_BUTTON33
tan
IDC_BUTTON34
cot
IDC_BUTTON40
sin~1
IDC_BUTTON41
cos~1
IDC_BUTTON35
log
IDC_BUTTON36
ln
IDC_BUTTON14
a
IDC_BUTTON15
b
IDC_BUTTON16
c
IDC_BUTTON17
d
IDC_BUTTON18
e
IDC_BUTTON19
f
IDC_BUTTON13
退格
IDC_BUTTON37
e^
IDC_BUTTON22
清空
IDOK
计算
IDC_RADIO_DEGREE
角度
IDC_RADIO_RADIAN
弧度
IDC_STATIC
计算结果
IDC_BTN_HISTREXP
历史表达式
IDCANCEL
退出
IDC_BTN_CONVERT
进制
完成后界面如图8所示。
图8计算器界面
五、计算器源程序代码
//Calculation.cpp:
implementationoftheCCalculationclass.
//////////////////////////////////////////////////////////////////////
#include"
stdafx.h"
Calculator.h"
Calculation.h"
math.h"
#ifdef_DEBUG
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#definenewDEBUG_NEW
#endif
#defineFUNCNUM15//函数个数
#defineCONSTNUM11//常数个数
#definePI3.14159
//Construction/Destruction
CCalculation:
:
CCalculation()
{
//初始化函数和常数
m_bDegree=0;
m_nOutputFlag=0;
opt[0]="
e^"
;
opt[1]="
ch"
opt[2]="
sqr"
opt[3]="
sh"
opt[4]="
log"
opt[5]="
cos"
opt[6]="
sin"
opt[7]="
tan"
opt[8]="
ln"
opt[9]="
abs"
opt[10]="
at"
opt[11]="
as"
opt[12]="
ac"
opt[13]="
th"
opt[14]="
cot"
opt2[0]='
^'
opt2[1]='
/'
opt2[2]='
*'
opt2[3]='
%'
opt2[4]='
+'
opt2[5]='
-'
m_strConValue[1]="
9.80665"
m_strConName[1]="
GG"
m_strConValue[2]="
(8.988*10^9)"
m_strConName[2]="
EF"
m_strConValue[3]="
0.02241383"
m_strConName[3]="
VM"
m_strConValue[4]="
(1.380662*10^(-23))"
m_strConName[4]="
BC"
m_strConValue[5]="
8.3144"
m_strConName[5]="
MG"
m_strConValue[6]="
(6.6720*10^(-11))"
m_strConName[6]="
GR"
m_strConValue[7]="
(6.022045*10^23)"
m_strConName[7]="
NA"
}
~CCalculation()
boolCCalculation:
IsDigital(CStringstr)
while(str.GetAt(0)=='
)str.Delete(0);
for(inti=0;
i<
FUNCNUM;
i++)if(str.Find(opt[i])!
=-1)return0;
for(i=0;
6;
i++)if(str.Find(opt2[i])!
return1;
CStringCCalculation:
NtoS(doubled)
intdecimal,sign;
char*buffer;
buffer=_ecvt(d,16,&
decimal,&
sign);
CStringstr=buffer;
if(decimal>
=0&
&
decimal<
=16)str.Insert(decimal,"
."
);
elseif(decimal>
16)
{
for(inti=str.GetLength();
decimal;
i++)str+="
0"
str+="
.0"
}
else
for(inti=0;
-decimal;
i++)str.Insert(0,"
str.Insert(0,"
if(sign==1)str.Insert(0,"
-"
returnstr;
doubleCCalculation:
StoN(CStringstr)
char*stopstring;
doublex;
x=strtod(str.GetBuffer(0),&
stopstring);
m_strTmp=stopstring;
returnx;
TwoE(CStringstrExp)
doublex2,y,x1=StoN(strExp);
strExp=m_strTmp;
charop=strExp.GetAt(0);
strExp.Delete(0);
x2=StoN(strExp);
if(m_strTmp!
="
"
)return"
ERROR_"
+m_strTmp+"
未知符号_"
if(op=='
){y=x1+x2;
elseif(op=='
){y=x1*x2;
){y=x1-x2;
){y=pow(x1,x2);
){y=x1/x2;
){y=fmod(x1,x2);
elsereturn"
未知运算符_"
returnNtoS(y);
SingleE(CStringop,doubledx)
if(op=="
)
returnNtoS(log(dx));
elseif(op=="
returnNtoS(log10(dx));
returnNtoS(sqrt(dx));
returnNtoS(exp(dx));
returnNtoS(fabs(dx))