最新c--实现计算器课程设计报告解析.doc

上传人:1595****071 文档编号:34719018 上传时间:2022-08-18 格式:DOC 页数:25 大小:384.50KB
返回 下载 相关 举报
最新c--实现计算器课程设计报告解析.doc_第1页
第1页 / 共25页
最新c--实现计算器课程设计报告解析.doc_第2页
第2页 / 共25页
点击查看更多>>
资源描述

《最新c--实现计算器课程设计报告解析.doc》由会员分享,可在线阅读,更多相关《最新c--实现计算器课程设计报告解析.doc(25页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-datec-实现计算器课程设计报告解析得分: 得分:信电工程学院课程设计报告基于VC的表达式计算器软件设计 课程: 程序设计综合训练1 班级: 12软嵌2班学号: 20120509223姓名: 谢文靖指导教师: 朱丽2013年 6 月28日目 录 1引言- 11.1课题背景-21.2课程设计目的-32需求分析-52.2系统功能模块-52.3设计要求-63系统实现 -83.1

2、对话框界面设计-83.2 数值计算功能的实现-104程序关键代码及运行结果 -125总结与体会 -15 -1 引言1.1 课题背景计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求倒数等简单运算的工具。要实现计算功能,可以用VC+的知识编写程序来解决此问题。该计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度。该计算器使用非常简单和方便,对广大中小学生的学习有巨大帮助作用,也对在职人员的工作有点帮助作用.1.2 课程设计目的本课程是一门实践性很强的课程,既要熟练掌握相关概念,又要动手编程,还要上机调试运行。同时,本课程也注重提高学生编写技术文档和技术文档阅读的能力。

3、学生通过本课程的学习实践,将学习和强化软件开发的能力、文档写作能力、英语阅读能力、软件使用能力等。为今后计算机编程的学习和工作打下良好、扎实的理论实践基础。2 需求分析2.1系统功能模块1)输入的符号,数字从左向右显示; 点击“=”输出结果,在输出行显示2)支持加减乘除运算;3)支持“xy”的运算;4) 括号“(”“)”的使用;5)支持混合运算;6)功能键“ANS” ,“CLEAR” ,“BACKSPACE”的使用;7)计算器的输入方式:支持鼠标点击计算器键输入; 8)计算器计算结果的输出方式:在计算器窗口的输出行显示9)算数运算的数据类型:整数和浮点数;10)特殊情况的计算;11)以上所有的

4、运算都是在10进制下进行.1)输入的符号,数字从右向左显示。 先输入“8”8 再输入“”8* 点击“=”输出结果,在输出行显示.2)支持加减乘除运算.输入行a.乘法计算:8*3 24输出行 b. 加法计算 1+0 1 c. 减法计算8-3 5 d.除法运算(特殊情况见10.B)9/4 2.25 2) 支持求次方(x y)运算。求次方(x y)运算:“”为次方(x y)在输入行中的显示符号42 164)“(”“)”的使用。(括号的使用)要使用“(”“)”的时候,先点击“(”,再输入数字或符号,内容输入完毕以后,点击“)”,完成“(”“)”的所有功能。例如:2(2+2)=?2 2*( 2*(2+2

5、 2*(2+2) 2*(2+2) 85)支持混合运算。附:运算符的优先级表优先级功能键显示结合律从高到低( 、 ) ( 、 )自左向右xy、1/x、自左向右、*、/自左向右自左向右例如:(5+2)5=?混合运算则按优先级表中的运算符优先顺序从左向右计算(5+2)*5 356)功能键“CLEAR”及“BACKSPACE”的使用。 a“CLEAR”为清0键。只要按下“CLEAR”键,输入行所有字符清0,输出行回到原始状态。输入前:(5+2)*5 输入后:0 b.“BACKSPACE”为退格键。当输入任何数字或运算符,只要按下“BACKSPACE”键,字符位自右向左消去一位。(注:初始的“0”不能被

6、删除)输入前:(5+2)*5 输入后:(5+2)* C.“ANS”为变量储存器。当一次结果被清除后,只要按下“ANS”键就会显示这个结果。如: 5+2 7 按“CLEAR”键后,再按“ANS”键就会这样 77 77)计算器的输入方式:只支持鼠标点击计算器键输入;8)计算器计算结果的输出方式:在计算器窗口的输出行显示。9)算数运算的数据类型:整数和浮点数。a.输入行最大显示的字符数32位,每个运算符算一位;b.“(”,“)”各占一个字符位;c.输出行最大显示的字符数为32位;d.纯小数显示的最大字符数为小数点后30位,整数及小数点各占一位;若纯小数为负数,则显示最大字符数为小数点后29位,“-”

