my计算器程序设计报告

合集下载

实验报告 计算器程序

实验报告 计算器程序

实验报告学生姓名:学号:专业班级:网络工程实验类型:□验证□综合■设计□创新实验日期:10.4.5 实验成绩:实验2:栈和队列一、实验目的深入了解栈和队列的特性,学会在实际问题下灵活运用它们。

二、问题描述表达式求值运算是实现程序设计语言的基本问题之一,也是栈应用的一个典型例子。

设计并演示用算符优先级对算术表达式的求解过程。

三、实验要求1、算法优先级别如下:'+', '-', '*', '/', '(', ')', '#''+' '>', '>', '<', '<', '<', '>', '>','-' '>', '>', '<', '<', '<', '>', '>','*' '>', '>', '>', '>', '<', '>', '>','/' '>', '>', '>', '>', '<', '>', '>','(' '<', '<', '<', '<', '<', '=', ' ',')' '>', '>', '>', '>', ' ', '>', '>','#' '<', '<', '<', '<', '<', ' ', '='2、以字符序列的形式从终端输入语法正确、不含变量的算术表达式,利用给出的算符优先级关系,实现对算术四则混合运算的求解过程。

计算器程序设计报告

计算器程序设计报告

计算器程序设计报告计算器程序设计报告1. 引言2. 设计目标本计算器程序的设计目标如下:提供简单的四则运算功能,包括加法、减法、乘法和除法;提供括号功能,可以进行复杂的运算操作;提供求幂功能,支持指数运算;接受用户输入,并返回计算结果。

3. 系统设计3.1 输入与输出本计算器程序采用命令行界面。

用户可以通过键盘输入数学表达式,程序将对表达式进行解析计算,并将结果输出到屏幕上。

3.2 表达式解析与计算本计算器程序的关键功能是解析并计算用户输入的数学表达式。

为了实现这一功能,我们需要进行以下步骤:1. 从用户输入中提取出数字、运算符和括号,并将它们按照正确的顺序组合成一个合法的数学表达式。

2. 对表达式中的括号进行处理,按照括号的优先级逐步计算子表达式的值,最终得到整个表达式的结果。

3. 对表达式中的运算符进行处理,按照运算符的优先级进行相应的运算。

3.3 错误处理为了提高用户体验和程序的健壮性,我们需要对用户输入进行合法性检查,并及时给出错误提示。

例如,输入的表达式中如果缺少括号或运算符,或者存在不支持的字符,程序应该能够及时发现并提示用户进行修正。

4. 系统实现本计算器程序的实现可以采用编程语言。

提供了丰富的字符串处理和数值计算的库,十分适合用来实现一个简单的计算器程序。

具体的实现过程如下:1. ,我们需要定义一个函数,用于接受用户输入的数学表达式,并返回计算结果。

这个函数可以使用的input函数实现。

2. 接下来,我们需要编写一个函数,用于对用户输入的表达式进行解析,并把它们按正确的顺序组合成一个合法的数学表达式。

这个函数可以使用的字符串处理函数实现。

3. 对于带有括号的表达式,我们可以使用递归的方式进行解析和计算。

递归函数可以反复调用自身,处理子表达式,并将最终的计算结果返回。

4. ,我们需要编写一个函数,用于对表达式中的运算符进行处理,并按照优先级进行相应的运算。

5. 测试与验证为了验证计算器程序的正确性和可靠性,我们需要进行一系列的测试。

程序设计综合实践课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
增加计算器的功能,添加求平方 根、求余、倒数的功能(读者也 可自行扩展。

计算器程序设计报告

计算器程序设计报告

题目一计算器1.1 题目简介用Java语言、MyEclipse工具、设计一个GUI简易计算器,编写计算器的基本运算的程序,用户可以通过鼠标一次输入参加计算的数值,进行加减乘除等混合运算,基本实现计算器的四则运算和三角函数运算功能以及开方和求对数的基本运算。

本计算器只适用十进制的运算,不限制十进制的大小。

编写本计算器运用java的类得调用和直接在程序中定义类,实现计算器的基本功能,在这个计算器中对于执行的操作可以进行复制和保存以便以后能直接查看运行结果本计算器保存没不得运行结果,只有点清除键是才可以清除每步的结果。

1.2 设计的内容、要求和目标设计内容:设计一个GUI简易计算器,用户可以通过鼠标一次输入参加计算的数值,进行加减乘除等混合运算。

设计要求:由于现代用户更倾向于由鼠标方便操作的图形用户界面,所以我们采用GUI来实现计算器,并采用Swing组件,AWT事件来处理等实现具体功能。

(1)、应具有相应的界面,可参考下图进行设计:(2)、操作符号定为:“+”“-”,“*”,“/”等。

(3)、用户通过点击面板中的各种组件输入的表达式,应在上方文本框。

(4)、党用户点击“=”时,文本框中之前的内容应清空,直接显示表达式运算结果。

例如:输入表达式“7*8”之后按“=”,显示结果“56”。

(5)、具有菜单栏,内有相应的编辑“复制”、“粘贴”等菜单,提供相应的功能。

设计目标:利用Java语言设计一个简单的计算器,以实现基本的加减乘除功能,还有sin、|cos、tan、log等算术运算;同时实现退格、清零等运算。

1.3总体设计1)、对计算器面板的整体布局首先是对计算器的整体面板进行一个简单的设计,整体布局是采用layout (边框布局)布局,对计算器中的一些数字按钮和运算符按钮采用gridlayout 布局(网格布局)。

