模拟计算器程序C++.doc

上传人:苏美尔 文档编号:5656891 上传时间:2020-07-20 格式:DOC 页数:29 大小:302.50KB
返回 下载 相关 举报
模拟计算器程序C++.doc_第1页
第1页 / 共29页
模拟计算器程序C++.doc_第2页
第2页 / 共29页
模拟计算器程序C++.doc_第3页
第3页 / 共29页
模拟计算器程序C++.doc_第4页
第4页 / 共29页
模拟计算器程序C++.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《模拟计算器程序C++.doc》由会员分享,可在线阅读,更多相关《模拟计算器程序C++.doc(29页珍藏版)》请在三一文库上搜索。

1、课 程 设 计课程名称C+程序设计课程设计题目名称模拟计算器程序专业班级2016级软件工程3班学生姓名齐佳宁、江亮亮、余唐丽、郑小云学 号51602043027、51602043028、51602043008、51602043016指导教师华文立二一七年十二月二十五日蚌埠学院计算机工程学院本科课程设计成绩评定表项目权重分值具体要求得分文献阅读与调查论证0.20100能独立查阅文献和从事其它调研;有收集、加工各种信息的能力设计质量0.30100设计合理、功能齐备,程序运行正常,实验数据准确可靠;有较强的实际动手能力论文撰写质量0.20100设计说明书完全符合规范化要求,用A4复印纸打印成文学习态

2、度0.20100学习态度认真,科学作风严谨,严格按要求开展各项工作,按期完成任务学术水平与创新0.10100设计有创意,有一定的学术水平或实用价值总分评语:等级: 指导教师: 年 月 日蚌埠学院计算机工程学院课程设计任务书课 程C+程序设计课程设计班级2016级软件工程3班指导教师华文立题 目模拟计算器运行程序完成时间2017年12月20日至2017年1月15日主要内容要求完成以下功能:1 程序支持算数运算+、-、*、/、=,以及C(清楚)、A(全清楚)2 程序运行时,显示一个窗口,等待用户输入,用户可以从键盘输入要计算的表达式,输入的表达式显示在窗口中,用户键入“=”符号后,窗口显示出结果设

3、计报告要求1封面: 2课程设计任务书3课程设计报告: 系统总体方案 设计思路和主要步骤 各功能模块和流程图 设计代码 心得体会和参考资料说明:学生完成课程设计后,提交课程设计报告及软件,要求文字通畅、字迹工整(可以打印),文字不少于5000 字,并装订成册。版面要求1 题目用黑体三号,段后距18磅(或1行),居中对齐;2 标题用黑体四号,段前、段后距6磅(或0.3行);3 正文用小四号宋体,行距为1.25倍行距;4 标题按“一”、“”、“1”、“”顺序编号。上机时间安排2016级软件工程(3)班10-18周, 周三1-2节指导地点实验室(B523) 分工协作说明课题名称学生姓名学号所做的工作文

4、件加解密系统江亮亮51602043028项目框架总体设计、整体项目指导、综合设计文档编写齐佳宁51602043027需求分析、C+编码余唐丽51602043008后台代码测试、整理资料、打印郑小云51602043016部分代码编写、分模块测试摘 要计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求倒数等简单运算的工具。要实现计算功能,可以用VC+的知识编写程序来解决此问题。该计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度。该计算器使用非常简单和方便,对广大中小学生的学习有巨大帮助作用,也对在职人员的工作有点帮助作用.本课程设计将实现一个简单计算器。其类似于Win

5、dows附件中自带的计算器。这个计算器不仅实现了简单的四则运算功能,还实现了高级的科学计算功能,而且具有简洁大方的图文外观。它的设计按软件工程的方法进行,系统具有良好的界面、必要的交互信息和较好的健壮性使用人员能快捷简单地进行操作。即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。在课程设计中,系统开发平台为Windows2000XP,程序设计设计语言采用VisualC+,在程序设计中,采用了结构化与面向对象两种解决问题的方法。关键词:程序设计,计算器,MFC,按钮控件SummaryCalculator is a very convenient a

6、nd effective tool in daily life, which can add, subtract, multiply, divide, root, and calculate the simple operation of the reciprocal.To implement the calculation function, you can use the knowledge ofVC + +to write a program to solve this problem.The calculator greatly reduces the difficulty of th

7、e numerical calculation and improves the accuracy and accuracy of the calculation.The calculator is very simple and easy to use, for the majority of primary and secondary school students to learn a great help, but also for the work of the staff a little Help.This course design will implement a simpl

8、e calculator.It is similar to a calculator that is included with theWindowsattachment.This calculator not only realizes the simple operations function, but also realizes the advanced scientific computation function, and has the concise and elegant picture and text appearance.It is designed according

