VC简单科学计算器设计

合集下载

一个简单的计算器VC课程设计

一个简单的计算器VC课程设计

《可视化程序设计》课程设计报告模拟计算器姓名:班级:学号:指导教师:成绩:完成时间:2009年12月30日完成地点:软件实验室(9)一、设计题目(问题)描述和要求题目:模仿windows计算器描述:使用Microsoft Visual Studio .NET 2005完成一个功能与windows 自带的计算器功能相似的小程序。

要求完成以下功能:①能够完成加、减、乘、除、开平方、取倒数、百分数运算;②能够使用“BackSpace”、“C”、“.”、“+/-”、“CE”的功能。

二、系统分析与概要设计根据题目描述和要求,系统要求能够制作出来一个与Windows自带计算器功能相似的小软件。

我们需要使用基于对话框的MFC应用程序来完成此任务,所建项目名为:计算器。

本项目中不需要添加心得类,只需要使用系统自动生成的CAboutDlg,C计算器App,C计算器Dlg三个类即可。

其中主要实现该项目功能的类为:C计算器Dlg类。

概要设计:(1)我们先要对对话框的可视部分进行编辑,向上面添加一个“EditControl”控件和23个“Button”控件。

其中“EditControl”控件用来显示数据及运算结果,“Button”控件用来实现各种操作功能。

(2)我们需要为“EditControl”控件添加一个变量“n”,用来接收及显示数据;为23个“Button”控件分别添加“事件处理程序”,来实现具体功能。

(3)在声明模块(计算器Dlg.h) 中我们需要声明七个变量:n,n_2,setxiaoshu,xiaoshui,setnew,operate,innum。

26个成员函数:1-23是控件功能函数“afx_msg voidOnBnClickedButton1()”…,其余三个函数是另行添加的功能函数:void setempty(void)(置空中间变量),void inum(int i)(处理字符输入),void operation(char ope)(执行选定运算)。

VC编程-计算器

VC编程-计算器

实验报告项目名称科学计算器的设计与实现学院计算机学院专业班级计算机科学与技术0602 学号 3106006475 姓名杨振风指导教师黄益民2008年12 月30 日一、设计任务与要求;1、能独立搭建可视化程序编程环境,掌握Visual C++6的安装、运行和使用。

2、总体要求:用面向对象编程的思想与方法,实现一个简单计算器的分析与设计阶段的开发工作,开发工具使用Visual C++6。

3、具体要求:本系统为简单计算器程序开发,实现基本的算术运算以及科学计算,具备计算历史的查询功能,并能检查算术表达式中的错误,分别以二进制、十进制等数制的计算。

4、编写设计方案,设计过程,源程序文件结构,分析实验方案,并对实验做出总结。

二、需求分析1.功能需求(功能划分、功能描述)系统地学习面向对象编程思想,了解MFC架构,逐步熟悉可视化编程环境Visual C++,并在此环境下设计并实现一个简单计算器系统,该计算器应能实现如下功能:(1)、二进制、八进制、十进制及十六进制数的加、减、乘、除、乘方、取模等简单计算(2)、科学计算函数,包括(反)正弦、(反)余弦、(反)正切、(反)余切、开方、指数等函数运算(3)、以角度、弧度两种方式实现上述部分函数(4)、具备历史计算的记忆功能(5)、对不正确的表达式能指出其错误原因2. 运行需求(用户界面、人机接口、故障处理)总体的界面要求类似于Windows xp的要求能够任意切换各种进制,以及弧度和角度。

人性化的显示所输入的表达式,方便用户能够校验输入的数据是否有误,并且能够给出出错处理,如除数不能为0,0次幂的底数不能为0等等!同时能把之前产生的值能够记录下来,便于下次需要时调用。

三、系统设计1.总体方案设计首先我想描述我做的计算器的主要功能的实现。

由于这次课程设计要求加入三角运算以及倒数,平方,三次幂,log, ln, 开根运算。

再加上基本运算符加减乘除。

如果把这些运算符都加在一个表达式里面,这样处理表达式编程一场复杂。