2)、创建实现程序所需的类整理思路,确定一个主类CalculatorWindow,然后对Dialog、HandleBack、HandleClear、HandleCos、HandleCot、HandleSin、HandleTan、HandleDigit、HandleDot、HandleDownNumber、HandleEquality、HandleLog、HandleOperation、HandlePOrN、HandlePositiveOrNegative、NumberButton、OperationButton、SelectJTree等类的创建。

计算器实验报告

计算器实验报告

题目:界面计算器学生姓名:专业:学号:指导老师:1.实验目的:设计一个简单的计算器程序,实现简单的计算功能。

2.实验内容:(1)体系设计:程序是一个简单的计算器,能正确输入数据,能实现加、减、乘、除等算术运算,运算结果能正确显示。

(2)设计思路:1)先在Visual C++ 6.0中建立一个MFC工程文件,名为calculator;2)在对话框中添加适当的编辑框、按钮、静态文件、复选框和单选框;3)设计按钮,并修改其相应的ID与Caption;4)选择和设置各控件的单击鼠标事件;5)为编辑框添加double类型的关联变量m_edit1;6)在calculatorDlg.h中添加math.h头文件,然后添加public成员;7)打开calculatorDlg.cpp文件,在构造函数中,进行成员初始化和完善各控件的响应函数代码.3.程序调试4.附录添加的public成员:double tempvalue; //存储中间变量double result; //存储显示结果的值int sort; //判断后面是何种运算:1.加法2.减法 3.乘法 4.除法int append; //判断后面是否添加数字成员初始化:CCalculatorDlg::CCalculatorDlg(CWnd* pParent/*=NULL*/): CDialog(CCalculatorDlg::IDD, pParent){//{{AFX_DATA_INIT(CCalculatorDlg)m_edit1 = 0.0;//}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);tempvalue=0;result=0;sort=0;append=0;}各控件响应函数代码:void CCalculatorDlg::OnButton1() //按钮“1”{// TODO: Add your control notification handler code hereif(append==1)result=0;result=result*10+1;m_edit1=result;append=0;UpdateData(FALSE);void CCalculatorDlg::OnButton2() //按钮“2”{// TODO: Add your control notification handler code hereif(append==1)result=0;result=result*10+2;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnButton3() //按钮“3”{// TODO: Add your control notification handler code hereif(append==1)result=0;result=result*10+3;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnButton4() //按钮“4”// TODO: Add your control notification handler code hereif(append==1)result=0;result=result*10+4;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnButton5() //按钮“5”{// TODO: Add your control notification handler code hereif(append==1)result=0;result=result*10+5;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnButton6() //按钮“6”{// TODO: Add your control notification handler codehereif(append==1)result=0;result=result*10+6;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnButton7() //按钮“7”{// TODO: Add your control notification handler code hereif(append==1)result=0;result=result*10+7;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnButton8() //按钮“8”{// TODO: Add your control notification handler code hereif(append==1)result=0;result=result*10+8;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnButton9() //按钮“9”{// TODO: Add your control notification handler code hereif(append==1)result=0;result=result*10+9;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnBUTTONzero() //按钮“0”{// TODO: Add your control notification handler code hereif(append==1)result=0;result=result*10+0;m_edit1=result;append=0;UpdateData(FALSE);}void CCalculatorDlg::OnBUTTONequal() //按钮“=”{// TODO: Add your control notification handler code hereswitch(sort){case 1:result=result+tempvalue;break;case 2:result=tempvalue-result;break;case 3:result=result*tempvalue;break;case 4:result=tempvalue/result;break;}m_edit1=result;sort=0;append=1;UpdateData(FALSE);}void CCalculatorDlg::OnBUTTONclean() //按钮“C”{// TODO: Add your control notification handler code heretempvalue=0;result=0;m_edit1=0.0;UpdateData(FALSE);}void CCalculatorDlg::OnBUTTONplus() //按钮“+”{// TODO: Add your control notification handler code heresort=1;tempvalue=result;m_edit1=0;append=1;}void CCalculatorDlg::OnBUTTONminus() //按钮“-”{// TODO: Add your control notification handler code heresort=2;tempvalue=result;m_edit1=0;append=1;}void CCalculatorDlg::OnBUTTONmulti() //按钮“*”{// TODO: Add your control notification handler code heresort=3;tempvalue=result;m_edit1=0;append=1;}void CCalculatorDlg::OnBUTTONdiv() //按钮“/”{// TODO: Add your control notification handler code heresort=4;tempvalue=result;m_edit1=0;append=1;}10。