9、 to the method of software engineering,the system has a good interface, necessary interaction information and good robustness of the user can quickly and easily operate.The real-time and accurate calculation results can reduce the difficulty of digital calculation and save time, which will help peop

10、les life.In the course design, the system development platform isWindows 2000XP, the programming language adoptsVisual C + +, and in the programming, it adopts structured and object-oriented two kinds of problem solving methods.Tags: programming, calculator,MFC, button controls目 录摘要 81.选题意义 1.1设计任务

11、12 1.2设计目标 12 1.3关于visual C+ 13 1.4可行性及需求分析 14二、系统功能与设计 2.1系统功能 15 2.2对话框界面设计 18 2.3数值计算设计 19三、主要成员函数关系图 四、源代码 20五、结语 30参考文献 31选题意义1.1设计任务此题选择意义在于引导学生学会设计简单的科学计算器,进一步掌握Visual C+应用程序。统地学习面向对象编程思想,了解 MFC架构,逐步熟悉可视化编程环境 Visual C+,并在此环境下设计并实现一个简单计算器系统。该计算器应能实现如下功能:1)、数的加、减、乘、除、乘方等简单计算2)、科学计算函数,包括正弦、余弦、正切

12、、余切、开方、对数、指数等函数运算3)、具备历史计算的记忆功能。1.2设计目标 (1) 了解Windows编程的基础知识,掌握MFC应用程序的基本知识。(2) 理解需求分析过程,掌握需求分析文档编写。(3) 理解面向对象程序设计的基本思路和方法。(4) 掌握用VC+开发MFC应用程序的一般步骤和方法。(5) 掌握基于对话框的应用程序的编写,主要包括文本框和按钮等。(6) 掌握后缀表达式算法。(7) 掌握VC+开发工具的使用。包括资源管理,项目创建,运行调试等。(8) 完成表达式的计算器应用程序,实现基本的加、减、乘、除等四则运算,且支持包括括号的表达式运算功能。1.3关于 visualc+Vi

13、sual C+6.0 是 Microsoft 公司在 1998年推出的基Windows 9X和 WindowsN T 的优秀集成开发环境。该环境为用户提供了良好的可视化编程环境, 程序员可以里利用该开发环境轻松地访问 C+源代码编辑器,资源编辑器和使用内部调试器,并且可以创建项目文件。 Visual C+6.0 不仅包括编译器,而且它还包括许多有用组件,通过这些组件的协同工作,可以在 Visual C+6.0 集成环境中轻松地完成创建源文件, 编辑资源,以及对程序的编译,连接和调试等各项工作。VC+6.0是 Windows 9598、XP或 Windows NT下的一个应用程序,本身对软硬件没

14、有特殊要求。就是说它对环境的要求与 Windows 9598、Windows NT要求是一致的。硬件要求:一般在 586以上的处理器、16MB以上内存、100MB以上的硬盘。软件要求:Windows 9598 或 Windows NT3.51 以上版本。VC+6 .0 系统可以在一张 CD盘上,也可以在“Visual Studio( Visual C+、Visual Foxpro) ”等产品的第一张 CD盘上。一般都有一个 VC的自动安装程序,也可以执行 VC6目录下的 setup.exe ,在安装包的提示下进行,对初学者可采用“典型安装”方式。在安装好 VC 6.0 系统后,有时根据需要添加

15、或删除某些部件,可插入 CD盘重新执setup.exe 安装程序,安装程序会检测当前系统安装 VC6的足件,用户单击“添加删除” 按钮后,在“安装维护”对话框中选定要添加的部件或取消选定要删除的部件。与一般的应用软件一样,有以下两种启动方式:(1)通过“开始”按钮,选择“程序”菜单,然后打开“ Microsoft Visual studio 6.0 中文版”子菜单中的“ Microsoft Visual C+ 6.0 中文版”程序。(2)用户也可以使用命令行启动 VC。单击“开始”按钮后选择“运行”命令,在“运行” 对话框中输入 c:Program FilesMicrosoft Visual

16、StudioVC98VC6.exe (按默认盘符和路径安装)即可。1.4可行性及需求分析本设计是简单计算器。日常计算机使用中,常常涉及到一些有计算的问题,一个小型的计算器软件变得非常有用, 该校型计算器需要空间资源较少, 对电脑其他程序的应用影响较小。它的设计按软件工程的方法进行 , 系统具有良好的界面、必要的交互信息和较好的健壮性;醒目美观的软件封面。使用人员能快捷简单地进行操作。即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间, 对人们的生活有一定的帮助。本软件主要用于计算机 windows 2000XP 以上版本的用户的使用,这次课程设计一般是实现简单计算器的功能。

