




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 27/27(Java)科学型计算器的开发与实现 淮北师范大学 科学型计算器的开发与实现 学院计算机科学与技术 专业计算机科学与技术(师范) 学生姓名 学号 指导教师姓名 年月日 科学型计算器的开发与实现 : 指导教师: Development and implementation of scientific calculator Candidate: Supervisor: Associate Professor Abstract:Currently, the application of scientific calculator is very extensive. It can not
2、 be get away from the service of scientific calculator in the field of research, production, national defense, culture, hygiene, even family life. By using scientific calculator, the tedious artificial operation, the larger errors and operational mistakes, which are caused by artificial operation, c
3、an be avoided. It brings much convenience to peoples operation. This article mainly introduces a scientific calculator system implementing from the perspective of software. It includes the overview and developmental principle of scientific calculator system. It also contains the primary functions, w
4、hich have been implemented, the design and implemental technology of sub-modules. Among them, it forces on introducing the usage of dialog box and controls as well as the implementation of mathematic function without using library function, but computing method. The system needs to achieve the follo
5、wing functions : adds, subtracts, multiplies, divides, the remainder operation, the countdown operation,radicand, power calculation, the log and index calculation, the operation of sine function, cosine function, tangent function, cotangent function, arc sine function, arc cosine function , arc tang
6、ent function and arc cotangent function, permutations and combinations operation, the conversion between radian and angle, the capability of inputting decimal, positive and negative numbers, the reset and backspace function, continuous operational capacity. Key words: Dialog box; Controls; Computing
7、 method 目录 引言 1 科学型计算器系统概述 (1) 1.1设计科学型计算器系统的背景 (1) 1.2科学型计算器的发展史 (1) 2系统需要 (2) 2.1设计分析 (2) 2.1.1可行性分析 (2) 2.1.2需求分析 (2) 2.2开发环境 (2) 2.2.1运行环境 (2) 2.2.2开发工具 (2) 2.2.3关于visual c+ 6.0 (2) 3系统设计 (3) 3.1功能说明 (3) 3.1.1系统总体功能分析 (3) 3.1.2系统功能 (3) 3.2系统大概 (3) 3.2.1设计思路 (3) 3.2.2计算器运算流程图 (3) 4系统的实现 . (4) 4.1
8、窗口的设计 (4) 4.1.1设计步骤 (4) 4.1.2控件的意义 (4) 4.1.3部分操作截图 (4) 4.2程序核心代码 (4) 4.2.1数字键核心代码 (4) 4.2.2计算类型函数的核心代码 (4) 二进制转换代码 (4) backspace函数代码 (4) arcsin函数代码 (4) log10函数代码 (4) 函数代码 (4) 5系统运行与测试 (5) 5.1运行界面 (5) 5.2测试 (5) 5.2.1测试研究与选择 (5) 5.2.2测试环境 (5) 5.3程序代码 (5) 总结 引言 本设计设计主要在运算过程中,如果通过计算器来完成,就会减少计算量,该程序即可以在简
9、单计算器键面下进行简单运算,也可以在科学计算器键面下进行高级的科学计算。并且可以分别计算弧度、角度的三角函数的计算等较为复杂的运算。 1 科学型计算器系统概念 1.1设计科学型计算器系统的背景 人们在日常学习、工作和生活过程中,都少不了与“计算”打交道,从简单的加、减、乘、除法运算,乘方、开方运算,到复杂正弦、余弦、正切、余切运算,组合运算等,总会遇到许多关于计算方面的有问题,如:人工运算的繁琐,人工运算带来的较大误差以及人工运算造成的运算错误等。为了解决以上问题,便用软件方法设计了科学计算器系统。通过使用本系统,只需要进行简单的输入,即可得到相应的结果,给人们的运算带来了极大的方便。常用的计
10、算器有简易版和科学计算器两种模式。简易版的计算器不支持表达式运算,每次只能输入一个数据或者运算符来计算,而科学计算器除了容纳简易版计算器的功能外,还支持表达式运算,用户可以输入一个合法的算术表达式来得到所需的结果。 1.2科学型计算器的发展史 1666年,在英国Samuel Morland发明了一部可以计算加数及减数的机械计数机。 1673年, Gottfried Leibniz制造了一部踏式(stepped)圆柱形转轮的计数机,叫“Stepped Reckoner”,这部计算器可以把重复的数字相乘,并自动地加入加数器里。 1694年,德国数学家,Gottfried Leibniz,把巴斯卡的
11、Pascalene 改良,制造了一部可以计算乘数的机器,它仍然是用齿轮及刻度盘操作。 1775年,The third Earl of Stanhope发明了一部与Leibniz相似的乘法计算器。 1893年,第一部四功能计算器被发明。 1931年,Vannever Bush发明了一部可以解决差分程序的计数机,这机器可以解决一些令数学家,科学家头痛的复杂差分程序。 1935年,IBM (International Business Machine Corporation)引入 IBM 601”,它是一部有算术部件及可在1秒钟内计算乘数的穿孔计算机器。它对科学及商业的计算起很大的作用。总共制造了1
12、500 部。 1937年,Alan Turing 想出了一个“通用机器(Universal Machine)”的概念,可以执行任何的算法,形成了一个“可计算(computability)”的基本概念。Turing 的概念比其它同类型的发明为好,因为他用了符号处理(symbol processing) 的概念。 1939年11月,John Vincent Atannsoff与John Berry制造了一部16位加数器。它是第一部用真空管计算的机器。 1939-40年,Schreyer完成了用真空管的10位加数器,以及用氖气灯(霓虹灯)的存贮器。 1940年1月,在Bell Labs, Samue
13、l Williams 及Stibitz完成了一部可以计算复杂数字的机器,叫“复杂数字计数机(Complex Number Calculator)”,后来改称为“断电器计数机型号I (Model I Relay Calculator)”。它用电话开关部分做逻辑部件:145个断电器,10个横杠开关。数字 用“Plus 3BCD”代表。 1941年夏季,Atanasoff及Berry完成了一部专为解决联立线性方程系统(system of simultaneous linear equations) 的计算器,后来叫做“ABC (Atanasoff-Berry Computer)”,它有60个50位的
14、存贮器,以电容器(capacitories)的形式安装在2个旋转的鼓上,时钟速度是60Hz。 1941年2月,Zuse完成“V3”(后来叫Z3),是第一部操作中可编写程序的计数机。它亦是用浮点操作,有7个位的指数,14位的尾数,以及一个正负号。存贮器可以贮存64个字,所以需要1400个断电器。它有多于1200个的算术及控制部件,而程序编写,输入,输出的与Z1相同。 1943年1月Howard H. Aiken完成“ASCC Mark I”(自动按序控制计算器Mark I,Automatic Sequence - Controlled Calculator Mark I),亦称“Haward M
15、ark I”。这部机器有51尺长,重5顿,由 750,000部份合并而成。它有72个累加器,每一个有自己的算术部件,及23位数的寄存器。 1946年,第一台电子数字积分计算器(ENIAC)在美国建造完成。 1949年,英国建造完成延迟存储电子自动计算器(EDSAC) 1952年,第一台“储存程序计算器”诞生。 1959年,第一台小型科学计算器IBM620研制成功。 2 系统需求 2.1设计分析 2.1.1可行性分析 伴随着经济全球化,计算机的普及发展,软件行业在社会占着举足轻重的作用。我们在学校生活中常会遇到一些繁杂的数值运算,我们必须要用到科学计算器,所以便着手开发了这个计算器程序,既紧随科
16、技发展的前沿,又方便了我们的生活,具有一定的现实意义。 2.1.2 需求分析 本软件主要用于计算机Windows XP以上的用户使用,这次课程设计一般是实现简单计算器的功能。需要程序实现:加减乘除,开方,平方,倒数等运算功能;还要实现数据的输入,输出,计算,显示及程序退出等功能。另外还可以实现多种科学计算的功能,如:三角函数的计算,对数指数的计算,二、八、十、十六进制的转换等。 2.2 开发环境 2.2.1 运行环境 系统是在VC+6.0环境下开发的,在Windows98/Windows2000/Windows NT/Windows XP平台下运行均可。 2.2.2 开发工具 C+语言 2.2
17、.3 关于Visual C+ 6.0 Visual C+ 6.0,简称VC或者VC6.0,是微软推出的一款C+编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。Visual C+是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C+1.0后,随着其新版本的不断问世,Visual C+已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了Visual C+.NET(Visual C+7.0),但它的应用有很大的局限性,只适用于Windows 2000、Windows XP和Windows NT4.0。所以实际中,更多的是以Visual C+6.
18、0为平台。 Visual C+6.0由Microsoft开发, 它不仅是一个C+ 编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。Visual C+6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。Microsoft的主力软件产品。Visual C+是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C+1.0后,随着其
19、新版本的不断问世,Visual C+已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了Visual C+.NET(Visual C+7.0),但它的应用的很大的局限性,只适用于Windows 2000,Windows XP和Windows NT4.0。所以实际中,更多的是以Visual C+6.0为平台。 Visual C+6.0以拥有“语法高亮”,自动编译功能以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及创建预编译头文件(stdafx.h)、最小重建功能及累加连结(link)著称。这
20、些特征明显缩短程序编辑、编译及连结的时间花费,在大型软件计划上尤其显著。 该环境为用户提供了良好的可视化编程环境,程序员可以利用该开发环境轻松地访 问C+源代码编辑器,资源编辑器和使用内部调试器,并且可以创建项目文件。Visual C+6.0不仅包括编辑器,还包括许多有用组件,通过这些组件的协同工作,可以在Visual C+6.0集成环境中轻松地完成创建源文件、编辑资源以及对程序的编译、连接和调试等各项工作。VC+6.0是Windows 95/98、XP或Windows NT下的一个应用程序,本身对软件没有特殊要求。就是说它对环境的要求与Windows 95/98、Windows NT的要求是
21、一致的。VC+6.0系统可以在一张CD盘上,也可以在“Visual Studio (Visual C+、Visual Foxpro)”等产品的第一张CD盘上。一般都有一个VC的自动安装程序,也可以执行VC+6.0目录下的Setup.exe,在安装包的提示下进行,对初学者可采用“典型安装”方式。 在安装好VC6.0系统后,有时根据需要添加或删除某些部件,可插入CD盘重新执行Setup.exe安装程序,安装程序会检测当前系统安装VC6.0的组件,用户单击“添加/删除”按钮后,在“安装维护”对话框中选定要与一般的应用软件一样,有以下两种启动方式: (1)通过“开始”按钮,选择“程序”菜单,然后打开“
22、Microsoft Visual C+6.0中文版”子菜单中的“Microsoft Visual C+6.0中文版”程序。 (2)用户也可以使用命令行启动VC,单击“开始”按钮后选择“运行”命令,在“运行”对话框中输入C:program FilesMicrosoft Visual StudioVC98VC6.exe(按默认盘符和路径安装即可)。 3 系统设计 3.1 功能说明 3.1.1 系统总体功能分析 它的设计按软件工程的方法进行,系统具有良好的界面;必要的交互信息;简约美观的效果。使用人员能快捷简单地进行操作。即可单机按钮进行操作,也可直接通过键盘直接输入。即时准确地获得需要的计算的结果
23、,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。 (1)包含的功能有:加、减、乘、除运算,开方、求倒数等功能。 (2)计算器上有数字09,加、减、乘、除等。 (3)制定高级按钮控件,该按钮具有不规则的形状,可以根据用户鼠标的位置和单击状态的不同,显示不同的颜色。 (4)制定高级编辑控件,该编辑控件可以指定文本文字的字体和颜色。 (5)输入的原始数据、运算中间数据和结果都显示在窗口顶部的同一个标签中。 (6)实现对话框的扩展功能。 (7)计算功能基本上是用系统内部函数。 (8)程序可以能自动判断输入数据的正确性,保证不出现多于一个小数点、以0开头等不正常现象。 (9)“C E”
24、按钮可以清除所有已输入的数据从头计算 3.1.2 系统功能 本系统需要实现以下功能:加、减、乘、除、余运算、倒数、乘方运算、开方运算、正弦函数运算、余弦函数运算、正切函数运算、余切函数运算、反正弦函数运算、反余弦函数运算、反正切函数运算、反余切函数运算,各进制之间的转换,能输入正负数、小数,具有清零、退格功能,具有连续运算的能力。 3.2 系统大概 3.2. 1设计思路 利用VC+6.0中的应用程序向导(AppWizard)工具创建Windows应用程序。AppWizard在创建新项目时提供了应用程序框架,自动生成框架程序的源文件,用户不必从开头开始编写代码就能很快地构建出程序原型。在AppW
25、izard提供的应用程序框架的基础上,进行创建对话框,丰富用户界面,添加控件等操作,然后为所建好的用户界面增加响应消息,以及完成运算所需要的代码。 3.2.2 计算器运算流程图 图3-1计算器运算流程图 4 系统的实现 4.1 窗口的设计 4.1.1 设计步骤 打开Microsoft Visual C+ 6.0,在文件中点击新建,在弹出框内选择MFC AppWizardexe工程,输入工程名TestCalculatorDemo及其所在位置,点击确定,如图4-1所示。 图4-1新建MFC AppWizardexe工程 将弹出MFC AppWizard-step 1对话框,选择基本对话框,点击完成
26、,如图4-2所示。 这样,MFC AppWizard就建立了一个基于对话窗口的程序框架,如图4-3所示。 图4-3 新建的对话框 (1)创建控件 1)在图4-4所示的Resoure View选项卡中打开Dialog资源组,双击IDD_ TESTCALCULATORDEMO_DIALOG,在右边的窗口中显示出待编辑的对话框。开始摆放控件,包括编辑框和按钮的创建。按钮的创建以“1”为例进行介绍,其他按钮的创建可参照此进行操作。 图4-4 TestCalculatorDemo资源组 2)在图4-3中Controls的“编辑框”按钮上单击鼠标左键,在对话框编辑窗口上合适的位置按下鼠标左键并拖动鼠标画出
27、一个大小合适的编辑框。在编辑框上单击鼠标右键,在弹出的快捷莱单中选择属性选项,此时弹出Edit属性对话框,如图4-5所示,在该对话框中输入ID属性。 图4-5 Edit属性 3)在图4-6中Controls的“Button”按钮上单击鼠标左键,在对话框上的合适的位置上按下鼠标左键并拖动鼠标画出一个大小合适的下压式按钮。在按钮上单击鼠标右键,在弹出的快捷菜单中选择属性选项,此时也弹出Push Button属性对话框,如图4-7所示,在该对话框中输入控件的ID值和标题属性。 图4-7 Push Button 按照上面的操作过程编辑其他按钮和编辑框等对象的属性。 (2)连接变量和代码 1) 给编辑框
28、连接变量。在编辑框上单击鼠标右键,在弹出菜单中选择ClassWizard 菜单项,弹出MFC ClassWizard对话框,选择Member Variables选项卡,如图4-8所示。 图4-8 MFC ClassWizard对话框中的Menber Variable选项卡在Control IDs列表框中选择IDC_SHOW,单击Add Variables按钮,在弹出的对话框中连接变量m_num。变量类型设定为doubel型。如图4-9所示。 图4-9 m_num属性设置 2) 给“1”按钮连接代码。在“1”按钮上单击鼠标右键,选择ClassWizard菜单项,在弹出的对话框中选择Message
29、s Maps选项卡,然后在Object IDs列表框中选择IDC_ADD_BUTTON,在Messages列表框中选择BN_CLICKED项,即选择单击按钮事件,如图4-10所示。 图4-10“1”按钮链接代码对话框 4.1.2 部分控件的意义 如表4-11(只列举一部分控件) 4.1.3 部分操作截图计算器界面: 求sin30: 4.2 程序核心代码 4.2.1 二进制转换代码 void CCalculatorDemoDlg:OnTo2() / TODO: Add your control notification handler code here if (!b_Start) return
30、; char temp10; GetDlgItemText(IDC_EDIT_SHOW,temp,10); int num=atoi(temp); itoa(num,temp,2); SetDlgItemText(IDC_EDIT_SHOW,temp); 4.2.2 backspack函数代码 v oid CCalculatorDemoDlg:OnBtnSpace() / TODO: Add your control notification handler code here if (!b_Start) return; double num; CString temp; int len; C
31、HAR temp_ch32; GetDlgItemText(IDC_EDIT_SHOW,temp); /AfxMessageBox(temp); num=atof(temp); sprintf(temp_ch,%g,num); num=0; /AfxMessageBox(temp_ch); 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=
32、0; temp_ch1=0; / sscanf(temp_ch,%lf, temp.Format(%g,num); /AfxMessageBox(temp); SetDlgItemText(IDC_EDIT_SHOW,b_Hasport?temp:temp+.); 4.2.3 arcsin函数 void CCalculatorDemoDlg:OnArcsin() / TODO: Add your control notification handler code here if (!b_Start) return; double num; double pi=3.1415926535; CSt
33、ring temp; GetDlgItemText(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_SHOW,temp+.); else SetDlgItemText(IDC_EDIT_SHOW,temp); 4.2.4 log10函数代码 void CCalculatorDemoDlg:OnLog10() / TODO: Add your control notific
34、ation handler code here if (!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) SetDlgItemText(IDC_EDIT_SHOW,temp+.); else SetDlgItemText(IDC_EDIT_SHOW,temp); 4.2.5 函数代码 void CCalculatorDemoDlg:OnPi(
35、) / TODO: Add your control notification handler code here CString tem_i; tem_i.Format(%f,3.1415926535); CString temp; /第一次输入 if (!b_Start) cs_Numm_i=tem_i; b_Start=TRUE; SetDlgItemText(IDC_EDIT_SHOW,cs_Numm_i); if (!b_Hasport) GetDlgItemText(IDC_EDIT_SHOW,temp); temp+=.; SetDlgItemText(IDC_EDIT_SHOW
36、,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 运行界面 5.2 测试 5.2.1 测试研究与选择 测试过程中要判断是否成功,要分析程序界面的变化和计算数据的结果是否正确以及各功能键是否能正常实用。 5.2.2 测试环境 测试系统:Windows98/Windows2000/Win
37、dows NT/Windows XP 测试工具:Visual Studio C+ 6.0(中文版) 5.3 程序代码 / CalculatorDemoDlg.cpp : implementation file / Download by /doc/9f5f4ab3b9d528ea81c7794e.html #include stdafx.h #include TestCalculatorDemo.h #include CalculatorDemoDlg.h #include math.h #include string #ifdef _DEBUG #define new DEBUG_NEW #
38、undef THIS_FILE static char THIS_FILE = _FILE_; #endif / / CCalculatorDemoDlg dialog CCalculatorDemoDlg:CCalculatorDemoDlg(CWnd* pParent /*=NULL*/) : CDialog(CCalculatorDemoDlg:IDD, pParent) /AFX_DATA_INIT(CCalculatorDemoDlg) / NOTE: the ClassWizard will add member initialization here /AFX_DATA_INIT
39、 void CCalculatorDemoDlg:DoDataExchange(CDataExchange* pDX) CDialog:DoDataExchange(pDX); /AFX_DATA_MAP(CCalculatorDemoDlg) / NOTE: the ClassWizard will add DDX and DDV calls here /AFX_DATA_MAP BEGIN_MESSAGE_MAP(CCalculatorDemoDlg, CDialog) /AFX_MSG_MAP(CCalculatorDemoDlg) ON_BN_CLICKED(IDC_BTN_NO1,
40、OnBtnNo1) 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, OnBt
41、nNo9) ON_BN_CLICKED(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) ON_BN_CLICKED(IDC_BTN_DIV, OnBtnDiv) ON_BN_CLICKED(IDC_BTN_EQUEL, OnBtnEquel) ON_BN_CLICKED(IDC_BTN_PERCENT
42、, OnBtnPercent) ON_BN_CLICKED(IDC_BTN_DOWN, OnBtnDown) 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) O
43、N_BN_CLICKED(IDC_COT, OnCot) ON_BN_CLICKED(IDC_EXP, OnExp) ON_BN_CLICKED(IDC_LOG, 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) ON_BN_CLICKED(IDC_TO8
44、, OnTo8) ON_BN_CLICKED(IDC_ACOS, OnAcos) ON_BN_CLICKED(IDC_TO4, OnTo4) ON_BN_CLICKED(IDC_ATAN, OnAtan) ON_BN_CLICKED(IDC_ACOT, OnAcot) /AFX_MSG_MAP END_MESSAGE_MAP() / / CCalculatorDemoDlg message handlers void CCalculatorDemoDlg:OnBtnNo1() / TODO: Add your control notification handler code here Put
45、IntoNum(1); void CCalculatorDemoDlg:OnBtnNo2() / TODO: Add your control notification handler code here PutIntoNum(2); void CCalculatorDemoDlg:OnBtnNo3() / TODO: Add your control notification handler code here PutIntoNum(3); void CCalculatorDemoDlg:OnBtnNo4() / TODO: Add your control notification han
46、dler code here PutIntoNum(4); void CCalculatorDemoDlg:OnBtnNo5() / TODO: Add your control notification handler code here PutIntoNum(5); void CCalculatorDemoDlg:OnBtnNo6() / TODO: Add your control notification handler code here PutIntoNum(6); void CCalculatorDemoDlg:OnBtnNo7() / TODO: Add your contro
47、l notification handler code here PutIntoNum(7); void CCalculatorDemoDlg:OnBtnNo8() / TODO: Add your control notification handler code here PutIntoNum(8); void CCalculatorDemoDlg:OnBtnNo9() / TODO: Add your control notification handler code here PutIntoNum(9); void CCalculatorDemoDlg:OnBtnNo0() / TOD
48、O: Add your control notification handler code here / TODO: Add your control notification handler code here /如果第一次输入数字 if (cs_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_SH
49、OW,temp); void CCalculatorDemoDlg:OnBtnPort() /已有小数点时 if (b_Hasport) return; /无小数点 cs_Numm_i+=.; b_Hasport=TRUE; b_Start=TRUE; SetDlgItemText(IDC_EDIT_SHOW,cs_Numm_i); /四则运算符 void CCalculatorDemoDlg:OnBtnAdd() if (!b_Start) return; if (en_LastSignl=en_none) en_LastSignl=en_add; RunOperation(en_LastS
50、ignl); en_LastSignl=en_add; void CCalculatorDemoDlg:OnBtnSub() if (!b_Start) return; / TODO: Add your control notification handler code here if (en_LastSignl=en_none) en_LastSignl=en_sub; RunOperation(en_LastSignl); en_LastSignl=en_sub; void CCalculatorDemoDlg:OnBtnMul() if (!b_Start) return; if (en
51、_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_LastSignl=en_none) cs_Num1=1; en_LastSignl=en_div; RunOperation(en_LastSignl); en_LastSignl=en_div; void CCalculatorDemoDlg:OnBtnEquel(
52、) / TODO: Add your control notification handler code here RunOperation(en_LastSignl); /*特殊* en_LastSignl=en_none; b_Start=TRUE; BOOL CCalculatorDemoDlg:OnInitDialog() CDialog:OnInitDialog(); / TODO: Add extra initialization here InitAllDate(); return TRUE; / return TRUE unless you set the focus to a
53、 control / EXCEPTION: OCX Property Pages should return FALSE void CCalculatorDemoDlg:InitAllDate() en_LastSignl=en_none; b_Hasport=FALSE; b_Start=FALSE; b_Hasmul=FALSE; b_Hasdiv=FALSE; cs_Num0=0; cs_Num1=0; m_i=0; SetDlgItemText(IDC_EDIT_SHOW,cs_Numm_i+.); void CCalculatorDemoDlg:RunOperation(eum_si
54、gnl e_signl) / TODO: Add your control notification handler code here double sum; double nAdd1; double nAdd2; nAdd1=atof(cs_Num0); nAdd2=atof(cs_Num1); /sum=nAdd1+nAdd2; switch(e_signl) case en_add: sum=nAdd1+nAdd2; break; case en_sub: sum=nAdd1-nAdd2; break; case en_mul: sum=nAdd1*nAdd2; break; case
55、 en_div: sum=nAdd1/nAdd2; break; cs_Num0.Format(%g,sum); SetDlgItemText(IDC_EDIT_SHOW,cs_Num0); if (!b_Hasport GetDlgItemText(IDC_EDIT_SHOW,temp); temp+=.; SetDlgItemText(IDC_EDIT_SHOW,temp); m_i = 1; b_Hasport=FALSE; b_Start=FALSE; cs_Numm_i=0; /void CCalculatorDemoDlg:RunOperation(eum_signl en_sig
56、nl) / / void CCalculatorDemoDlg:OnBtnC() / TODO: Add your control notification handler code here InitAllDate(); / 根号 void CCalculatorDemoDlg:OnBtnSqrt() / TODO: Add your control notification handler code here if (!b_Start) return; double num; CString temp; GetDlgItemText(IDC_EDIT_SHOW,temp); num=ato
57、f(temp); num=sqrt(num); /其他部分功能计算只需要更改此处,更改成相应函数即可temp.Format(%lf,num); if (temp.Find(.)=-1) SetDlgItemText(IDC_EDIT_SHOW,temp+.); else SetDlgItemText(IDC_EDIT_SHOW,temp); / % void CCalculatorDemoDlg:OnBtnPercent() / TODO: Add your control notification handler code here if (!b_Start) return; double
58、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+.); else SetDlgItemText(IDC_EDIT_SHOW,temp); / 1/x void CCalculatorDemoDlg:OnBtnDown() / TODO: Add your control notification handler code h
59、ere if (!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+.); else SetDlgItemText(IDC_EDIT_SHOW,temp); / +- void CCalculatorDemoDlg:OnBtnNequa() / TODO: Add your cont
60、rol notification handler code here if (!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+.); else SetDlgItemText(IDC_EDIT_SHOW,temp); / SetDlgItemText(IDC_EDIT_SH
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版家庭保洁服务+家居用品清洗保养合同
- 二零二五年度玫瑰精油神经酸胶囊生产加工技术文件合同
- 2025年度房屋过户全权委托代理服务合同模板
- 2025年度能源互联网多方合作协议书范本
- 2025版农业水利工程增项补充服务合同
- 2025版汽车租赁品牌授权合同模板
- 二零二五年度废旧家电回收与销售合作协议书
- 2025年度房屋修缮施工及配套设施合同范本
- 2025版婚内财产处理协议:净身出户执行合同范本
- 二零二五年度抗滑桩施工风险管理服务合同
- 2023年中国(浦东)知识产权保护中心专利预审员招聘笔试参考题库附带答案详解
- 勘界定标技术报告
- von frey丝K值表完整版
- 危险性较大的分部分项工程施工前安全生产条件核查表
- GB/T 5696-2006预应力混凝土管
- GB/T 528-2009硫化橡胶或热塑性橡胶拉伸应力应变性能的测定
- GB/T 3299-1996日用陶瓷器吸水率测定方法
- 大客户战略管理
- 精轧机组机械设备使用说明书
- 2022年机械制图期末试卷及答案
- 设备维护保养制度-设备维护保养制度规定
评论
0/150
提交评论