收藏 分销(赏)

c++实现计算器课程设计报告.doc

上传人:可**** 文档编号:4571662 上传时间:2024-09-30 格式:DOC 页数:21 大小:254.54KB
下载 相关 举报
c++实现计算器课程设计报告.doc_第1页
第1页 / 共21页
c++实现计算器课程设计报告.doc_第2页
第2页 / 共21页
c++实现计算器课程设计报告.doc_第3页
第3页 / 共21页
c++实现计算器课程设计报告.doc_第4页
第4页 / 共21页
c++实现计算器课程设计报告.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

1、程序设计综合训练1 课程设计报告 得分:信电工程学院课程设计报告基于VC的表达式计算器软件设计 课程: 程序设计综合训练1 班级: 12软嵌2班学号: 20120509223姓名: 谢文靖指导教师: 朱丽2013年 6 月28日目 录 1引言- 11。1课题背景-21.2课程设计目的-32需求分析-52.2系统功能模块-52。3设计要求-63系统实现 -83.1 对话框界面设计-83。2 数值计算功能的实现-104程序关键代码及运行结果 -125总结与体会 -15 1 引言1.1 课题背景计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求倒数等简单运算的工具.要实现计算功能,

2、可以用VC+的知识编写程序来解决此问题。该计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度.该计算器使用非常简单和方便,对广大中小学生的学习有巨大帮助作用,也对在职人员的工作有点帮助作用。1.2 课程设计目的本课程是一门实践性很强的课程,既要熟练掌握相关概念,又要动手编程,还要上机调试运行。同时,本课程也注重提高学生编写技术文档和技术文档阅读的能力.学生通过本课程的学习实践,将学习和强化软件开发的能力、文档写作能力、英语阅读能力、软件使用能力等。为今后计算机编程的学习和工作打下良好、扎实的理论实践基础.2 需求分析2.1系统功能模块1)输入的符号,数字从左向右显示; 点击“=输出结

3、果,在输出行显示2)支持加减乘除运算;3)支持“xy”的运算;4) 括号“(“)”的使用;5)支持混合运算;6)功能键“ANS ,“CLEAR ,“BACKSPACE”的使用;7)计算器的输入方式:支持鼠标点击计算器键输入; 8)计算器计算结果的输出方式:在计算器窗口的输出行显示9)算数运算的数据类型:整数和浮点数;10)特殊情况的计算;11)以上所有的运算都是在10进制下进行.1)输入的符号,数字从右向左显示. 先输入“8”8 再输入“”8* 点击“=输出结果,在输出行显示。2)支持加减乘除运算。输入行a。乘法计算:83 24输出行 b。 加法计算 1+0 1 c。 减法计算83 5 d。除

4、法运算(特殊情况见10。B)9/4 2.25 2) 支持求次方(x y)运算.求次方(x y)运算:“”为次方(x y)在输入行中的显示符号42 164)“(”“)的使用。(括号的使用)要使用“(“)”的时候,先点击“(”,再输入数字或符号,内容输入完毕以后,点击“)”,完成“(”“)的所有功能.例如:2(2+2)=?2 2( 2(2+2 2(2+2) 2*(2+2) 85)支持混合运算。附:运算符的优先级表优先级功能键显示结合律从高到低( 、 ) ( 、 )自左向右xy、1/x、自左向右、*、/自左向右自左向右例如:(5+2)5=?混合运算则按优先级表中的运算符优先顺序从左向右计算(5+2)

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

6、算结果的输出方式:在计算器窗口的输出行显示。9)算数运算的数据类型:整数和浮点数。a.输入行最大显示的字符数32位,每个运算符算一位;b.“(”,“)各占一个字符位;c。输出行最大显示的字符数为32位;d。纯小数显示的最大字符数为小数点后30位,整数及小数点各占一位;若纯小数为负数,则显示最大字符数为小数点后29位,“”占一位;e.输入行在未输入任何数字的时候,显示“0”,只占一个字符位;当输入任何数字时。“0”消失,输入的的数字取代“0”;当输入任何运算符时.默认之前输入数字“0”;f。点击“=”键后方可显示数字或字母或汉字。10)特殊情况的运算A.运算结果整数部分超出32位,显示Infin