计算器设计报告.doc

计算器设计报告.doc

课程设计报告——计算器编程计算器系统编程设计一、设计背景:课堂所学与实际需求相结合,计算器的使用频率高 二、主要功能:能进行基本运算和稍复杂的操作 二、系统结构:三、设计说明 (一)控件的应用1、菜单编辑器的应用创建三个主菜单 ,分别命名为“编辑”、“查看”、“帮助” A 、“编辑”包含两个子菜单:复制、粘贴可 显示数字的 文本框 可操作的控件 可 显示数字的 文本框 可供选择的单选按钮 可操作的控件计算器主界面编辑 查看 帮助复制 粘贴标准型 科学型 辅导老师关于计算器B、“查看”标准型里包含三个子菜单:标准型、科学型、数字分组,科学型里还包括进制转换及角度转换的子菜单C、“帮助”包含两个子菜单:辅导老师、关于计算器2、文本框的应用普通型和科学型中各有一个,显示单击命令按钮的内容及运算结果3、命令按钮的应用通过创建数字按钮、算术运算按钮、函数运算等按钮,实现计算器的运算操作及窗体的转换4、单选按钮的应用在科学计算器中设置不同进制的转换、角度的转换5、标签的应用通过是否显示字母M表达数据是否被暂存(二)系统设计及实现1、主界面设计显示标准型的界面,通过菜单“查看”中的子菜单“科学型”及菜单“帮助”中的两个子菜单及期中的“返回”按钮实现窗体的转换2、工程的创建步骤如下:(1)新建一个“标准EXE”工程。

(2)添加4个子窗体(3)对所有的窗体进行简单的属性设置,如下表默认名称(Name)标题(Caption)Form1 计算器(1)Form1 计算器(2)Form1 辅导老师Form1 关于计算器3、菜单的创建(1) 标准型通过“菜单编辑器”创建,如下表标题(Caption)名称(Name)快捷键(ShortCut)编辑Edit……复制Copy Ctrl+C……粘贴Paste Ctrl+V查看View……标准型Biao……科学型Ke……数字分组Identify帮助Help……辅导老师Teacher……关于计算器About(2)科学型在查看菜单中增添了部分子菜单,如下表标题(Caption)名称(Name)快捷键(ShortCut)十六进制Liu F5十进制Shi F6八进制Ba F7二进制Er F8角度Jiao F2弧度Hu F3梯度Ti F44、窗体的设计(1)标准型标准型计算器的功能由“计算器(1)”窗体完成,用到的控件主要有:菜单、命令按钮、标签、文本框。

计算器程序设计实验报告

计算器程序设计实验报告

课程设计报告Windows程序设计基础计算器程序设计实验报告院(系):计算机与信息工程学院专业:计算机科学与技术班级:13计科班学号:20131104765姓名:娄心玲指导教师:朝力萌完成日期:2014/12/20目录第1章概要设计 (2)1.1题目的容与要求 (2)1.2总体结构 (2)第2章详细设计 (3)2.1主模块 (3)第3章调试分析 (5)第4章使用说明与执行结果 (6)第1章概要设计1.1题目的容与要求容:本试验是基于microsoft visual c++ 2010的MFC平台设计并制作简易计算器。

本设计涉及绘制简易简易计算器图形,设置按钮单机事件,相应鼠标单击响应事件。

要求:了解visual 2010 C++的应用程序,系统的学习面向对象程序思想,了解MFC结构,逐步的了解逐步熟悉可视化编程环境Visual C++。

1.2总体结构第2章详细设计2.1主模块等于号的函数类的编写://"="UpdateData(true);if(i==1){temp=_ttof(m_str)+temp;m_str.Format(L"%lf",temp);}if(i==2){temp=temp-_ttof(m_str);m_str.Format(L"%lf",temp);}if(i==3){temp=_ttof(m_str)*temp;m_str.Format(L"%lf",temp);}if(i==4){if(_ttof(m_str)==0){m_str=L"除数不能为零";UpdateData(false);}else{temp=temp/_ttof(m_str);m_str.Format(L"%lf",temp);}}UpdateData(false);z=0;}第3章调试分析测试12/0得到的结果测试:第4章使用说明与执行结果运行操作及结果:二.课程设计小结在实验中发现——分析——总结的问题有:在整个计算器的设计过程中,由于不能熟练的运用函数,导致程序过分复杂,不够简洁。

计算器设计实验报告

计算器设计实验报告

计算器设计实验报告《计算器设计实验报告》摘要:本实验旨在设计一个简单的计算器,并测试其功能和准确性。

实验过程中,我们使用了基本的电子元件和逻辑门电路来实现计算器的各种功能。

经过测试,我们发现设计的计算器能够准确地进行加减乘除等运算,并且在使用过程中表现稳定可靠。

通过本实验,我们对计算器的设计和原理有了更深入的了解,并且掌握了一定的电子电路设计和测试技能。