程序设计综合实践课C简单计算器

程序设计综合实践课C简单计算器
简单计算器
1、项目概述
该项目目标是设计开发一个支持连 续计算的四则运算计算器 myCalculator,通过单击按钮,输 入并完成如4+5+6或5*8+16类似的 连续计算,并将运算结果显示在输 出文本框中,同时也具备清空、后 退等功能。
2、设计步骤
项目分析与算法流程设计。
计算器myCalculator的主要功能是完 成加、减、乘、除四则运算,而且支 持连续计算,如4+5+7-8或4*5-6等运 算。连续计算的实现借助于开发工具 中 预 定 义 的 数 据 结 构 Stack ( 栈 ) 实 现,如流程图所示
4、项目扩展2
扩展计算器的使用领域,开发贷 款计算器(或其他,如利息计算 器等)
5、成绩评定说明
ቤተ መጻሕፍቲ ባይዱ程序设计开发语言不限。 成绩评定(要求提交设计报告和程序): ✓其中设计报告占40%(格式可参照本ppt的前四部分) ✓程序(源代码)占60%(程序能够正常运行) 完成项目扩展的酌情加分
2、设计步骤
界面设计。
2、设计步骤
代码编写(略)
2、设计步骤
运行调试
计算“5*9+5+50”,依次单击按 钮“5”、“*”、“9”、“+”、 “5”、“+”、“50”,然后单 击按钮“=”,显示框的数值为 100
3、项目扩展1
增加计算器的功能,添加求平方 根、求余、倒数的功能(读者也 可自行扩展。

c简易计算器课程设计

c简易计算器课程设计

c 简易计算器课程设计一、课程目标知识目标:1. 学生能理解简易计算器的基本原理,掌握加、减、乘、除四则运算的操作方法。

2. 学生能够运用所学知识,解决生活中简单的数学问题。

3. 学生了解计算器的发展历程,认识到科技对生活的影响。

技能目标:1. 学生能够熟练操作简易计算器,进行基本的四则运算。

2. 学生通过实际操作,培养动手能力和问题解决能力。

3. 学生能够运用计算器辅助学习,提高数学学习效率。

情感态度价值观目标:1. 学生培养对数学学习的兴趣,树立正确的数学观念。

2. 学生在合作交流中,培养团队意识和沟通能力。

3. 学生通过计算器的使用,认识到科技发展的成果,增强民族自豪感。

课程性质:本课程为信息技术与数学学科的整合课程,旨在通过简易计算器的学习,提高学生的数学素养和信息技术能力。

学生特点:四年级学生具备一定的数学基础和信息技术能力,好奇心强,善于合作交流。

教学要求:教师需结合学生的特点,采用启发式教学,引导学生主动探究,注重培养学生的动手能力和问题解决能力。

在教学过程中,关注学生的情感态度,激发学生的学习兴趣,使学生在轻松愉快的氛围中学习。

通过本课程的学习,使学生达到预期的学习成果。

二、教学内容1. 计算器的历史与原理:介绍计算器的发展简史,探讨计算器的工作原理,让学生了解计算器的演变过程,认识到科技对生活的改变。

2. 简易计算器操作方法:详细讲解加、减、乘、除四则运算的操作步骤,让学生熟练掌握计算器的使用方法。

3. 实践应用:结合数学课本中的实际例题,指导学生运用计算器进行计算,解决实际问题,提高计算速度和准确性。

4. 计算器在数学学习中的应用:探讨计算器在辅助数学学习中的作用,如:简化计算过程、提高解题效率等。

教学内容安排和进度:第一课时:计算器的历史与原理,计算器的简单操作。

第二课时:四则运算的操作方法,实践练习。

第三课时:计算器在数学学习中的应用,解决实际问题。

教材章节:《信息技术》第四章:计算器与计算机。

VC++科学计算器实验报告 2

VC++科学计算器实验报告 2

西安科技大学计算机学院VC++程序设计实验报告题目科学计算器学号专业及班级计科0804姓名日期 2010-11-03一、实验内容1.实验目的:(1)通过对科学计算器的实现掌握MFC的CDialog类和其他运行机制,掌握各种控件的使用。

(2)学习使用对话框实现人机交互功能。

2.实验步骤:(1)打开Microsoft Visual C++ 6.0,在文件中点击新建,在弹出框内选择MFC AppWizard[exe]工程,输入工程名ex5及其所在位置,点击确定,如图1-1所示。

图1-1 新建MFC AppWizard[exe]工程(2)将弹出MFC AppWizard-step 1对话框,选择基本对话框,点击完成,如图1-2所示。

图1-2基本对话框(3)这样,MFC AppWizard就建立了一个基于对话窗口的程序框架,如图1-3所示。

图1-3新建的对话框(4)界面设计界面设计主要是创建控件,在图1-3所示的Resoure View选项卡中打开Dialog资源组,双击IDD_ex5_DIALOG,在右边的窗口中显示出待编辑的对话框。

开始摆放控件,包括编辑框和按钮的创建。

按钮的创建以“1”为例进行介绍,其他按钮的创建可参照此进行操作。

1)在图1-4中Controls的“编辑框”按钮上单击鼠标左键,在对话框编辑窗口上合适的位置按下鼠标左键并拖动鼠标画出一个大小合适的编辑框。