17、要程序能实现:加,减,乘,除,开方,倒数等运算功能;还要实现数据的输入,输出,计算,显示及程序退出等功能。另外还可以实现多种科学计算的功能,如:三角函数的计算,弧度与角度间的转换,对数指数的计算等等。系统功能与设计2.1系统功能1)输入的符号,数字从右向左显示。 先输入“8”8 再输入“”8* 点击“=”输出结果,在输出行显示.2)支持加减乘除运算.输入行a.乘法计算:8*3 24输出行 b. 加法计算 1+0 1 c. 减法计算8-3 5 d.除法运算(特殊情况见10.B)9/4 2.253)支持求次方(x y)运算。求次方(x y)运算:“”为次方(x y)在输入行中的显示符号42 164

18、)“(”“)”的使用。(括号的使用)要使用“(”“)”的时候,先点击“(”,再输入数字或符号,内容输入完毕以后,点击“)”,完成“(”“)”的所有功能。例如:2(2+2)=?2 2*( 2*(2+2 2*(2+2) 2*(2+2) 85)支持混合运算。附:运算符的优先级表优先级功能键显示结合律从高到低( 、 ) ( 、 )自左向右xy、1/x、自左向右、*、/自左向右自左向右例如:(5+2)5=?混合运算则按优先级表中的运算符优先顺序从左向右计算(5+2)*5 356)功能键“CLEAR”及“BACKSPACE”的使用。 a“CLEAR”为清0键。只要按下“CLEAR”键,输入行所有字符清0,

19、输出行回到原始状态。输入前:(5+2)*5 输入后:0 b.“BACKSPACE”为退格键。当输入任何数字或运算符,只要按下“BACKSPACE”键,字符位自右向左消去一位。(注:初始的“0”不能被删除)输入前:(5+2)*5 输入后:(5+2)* C.“ANS”为变量储存器。当一次结果被清除后,只要按下“ANS”键就会显示这个结果。如: 5+2 7 按“CLEAR”键后,再按“ANS”键就会这样 77 77)计算器的输入方式:只支持鼠标点击计算器键输入;8)计算器计算结果的输出方式:在计算器窗口的输出行显示。9)算数运算的数据类型:整数和浮点数。a.输入行最大显示的字符数32位,每个运算符算

20、一位;b.“(”,“)”各占一个字符位;c.输出行最大显示的字符数为32位;d.纯小数显示的最大字符数为小数点后30位,整数及小数点各占一位;若纯小数为负数,则显示最大字符数为小数点后29位,“-”占一位;e.输入行在未输入任何数字的时候,显示“0”,只占一个字符位;当输入任何数字时。“0”消失,输入的的数字取代“0”;当输入任何运算符时。默认之前输入数字“0”;f.点击“=”键后方可显示数字或字母或汉字。10)特殊情况的运算A.运算结果整数部分超出32位,显示Infinity(无穷大);出现运算异常! 9999999999999999*99999999 InfinityB.除数为0的情况,提

21、示用户被除数不能为零!1/0 除零错误 C在运算时,若结果为纯小数,小数位超过30位,则超出的字符舍弃。2/30 .6666666666666666666666666若舍弃超出部位后,结果全为0,则结果为01/9999 0 D在运算时,若结果的整数位不为0a总位数在最大字符位内,则直接显示;b总位数在最大字符位以外,整数部分在最大字符位以内,则只优先显示整数部位,弃掉32位以后的字符5/3 1.6666E当用户输入“0”时,若“0”之前的算式或数字的值为0,点击“=”后,输出界面显示“底数不能为0”11) 以上所有的运算都是在10进制下进行2.2对话框界面设计2.3数值计算实现例如:2(2+2

22、)=?2 2*( 2*(2+2 2*(2+2) 2*(2+2) 8源代码源代码#include #include #include Stack.h#include using namespace std;bool jisuan(double a,double b,char c,double& d) switch (c) case +: d=a+b;/couta+bendl;return true; case -: d=a-b;/couta-bendl;return true; case *: d=a*b;/couta*bendl;return true; case /:if(b=0)throw

23、 CString(除零错误!);/couta/bendl; d=a/b;return true;case ,: /couta,b0)/将符号压栈op.Add(char)num);elsechar mid;while(arraynum-40pre-400)int MyCheck=(int)name.at(i-1);if(MyCheck=48|MyCheck=41)break;else throw CString(括号中的表达式不合法);elsethrow CString(出现未匹配的);tryop.Delete(mid);catch(CString e)throw CString(出现未匹配的)