7、占一位;e.输入行在未输入任何数字的时候,显示“0”,只占一个字符位;当输入任何数字时。“0”消失,输入的的数字取代“0”;当输入任何运算符时。默认之前输入数字“0”;f.点击“=”键后方可显示数字或字母或汉字。10)特殊情况的运算A.运算结果整数部分超出32位,显示Infinity(无穷大);出现运算异常! 9999999999999999*99999999 InfinityB.除数为0的情况,提示用户被除数不能为零!1/0 除零错误 C在运算时,若结果为纯小数,小数位超过30位,则超出的字符舍弃。2/30 .6666666666666666666666666若舍弃超出部位后,结果全为0,则

8、结果为01/9999 0 D在运算时,若结果的整数位不为0a总位数在最大字符位内,则直接显示;b总位数在最大字符位以外,整数部分在最大字符位以内,则只优先显示整数部位,弃掉32位以后的字符5/3 1.6666E当用户输入“0”时,若“0”之前的算式或数字的值为0,点击“=”后,输出界面显示“底数不能为0”11) 以上所有的运算都是在10进制下进行2.2设计要求(1)了解Windows编程的基础知识,掌握MFC应用程序的基本知识。(2)理解需求分析过程,掌握需求分析文档编写。(3)理解面向对象程序设计的基本思路和方法。(4)掌握用VC+开发MFC应用程序的一般步骤和方法。(5)掌握基于对话框的应

9、用程序的编写,主要包括文本框和按钮等。(6)掌握后缀表达式算法。(7)掌握VC+开发工具的使用。包括资源管理,项目创建,运行调试等。(8)完成表达式的计算器应用程序,实现基本的加、减、乘、除等四则运算,且支持包括括号的表达式运算功能。3系统实现3.1对话框界面设计3.2数值计算实现例如:2(2+2)=?2 2*( 2*(2+2 2*(2+2) 2*(2+2) 84程序关键代码及运行结果#include #include #include Stack.h#include using namespace std;bool jisuan(double a,double b,char c,double

10、& 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 CString(除零错误!);/couta/bendl; d=a/b;return true;case ,: /couta,b0)/将符号压栈op.Add(char)num);elsechar mid;while(arraynum-40pre-400)int MyCheck=(int)n

11、ame.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.Delete(data2); data.Delete(data1);catch(CString e)throw CString(缺少操作数); if(!jisuan(data1,data2,mid,data1) result=0;

12、throw CString(表达式异常); data.Add(data1);pre=(int)op.Top();/ CompuetrDlg.cpp : 实现文件/#include stdafx.h#include Compuetr.h#include CompuetrDlg.h#include counter.h#include #include .compuetrdlg.husing namespace std;#ifdef _DEBUG#define new DEBUG_NEW#endifvoid CCompuetrDlg:OnPaint() if (IsIconic()CPaintDC

13、dc(this); / 用于绘制的设备上下文SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc(), 0);/ 使图标在工作矩形中居中int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/

14、绘制图标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();/ Compuetr.cpp : 定义应用程序的类行为。/#include stdafx.h#include Compuetr.h#include CompuetrDlg.h#ifdef _DEBUG#define new DEBUG_NEW#endif/ CCom

15、puetrAppBEGIN_MESSAGE_MAP(CCompuetrApp, CWinApp)ON_COMMAND(ID_HELP, CWinApp:OnHelp)END_MESSAGE_MAP()/ CCompuetrApp 构造CCompuetrApp:CCompuetrApp()/ TODO: 在此处添加构造代码,/ 将所有重要的初始化放置在 InitInstance 中/ 唯一的一个 CCompuetrApp 对象CCompuetrApp theApp;/ CCompuetrApp 初始化BOOL CCompuetrApp:InitInstance()/ 如果一个运行在 Window

16、s XP 上的应用程序清单指定要/ 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,/则需要 InitCommonControls()。否则,将无法创建窗口。InitCommonControls();CWinApp:InitInstance();/ 标准初始化/ 如果未使用这些功能并希望减小/ 最终可执行文件的大小,则应移除下列/ 不需要的特定初始化例程/ 更改用于存储设置的注册表项/ TODO: 应适当修改该字符串,/ 例如修改为公司或组织名SetRegistryKey(_T(应用程序向导生成的本地应用程序);CCompuetrDlg dlg;m_pMainWnd =

17、&dlg;INT_PTR nResponse = dlg.DoModal();if (nResponse = IDOK)/ TODO: 在此放置处理何时用“确定”来关闭/对话框的代码else if (nResponse = IDCANCEL)/ TODO: 在此放置处理何时用“取消”来关闭/对话框的代码 / 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,/ 而不是启动应用程序的消息泵。return FALSE;/stack#include#include#includeusing namespace std;template class LinkedStack;template

18、class Node friend LinkedStack;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; LinkedStack&Add(const T& x); LinkedStack&Delete(T& x);int getLength()return length; private:Node *top;i

19、nt length;template LinkedStack:LinkedStack()Node *next;while(top)next=top-link;delete top;top=next;template bool LinkedStack:isFull()consttry Node *p=new Node;delete p;return false;catch(bad_alloc& e) return true;template T LinkedStack:Top()constif(isEmpty()throw CString(堆栈空异常!);return top-data;temp

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

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 成人自考

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com