引言:计算器是现代生活中不可或缺的工具,它能够帮助人们进行各种数学运算,提高工作和学习效率。

在本实验中,我们将设计一个简单的计算器,并测试其功能和准确性。

通过这个实验,我们可以更深入地了解计算器的原理和设计,为今后的电子电路设计和实验打下基础。

材料和方法:1. 电子元件:逻辑门、电阻、电容、LED等2. 电路板和连接线3. 电源和示波器4. 计算器设计图纸和电路原理图实验步骤:1. 根据设计图纸和电路原理图,连接各种电子元件,组装成一个计算器电路。

2. 使用电源给电路供电,并使用示波器测试电路的输出波形和稳定性。

3. 进行加减乘除等运算测试,记录计算器的准确性和稳定性。

4. 对计算器进行长时间稳定性测试,观察其在长时间使用中的表现。

实验结果:经过测试,我们发现设计的计算器能够准确地进行加减乘除等运算,并且在使用过程中表现稳定可靠。

电路的输出波形清晰,没有明显的波动和噪声。

在长时间稳定性测试中,计算器表现良好,没有出现明显的故障和失效现象。

讨论:通过本实验,我们对计算器的设计和原理有了更深入的了解,并且掌握了一定的电子电路设计和测试技能。

在今后的学习和工作中,我们可以根据这些知识和技能,设计和制作更复杂和功能更强大的计算器和其他电子设备。

结论:本实验设计了一个简单的计算器,并测试了其功能和准确性。

经过测试,我们发现设计的计算器能够准确地进行加减乘除等运算,并且在使用过程中表现稳定可靠。

通过这个实验,我们对计算器的设计和原理有了更深入的了解,并且掌握了一定的电子电路设计和测试技能。

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

计算器程序设计报告计算器是一种在日常生活中很常用的计算工具,它在计算方面给了我们提供很大的方便。

本程序的功能包括:(1)加,减,乘,除运算,正弦,余弦,正切,余切,反正切,反余切,反正弦,反余弦,自然对数,以10为底的对数还有阶乘等函数功能。

(2)还包括存储清,存储显示,存储相加。

“计算器”是一个关于多种控件,以及控件数组应用的程序,它包含许对字符串的处理,多模块程序设计,数学函数的使用。

它所需知识点较多,必须对各个方面都有所了解.数学模型:主界面界面:进制转化界面数学函数代码代码:存储清代码进制转化代码第一步,要编辑计算器界面,如右图,对于界面上的按钮较多,我们可以分成四组,这就是控件数组的使用,而且每个按钮的属性都一一设置,而且要调入图片.第二个界面如右图比较简单,只是一些普通的控件.计算器是一个输入原始数据,运算中间数据和结果数据都显示在窗口顶部的同一个文本框的工具,这就要求我们可以把文本框的内容付给两个不同的变量,对于这一点我们就可以用一个逻辑变量来实现.比如, If not boolean str1=strElse str2=str计算器的主要功能就是运算,但是任何一个数值的输入都是以字符串的形式进行的,而字符串是无法参与运算的,所以必须用CInt()转换成整形变量,而输出时必须用CStr()转化成字符串的形式输出,更为麻烦的是,在进行进制转换时,两种变量之间的转换更为频繁。

在编程过程中要时刻注意!就拿一个简单的程序中的一部分来说吧:If not boolean then str=str1Else str=str2Str=text1.textn=CInt(str) ‘“将其转换成整形变量"…….t4 =str( ) ‘“ 将返回值转换成字符串"计算器的功能程序简单易懂,但编制过程极为烦琐,我在编程的过程中,体会最深的就是其过程有重复,但又不得再编,在这里尤其要注意,有些过程虽然相似,但它们却存在着质的区别,就拿删除按扭来说吧,"C","0->M","CE","->"按扭都有删除的功能,在这里我就它们的区别作一下详细介绍: 将"C","CE","->"作为一个控件数组,其程序如下:If not boolean str1=str else str2=strSelect Case IndexCase 0str1=" ",str2=" ", Text1.text=" " "C"键Case1str=" " "CE"键Case2str=Left(str,len(str)-1) "->"键而"0->M"在另一个数组控件中,其程序的一部分如下:Case0n4=0: Text1.text="0"可见它们的代码是存在区别的,这就要求在编程时弄清楚它们的区别,不可想当然把同一种代码复制过来.这里我再介绍一下小数点的使用Private Sub Command2_Click(Index As Integer)If Index<10 Thenstr=str+CStr(Index) "输入数字"ElseIf InStr(str,".")=0 Then str=str+"." "输入小数点"End IfIf Len(str)>1 And Left(str,1)="0" And Mid(str,2,1)<>"."Thenstr=Right(str,Len(str)-1) "删除前面多余的0"End IfText1.text=str "显示输入的数据 "If not boolean Then str1=str Else str2=str "用两个字符串变量存放"End Sub计算器虽复杂,但大部分还是比较简单的,最难的地方就是进制转换器的编码了,要编好这一部分必须对各进制之间的转换关系了如指掌.其中各个进制都和二进制有着直接的转换关系.而其他三个之间都不可直接进行转换.对于不能直接转化的,可以间接转化,例如,可以将十六进制先转化成十进制然后再转化成八进制.ElseIf Option4 = True Thent4 = ""str = Text1.TextDim p As Integer, q As Longq = 0Do While str <> "" ‘把输入的字母先转化为对应的数t = Right(str, 1)If t = "a" Thenn = 10ElseIf t = "b" Thenn = 11ElseIf t = "c" Thenn = 12ElseIf t = "d" Thenn = 13ElseIf t = "e" Thenn = 14ElseIf t = "f" Thenn = 15Else: n = CInt(t)End Ifq = q + n * 16 ^ (p)str = Left(str, Len(str) - 1)’从后逐步取出每个字符p = p + 1’指数从后依次加一Loopm = q ’十六进制转成了十进制Do While m <> 0For m1 = 1 To 3n = m Mod 2m = m \ 2int1 = n * 2 ^ (m1 - 1)十进制再转化为八进制int2 = int2 + int1Nextt3 = CStr(int2)t4 = t3 + t4t3 = ""int1 = 0int2 = 0LoopText2.Text = t4以下是用来判断输入的字符是否符合所选择进制的要求的,如果不符和就会出现一个对话框同时删除所输入的字符。