在编辑框上单击鼠标右键,在弹出的快捷莱单中选择属性选项,此时弹出Edit属性对话框,如图4-4所示,在该对话框中输入ID属性。

图1-4 Edit属性对话框2)在图1-4中Controls的“Button”按钮上单击鼠标左键,在对话框上的合适的位置上按下鼠标左键并拖动鼠标画出一个大小合适的下压式按钮。

在按钮上单击鼠标右键,在弹出的快捷菜单中选择属性选项,此时也弹出Push Button属性对话框,如图1-5所示,在该对话框中输入控件的ID值和标题属性。

VC++计算器设计与实现文档

VC++计算器设计与实现文档

VC++环境下计算器程序设计与实现设计目标:在VC++环境下可视化编程实现简单计算器的实现。

目标是有数字按钮,加减乘除符号按钮,清除按钮,两个输入框用来输入用算数字,一个输出框用来显示输出结果。

设计过程:第一步页面设计部分与控件添加部分首先打开VC,选择MFC AppWizard[exe],设定好路径和工程名(这里我设置工程名为为“计算器”)。

在创建向导步骤1的时候,选择“基本对话框”。

创建完成后,把当前页面上原配的控件按Delete全部清除,接着按照MFC自带的控件选项进行本次计算器的控件添加,在原先清空的界面中依次用控件工具框中的相应工具,画出基本的计算器界面(如下图)。

每个控件“属性”都有属于它自己的ID,默认的按钮按键为IDC_BUTTON0,对控件数字按钮和符号按钮的ID不进行修改,把按钮的标题改成相应的数字和运算符号。

编辑框的ID选择默认ID不做修改,完成修改后,就需给控件添加消息响应了,基本操作可以是直接双击控件,便会有向导提示。

MFC默认下了的响应信息都为On_开头,这个步骤一般不对成员函数名称做任何修改,直接点击OK即可。

