C++ 计算器 课程设计模板_第1页
C++ 计算器 课程设计模板_第2页
C++ 计算器 课程设计模板_第3页
C++ 计算器 课程设计模板_第4页
C++ 计算器 课程设计模板_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C++面向对象程序设计PAGE16《C++面向对象程序设计》课程设计报告设计题目:计算器学院名称:专业:信息与计算科学班级:学生姓名:学号:指导教师:完成时间:目录第1章概述 21.1软件实现的目标 21.2软件实现方案 21.3软件实现环境 2第2章软件分析 32.1调查 32.2软件分析 3第3章软件设计 43.1软件功能设计 43.2功能函数设计 43.3输入输出的设计 4第4章软件实现 54.1软件源代码 54.2运行结果 12结论 15参考文献 15

第1章概述1.1软件实现的目标课程设计的任务:设计一个简易计算器,要求源文件要采用多文件的工程结构;在源程序中必须使用类,输入输出要符合C++语言的特性。基本功能:能计算加、减、乘、除及带括号和乘方的混合运算。软件特点:可以方便快捷的直接运算带括号的混合算式;操作简便,都是从键盘直接输入。1.2软件实现方案第一步:分析题目,建立类,画出类图。第二步:画出流程,根据流程图编写程序清单第三步:上机调试程序(使用单步调试,设置断点、分块调试的方法)。第四步:及时整理资料,撰写课程设计报告中有关这个题目的内容。1.3软件实现环境硬件配置:586以上PC兼容机或品牌机,配有彩色显示器、鼠标、键盘,内存不小于64MB,硬盘自由空间不少于200MB。推荐配置为内存128MB或256MB(或以上),硬盘自由空间500MB以上。运行环境:Windows2000/NT/Xp、VisualC++集成开发环境。第2章软件分析2.1调查用户对计算器软件的要求:能够进行复杂的运算;能够实现对算式的计算;操作方便快捷;显示运行结果时,结果前显示该算式;2.2软件分析结构图:主程序主程序主界面主界面退出程序初始化程序退出程序初始化程序数据输入数据输入数据处理数据处理结果输出结果输出图2.2第3章软件设计3.1软件功能设计流程图:开始开始操作界面算式输入输入判断错误类型提示输入判断输入判断输入判断标记标记标记算式计算结果输出NYNYNYNY退出图3.13.2功能函数设计1.定义界面函数voidfirst(){cout<<"计算器基本功能介绍"<<endl;cout<<endl;}2.定义判断函数booljudge(){//判断是不是加减乘除与浮点数}3.定义对栈函数voidtozhan(stack<float>&,stack<char>&){//加减乘除四则运算及浮点数算法}4.定义运算函数voidmem(){//初始界面显示;数字类字符与数字转换压入数字栈;考虑优先级调整运算顺序;括号及输出处理}5定义小数运算函数floatfraction(){//处理小数}3.3输入输出的设计①、界面设计程序运行后会出现一个简捷的窗口,并有相应的操作提示语,便于用户操作。②、功能设计数据输入完成后,软件运行时自动调用不同的函数模块实现不同的运算,结束时将输入算式和结果以等式的形式在界面输出,输出后可按任意键退出。第4章软件实现4.1软件源代码#include<iostream>#include<stack>usingnamespacestd;voidfirst()//定义界面函数{cout<<""<<endl;cout<<"欢迎使用计算器"<<endl;cout<<""<<endl;cout<<"【该计算器具备整型数据、浮点型数据的算术(加、减、乘、除)运算】"<<endl;cout<<"【功能。依次输入第一个运算数、运算符(+,-,*,/),第二个运算数,】"<<endl;cout<<"【然后输出结果。实现单运算符表达式计算的功能。输入的操作数可以包】"<<endl;cout<<"【含整数或浮点数。如果遇到错误的表达式,应输出错误提示信息。表达】"<<endl;cout<<"【式可以有括号,并且+-*/分优先级的】"<<endl;cout<<endl;}voidmem();booljudge(char,char);voidtozhan(stack<float>&,stack<char>&);floatfraction(float,float);voidmain(){mem();}voidmem(){ first();intused,pr;floatt;charc;stack<float>num;stack<char>oper;t=0;pr=0;used=0;cout<<"请输入待求表达式:"<<endl;while(cin>>c,!cin.eof()){if(isdigit(c)){used=1;t=t*10+(c-'0');continue;}//将输入的数字类字符转换成数字;if(c=='+'||c=='-'||c=='*'||c=='/'||c=='.'){if(used){num.push(t);t=0;used=0;}//将转化好的数字压入数字栈;if(oper.empty()||oper.top()=='('){oper.push(c);continue;}//向操作符栈里压入第一个操作符;解决括号问题;while(!judge(c,oper.top())){tozhan(num,oper);if(oper.empty()||oper.top()=='(')break;}//根据运算符号优先级,调整运算顺序,并处理优先运算部分;oper.push(c);continue;}if(c=='('){pr++;oper.push(c);continue;//括号入栈,作为括号内运算的标志;}if(c==')'){pr--;//括号结束,整理括号内的运算结果;if(used){num.push(t);t=0;used=0;}while(!oper.empty()){if(oper.top()=='(')break;tozhan(num,oper);}oper.pop();continue;}if(c=='=')//遇到‘=’号,输出结果;{if(pr){cout<<"括号数目不匹配,请检查并重新输入!"<<endl;return;}if(used)num.push(t);while(!oper.empty())tozhan(num,oper);cout<<"表达式的值为:"<<num.top()<<endl;return;}else{cout<<"表达式输入错误,请重新输入!"<<endl;return;}}}booljudge(chars,chart){if((s=='*'||s=='/')&&(t=='+'||t=='-'))returntrue;if(s=='.')returntrue;returnfalse;}voidtozhan(stack<float>&num,stack<char>&oper){floata,b,r;b=num.top();num.pop();a=num.top();num.pop();switch(oper.top()){case('+'):r=a+b;break;case('-'):r=a-b;break;case('*'):r=a*b;break;case('/'):r=a/b;break;case('.'):r=fraction(a,b);};num.push(r);oper.pop();}floatfraction(floatm,floatn)//处理小数{while(n>=1)n/=10;n+=m;returnn;}4.2运行结果结论本程序基本完成了题目要求的功能。此计算器有运算的能力。但是功能单一,每次只能进行一次运算,而不能重复操作,并且对于数据的N次平方的操作需要进行多次数据与“*”的多次重复输入,比较复杂,在时空方面占据劣势。本软件应用起来不是很方便,特别是输入的一些字符的时候,必须是英文半角,不然会提示语法错误,最不实际的就是不能运用求值。但是可以通过增加判断条件,使之对输入形式不拘一格.这次课程设计,我更加深刻地认识到了C语言,栈,C++面向对象编程三者之间的区别和联系,同时也体会到了三者联合的优势,清楚的认识到

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论