Private Sub Text1_Change()str = Text1.Textt = Right(str, 1)If t <> "" Thenn = Asc(s) 找出所输入数字的ASCII码Else: Exit SubEnd IfIf Option1 = True ThenIf n < 48 Or n > 49 Then 与符合要求的比较,排除符合的MsgBox " 输入的数据不符和进制要求,请重新输入.", 16, "数据输入"Text1.Text = Left(str, Len(str) - 1) 删除最后一位End IfElseIf Option2 = True ThenIf n < 48 Or n > 55 ThenMsgBox" 输入的数据不符和进制要求,请重新输入.", 16, "数据输入"Text1.Text = Left(str, Len(str) - 1)End IfElseIf Option3 = True ThenIf n < 48 Or n > 57 ThenMsgBox " 输入的数据不符和进制要求,请重新输入.", 16, "数据输入"Text1.Text = Left(str, Len(str) - 1)End IfElseIf Option4 = True ThenIf n < 48 Or (n > 57 And n < 97) Or n > 102 ThenMsgBox" 输入的数据不符和进制要求,请重新输入.", 16, "数据输入"Text1.Text = Left(str, Len(str) - 1)End IfEnd IfEnd Sub通过此次编程,我知道了它的难处,我在参考了前人的基础上加以摸索,并对前人的不足加以改善,但是并没有做到十分完美,还是有一些不足之处,这也是将来要努力的地方。