7、ity(无穷大);出现运算异常! 999999999999999999999999 InfinityB。除数为0的情况,提示用户被除数不能为零!1/0 除零错误 C在运算时,若结果为纯小数,小数位超过30位,则超出的字符舍弃。2/30 .6666666666666666666666666若舍弃超出部位后,结果全为0,则结果为01/9999 0 D在运算时,若结果的整数位不为0a总位数在最大字符位内,则直接显示;b总位数在最大字符位以外,整数部分在最大字符位以内,则只优先显示整数部位,弃掉32位以后的字符5/3 1.6666E当用户输入“0”时,若“0”之前的算式或数字的值为0,点击“=”后,输

8、出界面显示“底数不能为0”11) 以上所有的运算都是在10进制下进行2.2设计要求(1)了解Windows编程的基础知识,掌握MFC应用程序的基本知识。(2)理解需求分析过程,掌握需求分析文档编写。(3)理解面向对象程序设计的基本思路和方法.(4)掌握用VC+开发MFC应用程序的一般步骤和方法。(5)掌握基于对话框的应用程序的编写,主要包括文本框和按钮等.(6)掌握后缀表达式算法。(7)掌握VC+开发工具的使用。包括资源管理,项目创建,运行调试等.(8)完成表达式的计算器应用程序,实现基本的加、减、乘、除等四则运算,且支持包括括号的表达式运算功能。3系统实现3。1对话框界面设计3.2数值计算实

9、现例如:2(2+2)=?2 2*( 2*(2+2 2*(2+2) 2(2+2) 84程序关键代码及运行结果include include stringinclude ”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=ab;/couta-bendl;return true; case : d=a*b;/couta”bendl;return true; case

10、 /:if(b=0)throw CString(”除零错误!”);/couta/”bendl; d=a/b;return true;case ,: /couta,”b0)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(”出现未匹配的)”);double data1,data2; trydata。Delet

11、e(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.hinclude ”CompuetrDlg.h”include counter.hinclude string#include 。com

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

13、s(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();CDialog:OnPaint();/ Com

14、puetr.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: 在此处添加构造代码,/ 将所有重要的

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

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

17、 FALSE 以便退出应用程序,/ 而不是启动应用程序的消息泵.return FALSE;/stackincludeiostream#includeusing namespace std;template ;private:T data;Node link;;template class LinkedStackpublic:LinkedStack()top=0;length=0;LinkedStack();bool isEmpty()constreturn top=0;bool isFull()const;T Top() const; LinkedStackTAdd(const T& x);

18、LinkedStack&Delete(T x);int getLength()return length; private:NodeT *top;int length;;template class TLinkedStacklink;delete top;top=next;template class Tbool LinkedStackT::isFull()consttry Node p=new NodeT;delete p;return false;catch(bad_alloc& e) return true;template T LinkedStack::Top()constif(isE

19、mpty()throw CString(”堆栈空异常!”);return top-data;template class TLinkedStack& LinkedStack *p=new NodeT;p-data=x;p-link=top;top=p;length+;return *this;template class TLinkedStack& LinkedStackT:Delete(T& x) if(isEmpty()throw CString(堆栈空异常!);x=top-data;NodeT p=top;top=top-link;delete p;length-;return *this;5总结与体会 计算器虽然是我们生活中常见的一样工具,但不知道实现这样一个工具,说实话不是很简单,对于我这个学习一般的人来说,很难!计算器虽小,但包含了一些简单却又重要的功能,包括加减乘除,次方,括号等一些基本功能,它方便了大众的日常生活中遇到的计算问题。完成这个任务,说实话很艰难,但挺了过来,坚持了过来,所谓凡事贵在坚持,所以要学会坚持,坚持就是胜利。一个人的力量是有限的,学会与人合作,积极请教他人谦虚学习是必要的,它只会让你更加的进步,会更好.所以这个任务让我学到了很多,坚持,努力,合作,进取,积极向上,天下无难事,只要肯用心!!第 16 页

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服