模拟计算器程序C++_第1页
模拟计算器程序C++_第2页
模拟计算器程序C++_第3页
模拟计算器程序C++_第4页
模拟计算器程序C++_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

课程设计课程名称C++程序设计课程设计题目名称模拟计算器程序专业班级2016级软件工程3班学生姓名齐佳宁、江亮亮、余唐丽、郑小云学号51602043027、51602043028、51602043008、51602043016指导教师华文立二○一七年十二月二十五日蚌埠学院计算机工程学院本科课程设计成绩评定表工程权重分值具体要求得分文献阅读与调查论证0.20100能独立查阅文献和从事其它调研;有收集、加工各种信息的能力设计质量0.30100设计合理、功能齐备,程序运行正常,实验数据准确可靠;有较强的实际动手能力论文撰写质量0.20100设计说明书完全符合标准化要求,用A4复印纸打印成文学习态度0.20100学习态度认真,科学作风严谨,严格按要求开展各项工作,按期完成任务学术水平与创新0.10100设计有创意,有一定的学术水平或实用价值总分评语:等级:指导教师:年月日蚌埠学院计算机工程学院课程设计任务书课程C++程序设计课程设计班级2016级软件工程3班指导教师华文立题目模拟计算器运行程序完成时间2017年12月20日至2017年1月15日主要内容要求完成以下功能:程序支持算数运算+、-、*、/、=,以及C〔清楚〕、A〔全清楚〕程序运行时,显示一个窗口,等待用户输入,用户可以从键盘输入要计算的表达式,输入的表达式显示在窗口中,用户键入“=”符号后,窗口显示出结果设计报告要求1.封面:2.课程设计任务书3.课程设计报告:⑴系统总体方案⑵设计思路和主要步骤⑶各功能模块和流程图⑷设计代码⑸心得体会和参考资料说明:学生完成课程设计后,提交课程设计报告及软件,要求文字通畅、字迹工整〔可以打印〕,文字不少于5000字,并装订成册。版面要求题目用黑体三号,段后距18磅〔或1行〕,居中对齐;标题用黑体四号,段前、段后距6磅〔或0.3行〕;正文用小四号宋体,行距为1.25倍行距;标题按“一”、“㈠”、“1”、“⑴”顺序编号。上机时间安排2016级软件工程〔3〕班10-18周,周三1-2节指导地点实验室〔B523〕分工协作说明课题名称学生姓名学号所做的工作文件加解密系统江亮亮51602043028工程框架总体设计、整体工程指导、综合设计文档编写齐佳宁51602043027需求分析、C++编码余唐丽51602043008后台代码测试、整理资料、打印郑小云51602043016局部代码编写、分模块测试摘要计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求倒数等简单运算的工具。要实现计算功能,可以用VC++的知识编写程序来解决此问题。该计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度。该计算器使用非常简单和方便,对广阔中小学生的学习有巨大帮助作用,也对在职人员的工作有点帮助作用.本课程设计将实现一个简单计算器。其类似于Windows

附件中自带的计算器。这个计算器不仅实现了简单的四那么运算功能,还实现了高级的科学计算功能,而且具有简洁大方的图文外观。它的设计按软件工程的方法进行,

系统具有良好的界面、必要的交互信息和较好的健壮性使用人员能快捷简单地进行操作。即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。在课程设计中,系统开发平台为Windows

2000XP,程序设计设计语言采用Visual

C++,在程序设计中,采用了结构化与面向对象两种解决问题的方法。

关键词:

程序设计,计算器,MFC

