资源简介
系统地学习面向对象编程思想,了解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个文件信息
相关资源
- c++课程设计模拟计算器含源代码、文
- 简单的VC++基于MFC计算器
- 计算器(c语言实现版)
- N皇后问题可视化演示程序源代码
- 自己做的C++MFC计算器程序
- C++图形界面计算器
- C++科学计算器
- c语言模拟电梯程序可视化
- VC6.0--计算器
-
iOS计算器代码ob
jective-C - 微软Win10计算器开源代码C++
- Visual Studio 2012制作MFC计算器-TC王者
- MFC写的复数计算器
- 函数图像生成器&利用CPU画曲线
- C++后缀表达式计算器MFC功能强大
- 基于VS2010的MFC对话框计算器程序
- 通过MFC的MCI实现的音乐播放器VC可视化
- VC面向对象与可视化程序设计清华黄维
- 多功能计算器Qt版本
- Visual_C++面向对象与可视化程序设计源
- mfc-一元稀疏多项式计算器
- mfc科学计算器
- Visual C++面向对象与可视化程序设计(
- MFC计算器,加强版的,功能强大,是
- 基于vs2017开发的逆波兰算法下的计算
- C++ MFC实现计算器基本功能
- 操作系统实验可视化界面
- Vc++编写的计算器简单小程序
- VC++ CLR编写带图形界面的简单计算器
- 基于VS2010的c++计算器小程序
评论
共有 条评论