24、;double data1,data2; trydata.Delete(data2); data.Delete(data1);catch(CString e)throw CString(缺少操作数); if(!jisuan(data1,data2,mid,data1) result=0; throw CString(表达式异常); data.Add(data1);pre=(int)op.Top();/ CompuetrDlg.cpp : 实现文件/#include stdafx.h#include Compuetr.h#include CompuetrDlg.h#include counter

25、.h#include #include .compuetrdlg.husing namespace std;#ifdef _DEBUG#define new DEBUG_NEW#endifvoid CCompuetrDlg:OnPaint() if (IsIconic()CPaintDC dc(this); / 用于绘制的设备上下文SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc(), 0);/ 使图标在工作矩形中居中int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon

26、= GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ 绘制图标dc.DrawIcon(x, y, m_hIcon);else CRect rect; CPaintDC dc(this); GetClientRect(rect); dc.FillSolidRect(rect,RGB(255,0,0);/设置背景颜色 CDialog:OnPaint();CDialo

27、g:OnPaint();/ Compuetr.cpp : 定义应用程序的类行为。/#include stdafx.h#include Compuetr.h#include CompuetrDlg.h#ifdef _DEBUG#define new DEBUG_NEW#endif/ CCompuetrAppBEGIN_MESSAGE_MAP(CCompuetrApp, CWinApp)ON_COMMAND(ID_HELP, CWinApp:OnHelp)END_MESSAGE_MAP()/ CCompuetrApp 构造CCompuetrApp:CCompuetrApp()/ TODO: 在此处

28、添加构造代码,/ 将所有重要的初始化放置在 InitInstance 中/ 唯一的一个 CCompuetrApp 对象CCompuetrApp theApp;/ CCompuetrApp 初始化BOOL CCompuetrApp:InitInstance()/ 如果一个运行在 Windows XP 上的应用程序清单指定要/ 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,/则需要 InitCommonControls()。否则,将无法创建窗口。InitCommonControls();CWinApp:InitInstance();/ 标准初始化/ 如果未使用这些功能并希望

29、减小/ 最终可执行文件的大小,则应移除下列/ 不需要的特定初始化例程/ 更改用于存储设置的注册表项/ TODO: 应适当修改该字符串,/ 例如修改为公司或组织名SetRegistryKey(_T(应用程序向导生成的本地应用程序);CCompuetrDlg dlg;m_pMainWnd = &dlg;INT_PTR nResponse = dlg.DoModal();if (nResponse = IDOK)/ TODO: 在此放置处理何时用“确定”来关闭/对话框的代码else if (nResponse = IDCANCEL)/ TODO: 在此放置处理何时用“取消”来关闭/对话框的代码 /

30、由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,/ 而不是启动应用程序的消息泵。return FALSE;/stack#include#include#includeusing namespace std;template class LinkedStack;template class Node friend LinkedStack;private:T data;Node *link;template class LinkedStackpublic:LinkedStack()top=0;length=0;LinkedStack();bool isEmpty()constretur

31、n top=0;bool isFull()const;T Top() const; LinkedStack&Add(const T& x); LinkedStack&Delete(T& x);int getLength()return length; private:Node *top;int length;template LinkedStack:LinkedStack()Node *next;while(top)next=top-link;delete top;top=next;template bool LinkedStack:isFull()consttry Node *p=new N

32、ode;delete p;return false;catch(bad_alloc& e) return true;template T LinkedStack:Top()constif(isEmpty()throw CString(堆栈空异常!);return top-data;template LinkedStack& LinkedStack:Add(const T& x) Node *p=new Node;p-data=x;p-link=top;top=p;length+;return *this;template LinkedStack& LinkedStack:Delete(T& x

33、) if(isEmpty()throw CString(堆栈空异常!);x=top-data;Node *p=top;top=top-link;delete p;length-;return *this;结 语课程设计到此已告一段落,经过团队的努力,在将近一个月的实践中课程设计基本完成了。从中学到很多有用的知识,也积累了不少宝贵的经验。从一开始对MFC这样一个陌生的类库名词,在不断的翻阅书籍学习中开始渐渐的有所了解,虽然在此次课程设计我们只是针对性的去学习对对话框应用程序的编程模式,但也体会到了MFC这类库的博大精深。想全部了解这样一个类库,今后还需多下功夫。本次课程设计我们完成了一个简易计算

34、器应用软件,在此期间,遇上了不少的技术难题,但是经过努力,通过查找资料,难题还是一个个被解决了,从中学到了许多课堂上没学到的东西,这是很值得高兴的。经过设计的各个环节,从中学到了很多,锻炼了系统的设计的能力,培养了团队分工合作精神。这样对我们以后在工作中或学习中得到很好的锻炼,为用VC+编辑软件奠定基础。在本次实践期间对简易计算器的设计虽然大体实现各个控件的功能,但仍存在许多的不足与漏洞,还待以后的不断学习进一步完善。参考文献:1Visual C+ 7.0 起步进阶,国防工业出版社 武装 等编著2Visual C+ 基础教程,西安电子科技大学出版社,2006.6开发环境: Microsoft Visual C+ 6.0 Microsoft Visual C+ 7.0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1