之后就会跳转到具体的代码实现过程,这里我们依次给每一个控件添加消息响应函数:void CMyDlg::OnButton1(){// TODO: Add your control notification handler code here}void CMyDlg::OnButton3(){// TODO: Add your control notification handler code here}其他的控件和上面的类似。

到此为止,基本上完成了计算器页面的前半部分预备工作,下来是对控件具体实现代码的添加。

在开始第二步之前有一项工作时必须要做的,那便是添加3个成员变量和一个CEdit类的变量。

具体添加方法,就是右键主对话框CMyDlg,选择Add Member Variable。

vc计算器课程设计

描写童年趣事作文600字高二描写童年趣事作文600字高二6篇童年是七色的,是热忱的、可爱的、好玩的,布满笑声的。

共享一下你的童年趣事吧。

下面是我为大家收集的描写童年趣事作文600字高二例文,期望你宠爱。

描写童年趣事作文600字高二(篇1)一进教室,映入眼帘的就是讲台上的那几个易拉罐和几根“专业”的钓鱼竿。

我一下子就呆住了,心里不禁猜想起老师葫芦里卖的是什么药?“莫非是去钓鱼,不对,要易拉罐干什么?莫非里面装的是鱼食?不对,不对”“下面我们来玩一个叫‘钓旱鱼’的玩耍吧!”老师的一句话打断了我的猜想,也点破了我的困惑。

首先,江老师将我们分成四个大组,每个大组有六名“钓鱼者”。

老师为了让我们生疏玩耍规章,便让我们先进行练习。

在练习的过程中,我渐渐把握了要领,能在十五秒之内钓起一条“旱鱼”了。

在为自己的成绩窃喜时,我才发觉真是“人外有人,天外有天”啊!———有些同学格外娴熟,不出十秒就能钓起一条“旱鱼”,这使我不由得站在一旁观看起其他人的动作。

不一会儿,练习结束,老师让各组前来抽签。

令我欣喜的是:我们组竟幸运的抽到了第5号,这样我们就有机会进行训练了。

这时,老师让每组选出2名队员来参赛。

然而,在参赛问题上,大家竟不约而同的推选了我和刘宇欣,这是我颇感意外的。

竞赛最终开头了。

首先上场的是闵耀东和王涵,他们或许是由于第一个上场产生了恐惊心理,或许是由于不太娴熟,所以显得有些力不从心,连续2次都使“鱼儿”顺当脱钩,最终才钓起了2次。

我和队友们马上对他们报以了“鼓舞”的掌声。

最精彩的也是最使人感到意外的,是第四个上场的李亦桐和方菁如一组。

她们一开头上场的表现是顺风顺水,一连钓起了2个,但到中间的时候,不知是谁顺手将竿一抖,两根鱼竿就像热恋情人一般纠缠在一起了,害得同学们费了九牛二虎之力才将难分难舍的它们分开。

“哈!哈!哈!”的笑声始终萦绕在我的耳畔,它不仅使我的童年丰富多彩,更使它意义非凡。

描写童年趣事作文600字高二(篇2)每个人的童年生活都是丰富多彩的,布满了无穷的乐趣。

VC程序设计说明书---计算器

目录目录 (I)摘要 (II)1 设计目的 (1)2 设计要求 (2)3 设计内容 (3)3.1 系统分析 (3)3.2项目创建 (3)3.3界面设计 (5)3.4 代码实现 (7)3.5 方案分析总结 (16)总结与致谢 (19)参考文献 (20)附件 (21)摘要GPA英语全称是grade point average,意思就是平均分。

GPA的精确度往往达到小数点后1到2位,如:3.0,3.45。

GPA的标准计算方法是将大学成绩的加权平均数乘以4,再除以100,得出平均分。

美国的GPA满分是4分,即A=4,B=3,C=2, D=1。

一般来讲,百分制中的90分以上可视为4分,80分以上为3分,70分以上为2分,60分以上为1分,五分制中的5分为4分,4分为3分,3分为2分,2分为1分。

这次课程设计完成了一个简单的GPA计算器。

本次设计系统具有良好的界面,必要的交互信息和较好的健壮性,使我们能快捷简单地进行操作,即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。

关键词:GPA;VC++6.0;MFC;控件;1 设计目的《VC程序设计++》是一门实践性、应用性很强的科目。

实践教学环节是必不可少的一个重要环节。

VC程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。

要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握VC程序设计的基本技能和面向对象的概念和方法;了解菜单、视图/文档、数据库等编程技术。

同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。

计算器VC源代码

void CMyCalculatorDlg::UpdateDisplay(double lVal)
{ //在编辑框中显示数据
m_display.Format(_T("%f"),lVal);
int i=m_display.GetLength();
while(m_display.GetAt(i-1)=='0') //格式化输出,将输出结果后的零截去
/
……
……
……
Button
IDC_BUTTON_CLEAR
C
Button
IDC_BUTTON9
9
Button
IDC_BUTTON_SQRT
sqrt
Button
IDC_BUTTON_POINT
.
Button
IDC_BUTTON_RECI
1/x
Button
IDC_BUTTON_SIGN
+/-
Button
3.CString m_operator;//存储运算符
4.double m_coff;//存储小数点的系数权值
5.CString m_display;//编辑框IDC_DISPLAY的关联变量,显示计算结果
5、在对话框类的构造函数中,初始化成员变量
CMyCalculatorDlg::CMyCalculatorDlg(CWnd* pParent /*=NULL*/): Dialog(CMyCalculatorDlg::IDD, pParent)
{……
m_display = _T("0.0");
m_first = 0.0;
m_second= 0.0;
m_operator=_T("+");

c课程设计简易计算器

c 课程设计简易计算器一、课程目标知识目标:1. 让学生掌握简易计算器的基本功能与操作,包括加、减、乘、除等四则运算。

2. 使学生理解计算器的工作原理,了解显示屏、键盘等组成部分及其作用。

3. 帮助学生掌握计算器的使用规范,如开关机、输入输出等基本操作。

技能目标:1. 培养学生运用计算器解决实际问题的能力,提高计算速度和准确性。

2. 培养学生通过观察、尝试、探索等方法,自主发现计算器操作技巧和功能特点。

3. 培养学生合作交流的能力,学会在小组讨论中分享观点,共同解决问题。

情感态度价值观目标:1. 激发学生对计算器的学习兴趣,培养良好的学习习惯和探究精神。

2. 培养学生尊重科学、严谨求实的态度,树立正确的价值观。

3. 培养学生团队协作意识,增强合作解决问题的能力。

本课程针对小学四年级学生,结合教材内容,以实用性为导向,注重培养学生的动手操作能力和实际问题解决能力。

课程目标明确,易于衡量,为后续教学设计和评估提供依据。

在教学过程中,教师应关注学生个体差异,因材施教,确保每位学生都能在课程中收获知识和技能。

二、教学内容本章节教学内容主要包括以下几部分:1. 计算器的基本结构:介绍计算器的显示屏、键盘、电池等组成部分及其功能。

2. 四则运算操作:详细讲解加、减、乘、除四则运算在计算器上的操作步骤。

3. 计算器操作规范:教授计算器的开关机、清屏、输入输出等基本操作规范。

4. 实际问题解决:结合教材实例,引导学生运用计算器解决生活中的实际问题。

5. 操作技巧与功能探索:指导学生探索计算器的其他功能,如百分比、乘方等,并分享操作技巧。

教学内容安排如下:第一课时:计算器的基本结构及操作规范介绍。

第二课时:四则运算操作教学,以教材为例题进行讲解和实操。

第三课时:实际问题解决,分组讨论并运用计算器解决生活中的数学问题。

第四课时:操作技巧与功能探索,学生自主探究计算器其他功能并分享。

教学内容与教材紧密关联,确保科学性和系统性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

简单科学计算器设计VC++课程设计报告简单科学计算器设计一、设计任务1.选题意义此题选择意义在于引导学生学会设计简单的科学计算器,进一步掌握Visual C++应用程序。

统计学习面向对象编程思想,了解MFC架构,逐步熟悉可视化编程环境Visual C++,并在此环境下设计并实现一个简单计算器系统。

该计算器应能实现如下功能:1)、二进制、八进制、十进制及十六进制数的加、减、乘、除、乘方等简单计算2)、科学计算函数,包括正弦、余弦、正切、余切、开方、对数、指数等函数运算3)、具备历史计算的记忆功能。

