C++计算器课程设计计算器程序设计.docx
- 文档编号:5582930
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:65
- 大小:546.82KB
C++计算器课程设计计算器程序设计.docx
《C++计算器课程设计计算器程序设计.docx》由会员分享,可在线阅读,更多相关《C++计算器课程设计计算器程序设计.docx(65页珍藏版)》请在冰点文库上搜索。
C++计算器课程设计计算器程序设计
C++计算器课程设计一计算器程序设计
C++课程设计报告
(2013—2014年度第1学期)
计算器程序设计
专业计算机科学与技术
学生姓名
班级
学号
指导教师
完成日期2014年1月16日
摘要1
1、引言1
1.1课题意义及目的1
1.2课程设计内容及要求3
2、开发工具的介绍4
3、设计内容6
3.1功能说明6
3.2流程图:
8
4、系统的实现9
4.1文件创建9
4.2界面设计12
4.3数值计算功能的实现18
5、程序结果的演示32
5.1测试的研究与选择32
5.2测试环境32
5.3实例测试结果32
心得与体会36
参考文献38
39
42
附录1:
RUN怖数程序
附录2:
计算器程序
随着当今社会的发展,越来越多的人开始使
用电子商品,新的高考制度也允许使用计算器,而作为一名计算机专业的学生,在使用工具的同时也应该学会制作这类工具。
本课程设计是利用
VC++编程,实现一个简单计算器。
此计算器类似
于Windows附件中自带的计算器,它利用不仅实现了简单的四则运算功能,还实现了少部分科学函数计算功能,例如sin,cos,tan等而且具有
法的四则运算,
并且显示运算结果。
计算器的设
简洁的外观,好看的背景。
用户可以使用任何合
计是基于MFC下进行,通过各种控件的使用,实现要求中的功能。
该报告介绍了该课题的意义,
设计内容及要求,vc++开发工具的简单使用方式。
且着重阐述了计算器的设计思路和功能,并对代码进行了详细的解释。
计算器程序设计
1、引言
现代计算器一般是指“电子计算器”,所以,
可以认为是“电子计算器”的简称。
能进行数学运算的手持机器,拥有集成电路芯片,但结构简单,比现代的电脑结构简单的多,但是比较廉价,可以说是现代办公必备用品之一。
本课程设计主要在运算过程中,如果通过计算器来完成,就会减少计算量,该程序即可以在简单计算器键面下进行简单运算,也可以在科学计算器键面下进行高级的科学计算。
并且可以分别计算弧度、角度的三角函数的计算等较为复杂的运算。
1.1课题意义及目的
现实学习生活中,常会遇到一些数目较大数据繁杂的数值运算,徒手运算起来很困难,这时候我们就必须用到计算器,所以便着手开发了这个计算器程序,以便用于自己的学习工作。
人们对计算的要求不断提高,普通的功能简单的仅能
C卄课程设计
进行四则运算的计算工具已经不能满足需要,需要一种能进行多种计算。
现在己经有一些功能较为强大、涵盖面较广的计算软件,而且各种平台的小工具仍不断出现。
这些大大方便了我们的生活给我们更多的选择和实现方式。
这个程序可以直接输入数学表达式,不需要
任何转换,就可以直接输出数学四则运算的结果。
并且操作简单、界面清晰、灵活、实用、方便等要求出发,它所能完成的主要计算功能有以下几个方面:
加法,减法,乘法,除法,求平方根,求Sin,求Cos,求Tan,求LoglOo计算器的设计使我们所学到的c语言知识在现实中得到检验!
的掌握有很大的作用,
更能方便他人,可行性很
信息时代是科技和经济发展的产物,软件产
强!
C卄课程设计
1-2课程设计内容及要求
1.设计内容
设计一个简单的计算器。
要求能实现整数、小数算术运算。
程序带清零按钮。
2.设计要求
用VC++进行编写MFC程序,工程名为自己
的姓名首字母和学号连接而成。
注重编码质量,代码要有适当的注释;
提交设计报告一份(课程设计任务书、目录、
设计的基本思路、设计的步骤及主要代码、心得体会、参考文献)。
程序运行如下图1所示:
C卄课程设计
图1计算器运行界面
2、开发工具的介绍
本课程设计使用的是VisualC++6.O0Visual
C++6.0是Microsoft公司在1998年推出的基于
Windows9X和WindowsNT的优秀集成开发环
境。
该环境为用户提供了良好的可视化编程环境,程序员可以里利用该开发环境轻松地访问C++源代码编辑器,资源编辑器和使用内部调试器,并且可以创建项目文件。
VisualC++6.0不仅包括编
译器,而且它还包括许多有用组件,通过这些组件的协同工作,可以在VisualC++6.0集成环境中
轻松地完成创建源文件,编辑资源,以及对程序的编译,连接和调试等各项工作。
VC++6.0是Windows95/98、XP或Windows
NT下的一个应用程序,本身对软硬件没有特殊要
求。
就是说它对环境的要求与Windows95/98、
WindowsNT要求是一致的。
硬件要求:
一般在586以上的处理器、16MB
C卄课程设计
以上内存、100MB以上的硬盘。
软件要求:
Windows95/98或Windows
NT3.51以上版本。
VC++6.0系统可以在一张CD盘上,也可以
在aVisualStudio(VisualC++>VisualFoxpro)^等产品的第一张CD盘上。
一般都有一个VC的自动安装程序,也可以执行VC6目录下的setup.exe,在安装包的提示下进行,对初学者可采用“典型安装”方式。
在安装好VC6.0系统后,有时根据需要添加
或删除某些部件,可插入CD盘重新执行setup.exe安装程序,安装程序会检测当前系统安装VC6的足件,用户单击“添加/删除”按钮后,在“安装维护”对话框中选定要添加的部件或撤消选定要删除的部件。
与一般的应用软件一样,有以下两种启动方式:
⑴通过“开始”按钮,选择“程序”菜单,然
后打开^MicrosoftVisualstudio6.0中文版"子
C卄课程设计
菜单中的"MicrosoftVisualC++6.0中文版”
XO程序。
(2)用户也可以使用命令行启动VC。
单击“开始”按钮后选择“运行”命令,在“运行”对话框中输入c:
\ProgramFilesXMicrosoftVisualStudioWC98WC6.exe(按默认盘符和路径安装)即可。
3、设计内容
3.1功能说明
它的设计按软件工程的方法进行,系统具有良好的界面;必要的交互信息;简约美观的效果。
使用人员能快捷简单地进行操作。
即可单机按钮进行操作,也可直接通过键盘直接输入。
即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。
功能:
⑴包含的功能有:
加、减、乘、除运算,开
C卄课程设计
方,平方等功能。
(2)计算器上数字0-9为一个控件数组,加、
减、乘、除等为一个控件组。
(3)给对话框添加菜单。
(4)制定高级按钮控件,使按钮改变默认的颜
色。
(5)制定高级编辑控件,该编辑控件可以指定
r=
(6)输入的原始数据、运算中间数据和结果都
文本文字的字体和颜色。
显示在窗口顶部的同一个标签中。
(7)计算功能基本上是用系统内部函数。
(8)程序可以能自动判断输入数据的正确性,保证不出现多于一个小数点、以0开头等不正常现象。
(10)“CE”按钮可以清除所有已输入的数据从头计算功能模块的实现:
(1)首先,添加高级按钮控件类,在这个类中
实现高级的按钮控件。
在此类中对于所有的对于按钮的绘制工作都是在Drawitem函数中完成的,实现按钮对鼠标不同的位置和动作改变不同的颜
色,并且按钮的客户区域变成一个椭圆。
(2)其次,添加一个高级编辑控件类,在此类
的基础上实现高级编辑控件。
在OnDisplay函数中设置编辑框的显示文本,再调用OnDraw函数将其显示出来,并用指定的画刷填充客户区,并且用指定的颜色绘制显示文本。
(3)最后,实现主对话框界面功能,主要是加
载菜单资源和对话框扩展功能的实现。
在
CCalculatorDlg:
:
0nCreate函数中设定对话框的
初始大小与位置,可以在这个对话框中进行窗口风格修改,位置设置等操作,然后添加菜单项
ID_EXTEND的响应函数OnExtendo
3.2流程图:
4、系统的实现
4.1文件创建
利用MFCAppWinzard生成计算器应用程序框架具
体步骤如下:
©ATLCOMAppWizard
3ClusterResourceTypeWizard
71CustomAppWi^ard^DatabaseProject®DevStudioAdd-inWizard
ExtendedStoredProcWizard
flSAPIExtensionWizardMakefile
皱MFCActiveXControlwizard
工程名称㈣:
|g谧城第院学菇丽不氓每二]
函MFCAppV/izard(dll)
»WI?
8rd(exel
畲UlilityProject
Win32Application
Win32ConsoleApplication
Win32Dynamic-LinkLibrary
•创建拓的工住空阿回
广出加到当肃丁作空崗(A)
厂从JSTII2I:
I3
Win32StnticLibrary
(1)执行VC程序,选择File|New命令,弹
甲幺(Q:
C卄课程设计
MFC虫用程•字向导-舞1
「单文档(S)
「多亜文^|M)
您要刨建的应用程序类型是:
出New对话框.单击Projects标签,转到Projects选项卡,选择MFCAppWizard(exe)选项,然后在Projectname文本框中输入ZZ。
Lacation文本框是指项目的本地路径。
如图所示。
中文【简体.屮国](APPWZCHS.DLL)
〈上一步下一步〉
(2)单击0K按钮,弹出MFCAppWinzard_Stepl
对话框。
选中基本对话框,如图所示。
(3)单击Next按钮,弹出MFC
AppWinzard_Step2of4对话框,如图所示。
(4)单击Next按钮,弹出MFC
AppWinzard_Step3of4对话框,如图所示。
(5)单击Next按钮,弹出MFCAppWinzard_Step4
of4对话框,如图所示。
单击Finish按钮,创建
框架。
4.2界面设计
(1)编辑对话框及控件资源
C卄课程设计
利用VisualC++提供的资源编辑器对对话框
资源进行编辑。
删除对话框中默认的0K和Cancel按钮。
添加一个Edit控件,其控件ID为
IDC_EDITlo
Edit屋性
样式丨扩展样式
▼
厂落助ID(H)
1D:
|何■讪■■
V町见圏厂fi(GJ
厂已禁用凶疋制表站回
接下来在对话框上的合适的位置上按下鼠标
左键并拖动鼠标画出一个大小合适的下压式按钮。
在按钮上单击鼠标右键,在弹出的快捷菜单中选择属性选项,此时也弹出PushButton属性
对话框,如图所示,
PushButton厘性
0
0豎常規
样式|扩展样式|
ID:
IDC_B1
J标8(C):
|1
V町见(3
厂fi(GJ厂落助ID(H)
厂已禁用凶
疋制表站回
在该对话框中输入控件的ID值和标题属性。
C卄课程设计
并通过复制添加若干按钮控件,其ID如表4-1所
表1按钮控件资源清单:
C卄课程设计
—
Bsub
减号
*
Bmult
乘号
/
Bdiv
除号
CE
ce
清屏
Sqrt
sqrt
开方
sin
sin
正弦
cos
cos
余弦
tan
tan
正切
x"2
pf
平方
log
log
对数
所有按键都添加好后的效果如图2所示。
图2
C卄课程设计
(2)连接按钮与变量
除了建立上面所示的控件外,还要对每个按
钮控件定义一个对象与之相关联,并为每个按钮控件建立一个成员函数来响应其BN.CLICKED消
息。
如图3所7K:
MessageMapsMemberVariables|Automation|ActiveXEvent£|ClassInfo
Project
1^3
GA-.\ZZgai\ZZDIg.h,G:
\.AZZgsi\ZZDIg.cpp
ObjectID3:
Icz^diq:
Classname:
|cZZDIg
Zl
AddClass..・▼
AddFunctinn
IDCDO
Messages:
□NCLICKED
□NDOUDLECUCKED
DeleteFunction
EditCode
MFCClasswizard1电Jg鼻U
IDCD1
IDC_D2
IDC_D3
IDC_D4
IDC_E)5
Memberfunctions:
W0nB8ON_IDC_B8:
BN_CLICKEDP
W0nB9ONJDC_B9:
BN_CLICKED
WOnBaddON_IDC_Badd:
EIN_CLICKED
WOnBceON_IDCBce:
BNCLICKED
WOnBd()NJDC_Bd:
BN_CLICKEI)|-
Description:
确定|珮消|
图3为按钮控件添加消息响应
(3)关联控件与对象
在CAboutDlg类的声明中,已经为编辑框、静态框及每一个按钮声明了相应类型的对象与之对应。
但这些控件与对象的关联工作是在
C卄课程设计
DoDataExchange函数中完成的。
MessageMapsMemberVariables|Automation|ActiveXEvents|ClassInfo|ProjectClassname:
3|cZZDIg3
GA..\ZZgai\ZZDIg.h,G:
\..\ZZgai\ZZDIg.cpp
ControlIDs:
TypeMember
AddClass...▼
AddVariable...
IDC
BeeBdBdivBmultBrunBsub
cos
EDIT1
double
mResult
IDCJog
IDC」f
IDC_sln
Description:
doublewithrangevalidation
MinimumValue:
BindAll
UpdateColumnc
DeleteVariable
MFCClasswizard
MaximumValue:
图4关联控件与对象
(4)添加背景图
为对话框添加背景图,以增加界面的美观性。
首先为工程添加一幅位图资源,以作为对话框的背景。
然后加入一个Static控件,将其Type属性设为Bitmap,并为Image属性选择位图资源,如图5所示。
图5添加位图
参数设置后对话框的外观如图6所示。
ZZ
图6运行结果图
4.3数值计算功能的实现
①具体功能的实现首先添加成员变量。
该计算器中大部分的运算都是二元运算,即需要两个操作数和一个二元运算操作符。
所以必须声明两个浮点数,分别用来表示初始操作数和结果操作数,同时,必须声明两个字符串类型的变量,分别用来显示初始操作数。
还需要一个整形变量来记录当前运算符,以及一个整形变量来记录当前小数点按钮是否被单击过。
定义如下:
public:
CZZDlg(CWnd*pParent二NULL);//
standardconstruetor
doublem_input;//保存输入的数字
boolm_done,opt;//布尔类型成员变量,判
断一次计算结束,和操作符点击的凭据
voidNumin(doubleput):
//成员函数,处理输入的数据
doub1enum_l,num_2;//两个操作数
voidoperate。
;//输入运算符后要调用的函
intyun;//运算判断
booldian;//判断小数点是否被点击
C卄课程设计
intn;//显示小数部分的输入位数
doublem;
voidOnMnuCut();
voidOnMnuCopy();
voidOnMnuPaste();
voidOnContextMenu(CWnd*pWnd,CPointpoint);
g当小数点键被单击时,首先判断小数点键是
否已经被单击过,以及当前初始操作数字符串是否为空。
如果小数点键没有被单击过,而且当前初始操作数字符串不为空,则将小数点追加到初始操作数末尾,并且修改小数点标识dian为TRUE。
实现代码如下:
小数点的定义如下:
voidCZZDlg:
:
0nBd()
//
dian二true;
n二1;
}
③程序判断代码实现如下:
voidCZZDlg:
:
Numin(doubleput)
if(m_done=二true||opt=true)//女口果
一次计算结束或运算符已经选择
辻(dian==false)//如果小数点还没有被按
m_ResuIt二m_input=0・0;
UpdateData(false);m_input=m_input*10+put;m_ResuIt=m_input;UpdateData(false);opt二false;m_done二false;
elseif(dian—true)//如果小数点已经被按下//////////
{
m_ResuIt=m_input^O.0;
UpdateData(false);
inti;
for(i=0;i { put二put/10; } HFpUt; m_input=m_input+m; m_ResuItF—input; UpdateData(false); opt二false;m_done=false; } }else if(dian==false)//如果小数点还没有被 按下 { m_input=m_input*10+put; m_ResuIt=m_input; UpdateData(false); opt二false;m_done=false; } elseif(dian==true)//女口果小数点已经被 按下/////////////// { inti; for(i=0;i { put二put/10; m_input=m_input+m;m_ResuIt=m_input; UpdateData(false); opt二false;m_done=false; } } 由当数字键0—9被单击时,则将当前所按键加到初始操作数末尾,并将初始操作数显示出来。 以数字键盘被单击为例,实现代码如下: void CZZDlg: : 0nB0() {//"o" Numin(0.0); void CZZDlg: : 0nBl(){//"1" Numin(1.0); c”■课程设计 void CZZDlg: : 0nB2() {//"2" Numin(2.0); void CZZDlg: : 0nB3(){//"3〃 Numin(3.0); } void CZZDlg: : 0nB4() {//"4" Numin(4.0); void CZZDlg: : 0nB5() {//"5" Numin(5.0); } void CZZDlg: : 0nB6() {//"6" Numin(6.0); } void CZZDlg: : 0nB7() {//”T Numin(7.0); C卄课程设计 void CZZDlg: : 0nB8(){//"8" Numin(8.0);} void CZZDlg: : 0nB9() {//"9" Numin(9.0); void CZZDlg: : operate() { numl=mResuIt; opt二true;dian=false; n=0; 量进行初始化。 清除小数点标识,将保存初始操作数和结果操作数的字符串清空,将保存初始操作数和结果操作数的浮点数清0,将当前操作符清 0o实现代码如下: voidCZZDlg: : 0nBce() {//"CE” C卄课程设计 m_input=O; m_ResuIt二float(m_input); UpdateDa/ta(false);m_done=false;dian=false; opt二false; n=0; } 6当任何一个运算符键被单击时,首先根据当 前运算符计算运算结果,再修改记录当前运算符的变量的值。 以加号键被按下为例,实现代码如下: 加号函数: voidCZZDlg: : OnBadd() {//"+" operate(); yun=l; C卄课程设计 voidCZZDlg: : operate()num_l=m_ResuIt; opt二true; dian二false; n=0; } ©加号运算的实现如下: if(yun=l)//判断执行何种运算 m_Resu]t二num_l+num_2; UpdateData(false); 计算机还有简单的函数功能,函数定义如 } 下: void CZZDlg: : Onlog() {operate(); yun=5; } voidCZZDlg: : Onsin() {operate();yun二8; &函数运算实现如 下: } if(yun==6)//平方 { m_Resuit二num_1*num_ 1; UpdateData(false); } else if(yun==7)//根号 { if(num_l<=0) { m_Result=O; m_ResuIt二sqrt(num_l); UpdateData(false); } else if(yun=8)//sin { m_ResuIt二sin(num_l* PI/180); UpdateData(false); } else UpdateDa(false) else if(yun=9)//tan m_ResuIt=cos(num_l* PI/180); m_ResuIt二tan(num_l* PI/180); UpdateData(false); UpdateData(false);} } else if(yun=10)//cos { 矽计算器的核心运算函数Run。 在Run中, 首先将记录当前操作数的字符串中保存的字符串转化为浮点数;其次根据当前操作符的类型,选择适当的运算操作;再将记录结果操作数的浮点变量中的值转化为字符串,并显示在结果编辑框中。 Run函数实现代码见附录1。 匕计算器的全部代码实现见附录2o C卄课
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 计算器 课程设计 程序设计