

免费预览已结束,剩余31页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
专业技能培训课程实验报告 课程设计题目: 大整数计算器 学生姓名: 学生学号: 学生院系: 学生班级: 指导教师: 摘要:本课程设计将实现一个大整数计算器。其类似于windows附件中自带的计算器。这个计算器可以实现大整数的四则运算功能,并且具有简洁大方的图文外观。它的设计按软件工程的方法进行,系统具有良好的界面、必要的交互信息和较好的健壮性使用人员能快捷简单地进行操作。即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。在课程设计中,系统开发平台为windows 2000/xp及以上,程序设计设计语言采用visual c+,在程序设计中,采用了结构化与面向对象两种解决问题的方法。 关键词 : 程序设计;计算器;mfc;按钮控件目 录一、问题描述3二、功能描述 3三、需求分析3四、概要设计3五、详细设计41、运算流程图42、详细设计步骤53、菜单功能的实现84、相关程序代码13六、 设计和调试分析17七、 用户手册18八、 测试结果20九、 设计心得23十、 参考文献24附录24一、问题描述超大整数(超100位)的运算和输出、输出 二、功能描述 (1)定义大整数类;(2)大整数的输入/输出 ;(3)计算功能:大整数的数的加、减、乘、除、模除运算;(4)菜单功能:每种功能的操作都是在菜单中进行相应选择;(5)计算器上数字09为一个控件数组,加、减、乘、除为一个控件数组;(6)输入的原始数据、运算中间数据和结果都显示在窗口顶部的同一个标签中;(7)计算功能基本上是用系统内部函数;(8)“0”不能做除数;(9)“backspace”按钮可以清除上一次输入的数据,“clear”按钮可以清除所有已输入的数据从头计算。三、需求分析本设计是大整数计算器。日常计算机使用中,常常涉及到一些有关计算的问题,一个小型的计算器软件变得非常有用,该校型计算器需要空间资源较少,对电脑其他程序的应用影响较小。它的设计按软件工程的方法进行,系统具有良好的界面、必要的交互信息和较好的健壮性;醒目美观的软件封面。使用人员能快捷简单地进行操作。即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。本软件主要用于计算机windows 2000/xp以上版本的用户的使用,这次课程设计一般是实现大整数计算器的功能。要程序能实现:加,减,乘,除,模运算等运算功能;还可以实现数据的输入,输出,计算,显示及程序退出等功能。四、概要设计本软件主要应用的设计工具是visual c+6.0以及visual c+6.0中的mfc。mfc是win api与c+的结合,mfc不只是一个功能单纯的界面开发系统,它提供的类绝大部分用来进行界面开发,关联一个窗口的动作,但它提供的类中有好多类不与一个窗口关联,即类的作用不是一个界面类,不实现对一个窗口对象的控制(如创建,销毁),而是一些在windos(用mfc编写的程序绝大部分都在windos中运行)中实现内部处理的类。使用visual c+6.0进行设计编程非常方便实用。五、详细设计1、运算流程图 n y y n y 2、详细设计步骤(1)打开visual c+6.0,选择filenewlproject命令,选择mfc appwizard(exe)创建project名为“计算器”,按确定。在弹出界面选择创建对话框,单击“完成”按钮。(2)这样,mfc appwizard就建立了一个基于对话窗口的程序框架,如图1所示: 图1(3)在生成的设计界面中加入控件,得到计算器应用界面。如图2: 图2(4)为控件编辑框编辑id,如下表: 按钮名称id用途0idc_button_0按键01idc_ button_1按键12idc_ button_2按键23idc_ button_3按键34idc_ button_4按键45idc_ button_5按键56idc_ button_6按键67idc_ button_7按键78idc_ button_8按键89idc_ button_9按键9.idc_ buttonpt按键.+/-idc_ buttonor正负+idc_ buttonjia加-idc_ buttonjian减*idc_ buttoncheng乘/idc_ buttonchu除clearidc_ buttonc清零backspaceidc_ buttonbk退格=idc_ buttondeng等于 编辑框idc_edit1显示数据输入输出 (5)进入classwizard界面选择message maps为控件插入消息映射,插入消息函数,实现控件命令功能。如图3: 图3(6) 进入classwizard界面message varibles为编辑框添加成员变量m_stredit用以显示结果。如图: 图4(7)在“计算器dlg.h”中加入在主要成员函数和成员变量的申明,在“计算器dlg.cpp”中加入主要成员函数实现过程和成员变量的初始化。在头文件中“计算器dlg.h”中public下添加: int sos; /操作附鉴别符int cal;cstring m_str2; /存放按下操作符之前m_stredit的值cstring m_str1; /中间变量,当前m_stredit的值在“计算器dlg.cpp”中要定义各种数学运算添加:#include math.h3、菜单功能的实现(1)添加菜单栏如图: (2)添加需要弹出的新对话框如图:(3)在主对话框的类(cmydlg)头文件中定义一个菜单类对象m_menu用于加载菜单:cmenu m_menu; /定义一个菜单类对象 (4)在cmydlg类的bool cmydlg:oninitdialog()成员函数中添加如下代码:m_menu.loadmenu(idr_menu1);setmenu(&m_menu);(5)给要弹出的对话框创建一个类cpopdlg:(6) 给菜单项响应一个点击事件:ps:这里注意 类名一定要选主对话框。(7)在菜单项的响应函数中添加执行函数,弹出新对话框:cpopdlg dlg; /定义一个新对话框的对象dlg.domodal(); /弹出对话框 (8) 然后就是记得在主对话框前面加上新对话框类的头文件: #include popdlg.h 4、相关程序代码(1)加、减、乘、除算法void cmydlg:onbuttonjia() / todo: add your control notification handler code hereupdatedata(true);m_str1=m_stredit;m_stredit=;sos=1; updatedata(false); void cmydlg:onbuttonjian() / todo: add your control notification handler code hereupdatedata(true);m_str1=m_stredit;m_stredit=;sos=2;updatedata(false); void cmydlg:onbuttoncheng() / todo: add your control notification handler code hereupdatedata(true);m_str1=m_stredit;m_stredit=;sos=3;updatedata(false); void cmydlg:onbuttonchu() / todo: add your control notification handler code hereupdatedata();m_str1=m_stredit;m_stredit=;sos=4;updatedata(false); (2)“=”号void cmydlg:onbuttondeng() / todo: add your control notification handler code heredouble f1,f2,f3;int f4,f5,f6;/%运算符操作数只能是整型switch(sos)case 1:updatedata(true);m_str2=m_stredit;f1=atof(m_str1);f2=atof(m_str2);f3=f1+f2;m_stredit.format(%f,f3);updatedata(false);break;case 2:updatedata(true);m_str2=m_stredit;f1=atof(m_str1);f2=atof(m_str2);f3=f1-f2;m_stredit.format(%f,f3);updatedata(false);break;case 3:updatedata(true);m_str2=m_stredit;f1=atof(m_str1);f2=atof(m_str2);f3=f1*f2;m_stredit.format(%f,f3);updatedata(false);break;case 4:updatedata(true);m_str2=m_stredit;f1=atof(m_str1);f2=atof(m_str2);if(f2=0)messagebox(被除数不能为零!);elsef3=f1/f2; m_stredit.format(%f,f3);updatedata(false);break;case 6:updatedata(true);m_str2=m_stredit;f4=atoi(m_str1);/将字符型转化为整型,下面做相应修改f5=atoi(m_str2);f6=int(f4)%int(f5);m_stredit.format(%d,f6);updatedata(false);break; (3)“backspace”void cmydlg:onbuttonbk() / todo: add your control notification handler code hereupdatedata(true);m_stredit=m_stredit.left(m_stredit.getlength()-1);updatedata(false); (4)“clear”void cmydlg:onbuttonc() / todo: add your control notification handler code hereupdatedata(true);m_stredit=;sos=0;updatedata(false); 6、 设计和调试分析通过测试时发现,加法返回的结果与正确的结果不相符、在做乘法时遇到最多的问题便是超出了字符的数值范围,当使用界面进行加法操作时发现无法清空上一次加法的结果,不过通过排查,最后把问题给解决了。7、 用户手册输入的形式:键盘上的数字键输入或者界面数字键输入输入、输出值的范围为:(0,),输出的形式:编辑框输出运算结果。用户可以使用计算器进行大整数的运算,只需打开visual c+6.0点击“文件”“打开工作空间”“选择后缀类型为.dsw的程序”运行即可进行计算,如图: 8、 测试结果数据a:10000000000000000000000000数据b:200000000000000000000“+”结果:10000200000000002000000000如图: “-”结果:9999799999999999900000000如图: “*”结果:2000000000000000200000000000000000000000000000如图: “/”结果:50000如图: 除数为零时,显示: 9、 设计心得课程设计到此已告一段落,经过自己的努力,这几周的技能培训课程设计基本完成了。从中学到很多有用的知识,也积累了不少宝贵的经验。虽然在此次课程设计我们只是针对性的去学习对对话框应用程序的编程模式,但也体会到了mfc这类库的博大精深。想全部了解这样一个类库,今后还需多下功夫。本次课程设计我完成了一个计算器应用软件,在此期间,遇上了不少的技术难题,但是经过努力,通过查找资料,难题还是一个个被解决了,从中学到了许多课堂上没学到的东西,这是很值得高兴的。经过设计的各个环节,从中学到了很多,锻炼了系统的设计的能力。这样对我以后在工作中或学习中得到很好的锻炼,为用vc+编辑软件奠定基础。在本次实践期间对大整数计算器的设计虽然大体实现各个控件的功能,但仍存在许多的不足与漏洞,还待以后的不断学习进一步完善。 10、 参考文献参考文献:1visual c+ 7.0 起步进阶,国防工业出版社 武装 等编著2visual c+ 基础教程,西安电子科技大学出版社,2006.6 附录各按钮的响应程序代码:(1)“09”按钮:void cmydlg:onbutton0() / todo: add your control notification handler code hereupdatedata(true);if(cal=1)else if(m_stredit=0.)m_stredit=;m_stredit+=0;updatedata(false); void cmydlg:onbutton1() / todo: add your control notification handler code hereupdatedata(true);if(cal=1)else if(m_stredit=0.)m_stredit=;m_stredit+=1;updatedata(false); void cmydlg:onbutton2() / todo: add your control notification handler code hereupdatedata(true);if(cal=1)else if(m_stredit=0.)m_stredit=;m_stredit+=2;updatedata(false); void cmydlg:onbutton3() / todo: add your control notification handler code hereupdatedata(true);if(cal=1)else if(m_stredit=0.)m_stredit=;m_stredit+=3;updatedata(false);void cmydlg:onbutton4() / todo: add your control notification handler code hereupdatedata(true);if(cal=1)else if(m_stredit=0.)m_stredit=;m_stredit+=4;updatedata(false); void cmydlg:onbutton5() / todo: add your control notification handler code hereupdatedata(true);if(cal=1)else if(m_stredit=0.)m_stredit=;m_stredit+=5;updatedata(false); void cmydlg:onbutton6() / todo: add your control notification handler code hereupdatedata(true);if(cal=1)else if(m_stredit=0.)m_stredit=;m_stredit+=6;updatedata(false); void cmydlg:onbutton7() / todo: add your control notification handler code hereupdatedata(true);if(cal=1)else if(m_stredit=0.)m_stredit=;m_stredit+=7;updatedata(false); void cmydlg:onbutton8() / todo: add your control notification handler code hereupdatedata(true);if(cal=1)else if(m_stredit=0.)m_stredit=;m_stredit+=8;updatedata(false); void cmydlg:onbutton9() / todo: add your control notification handler code hereupdatedata(true);if(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC 60335-2-11:2024 EXV-CMV EN Household and similar electrical appliances - Safety - Part 2-11: Particular requirements for tumble dryers
- 农业生态修复与环境治理合作合同
- 外墙涂料买卖合同
- 生物技术基因工程知识题集及解析
- 化学工程与工艺专业基础试题集
- 六一儿童节探访活动方案
- 六一公司团建音乐活动方案
- 六一商城活动方案
- 六一孕妇店活动方案
- 六一抢牛奶活动方案
- 实验题(7大类42题)原卷版-2025年中考化学二轮复习热点题型专项训练
- CJ/T 362-2011城镇污水处理厂污泥处置林地用泥质
- 2025安全宣传咨询日活动知识手册
- DB31/T 1249-2020医疗废物卫生管理规范
- 四川省宜宾市翠屏区2025届数学七下期末综合测试试题含解析
- 乡镇合法性审查工作报告
- 宁波大学《通信原理》期末考试试题
- 生命体征监测技术操作考核评分标准
- 第三章混合策略纳什均衡ppt课件
- 粉尘浓度和分散度测定
- 一年级成长档案
评论
0/150
提交评论