




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、淮北师范大学科学型计算器的开发与实现学院计算机科学与技术业 计算机科学与技术(师范)学 生 姓 名专学号指导教师姓名年 月 日作 者:指导教师:摘 要:目前,科学计算器的应用非常广泛,从科研、生产、国防、文化、卫生、直到家庭生活,都离不开科学计算器的服务。通过使用科学计算器,避免了人工运算的这篇文章主要介绍用软件的方法实现科学计算器系统,包括:科学计算器系统的概述,科学计算器系统的开发原理和主要实现的功能,子模块的设计和实现技术。其中,本系统需要实现以下功能:加、减、乘、除、余运算、倒数、乘方运算、开方运算、幂运算、对数运算、指数运算、正弦函数运算、余弦函数运算、正切函数运算、余切函数运算、反
2、正弦函数运算、反余弦函数运算、反正切函数运算、反余切函数运算、排列组合运算和弧度与角度之间的转换,能输入正负数、小数,具有清零、退格功能,具有连续运算的能力。关键词:对话框;控件;计算方法i scientificCandidate:Supervisor: Associate ProfessorCurrently, the application of scientific calculator is very extensive. It can not be getaway from the service of scientific calculator in the field of re
3、search, production, nationaldefense, culture, hygiene, even family life. By using scientific calculator, the tedious artificialoperation, the larger errors and operational mistakes, which are caused by artificial operation,can be avoided. It brings much convenience to peoples operation.This article
4、mainly introduces a scientific calculator system implementing from theperspective of software. It includes the overview and developmental principle of scientificcalculator system. It also contains the primary functions, which have been implemented, thedesign and implemental technology of sub-modules
5、. Among them, it forces on introducing theusage of dialog box and controls as well as the implementation of mathematic functionwithout using library function, but computing method.The system needs to achieve the following functions : adds, subtracts, multiplies, divides, theremainder operation, the
6、countdown operationradicand, power calculation, the log and indexcalculation, the operation of sine function, cosine function, tangent function, cotangentfunction, arc sine function, arc cosine function , arc tangent function and arc cotangentfunction, permutations and combinations operation, the co
7、nversion between radian and angle,the capability of inputting decimal, positive and negative numbers, the reset and backspacefunction, continuous operational capacity.Key words:Dialog box; Controls; Computing method目 录引言1 科学型计算器系统概述11.1设计科学型计算器系统的背景11.2科学型计算器的发展史12系统需要22.1设计分析22.1.1可行性分析22.1.2需求分析22
8、.2开发环境22.2.1运行环境22.2.2开发工具22.2.3关于visual c+ 6.023系统设计33.1功能说明33.1.1系统总体功能分析33.1.2系统功能 33.2系统大概33.2.1设计思路33.2.2计算器运算流程图34系统的实现 44.1窗口的设计4iii4.1.1 设计步骤44.1.2 控件的意义44.1.3 部分操作截图44.2 程序核心代码44.2.1 数字键核心代码44.2.2 计算类型函数的核心代码二进制转换代码backspace函数代码arcsin函数代码log10函数代码函数代码45 系统运行与测试55.1 运行界面55.2 55.2.1 测试研究与选择55
9、.2.2 测试环境55.3 程序代码5总结参考文献致谢iv引言本设计设计主要在运算过程中,如果通过计算器来完成,就会减少计算量,该程序即可以在简单计算器键面下进行简单运算,也可以在科学计算器键面下进行高级的科学计算。并且可以分别计算弧度、角度的三角函数的计算等较为复杂的运算。1 科学型计算器系统概念1.1 设计科学型计算器系统的背景人们在日常学习、工作和生活过程中,都少不了与“计算”打交道,从简单的加、减、乘、除法运算,乘方、开方运算,到复杂正弦、余弦、正切、余切运算,组合运算等,差以及人工运算造成的运算错误等。为了解决以上问题,便用软件方法设计了科学计算器系统。通过使用本系统,只需要进行简单
10、的输入,即可得到相应的结果,给人们的运算带来了极大的方便。常用的计算器有简易版和科学计算器两种模式。简易版的计算器不支持表达式运算,每次只能输入一个数据或者运算符来计算,而科学计算器除了容纳简易版计算器的功能外,还支持表达式运算,用户可以输入一个合法的算术表达式来得到所需的结果。1.2 科学型计算器的发展史1666年,在英国 Samuel Morland发明了一部可以计算加数及减数的机械计数机。1673 年, Gottfried Leibniz 制造了一部踏式 (stepped)圆柱形转轮的计数机 ,叫“Stepped 1694年,Gottfried Leibniz ,把巴斯卡的Pascale
11、ne 改良,制造了一部可以计算乘数的机器,它仍然是用齿轮及刻度盘操作。1775年,The third Earl of Stanhope 发明了一部与 Leibniz相似的乘法计算器。1893年,第一部四功能计算器被发明。1931年,Vannever Bush 发明了一部可以解决差分程序的计数机,这机器可以解决一些令数学家,科学家头痛的复杂差分程序。1935年,IBM International Business Machine Corporation 引入 IBM ()部有算术部件及可在 1秒钟内计算乘数的穿孔计算机器。 它对科学及商业的计算起很大的作用。总共制造了 1500 部。1937年,
12、Alan Turing 想出了一个 “通用机器(Universal Machine)” 的概念,可以执行任何的算法,形成了一个“可计算(computability)”的基本概念。Turing 的概念比其它同类型的发明为好,因为他用了符号处理(symbol processing) 的概念。51939年 11月,John Vincent Atannsoff 与 John Berry 制造了一部 16第一部用真空管计算的机器。1939-40年,Schreyer 完成了用真空管的 10位加数器,以及用氖气灯(霓虹灯)的存贮器。Bell Labs, Samuel Williams Stibitz及 年1
13、在Complex Number I(ModelI Relay Calculator” 1941年夏季,Atanasoff及 Berry完成了一部专为解决联立线性方程系统(system ofsimultaneous linear equations) 的计算器,后来叫做“ABC (Atanasoff-Berry )它有 60个 50位的存贮器,以电容器(capacitories)的形式安装在 2个旋转的鼓上,时钟速度是 60Hz。1941年 2月,Zuse V3(后来叫 )它亦是用浮点操作,有7个位的指数,14位的尾数,以及一个正负号。存贮器可以贮存64个字,所以需要 1400个断电器。它有多于
14、 1200个的算术及控制部件,而程序编写,输入,输出的与 Z1 相同。Howard H. Aiken“ASCC Mark Mark I Automatic,年1月Sequence - Controlled Calculator Mark Haward Mark 5顿 1946年,第一台电子数字积分计算器(ENIAC)在美国建造完成。1949年,英国建造完成延迟存储电子自动计算器(EDSAC)1952年,第一台“储存程序计算器”诞生。1959年,第一台小型科学计算器 620研制成功。2 系统需求2.1 设计分析2.1.1 可行性分析伴随着经济全球化,计算机的普及发展,软件行业在社会占着举足轻重的
15、作用。我们在学校生活中常会遇到一些繁杂的数值运算,我们必须要用到科学计算器,所以便着手开发了这个计算器程序,既紧随科技发展的前沿,又方便了我们的生活,具有一定的现实意义。62.1.2 需求分析本软件主要用于计算机 Windows XP以上的用户使用,这次课程设计一般是实现简单计算器的功能。需要程序实现:加减乘除,开方,平方,倒数等运算功能;还要实现数据的输入,输出,计算,显示及程序退出等功能。另外还可以实现多种科学计算的功能,如:三角函数的计算,对数指数的计算,二、八、十、十六进制的转换等。2.2 开发环境2.2.1 运行环境系 统 是 在 VC+6.0 环 境 下 开 发 的 , 在 Win
16、dows98/Windows2000/WindowsNT/Windows XP平台下运行均可。2.2.2 开发工具语言Visual C+ 6.02.2.3 关于Visual C+ 6.0,简称VC 或者 VC6.0,是微软推出的一款编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。Visual C+是一个功能强大的可视化软 1993 年 Microsoft公司推出 Visual C+1.0Visual C+已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了 VisualC+.NET(Visual ,但它的应用有很大的局限性,只适用于 Windows 、Windows XP和
17、Windows 。所以实际中,更多的是以 Visual C+6.0为平台。Visual C+6.0 由 Microsoft 开发, 它不仅是一个 C+ 编译器,而且是一个基于Windows 操作系统的可视化集成开发环境(integrated development environment,Visual C+6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard 等开发工具。 这些组件通过一个名为 Developer Studio的组件集成为和谐的开发环境。Microsoft 的主力软件产品。Visual C+是一个功能强大的可视化软件开发 199
18、3 年 Microsoft 公司推出 Visual C+1.0VisualC+已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了 VisualC+.NET(Visual Windows 2000,WindowsXP 和 Windows 。所以实际中,更多的是以 Visual C+6.0为平台。Visual C+6.0它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代(stdafx.h)功能及累加连结()著称。这些特征明显缩短程序编辑、编译及连结的时间花费,在大型软件计划上尤其显著。7问 源代码编辑器,资源编辑器和使用内部调试器,并且可以创建项目文件。Visua
19、lC+6.0 VisualC+6.0 集成环境中轻松地完成创建源文件、编辑资源以及对程序的编译、连接和调试VC+6.0 是 Windows XP或 Windows NT下的一个应用程序,本身 Windows Windows NT的要求是一致的。VC+6.0 系统可以在一张 CD Visual Studio (Visual C+VisualFoxpro)”等产品的第一张 CD 盘上。一般都有一个 VC 的自动安装程序,也可以执行VC+6.0目录下的 Setup.exe,在安装包的提示下进行,对初学者可采用“典型安装”方式。在安装好 VC6.0 CD 盘重新执行 Setup.exe 安装程序,安装
20、程序会检测当前系统安装VC6.0 的组件,用户单击“添加/删除”按钮后,在“安装维护”对话框中选定要与一般的应用软件一样,有以下两种启动方式:(1)通过“开始”按钮,选择“程序”菜单,然后打开“Microsoft Visual C+6.0中文版”子菜单中的“Microsoft Visual C+6.0中文版”程序。(2)用户也可以使用命令行启动VC,单击“开始”按钮后选择“运行”命令,在“运行”对话框中输入C:program FilesMicrosoft Visual (按默认盘符和路径安装即可)。3 系统设计3.1 功能说明3.1.1 系统总体功能分析它的设计按软件工程的方法进行,系统具有良
21、好的界面;必要的交互信息;简约美观的效果。使用人员能快捷简单地进行操作。即可单机按钮进行操作,也可直接通过键盘直接输入。即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。(1)包含的功能有:加、减、乘、除运算,开方、求倒数等功能。(2)计算器上有数字 09,加、减、乘、除等。(3)制定高级按钮控件,该按钮具有不规则的形状,可以根据用户鼠标的位置和单击状态的不同,显示不同的颜色。(4)制定高级编辑控件,该编辑控件可以指定文本文字的字体和颜色。(5)输入的原始数据、运算中间数据和结果都显示在窗口顶部的同一个标签中。(6)实现对话框的扩展功能。(7)计算
22、功能基本上是用系统内部函数。8(8)程序可以能自动判断输入数据的正确性,保证不出现多于一个小数点、以 0 开头等不正常现象。(9)“CE”按钮可以清除所有已输入的数据从头计算3.1.2 系统功能本系统需要实现以下功能:加、减、乘、除、余运算、倒数、乘方运算、开方运算、正弦函数运算、余弦函数运算、正切函数运算、余切函数运算、反正弦函数运算、反余弦函数运算、反正切函数运算、反余切函数运算,各进制之间的转换,能输入正负数、小数,具有清零、退格功能,具有连续运算的能力。3.2 系统大概3.2. 1设计思路利用 VC+6.0 中的应用程序向导( AppWizard)工具创建 Windows 应用程序。A
23、ppWizard 在创建新项目时提供了应用程序框架,自动生成框架程序的源文件,用户不 AppWizard 提供的应用程序框架的基础上,进行创建对话框,丰富用户界面,添加控件等操作,然后为所建好的用户界面增加响应消息,以及完成运算所需要的代码。3.2.2 计算器运算流程图图 3-1计算器运算流程图94 系统的实现4.1 窗口的设计4.1.1 设计步骤打开 Microsoft Visual C+ 6.0,在文件中点击新建,在弹出框内选择 MFC工程,输入工程名 TestCalculatorDemo 及其所在位置,点击确定,如图4-1 所示。图 4-1 新建 MFC 工程将弹出 MFC AppWiz
24、ard-step 1对话框,选择基本对话框,点击完成,如图 4-2 所示。10图 4-2 基本对话框这样,MFC AppWizard就建立了一个基于对话窗口的程序框架,如图 4-3 所示。图 4-3 新建的对话框创建控件1)在图 4-4 所示的 Resoure View 选项卡中打开 Dialog 资源组,双击 IDD_11放控件,包括编辑框和按钮的创建。按钮的创建以“1”为例进行介绍,其他按钮的创建可参照此进行操作。图 4-4 TestCalculatorDemo资源组在图 4-3 中 Controls 的编辑框按钮上单击鼠标左键,在对话框编辑窗口上合适的位置按下鼠标左键并拖动鼠标画出一个大
25、小合适的编辑框。在编辑框上单击鼠标右键,在弹出的快捷莱单中选择属性选项,此时弹出Edit 属性对话框,如图4-5 所示,在该对话框中输入 ID属性。图 4-5 Edit 属性在图 4-6 中 Controls 的“Button”按钮上单击鼠标左键,在对话框上的合适的位置上按下鼠标左键并拖动鼠标画出一个大小合适的下压式按钮。在按钮上单击鼠标右键,在弹出的快捷菜单中选择属性选项,此时也弹出 Push Button 属性对话框,如图 4-7 所示,在该对话框中输入控件的 ID值和标题属性。12图 4-7 Push Button按照上面的操作过程编辑其他按钮和编辑框等对象的属性。连接变量和代码1) 给
26、编辑框连接变量。在编辑框上单击鼠标右键,在弹出菜单中选择 ClassWizard MFC ClassWizard Member Variables 4-8 所示。图 4-8 MFC ClassWizard对话框中的 Menber Variable选项卡在 Control IDs列表框中选择 IDC_SHOW,单击Add Variables按钮,在弹出的对话框中连接变量 m_num。变量类型设定为 doubel型。如图 4-9 所示。13图 4-9 m_num 属性设置2) 给按钮连接代码。在按钮上单击鼠标右键,选择 ClassWizard 菜单项,在弹出的对话框中选择 Messages Map
27、s 选项卡,然后在 Object IDs 列表框中选择,在Messages列表框中选择 BN_CLICKED件,如图 4-10 所示。图 4-10“1”按钮链接代码对话框4.1.2 部分控件的意义如表 4-11(只列举一部分控件)14IDCAPTIONMemberm_0m_9m_ADDm_POINTm_PowIDC_0IDC_9IDC_ADDIDC_POINTIDC_POWIDC_SQRTIDC_DIVIDIDC_CE.xySqrt/m_SQRTm_DIVIDm_CEm_BACKSPACEm_LNIDC_LnLnSinCosTan=IDC_SinIDC_CosIDC_TanIDC_Equalm
28、_SINm_COSm_TANm_EQUAL4.1.3 部分操作截图计算器界面:求 sin30:154.2 程序核心代码4.2.1 二进制转换代码void CCalculatorDemoDlg:OnTo2()/ TODO: Add your control notification handler code hereif (!b_Start)return;char temp10;GetDlgItemText(IDC_EDIT_SHOW,temp,10);int num=atoi(temp);itoa(num,temp,2);SetDlgItemText(IDC_EDIT_SHOW,temp);4
29、.2.2 backspack函数代码oid CCalculatorDemoDlg:OnBtnSpace()/ TODO: Add your control notification handler code hereif (!b_Start)16return;double num;CString temp;int len;CHAR temp_ch32;GetDlgItemText(IDC_EDIT_SHOW,temp);/AfxMessageBox(temp);num=atof(temp);sprintf(temp_ch,%g,num);num=0;/AfxMessageBox(temp_ch
30、);len=strlen(temp_ch);int te_i=len-1;if(temp_chte_i=.)te_i-=1,b_Hasport=FALSE;temp_chte_i=0;/AfxMessageBox(temp_ch);if (strlen(temp_ch)=0)temp_ch0=0;temp_ch1=0;/sscanf(temp_ch,%lf,&num);temp.Format(%g,num);/AfxMessageBox(temp);SetDlgItemText(IDC_EDIT_SHOW,b_Hasport?temp:temp+.);4.2.3 arcsin函数void CC
31、alculatorDemoDlg:OnArcsin()/ TODO: Add your control notification handler code hereif (!b_Start)return;double num;double pi=3.1415926535;CString temp;17GetDlgItemText(IDC_EDIT_SHOW,temp);num=atof(temp);num=asin(num);num=(num/pi)*180;temp.Format(%lf,num);if (temp.Find(.)=-1)SetDlgItemText(IDC_EDIT_SHO
32、W,temp+.);elseSetDlgItemText(IDC_EDIT_SHOW,temp);4.2.4 log10函数代码void CCalculatorDemoDlg:OnLog10()/ TODO: Add your control notification handler code hereif (!b_Start)return;double num;CString temp;GetDlgItemText(IDC_EDIT_SHOW,temp);num=atof(temp);num=log(num);temp.Format(%lf,num);if (temp.Find(.)=-1)
33、SetDlgItemText(IDC_EDIT_SHOW,temp+.);elseSetDlgItemText(IDC_EDIT_SHOW,temp);4.2.5 函数代码void CCalculatorDemoDlg:OnPi()/ TODO: Add your control notification handler code hereCString tem_i;tem_i.Format(%f,3.1415926535);CString temp;/第一次输入if (!b_Start)cs_Numm_i=tem_i;18b_Start=TRUE;SetDlgItemText(IDC_EDI
34、T_SHOW,cs_Numm_i);if (!b_Hasport)GetDlgItemText(IDC_EDIT_SHOW,temp);temp+=.;SetDlgItemText(IDC_EDIT_SHOW,temp);return;cs_Numm_i+=tem_i;SetDlgItemText(IDC_EDIT_SHOW,cs_Numm_i);if (!b_Hasport)GetDlgItemText(IDC_EDIT_SHOW,temp);temp+=.;SetDlgItemText(IDC_EDIT_SHOW,temp);5 系统运行5.1 运行界面195.2 测试5.2.1 测试研究
35、与选择及各功能键是否能正常实用。5.2.2 测试环境测试系统:Windows98/Windows2000/Windows NT/Windows XP测试工具:Visual Studio C+ 6.0(中文版)5.3 程序代码/ CalculatorDemoDlg.cpp : implementation file/ Download by #include stdafx.h#include TestCalculatorDemo.h#include CalculatorDemoDlg.h#include math.h#include string#ifdef _DEBUG#define new
36、DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CCalculatorDemoDlg dialogCCalculatorDemoDlg:CCalculatorDemoDlg(CWnd* pParent /*=NULL*/): CDialog(CCalculatorDemoDlg:IDD, pParent)/AFX_DATA_INIT(CCalculatorDemoDlg)/ NOTE: the ClassWizard will add member initialization here/AFX_DATA_INIT
37、void CCalculatorDemoDlg:DoDataExchange(CDataExchange* pDX)20CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CCalculatorDemoDlg)/ NOTE: the ClassWizard will add DDX and DDV calls here/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CCalculatorDemoDlg, CDialog)/AFX_MSG_MAP(CCalculatorDemoDlg)ON_BN_CLICKED(IDC_BTN_NO1, OnBtnN
38、o1)ON_BN_CLICKED(IDC_BTN_NO2, OnBtnNo2)ON_BN_CLICKED(IDC_BTN_NO3, OnBtnNo3)ON_BN_CLICKED(IDC_BTN_NO4, OnBtnNo4)ON_BN_CLICKED(IDC_BTN_NO5, OnBtnNo5)ON_BN_CLICKED(IDC_BTN_NO6, OnBtnNo6)ON_BN_CLICKED(IDC_BTN_NO7, OnBtnNo7)ON_BN_CLICKED(IDC_BTN_NO8, OnBtnNo8)ON_BN_CLICKED(IDC_BTN_NO9, OnBtnNo9)ON_BN_CLI
39、CKED(IDC_BTN_NO0, OnBtnNo0)ON_BN_CLICKED(IDC_BTN_PORT, OnBtnPort)ON_BN_CLICKED(IDC_BTN_ADD, OnBtnAdd)ON_BN_CLICKED(IDC_BTN_SUB, OnBtnSub)ON_BN_CLICKED(IDC_BTN_MUL, OnBtnMul) OnBtnDiv)ON_BN_CLICKED(IDC_BTN_EQUEL, OnBtnEquel)ON_BN_CLICKED(IDC_BTN_PERCENT, OnBtnPercent)ON_BN_CLICKED(IDC_BTN_DOWN, OnBtn
40、Down)ON_BN_CLICKED(IDC_BTN_NEQUA, OnBtnNequa)ON_BN_CLICKED(IDC_BTN_SPACE, OnBtnSpace)ON_BN_CLICKED(IDC_BTN_C, OnBtnC)ON_BN_CLICKED(IDC_BTN_SQRT, OnBtnSqrt)ON_BN_CLICKED(IDC_SIN, OnSin)ON_BN_CLICKED(IDC_COS, OnCos)ON_BN_CLICKED(IDC_TAN, OnTan)ON_BN_CLICKED(IDC_COT, OnCot)ON_BN_CLICKED(IDC_EXP, OnExp)
41、 OnLog)ON_BN_CLICKED(IDC_LOG10, OnLog10)ON_BN_CLICKED(IDC_ARCSIN, OnArcsin)ON_BN_CLICKED(IDC_ABS, OnAbs)ON_BN_CLICKED(IDC_PI, OnPi)ON_BN_CLICKED(IDC_TO16, OnTo16)ON_BN_CLICKED(IDC_TO2, OnTo2)21ON_BN_CLICKED(IDC_TO8, OnTo8)ON_BN_CLICKED(IDC_ACOS, OnAcos)ON_BN_CLICKED(IDC_TO4, OnTo4)ON_BN_CLICKED(IDC_
42、ATAN, OnAtan)ON_BN_CLICKED(IDC_ACOT, OnAcot)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CCalculatorDemoDlg message handlersvoid CCalculatorDemoDlg:OnBtnNo1()/ TODO: Add your control notification handler code herePutIntoNum(1);void CCalculatorDemoDlg:OnBtnNo2()/ TODO: Add your control notification handler code he
43、rePutIntoNum(2);void CCalculatorDemoDlg:OnBtnNo3()/ TODO: Add your control notification handler code herePutIntoNum(3);void CCalculatorDemoDlg:OnBtnNo4()/ TODO: Add your control notification handler code herePutIntoNum(4);void CCalculatorDemoDlg:OnBtnNo5()/ TODO: Add your control notification handle
44、r code herePutIntoNum(5);void CCalculatorDemoDlg:OnBtnNo6()/ TODO: Add your control notification handler code here22PutIntoNum(6);void CCalculatorDemoDlg:OnBtnNo7()/ TODO: Add your control notification handler code herePutIntoNum(7);void CCalculatorDemoDlg:OnBtnNo8()/ TODO: Add your control notifica
45、tion handler code herePutIntoNum(8);void CCalculatorDemoDlg:OnBtnNo9()/ TODO: Add your control notification handler code herePutIntoNum(9);void CCalculatorDemoDlg:OnBtnNo0()/ TODO: Add your control notification handler code here/ TODO: Add your control notification handler code here/如果第一次输入数字if (cs_
46、Numm_i=0)return ;cs_Numm_i+=0;SetDlgItemText(IDC_EDIT_SHOW,cs_Numm_i);if (!b_Hasport)CString temp;GetDlgItemText(IDC_EDIT_SHOW,temp);temp+=.;SetDlgItemText(IDC_EDIT_SHOW,temp);void CCalculatorDemoDlg:OnBtnPort()/已有小数点时23if (b_Hasport)return;/无小数点cs_Numm_i+=.;b_Hasport=TRUE;b_Start=TRUE;SetDlgItemTex
47、t(IDC_EDIT_SHOW,cs_Numm_i);/四则运算符void CCalculatorDemoDlg:OnBtnAdd()if (!b_Start)return;if (en_LastSignl=en_none)en_LastSignl=en_add;RunOperation(en_LastSignl);en_LastSignl=en_add;void CCalculatorDemoDlg:OnBtnSub()if (!b_Start)return;/ TODO: Add your control notification handler code hereif (en_LastS
48、ignl=en_none)en_LastSignl=en_sub;RunOperation(en_LastSignl);en_LastSignl=en_sub;24void CCalculatorDemoDlg:OnBtnMul()if (!b_Start)return;if (en_LastSignl=en_none)cs_Num1=1;en_LastSignl=en_mul;RunOperation(en_LastSignl);en_LastSignl=en_mul;void CCalculatorDemoDlg:OnBtnDiv()if (!b_Start)return;if (en_L
49、astSignl=en_none)cs_Num1=1;en_LastSignl=en_div;RunOperation(en_LastSignl);en_LastSignl=en_div;void CCalculatorDemoDlg:OnBtnEquel()/ TODO: Add your control notification handler code hereRunOperation(en_LastSignl);/*特殊*en_LastSignl=en_none;b_Start=TRUE;BOOL CCalculatorDemoDlg:OnInitDialog()CDialog:OnI
50、nitDialog();25/ TODO: Add extra initialization hereInitAllDate();return TRUE; / return TRUE unless you set the focus to a control/ EXCEPTION: OCX Property Pages should return FALSEvoid CCalculatorDemoDlg:InitAllDate()en_LastSignl=en_none;b_Hasport=FALSE;b_Start=FALSE;b_Hasmul=FALSE;b_Hasdiv=FALSE;cs
51、_Num0=0;cs_Num1=0;m_i=0;SetDlgItemText(IDC_EDIT_SHOW,cs_Numm_i+.);void CCalculatorDemoDlg:RunOperation(eum_signl e_signl)/ TODO: Add your control notification handler code heredouble sum;double nAdd1;double nAdd2;nAdd1=atof(cs_Num0);nAdd2=atof(cs_Num1);/sum=nAdd1+nAdd2;switch(e_signl)case en_add:sum
52、=nAdd1+nAdd2;break;case en_sub:sum=nAdd1-nAdd2;break;case en_mul:sum=nAdd1*nAdd2;break;case en_div:sum=nAdd1/nAdd2;26break;cs_Num0.Format(%g,sum);SetDlgItemText(IDC_EDIT_SHOW,cs_Num0);if (!b_Hasport & -1=cs_Num0.Find(.)CString temp;GetDlgItemText(IDC_EDIT_SHOW,temp);temp+=.;SetDlgItemText(IDC_EDIT_S
53、HOW,temp);m_i = 1;b_Hasport=FALSE;b_Start=FALSE;cs_Numm_i=0;/void CCalculatorDemoDlg:RunOperation(eum_signl en_signl)/void CCalculatorDemoDlg:OnBtnC()/ TODO: Add your control notification handler code hereInitAllDate();/ 根号void CCalculatorDemoDlg:OnBtnSqrt()/ TODO: Add your control notification hand
54、ler code hereif (!b_Start)return;double num;CString temp;GetDlgItemText(IDC_EDIT_SHOW,temp);num=atof(temp);num=sqrt(num); /其他部分功能计算只需要更改此处,更改成相应函数即可temp.Format(%lf,num);27if (temp.Find(.)=-1)SetDlgItemText(IDC_EDIT_SHOW,temp+.);elseSetDlgItemText(IDC_EDIT_SHOW,temp);/ %void CCalculatorDemoDlg:OnBtnP
55、ercent()/ TODO: Add your control notification handler code hereif (!b_Start)return;double num;CString temp;GetDlgItemText(IDC_EDIT_SHOW,temp);num=atof(temp);num=num/100;temp.Format(%lf,num);if (temp.Find(.)=-1)SetDlgItemText(IDC_EDIT_SHOW,temp+.);elseSetDlgItemText(IDC_EDIT_SHOW,temp);/ 1/xvoid CCal
56、culatorDemoDlg:OnBtnDown()/ TODO: Add your control notification handler code hereif (!b_Start)return;double num;CString temp;GetDlgItemText(IDC_EDIT_SHOW,temp);num=atof(temp);num=1/num;temp.Format(%lf,num);if (temp.Find(.)=-1)SetDlgItemText(IDC_EDIT_SHOW,temp+.);else28SetDlgItemText(IDC_EDIT_SHOW,te
57、mp);/ +-void CCalculatorDemoDlg:OnBtnNequa()/ TODO: Add your control notification handler code hereif (!b_Start)return;double num;CString temp;GetDlgItemText(IDC_EDIT_SHOW,temp);num=atof(temp);num/=abs(num);temp.Format(%lf,num);if (temp.Find(.)=-1)SetDlgItemText(IDC_EDIT_SHOW,temp+.);elseSetDlgItemT
58、ext(IDC_EDIT_SHOW,temp);/ SetDlgItemText(IDC_EDIT_SHOW , b_Hasport ? temp:temp+.);/ 退格键void CCalculatorDemoDlg:OnBtnSpace()/ TODO: Add your control notification handler code hereif (!b_Start)return;double num;CString temp;int len;CHAR temp_ch32;GetDlgItemText(IDC_EDIT_SHOW,temp);/AfxMessageBox(temp)
59、;num=atof(temp);sprintf(temp_ch,%g,num);num=0;/AfxMessageBox(temp_ch);len=strlen(temp_ch);29int te_i=len-1;if(temp_chte_i=.)te_i-=1,b_Hasport=FALSE;temp_chte_i=0;/AfxMessageBox(temp_ch);if (strlen(temp_ch)=0)temp_ch0=0;temp_ch1=0;/sscanf(temp_ch,%lf,&num);temp.Format(%g,num);/AfxMessageBox(temp);Set
60、DlgItemText(IDC_EDIT_SHOW,b_Hasport?temp:temp+.);void CCalculatorDemoDlg:OnSin()/ TODO: Add your control notification handler code hereif (!b_Start)return;double num;double pi=3.1415926535;CString temp;GetDlgItemText(IDC_EDIT_SHOW,temp);num=atof(temp);num=(num*pi)/180;num=sin(num);temp.Format(%lf,nu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学三年级下册(三下)苏教版数学期中测试卷.2
- 2025年小升初数学专项训练-集合(含答案)
- 2024国际设计师考试全景式复习试题及答案
- 2024年设计师创意能力考核题及答案
- 助理广告师考试目标导向试题及答案
- 侧方停车考试题库及答案
- 信托业培训试题及答案
- 2024年纺织品新材料趋势试题及答案
- 新能源知识竞赛考试试卷及答案(二)
- 广告设计师考试2024年外部环境影响试题及答案
- 妇科一病一品护理汇报
- 大学生心理健康教育-大学生心理健康
- 精密干涉传感技术与应用 - 干涉条纹与zernike多项式
- 2024住院患者静脉血栓栓塞症预防护理与管理专家共识要点(全文)
- 2024-2030年中国有机肥产业应用态势及投资盈利预测报告
- 钢结构工程施工应急处置措施
- 施工损坏赔偿协议书
- 2024年湖北省十堰市荆楚初中联盟八年级中考模拟预测生物试题
- 2024年北京东城区高三二模地理试题和答案
- 幼儿园一等奖公开课:大班绘本《爱书的孩子》课件
- 中国城市建设史智慧树知到期末考试答案章节答案2024年西安工业大学
评论
0/150
提交评论