资源简介

系统地学习面向对象编程思想,了解MFC架构,逐步熟悉可视化编程环境Visual C++,并在此环境下设计并实现一个简单计算器系统,该计算器应能实现如下功能: 1、二进制、八进制、十进制及十六进制数的加、减、乘、除、乘方、取模等简单计算 2、科学计算函数,包括(反)正弦、(反)余弦、(反)正切、(反)余切、开方、指数等函数运算 3、以角度、弧度两种方式实现上述部分函数 4、具备历史计算的记忆功能 5、对不正确的表达式能指出其错误原因

资源截图

代码片段和文件信息

// Calculate.cpp: implementation of the CCalculate class.
//
//////////////////////////////////////////////////////////////////////

#include “stdafx.h“
#include “Calculator.h“
#include “Calculate.h“
#include 
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
const int OperatorNO=8;
const int UnaryOperatorNo=15;
const int CONSTNUM=8;
#define PI 3.1415926535897933384

CCalculate::CCalculate()
{
m_OperatorStr[0]=“+“; m_OperatorStr[4]=“%“;
m_OperatorStr[1]=“-“; m_OperatorStr[5]=“^“;
m_OperatorStr[2]=“*“; m_OperatorStr[6]=“(“;
m_OperatorStr[3]=“/“; m_OperatorStr[7]=“)“;
m_UnaryOperator[0]=“lg“; m_UnaryOperator[7]=“cot“;
m_UnaryOperator[1]=“sqrt“; m_UnaryOperator[8]=“fabs“;
m_UnaryOperator[2]=“ln“; m_UnaryOperator[9]=“as“;
m_UnaryOperator[3]=“exp“; m_UnaryOperator[10]=“ac“;
m_UnaryOperator[4]=“sin“; m_UnaryOperator[11]=“at“;
m_UnaryOperator[5]=“cos“; m_UnaryOperator[12]=“sh“;
m_UnaryOperator[6]=“tan“; m_UnaryOperator[13]=“ch“;
m_UnaryOperator[14]=“th“;
m_strConValue[0]=“3.1415926535897932384“; m_strConName[0]=“PI“; //PI
m_strConValue[1]=“6.63*10^(-34)“; m_strConName[1]=“H“; //普朗克
m_strConValue[2]=“2.99792458*10^8“; m_strConName[2]=“LS_C“; //光速
m_strConValue[3]=“1.380662*10^(-23)“; m_strConName[3]=“K“; //玻尔兹曼
m_strConValue[4]=“1.60*10^(-19)“; m_strConName[4]=“Ee“; //元电荷
m_strConValue[5]=“8.854187818*10^(-12)“; m_strConName[5]=“E0“; //介电常量
m_strConValue[6]=“6.67*10^(-11)“; m_strConName[6]=“G“; //引力常量
m_strConValue[7]=“6.02*10^23“; m_strConName[7]=“NA“; //阿伏加德罗常量
m_angle=0;
m_base=2;
m_error=false;
}

CCalculate::~CCalculate()
{

}
//计算表达式的接口
CString CCalculate::Calculateexpression(CString expStrint baseint angle)
{
m_base=base; m_angle=angle;
CString ExpStr=expStr;
ExpStr=SkipAndCheck(ExpStr); //首先过滤掉回车,换行和进行()的配对检查
if(m_error) return expStr;
Macro(ExpStr); //进行宏替换
if(m_error) return expStr;
m_Result=CalculateExp(ExpStr); //计算得出十进制结果
m_Result=ProcessResult(m_Result); //处理结果
m_decResult=m_Result; //得到十进制的结果
if(m_base==0) //十进制转换成二进制
{
Dec2Bin(&m_Result);
}
if(m_base==1) ////十进制转换成八进制
{
Dec2Oct(&m_Result);
}
if(m_base==3) //十六进制转换成十进制
{
Dec2Hex(&m_Result);
}
return m_Result;
}
//计算复杂表达式
CString CCalculate::CalculateExp(CString ExpStr)
{
int pos;
for(int i=0;i {
pos=ExpStr.Find(m_UnaryOperator[i]);
if(pos!=-1)
{
if(pos!=0)
{
char ch=ExpStr[pos-1];
if((ch>=‘0‘&&ch<=‘9‘)||ch==‘)‘)
{
AfxMessageBox(“函数前缺少操作符“);
m_error=true;
return ExpStr;
}
}
int lPos=pos;
int len=ExpStr.GetLength();
while(ExpStr[lPos]!=‘(‘)
lPos++;
int no=1; int rPos=lPos;
whi

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      20726  2008-12-24 20:31  计算器和报告\计算器\Calculate.cpp

     文件       2228  2008-12-24 20:28  计算器和报告\计算器\Calculate.h

     文件      43064  2009-01-02 15:33  计算器和报告\计算器\Calculator.aps

     文件       2119  2008-12-24 20:24  计算器和报告\计算器\Calculator.cpp

     文件       4923  2002-01-04 01:36  计算器和报告\计算器\Calculator.dsp

     文件        528  2006-11-15 19:16  计算器和报告\计算器\Calculator.dsw

     文件       1403  2008-12-24 20:28  计算器和报告\计算器\Calculator.h

     文件     156672  2009-01-02 15:33  计算器和报告\计算器\Calculator.ncb

     文件     182784  2009-01-02 15:33  计算器和报告\计算器\Calculator.opt

     文件       1005  2009-01-02 15:33  计算器和报告\计算器\Calculator.plg

     文件       9840  2009-01-02 15:33  计算器和报告\计算器\Calculator.rc

     文件      13769  2008-12-24 20:24  计算器和报告\计算器\CalculatorDlg.cpp

     文件       2224  2008-12-24 20:29  计算器和报告\计算器\CalculatorDlg.h

     文件      99012  2008-12-25 16:58  计算器和报告\计算器\Debug\Calculate.obj

     文件     159868  2009-01-02 15:33  计算器和报告\计算器\Debug\Calculator.exe

     文件     380644  2009-01-02 15:33  计算器和报告\计算器\Debug\Calculator.ilk

     文件      12951  2008-12-24 20:37  计算器和报告\计算器\Debug\Calculator.obj

     文件    5567056  2008-12-24 20:37  计算器和报告\计算器\Debug\Calculator.pch

     文件     574464  2009-01-02 15:33  计算器和报告\计算器\Debug\Calculator.pdb

     文件       5776  2009-01-02 15:33  计算器和报告\计算器\Debug\Calculator.res

     文件      66622  2008-12-25 16:58  计算器和报告\计算器\Debug\CalculatorDlg.obj

     文件      10661  2008-12-25 16:58  计算器和报告\计算器\Debug\FilterKeyboard.obj

     文件      31159  2008-12-25 16:58  计算器和报告\计算器\Debug\Fuction.obj

     文件      31544  2008-12-25 16:58  计算器和报告\计算器\Debug\MFECToolTip.obj

     文件      18270  2008-12-24 20:18  计算器和报告\计算器\Debug\RCa05900

     文件     105818  2008-12-24 20:37  计算器和报告\计算器\Debug\StdAfx.obj

     文件     222208  2009-01-02 15:33  计算器和报告\计算器\Debug\vc60.idb

     文件     372736  2008-12-25 16:58  计算器和报告\计算器\Debug\vc60.pdb

     文件       1037  2008-12-24 20:24  计算器和报告\计算器\FilterKeyboard.cpp

     文件       1190  2008-12-24 20:29  计算器和报告\计算器\FilterKeyboard.h

............此处省略36个文件信息

评论

共有 条评论