您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > c++实现计算器课程设计报告
得分:信电工程学院课程设计报告基于VC的表达式计算器软件设计课程:程序设计综合训练1班级:12软嵌2班学号:20120509223姓名:谢文靖指导教师:朱丽2013年6月28日程序设计综合训练1课程设计报告目录1引言-------------------------------------------------------------------------------11.1课题背景-----------------------------------------------------------------21.2课程设计目的-----------------------------------------------------------32需求分析-------------------------------------------------------------------------52.2系统功能模块-----------------------------------------------------------52.3设计要求-----------------------------------------------------------------63系统实现------------------------------------------------------------------------83.1对话框界面设计-------------------------------------------------------83.2数值计算功能的实现-----------------------------------------------104程序关键代码及运行结果-------------------------------------------------125总结与体会------------------------------------------------------------------15第1页1引言1.1课题背景计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求倒数等简单运算的工具。要实现计算功能,可以用VC++的知识编写程序来解决此问题。该计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度。该计算器使用非常简单和方便,对广大中小学生的学习有巨大帮助作用,也对在职人员的工作有点帮助作用.1.2课程设计目的本课程是一门实践性很强的课程,既要熟练掌握相关概念,又要动手编程,还要上机调试运行。同时,本课程也注重提高学生编写技术文档和技术文档阅读的能力。学生通过本课程的学习实践,将学习和强化软件开发的能力、文档写作能力、英语阅读能力、软件使用能力等。为今后计算机编程的学习和工作打下良好、扎实的理论实践基础。2需求分析2.1系统功能模块1)输入的符号,数字从左向右显示;点击“=”输出结果,在输出行显示2)支持加减乘除运算;3)支持“xˆy”的运算;4)括号“(”“)”的使用;5)支持混合运算;6)功能键“ANS”,“CLEAR”,“BACKSPACE”的使用;7)计算器的输入方式:支持鼠标点击计算器键输入;8)计算器计算结果的输出方式:在计算器窗口的输出行显示9)算数运算的数据类型:整数和浮点数;10)特殊情况的计算;11)以上所有的运算都是在10进制下进行.1)输入的符号,数字从右向左显示。先输入“8”8再输入“×”8*点击“=”输出结果,在输出行显示.第2页2)支持加减乘除运算.a.乘法计算:8*324b.加法计算1+01c.减法计算8-35d.除法运算(特殊情况见10.B)9/42.252)支持求次方(xˆy)运算。求次方(xˆy)运算:“ˆ”为次方(xˆy)在输入行中的显示符号4ˆ2164)“(”“)”的使用。(括号的使用)要使用“(”“)”的时候,先点击“(”,再输入数字或符号,内容输入完毕以后,点击“)”,完成“(”“)”的所有功能。例如:2×(2+2)=?22*(输出行输入行第3页2*(2+22*(2+2)2*(2+2)85)支持混合运算。附:运算符的优先级表优先级功能键显示结合律从高到低(、)(、)自左向右xˆy、1/xˆ、~自左向右×、÷*、/自左向右﹢﹣﹢﹣自左向右例如:(5+2)×5=?(5+2)*5356)功能键“CLEAR”及“BACKSPACE”的使用。a.“CLEAR”为清0键。只要按下“CLEAR”键,输入行所有字符清0,输出行回到原始状态。输入前:(5+2)*5输入后:0b.“BACKSPACE”为退格键。当输入任何数字或运算符,只要按下“BACKSPACE”键,字符位自右向左消去一位。(注:初始的“0”不能被删除)输入前:混合运算则按优先级表中的运算符优先顺序从左向右计算第4页(5+2)*5输入后:(5+2)*C.“ANS”为变量储存器。当一次结果被清除后,只要按下“ANS”键就会显示这个结果。如:5+27按“CLEAR”键后,再按“ANS”键就会这样7777)计算器的输入方式:只支持鼠标点击计算器键输入;8)计算器计算结果的输出方式:在计算器窗口的输出行显示。9)算数运算的数据类型:整数和浮点数。a.输入行最大显示的字符数32位,每个运算符算一位;b.“(”,“)”各占一个字符位;c.输出行最大显示的字符数为32位;d.纯小数显示的最大字符数为小数点后30位,整数及小数点各占一位;若纯小数为负数,则显示最大字符数为小数点后29位,“-”占一位;e.输入行在未输入任何数字的时候,显示“0”,只占一个字符位;当输入任何数字时。“0”消失,输入的的数字取代“0”;当输入任何运算符时。默认之前输入数字“0”;f.点击“=”键后方可显示数字或字母或汉字。10)特殊情况的运算A.运算结果整数部分超出32位,显示Infinity(无穷大);出现运算异常!9999999999999999*99999999Infinity第5页B.除数为0的情况,提示用户被除数不能为零!1/0除零错误C.在运算时,若结果为纯小数,小数位超过30位,则超出的字符舍弃。2/30.6666666666666666666666666若舍弃超出部位后,结果全为0,则结果为01/99^990D.在运算时,若结果的整数位不为0a.总位数在最大字符位内,则直接显示;b.总位数在最大字符位以外,整数部分在最大字符位以内,则只优先显示整数部位,弃掉32位以后的字符5/31.6666E.当用户输入“^0”时,若“^0”之前的算式或数字的值为0,点击“=”后,输出界面显示“底数不能为0”11)以上所有的运算都是在10进制下进行2.2设计要求(1)了解Windows编程的基础知识,掌握MFC应用程序的基本知识。(2)理解需求分析过程,掌握需求分析文档编写。(3)理解面向对象程序设计的基本思路和方法。(4)掌握用VC++开发MFC应用程序的一般步骤和方法。(5)掌握基于对话框的应用程序的编写,主要包括文本框和按钮等。(6)掌握后缀表达式算法。(7)掌握VC++开发工具的使用。包括资源管理,项目创建,运行调试等。(8)完成表达式的计算器应用程序,实现基本的加、减、乘、除等四则运算,且支持包括括号的表达式运算功能。第6页3系统实现3.1对话框界面设计3.2数值计算实现例如:2×(2+2)=?22*(2*(2+22*(2+2)第7页2*(2+2)84程序关键代码及运行结果#includeiostream#includestring#includeStack.h#includecmathusingnamespacestd;booljisuan(doublea,doubleb,charc,double&d){switch(c){case'+':d=a+b;//couta+bendl;returntrue;case'-':d=a-b;//couta-bendl;returntrue;case'*':d=a*b;//couta*bendl;returntrue;case'/':if(b==0)throwCString(除零错误!);第8页//couta/bendl;d=a/b;returntrue;case','://couta,bendl;//乘方操作d=pow(a,b);returntrue;default:returnfalse;}}if(array[num-40][pre-40]0)//将符号压栈{op.Add((char)num);}else{charmid;while(array[num-40][pre-40]=0){if(pre==40&&num==41)//排除(数字)情况,保留数字()非法情况{if(i0){intMyCheck=(int)name.at(i-1);if(MyCheck=57&&MyCheck=48||MyCheck==41){break;第9页}elsethrowCString(括号中的表达式不合法);}elsethrowCString(出现未匹配的));}try{op.Delete(mid);}catch(CStringe){throwCString(出现未匹配的));}doubledata1,data2;try{data.Delete(data2);data.Delete(data1);}catch(CStringe){throwCString(缺少操作数);}if(!jisuan(data1,data2,mid,data1)){result=0;throwCString(表达式异常);}第10页data.Add(data1);pre=(int)op.Top();}//CompuetrDlg.cpp:实现文件//#includestdafx.h#includeCompuetr.h#includeCompuetrDlg.h#includecounter.h#includestring#include.\compuetrdlg.husingnamespacestd;#ifdef_DEBUG#definenewDEBUG_NEW#endifvoidCCompuetrDlg::OnPaint(){if(IsIconic()){CPaintDCdc(this);//用于绘制的设备上下文SendMessage(WM_ICONERASEBKGND,reinterpret_castWPARAM(dc.GetSafeHdc()),0);//使图标在工作矩形中居中intcxIcon=GetSystemMetrics(SM_CXICON);intcyIcon=GetSystemMetrics(SM_CYICON);CRectrect;第11页GetClientRect(&rect);intx=(rect.Width()-cxIcon+1)/2;inty=(rect.Height()-cyIcon+1)/2;//绘制图标dc.DrawIcon(x,y,m_hIcon);}else{CRectrect;CPaintDCdc(this);GetClientRect(rect);dc.FillSolidRect(rect,RGB(255,0,0));//设置背景颜色CDialog::OnPaint();CDialog::OnPaint();}}//Compuetr.cpp:定义应用程序的类行为。//#includestdafx.h#includeCompuetr.h#includeCompuetrDlg.h#ifdef_DEBUG#definenewDEBUG_NEW#endif//CCompuetrApp第12页BEGIN_MESSAGE_MAP(CCompuetrApp,CWinApp)ON_COMMAND(ID_HELP,CWinApp
本文标题:c++实现计算器课程设计报告
链接地址:https://www.777doc.com/doc-2904224 .html