2.设计目标使计算器含有以下功能:(1)、基本运算功能:可以进行加、减、乘、除等基本运算。

(2)、数制转换功能:可以一次完成二进制转十进制、十进制转二进制、八进制转二进制等运算。

(3)、三角函数运算功能:可以一次完成三角函数之间的计算,求正弦函数(sin)、余弦函数(cos)、正切函数(tan)、余切函数(cot)等函数的值。

(4)、对数、指数运算功能:可以一次求的对数函数(log、ln)、指数函数(exp)等函数的运算。

(5)、删除功能:可以在输入错误时删除已输入的数值。

(6)、归零功能:可以在计算完成后清空编辑框中的已有数值。

二、程序设计与实现1.程序结构本计算器首先是通过在计算器的界面上按下相应的按钮,来进行基本的加,减,乘,除等基本运算,计算器还能够进行平方运算,求平方根运算,乘方运算,三角函数运算(包括正弦函数(sin)、余弦函数(cos)、正切函数(tan)、余切函数(cot)),对数函数(ln、log),指数函数(exp),幂函数(x~)和进制转换(包括二进制转十进制、十进制转二进制和八进制转二进制)等运算。

以下是本计算器的运算流程图:2.设计步骤:(1)创建一个基于对话框的应用程序。

(2)利用资源编辑器编辑对话框资源,及设计计算器界面并修改对话框各按钮的ID属性和Caption属性。

