VC++ 多功能计算器

上传人:ldj****22 文档编号:28938197 上传时间:2018-01-21 格式:DOC 页数:24 大小:612KB
返回 下载 相关 举报
VC++   多功能计算器_第1页
第1页 / 共24页
VC++   多功能计算器_第2页
第2页 / 共24页
VC++   多功能计算器_第3页
第3页 / 共24页
VC++   多功能计算器_第4页
第4页 / 共24页
VC++   多功能计算器_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《VC++ 多功能计算器》由会员分享,可在线阅读,更多相关《VC++ 多功能计算器(24页珍藏版)》请在金锄头文库上搜索。

1、 课程设计说明书 NO.1沈 阳 大 学多功能计算器1、课程设计的目的本课程设计以VC+程序设计课程为基础,目的是进一步培养学生综合应用VC+的各种编程知识和技巧进行程序设计的能力,最终掌握面向对象的编程技术。通过本次课程设计,学生应能达到具备设计功能较为复杂的Windows应用程序的能力,同时培养学生自主学习和独立创新的精神。系统地学习面向对象编程思想,了解 MFC 架构,逐步熟悉可视化编程环境 Visual C+,加深对面向对象编程的思想的认识。能够独立的完成一个简单的编程,实现一个简单计算器的编程和应用,从而更深入的了解 Visual C+的工作原理。2、功能描述在 Visual C+环

2、境下设计并实现一个简单计算器系统,该计算器应能实现如下功能:1)、二进制、八进制、十进制及十六进制数的加、减、乘、除、乘方、取模等简单计算2)、科学计算函数,包括(反)正弦、( 反)余弦、(反) 正切、(反)余切、开方、指数等函数运算3)、以角度、弧度两种方式实现上述部分函数4)、具备历史计算的记忆功能5)、对不正确的表达式能指出其错误原因3、案论论证3.1、可行性分析本设计是简单计算器。日常计算机使用中,常常涉及到一些有关计算的问题,一个小型的计算器软件变得非常有用,该校型计算器需要空间资源较少,对电脑其他程序的应用影响较小。它的设计按软件工程的方法进行,系统具有良好的界面、必要的交互信息和

3、较好的健壮性;醒目美观的软件封面。使用人员能快捷简单地进行操作。即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们 课程设计说明书 NO.2沈 阳 大 学的生活有一定的帮助3.2、需求分析本软件主要用于计算机 windows 2000/XP 以上版本的用户的使用,这次课程设计一般是实现简单计算器的功能。要程序能实现:加,减,乘,除,开方,倒数等运算功能;还要实现数据的输入,输出,计算,显示及程序退出等功能。另外还可以实现多种科学计算的功能,如:三角函数的计算,弧度与角度间的转换,对数指数的计算等等。3.3、总体方案设计(1)功能框架图 1 功能框架图(2)主要功能原理

4、:正弦、余弦、正切、余切函数:制度的选择,程序运行默认制度选中角度,当选项中“角度” 按钮时,则需将其转换为角度计算,由公式:弧度PI*角度180,可将表达式中角度转换为弧度既 sll-1=PI*sll-1/180。对于反、正余弦和反正余切,由于 C+math.h 库函数提供的计算结果是弧度的,所以当选中默认的“弧度” 按钮时可不必将计算结果转换,当选中 “角度”按钮时,则由公式:角度=弧度*180/PI,既可计算出来。实现进制间浮点数的转换对不同进制的输入,将其转换为十进制数后出入,显示时转换为所选择的进行输出。 课程设计说明书 NO.3沈 阳 大 学所以进制间的转换输出,其实只是将已存的那

5、个十进制数转换为其他进制输出。历史计算的记忆功能对(和) ,使用一个运算符栈和一个操作数栈存储。按(时,进栈保存;按)时,出栈运算。对 MC、MR、MS、M+ ,使用一个浮点数存储中间值,MC 为将其清零,MR 为读取其值,MS 为保存、M+ 为在原有值的基础上加当前值。3.4、详细设计(1)进行开始编程前的数据结构分析:double m_mem; /中间值bool m_IsHudu; /弧度、角度判断void init();CRect rectSmall;CRect rectLarge;double base; /进制基数double m_operand; /存储当前输入的操作数double

