- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向对象程序设计课设报告
C++课程设计报告
设计任务
应用VC++软件设计一个计算器的程序,应用对话框功能,基本要求能实现简单的加、减、乘、除运算,在完成基本功能的基础上,鼓励同学进行其他的创新设计,如增加计算器的小数运算、参数运算、存储运算等功能,类似于Windows下附件中的计算器。
二、目的与要求:
1、目的:
(1)要求学生达到熟练掌握VC++语言的基本知识和VC++调试技能;(2)基本掌握面向对象程序设计的基本思路和方法;
(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
2、基本要求:
(1)求利用面向对象的方法以及VC++的编程思想来完成系统的设计;
(2)要求在设计的过程中,对Windows环境下的编程有一个基本的认识;
(3)掌握Framework的编程思想。if(Flag2)
{
iCount++;
if(Flag1) {Op1=Op1*10+1;m_Edit=Op1/(pow(10,iCount));}
else {Op2=Op2*10+1;m_Edit=Op2/(pow(10,iCount));}
}
else
{
if(Flag1) {Op1=Op1*10+1;m_Edit=Op1;}
else {Op2=Op2*10+1;m_Edit=Op2;}
}
其中,Op1,Op2为两个操作数变量,定义时定义为全局变量,表示是否按下小数点键,是则为1,否则为0,iCount表示按下小数点后输入数据的位数,先将数据以全部整数形式记录下来,m_Edit是编辑框的成员变量,显示时m_Edit的值是Op值除以10的iCount次幂来得到原来的输入数据, Flag1表示是否按下了运算符按钮,是则Flag1为1,否则Flag1为0. Op1=Op1*10+1是记录输入数据的算法,每输入一位数据,Op1都扩大十倍再加上所按的数字键的值,Op2的原理类似。
对于运算符的实现即设置相应的标志变量FlagA,FlagS,FlagM,FlagD表示是否按下运算符键,而在等于运算时通过检测这四个变量的值来进行相应的运算。在void CEx_CalDlg::OnClear()函数中将程序中设置的运算变量和标志变量全部恢复到初值。通过MFC系统函数UpdateData(FALSE)来将编辑框成员变量中的值及时更新显示。在void CEx_CalDlg::OnPoint()函数中修改Flag2的值来判断是否按下小数点。在进行除法运算时先判断Op2是否为0,再通过消息函数MessageBox(除数不能为零!,Error)来告诉使用者。
3.实现注释:通过以上思路而写的的代码可以实现基本的整数加、减、乘、除运算,可以通过“清除”键实现数据的清零。除实现这些基本功能外,还可以实现小数的加、减、乘、除运算,增加了负数的运算键和退格键功能,还可以实现运算的连续操作,在按下多个运算符键时以最后输入的运算符为准,可以避免输入的错误而引起的麻烦。
4.详细设计表示:为了实现负数的运算,增加了标志变量Flag3,Flag3的值为1或-1,每按下一次负号键就将输入的值乘以-1,可以实现输入数据的正负号的变换。为了实现退格键,定义了一个数组temp[]和计数器nCt,用于记录每次输入的数据和输入数据的位数,在按下退格键时用以下代码实现退格:iCount--;
if(Flag1)
{Op1=(Op1-temp[nCt-1])/10;m_Edit=Op1/(pow(10,iCount));}
else
{Op2=(Op2-temp[nCt-1])/10;m_Edit=Op2/(pow(10,iCount));}
nCt--;
用Op1减去上次输入的数据,再除以十倍,就可以实现退格了,再将计数器减1,以便实现多位数据的退格。
四. 调试及测试
在开始调试时,由于程序代码较少,变量也较少,也较简单,可以实现一些基本的加、减、乘、除运算,可是当进行其他功能设计时,由于变量的增加,相应的函数都要改变,而由于变量的交叉导致了原有的功能不能正常的实现,新增的功能也不能很好的实现,它不是代码的简单叠加,而需要考虑代码之间的相互影响。所以我开始意识到设计程序要从全局的角度来思考问题,全面的考虑各个要素之间的关系和影响。于是在接下来的设计过程中我不断的思考尝试,不断改进。
同时,在运行调试的过程中也会不断的发现问题,发现所要添加的功能要改进的地方,使其在真正使用时能够更加方便。比如在调试时发现不能进行负数的运算,于是,我就努力添加这一功能,并且使其在运行过程中不与其他功能冲突。
五. 使用说明
在使用该计算器时,先输入一个操作数,然后按相应的操作符按钮,再输入第二个操作数,按等号键可以得到结果,再输入数据和相应的操作
文档评论(0)