(3)利用ClassWizard为各按钮添加消息映射(代码在下面详细介绍)。

(4)设置对话框文本背景颜色。

(5)编辑图标。

3.详细介绍:(2)主要代码:void CGyDlg::On0() //输入相应的数据,这为输入数据0{ s2=s2+"0";m_xs=m_xs+"0";UpdateData(FALSE);}void CGyDlg::On1() //输入相应的数据,这为输入数据1{ s2=s2+"1";m_xs=m_xs+"1";UpdateData(FALSE);}void CGyDlg::On2() //输入相应的数据,这为输入数据2{ s2=s2+"2";m_xs=m_xs+"2";UpdateData(FALSE);}void CGyDlg::On3() //输入相应的数据,这为输入数据3 { s2=s2+"3";m_xs=m_xs+"3";UpdateData(FALSE);}void CGyDlg::On4() //输入相应的数据,这为输入数据4 { s2=s2+"4";m_xs=m_xs+"4";UpdateData(FALSE);}void CGyDlg::On5() //输入相应的数据,这为输入数据5 { s2=s2+"5";m_xs=m_xs+"5";UpdateData(FALSE);}void CGyDlg::On6() //输入相应的数据,这为输入数据6 { s2=s2+"6";m_xs=m_xs+"6";UpdateData(FALSE);}void CGyDlg::On7() //输入相应的数据,这为输入数据7 { s2=s2+"7";m_xs=m_xs+"7";UpdateData(FALSE);}void CGyDlg::On8() //输入相应的数据,这为输入数据8 { s2=s2+"8";m_xs=m_xs+"8";UpdateData(FALSE);}void CGyDlg::On9() //输入相应的数据,这为输入数据9 { s2=s2+"9";m_xs=m_xs+"9";UpdateData(FALSE);}void CGyDlg::Onadd() //加{ s2="";s1=m_xs;m_xs=m_xs+'+';str='+';UpdateData(false);}void CGyDlg::Onsub() //减{ s2="";s1=m_xs;m_xs=m_xs+'-';str='-';UpdateData(false);}void CGyDlg::Onxsd() //小数点{ s2=s2+".";m_xs=m_xs+".";UpdateData(false);}void CGyDlg::Oncheng() //乘{ s2="";s1=m_xs;m_xs=m_xs+'*';str='*';UpdateData(false);}void CGyDlg::Onchu() //除{ s2="";s1=m_xs;m_xs=m_xs+'/';str='/';UpdateData(false);}void CGyDlg::Ondel() //删除{m_xs.Delete(m_xs.GetLength()-1,1); UpdateData(false);}void CGyDlg::Onpf() //平方{ s2="";s1=m_xs;m_xs=m_xs+"^2";str='p';UpdateData(false);}void CGyDlg::Onkf() //开2次方{ s2="";s1=m_xs;m_xs=m_xs+"^1/2";str='k';UpdateData(false);}void CGyDlg::Onsin() //sin函数{ s2="";s1=m_xs;m_xs="sin"+m_xs;str='s';UpdateData(false);}void CGyDlg::Oncos() //cos函数{ s2="";s1=m_xs;m_xs="cos"+m_xs;str='c';UpdateData(false);}void CGyDlg::Ontan() //tan函数{ s2="";s1=m_xs;m_xs="tan"+m_xs;str='t';UpdateData(false);}void CGyDlg::Onln() //ln函数{ s2="";s1=m_xs;m_xs="ln"+m_xs;str='l';UpdateData(false);}void CGyDlg::Onlog() //log函数{ s2="";s1=m_xs;m_xs="log"+m_xs;str='g';UpdateData(false);}void CGyDlg::Onex() //以e为底的指数{ s2="";s1=m_xs;m_xs="e^"+m_xs;str='e';UpdateData(false);}void CGyDlg::On3cfg() //开3次方{s2="";s1=m_xs;m_xs=m_xs+"^1/3";str='f';UpdateData(false);}void CGyDlg::Onxy() // x的y次方{ s2="";s1=m_xs;m_xs=m_xs+"^";str='^';UpdateData(false);}void CGyDlg::Onqk() // 归零按钮{ m_xs="";UpdateData(FALSE);}void CGyDlg::Onsze() //十进制转二进制{ s2="";int n,i,t;double Y,p=0.0;Y=strtod( m_xs,NULL); //把字符串转化成浮点型 t=(int)(Y);if(t!=1)for(i=1;t>1;i++){ n=t%2;t=t/2;p+=n*pow(10,(i-1));}p+=1*pow(10,(i-1));m_xs.Format("%f",p);UpdateData(false);}void CGyDlg::Onezs() //二进制转十进制{ s2="";int len;double sum=0.0,num;len=strlen(m_xs);for (int i=0;i<len;i++){ num=(m_xs[i]-48);num=num*pow(2,len-i-1);sum+=num;}m_xs.Format("%f",sum);UpdateData(false);}void CGyDlg::Onbze() //八进制转二进制{ s2="";int i,len;char s;len=strlen(m_xs);CString m_xs1;for(i=0;i<len;i++){ s=m_xs[i];switch(s){ case'1':m_xs1=m_xs1+"001";break;case '2':m_xs1=m_xs1+"010";break;case '3':m_xs1=m_xs1+"011";break;case '4':m_xs1=m_xs1+"100";break;case'5':m_xs1=m_xs1+"101";break;case '6':m_xs1=m_xs1+"110";break;case'7':m_xs1=m_xs1+"111";break;}}m_xs=m_xs1;UpdateData(false);}double add(double X, double Y) { return X+Y;} //加函数double subtract(double X, double Y) { return X-Y;} //减函数double chu(double X, double Y) { return X/Y;} //除函数double cheng(double X, double Y) { return X*Y; } //乘函数double jzf(double fu) { return fu / 180.0 * 3.14159265; } // 角度转弧度double chengfang(double X, int Y) //乘方{ double m=1.0;if(Y==1)return X;elsefor(int i=1;i<=Y;i++)m=m*X;return m;}void CGyDlg::Ondy() //等于号的功能函数{ int len,i,j=0;double X,Y;X=strtod(s1,NULL); //把字符串转化成浮点型Y=strtod(s2,NULL); //把字符串转化成浮点型switch(str){case '+':m_xs.Format("%f",add(X,Y));len=strlen(m_xs);if(m_xs[len-1]=='0'){ i=len-1;while(m_xs[i]=='0'){ j++;i--;}m_xs.Delete(len-j,j); // 删除小数点后无用的零}UpdateData(false);break;case '-':m_xs.Format("%f",subtract(X,Y));len=strlen(m_xs);if(m_xs[len-1]=='0'){ i=len-1;while(m_xs[i]=='0'){ j++;i--;}m_xs.Delete(len-j,j); // 删除小数点后无用的零}UpdateData(false);break;case '*':m_xs.Format("%f",cheng( X,Y));len=strlen(m_xs);if(m_xs[len-1]=='0'){ i=len-1;while(m_xs[i]=='0'){ j++;i--;}m_xs.Delete(len-j,j); // 删除小数点后无用的零}UpdateData(false);break;case '/':m_xs.Format("%f",chu(X,Y));len=strlen(m_xs);if(m_xs[len-1]=='0'){ i=len-1;while(m_xs[i]=='0'){ j++;i--;}m_xs.Delete(len-j,j); // 删除小数点后无用的零}UpdateData(false);break;case 'p':m_xs.Format("%f",cheng(Y,Y));len=strlen(m_xs);if(m_xs[len-1]=='0'){ i=len-1;while(m_xs[i]=='0'){ j++;i--;}m_xs.Delete(len-j,j); // 删除小数点后无用的零}UpdateData(false);break;case 'k':m_xs.Format("%f",sqrt(Y));len=strlen(m_xs);if(m_xs[len-1]=='0'){ i=len-1;while(m_xs[i]=='0'){ j++;i--;}m_xs.Delete(len-j,j); // 删除小数点后无用的零}UpdateData(false);break;case 's':m_xs.Format("%f",sin(jzf(Y)));len=strlen(m_xs);if(m_xs[len-1]=='0'){ i=len-1;while(m_xs[i]=='0'){ j++;i--;}m_xs.Delete(len-j,j); //删除小数点后无用的零}UpdateData(false);break;c ase 'c':m_xs.Format("%f",cos(jzf(Y)));len=strlen(m_xs);if(m_xs[len-1]=='0'){ i=len-1;while(m_xs[i]=='0'){ j++;i--;}m_xs.Delete(len-j,j); // 删除小数点后无用的零 }UpdateData(false);break;case 't':m_xs.Format("%f",tan(jzf(Y)));len=strlen(m_xs);if(m_xs[len-1]=='0'){ i=len-1;while(m_xs[i]=='0'){ j++;i--;}m_xs.Delete(len-j,j); // 删除小数点后无用的零 }UpdateData(false);break;case 'l':m_xs.Format("%f",log(Y));len=strlen(m_xs);if(m_xs[len-1]=='0'){ i=len-1;while(m_xs[i]=='0'){ j++;i--;}m_xs.Delete(len-j,j);}UpdateData(false);break;case 'g':m_xs.Format("%f",log10(Y));len=strlen(m_xs);if(m_xs[len-1]=='0'){ i=len-1;while(m_xs[i]=='0'){ j++;i--;}m_xs.Delete(len-j,j); // 删除小数点后无用的零}UpdateData(false);break;case 'e':m_xs.Format("%f",exp(Y));len=strlen(m_xs);if(m_xs[len-1]=='0'){ i=len-1;while(m_xs[i]=='0'){ j++;i--;}m_xs.Delete(len-j,j); // 删除小数点后无用的零}UpdateData(false);break;case '^':m_xs.Format("%f", chengfang(X,(int)Y));len=strlen(m_xs);if(m_xs[len-1]=='0'){ i=len-1;while(m_xs[i]=='0'){ j++;i--;}m_xs.Delete(len-j,j); // 删除小数点后无用的零}UpdateData(false);break;case 'f':m_xs.Format("%f", pow(Y,M3));len=strlen(m_xs);if(m_xs[len-1]=='0'){ i=len-1;while(m_xs[i]=='0'){ j++;i--;}m_xs.Delete(len-j,j); // 删除小数点后无用的零}UpdateData(false);break;default :UpdateData(false);}m_xs="";s2="";}HBRUSH CGyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)//设置编辑框背景颜色{HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);pDC->SetBkColor(RGB(190,255,0));return hbr;}(3)函数功能说明整个计算器除了基本的加、减、乘、除运算外,另外还有8个功能,实现八大运算:三角函数运算功能、对数函数运算功能、指数函数运算功能、乘方运算功能、平方运算功能、根式运算功能、进制转换功能、归零功能。

相关文档
最新文档