ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:168.18KB ,
资源ID:12317415      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12317415.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于vc++mfc的科学计算器程序实验报告.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于vc++mfc的科学计算器程序实验报告.docx

1、基于vc+mfc的科学计算器程序实验报告实验报告课程名称: windows软件开发实习 实验项目: 科学计算器 沈阳工业大学实验报告(适用计算机程序设计类)专业班级: 软件1006 学号: * 姓名: 张鑫可 实验名称:1.实验目的: 本程序设计实践是采用C+语言,在VC平台下设计。本课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力。程序设计实践主要是培养学生利用系统综合C+语言进行程序设计的能力。 1.进一步巩固和复习C+程序设计的基础知识。 2.培养学生结构化程序、模块化程序设计

2、的方法和能力。 3.了解软件的编制过程及各环节的具体内容。 4.提高学生程序调试技巧、软件设计能力和代码规范化等素质。 5.提高学生分析问题、解决问题以及实际运用能力。2.实验内容: 设计一个简单的计算器。要求能实现整数、小数算数运算。程序带清零按钮。3. 实验方案(程序设计说明)见附件4. 实验步骤或程序(经调试后正确的源程序)(填写主要步骤与程序代码等。见附件A)5出现的问题及解决方法附件A 沈阳工业大学实验报告(适用计算机程序设计类)专业班级: 软件1006 学号: * 姓名: 张鑫可 实验步骤或程序: 一、关于Visual C+: Visual C+6.0由Microsoft开发, 它

3、不仅是一个C+ 编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。Visual C+6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。这些组件通过过一个名为Developer Studio的组件集成为和谐的开发环境。Microsoft的主力软件产品。Visual C+是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C+1.0后,随着其新版本的不断问世,Visual C+已成为专业程序员进行软件开发

4、的首选工具。虽然微软公司推出了Visual C+.NET(Visual C+7.0),但它的应用的很大的局限性,只适用于Windows 2000,Windows XP和Windows NT4.0。所以实际中,更多的是以Visual C+6.0为 6平台。 Visual C+6.0以拥有“语法高亮”,自动编译功能以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及创建预编译头文件(stdafx.h)、最小重建功能及累加连结(link)著称。这些特征明显缩短程序编辑、编译及连结的时间花费,在大型软件计划

5、上尤其显著。二、设计要点1、基本要求:设计的系统界面要美观大方,操作合理,有必要的 提示。 2、创新要求:在基本要求达到后,进行创新设计。 3、对系统进行功能模块分析、控制流程分析正确。 4、系统设计要实用,编程简练,可用,功能全面,并有一定的容错能力。 5、说明书、流程图要清楚 6、要求程序设计合理,用户界面良好,如采用菜单工作方式。三、实验步骤:1、首先利用MFC AppWinzard生成计算器应用程序框架具体步骤如下: 执行VC程序,选择File|New命令,弹出New对话框.单击Projects标签,转到Projects选项卡,选择MFC AppWizard(exe)选项,然后在Pro

6、ject name文本框中输入cyyJSQ 。Lacation文本框是指项目的本地路径。2、界面设计在界面中添加按钮,编辑框等相应控件,并合理摆放,使用户能更加方便的使用。具体设计如下图所示:3、绑定控件通过如下方式绑定控件。具体绑定如下表所示: 按钮控件资源清单按钮名称按钮ID用途0IDC_ZERO按键01IDC_1按键12IDC_2按键23IDC_3按键34IDC_4按键45IDC_5按键56IDC_6按键67IDC_7按键78IDC_8按键89IDC_9按键9.IDC _DOT小数点=IDC _Equal等于+IDC _ADD加号-IDC _SUB减号*IDC _MUL乘号/IDC _D

7、IV除号CEIDC _CE清屏SqrtIDC _Sqrt开方1/xIDC _Daoshu倒数-/+IDC _ ZHengfu正负MCIDC _Mc清除内存记录数据MRIDC _Mr内存中保存的数据MSIDC _Ms数据存入存储器中,将原有的数据冲走M+IDC _Madd当前记录数据与内存数据相加%IDC _Per百分号CIDC _C清零(清除全部)CEIDC _CE清除上一步数据BackspaceIDC _Backspace从后向前删除4、逐步实现代码按钮1-9的实现 文本编辑框的类型为string型,所以若按下数字1按钮时只需在数组尾部添加“1”即可其他代码如此类推,具体代码如下:void