以下是代码主窗体Option Explicit '强制申明变量Dim str, str1, str2, str3, str4 As StringDim x1, x2, x3, x4, p As DoubleDim j, k, x, int1 As LongDim w As BooleanPrivate Sub Text1_Change() '调节输入的内容和输出的结果End SubPrivate Sub Command2_Click(Index As Integer) '函数转换If Not w Then str = str1 Else str = str2str = Text1.Textx = strSelect Case IndexCase 0 ' sin函数str = CStr(Sin(x))Case 1str = CStr(Cos(x)) 'cos函数Case 2str = CStr(Tan(x)) 'tan函数Case 3str = CStr(1 / Tan(x)) 'ctg函数Case 4str = CStr(1 / Cos(x)) ' sec函数Case 5k = 1For j = 1 To x '阶乘运算k = j * kNextstr = CStr(k)Case 6p = 3.1415926535898 '边界限定If x > 1 Or x < -1 ThenMsgBox "数据超出反正弦的数值范围,请重新输入", 0, "出错提醒" ElseIf x = 1 Thenstr = CStr(p / 2)ElseIf x = -1 Then '限定反三角的范围str = CStr(-p / 2)Elsestr = CStr(Atn(x / Sqr(1 - x * x)))End IfCase 7p = 3.1415926535898 '边界限定If x > 1 Or x < -1 ThenMsgBox "数据超出反余弦的数值范围,请重新输入", 0, "出错提醒" ElseIf x = 1 Thenstr = CStr(0)ElseIf x = -1 Thenstr = CStr(p)Elsestr = CStr(Atn(-x / Sqr(1 - x * x))) + 2 * Atn(1)End IfCase 8str = CStr(Atn(x))Case 9str = (Atn(x) + 2 * Atn(1))Case 10If x <= 0 ThenMsgBox "请重新输入一个正数", 0, "出错提醒" 'Log函数Elsestr = CStr(Log(x) / Log(10))End IfCase 11If x <= 0 ThenMsgBox "请重新输入一个正数", 0, "出错提醒"Else 'Ln函数str = CStr(Log(x))End IfEnd SelectText1.Text = strstr1 = strstr = ""End SubPrivate Sub Command3_Click(Index As Integer) '关于小数点的使用Text1.Text = "" '"输入数字"If Index < 10 Thenstr = str + CStr(Index)ElseIf InStr(str, ".") = 0 Then str = str + "." '"输入小数点"End IfIf Len(str) > 1 And Left(str, 1) = "0" And Mid(str, 2, 1) <> "." Then str = Right(str, Len(str) - 1) '"删除前面多余的0"End IfText1.Text = strIf Not w Then str1 = str Else str2 = strEnd SubPrivate Sub Command4_Click(Index As Integer)If str2 <> "" Thenx1 = Val(str1): x2 = Val(str2)Select Case int1Case 0If x2 = 0 ThenMsgBox "除数不能为0!", 16, "计算器"Exit SubEnd Ifx3 = x1 / x2Case 1x3 = x1 * x2Case 2x3 = x1 + x2 '加减乘除运算Case 3x3 = x1 - x2End Selectstr1 = CStr(x3)str2 = "": Text1.Text = "": w = True: int1 = Indexstr = ""Elsestr2 = "": Text1.Text = "": w = True: int1 = Indexstr = ""End IfEnd SubPrivate Sub Command5_Click(Index As Integer)Select Case Index '“M+”按钮Case 0x4 = 0: Text1.Text = "0" '“0->M”按钮Case 1Text1.Text = CStr(x4) '“RM”按钮Case 2x4 = x4 + Val(Text1.Text)Text1.Text = "0"End Selectstr = ""End SubPrivate Sub Command6_Click()str = Text1.TextIf Len(str) > 0 And Left(str, 1) = "-" Then '负号的使用str = Right(str, Len(str) - 1)Elsestr = "-" & strEnd IfText1.Text = strIf Not w Then str = str1 Else str = str2str = ""End SubPrivate Sub Command8_Click() '“C”按钮Text1.Text = "0": str1 = "": w = Falsestr2 = ""End SubPrivate Sub Command9_Click() '“CE"按钮Text1.Text = str1: str2 = ""End SubPrivate Sub Command1_Click() 'OFF按钮Unload frmcalEnd SubPrivate Sub Command10_Click() '->按钮str3 = Text1.Textstr3 = Left(str3, Len(str3) - 1)If str3 = "" ThenText1.Text = "0"ElseText1.Text = str3End Ifstr = str3End SubPrivate Sub Command11_Click() '=按钮If Len(Trim(str1)) = 0 Or Len(Trim(str2)) = 0 Thenw = FalseExit SubEnd Ifx1 = Val(str1): x2 = Val(str2)Select Case int1Case 0If x2 = 0 ThenMsgBox "除数不能为0!", 16, "计算器"Exit Sub '防止除数为零End Ifx3 = x1 / x2Case 1x3 = x1 * x2Case 2x3 = x1 + x2Case 3x3 = x1 - x2End SelectText1.Text = CStr(x3)str1 = Text1.Textstr2 = ""str = ""w = FalseEnd SubPrivate Sub Command12_Click() '显示进制转换窗口formjdzh.ShowEnd Sub进制转化窗体Option ExplicitDim str, t, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11 As String Dim n, n1, n2, n3, m, m1, m2, int1, int2, int3 As LongPrivate Sub Command1_Click() '转换成二进制str = Text1.TextIf Option1 = True Then '输入二进制数Text2.Text = Text1.Text '结果不变ElseIf Option2 = True Then '八进制转换成二进制t4 = ""Do While str <> ""t = Right(str, 1)n = CInt(t)For m = 1 To 3t2 = CStr(n Mod 2)n = n \ 2t3 = t2 + t3Nextt4 = t3 + t4str = Left(str, Len(str) - 1)t3 = ""LoopIf Left(t4, 1) = "0" And Left(t4, 2) <> "00" Thent4 = Right(t4, Len(t4) - 1)ElseIf Left(t4, 2) = "00" And Left(t4, 3) <> "000" Thent4 = Right(t4, Len(t4) - 2)End IfText2.Text = t4ElseIf Option3 = True Then '十进制转换成二进制 t2 = ""m = CInt(str)Do While m <> 0n = m Mod 2m = m \ 2t1 = CStr(n)t2 = t1 + t2LoopText2.Text = t2ElseIf Option4 = True Then '十六进制转换成二进制 t4 = ""str = Text1.TextDo While str <> ""t = Right(str, 1)If t = "a" Thenn = 10ElseIf t = "b" Thenn = 11ElseIf t = "c" Thenn = 12ElseIf t = "d" Thenn = 13ElseIf t = "e" Thenn = 14ElseIf t = "f" Thenn = 15Else: n = CInt(t)End IfFor m = 1 To 4t2 = CStr(n Mod 2)n = n \ 2t3 = t2 + t3Nextt4 = t3 + t4str = Left(str, Len(str) - 1)t3 = ""LoopIf Left(t4, 1) = "0" And Left(t4, 2) <> "00" Thent4 = Right(t4, Len(t4) - 1)ElseIf Left(t4, 2) = "00" And Left(t4, 3) <> "000" Thent4 = Right(t4, Len(t4) - 2)ElseIf Left(t4, 3) = "000" And Left(t4, 4) <> "0000" Thent4 = Right(t4, Len(t4) - 3)End IfText2.Text = t4End IfEnd SubPrivate Sub Command2_Click() '转换成八进制str = Text1.TextIf Option1 = True Then '二进制转换成八进制 t4 = ""Do While str <> ""If Len(str) = 1 Thenstr = "00" + strElseIf Len(str) = 2 Thenstr = "0" + strEnd Ift = Right(str, 3)For m = 1 To 3t2 = Right(t, 1)n = CInt(t2)int1 = n * 2 ^ (m - 1)int2 = int2 + int1t2 = ""t = Left(t, Len(t) - 1)Nextt3 = CStr(int2)t4 = t3 + t4str = Left(str, Len(str) - 3)t3 = ""int1 = 0int2 = 0LoopText2.Text = t4ElseIf Option2 = True Then '八进制转换成八进制,结果不变 Text2.Text = Text1.TextElseIf Option3 = True Then '十进制转换成八进制t4 = ""m = CInt(str)Do While m <> 0For m1 = 1 To 3n = m Mod 2m = m \ 2int1 = n * 2 ^ (m1 - 1)int2 = int2 + int1Nextt3 = CStr(int2)t4 = t3 + t4t3 = ""int1 = 0int2 = 0LoopText2.Text = t4ElseIf Option4 = True Then '十六进制转换成八进制t4 = ""str = Text1.TextDim p As Integer, q As Longq = 0Do While str <> ""t = Right(str, 1)If t = "a" Thenn = 10ElseIf t = "b" Thenn = 11ElseIf t = "c" Thenn = 12ElseIf t = "d" Thenn = 13ElseIf t = "e" Thenn = 14ElseIf t = "f" Thenn = 15Else: n = CInt(t)End Ifq = q + n * 16 ^ (p)str = Left(str, Len(str) - 1)p = p + 1Loopm = qDo While m <> 0For m1 = 1 To 3n = m Mod 2m = m \ 2int1 = n * 2 ^ (m1 - 1)int2 = int2 + int1Nextt3 = CStr(int2)t4 = t3 + t4t3 = ""int1 = 0int2 = 0LoopText2.Text = t4End IfEnd SubPrivate Sub Command3_Click() '转换成十进制str = Text1.TextText2.Text = ""If Option1 = True Then '二进制转换成十进制 t4 = ""Do While str <> ""t = Right(str, 1)m = CInt(t)n = m * 2 ^ (int1)int1 = int1 + 1int2 = int2 + nstr = Left(str, Len(str) - 1)Loopt4 = CStr(int2)Text2.Text = t4int2 = 0int1 = 0ElseIf Option2 = True Then '八进制转换成十进制t4 = ""Do While str <> ""t = Right(str, 1)n = CInt(t)For m = 1 To 3m1 = n Mod 2n = n \ 2int1 = m1 * 2 ^ n2int2 = int2 + int1n2 = n2 + 1Nextint3 = int2 + int3int2 = 0int1 = 0t4 = CStr(int3)str = Left(str, Len(str) - 1)LoopText2.Text = t4n2 = 0int3 = 0ElseIf Option3 = True Then '十进制转换成十进制,结果不变 Text2.Text = Text1.TextElseIf Option4 = True Then '十六进制转换成十进制int2 = 0Dim s As IntegerDo While str <> ""t = Right(str, 1)If t = "a" Thenn = 10ElseIf t = "b" Thenn = 11ElseIf t = "c" Thenn = 12ElseIf t = "d" Thenn = 13ElseIf t = "e" Thenn = 14ElseIf t = "f" Thenn = 15Else: n = CInt(t)End Ifint2 = int2 + n * 16 ^ (s)str = Left(str, Len(str) - 1)s = s + 1LoopText2.Text = int2n2 = 0int3 = 0End IfEnd SubPrivate Sub Command4_Click() '转换成十六进制str = Text1.TextText2.Text = ""If Option1 = True Then '二进制转换成十六进制 t4 = ""Do While str <> ""If Len(str) = 2 Thenstr = "00" + strElseIf Len(str) = 3 Thenstr = "0" + strElseIf Len(str) = 1 Thenstr = "000" + strEnd Ift = Right(str, 4)For m = 1 To 4t2 = Right(t, 1)n = CInt(t2)int1 = n * 2 ^ (m - 1)int2 = int2 + int1t2 = ""t = Left(t, Len(t) - 1)NextIf int2 = 10 Thent3 = "a"ElseIf int2 = 11 Thent3 = "b"ElseIf int2 = 12 Thent3 = "c"ElseIf int2 = 13 Thent3 = "d"ElseIf int2 = 14 Thent3 = "e"ElseIf int2 = 15 Thent3 = "f"Elset3 = CStr(int2)End Ift4 = t3 + t4int1 = 0int2 = 0t3 = ""str = Left(str, Len(str) - 4)t = ""LoopText2.Text = t4ElseIf Option3 = True Then '十进制转换成十六进制 n = CInt(str)t7 = ""Do While n <> 0For m = 1 To 4m1 = n Mod 2n = n \ 2int1 = m1 * 2 ^ (m - 1)int2 = int2 + int1NextIf int2 = 10 Thent6 = "a"ElseIf int2 = 11 Thent6 = "b"ElseIf int2 = 12 Thent6 = "c"ElseIf int2 = 13 Thent6 = "d"ElseIf int2 = 14 Thent6 = "e"ElseIf int2 = 15 Thent6 = "f"Else: t6 = CStr(int2)End Ift7 = t6 + t7t6 = ""int1 = 0int2 = 0str = Left(str, Len(str) - 1)LoopText2.Text = t7ElseIf Option2 = True Then '八进制转换成十六进制 t7 = ""t4 = ""Do While str <> ""t = Right(str, 1)n = CInt(t)t2 = CStr(n Mod 2)n = n \ 2t3 = t2 + t3Nextt4 = t3 + t4str = Left(str, Len(str) - 1)t3 = ""LoopIf Left(t4, 1) = "0" And Left(t4, 2) <> "00" Thent4 = Right(t4, Len(t4) - 1)ElseIf Left(t4, 2) = "00" And Left(t4, 3) <> "000" Then t4 = Right(t4, Len(t4) - 2)End IfDo While t4 <> ""If Len(t4) = 2 Thent4 = "00" + t4ElseIf Len(t4) = 3 Thent4 = "0" + t4ElseIf Len(t4) = 1 Thent4 = "000" + t4End Ift1 = Right(t4, 4)For m = 1 To 4t5 = Right(t1, 1)n1 = CInt(t5)int1 = n1 * 2 ^ (m - 1)int2 = int2 + int1t5 = ""t1 = Left(t1, Len(t1) - 1)NextIf int2 = 10 Thent6 = "a"ElseIf int2 = 11 Thent6 = "b"ElseIf int2 = 12 Thent6 = "c"ElseIf int2 = 13 Thent6 = "d"ElseIf int2 = 14 Thent6 = "e"ElseIf int2 = 15 Thent6 = "f"ElseEnd Ift7 = t6 + t7int1 = 0int2 = 0t4 = Left(t4, Len(t4) - 4)t1 = ""LoopText2.Text = t7ElseIf Option4 = True Then '十六进制转换成十六进制结果不变Text2.Text = Text1.TextEnd IfEnd SubPrivate Sub Text1_Change()str = Text1.Textt = Right(str, 1)If t <> "" Thenn = Asc(t)Else: Exit SubEnd IfIf Option1 = True Then '输入二进制数If n < 48 Or n > 49 Then '输入的数不是0或1时,报错MsgBox "输入的数据不符合所选择的进制要求,请重新输入", 16, "数据输入"Text1.Text = Left(str, Len(str) - 1)End IfElseIf Option2 = True Then '输入八进制数If n < 48 Or n > 55 Then '不在0-7之间时MsgBox "输入的数据不符合所选择的进制要求,请重新输入", 16, "数据输入" Text1.Text = Left(str, Len(str) - 1)End IfElseIf Option3 = True Then '输入十进制数If n < 48 Or n > 57 Then '不在0-9之间时MsgBox "输入的数据不符合所选择的进制要求,请重新输入", 16, "数据输入" Text1.Text = Left(str, Len(str) - 1)End IfElseIf Option4 = True Then '输入十六进制数If n < 48 Or (n > 57 And n < 97) Or n > 102 Then '不在0-9或不在a-f之间时MsgBox "输入的数据不符合所选择的进制要求,请重新输入", 16, "数据输入" Text1.Text = Left(str, Len(str) - 1)End IfEnd IfEnd SubPrivate Function se(a As String) As StringDim s As String, d As Double, f As String, q As Stringd = Val(a)Dof = f & d Mod 2d = d \ 2Loop Until d = 0For d = Len(f) To 1 Step -1q = Mid(f, d, 1)s = s & qNextse = sEnd FunctionPrivate Function be(str As String) As Stringt4 = ""Do While str <> ""t = Right(str, 1)n = CInt(s)For m = 1 To 3t2 = CStr(n Mod 2)n = n \ 2t3 = t2 + t3Nextt4 = t3 + t4str = Left(str, Len(str) - 1)t3 = ""LoopIf Left(t4, 1) = "0" And Left(t4, 2) <> "00" Thent4 = Right(t4, Len(t4) - 1)ElseIf Left(s4, 2) = "00" And Left(t4, 3) <> "000" Then t4 = Right(t4, Len(t4) - 2)End Ifbe = t4End FunctionPrivate Function i(a As String) As Stringt2 = ""m = CInt(str)Do While m <> 0n = m Mod 2m = m \ 2t1 = CStr(n)t2 = t1 + t2LoopText2.Text = t2End Function。

相关文档
最新文档