6、 m_accum; /存储当前的计算处理结果bool m_bCoff; /表示当前输入是否是小数double m_coff; /小数输入是的系数Operator m_operator; /当前运算符CalcError m_errorState; /当前运算状态bool m_bOperandAvail; /表示当前是否是新输入数字(2)界面设计,将要实现的按键添加入:(3)添加按键函数:void CCalculatorDlg:OnAdd() / 加void CCalculatorDlg:OnAddMi() / +/- 课程设计说明书 NO.4沈 阳 大 学void CCalculatorDlg:

7、OnBackspace() / Backspacevoid CCalculatorDlg:OnClear() / 清除void CCalculatorDlg:OnClearE() / 清除当前void CCalculatorDlg:OnDivid() / 除void CCalculatorDlg:OnEqual() / 等于void CCalculatorDlg:OnMimus() / 减void CCalculatorDlg:OnMod() / 取模void CCalculatorDlg:OnMultiply() / 乘void CCalculatorDlg:OnPoint() / 小数点v

8、oid CCalculatorDlg:OnX2() / 平方void CCalculatorDlg:OnSin() /sin 函数void CCalculatorDlg:OnTan() / tan 函数void CCalculatorDlg:OnMs() /覆盖记忆 课程设计说明书 NO.5沈 阳 大 学void CCalculatorDlg:OnMr() /读记忆void CCalculatorDlg:OnMc() /清零记忆void CCalculatorDlg:OnMadd() /增加记忆void CCalculatorDlg:OnLog() /log 函数void CCalculato

9、rDlg:OnLn() /ln 函数void CCalculatorDlg:OnCot() /cot 函数void CCalculatorDlg:OnCos() /cos 函数void CCalculatorDlg:OnSqrt() /开方void CCalculatorDlg:OnXy() /X 的 Y 次方等等(4)完善功能:增加如下函数实现进制转换:char change(int a) /将整数转换为字符if(a 10e-10)m_operand *= base;operand = (_int64)m_operand;temp2.Format(%c, change(int)operand

10、);temp = temp + temp2;m_operand = m_operand - operand; 课程设计说明书 NO.7沈 阳 大 学return temp;double change2(char a) /将字符转换为浮点数if(a = 0 & a = len) 课程设计说明书 NO.8沈 阳 大 学k = 1;/小数部分while(i #includeusing namespace std;const int MaxStackSize=50;template class Stackprivate:T stacklistMaxStackSize; /堆栈的最大尺寸int top;

11、public:Stack();void Push(const T /压栈T Pop(); /出栈void ClearStack(); /清空堆栈 课程设计说明书 NO.17沈 阳 大 学T Peek() const; /输出堆栈顶部元素(计算结果)int StackEmpty() const; /判断堆栈是否为空int StackFull() const; /判断堆栈是否已满;/构造函数,将 top 置-1templateStack:Stack(): top(-1)/压栈templatevoid Stack:Push(const T& item)if (StackFull() /判断堆栈是否已

12、满cerrT Stack:Pop() T temp; /判断是否为空栈if(StackEmpty()cerrvoid Stack:ClearStack() top=-1;/返回栈顶元素templateT Stack:Peek() const if(top=-1) /判断 top 是否有效cerrint Stack:StackEmpty() constreturn top=-1; 课程设计说明书 NO.19沈 阳 大 学/判断堆栈是否已满template int Stack:StackFull() constreturn top=MaxStackSize-1;#endif/calculator.

13、h 计算器模板类的头文件/四则运算函数templatevoid Calcualator:Run(void)coutc,c!=)switch(c)case +:case -:case *:case /:case :Compute1(c); 课程设计说明书 NO.20沈 阳 大 学break;default:/非运算符,则必为操作数,将字符送回cin.putback(c);/读入操作数并将其存入栈中cinnewoperand;Enter(newoperand);break;/答案已在栈顶,用 peek 输出之if (!S.StackEmpty()coutvoid Calcualator:Compu

14、te2(char d)T data,N;coutdata;N=data*(PI/180); /把输入的角度转换成弧度S.ClearStack();coutvoid Calcualator:trangle(void)int flag=0;char ddo flag=0; 课程设计说明书 NO.22沈 阳 大 学coutd;if(d!=T&d!=S&d!=c&d!=y)/判断选择代码的输入是否有误,输入错误时,重新输入coutvoid Calcualator:com(void)Calcualator A;int d;char y;do coutd; 课程设计说明书 NO.23沈 阳 大 学switch (d)case 1:chengfang(A);/乘方的具体运算函数break;case 2:kaifang(A);/开方的具体运算函数break;case 3:jiecheng(A);/阶乘的具体运算函数break;default:couty;while(y=y);/循环语句控制是否继续该类型的计算,否则进入主菜单

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号