VC++ 多功能计算器Word文件下载.docx
- 文档编号:20695918
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:18
- 大小:531.88KB
VC++ 多功能计算器Word文件下载.docx
《VC++ 多功能计算器Word文件下载.docx》由会员分享,可在线阅读,更多相关《VC++ 多功能计算器Word文件下载.docx(18页珍藏版)》请在冰豆网上搜索。
(1)进行开始编程前的数据结构分析:
doublem_mem;
//中间值
boolm_IsHudu;
//弧度、角度判断
voidinit();
CRectrectSmall;
CRectrectLarge;
doublebase;
//进制基数
doublem_operand;
//存储当前输入的操作数
doublem_accum;
//存储当前的计算处理结果
boolm_bCoff;
//表示当前输入是否是小数
doublem_coff;
//小数输入是的系数
Operatorm_operator;
//当前运算符
CalcErrorm_errorState;
//当前运算状态
boolm_bOperandAvail;
//表示当前是否是新输入数字
(2)界面设计,将要实现的按键添加入:
(3)添加按键函数:
voidCCalculatorDlg:
:
OnAdd()//加
OnAddMi()//+/-
OnBackspace()//Backspace
OnClear()//清除
OnClearE()//清除当前
OnDivid()//除
OnEqual()//等于
OnMimus()//减
OnMod()//取模
OnMultiply()//乘
OnPoint()//小数点
OnX2()//平方
OnSin()//sin函数
OnTan()//tan函数
OnMs()//覆盖记忆
OnMr()//读记忆
OnMc()//清零记忆
OnMadd()//增加记忆
OnLog()//log函数
OnLn()//ln函数
OnCot()//cot函数
OnCos()//cos函数
OnSqrt()//开方
OnXy()//X的Y次方
等等…
(4)完善功能:
增加如下函数实现进制转换:
charchange(inta)//将整数转换为字符
{
if(a<
10)
return'
0'
+a;
else
A'
+a-10;
}
CStringToCString(intbase,doublem_operand)//将double(根据基数base)转换为CString
CStringtemp="
"
temp2;
if(m_operand==0)
return"
0"
;
__int64operand=(__int64)m_operand;
m_operand=m_operand-operand;
//整数部分
while(operand){
temp2.Format("
%c"
change((int)(operand%base)));
temp=temp2+temp;
operand/=base;
}
temp=temp+"
."
//小数部分
while(m_operand>
10e-10){
m_operand*=base;
operand=(__int64)m_operand;
change((int)operand));
temp=temp+temp2;
m_operand=m_operand-operand;
returntemp;
doublechange2(chara)//将字符转换为浮点数
if(a>
='
&
&
a<
9'
)
return(double)(a-'
);
else
doubleToDouble(doublebase,CStringstr,int&
k)//将CString(根据基数base)转换为double
//k为标志是否删除了小数点
doublenum=0.0;
doubletemp=1.0/base;
intlen=str.GetLength(),i=0;
k=0;
while(i<
len){
if(str.GetAt(i)=='
.'
break;
num=num*base+change2(str.GetAt(i));
i++;
i++;
if(i>
=len)
k=1;
num=num+change2(str.GetAt(i))*temp;
temp*=1.0/base;
returnnum;
加入出错处理:
if(m_errorState!
=ErrNone){
if(m_errorState==ErrDivideByZero)
m_Edit="
除数不能为零"
elseif(m_errorState==ErrModFloat)
浮点数不能取mod"
elseif(m_errorState==ErrTanMax)
tan为无穷大"
elseif(m_errorState==ErrCotMin)
cot为无穷大"
elseif(m_errorState==ErrLogSign)
不可以对负数取对数"
(5)增加方便用户功能:
加入加速键:
图2增加控件图
4、运行结果
(1)基本计算器的运行效果如图3所示
图3基本计算器的运行图
(2)科学计算器的运行效果如图4所示
图4科学计算器运行效果图
(3)不可以对浮点数进行取模运算,例如9.2mod9.2=?
。
运行结果如图5所示
图5浮点数不能取摸示意图
(4)不可以对90度角进行正切操作。
Tan90=?
运行结果如图6所示。
图690度角不能进行正切操作示意图
(5)不可以对0度角进行取余切操作。
Cot0=?
运行结果如图7所示
图70度角不能取余示意图
(6)不可以对负数求对数。
例如Ln-9=?
运行结果如图8所示
图8对数不可求对数示意图
(7)不可以对负数进行开方。
运行结果如图9所示
图9负数不能开方示意图
5、心得体会
C++是一种面对对象的编程语言,它跟我们大一学习的面向过程语言C++有很大的不同。
在C语言中完全没有类这个概念,平时用的最多的就是数组和结构体。
但面向对象的语言就不同了,在软件的开发过程中,我们可以通过编写各种各样不同功能的类去实现我们所想要的功能。
而且我们还可以把这些类保存起来,这样,当我们以后要用到的时候把它加入到工程里面就可以用了。
而且,对于以前的一些类,加入它有一些功能我们想拿来用,但是又想在此基础上增加一些新的功能,这怎么办呢?
我们可以通过重载这个类,然后加入我们想要的东西,那么在软件开发功能中就可以节省很多的时间,提高软件开发的效率。
刚看到这个课程设计题目的时候,我认为要实现起来并不难。
但当我开始做的时候,发现这远没有我想的那么简单,反而是越做越难。
这并不是摆一些控件,添加响应就可以实现的了。
就拿最简单的加、减、乘、除来说吧。
在进行设计的时候,我除了要实现基本的两个数进行简单的四则运算外,还要实现他们连加、连减等。
对于除法还要考虑除数不能为零这种情况。
在进行科学计算这些功能设计的时候,我发现用常规的方法并不能满足我的要求。
为了判断一个表达式的正误还有运算的优先级,我必须用到一个堆栈。
为了实现堆栈这个数据结构,我花了不少时间在上面。
而对于个别的功能,我是手工写出函数处理的。
在此次实验,我掌握面向对象技术相关的一些软件开发技术。
利用MFC类库开发Windows应用程序,消息映射是如何工作的。
代码编写能力又有了进一步的提高。
参考文献
[1]刘於勋等.C++程序设计.[M].科学出版社,2007
[2]荣钦科技.VisualC++游戏编程基础.[M].电子工业出版社,2004
[3]揣锦华.面向对象程序设计与VC++实践.[M].西安电子科技大学出版社,2005
[4]罗伟坚.VisualC++经典游戏程序设计.[M].人民邮电出版社,2006
[5]《VisualC++程序设计—基础与实例分析》,朱晴婷,黄海鹰,陈莲君,[M].清华大学出版社
[6]《VisualC++面向对象与可视化程序设计(第2版)》,黄维通,[M].清华大学出版社
[7]刘振安、刘燕君、孙忱,《C++语言课程设计》,[M].机械工业出版社,2007年
[8]严华峰.VisualC++课程设计案例精编.[M].北京:
中国水利水电出版社,2002
[9]张宏军,党留群,赵天巨.VisualC++6.0编程案例精解.[M].北京:
电子工业出版社,2005
附录:
部分程序源代码
//stack.h标准的堆栈模板程序(头文件)
#if!
defined(STACK_H)
#defineSTACK_h
#include<
iostream>
stdlib.h>
usingnamespacestd;
constintMaxStackSize=50;
template<
classT>
classStack
private:
Tstacklist[MaxStackSize];
//堆栈的最大尺寸
inttop;
public:
Stack();
voidPush(constT&
item);
//压栈
TPop();
//出栈
voidClearStack();
//清空堆栈
TPeek()const;
//输出堆栈顶部元素(计算结果)
intStackEmpty()const;
//判断堆栈是否为空
intStackFull()const;
//判断堆栈是否已满
};
//构造函数,将top置-1
template<
Stack<
T>
Stack():
top(-1){}
//压栈
voidStack<
Push(constT&
item)
if(StackFull())//判断堆栈是否已满
{
cerr<
<
Stackoverflow!
endl;
exit
(1);
top++;
stacklist[top]=item;
//不满则压栈
//出栈
TStack<
Pop()
{Ttemp;
//判断是否为空栈
if(StackEmpty())
Attempttopopanemptystack!
temp=stacklist[top];
//弹出
top--;
//清栈
ClearStack()
{top=-1;
//返回栈顶元素
Peek()const
{
if(top==-1)//判断top是否有效
{
cerr<
attempttopeekatanemptystack!
returnstacklist[top];
//判断堆栈是否为空
intStack<
StackEmpty()const
returntop==-1;
//判断堆栈是否已满
StackFull()const
returntop==MaxStackSize-1;
#endif
//calculator.h计算器模板类的头文件
//四则运算函数
voidCalcualator<
Run(void)
cout<
输入要进行的四则运算(后缀法):
\n"
charc;
Tnewoperand;
while(cin>
>
c,c!
='
switch(c)
{
case'
+'
-'
*'
/'
^'
Compute1(c);
break;
default:
//非运算符,则必为操作数,将字符送回
cin.putback(c);
//读入操作数并将其存入栈中
cin>
newoperand;
Enter(newoperand);
break;
}
//答案已在栈顶,用peek输出之
if(!
S.StackEmpty())
结果是:
S.Peek()<
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"
Compute2(chard)
Tdata,N;
请输入角度"
cin>
data;
N=data*(PI/180);
//把输入的角度转换成弧度
S.ClearStack();
\n"
Enter(N);
//将N存放到栈中
switch(d)
case'
T'
S.Push(tan(N));
//正切计算
S'
S.Push(sin(N));
//正弦计算
c'
S.Push(cos(N));
//余弦计算
default:
S.ClearStack();
break;
f(!
cout<
结果是:
************************************"
//三角函数界面选择函数
trangle(void)
{intflag=0;
chard
do
{flag=0;
#######################################"
请选择:
//选择语句
T正切#"
S正弦#"
c余弦#"
d;
if(d!
d!
y'
)//判断选择代码的输入是否有误,输入错误时,重新输入
{cout<
Errornode,pleasechooseagain!
flag=1;
Compute2(d);
//各类三角函数的具体操作函数
}while(flag==1);
//乘方,开方,阶乘运算函数
com(void)
{Calcualator<
A;
intd;
chary;
{cout<
1.乘方#"
2.开方#"
3.阶乘#"
switch(d)
case1:
chengfang(A);
//乘方的具体运算函数
case2:
kaifang(A);
//开方的具体运算函数
case3:
jiecheng(A);
//阶乘的具体运算函数
cout<
Continue?
………………(yorN)"
cin>
y;
}while(y=='
//循环语句控制是否继续该类型的计算,否则进入主菜单
Clear()
//main.cpp源文件
#include"
calculator.h"
intmain()
Wellcometocalculatorsystem!
chark;
*************************************************\n"
*请输入所选择的运算:
**"
*a.普通四则运算**"
*s.三角函数的运算**"
*k.乘方开方阶乘运算**"
charh;
h;
Calcualator<
double>
CALC;
if(h=='
k'
CALC.com();
//进入乘方开方阶乘运算
a'
CALC.Run();
//进入普通四则运算
if(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC+ 多功能计算器 VC 多功能 计算器
![提示](https://static.bdocx.com/images/bang_tan.gif)