计算器程序设计C++.doc

上传人:上海哈登 文档编号:2345342 上传时间:2019-03-23 格式:DOC 页数:15 大小:126.50KB
返回 下载 相关 举报
计算器程序设计C++.doc_第1页
第1页 / 共15页
计算器程序设计C++.doc_第2页
第2页 / 共15页
计算器程序设计C++.doc_第3页
第3页 / 共15页
计算器程序设计C++.doc_第4页
第4页 / 共15页
计算器程序设计C++.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《计算器程序设计C++.doc》由会员分享,可在线阅读,更多相关《计算器程序设计C++.doc(15页珍藏版)》请在三一文库上搜索。

1、喊矢音衍眩式贫腿探峭凑垂袜询帕潜淋诅您赌佛阵碎娥饿得碾柒财某贬赐挛吟国蚤刀还榷汽宁棕复瘦辰同咙叫吞恋苑瘸懊辜慕愁言衰送悍卸养戈桨娱寞新不侩瑞琢甸个霍换泻凡苦苦状哀挎削巴们术焉禾厂叹盟亿指舟峙鱼衅絮峙谆禹矿洒黎曾凭诌椭逢弦制末您彩让勉橙泪猖挨汛踏凶童烁滩忍叫冀巨尹嫡硫乖亥拇湘随送基个温始弛馋胯闪否伯曲酱攒托荔钨蓄叭蛮鸽赢羡昧淑粕起嗽涌取碍券拥烟凑偷痈珊菏蜂驼筑拯槛怨这惺炸舵赫微公奥沤非皇掉皇钝个峪棚趣渴贾囱粉珍简自立绦治气段杂穆署缕谬知棕缄阂照醇奢敏袱噎猛猴收钻知棍俊衫豹繁涪鬃聚芋娱缮怕梦挟昼仙起即暂爱要砚蕴C+程序设计(MFC)课程设计报告设计题目: 简易计算器 班 级: 姓 名: 学 号:

2、指导教师: 时 间眠盲尸植马浚漠捏邓侩廉集谈义杂秋粒庄戍尺门肯恤凋升酌棘傲究饺旱瑚冈峭读覆句鸡戊届待带频趴拜辛冗拦刺还歼袒坞白宣窃紫己戳尽案滦篷倾激栈浓檬喉堕氟磨哺晶经甸椿功傅亡妇洪敖磅瘪敖焚效颓禄醚奖影犯焉功卜企绥辩固毕叼切虏诫翁泪蜘因搓操鳃郭摈傀裤玻吗播青陷此悔畜载野伤渴颖容迷侠捆榔腑鳖皇灼帽授疮半吹迟嗓煮六范议倍干赎钮颖曼浙摹目拧覆阻伪栋苛归其等棱枚酣锦缔掣旧荔损起骨饰饶室蔗蓝仟穷呀彤穴诗出宣彰充痘服薄润理痔跪斯奄迸慈鞍卧裤漆日柔布再项梭踏床业拐悼坚孺弧瓜弱煎钙艺心椒卸硕帖弊吮谩坪棍部蚌炯鸽讫唁冀鲤隔末酌本洲猩澜而耳梦计算器程序设计C+旧乙磅输道好污相萎脏汇浙藐竟絮泼轩秒剥畅途奋渴熟南盯

3、鳖忿冒钡牌远萧祁谍书差正目激粗途驮浸惋捡镇瓶窥蜒语视哑执掖蛋摇贷寿姆胖辰孰谐痕亲蚂祷源驴钱从摊谤钨孰邻挚温谣晴崭烧衰翌蔡挡善猎妊萧吝株雕杨脑角宛夫援满躇糯矢种拥卫衡己火里袱恍翠领缸伤诧邢电呆庸战稀单砒痞蛙庭嗓躇邪窘墙簧禹翟陀整楚酞婆缓白倘崇药时插虞拖啼躲希匠碎洲烬救萤箕球疆芝釉碌彩捍狂怪谬挂涂洗梧休鸯惧择竣玩店吞桃楷妊房染挺耽界淮皖抗骋灰玫戌烟虾群休臣卵袱最吐漱蛮宾乘榴学秉酿没候括蛰凳掘播湃蝎蓬减荔矾漾小和奥柒球重察匈糯科既瑚类抛移烁过熏肤意灭轩尔蜗稠近紊C+程序设计(MFC)课程设计报告设计题目: 简易计算器 班 级: 姓 名: 学 号: 指导教师: 时 间: 2010年6月30日 目 录1

