




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、成都理工大学面向对象程序设计报告 学 院: 信息科学与技术学院 课程名称: 面向对象程序设计 专业班级: 物联网工程三班 学生姓名: 李瑞超 学号: 201413060309 指导教师: 覃 章 健 完成时间:2015.05.27一、 实验设计内容与要求设计并完成一个基于MFC的计算器、要求实现如下基本计算功能(1) 需完成简单的双目运算,例如加、减、乘、除等。 (2) 需完成部分三角函数及反三角函数的计算,并且要注意其定义域。 (3) 需完成简单对数函数运算。 (4) 需完成任意数的开根和次方,并且要注意数值
2、要求。 (5) 还需完成对数值的清除及清除全部内容的功能。二、 思路分析单目运算流程图开始计算器界面在X编辑框输入数字选择运算符 是是否符合条件 否输出结果提示错误结束双目运算流程图开始计算器界面在X输入第一个数字是否符合条件 提示错误 否在Y编辑框输入第二个数字 是 提示错误是否符合条件 否 是选择运算符 输出结果结束三、调试分析程序部分输入输出输入输出XY运算符3345+783758*2146783/26123321-19830Sin0.581Sqrt90.5Arcsin30四.程序部分截图1.新建一个MFC工程2.初始化布局3.MFC下个控件布局及配置ID4.程序主界
3、面5.关于计算器6.帮助信息五、测试结果经多次输入输出测试、程序工作正常,无程序崩溃现象。程序源码参见附录六、实验心得李瑞超2015.05.27附录:CCalculatorDlg .cpp程序源码#include "stdafx.h"#include "Calculator.h"#include "CalculatorDlg.h"#include "math.h"#include "helpdlg.h"#include "designdlg.h"#ifdef _DEBUG#d
4、efine new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CCalculatorDlg dialogCCalculatorDlg:CCalculatorDlg(CWnd* pParent /*=NULL*/): CDialog(CCalculatorDlg:IDD,pParent)/AFX_DATA_INIT(CCalculatorDlg)m_Numx=0.0;m_Numy=0.0;m_Result=0.0;m_csTooltip=_T("");m_iRora=0;/修改初始值为角度/
5、AFX_DATA_INIT/ Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);void CCalculatorDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CCalculatorDlg)DDX_Text(pDX,IDC_EDIT_NUMX,m_Numx);DDX_Text(pDX,IDC_EDI
6、T_NUMY,m_Numy);DDX_Text(pDX,IDC_EDIT_RESULT,m_Result);DDX_Text(pDX,IDC_EDIT_VIEW,m_csTooltip);DDX_Radio(pDX,IDC_RADIO_DGREE,m_iRora);DDX_Text(pDX,IDC_EDIT_VIEWM,m_csTooptipM);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CCalculatorDlg,CDialog)/AFX_MSG_MAP(CCalculatorDlg)ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_COMMAN
7、D(ID_MENU_ABOUT,OnMenuAbout)ON_COMMAND(ID_MENU_COPY,OnMenuCopy)ON_COMMAND(ID_MENU_OPENCALC,OnMenuOpencalc)ON_COMMAND(ID_MENU_PATSE,OnMenuPatse)ON_COMMAND(ID_MENU_SCI,OnMenuSci)ON_EN_SETFOCUS(IDC_EDIT_NUMX,OnSetfocusEditNumx)ON_EN_SETFOCUS(IDC_EDIT_NUMY,OnSetfocusEditNumy)ON_BN_CLICKED(IDC_BTN_ADD,On
8、BtnAdd)ON_BN_CLICKED(IDC_BTN_SUB,OnBtnSub)ON_BN_CLICKED(IDC_BTN_MUL,OnBtnMul)ON_BN_CLICKED(IDC_BTN_DIV,OnBtnDiv)ON_BN_CLICKED(IDC_BTN_0,OnBtn0)ON_BN_CLICKED(IDC_BTN_1,OnBtn1)ON_BN_CLICKED(IDC_BTN_2,OnBtn2)ON_BN_CLICKED(IDC_BTN_3,OnBtn3)ON_BN_CLICKED(IDC_BTN_4,OnBtn4)ON_BN_CLICKED(IDC_BTN_5,OnBtn5)ON
9、_BN_CLICKED(IDC_BTN_6,OnBtn6)ON_BN_CLICKED(IDC_BTN_7,OnBtn7)ON_BN_CLICKED(IDC_BTN_8,OnBtn8)ON_BN_CLICKED(IDC_BTN_9,OnBtn9)ON_BN_CLICKED(IDC_BTN_POINT,OnBtnPoint)ON_BN_CLICKED(IDC_BTN_CLEAR,OnBtnClear)ON_BN_CLICKED(IDC_BTN_CE,OnBtnCe)ON_BN_CLICKED(IDC_BTN_BKS,OnBtnBks)ON_BN_CLICKED(IDC_RADIO_DGREE,On
10、RadioDgree)ON_BN_CLICKED(IDC_RADIO_RAD,OnRadioRad)ON_BN_CLICKED(IDC_BTN_SIN,OnBtnSin)ON_BN_CLICKED(IDC_BTN_COS,OnBtnCos)ON_BN_CLICKED(IDC_BTN_TAN,OnBtnTan)ON_BN_CLICKED(IDC_BTN_ASIN,OnBtnAsin)ON_BN_CLICKED(IDC_BTN_ACOS,OnBtnAcos)ON_BN_CLICKED(IDC_BTN_ATAN,OnBtnAtan)ON_BN_CLICKED(IDC_BTN_PI,OnBtnPi)O
11、N_BN_CLICKED(IDC_BTN_E,OnBtnE)ON_BN_CLICKED(IDC_BTN_LN,OnBtnLn)ON_BN_CLICKED(IDC_BTN_LOGXY,OnBtnLogxy)ON_BN_CLICKED(IDC_BTN_FACT,OnBtnFact)ON_BN_CLICKED(IDC_BTN_RECI,OnBtnReci)ON_BN_CLICKED(IDC_BTN_SQR,OnBtnSqr)ON_BN_CLICKED(IDC_BTN_CUBE,OnBtnCube)ON_BN_CLICKED(IDC_BTN_POW,OnBtnPow)ON_BN_CLICKED(IDC
12、_BTN_SQRT,OnBtnSqrt)ON_BN_CLICKED(IDC_BTN_YROOT,OnBtnYroot)ON_BN_CLICKED(IDC_BTN_POW10,OnBtnPow10)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CCalculatorDlg message handlersBOOL CCalculatorDlg:OnInitDialog()CDialog:OnInitDialog();/ TODO: Add extra initialization here/更多全局变量初始化=iEditFlag=1;m_Coff=1.0;m_Memory=0.0
13、;SetWindowPos(&wndTop,0,0,618,408,SWP_NOMOVE|SWP_NOZORDER);return TRUE; / return TRUE unless you set the focus to a controlvoid CCalculatorDlg:OnPaint() if (IsIconic()CPaintDC dc(this); / device context for paintingSendMessage(WM_ICONERASEBKGND,(WPARAM) dc.GetSafeHdc(),0);/ Center icon in client
14、 rectangleint cxIcon=GetSystemMetrics(SM_CXICON);int cyIcon=GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x=(rect.Width()-cxIcon+1)/2;int y=(rect.Height()-cyIcon+1)/2;/ Draw the icondc.DrawIcon(x,y,m_hIcon);elseCDialog:OnPaint();HCURSOR CCalculatorDlg:OnQueryDragIcon()return (H
15、CURSOR) m_hIcon;void CCalculatorDlg:OnChangeEditNumx() UpdateData(true);void CCalculatorDlg:OnSetfocusEditNumx() iEditFlag=1;m_Coff=1.0;m_csTooltip=_T("选中 x");UpdateData(false);void CCalculatorDlg:OnChangeEditNumy() UpdateData(true);void CCalculatorDlg:OnSetfocusEditNumy() iEditFlag=2;m_Co
16、ff=1.0;m_csTooltip=_T("Select y");UpdateData(false);/基本加减乘除功能实现void CCalculatorDlg:OnBtnAdd() m_Result=m_Numx+m_Numy;m_csTooltip=_T("+");UpdateData(false);void CCalculatorDlg:OnBtnSub() m_Result=m_Numx-m_Numy;m_csTooltip=_T("-");UpdateData(false);void CCalculatorDlg:OnB
17、tnMul() m_Result=m_Numx*m_Numy;m_csTooltip=_T("*");UpdateData(false);void CCalculatorDlg:OnBtnDiv() if(m_Numy!=0)m_Result=m_Numx/m_Numy;m_csTooltip=_T("/");else:MessageBox(NULL,_T(" 除数不能为零!"),_T("警告"),MB_OK|MB_ICONASTERISK|MB_TASKMODAL);m_csTooltip=_T("除数
18、为零");UpdateData(false);/用于数字按钮调用void CCalculatorDlg:onButtonN(int n)if(m_Coff=1.0)if(iEditFlag=1)m_Numx=m_Numx*10+n;else if(iEditFlag=2)m_Numy=m_Numy*10+n;elseif(iEditFlag=1)m_Numx=m_Numx+n*m_Coff;else if(iEditFlag=2)m_Numy=m_Numy+n*m_Coff;m_Coff*=0.1;m_csTooltip=_T("输入");UpdateData(f
19、alse); void CCalculatorDlg:OnBtn0() onButtonN(0);void CCalculatorDlg:OnBtn1() onButtonN(1);void CCalculatorDlg:OnBtn2() onButtonN(2);void CCalculatorDlg:OnBtn3() onButtonN(3);void CCalculatorDlg:OnBtn4() onButtonN(4);void CCalculatorDlg:OnBtn5() onButtonN(5);void CCalculatorDlg:OnBtn6() onButtonN(6)
20、;void CCalculatorDlg:OnBtn7() onButtonN(7);void CCalculatorDlg:OnBtn8() onButtonN(8);void CCalculatorDlg:OnBtn9() onButtonN(9);/正负,小数点输入功能实现void CCalculatorDlg:OnBtnPoint() m_Coff=0.1;m_csTooltip=_T("小数点");UpdateData(false);void CCalculatorDlg:OnBtnNegate() if(iEditFlag=1)m_Numx=0-m_Numx;e
21、lse if(iEditFlag=2)m_Numy=0-m_Numy;m_csTooltip=_T("取反");UpdateData(false);/清零,删除功能实现void CCalculatorDlg:OnBtnClear() m_Numx=0.0;m_Numy=0.0;iEditFlag=1;m_Coff=1.0;m_Result=0.0;m_csTooltip=_T("复位");UpdateData(false);void CCalculatorDlg:OnBtnCe() if(iEditFlag=1)m_Numx=0.0;else if(iE
22、ditFlag=2)m_Numy=0.0;m_Coff=1.0;m_csTooltip=_T("清除");UpdateData(false);void CCalculatorDlg:OnBtnBks() CString temp;int StrLen;if(iEditFlag=1)temp.Format("%.20g",m_Numx);StrLen=temp.GetLength();temp=temp.Left(StrLen-1);m_Numx=atof(temp); elsetemp.Format("%.20g",m_Numy);S
23、trLen=temp.GetLength();temp=temp.Left(StrLen-1);m_Numy=atof(temp);m_csTooltip=_T("退格");UpdateData(false); /角度转换void CCalculatorDlg:OnRadioDgree() m_iRora=0;void CCalculatorDlg:OnRadioRad()m_iRora=1;double CCalculatorDlg:OnD2R(double n) return n/180*PI; /角度转弧度double CCalculatorDlg:OnR2D(dou
24、ble n) return n/PI*180; /弧度转角度void CCalculatorDlg:OnBtnSin() if(m_iRora=1)m_Result=sin(m_Numx);else if(m_iRora=0)m_Result=sin(OnD2R(m_Numx);m_csTooltip=_T("sin x");UpdateData(false);void CCalculatorDlg:OnBtnCos() if(m_iRora=1)m_Result=cos(m_Numx);else if(m_iRora=0)m_Result=cos(OnD2R(m_Numx
25、);m_csTooltip=_T("cos x");UpdateData(false);void CCalculatorDlg:OnBtnTan() if(m_iRora=1)m_Result=tan(m_Numx);else if(m_iRora=0)m_Result=tan(OnD2R(m_Numx);m_csTooltip=_T("tan x");UpdateData(false);void CCalculatorDlg:OnBtnAsin() if(m_Numx<-1|m_Numx>1)m_csTooltip=_T("超出范
26、围");:MessageBox(NULL,_T(" arcsin x 中x必须大于等于-1且小于等于1,请重新输入!"),_T("警告"),MB_OK|MB_ICONASTERISK|MB_TASKMODAL);elseif(m_iRora=1)m_Result=asin(m_Numx);else if(m_iRora=0)m_Result=OnR2D(asin(m_Numx);else if(m_iRora=2)m_Result=OnR2G(asin(m_Numx);m_csTooltip=_T("arcsin x");U
27、pdateData(false);void CCalculatorDlg:OnBtnAcos() if(m_Numx<-1|m_Numx>1)m_csTooltip=_T("超出范围");:MessageBox(NULL,_T(" arccos x 中x必须大于等于-1且小于等于1,请重新输入!"),_T("警告"),MB_OK|MB_ICONASTERISK|MB_TASKMODAL);elseif(m_iRora=1)m_Result=acos(m_Numx);else if(m_iRora=0)m_Result=ac
28、os(OnR2D(m_Numx);else if(m_iRora=2)m_Result=acos(OnR2G(m_Numx);m_csTooltip=_T("arccos x");UpdateData(false);void CCalculatorDlg:OnBtnAtan() if(m_iRora=1)m_Result=atan(m_Numx);else if(m_iRora=0)m_Result=atan(OnR2D(m_Numx);else if(m_iRora=2)m_Result=atan(OnR2G(m_Numx);m_csTooltip=_T("ar
29、ctan x");UpdateData(false);void CCalculatorDlg:OnBtnPi() if(iEditFlag=1)m_Numx=PI;else if(iEditFlag=2)m_Numy=PI;m_csTooltip=_T("常数 ");UpdateData(false);void CCalculatorDlg:OnBtnE() if(iEditFlag=1)m_Numx=CONE;else if(iEditFlag=2)m_Numy=CONE;m_csTooltip=_T("常数 ");UpdateData(fa
30、lse);void CCalculatorDlg:OnBtnLn() if(m_Numx<=0)m_csTooltip=_T("超出范围");:MessageBox(NULL,_T(" ln x 中的x必须大于0,请重新输入!"),_T("警告"),MB_OK|MB_ICONASTERISK|MB_TASKMODAL);elsem_Result=log(m_Numx);m_csTooltip=_T("ln x");UpdateData(false);void CCalculatorDlg:OnBtnLogxy
31、() if(m_Numx<=0|m_Numx=1)m_csTooltip=_T("超出范围");:MessageBox(NULL,_T(" logxY 中的x必须大于0且不为1,请重新输入!"),_T("警告"),MB_OK|MB_ICONASTERISK|MB_TASKMODAL);elsem_Result=log10(m_Numy)/log10(m_Numx);m_csTooltip=_T("logxY");UpdateData(false);void CCalculatorDlg:OnBtnReci()
32、 if(m_Numx=0)m_csTooltip=_T("除数为零");:MessageBox(NULL,_T(" 除数不能为零!"),_T("警告"),MB_OK|MB_ICONASTERISK|MB_TASKMODAL);elsem_Result=1/m_Numx;m_csTooltip=_T("1/x");UpdateData(false);void CCalculatorDlg:OnBtnSqr() m_Result=m_Numx*m_Numx;m_csTooltip=_T("x2");UpdateData(false);void CCalculatorDlg:OnBtnCube() m_Result=m_Numx*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Module 3 Making plans Unit 3 Language in use Module task-说课稿-2023-2024学年外研版英语七年级下册
- 欢乐寒假 从我做起(说课稿)2023-2024学年初三下学期教育主题班会
- 有机甜菜糖生产创新创业项目商业计划书
- 红细胞沉降率分析仪行业跨境出海项目商业计划书
- 汽车电声创新创业项目商业计划书
- 美发造型设计大赛创新创业项目商业计划书
- 《6.2 弹力 力的测量和表示》(说课稿)-2024-2025学年沪粤版(2024)初中物理八年级下册
- 2025年数字特技发生器项目提案报告
- 第十四课 做一个有担当的人教学设计小学心理健康人教版六年级下册-人教版
- 刚毕业大学生实习协议书7篇
- 江苏省南京市联合体2024-2025学年八年级上学期期中数学练习试卷
- 部编版(2024)三年级道德与法治上册第12课《生活离不开规则》教学课件
- 插花花艺师(高级)技能认证考试复习题及答案
- 山东省济南市历城第三中学2024-2025学年上学期九年级10月月考数学试题(无答案)
- 公务用车司勤人员职业技能竞赛知识理论测试题库2(公车管理政策法规)
- 2024年大学英语应用能力考试A级试卷及答案
- 《非道路移动工程机械二手设备评估通则》
- 凯撒大帝课件
- DL5190.5-2019电力建设施工技术规范第5部分:管道及系统
- 水刷石外墙清洗方案
- 【高中班会】高一选科指导课件
评论
0/150
提交评论