




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中南大学本科生课程设计(实践)设计报告(程序设计基础)题目MFC®程科学计算器学生学号1104120502学生姓名郭斌繁指导教师蔡旭晖学院交通运输工程学院专业班级 交通运输类1205班计算机基础教学实验中心2013年7月1日程序设计(C+夕实践报告1. 引言C+胡言的主要特点表现在两个方面,一是全面兼容C语言,二是支持面向对象的程序:(1) C+是一个更好的C,它保持了 C语言的优点,大多数的C程序代码略作 修改或不作修改就可在C+勺集成环境下调试和运行。这对于继承和开发当前已 在广泛的软件是非常重要的,可以节省大量的人力和物力。(2) C+ 是一种面向对象的程序设计语言它使得程序的
2、各个模块的独立性更强, 程序的可读性和可移植性更强,程序代码的结构更加合理,程序的扩充性更强。这对于设计、编制和调试一些大型的软件尤为重要。(3) C+集成环境不仅支持C+S序的编译和调13C,而且也支持 C程序的编译 和调试。通常,C+弗序环境 约定:当源程序文件的扩展名为c.时,则为C程 序;而当源程序文件的扩展名为cpp.时,则为C+®序。(4) C+语句非常简练,对语法限制比较宽松,因此 C+加法非常灵活。其优点是给用户编程带来书写上的方便。其缺点是由于编译时对语法限制比较宽松,许多逻辑上的错误。次课程设计主要在运算过程中,如果通过计算器来完成,就会减少计算量,该程序即可以在
3、简单计算器键面下进行简单运算,也可以在科学计算器键面下进行高级的科学计算。并且可以分别计算弧度、角度的三角函数的计算等较为复杂的运算。(5) 1) . 设计目标利用MFC程序开发工具设计一款可以进行简单计算及部分科学计算的计算器。 在设计当中将综合 “面向对象程序设计与结构化程序设计”的思想方法和知识点,编制一个小型的应用程序系统。通过此设计进一步提高自己的动手能力,并能使自己清楚的知道开发一个应用程序的思想、方法和流程。(6) 2) . 选题分析此次实践所选题目中除了简单的加减乘除运算程序之外还包括了余弦函数、双曲余弦函数、度分秒的转换和X的y次方及y次根号下x的运算程序。除去四则基本运算程
4、序之外,其余程序不可以直接调用系统的库函数需要经过自己的思考和查阅资料并结合迈克劳林等公式从源头开发相应运算的源代码,因此必须熟练掌握基本编程、代码语言、类运算及成员函数的设计、按键功能设计和整体协调等方面的相关知识。在此程序的设计过程中既锻炼了自己对C+啾件的掌握程度也服务了自己,尤其是装有WIN8的电脑,其本身的系统是不带计算器软件的, 通过此设计也算是实践于应用。2. 总体设计(1) 体系设计 :所要设计的程序是一个简单的计算器,能正确输入数据,能实现加、减、乘、除等算术运算,能进行简单三角运算、次方开方及双曲函数的运算, 运算结果能正确显示,可以清除数据等。(2) 设计思路 :1) 先
5、在Visual C+ 6.0 中建立一个 MFCX程文件,名为calc_mfc。2) 在对话框中添加适当的编辑框、按钮、静态文件、单选框。3) 设计按钮,并修改其相应的ID 与 Caption 。4) 选择和设置各控件的单击鼠标事件。5) 为编辑框添加double 类型的关联变量m_dNum.6) 在 calc_mfcDlg.h 中添加 math.h 头文件,然后添加public 成员。打开 calc_mfcDlg.cpp 文件, 在构造函数中,进行成员初始化和完善各控件的响应函数代码。3. 详细设计( 1) . 通过 “开始” 按钮, 选择 “程序” 菜单, 然后打开 “ Microsoft
6、 Visual studio 6.0 中文版”子菜单中的“Microsoft Visual C+ 6.0 中文版”程序,选择“工程”里面的 MFCAppWizard(exe) 程序,再选“基本对话框”选项按“确定”建立文件名为“calc_mfc ”的工程 .( 2) . 将原界面的按钮删除并添加所需按钮及编辑框并将其按照一定规律排列(如图1)图1(3).将各按键的属性按照相应的功能进行修改(如图 2)图2(5) .在cale_mfcDlg.cpp 的OnInitDialog ()函数中添加如下代码变量初 始化:一m_dPre=0;m_dCur=0;m_dNext=0;m_strPre=_T(&
7、quot;");m_strCur=_T("");m_strNext=_T("");m_nDotSign=0;m_nDotNo=0;(6) .通过MFC勺”建立类向导”向“ CCaljmfcDlg”类添加各按钮的消息 处理函数。(如图4)因为程序中用到一些数学函数,所以在 calc_mfcDlg的开 始处添加包含语句#include <<cmath>>.void 而事;SeUti- i)图4< . dOir-a dCari/ifi口 nSvthiJJi;) <Chr-H fCiirrllhi;(RjCur=1;
8、 it(n tDtSiqnr-l) jtatm?";| eIseijiCir -电jiCur 1 t>i> . 一=酬折口”;Uptatetata(faBUtrCiLjD;图5(7) .在calc_mfcDlg.h 文件中的calc_mfcDlg类中添加成员函数的声明:void SetNum(int). 并在cale_mfcDlg.cpp 文件末尾添加数字键 0-9的公有处理函数SetNum代码如图5。添加数字键处理函数,如数字键 1:void CCalc_mFcl>lg : ;OnButtoni( > / TODO: Add pour control not
9、ification handler codf(8) .计算器程序的关键是计算的顺序,当按下运算符键时,它的右操作符 还是未知的,因此要保存当前的运算符选择,然后键入要操作的数字,这一数字也要保存,等到下一次按下某个运算符时再将原来的保存的运算符和数字进行运 算,如此循环直到按下“二”为止。所以在cale_mfcDlg.cpp文件末尾添加公有 成员函数process。.代码如图6:joid CCalc_mFcDlg: :procp5£()<if(m_strPre="xku")<if(m_dPre= 0)n_dPrc= fl;elsen_dPre=zuiz
10、hong();> -if (n. strPre=*,xy,j n_dPre=cifang();if(n_strPre=""+") n_dPre+-i_dCi r:if (n_strPr ?=*'-") m dPre-=m dCur;if(n_5trPre="*") m_dPre*=m_dCu r;If (n_strPre="*7,Jif(n_dCur=0)m_dCur1;m_dPre/-n_dCijr;void CClc inFcOlg: :OnButtonAdd() Jf TODO: 0dd you产 coi
11、ntrol net iF(m_dPre=-O)m_dPre=m_(jCur; n_strPre="+"R_strCur-m_strPre; " elseprocess(); m_strPre='-+b' m strCur=m strPre: rndNun=n_dPre;n_dCur-0;nnDotSign=O;n_nDotNo= 0;UpdateData(f-alse> ;图7是“+”按钮的消息处理函数,其余“ -”、“*”、“/"、“二”只需将“ +” 换为相应的运算符即可图8图9分别为一和AC键的消息处理函数:poia uuai
12、cnfcoig:unHuttonflc() (7/ TODO: Add you尸 control notification hdin_dCur=O;nctrPrc-T(""); n_strCur=_T , nstrNext= T(""> m_nDntSi gn= n; n_n&otNo-0;n_UNum=Oj UpdateDattFalse);m_dNpxt=ft;void CCalcnfcDLg:OnButtonDot()卜/ IODO: Add your control noti R_nDotSign>1;r nDotHo-1;(
13、9) .将菜单与对话框关联,方法是右击对话框,选择快捷菜单中的属性,在“对话属性”窗口中选择“菜单”列表中所建立的ID,如图10:图10(10) .保存所编辑的所有程序,调试运行正确后即可得到目标程序, 界面如下:(11) .几种按键的消息函数实现;1) .cos:由cos的迈克劳林公式二 .4.2 %2!41Q 心+,知相邻两项之间有如下关系:2(m =0,2,4,6,t m 9X t m(m 1)( m 2)故cos可以先将t赋值为1,再利用上式做累加得到,累加的上限是(m 1)( m 2)<0.000001,x详细步骤如 以下代码:OnButtonEqualC); int n=0;
14、daubLe x,t,cox(0>x=m_dPre;t=1 ;uhiie<Fabs(r)>=0,OQ0O01)(c»sx+-t;n=n-*2;m_dHuin=cosx ;|Upda teDataffalse);注:t=1是将cos函数公式的第项赋值于2 ) cosh:Cosh函数是双曲余弦函数,由双曲余弦函数的计算公式coshx)及(ex的泰勒公式)知,cosh函数可以有这两个公式调用实现,类比 cos的迈克劳林公式,ex的相邻两项关系是:xxtm 1. 小口,因此利用计算cos函数的方法编辑代码得到e函数的计算代(n 1)码,然后定义一个double型的有返回值的
15、函数,将其返回值设为(ex ex),然后在cosh函数的程序里面调用刚才定义的函数返回值即可。3) xy :由于此用算属于双目运算,由(8)知此函数的代码需要调用到process。函数。首先自定义一个函数,里面包括一个 int型的变量j,两个double型的变 量k和s并给s赋初值1.0 ,将m_dPre的值赋给k,将m_dCur的值贝3给j。然后 用一个for语句for(j;j>0;j-)s*=k;实现次方的计算,将s作为返回值。在process。函数中仿照其他语句添加xy的语句(必须放在process函数的最前面,否则无法使用),调用所定义函数的返回值赋给 m_dPre然后仿照图7的
16、程序将“+”改为“xy”( xy按钮的属性是xy)后输入到xy的函数中作为计算代码 即可。同xy函数一样,此函数也是双目运算,计算函数的代码实现步骤类似。先11 .In x,由ln(1+x)的泰勒公式:将y/x做如下变换:Vx xy eyln(l + x)-x-1234+ -+(-lf-1+ O(JCn).n知,lnx可由先将(m_dPre-1)赋值给m_dPrj再将m_dPre赋值给x,类比 计算cos的方法设计计算lnx函数的自定义函数并将返回值赋给t,在定义一个 函数将m_dCur赋值给y,并让此函数调用t,将(1/y)*t的值赋给返回值h,然后 再调用2)中所定义过的函数ex ,将h做
17、为其参数得到结果 m并返回给s.在 process函数中类比其他语句定义y'x的语句,最后通过调用函数将之前定义的函数的返回值s赋给m_dPre,在对应的按钮的函数中仿照图7的 程序将“+” 改为“xky”(Ux按钮的属性是xky)后输入到xy的函数中作为计算代码即可。5) dms:此按钮是将输入的度数按照度分秒的格式显示,先将m_dPre赋值给x,利用强制类型转换(int ) x,所以(int ) x即为所求的度数。用x- (int ) x所得 到的数乘以60然后继续做强制类型转换就得到分了,类比得到分的步骤再做一 次就得到了秒,最后将得到的度加上分除以100加上秒除以10000赋值
18、给m_dNum 即可(不可能将度分秒分别显示在编辑框内)。4.设计总结经过两周的努力,课程设计基本完成了,在课程设计的实践中,我学到很多 有用的知识,也积累了不少宝贵的经验。课程设计是以一个计算器的实现为基础, 掌握一个基于对话框的应用程序的编程方法以及对话框常用控件的高级编程。在课程设计中我了解到到对话框应用程序的编程模式、 改变按钮的形状及有关按钮 函数计算程序代码的编写等知识。在此期间,遇上了不少的技术难题,但是经过 努力,咨询老师,通过查找资料,难题还是一个个被解决了,我从中学到了许多 课堂上没学到的东西,这使得我很高兴。实践中我觉得自己的程序设计方法及顺序是优缺并存的,比如在开始的时候 由于基本计算器的按钮已经设计排序完成了,到后面才知道要在添加一些按钮,这样就只能手动的调节新添加的按钮的大小使其一致,还有就是在编写函
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 微型机床采购合同协议
- 毛巾经销代理合同协议
- 正规公司入股合同协议
- 商城门店租赁合同协议
- 快消品年框合同协议
- 民宿帐篷转让合同协议
- 民事聘请律师合同协议
- 周至民房买卖合同协议
- 品牌木门转让合同协议
- 快速到账借款合同协议
- 2025年保安员职业技能考试笔试试题(700题)附答案
- 《知不足而后进 望山远而力行》期中家长会课件
- 专题09 乡村和城镇-五年(2019-2023)高考地理真题分项汇编(解析版)
- 2025年第三届天扬杯建筑业财税知识竞赛题库附答案(201-300题)
- T-NKFA 015-2024 中小学午休课桌椅
- 课题开题报告:推进家校社协同育人研究
- 拒绝校园霸凌守护美好校园
- 2025春新七年级道德与法治下册全册知识点
- Unit 9 Active learning 教学设计-2023-2024学年高中英语北师大版(2019)必修第三册
- 渔场基地建设实施方案
- 《食源性病原体》课件
评论
0/150
提交评论