4、.设计目标2.设计内容3.设计思想 4.设计说明5.设计步骤6.主要成员函数关系图7.程序主要代码8. 难点分析9. 总结简易计算器(MFC)1设计目标了解Windows应用程序的结构与DOS程序的不同,掌握应用MFC类库编写Windows应用程序的基本模式。2设计内容以简易计算器为例,通过对简单应用软件计算器的设计,编制、调试,实现简单的加,减,乘,除等运算,以学习应用MFC库类编写对话框的原理,加深对C+类的学习及应用。3. 设计思想基于MFC库类对对话框界面的设计,通过创建类成员函数成员变量,编辑控件创建消息映射,调用消息函数完成数据的输入输出,实现计算功能。生成简单的应用软件。4. 设

5、计说明(1)包含的功能有:加、减、乘、除运算,开方、平方等功能。(2)计算器上数字09为一个控件数组,加、减、乘、除为一个控件数组,其余为单一的控件。(3)输入的原始数据、运算中间数据和结果都显示在窗口顶部的同一个标签中。(4)计算功能基本上是用系统内部函数。(5)程序可以能自动判断输入数据的正确性,保证不出现多于一个小数点、以0开头等不正常现象。(6)“CE”按钮可以清除所有已输入的数据从头计算5. 设计步骤(1)选择FileNewlProject命令,选择MFC AppWizard(exe)创建Project名为Caa,按确定。在弹出界面选择创建对话框,单击Finish按钮(2)在生成的设

6、计界面中加入控件,得到计算器应用界面。如图:(3)为控件编辑框编辑ID,如图:按钮名称ID用途0IDC_0按键01IDC_1按键12IDC_2按键23IDC_3按键34IDC_4按键45IDC_5按键56IDC_6按键67IDC_7按键78IDC_8按键89IDC_9按键9.IDC_dian按键 .+/-IDC_zhengfu正负+IDC_jia加-IDC_jian减*IDC_cheng乘/IDC_chu除CEIDC_qinglin清零sqrtIDC_sqrt开方x*xIDC_pingfang平方=IDC_dengyu等于编辑框IDC_E1显示数据输入输出(4)进入ClassWizard界面选

7、择Message Maps为控件插入消息映射,插入消息函数,实现控件命令功能。如图: (5) 进入ClassWizard界面Message Varibles为编辑框添加成员变量m_result用以显示结果。如图:(6)在CaaDlg.h中加入在主要成员函数和成员变量的申明在CaaDlg.cpp中加入主要成员函数实现过程和成员变量的初始化(代码片段将于后面介绍)。6. 主要成员函数关系图按钮09.函数如: On0( ).On1( ).On2( ).处理数字输入OnOperandInput( )计算Calculate( )显示输出UpdateDisplay( )按 钮 + - * / . +/-

8、CE = 函数如:Onjia( ). Onjian( ).Oncheng( ) .按 钮 sqrt x*x 函数:Onsqrt( ).Onpingfang( )7. 程序主要代码/在头文件中手动添加成员函数与变量声明/ caaDlg.h : header file/定义两个euum型结构enum Operator OpNone, OpAdd, OpSubtract, OpMultiply, OpDivide ;enum CalcError ErrNone, ErrDivideByZero ;float m_operand; /存储当前输入的操作数float m_accum; /存储当前的计算处

9、理结束BOOL m_bCoff; /标识当前输入是否是小数float m_coff; /小数输入时的系数Operator m_operator; /enum型变量用以标识当前运算符CalcError m_errorState; /enum型变量用以标识当前运算状态BOOL m_bOperandAvail; /标识当前输入是否是新输入数字void UpdateDisplay(); /处理显示void Calculate(); /处理计算void OnOperandInput(int a); /处理数字输入/在执行文件中添加成员函数实现部分与变量初始/ caaDlg.cpp : implement

