简单计算器可视化程序编程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
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;}
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
{
intlen=strExp.GetLength();
intpos=-1;
for(inti=0;i<len;i++)
{
if(pos>=0&&strExp.GetAt(i)==')')break;
if(strExp.GetAt(i)=='(')
{
pos=i;
}
}
returnpos;
}
voidCCalculation::DelBracket(CString*strExp)
5
按钮
IDC_BUTTON6
6
按钮
IDC_BUTTON7
7
按钮
IDC_BUTTON8
8
按钮
IDC_BUTTON9
9
按钮
IDC_BUTTON10
0
按钮
IDC_BUTTON11
.
按钮
IDC_BUTTON12
空格
按钮
IDC_BUTTON23
-
按钮
IDC_BUTTON26
*
按钮
IDC_BUTTON27
/
按钮
//////////////////////////////////////////////////////////////////////
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";
e^
按钮
IDC_BUTTON22
清空
按钮
IDOK
计算
按钮
IDC_RADIO_DEGREE
角度
按钮
IDC_RADIO_RADIAN
弧度
按钮
IDC_STATIC
计算结果
按钮
IDC_BTN_HISTREXP
历史表达式
按钮
IDCANCEL
退出
按钮
IDC_BTN_CONVERT
进制
完成后界面如图8所示。
图8计算器界面
按钮
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
returnstr;
}
doubleCCalculation::StoN(CStringstr)
{
char*stopstring;
doublex;
x=strtod(str.GetBuffer(0),&stopstring);
m_strTmp=stopstring;
returnx;
}
CStringCCalculation::TwoE(CStringstrExp)
}
elseif(op=="th")
{
returnNtoS(sinh(dx)/cosh(dx));
}
elseif(op=="exp")
{
returnNtoS(pow(10,dx));
}
return"ERROR"+op+"_未知函数_";
}
intCCalculation::LocateLBra(CStringstrExp)
}
CStringCCalculation::NtoS(doubled)
{
intdecimal,sign;
char*buffer;
buffer=_ecvt(d,16,&decimal,&sign);
CStringstr=buffer;
if(decimal>=0&&decimal<=16)str.Insert(decimal,".");
五、计算器源程序代码
//Calculation.cpp:implementationoftheCCalculationclass.
//MadebyGamsnin
//////////////////////////////////////////////////////////////////////
elseif(op=='*'){y=x1*x2;}
elseif(op=='-'){y=x1-x2;}
elseif(op=='^'){y=pow(x1,x2);}
elseif(op=='/'){y=x1/x2;}
elseif(op=='%'){y=fmod(x1,x2);}
elsereturn"ERROR_"+m_strTmp+"未知运算符_";
{
while(str.GetAt(0)=='-')str.Delete(0);
for(inti=0;i<FUNCNUM;i++)if(str.Find(opt[i])!=-1)return0;
for(i=0;i<6;i++)if(str.Find(opt2[i])!=-1)return0;
return1;
{
intpos=LocateLBra(*strExp);
inti,len=strExp->GetLength();
if(pos==-1){*strExp="ERROR_无效表达式_";return;}
for(i=pos;i<len;i++)if(strExp->GetAt(i)==')')break;
1)在图5中Controls的“编辑框”按钮上单击鼠标左键,在对话框编辑窗口上合适的位置按下鼠标左键并拖动鼠标画出一个大小合适的编辑框。在编辑框上单击鼠标右键,在弹出的快捷莱单中选择属性选项,此时弹出Edit属性对话框,如图6所示,在该对话框中输入ID属性。
图6Edit属性对话框
2)在图3中Controls的“Button”按钮上单击鼠标左键,在对话框上的合适的位置上按下鼠标左键并拖动鼠标画出一个大小合适的下压式按钮。在按钮上单击鼠标右键,在弹出的快捷菜单中选择属性选项,此时也弹出PushButton属性对话框,如图7所示,在该对话框中输入控件的ID值和标题属性。
returnNtoS(y);
}
CStringCCalculation::SingleE(CStringop,doubledx)
{
if(op=="ln")
{
returnNtoS(log(dx));
}
elseif(op=="log")
{
returnNtoS(log10(dx));
}
elseif(op=="sqr")
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[6]="(6.6720*10^(-11))";m_strConName[6]="GR";
m_strConValueFra bibliotek7]="(6.022045*10^23)";m_strConName[7]="NA";
}
CCalculation::~CCalculation()
{
}
boolCCalculation::IsDigital(CStringstr)
{
returnNtoS(asin(dx));
}
elseif(op=="at")
{
returnNtoS(atan(dx));
}
if(m_bDegree)dx=dx*PI/180;
if(op=="tan")
{
returnNtoS(tan(dx));
}
elseif(op=="sin")
{
returnNtoS(sin(dx));
#endif
#defineFUNCNUM15//函数个数
#defineCONSTNUM11//常数个数
#defineE
#definePI3.14159
//////////////////////////////////////////////////////////////////////
//Construction/Destruction
elseif(decimal>16)
{
for(inti=str.GetLength();i<decimal;i++)str+="0";
str+=".0";
}
else
{
for(inti=0;i<-decimal;i++)str.Insert(0,"0");
str.Insert(0,".");
}
if(sign==1)str.Insert(0,"-");
图2
三、设计步骤
打开MicrosoftVisualC++6.0,在文件中点击新建,在弹出框内选择MFCAppWizard[exe]工程,输入工程名Calculter及其所在位置,点击确定,如图3所示。
图3新建MFCAppWizard[exe]工程
将弹出MFCAppWizard-step1对话框,选择基本对话框,点击完成,如图4所示。
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";
{
returnNtoS(sqrt(dx));
}
elseif(op=="e^")
{
returnNtoS(exp(dx));
}
elseif(op=="abs")
{
returnNtoS(fabs(dx));
}
elseif(op=="ac")
{
returnNtoS(acos(dx));
}
elseif(op=="as")
简单计算器
一、基本功能描述二进制、八进制、十进制及十六进制数的加、减、乘、除、乘方、取模等简单计算
科学计算函数,包括(反)正弦、(反)余弦、(反)正切、(反)余切、开方、指数等函数运行
以角度、弧度两种方式实现上述部分函数
具备历史计算的记忆功能
对不正确的表达式能指出其错误原因
二、流程图
图1输入数据子函数流程图
#include"stdafx.h"
#include"Calculator.h"
#include"Calculation.h"
#include"math.h"
#ifdef_DEBUG
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#definenewDEBUG_NEW
图4基本对话框
这样,MFCAppWizard就建立了一个基于对话窗口的程序框架,如图5所示。
图5新建的对话框
四、界面设计
1、创建控件
在图5所示的ResoureView选项卡中打开Dialog资源组,双击IDD_CALCULATOR_DIALOG,在右边的窗口中显示出待编辑的对话框。开始摆放控件,包括编辑框和按钮的创建。按钮的创建以“1”为例进行介绍,其他按钮的创建可参照此进行操作。
}
elseif(op=="cos")
{
returnNtoS(cos(dx));
}
elseif(op=="cot")
{
returnNtoS(1/tan(dx));
}
elseif(op=="sh")
{
returnNtoS(sinh(dx));
}
elseif(op=="ch")
{
returnNtoS(cosh(dx));
相关文档
最新文档