![科学计算器课程设计报告C++课程设计_第1页](http://file3.renrendoc.com/fileroot_temp3/2021-12/5/4696a3bf-6ab3-44b5-afa3-f89b06ef94bd/4696a3bf-6ab3-44b5-afa3-f89b06ef94bd1.gif)
![科学计算器课程设计报告C++课程设计_第2页](http://file3.renrendoc.com/fileroot_temp3/2021-12/5/4696a3bf-6ab3-44b5-afa3-f89b06ef94bd/4696a3bf-6ab3-44b5-afa3-f89b06ef94bd2.gif)
![科学计算器课程设计报告C++课程设计_第3页](http://file3.renrendoc.com/fileroot_temp3/2021-12/5/4696a3bf-6ab3-44b5-afa3-f89b06ef94bd/4696a3bf-6ab3-44b5-afa3-f89b06ef94bd3.gif)
![科学计算器课程设计报告C++课程设计_第4页](http://file3.renrendoc.com/fileroot_temp3/2021-12/5/4696a3bf-6ab3-44b5-afa3-f89b06ef94bd/4696a3bf-6ab3-44b5-afa3-f89b06ef94bd4.gif)
![科学计算器课程设计报告C++课程设计_第5页](http://file3.renrendoc.com/fileroot_temp3/2021-12/5/4696a3bf-6ab3-44b5-afa3-f89b06ef94bd/4696a3bf-6ab3-44b5-afa3-f89b06ef94bd5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 计算机科学与技术学部C+课程设计题 目 科学计算器 学 部 计算机科学与技术 班 级 计科 1103 指 导 教 师 李 军 姓 名 刘 明 学 号 11430421817667 2012 年 6 月 27 日科学计算器 摘 要 摘 要计算器的产生和发展是建立在电子计算机基础之上的。硬件方面,自 1946 年第一台电子计算机诞生以来,计算机技术的发展可谓日新月异,从庞大的只能在实验室里供研究使用的计算机到如今能适应不同环境满足不同需求的各种各样的计算机;运算速度从每秒几千次到每秒几百亿次;处理器从焊有上百万个电子管的大的惊人的电子板到只有指甲大小的集成电路;现在计算机在硬件方面的发展已达到了
2、每三个月更新换代一次的惊人速度。软件方面,也已从机器语言、汇编语言、高级语言发展到现如今的第四代语言非结构化、面向对象、可视化的语言。在这个计算器里面,我们实现了简单的四则运算以及更高功能的科学计算,它的外观简洁美观,使人们能快捷简单的操作。能准确的得到计算结果,大大减少了数字计算所需要的时间,为人们的生活带来便利。此系统在 Windows 7 环境下,使用 VC+ 6.0 进行编写。简单计算器包括双目运算和单目运算功能,双目运算符包含基本的四则运算及乘幂功能,单目运算符包含正余弦,对数,开方,阶乘,倒数,进制转换等运算。可对其输入任意操作数,包括小数和整数及正数和负数进行以上的所有运算并能连
3、续运算。并且包含清除,退格功能等。我们所做的计算器其功能较 Windows 7 下的计算器还是很不够多,没有其菜单的实现功能项,没有其小巧的标准计算器。关键词: 计算器;运算;VC+等科学计算器 摘 要 科学计算器 分配表 课程设计任务分配表: 表 1 分配信息表姓名姓名主要工作主要工作组长组长刘 明程序设计和编写舒兆月实验报告书的制作组员组员凡力强实验报告书的制作课程设计成绩表:表 2 成绩表姓名姓名学号学号班级班级成绩成绩组长组长刘 明11430421817667计科 1103舒兆月11430727814558计科 1103组员组员凡力强11430426154534计科 1103科学计算器
4、采用的数据类型 采用的类的数据类型:class CCalculatorDlg : public CDialogpublic:void clean_aliter();CString OLD_ANSWER;void out_change(int system);CCalculatorDlg(CWnd* pParent = NULL); / standard constructor int Sel,EndSel; /定义输入或插入时光标的位置int Expr_pos; /词法分析表达式时,标记当前字符位置int OS_pos ; /操作数栈顶位置int old_pos; /历史表达式的位置int o
5、ld_head; /历史表达式数组中最最前位置int old_back; /历史表达式数组中最最后位置int error_mark; /标记表达式错误int parentheses_count; /记录表达式中括号的个数double operand_Stack200; /操作数栈CString old_expression20; /表达式历史记录void getword(WordType & w_type ,Operator& Fun_Ope,int system); /词法分析函数int getword16(); int getword10(); int getword8()
6、; int getword2(); /将用字符表示的 N(2,8,10,16)进制转为浮点型void E_AddSub(); /加减 void T_MulDiv(); /乘除void F_Power(); /乘方 void L_Function(); /函数void H_Digit(); /数字 void Factorial(); /阶乘void P_expression(); /括号 void compute(Operator Op); /计算 void error(int ); /错误标记函数 void clean_all(); /清空表达式和计算结果protected:HICON m_h
7、Icon;DECLARE_MESSAGE_MAP();程序中所用到相关专业知识:类,对象数组,友元函数,继承与派生,指针, 枚举,,数栈,算法科学计算器目 录 目 录前 言.1第一章 系统需求.21.1 简介说明.21.1.1 系统要求 .21.1.2 具体任务 .21.1.3 研究目的 .21.2 设计分析.31.2.1 可行性分析 .31.2.2 需求分析 .31.2.3 设计结构 .31.3 开发环境.31.3.1 运行环境 .31.3.2 开发工具 .31.3.3 关于 Visual C+ 6.0 .4第二章 系统设计.52.1 功能说明 .52.1.1 系统总体功能分析 .52.1.
8、2 系统功能 .52.1.3 课程设计内容 .62.2 设计大概 .62.2.1 设计思路 .62.2.2 控件定义 .72.2.3 变量的定义以及初始化 .8第三章 系统实现.93.1 窗体设计 .93.1.1 设计步骤 .93.1.2 控件定义 .93.1.3 一部分操作截图 .103.2 程序核心代码.11科学计算器目 录 3.2.1 数字键和字母键核心代码 .113.2.2 计算类型函数的核心代码 .113.2.3 提示错误的核心代码 .133.2.4 进制转换的核心代码 .143.2.5 八进制单选按钮消息响应函数代码 .163.2.6 二进制单选按钮消息响应函数 .17第四章 系统
9、运行.204.1 测试以及运行界面 .204.1.1 程序主界面测试 .204.1.2 运行的计算结果 .204.1.3 转换进制计算 .214.2 测试.224.2.1 测试研究与选择 .224.2.2 测试环境 .22总 结.23参考文献.24科学计算器 前 言 0前 言Visual C+(简称 VC)是 Microsoft 公司推出的目前使用极为广泛的基于Windows 平台的 C+可视化开发环境。为了方便计算,我们编写了计算器。本报告在李军老师的指导下,并且形成了比较完善的体系,本设计报告具体包含以下内容:第一章直接介绍了基于 C+语言,熟悉 Visual 6.0 的开发环境和 C+控
10、制台方式的调试和运行,使学生熟悉 Visual C+ 6.0 更自然。以及我们编程的背景与意义及目的,主要介绍我们编写这个程序用来做什么。第二章介绍了我们编程的怎么去做,设计时的一些想法。第三章介绍了我们编程实用的一些技术与核心代码,设计时的具体做法。第四章介绍我们运行时的一些具体操作,以及我们给出的总结与参考文献。本程序编写一个程序来实现算术计算器。通过数组和指针以及枚举来存放输入的每一数字或运算符号函数的记录(包括 1、2、3 等数字,+、-、*、等运算符号)中。通过一些单击按钮实现一些标准与科学的操作混合运算,然后显示出结果。本报告由刘明、凡力强、舒照月编写,由李军老师对全报告进行修改,
11、以及很多同学以及网络朋友提供帮助,在此表示感谢。由于水平有限,不当之处在所难免,恳请读者批评指正。编 者2012.6科学计算器 第一章 系统需求 1第一章第一章 系统需求系统需求1.1 简介说明1.1.1 系统要求1、用 C+语言实现程序设计;2、利用 MFC 进行相关信息处理;3、画出总模块的流程图;4、系统的各个功能模块要求用函数的形式实现;5、界面友好(良好的人机互交) ,程序要有注释;1.1.2 具体任务1、定义以及初始化,输入 09,AF,运算符等信息;2、输入简单的运算符计算式,并显示出计算结果;3、画出总流程图;4、编写代码;5、程序分析与调试;1.1.3 研究目的1、熟悉掌握基
12、于对话框的程序编写;2、熟练掌握放置控件及 control 工具条的使用;3、掌握控件摆放的基本方法,熟练掌握 Dialog 的使用;4、熟悉建立对话框步骤;5、了解 CBUTTON 类的实用;6、巩固并加深学生对 C+语言程序设计知识的理解;7、培养学生面向对象的程序设计思想,与其认识面向过程和对象的区别;8、进一步掌握和应用 VC+ 6.0 集成开发环境;9、提高运用 C+语言解决实际问题的能力;10、初步掌握开发小型实用软件的基本方法,能独立设计、实践操作;11、掌握书写程序设计开发文档的能力(书写课程设计实验报告) ;科学计算器 第一章 系统需求 21.2 设计分析1.2.1 可行性分
13、析伴随着经济全球化,计算机的普及发展,软件行业在社会占着举足轻重的作用。我们在学校生活中常会遇到一些繁杂的数值运算,我们必须要用到科学计算器,所以便着手开发了这个计算器程序,既紧随科技发展的前沿,又方便了我们的生活,具有一定的现实意义。1.2.2 需求分析本软件主要用于计算机 Windows XP 以上的用户使用,这次课程设计一般是实现简单计算器的功能。需要程序实现:加减乘除,开方,平方,倒数等运算功能;还要实现数据的输入,输出,计算,显示及程序退出等功能。另外还可以实现多种科学计算的功能,如:三角函数的计算,弧度与角度间的转换,对数指数的计算,二、八、十、十六进制的转换等。1.2.3 设计结
14、构第一章主要介绍了我们做这个课程设计目地是做什么。第二章主要介绍了我们怎么去设计这个课程报告以及编程。第三章主要介绍了我们实现代码的关键性技术与源码段的介绍。第四章主要介绍了我们做这个程序的运行结果与一些运算的截图。1.3 开发环境1.3.1 运行环境(1) Windows 7 64 位/XP 32 位系统(2) Visual C+ 6.0(中文版)编译环境1.3.2 开发工具C+语言科学计算器 第一章 系统需求 31.3.3 关于 Visual C+ 6.0Visual C+ 6.0 是 Microsoft 公司在 1998 年推出的基于 Windows 9X 和Windows NT 的优秀
15、集成开发环境。该环境为用户提供了良好的可视化编程环境,程序员可以利用该开发环境轻松地访问 C+源代码编辑器,资源编辑器和使用内部调试器,并且可以创建项目文件。Visual C+6.0 不仅包括编辑器,还包括许多有用组件,通过这些组件的协同工作,可以在 Visual C+6.0 集成环境中轻松地完成创建源文件、编辑资源以及对程序的编译、连接和调试等各项工作。VC+6.0 是 Windows 95/98、XP 或 Windows NT 下的一个应用程序,本身对软件没有特殊要求。就是说它对环境的要求与 Windows 95/98、Windows NT 的要求是一致的。VC+6.0 系统可以在一张 C
16、D 盘上,也可以在“Visual Studio (Visual C+、Visual Foxpro)”等产品的第一张 CD 盘上。一般都有一个 VC 的自动安装程序,也可以执行 VC+6.0 目录下的 Setup.exe,在安装包的提示下进行,对初学者可采用“典型安装”方式。在安装好 VC6.0 系统后,有时根据需要添加或删除某些部件,可插入 CD 盘重新执行 Setup.exe 安装程序,安装程序会检测当前系统安装 VC6.0 的组件,用户单击“添加/删除”按钮后,在“安装维护”对话框中选定要与一般的应用软件一样,有以下两种启动方式:(1)通过“开始”按钮,选择“程序”菜单,然后打开“Micr
17、osoft Visual C+6.0 中文版”子菜单中的“Microsoft Visual C+6.0 中文版”程序。(2)用户也可以使用命令行启动 VC,单击“开始”按钮后选择“运行”命令,在“运行”对话框中输入 C:program FilesMicrosoft Visual StudioVC98VC6.exe(按默认盘符和路径安装即可)。科学计算器 第二章 系统设计 4第二章 系统设计2.1 功能说明2.1.1 系统总体功能分析此程序采用 VC+编写,是一个基于对话框的应用程序,当用户在对话框点击相应按钮时,先执行输出按钮对应字符串,用户可以在对话框上选择相应地科学计算操作按钮,通过程序内
18、相关代码完成相应地科学计算功能。它的设计按软件工程的方法进行,系统具有良好的界面,必要的交互信息,简约的美观效果。使用人员能快捷简单地进行操作,即可单机按钮进行操作,也可直接通过键盘输入。即时准确地获取所需要的计算结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定帮助。其具体的功能有:(1)运算更加简介。(2)两个对话框,一个显示输入数据,另一个显示计算结果。(3)实现计算求和,求平均的功能。(4)计算功能基本上是用系统内部函数。(5)程序可以能自动判断输入数据的正确性,保证不出现多于一个小数点以 0 开头等不正常现象。 (6) “CE”按钮可以清除所有已输出的数据从头计算。我们在
19、学习生活中,常会遇到一些繁杂的数值运算,这时候我们就必须用到科学计算器,所以便着手开发了这个计算器程序,以便用于自己的学习工作。要计算功能有以下几个方面:加法,减法,乘法,除法,求幂,求模,求和,求平均,求平方根,求三角函数,进制换算等。2.1.2 系统功能1、十进制数的加、减、乘、除、乘方、取模等简单计算。科学计算器 第二章 系统设计 52、科学计算函数,包括(反)正弦、(反)余弦、(反)正切、(反)余切、开方、指数等函数运算。3、以角度、弧度两种方式实现上述部分函数,梯度没有提供。4、不同进制有不同的运算方式。5、判断输入输出的正确性。2.1.3 课程设计内容课题名称:课题名称:计算器的实
20、现基本说明:基本说明:我们实现了一个标准计算器的运算以及科学计算器的运算的集成,使其较之:方便、快捷、轻松,看上去美观大方,少了切换的繁琐操作,并且我们做的更加简约。2.2 设计大概2.2.1 设计思路所编写的计算器是基于对话框的程序,能够进行加减乘除的运算,开方,立方,三角函数,反三角函数,阶乘,求和,求平均,进制转换运算等功能,仿照 Windows 自带的计算器进行编写,如图 2.2.1;开 始选择进制选择角度采取默认形势直接输入数据选择键值进行计算类型运算错误汇总不同计算类型进行计算计算结果输出到输出框显示结 束在输入框显示按键计算信息如图 2.2.1 设计思路图科学计算器 第二章 系统
21、设计 62.2.2 控件定义如表 2.2.2(只列举一部分控件)IDCAPTIONMemberIDC_0IDC_909m_0m_9IDC_AIDCFAFm_Am_FIDC_ADD+m_ADDIDC_POINT.m_POINTIDC_POWxym_PowIDC_SQRTSqrtm_SQRTIDC_DIVID/m_DIVIDIDC_CECEm_CEIDC_CCm_CIDC_BACKSPACEBackspacem_BACKSPACEIDC_LnLnm_LNIDC_LogLogm_LOGIDC_SinSinm_SINIDC_CosCosm_COSIDC_TanTanm_TANIDC_ACOSacosm
22、_ACOSIDC_ATANatanm_ATANIDC_XORXorm_XorIDC_BUTTON43MSm_BUTTON43IDC_MODModm_MODIDC_BUTTON40Dmsm_BUTTON40IDC_BUTTON49Avem_BUTTON49IDC_BUTTON48Summ_BUTTON48IDC_BUTTON47Sm_BUTTON47IDC_NOTNotm_NOTIDC_BUTTON46Datm_BUTTON46IDC_PIpim_PIIDC_BUTTON42M+m_BUTTON42IDC_BUTTON45MCm_BUTTON45IDC_Equal=m_EQUAL科学计算器 第二
23、章 系统设计 72.2.3 变量的定义以及初始化int Sel,EndSel; /定义输入或插入时光标的位置int Expr_pos; /词法分析表达式时,标记当前字符位置int OS_pos ; /操作数栈顶位置int old_pos; /历史表达式的位置int old_head; /历史表达式数组中最最前位置int old_back; /历史表达式数组中最最后位置int error_mark; /标记表达式错误int parentheses_count; /记录表达式中括号的个数double operand_Stack200; /操作数栈CString old_expression20;
24、/表达式历史记录/以上为定义部分,以下为初始化部分Sel=0;/输入的光标位置EndSel=0;/插入光标的位置Expr_pos = 0; /当前字符的位置OS_pos = 0 ;/操作数栈顶位置old_pos=old_head=old_back=0;/历史表达式的位置error_mark=0;/表达式错误parentheses_count=0; /括号的个数OLD_ANSWER = _T(); /初始化科学计算器 第三章 系统实现 8第三章 系统实现3.1 窗体设计3.1.1 设计步骤利用 MFC AppWinzard 生成计算器应用程序框架具体步骤如下:(1)执行 VC+ 6.0 程序,选
25、择文件新建命令,转到工程选项卡,选择MFC AppWizard(exe)选项,然后在工程名称输入名字,一般以 C 开头,也可以自定义,位置路径自定义。(2)单击确定,弹出 MFC 应用程序向导-步骤 1 对话框。选中单选按钮基本对话框,单击完成即可,如图所示:3.1.2 控件定义(1)(1)为控件添加成员变量已经在系统设计里面列举出,这里就不再重复;为控件添加成员变量已经在系统设计里面列举出,这里就不再重复;(2)为控件添加消息,查看-类向导命令,转到 Message Maps 选项卡,为控件添加 BN_CLICKED 消息,单击确定即可,具体哪些控件这里就不再详细介绍了。图 3.1.1 文件
26、新建示意图科学计算器 第三章 系统实现 93.1.3 一部分操作截图图 3.1.3 相关实现的截图图.3.1.2 添加消息的截图科学计算器 第三章 系统实现 103.2 程序核心代码3.2.1 数字键和字母键核心代码void CCalculatorDlg:OnNumberKey(UINT nID) /按键输入m_Edit.GetSel(Sel,EndSel); /得到输入框的光标位置switch(nID)/ 在光标位置插入按钮表示的字符, 在输入框插入相应的数值case IDC_0: m_expression.Insert(Sel,0);break;case IDC_1: m_expressi
27、on.Insert(Sel,1);break;case IDC_2: m_expression.Insert(Sel,2);break;case IDC_3: m_expression.Insert(Sel,3);break;case IDC_4: m_expression.Insert(Sel,4);break;case IDC_5: m_expression.Insert(Sel,5);break;case IDC_6: m_expression.Insert(Sel,6);break;case IDC_7: m_expression.Insert(Sel,7);break;case ID
28、C_8: m_expression.Insert(Sel,8);break;case IDC_9: m_expression.Insert(Sel,9);break; case IDC_A: m_expression.Insert(Sel,A);break;case IDC_B: m_expression.Insert(Sel,B);break;case IDC_C: m_expression.Insert(Sel,C);break;case IDC_D: m_expression.Insert(Sel,D);break;case IDC_E: m_expression.Insert(Sel,
29、E);break;case IDC_F: m_expression.Insert(Sel,F);break;Sel+; /光标后移UpdateData(FALSE); m_Edit.SetSel(Sel,Sel); /更新输入框光标后移位置UpdateData(FALSE);3.2.2 计算类型函数的核心代码void CCalculatorDlg:compute(Operator Op) /根据操作计算类型,计算结果switch(Op)case OpAdd: operand_StackOS_pos-2+=operand_StackOS_pos-1;OS_pos-;break;case OpSu
30、btract:科学计算器 第三章 系统实现 11 operand_StackOS_pos-2-=operand_StackOS_pos-1;OS_pos-;break;case OpMultiply: operand_StackOS_pos-2*=operand_StackOS_pos-1;OS_pos-;break;case OpDivide: if(operand_StackOS_pos-1=0) error(5); break; else operand_StackOS_pos-2/=operand_StackOS_pos-1; OS_pos-; break; case OpMod: i
31、f(operand_StackOS_pos-1=0) error(5); break; else _int64 temp=0;temp = (_int64)(operand_StackOS_pos-2/operand_StackOS_pos-1); operand_StackOS_pos-1*=temp; operand_StackOS_pos-2-=operand_StackOS_pos-1; OS_pos-; break; case OpPower: operand_StackOS_pos-2 = pow(operand_StackOS_pos-2,operand_StackOS_pos-
32、1); OS_pos-;break;case OpLog: operand_StackOS_pos-1=log10(operand_StackOS_pos-1);break;case OpLn: operand_StackOS_pos-1=log(operand_StackOS_pos-1);break;case OpSqrt: operand_StackOS_pos-1=sqrt(operand_StackOS_pos-1);break;case OpExp: operand_StackOS_pos-1 = exp(operand_StackOS_pos-1);break;case OpSi
33、n: if(m_Radio2 =0) operand_StackOS_pos-1=operand_StackOS_pos-1*PI/180; operand_StackOS_pos-1 = sin(operand_StackOS_pos-1);break;case OpCos: if(m_Radio2 =0) operand_StackOS_pos-1=operand_StackOS_pos-1*PI/180; operand_StackOS_pos-1 = cos(operand_StackOS_pos-1); break;case OpTan: if(m_Radio2 =0) operan
34、d_StackOS_pos-1=operand_StackOS_pos-1*PI/180; operand_StackOS_pos-科学计算器 第三章 系统实现 121 = tan(operand_StackOS_pos-1); break;case OpAsin: if(operand_StackOS_pos-11|operand_StackOS_pos-11|operand_StackOS_pos-1-1) error(9); return ; operand_StackOS_pos-1 = acos(operand_StackOS_pos-1); if(m_Radio2 =0) oper
35、and_StackOS_pos-1=operand_StackOS_pos-1*180/PI; break; case OpAtan: operand_StackOS_pos-1 = atan(operand_StackOS_pos-1);if(m_Radio2 =0)operand_StackOS_pos-1=operand_StackOS_pos-1*180/PI; break; case OpFactorial: if(OS_pos=0) error(1); return ; long k; k =(long) operand_StackOS_pos-1; if(k operand_St
36、ackOS_pos-1) error(8); return ; _int64 temp =1; for(long i=1; i=k ;i+) temp *= i; /operand_StackOS_pos-1 *=i; /* m_result.Format(_T(%I64X),temp); UpdateData(FALSE); MessageBox(sdfsd);*/ operand_StackOS_pos-1=(double)temp; break;3.2.3 提示错误的核心代码void CCalculatorDlg:error(int error_type) /错误类型 /错误处理swit
37、ch(error_type)科学计算器 第三章 系统实现 13case 1: m_result=错误:缺少操作数!;break;case 2: m_result=错误:括号不匹配!;break;case 3: m_result=错误:函数名不正确!;break;case 4: m_result=错误:非法输入!;break;case 5: m_result=错误:出现除数为零!;break;case 6: m_result=错误:函数缺少括号!;break;case 7: m_result=错误:缺少运算符!;break;case 8: m_result=错误:阶乘操作数不是整数!;break
38、;case 9: m_result=asin 和 acos 函数计算必须在-1,1内!;break; error_mark=1; 3.2.4 进制转换的核心代码void CCalculatorDlg:getword(WordType & w_type ,Operator& Fun_Ope,int system) /进制转为浮点型/ 词法分析器, 参数 w_type ,Fun_Ope,system 分别表示 单词类型,操作运算类型,进制类型 int t=m_expression.GetLength(); if(t=0) error(4); return ; /表达式为空则返回 i
39、f(Expr_pos=0& m_expressionExpr_pos=A& m_expressionExpr_pos=F)/当前字符为数字则 转换为浮点数压入操作数栈if(Expr_pos+1)=a& m_expressionExpr_pos=z)/*当前字符为字母则 ,把字母串保存到 str 中 */char str100=;int i=0;while(Expr_pos=a& m_expressionExpr_pos=t) error(3); w_type = TyFun; return ;/表达式结束,则报错/* * 以下 if else 语句为匹配字符串*
40、/if(strcmp(str,ln)=0)Fun_Ope=OpLn;else if(strcmp(str,log)=0)Fun_Ope=OpLog;else if(strcmp(str,sqrt)=0)Fun_Ope=OpSqrt;else if(strcmp(str,exp)=0)Fun_Ope=OpExp;else if(strcmp(str,sin)=0)Fun_Ope=OpSin;else if(strcmp(str,cos)=0)Fun_Ope=OpCos;else if(strcmp(str,tan)=0)Fun_Ope=OpTan;else if(strcmp(str,asin)
41、=0)Fun_Ope=OpAsin;else if(strcmp(str,acos)=0)Fun_Ope=OpAcos;else if(strcmp(str,atan)=0)Fun_Ope=OpAtan;/else if(m_expressionExpr_pos=()w_type = TyFun;else error(3);w_type = TyFun; return ; /匹配不到函数单词,报错 w_type = TyFun; return ;switch(m_expressionExpr_pos)/* 当前字符为操作运算符,则设置单词类型,和操作运算 */case +: Fun_Ope=O
42、pAdd; Expr_pos+; w_type=oper; break;case -: Fun_Ope=OpSubtract; Expr_pos+;w_type=oper;break;case *: Fun_Ope=OpMultiply; Expr_pos+;w_type=oper; break;case /: Fun_Ope=OpDivide; Expr_pos+; w_type=oper;break;case : Fun_Ope=OpPower; Expr_pos+; w_type=oper;break;case (: Fun_Ope=Left_par; Expr_pos+; w_type
43、=oper;break;case ): Fun_Ope=Right_par; Expr_pos+; w_type=oper;break;case %: Fun_Ope=OpMod; Expr_pos+; w_type=oper;break;default: error(4); return ;/其他字符都为非法字符,报错 科学计算器 第三章 系统实现 15 else if(Expr_pos=t)w_type=TyEnd; /表达式已结束,返回 else error(4); return ;3.2.5 八进制单选按钮消息响应函数代码void CCalculatorDlg:OnOctal() /八
44、进制单选按钮消息响应函数/ TODO: Add your control notification handler code here WordType type ; Operator Ope; CString result; int system; system = m_Radio1; m_Radio1 = 2 ; if(OLD_ANSWER.GetLength()0) m_expression = OLD_ANSWER; UpdateData(FALSE); getword(type,Ope,system); if(type=Tynum&(!error_mark)&(Exp
45、r_pos=m_expression.GetLength() out_change(m_Radio1); result = m_result; clean_all(); m_expression = m_result = result; UpdateData(FALSE) Sel = m_expression.GetLength(); m_Edit.SetSel(Sel,Sel); UpdateData(FALSE); else科学计算器 第三章 系统实现 16Expr_pos = 0;OS_pos = 0 ;error_mark=0;parentheses_count=0;m_result
46、= _T();m_2.EnableWindow(TRUE);m_3.EnableWindow(TRUE);m_4.EnableWindow(TRUE);m_5.EnableWindow(TRUE);m_6.EnableWindow(TRUE);m_7.EnableWindow(TRUE);m_8.EnableWindow(FALSE);m_9.EnableWindow(FALSE);m_A.EnableWindow(FALSE);m_B.EnableWindow(FALSE);m_C.EnableWindow(FALSE);m_D.EnableWindow(FALSE);m_E.EnableW
47、indow(FALSE);m_F.EnableWindow(FALSE); m_PI.EnableWindow(FALSE);3.2.6 二进制单选按钮消息响应函数void CCalculatorDlg:OnBinary() /二进制单选按钮消息响应函数/ TODO: Add your control notification handler code here /E_AddSub(); WordType type ; 科学计算器 第三章 系统实现 17 Operator Ope; CString result; int system; system = m_Radio1; m_Radio1
48、= 3 ; if(OLD_ANSWER.GetLength()0) m_expression = OLD_ANSWER; UpdateData(FALSE); getword(type,Ope,system); if(type=Tynum&(!error_mark)&(Expr_pos=m_expression.GetLength() out_change(m_Radio1); result = m_result; clean_all(); m_expression = m_result = result; UpdateData(FALSE); Sel = m_expression.GetLength(); m_Edit.SetSel(Sel,Sel); UpdateData(FALSE); elseExpr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 28海的女儿说课稿-2023-2024学年四年级下册语文统编版
- 2 我是什么(说课稿)-2024-2025学年统编版语文二年级上册
- 2024-2025学年高中生物 专题2 微生物的培养与应用 课题2 土壤中分解尿素的细菌的分离与计数说课稿3 新人教版选修1
- 2025国有土地使用权出让协议合同
- 2025有限公司股权转让合同
- Module 1 Unit 2 Changes in our lives Listen and say Listen and enjoy (说课稿)-2024-2025学年沪教牛津版(深圳用)英语六年级下册
- 2025城市供用气合同
- 潍坊耐火混凝土施工方案
- 加气轿车出售合同范例
- 8《安全记心上》(第一课时)说课稿-2024-2025学年道德与法治三年级上册统编版
- 2025年中国X线诊断设备行业市场发展前景及发展趋势与投资战略研究报告
- 2024版全文:中国2型糖尿病预防及治疗指南
- 2023-2024小学六年级上册英语期末考试试卷质量分析合集
- 第六章几何图形 初步数学活动 制作纸魔方和绘制五角星说课稿2024-2025学年人教版数学七年级上册
- 读书心得《好老师征服后进生的14堂课》读后感
- 公路工程施工安全应急预案(4篇)
- 社会主义发展史(齐鲁师范学院)知到智慧树章节答案
- 2023年高考真题-地理(辽宁卷) 含解析
- 课程思政融入高职院校应用文写作课程教学路径探析
- 2024全新钢结构安全培训
- 2025届高三数学一轮复习-分段函数专项训练【含答案】
评论
0/150
提交评论