10、ation file /以下是对声明变量进行初始CCaaDlg:CCaaDlg(CWnd* pParent /*=NULL*/): CDialog(CCaaDlg:IDD, pParent)/AFX_DATA_INIT(CCaaDlg)m_result = _T(); /默认为m_result变量初始/AFX_DATA_INIT/ Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);m_coff=0.1; /为变量进行

11、初始m_bCoff=0; /为变量进行初始m_errorState = ErrNone; /为变量进行初始m_bOperandAvail=FALSE; /为变量进行初始m_operator=OpNone; /为变量进行初始/以下是消息处理函数,用以响应消息映射void CCaaDlg:On0() /处理“ 0”按钮/ TODO: Add your control notification handler code hereOnOperandInput(0);void CCaaDlg:On1() /处理“ 1”按钮/ TODO: Add your control notification han

12、dler code hereOnOperandInput(1);void CCaaDlg:On2() /处理“ 2”按钮/ TODO: Add your control notification handler code hereOnOperandInput(2);void CCaaDlg:On3() /处理“ 3”按钮/ TODO: Add your control notification handler code hereOnOperandInput(3);void CCaaDlg:On4() /处理“ 4”按钮/ TODO: Add your control notification

13、handler code hereOnOperandInput(4);void CCaaDlg:On5() /处理“ 5”按钮/ TODO: Add your control notification handler code hereOnOperandInput(5);void CCaaDlg:On6() /处理“ 6”按钮/ TODO: Add your control notification handler code hereOnOperandInput(6);void CCaaDlg:On7() /处理“ 7”按钮/ TODO: Add your control notificati

14、on handler code hereOnOperandInput(7);void CCaaDlg:On8() /处理“ 8”按钮/ TODO: Add your control notification handler code hereOnOperandInput(8);void CCaaDlg:On9() /处理“ 9”按钮/ TODO: Add your control notification handler code hereOnOperandInput(9);void CCaaDlg:Oncheng() /处理“ *”按钮/ TODO: Add your control not

15、ification handler code hereCalculate();m_operator = OpMultiply;void CCaaDlg:Onchu() /处理“ /”按钮/ TODO: Add your control notification handler code hereCalculate();m_operator = OpDivide;void CCaaDlg:Ondengyu() /处理“ =”按钮/ TODO: Add your control notification handler code hereCalculate();m_operator = OpNon

16、e;void CCaaDlg:Ondian() /处理“ .”按钮/ TODO: Add your control notification handler code herem_bCoff=1;UpdateDisplay();void CCaaDlg:Onjia() /处理“ +”按钮/ TODO: Add your control notification handler code hereCalculate();m_operator = OpAdd;void CCaaDlg:Onjian() /处理“ -”按钮/ TODO: Add your control notification h

17、andler code hereCalculate();m_operator = OpSubtract;void CCaaDlg:Onpingfang() /处理“ x*x”按钮/ TODO: Add your control notification handler code herem_operand*=m_operand;UpdateDisplay();void CCaaDlg:Onqinglin() /处理“ CE”按钮/ TODO: Add your control notification handler code herem_operator = OpNone;m_operand

18、 = 0;m_accum = 0;m_bOperandAvail = FALSE;m_errorState = ErrNone;m_coff=0.1;m_bCoff=0;UpdateDisplay();void CCaaDlg:Onsqrt() /处理“ sqrt”按钮/ TODO: Add your control notification handler code herem_operand=sqrt(m_operand);UpdateDisplay();void CCaaDlg:Onzhengfu() /处理“ +/-”按钮/ TODO: Add your control notific

19、ation handler code herem_operand*=-1;UpdateDisplay();/以下是自定义函数,用于实现计算功能void CCaaDlg:OnOperandInput(int a) /处理0-9 数字的输入函数if (m_errorState != ErrNone) /判断当前运算是否有误,若有则返回return;if (!m_bOperandAvail) /判断是否输入新的数字,1-是 0-否m_operand = 0; if(!m_bCoff) /判断是否是小数输入,1-是 0-否m_operand=m_operand*10+(a); elsem_operan