8、CMyDlg:OnButton0() / 数字 0 this-check() ; CString tmp = num_buffer ; / 当为小数点后或其前面有不为零的数时允许输入零 if ( tmp.ReverseFind(.) != -1 | tmp.FindOneOf( 123456789 ) != -1 ) num_buffer += 0 ; else num_buffer = 0 ; GetDlgItem( IDC_EDIT_SHOW )-SetWindowText( num_buffer ) ; void CMyDlg:OnButton1() / 数字 1 this-check(

9、) ; num_buffer += 1 ; GetDlgItem( IDC_EDIT_SHOW )-SetWindowText( num_buffer ) ;void CMyDlg:OnButton2() / 数字 2 this-check() ; num_buffer += 2 ; GetDlgItem( IDC_EDIT_SHOW )-SetWindowText( num_buffer ) ;void CMyDlg:OnButton3() / 数字 3 this-check() ; num_buffer += 3 ; GetDlgItem( IDC_EDIT_SHOW )-SetWindo

10、wText( num_buffer ) ; void CMyDlg:OnButton4() / 数字 4 this-check() ; num_buffer += 4 ; GetDlgItem( IDC_EDIT_SHOW )-SetWindowText( num_buffer ) ; void CMyDlg:OnButton5() / 数字 5 this-check() ; num_buffer += 5 ; GetDlgItem( IDC_EDIT_SHOW )-SetWindowText( num_buffer ) ; void CMyDlg:OnButton6() / 数字 6 thi

11、s-check() ; num_buffer += 6 ; GetDlgItem( IDC_EDIT_SHOW )-SetWindowText( num_buffer ) ; void CMyDlg:OnButton7() / 数字 7 this-check() ; num_buffer += 7 ; GetDlgItem( IDC_EDIT_SHOW )-SetWindowText( num_buffer ) ; void CMyDlg:OnButton8() / 数字 8 this-check() ; num_buffer += 8 ; GetDlgItem( IDC_EDIT_SHOW

12、)-SetWindowText( num_buffer ) ; void CMyDlg:OnButton9() / 数字 9 this-check() ; num_buffer += 9 ; GetDlgItem( IDC_EDIT_SHOW )-SetWindowText( num_buffer ) ; void CMyDlg:OnButtonDot() / 小数点 if ( num_buffer.IsEmpty() ) num_buffer = 0. ; else if ( num_buffer.ReverseFind(.) = -1 ) num_buffer += . ; GetDlgI

13、tem( IDC_EDIT_SHOW )-SetWindowText( num_buffer ) ; / 求相反数void CMyDlg:OnButtonNI() / 正负处理 m_num = - atof( num_buffer ) ; / 转化为字符串 num_buffer.Format( _T(%lf), m_num ); GetDlgItem( IDC_EDIT_SHOW )-SetWindowText( num_buffer ) ;运行结果如下:加减乘除代码的实现: 通过控件的绑定以及传值函数,以指针调用的方式进行赋值,并将结果保存在num_buffer中,与下一次输入的num2进行

14、新的一元运算并给result赋值,通过Updatedata()函数反应到文本编辑框中,具体代码如下:/加 void CMyDlg:OnButtonAdd() this-num1 = atof( num_buffer ) ; this-num_buffer.Empty() ; this-operation_type = ADD ;/ 减void CMyDlg:OnButtonSub() this-num1 = atof( num_buffer ) ; this-num_buffer.Empty() ; this-operation_type = SUB ;/ 乘void CMyDlg:OnBut

15、tonMul() this-num1 = atof( num_buffer ) ; this-num_buffer.Empty() ; this-operation_type = MUL ;/ 除void CMyDlg:OnButtonDiv() this-num1 = atof( num_buffer ) ; this-num_buffer.Empty() ; this-operation_type = DIV ;void CMyDlg:OnButtonRes() const double EPSINON = 0.00001 ; bool error = false ; this-num2

