欢迎来到天天文库
浏览记录
ID:61499106
大小:87.00 KB
页数:7页
时间:2021-02-07
《MFC计算器报告(源码).doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、实习报告题目:计算器系别计算机科学与技术系专业方向信息安全班级0422学生学号学生姓名靳向维导师姓名章小莉起止时间2006年7月至2006年9月①需求分析:使用面向对象设计环境,仿制电子计算器,使其可以实现整数、实数、复数的加、减、乘、除等运算。请参考Windows操作系统中的科学型计算器。与一般计算器不同之处在于要求实现复数的运算。这部分也是难点,关键在于:做复数的运算时,带虚部的运算数中的“+”,“-”号与运算符“+”,“-”难以区分,运算结果中也会有此情况。设计的解决办法是:在运算界面中添加两个按钮,分别表示复数虚部前的“+”,“-”。从而在程序中和运算符
2、“+”,“-”区分开来。而实数运算的难点和关键在于:浮点数(术语使用不准确,应该就是实数)的运算。解决时只要在接收运算数后,运算之前,判断好小数点的位置,将接收的字符型运算数转化为数值,再做运算即可。关键字:面向对象语言,电子计算器界面设计,复数运算。(1).程序中,用字符串类型变量来接收和输出数据,计算过程中转换为数值进行计算。数值类型:复数运算类型:+、-、*、/(2).初步测试数据类型:实数:正负整数运算的加、减、乘、除;浮点数的加、减、乘、除;复数:带虚部的复数的加、减、乘法运算。都只进行了单次使用运算符的测试②程序设计简要流程图:数字键"1~9"
3、 运算符stradd() 赋值给cal 调用stradd()函数 开始:YNState=1NState=2calresult( ) 函数调用 calresult()函数中将字符串转的实部转化为数值的流程图:当遇到c1=’+’或’-‘号时跳出循环执行:把虚部字符转换为数值的并作运算的函数流程图,stradd()函数流程图:show()函数流程图:点击clear键的函数:点击+I和I键(添加复数的虚部)的函数:③调式分析1.问题:0作为第一个操作数无法运算解决
4、:由于当:m_show==0时,即对话框中,可能是没有输入的数,也可能是输入了一个“0”,因此在作输入数据时要判断=0的情况也要判断!=0的情况。2.循环运算问题:实际上每一次点击运算符后都可以把state置为2的!即把运算数存入m_num2变量中!把m_num1初始化为0;或把上一次运算的结果赋给它!4.作负数运算时,运算结果中虚部为+i或-i时,程序会不显示虚部...出现问题及解决:测试数据:1+i+2+i结果:=31+2i+1+2i结果:=2+4i没看见这种提示信息问题出在:在区分实部和虚部的字符串转化时,当遇到输入的运算字符串中的第i位为“+”或“-”时
5、,立即把i赋值给j,即认为该运算数为复数有虚部,之后完成字符和数值转化。而在转化过程中一旦遇到i立即停止,而当输入数种虚部为1或-1时(如1+i,1-i...)时存放虚部的变量:m_num1(2)b会被赋为0由此出错。解决方法:添加判断语句:if(c=='i'&&num1b==0.0)num1b=1.0;//也可以判断i=1否,为1则说明+-号后面既是i。5.作浮点数运算小数部分超过两位运算出错:1.11+2.22=3.6……原因:原始的,小数部分由字符转化时算法与整数部分的相似:修改为:if(c1=='.'){dot=true;c=i;continue;}//
6、i用于记录小数点的位置注:转换虚部时应该用j!! if(dot){c1=float(c1-'0'); d=c; while(i-d){c1=c1/10; d++; }d=c; num1a=c1+num1a;}程序不足:1.在接收字符串变量时,使用的是浮点型变量,由于数字,小数点,字母i,运算符.的ASC码值都在浮点数大小范围内,因此尚可以使用浮点型变量来接收。但数据类型不同,有点牵强,导致编译时总是会有警告。2.未能实现一般计算器中的连续运算功能,例如:累加,连乘。。。改进思想:循环运算问题:实际上每一次点击运算符后都可以把变量state由1置为2的!即把新的运
7、算数存入m_num2变量中!开始时把m_num1初始化为0;运算后把上一次运算的结果赋给它!3.复数运算在复数虚部之前输入“+”、“-”的方法可以用运算符重构的程序段来解。由于在显示时出现问题无法解决。④使用说明这次实习使用的是面向对象的程序设计语言C++,在microsoftvisualC++开发平台上编程实现一个普通的计算器的功能。设计的方法是:使用VC++的可视化控键描述出一个普通的计算器按钮,并为每一个按钮编写子程序,当按键被鼠标点击时,执行其子程序,实现计算器功能。具体使用步骤:运行程序,在窗体界面中点击输入运算数,这时对话框中会出现相应的输入。第一个
8、运算数输入完毕后点击要进
此文档下载收益归作者所有