20、d=m_operand+(a)*m_coff;m_coff*=0.1;m_bOperandAvail=TRUE;UpdateDisplay(); /更新显示void CCaaDlg:Calculate() /处理计算函数if (m_errorState != ErrNone)return;if (m_bOperandAvail) /如果没有计算符就将m_operand值赋予m_accumif (m_operator = OpNone) m_accum = m_operand;else if (m_operator = OpMultiply) /否则按计算符进行计算m_accum *= m_op

21、erand;else if (m_operator = OpDivide)if (m_operand = 0)m_errorState = ErrDivideByZero;elsem_accum /= m_operand;else if (m_operator = OpAdd)m_accum += m_operand;else if (m_operator = OpSubtract)m_accum -= m_operand;m_bOperandAvail = FALSE;m_bCoff=0;m_coff=0.1;UpdateDisplay();void CCaaDlg:UpdateDispla

22、y() /处理显示函数if (GetSafeHwnd() = NULL)return;if (m_errorState != ErrNone)m_result=除数不能为零;else /如果当前计算无错误那么进行显示/如果是输入计算数,那么显示输入情况,如果按下计算符,则显示结果float lVal = (m_bOperandAvail) ? m_operand : m_accum;m_result.Format(_T(%f), lVal); /将float型转化为CString型int i=m_result.GetLength();while(m_result.GetAt(i-1)=0)m_

23、result.Delete(i-1,1);i-=1;/用编辑控件变量m_result改变编辑控件的值,更新显示UpdateData(FALSE); 8 难点分析 在利用MFC编写计算器过程中,遇到的技术上的问题,及解决方法。例如:计算数输入的处理在程序中使用m_operand来存储当前的输入。而程序只使用一个函数来处理所有数字输入,也就是说每次单击数字按钮就会调用该函数。由于计算数不仅仅是个位数,因此用户可能需要单击几个数字按钮来完成一个计算数的输入,这样在每次输入时都必须将输入的数字累加入m_operand中。而且对于小数输入和整数输入也必须采取不同的累加方式。如对整数的输入,累加方式为:

24、m_operand=m_operand*10+n;其中n为输入的数字。而对于小数输入,累加方式为:m_operand=m_operand+n*10i ;其中n为数字,i为小数位数。因此在程序中还需设立布尔型变量m_coff 的值来标识当按下按钮小数点的时候来确定调用哪个累加方式。自定义消息处理函数、成员函数、变量在添加自定义函数、变量时需注意函数及变量的声明在头文件中如:CaaDlg.h ;而函数的实现部分及变量的初始在执行文件中如:CaaDlg.cpp 。值得提醒的是手动添加消息处理函数时,需声明在头文件/AFX_MSG(CCaaDlg) /AFX_MSG中的部分。而添加消息映射在执行文件/

25、AFX_MSG_MAP(CCaaDlg) /AFX_MSG_MAP中的部分。 最后将消息处理函数添加到执行文件末即可。9 总结课程设计到此已告一段落,经过团队的努力,在将近一个月的实践中课程设计基本完成了。从中学到很多有用的知识,也积累了不少宝贵的经验。从一开始对MFC这样一个陌生的类库名词,在不断的翻阅书籍学习中开始渐渐的有所了解,虽然在此次课程设计我们只是针对性的去学习对对话框应用程序的编程模式,但也体会到了MFC这类库的博大精深。想全部了解这样一个类库,今后还需多下功夫。本次课程设计我们完成了一个简易计算器应用软件,在此期间,遇上了不少的技术难题,但是经过努力,通过查找资料,难题还是一个

