ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:147.65KB ,
资源ID:3457498      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3457498.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(北邮程序设计实验 简易计算器.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

北邮程序设计实验 简易计算器.docx

1、北邮程序设计实验 简易计算器北京邮电大学程序设计实践报告课题名称:_ 简单计算器的设计与实现_学生姓名:_ _班 级:_班内序号:_学 号:_日 期:_2014年5月20日_1课题概述 1.1课题目标和主要内容 本课题主要内容是设计并实现一个与Windows自带标准型计算器相似的计算器,在完成基本要求的基础上添加一些更全面地计算功能,比如括号的实现,达到多次试验计算结果正确、无明显bug出现的目的。 使用的开发平台是MFC,采用的工具是VC+ 6.0。 1.2系统的主要功能功能列表数字按钮09的数字键入四则运算加减乘除的二元运算的实现一元简单运算正弦、余弦、正切、正负号的功能退格、清零在对已有

2、运算或者数字进行退格或清零多层括号实现多层括号的优先级运算2. 系统设计 2.1 系统总体框架 YN循环连续运算设计思想:自己先参看了Windows自带的标准型计算器,发现Windows中的编辑框是双行显示,一开始进行双行显示无疑增大了难度,所有自己决定先单行显示。然后编辑框中参数类型可以是double也可以是Cstring,自己发现网上众多代码都是CString,这种类型方便显示和字符、数字的键入,但自己为了与网上那些代码区分,决定用double类型,这样在键入数字的时候就会复杂一些。在完成基本功能(四则运算和简单一元运算后),自己又添加了括号优先级功能。 2.2 系统详细设计 1 模块划分

3、图及描述 各个模块中包含着相应的操作,比如一元运算模块包括了三角和倒数等运算,但是每一个模块中各个函数实现的原理大致相同 2 类关系图及描述 本课题并无复杂的类关系继承,只是MFC自己封装的一些类,然后在其中写消息处理函数。3 程序流程图及描述 该计算器具有连续运算的功能,运算后的结果可以作为下次运算的输入继续参与运算,而且如果判断有左括号输入,则调用结构体来保留现场,继续参与运算。 4 存储结构、内存分配 在括号功能实现中需要采用一定的结构整体保留括号内的内容,自己采用了结构体,并且结构体通过结构指针构成一个链,这样就可以实现多层括号的功能。 2.3 关键算法分析 由于课题中引入了很多起到标

4、志位作用的标识符,在算法分析之前先对各个标志符号进行简单介绍。flag:为了让系统知道已按过加-除/清零/开根号/求百分比/倒数/等号按钮d:为了让系统知道已按过小数点.按钮,调整为向编辑框输入小数点后的值a1,a2,a3,a4:为了让系统知道已分别按过了加/减/乘/除按钮,使系统做相应的运算a:为了让系统知道已按过按钮加-除按钮,实现连续运算backz:为退格时取整用,backbl为退格时乘倍率时用f:为负数时实现退格wei:控制输入编辑框的位数不超过9位 算法1:数字输入函数 1算法功能:当点击相应的数字按钮,让编辑框中显示添加相应的数字(09) 2 算法基本思想:用UpdataData函

5、数实现编辑框中内容和double类型的互传,分多种情况将数字合理地添加到编辑框中。 3 代码逻辑:(令点击的数字为x,伪代码如下)if (d=1 和flag=0和wei9) dotbl自乘0.1 ; m_strResult+=dotbl*x;wei自加; 1backbl自乘10; /实现小数点之后的数字输入 if(flag=0 and d=0)or(flag=1) m_strResult=x; wei+=1; /按下清零/加-除按钮后编辑框的值为x if(flag=0 and d=0 and weinext = myKuoha myKuohao = newKuohao;/以上语句,是为了实现多

6、层括号功能留有的余地,如果是第一次建立结构体,则先和mykuohao构成连接,如果已有kuohao结构体,以上操作则相当于头插法将新建立的结构体插入链头,相当于先入后出的栈。 if(myKuohao = NULL) return;/当点击右括号的时候,则开始将之前的链逐一解开,也相当于栈中的结构体依次出栈,每次出栈都将结构体中的结果算出并将以保留,这样一个一个出栈后直到myKuohao这个指针为空即栈为空的时候,此时退出函数体。 2.4 其他 为了实现多层括号功能,自己采用了一种栈的模型,实际上是由结构体组成的链来构成的。在每次点击左括号时候,建立新的结构体并保留相应的数值和符号,然后将各个结

7、构体连接起来,此处采用了头插法。在最后点击右括号的时候,相当于栈中的结构体依照陷入后出的规则依次出栈,直至栈空。 此功能的实现并没有使用系统自带的STL中的栈,因为其各种参数和模式较为固定,使用起来较为死板,于是自己用结构体链的形式仿制成一个栈,巧妙地实现了该功能,这也是该实验最大的亮点。3.程序运行结果分析 输入数据来源和格式:对话框中按钮点击后产生的数值和符号输出显示方式:显示在计算器的编辑框中主要界面:操作流程:该操作流程与Windows自带的标准型计算器相同,只不过编辑框是单行显示响应时间:2秒46运行效果:当输入5*(3+4)=之后由于该课题使用double类型,不能以字符串的形式将

8、运算式均显示在编辑框中,如果老师想要验证结果可以用VC6.0运行程序后验证。 4.总结 4.1课题的难点和关键点 由于第一次使用MFC,对其中各种操作形式比较陌生,即使有算法上的思路但是操作起来比较迷茫。 解决方法:自己先阅读了黄维通版的C+面向对象的可视化操作,待明白MFC的操作过程和原理之后才开始进行算法的实现。在实现了标准型计算器的基本功能之后,想要添加括号功能的时候遇到了很大的困难。解决方法:首先自己查阅了很多优先级实现的资料,发现可以使用栈来完成以上的功能,如果调用STL标准模板类,使用起来比较死板;而如果自己去写一个栈,实现起来代码量较大并且较为复杂。最后使用了将结构体连接的形式构

9、成链,虽然是链结构但实际上运用的还是栈的思想,在多层括号实现过程中还采用了头插法的方式。 4.2本课题的评价实验评价: 计算器的设计与实现是初学者经常会做的课题,网上也有很多版本的代码,为了与网上各种版本进行区分,自己在编辑框的类型中选择了double,并添加了多层括号的优先级功能。虽然做的过程遇到不少困难,但是整体对自己完成情况还是比较满意,毕竟第一次做MFC的图形化操作。不足之处:与Windows自带的计算器比较有一个不足就是编辑框的显示问题,只能单行显示,并且不能整体字符串同时显示在编辑框中,这是由于自己编辑框类型定义为double确实无法用字符串的形式,将符号与数值都更新到编辑框上。改

10、进方法:针对上述不足,我打算使用双行的编辑框,第一行的类型设置为CString,用来显示计算过程中的字符串,例如“1+(3+4)=”;而第二行的类型设置为double,用来显示计算结果,因为结果一般只是以数值的形式显示出来。这种方法实现过程中会将整个代码进行大的修改,可能遇到的麻烦事情就是会涉及到double类型和CString类型之间的转换等,不过克服之后应该会实现类似windows自带计算器的那种显示模式。 4.3心得体会关于程序的一点重要体会就是,想起来容易做起来难,其实简易计算器的设计思路很简单,就是在每个按钮结构上添加相应的消息处理函数,然后实现计算的数值和编辑框里数值的互传。但是当

11、自己从头到尾开始做的时候,会遇到很多小问题,一个语句的错误就需要上网查阅相关资料,然后往往反复修改后才能得到正确的结果。往往实现一个功能可能会有多种不同的方法,在此次实验中关于多层括号功能的实现,经过网上查阅资料和阅读数据结构书发现可以有至少三种思路,这时候就需要我们理智地分析下需要使用哪种思路,本实验采用的结构体链式结构实际上就是应用栈的思想,但是既不需要调用较为死板的STL,也不需要自行写一个栈出来,达到了优化代码的目的。学过的知识一旦应用过后才会真正的掌握,之前在数据结构中学过各种各样的结构,链、栈、队列等等,但是学过之后只能应对考试而已。经过此次实验将相应的数据结构知识比如栈和头插法,才对相关的知识有了更深入地理解。5.参考文献1 MFC Windows应用程序设计,任哲等编著,北京 :清华大学出版社 ,20132Visual C+ 权威剖析,王颜国编著,北京 :清华大学出版社 ,20083 可视化程序设计Visual C+, 杨喜林,主编, 北京 :北京理工大学出版社 ,2010

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1