,按钮控件SummaryCalculatorisaveryconvenientandeffectivetoolindailylife,whichcanadd,subtract,multiply,divide,root,andcalculatethesimpleoperationofthereciprocal.Toimplementthecalculationfunction,youcanusetheknowledgeofVC++towriteaprogramtosolvethisproblem.Thecalculatorgreatlyreducesthedifficultyofthenumericalcalculationandimprovestheaccuracyandaccuracyofthecalculation.Thecalculatorisverysimpleandeasytouse,forthemajorityofprimaryandsecondaryschoolstudentstolearnagreathelp,butalsofortheworkofthestaffalittleHelp.Thiscoursedesignwillimplementasimplecalculator.ItissimilartoacalculatorthatisincludedwiththeWindowsattachment.Thiscalculatornotonlyrealizesthesimpleoperationsfunction,butalsorealizestheadvancedscientificcomputationfunction,andhastheconciseandelegantpictureandtextappearance.Itisdesignedaccordingtothemethodofsoftwareengineering,thesystemhasagoodinterface,necessaryinteractioninformationandgoodrobustnessoftheusercanquicklyandeasilyoperate.Thereal-timeandaccuratecalculationresultscanreducethedifficultyofdigitalcalculationandsavetime,whichwillhelppeople'slife.Inthecoursedesign,thesystemdevelopmentplatformisWindows2000XP,theprogramminglanguageadoptsVisualC++,andintheprogramming,itadoptsstructuredandobject-orientedtwokindsofproblemsolvingmethods.Tags:programming,calculator,MFC,buttoncontrols目录摘要……………………81.选题意义1.1设计任务………121.2设计目标………121.3关于visualC++………………131.4可行性及需求分析……………14二、系统功能与设计2.1系统功能………152.2对话框界面设计………………182.3数值计算设计…………………19三、主要成员函数关系图四、源代码……………20五、结语………………30参考文献………………31选题意义1.1设计任务此题选择意义在于引导学生学会设计简单的科学计算器,进一步掌握VisualC++应用程序。统地学习面向对象编程思想,了解MFC架构,逐步熟悉可视化编程环境VisualC++,并在此环境下设计并实现一个简单计算器系统。该计算器应能实现如下功能:1)、数的加、减、乘、除、乘方等简单计算2)、科学计算函数,包括正弦、余弦、正切、余切、开方、对数、指数等函数运算3)、具备历史计算的记忆功能。1.2设计目标(1)了解Windows编程的根底知识,掌握MFC应用程序的根本知识。(2)理解需求分析过程,掌握需求分析文档编写。(3)理解面向对象程序设计的根本思路和方法。(4)掌握用VC++开发MFC应用程序的一般步骤和方法。(5)掌握基于对话框的应用程序的编写,主要包括文本框和按钮等。(6)掌握后缀表达式算法。(7)掌握VC++开发工具的使用。包括资源管理,工程创立,运行调试等。(8)完成表达式的计算器应用程序,实现根本的加、减、乘、除等四那么运算,且支持包括括号的表达式运算功能。1.3关于visualc++VisualC++6.0是Microsoft公司在1998年推出的基Windows9X和WindowsNT的优秀集成开发环境。该环境为用户提供了良好的可视化编程环境,程序员可以里利用该开发环境轻松地访问C++源代码编辑器,资源编辑器和使用内部调试器,并且可以创立工程文件。VisualC++6.0不仅包括编译器,而且它还包括许多有用组件,通过这些组件的协同工作,可以在VisualC++6.0集成环境中轻松地完成创立源文件,编辑资源,以及对程序的编译,连接和调试等各项工作。VC++6.0是Windows9598、XP或WindowsNT下的一个应用程序,本身对软硬件没有特殊要求。就是说它对环境的要求与Windows9598、WindowsNT要求是一致的。硬件要求:一般在586以上的处理器、16MB以上内存、100MB以上的硬盘。软件要求:Windows9598或WindowsNT3.51以上版本。VC++6.0系统可以在一张CD盘上,也可以在“VisualStudio(VisualC++、VisualFoxpro)”等产品的第一张CD盘上。一般都有一个VC的自动安装程序,也可以执行VC6目录下的setup.exe,在安装包的提示下进行,对初学者可采用“典型安装”方式。在安装好VC6.0系统后,有时根据需要添加或删除某些部件,可插入CD盘重新执setup.exe安装程序,安装程序会检测当前系统安装VC6的足件,用户单击“添加删除”按钮后,在“安装维护”对话框中选定要添加的部件或取消选定要删除的部件。与一般的应用软件一样,有以下两种启动方式:(1)通过“开始”按钮,选择“程序”菜单,然后翻开“MicrosoftVisualstudio6.0中文版”子菜单中的“MicrosoftVisualC++6.0中文版”程序。(2)用户也可以使用命令行启动VC。单击“开始”按钮后选择“运行”命令,在“运行”对话框中输入c:\ProgramFiles\MicrosoftVisualStudio\VC98\VC6.exe〔按默认盘符和路径安装〕即可。1.4可行性及需求分析本设计是简单计算器。日常计算机使用中,常常涉及到一些有计算的问题,一个小型的计算器软件变得非常有用,该校型计算器需要空间资源较少,对电脑其他程序的应用影响较小。它的设计按软件工程的方法进行,系统具有良好的界面、必要的交互信息和较好的健壮性;醒目美观的软件封面。使用人员能快捷简单地进行操作。即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。本软件主要用于计算机windows2000XP以上版本的用户的使用,这次课程设计一般是实现简单计算器的功能。要程序能实现:加,减,乘,除,开方,倒数等运算功能;还要实现数据的输入,输出,计算,显示及程序退出等功能。另外还可以实现多种科学计算的功能,如:三角函数的计算,弧度与角度间的转换,对数指数的计算等等。系统功能与设计2.1系统功能1〕输入的符号,数字从右向左显示。先输入“8”8再输入“×”8*点击“=”输出结果,在输出行显示.2)支持加减乘除运算.输入行a.乘法计算:输入行8*324输出行b.加法计算输出行1+01c.减法计算8-35d.除法运算〔特殊情况见10.B〕9/42.253)支持求次方(xˆy)运算。求次方(xˆy)运算:“ˆ”为次方(xˆy)在输入行中的显示符号4ˆ2164〕“〔”“〕”的使用。〔括号的使用〕要使用“〔”“〕”的时候,先点击“〔”,再输入数字或符号,内容输入完毕以后,点击“〕”,完成“〔”“〕”的所有功能。例如:2×〔2+2〕=?22*(2*(2+22*(2+2)2*〔2+2〕85)支持混合运算。附:运算符的优先级表优先级功能键显示结合律从高到低(、)〔、〕自左向右xˆy、1/xˆ、~自左向右×、÷*、/自左向右﹢﹣﹢﹣自左向右例如:〔5+2〕×5=?混合运算那么按优先级表中的运算符优先顺序从左向右计算〔5+2〕*5混合运算那么按优先级表中的运算符优先顺序从左向右计算356)功能键“CLEAR”及“BACKSPACE”的使用。a.“CLEAR”为清0键。只要按下“CLEAR”键,输入行所有字符清0,输出行回到原始状态。输入前:〔5+2〕*5输入后:0b.“BACKSPACE”为退格键。当输入任何数字或运算符,只要按下“BACKSPACE”键,字符位自右向左消去一位。〔注:初始的“0”不能被删除〕输入前:〔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*99999999InfinityB.除数为0的情况,提示用户被除数不能为零!1/0除零错误C.在运算时,假设结果为纯小数,小数位超过30位,那么超出的字符舍弃。2/30.6666666666666666666666666假设舍弃超出部位后,结果全为0,那么结果为01/99^990D.在运算时,假设结果的整数位不为0a.总位数在最大字符位内,那么直接显示;b.总位数在最大字符位以外,整数局部在最大字符位以内,那么只优先显示整数部位,弃掉32位以后的字符5/31.6666E.当用户输入“^0”时,假设“^0”之前的算式或数字的值为0,点击“=”后,输出界面显示“底数不能为0”以上所有的运算都是在10进制下进行2.2对话框界面设计2.3数值计算实现例如:2×〔2+2〕=?22*(2*(2+22*(2+2)2*〔2+2〕8源代码源代码#include<iostream>#include<string>#include"Stack.h"#include<cmath>usingnamespacestd;booljisuan(doublea,doubleb,charc,double&d){ switch(c){case'+':d=a+b; //cout<<a<<"+"<<b<<endl; returntrue;case'-':d=a-b; //cout<<a<<"-"<<b<<endl; returntrue;case'*':d=a*b; //cout<<a<<"*"<<b<<endl; returntrue;case'/': if(b==0) throwCString("除零错误!"); //cout<<a<<"/"<<b<<endl;d=a/b; returntrue; case','://cout<<a<<","<<b<<endl;//乘方操作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(i>0) { intMyCheck=(int)name.at(i-1); if(MyCheck<=57&&MyCheck>=48||MyCheck==41) { break; } elsethrowCString("括号中的表达式不合法"); } else throwCString("出现未匹配的)"); } 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("表达式异常"); }data.Add(data1); pre=(int)op.Top(); }//CompuetrDlg.cpp:实现文件//#include"stdafx.h"#include"Compuetr.h"#include"CompuetrDlg.h"#include"counter.h"#include<string>#include".\compuetrdlg.h"usingnamespacestd;#ifdef_DEBUG#definenewDEBUG_NEW#endifvoidCCompuetrDlg::OnPaint(){ if(IsIconic()) { CPaintDCdc(this);//用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND,reinterpret_cast<WPARAM>(dc.GetSafeHdc()),0); //使图标在工作矩形中居中 intcxIcon=GetSystemMetrics(SM_CXICON); intcyIcon=GetSystemMetrics(SM_CYICON); CRectrect; 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:定义应用程序的类行为。//#include"stdafx.h"#include"Compuetr.h"#include"CompuetrDlg.h"#ifdef_DEBUG#definenewDEBUG_NEW#endif//CCompuetrAppBEGIN_MESSAGE_MAP(CCompuetrApp,CWinApp) ON_COMMAND(ID_HELP,CWinApp::OnHelp)END_MESSAGE_MAP()//CCompuetrApp构造CCompuetrApp::CCompuetrApp(){ //TODO:在此处添加构造代码, //将所有重要的初始化放置在InitInstance中}//唯一的一个CCompuetrApp对象CCompuetrApptheApp;//CCompuetrApp初始化BOOLCCompuetrApp::InitInstance(){ //如果一个运行在WindowsXP上的应用程序清单指定要 //使用ComCtl32.dll版本6或更高版本来启用可视化方式, //那么需要InitCommonControls()。否那么,将无法创立窗口。 InitCommonControls(); CWinApp::InitInstance(); //标准初始化 //如果未使用这些功能并希望减小 //最终可执行文件的大小,那么应移除以下 //不需要的特定初始化例程 //更改用于存储设置的注册表项 //TODO:应适当修改该字符串, //例如修改为公司或组织名 SetRegistryKey(_T("应用程序向导生成的本地应用程序")); CCompuetrDlgdlg; m_pMainWnd=&dlg; INT_PTRnResponse=dlg.DoModal(); if(nResponse==IDOK) { //TODO:在此放置处理何时用“确定”来关闭 //对话框的代码 } elseif(nResponse==IDCANCEL) { //TODO:在此放置处理何时用“取消”来关闭 //对话框的代码 }//由于对话框已关闭,所以将返回FALSE以便退出应用程序, //而不是启动应用程序的消息泵。 returnFALSE;}//stack#include<iostream>#include<string>#include<new>usingnamespacestd;template<classT>classLinkedStack;template<classT>classNode{friendLinkedStack<T>;private: Tdata; Node<T>*link;};template<classT>classLinkedStack{ public: LinkedStack(){top=0;length=0;} ~LinkedStack(); boolisEmpty()const { returntop==0; } boolisFull()const; TTop()const;LinkedStack<T>&Add(constT&x);LinkedStack<T>&Delete(T&x); intgetLength(){returnlength;}private: Node<T>*top; intlength;};template

温馨提示

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

评论

0/150

提交评论