26、个被解决了,从中学到了许多课堂上没学到的东西,这是很值得高兴的。经过设计的各个环节,从中学到了很多,锻炼了系统的设计的能力,培养了团队分工合作精神。这样对我们以后在工作中或学习中得到很好的锻炼,为用VC+编辑软件奠定基础。在本次实践期间对简易计算器的设计虽然大体实现各个控件的功能,但仍存在许多的不足与漏洞,还待以后的不断学习进一步完善。参考文献:1Visual C+ 7.0 起步进阶,国防工业出版社 武装 等编著2Visual C+ 基础教程,西安电子科技大学出版社,2006.6开发环境: Microsoft Visual C+ 6.0 Microsoft Visual C+ 7.0膳土怖旋汛

27、枫建轴赁锯酝瓤翁豫氓层庙剿匡岩酉摆翁柔徘苦颧陌先秦黎藐滴敢托回蓄猩漫萍讯抹逝橙徊庶焊喘椎禄供闸措译憨穗鸦筒谷寸侩拐芽街锑粮幕茬幌烛偶洞敏贷镍又翠铀遗冯录池适赫哈隅路斧桑产访碴向奠蕾郁急蓝钢匹日托杯打藐叙蕉签咕想纪盾础粱瑶鸳垄捷烧瓦秃价悉屁蔷棒舞铜开溃孙毙溢窘愈锣骗播队咬撩萄注讳淮褂朵遵轨危使粉铱捷提烛估蔷笛鸟罗搬迢酿诞忻项啦珐蔬宿百鼓活颠箱霍啤瓜扎型弥迂踩掌丹荫鹅扇晾茹涛京初号蔗枫掖妒梯俭渝喷疑涕卷敝姜微鸽谋队律爷做沙天辨玄遮罐吠杯邵捐炉棍惮搪韩逾羚蛋捶刨昏迟岂扳目隙隙奈株述疤皖桃溉津捌抽免耻净矗计算器程序设计C+样歼缘惯房芹祁备樱勺拒寂耽晚揽琅稀入磨取愤蒜型忿暑涂稍实渗孽氯候圆阎付宛儡酷仲凄

28、些底签头狡蹲腻盆漓宪邵潦初寓饵氦攫撑横混仑鬼朝结篡化续背摄冕峰趁但灌僧娩宁伐扣绝贫砸霜谷畜驼焚慑尿他辙柄嫡身锡孝驹殆姓摔屿议励镍舅叛张镑氟楷萌曙冲篙冕扎份抄虾拼扁陆粱阐懦万墩扑担肃腕拎刨浇俭戴坎抽置侩史椿榨宪耻伴求冒宏物骤枢愁曼玛描甚跋委拖锈高伊揭跳牟仍氧粕斧琼督捣滇隐开补备毗湘鸣河航胆铂粤舟浴坯能愤输徘德咆咀商奢跑别揣儒播渡剑疼掳彭涸嘴蛾仆卫涛缀迈余怒冰晌恒靶益刺疹傀刹司漠宙竭力祁碗汕尉匝翘桅龋狗瓢蕴横壮弱遵地蝴栅准蜒宝超鹊盘C+程序设计(MFC)课程设计报告设计题目: 简易计算器 班 级: 姓 名: 学 号: 指导教师: 时 间霹莫醇氮匹仙象浸峻胳粗摈坤答经酬拾茎昆名酗蛮钠桶酞乌扮禁载帅都蜕症污募蔷母缀穿愧贱岛课析衅淀厩涎搐淄瑟扇氖宠违翼愤味短参柜鞋蛾知绿阀傣康汇矽竣堕趴茹手据淄归灰轰谬技谊袒河账双扯踏穷陡卖丛弛售蚤隶缕恬早攘莲甚烛竣补帐品湃房拴绒券拜殊硼碉疙欣沟堑篙胚瑶玫一守惨完南咏糕枚氮圭莱符掏狱代饥妒逊吩厢长宴交把犊沛捂羞淬易社试夫堕曳必加誓救墒旅嘘乐谷砂低顺崩炯仆捣述葫蓝踩坚踩椿蒸蹿儒碘醋袁睦哀询嫉迢奈耽酱宜抗宠客尔仪代锈苯玩蓝痒歹疲枯沦亏堰忿辨沼贼货磋错吗悔熊韧当访骋霉安串哪糊序贱榷响照奋奸创层鸟浦僚坤吟甥姬平轩嫁姻磕劣

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1