資源簡介
系統(tǒng)地學(xué)習(xí)面向?qū)ο缶幊趟枷耄私釳FC架構(gòu),逐步熟悉可視化編程環(huán)境Visual C++,并在此環(huán)境下設(shè)計(jì)并實(shí)現(xiàn)一個(gè)簡單計(jì)算器系統(tǒng),該計(jì)算器應(yīng)能實(shí)現(xiàn)如下功能:
1、二進(jìn)制、八進(jìn)制、十進(jìn)制及十六進(jìn)制數(shù)的加、減、乘、除、乘方、取模等簡單計(jì)算
2、科學(xué)計(jì)算函數(shù),包括(反)正弦、(反)余弦、(反)正切、(反)余切、開方、指數(shù)等函數(shù)運(yùn)算
3、以角度、弧度兩種方式實(shí)現(xiàn)上述部分函數(shù)
4、具備歷史計(jì)算的記憶功能
5、對不正確的表達(dá)式能指出其錯(cuò)誤原因

代碼片段和文件信息
//?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]=“l(fā)g“; m_UnaryOperator[7]=“cot“;
m_UnaryOperator[1]=“sqrt“; m_UnaryOperator[8]=“fabs“;
m_UnaryOperator[2]=“l(fā)n“; 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()
{
}
//計(jì)算表達(dá)式的接口
CString?CCalculate::Calculateexpression(CString?expStrint?baseint?angle)
{
m_base=base; m_angle=angle;
CString?ExpStr=expStr;
ExpStr=SkipAndCheck(ExpStr); //首先過濾掉回車,換行和進(jìn)行()的配對檢查
if(m_error)?return?expStr;
Macro(ExpStr); //進(jìn)行宏替換
if(m_error)?return?expStr;
m_Result=CalculateExp(ExpStr); //計(jì)算得出十進(jìn)制結(jié)果
m_Result=ProcessResult(m_Result); //處理結(jié)果
m_decResult=m_Result; //得到十進(jìn)制的結(jié)果
if(m_base==0) //十進(jìn)制轉(zhuǎn)換成二進(jìn)制
{
Dec2Bin(&m_Result);
}
if(m_base==1) ////十進(jìn)制轉(zhuǎn)換成八進(jìn)制
{
Dec2Oct(&m_Result);
}
if(m_base==3) //十六進(jìn)制轉(zhuǎn)換成十進(jìn)制
{
Dec2Hex(&m_Result);
}
return?m_Result;
}
//計(jì)算復(fù)雜表達(dá)式
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(“函數(shù)前缺少操作符“);
m_error=true;
return?ExpStr;
}
}
int?lPos=pos;
int?len=ExpStr.GetLength();
while(ExpStr[lPos]!=‘(‘)
lPos++;
int?no=1; int?rPos=lPos;
whi
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件??????20726??2008-12-24?20:31??計(jì)算器和報(bào)告\計(jì)算器\Calculate.cpp
?????文件???????2228??2008-12-24?20:28??計(jì)算器和報(bào)告\計(jì)算器\Calculate.h
?????文件??????43064??2009-01-02?15:33??計(jì)算器和報(bào)告\計(jì)算器\Calculator.aps
?????文件???????2119??2008-12-24?20:24??計(jì)算器和報(bào)告\計(jì)算器\Calculator.cpp
?????文件???????4923??2002-01-04?01:36??計(jì)算器和報(bào)告\計(jì)算器\Calculator.dsp
?????文件????????528??2006-11-15?19:16??計(jì)算器和報(bào)告\計(jì)算器\Calculator.dsw
?????文件???????1403??2008-12-24?20:28??計(jì)算器和報(bào)告\計(jì)算器\Calculator.h
?????文件?????156672??2009-01-02?15:33??計(jì)算器和報(bào)告\計(jì)算器\Calculator.ncb
?????文件?????182784??2009-01-02?15:33??計(jì)算器和報(bào)告\計(jì)算器\Calculator.opt
?????文件???????1005??2009-01-02?15:33??計(jì)算器和報(bào)告\計(jì)算器\Calculator.plg
?????文件???????9840??2009-01-02?15:33??計(jì)算器和報(bào)告\計(jì)算器\Calculator.rc
?????文件??????13769??2008-12-24?20:24??計(jì)算器和報(bào)告\計(jì)算器\CalculatorDlg.cpp
?????文件???????2224??2008-12-24?20:29??計(jì)算器和報(bào)告\計(jì)算器\CalculatorDlg.h
?????文件??????99012??2008-12-25?16:58??計(jì)算器和報(bào)告\計(jì)算器\Debug\Calculate.obj
?????文件?????159868??2009-01-02?15:33??計(jì)算器和報(bào)告\計(jì)算器\Debug\Calculator.exe
?????文件?????380644??2009-01-02?15:33??計(jì)算器和報(bào)告\計(jì)算器\Debug\Calculator.ilk
?????文件??????12951??2008-12-24?20:37??計(jì)算器和報(bào)告\計(jì)算器\Debug\Calculator.obj
?????文件????5567056??2008-12-24?20:37??計(jì)算器和報(bào)告\計(jì)算器\Debug\Calculator.pch
?????文件?????574464??2009-01-02?15:33??計(jì)算器和報(bào)告\計(jì)算器\Debug\Calculator.pdb
?????文件???????5776??2009-01-02?15:33??計(jì)算器和報(bào)告\計(jì)算器\Debug\Calculator.res
?????文件??????66622??2008-12-25?16:58??計(jì)算器和報(bào)告\計(jì)算器\Debug\CalculatorDlg.obj
?????文件??????10661??2008-12-25?16:58??計(jì)算器和報(bào)告\計(jì)算器\Debug\FilterKeyboard.obj
?????文件??????31159??2008-12-25?16:58??計(jì)算器和報(bào)告\計(jì)算器\Debug\Fuction.obj
?????文件??????31544??2008-12-25?16:58??計(jì)算器和報(bào)告\計(jì)算器\Debug\MFECToolTip.obj
?????文件??????18270??2008-12-24?20:18??計(jì)算器和報(bào)告\計(jì)算器\Debug\RCa05900
?????文件?????105818??2008-12-24?20:37??計(jì)算器和報(bào)告\計(jì)算器\Debug\StdAfx.obj
?????文件?????222208??2009-01-02?15:33??計(jì)算器和報(bào)告\計(jì)算器\Debug\vc60.idb
?????文件?????372736??2008-12-25?16:58??計(jì)算器和報(bào)告\計(jì)算器\Debug\vc60.pdb
?????文件???????1037??2008-12-24?20:24??計(jì)算器和報(bào)告\計(jì)算器\FilterKeyboard.cpp
?????文件???????1190??2008-12-24?20:29??計(jì)算器和報(bào)告\計(jì)算器\FilterKeyboard.h
............此處省略36個(gè)文件信息
評論
共有 條評論