基于vcmfc的科学计算器程序实验报告Word文档格式.docx
《基于vcmfc的科学计算器程序实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于vcmfc的科学计算器程序实验报告Word文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
5.提高学生分析问题、解决问题以及实际运用能力。
2.实验内容:
设计一个简单的计算器。
要求能实现整数、小数算数运算。
程序带
清零按钮。
3.实验方案(程序设计说明)
见附件
4.实验步骤或程序(经调试后正确的源程序)
(填写主要步骤与程序代码等。
见附件A)
5.出现的问题及解决方法
附件A沈阳工业大学实验报告
实验步骤或程序:
一、关于VisualC++:
VisualC++6.0由Microsoft开发,它不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrateddevelopmentenvironment,IDE)。
VisualC++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导ClassWizard等开发工具。
这些组件通过过一个名为DeveloperStudio的组件集成为和谐的开发环境。
Microsoft的主力软件产品。
VisualC++是一个功能强大的可视化软件开发工具。
自1993年Microsoft公司推出VisualC++1.0后,随着其新版本的不断问世,VisualC++已成为专业程序员进行软件开发的
首选工具。
虽然微软公司推出了VisualC++.NET(VisualC++7.0),但它的应用的很大的局限性,只适用于Windows2000,WindowsXP和WindowsNT4.0。
所以实际中,更多的是以VisualC++6.0为6平台。
VisualC++6.0以拥有“语法高亮”,自动编译功能以及高级除错功能而著称。
比如,它允许用户进行远程调试,单步执行等。
还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。
其编译及创建预编译头文件(stdafx.h)、最小重建功能及累加连结(link)著称。
这些特征明显缩短程序编辑、编译及连结的时间花费,在大型软件计划上尤其显著。
二、设计要点
1、基本要求:
设计的系统界面要美观大方,操作合理,有必要的
提示。
2、创新要求:
在基本要求达到后,进行创新设计。
3、对系统进行功能模块分析、控制流程分析正确。
4、系统设计要实用,编程简练,可用,功能全面,并有一定的容错
能力。
5、说明书、流程图要清楚
6、要求程序设计合理,用户界面良好,如采用菜单工作方式。
三、实验步骤:
1、首先利用MFCAppWinzard生成计算器应用程序框架具体步骤如下:
执行VC程序,选择File|New命令,弹出New对话框.单击Projects标签,转到Projects选项卡,选择MFCAppWizard(exe)选项,然后在Projectname文本框中输入cyyJSQ。
Lacation文本框是指项目的本地路径。
2、界面设计
在界面中添加按钮,编辑框等相应控件,并合理摆放,使用户能更加方便的使用。
具体设计如下图所示:
3、绑定控件
通过如下方式绑定控件。
具体绑定如下表所示:
按钮控件资源清单
按钮名称
按钮ID
用途
IDC_ZERO
按键0
1
IDC_1
按键1
2
IDC_2
按键2
3
IDC_3
按键3
4
IDC_4
按键4
5
IDC_5
按键5
6
IDC_6
按键6
7
IDC_7
按键7
8
IDC_8
按键8
9
IDC_9
按键9
.
IDC_DOT
小数点
=
IDC_Equal
等于
+
IDC_ADD
加号
-
IDC_SUB
减号
*
IDC_MUL
乘号
/
IDC_DIV
除号
CE
IDC_CE
清屏
Sqrt
IDC_Sqrt
开方
1/x
IDC_Daoshu
倒数
-/+
IDC_ZHengfu
正负
MC
IDC_Mc
清除内存记录数据
MR
IDC_Mr
内存中保存的数据
MS
IDC_Ms
数据存入存储器中,将原有的数据冲走
M+
IDC_Madd
当前记录数据与内存数据相加
%
IDC_Per
百分号
C
IDC_C
清零(清除全部)
清除上一步数据
Backspace
IDC_Backspace
从后向前删除
4、逐步实现代码
①按钮1-9的实现
文本编辑框的类型为string型,所以若按下数字1按钮时只需在数组尾部添加“1”即可
其他代码如此类推,具体代码如下:
voidCMyDlg:
:
OnButton0()
{
//数字0
this->
check();
CStringtmp=num_buffer;
//当为小数点后或其前面有不为零的数时允许输入零
if(tmp.ReverseFind('
.'
)!
=-1||tmp.FindOneOf("
123456789"
)!
=-1)
{
num_buffer+="
0"
;
}
else
num_buffer="
GetDlgItem(IDC_EDIT_SHOW)->
SetWindowText(num_buffer);
}
OnButton1()
//数字1
num_buffer+="
1"
OnButton2()
//数字2
2"
OnButton3()
//数字3
3"
OnButton4()
//数字4
4"
OnButton5()
//数字5
5"
OnButton6()
//数字6
6"
OnButton7()
//数字7
7"
OnButton8()
//数字8
8"
OnButton9()
//数字9
9"
OnButtonDot()
//小数点
if(num_buffer.IsEmpty())
0."
elseif(num_buffer.ReverseFind('
)==-1)
."
//求相反数
OnButtonNI()
//正负处理
m_num=-atof(num_buffer);
//转化为字符串
num_buffer.Format(_T("
%lf"
),m_num);
运行结果如下:
②加减乘除代码的实现:
通过控件的绑定以及传值函数,以指针调用的方式进行赋值,并将结果保存在num_buffer中