16、= atof( num_buffer ) ; this-num_buffer.Empty() ; switch( this-operation_type ) case ADD : this-m_num = num1 + num2 ; break; case SUB : this-m_num = num1 - num2 ; break; case MUL : this-m_num = num1 * num2 ; break; case DIV : if ( (num2 -EPSINON ) & (num2 m_num = num1 / num2 ; break; default:this-m_n

17、um = this-num2 ; break; 结果如下图所示 科学性运算按钮的处理:只需根据数值分析等为按钮进行算法的合理设计,正确赋值即可,具体代码如下:/ 自然底数 evoid CScience:OnButtonEConst() this-check() ; num_buffer.Format(_T(%lf) , M_E) ; fresh() ;/ 圆周率 void CScience:OnButtonPai() this-check() ; num_buffer.Format(_T(%lf) , M_PI) ; fresh() ;void CScience:OnButtonNi() /

18、正负处理 m_result = - atof( num_buffer ) ; / 转化为字符串 num_buffer.Format( _T(%lf), m_result ); fresh() ;void CScience:OnButtonMutInv() this-unary_operation = true ; const double EPSINON = 0.00001 ; this-m_result = atof( num_buffer ) ; if ( (this-m_result = - EPSINON) & (this-m_result SetWindowText(0 的倒数没有定

19、义n) ; else this-m_result = 1.0 / m_result ; num_buffer.Format( _T(%lf), m_result ); fresh() ; this-unary_operation = false ; void CScience:OnButtonPercent() this-unary_operation = true ; CString tmp = num_buffer ; this-m_result = atof(num_buffer) ; tmp.Format(_T(%lf) , this-m_result * 100 ) ; tmp +=

20、 % ; fresh(tmp) ; this-unary_operation = false ;void CScience:OnButtonSqr() this-unary_operation = true ; this-m_result = atof(num_buffer) ; this-m_result = sqrt(m_result) ; num_buffer.Format(_T(%lf) , this-m_result) ; fresh() ; this-unary_operation = false ;void CScience:OnButtonSin() CString tmp ;

21、 this-unary_operation = true ; this-m_result = atof(num_buffer) ; num_buffer.Format(_T(%lf) , this-m_result) ; tmp = Sin( + num_buffer + ) = ; this-m_result = sin(m_result) ; num_buffer.Format(_T(%lf) , this-m_result) ; tmp += num_buffer ; fresh(tmp) ; this-unary_operation = false ;void CScience:OnB

22、uttonCos() CString tmp ; this-unary_operation = true ; this-m_result = atof(num_buffer) ; num_buffer.Format(_T(%lf) , this-m_result) ; tmp = Cos( + num_buffer + ) = ; this-m_result = cos(m_result) ; num_buffer.Format(_T(%lf) , this-m_result) ; tmp += num_buffer ; fresh(tmp) ; this-unary_operation =

23、false ;void CScience:OnButtonTan() CString tmp ; const double EPSINON = 0.00001 ; this-unary_operation = true ; this-m_result = atof(num_buffer) ; num_buffer.Format(_T(%lf) , this-m_result) ; tmp = tan( + num_buffer + ) = ; if ( (cos(m_result) = -EPSINON) & (cos(m_result) m_result = tan(m_result) ;

24、num_buffer.Format(_T(%lf) , this-m_result) ; tmp += num_buffer ; fresh(tmp) ; this-unary_operation = false ; void CScience:OnButtonCot() CString tmp ; const double EPSINON = 0.00001 ; this-unary_operation = true ; this-m_result = atof(num_buffer) ; num_buffer.Format(_T(%lf) , this-m_result) ; tmp =

25、cot( + num_buffer + ) = ; if ( (sin(m_result) = -EPSINON) & (sin(m_result) m_result = cos(m_result)/sin(m_result) ; num_buffer.Format(_T(%lf) , this-m_result) ; tmp += num_buffer ; fresh(tmp) ; this-unary_operation = false ; void CScience:OnButtonLn() CString tmp ; const double EPSINON = 0.00001 ; t

26、his-unary_operation = true ; this-m_result = atof(num_buffer) ; num_buffer.Format(_T(%lf) , this-m_result) ; tmp = ln( + num_buffer + ) = ; if ( m_result m_result = log(m_result) ; num_buffer.Format(_T(%lf) , this-m_result) ; tmp += num_buffer ; fresh(tmp) ; this-unary_operation = false ; 运行结果如下:进制间

27、的转换:1.按钮A-F的实现与,进制运算时,按钮条件的设置。在进行16进制运算时,需定义A-F按键,而在10进制时,A-F按键设置为不可使用,以及8进制时8、9按钮禁止使用。具体代码如下:void CScience:OnButtonA() / 数字 A(10) this-check() ; num_buffer += A ; fresh() ; void CScience:OnButtonB() / 数字 B(11) this-check() ; num_buffer += B ; fresh() ; void CScience:OnButtonC() / 数字 C(11) this-check() ;num_buffer += C ; fresh() ; void CScience:OnButtonD() / 数字 D(12) this-check() ; num_buffer += D ; fresh() ; void CScience:OnButtonE() / 数字 F(12

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1