- 9
- 0
- 约2.67千字
- 约 6页
- 2015-10-16 发布于江苏
- 举报
MFC计算器报告(源码).doc
实习报告
题目: 计算器
系 别 计算机科学与技术系
专业方向 信息安全
班 级 0422
学生学号 042202
学生姓名 靳向维
导师姓名 章小莉
起止时间 2006 年 7 月 至 2006 年 9 月
①需求分析:
使用面向对象设计环境,仿制电子计算器,使其可以实现整数、实数、复数的加、减、乘、除等运算。请参考Windows操作系统中的科学型计算器。
与一般计算器不同之处在于要求实现复数的运算。这部分也是难点,关键在于:做复数的运算时,带虚部的运算数中的“+”,“-” 号与运算符“+”,“-”难以区分,运算结果中也会有此情况。
设计的解决办法是:在运算界面中添加两个按钮,分别表示复数虚部前的“+”,“-”。从而在程序中和运算符“+”,“-”区分开来。
而实数运算的难点和关键在于:浮点数(术语使用不准确,应该就是实数)的运算。解决时只要在接收运算数后,运算之前,判断好小数点的位置,将接收的字符型运算数转化为数值,再做运算即可。
关键字:面向对象语言,电子计算器界面设计,复数运算。
(1).程序中,用字符串类型变量来接收和输出数据,计算过程中转换为数值进行计算。
数值类型: 复数
运算类型:+、-、*、/
(2).初步测试数据类型:
实数: 正负整数运算的加、减、乘、除;浮点数的加、减、乘、除;
复数:带虚部的复数的加、减、乘法运算。
都只进行了单次使用运算符的测试
②程序设计
简要流程图:
开始:
calresult( ) 函数调用
calresult()函数中将字符串转的实部转化为数值的流程图:
当遇到c1=’+’或’-‘号时跳出循环执行
: 把虚部字符转换为数值的并作运算的函数流程图,
stradd()函数流程图:
show()函数流程图:
点击clear键的函数:
点击+I和I键(添加复数的虚部)的函数:
③调式分析
1. 问题:0作为第一个操作数无法运算
解决:由于当: m_show==0时,即对话框中,可能是没有输入的数,也可能是输入了一个“0”,因此在作输入数据时要判断=0的情况也要判断!=0的情况。
2. 循环运算问题:
实际上每一次点击运算符后都可以把state置为2的!
即把运算数存入m_num2变量中!
把m_num1初始化为0;或把上一次运算的结果赋给它!
4. 作负数运算时,运算结果中虚部为+i或-i时,程序会不显示虚部...
出现问题及解决:
测试数据:1+i + 2+i 结果:= 3 1+2i + 1+2i 结果:=2+4i没看见这种提示信息
问题出在:在区分实部和虚部的字符串转化时,当遇到输入的运算字符串中的第i位为“+”或“-”时,立即把i赋值给j,即认为该运算数为复数有虚部,之后完成字符和数值转化。而在转化过程中一旦遇到i立即停止,而当输入数种虚部为1或-1时(如1+i,1-i...)时存放虚部的变量:m_num1(2)b会被赋为0由此出错。
解决方法:
添加判断语句:if(c==inum1b==0.0)num1b=1.0; //也可以判断i=1否,为1则说明+-号后面既是i。
5.作浮点数运算
小数部分超过两位运算出错:1.11+2.22=3.6……
原因:原始的,小数部分由字符转化时算法与整数部分的相似:
修改为:if(c1==.){dot=true;c=i;continue;}//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的!
即把新的运算数存入m_num2变量中!
开始时把m_num1初始化为0;运算后把上一次运算的结果赋给它!3.复数运算
在复数虚部之前输入“+”、“-”的方法可以用运算符重构的
您可能关注的文档
- jghx-14+多原子分子习题.ppt
- juki---------YAMAHA.xls
- KEB科比变频器KEB LIFT调试说明.doc
- KJG-100污泥桨叶干燥.doc
- KPI考核体系(集团总部-战略发展中心).ppt
- L4000A 智能控制器使用说明 铂锐.doc
- lab 2网络配置和网络资源共享.doc
- Language Testing and Evaluation.ppt
- lecter10时分复用和多路数字电话.ppt
- lecture of virus.doc
- 小区绿化施工协议书.docx
- 墙面施工协议书.docx
- 1 古诗二首(课件)--2025-2026学年统编版语文二年级下册.pptx
- (2026春新版)部编版八年级道德与法治下册《3.1《公民基本权利》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《4.3《依法履行义务》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.2《按劳分配为主体、多种分配方式并存》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.1《公有制为主体、多种所有制经济共同发展》PPT课件.pptx
- 初三教学管理交流发言稿.docx
- 小学生课外阅读总结.docx
- 餐饮门店夜经济运营的社会责任报告(夜间贡献)撰写流程试题库及答案.doc
原创力文档

文档评论(0)