VB6.0的小程序计算器
- 格式:doc
- 大小:51.50 KB
- 文档页数:6
VB程序简单计算器最近学完VB,感觉很好,写了个计算器程序,虽然花了不少时间,可也着实高兴。
其中遇到很多问题,最终也在各种资料中得到解决。
现在附上截图和全部代码,希望和大家交流一下,相互学习。
也希望能帮助到准备做计算器的同学。
计算器最终执行文件图标:计算器包括三个窗体(form):主页面form1:其中的“欢迎各位到此一游”是闪烁效果,呵呵,是自己想着无聊,就想出这么个玩意。
与计算器计算功能无关。
具体实现看下来代码。
Form1的实现代码:Public haha As BooleanPrivate Sub Command1_Click()Dim a As Integera = MsgBox("亲爱的你,真的想要退出本系统吗?", _vbYesNo + vbInformation + vbDefaultButton1, "退出系统前的询问撒(⊙o⊙)")If a = 6 Then '表示当选择“是”的时候的返回值EndEnd IfEnd SubPrivate Sub Command2_Click()Me.HideForm2.ShowEnd SubPrivate Sub Command3_Click()Me.HideForm3.ShowEnd SubPrivate Sub Form_Load()haha = FalseEnd SubPrivate Sub Timer1_Timer()haha = Not hahaIf haha ThenLabel2.ForeColor = &HFF00FFElseLabel2.ForeColor = vbWhiteEnd IfEnd Sub有些像图像等一些可见的控件属性就没在代码里写了,直接在属性里设置了。
页面(form2):此页面将鼠标点上去,还有意想不到的效果喲。
全部代码为:Dim isFocus1, isFocus2 As BooleanPrivate Sub Command1_Click()If isFocus1 Then '判断焦点在那个文本框中,便于实现按钮输入Text1.Text = Text1.Text & 0End IfIf isFocus2 ThenText2.Text = Text2.Text & 0End IfEnd SubPrivate Sub Command10_Click() If isFocus1 ThenText1.Text = Text1.Text & 9 End IfIf isFocus2 ThenText2.Text = Text2.Text & 9 End IfEnd SubPrivate Sub Command11_Click() If isFocus1 ThenText1.Text = Text1.Text & "." End IfIf isFocus2 ThenText2.Text = Text2.Text & "." End IfEnd SubPrivate Sub Command12_Click() If isFocus1 ThenText1.Text = -Val(Text1.Text)End IfIf isFocus2 ThenText2.Text = -Val(Text2.Text)End IfEnd SubPrivate Sub Command13_Click()Dim a As Integera = Val(Text1.Text) + Val(Text2.Text)Text3.Text = Val(Text1.Text) & "+" & Val(Text2.Text) & "=" & aIf Text1.Text = "" Or Text2.Text = "" ThenMsgBox "哼哼,双目运算一定要是两个数喔" & vbCrLf & vbCrLf & _ "不用说,补上去是必须的撒", vbCritical, "温馨小提醒(*^__^*)" End IfEnd SubPrivate Sub Command14_Click()Dim a As Integera = Val(Text1.Text) - Val(Text2.Text)Text3.Text = Val(Text1.Text) & "-" & Val(Text2.Text) & "=" & aIf Text1.Text = "" Or Text2.Text = "" ThenMsgBox "哼哼,双目运算一定要是两个数喔" & vbCrLf & vbCrLf & _ "不用说,补上去是必须的撒", vbCritical, "温馨小提醒(*^__^*)" End IfEnd SubPrivate Sub Command15_Click()a = Val(Text1.Text) * Val(Text2.Text)Text3.Text = Val(Text1.Text) & "×" & Val(Text2.Text) & "=" & aIf Text1.Text = "" Or Text2.Text = "" ThenMsgBox "哼哼,双目运算一定要是两个数喔" & vbCrLf & vbCrLf & _ "不用说,补上去是必须的撒", vbCritical, "温馨小提醒(*^__^*)" End IfEnd SubPrivate Sub Command16_Click() '除法的特殊性,除数不能为零If Val(Text2.Text) Thena = Val(Text1.Text) / Val(Text2.Text)Text3.Text = Val(Text1.Text) & "÷" & Val(Text2.Text) & "=" & aIf Text1.Text = "" Or Text2.Text = "" ThenMsgBox "哼哼,双目运算一定要是两个数喔" & vbCrLf & vbCrLf & _ "不用说,补上去是必须的撒", vbCritical, "温馨小提醒(*^__^*)" End IfElseText3.Text = "无穷大∞"MsgBox "亲,除数不可以为零的哟!", vbInformation, "矮油,不得了嘞(*^__^*)"Text2.Text = ""Text2.SetFocusEnd IfEnd SubPrivate Sub Command17_Click() '实现清零,并将焦点给文本框1Text1.Text = ""Text2.Text = ""Text3.Text = ""Text1.SetFocusEnd SubPrivate Sub Command18_Click()Me.Hide '进入计算器1Form1.ShowEnd SubPrivate Sub Command2_Click() If isFocus1 ThenText1.Text = Text1.Text & 1 End IfIf isFocus2 ThenText2.Text = Text2.Text & 1 End IfEnd SubPrivate Sub Command3_Click() If isFocus1 ThenText1.Text = Text1.Text & 2 End IfIf isFocus2 ThenText2.Text = Text2.Text & 2 End IfEnd SubPrivate Sub Command4_Click() If isFocus1 ThenText1.Text = Text1.Text & 3 End IfIf isFocus2 ThenText2.Text = Text2.Text & 3 End IfEnd SubPrivate Sub Command5_Click() If isFocus1 ThenText1.Text = Text1.Text & 4 End IfIf isFocus2 ThenText2.Text = Text2.Text & 4 End IfEnd SubPrivate Sub Command6_Click() If isFocus1 ThenText1.Text = Text1.Text & 5 End IfIf isFocus2 ThenText2.Text = Text2.Text & 5 End IfEnd SubPrivate Sub Command7_Click() If isFocus1 ThenText1.Text = Text1.Text & 6 End IfIf isFocus2 ThenText2.Text = Text2.Text & 6 End IfEnd SubPrivate Sub Command8_Click() If isFocus1 ThenText1.Text = Text1.Text & 7 End IfIf isFocus2 ThenText2.Text = Text2.Text & 7 End IfEnd SubPrivate Sub Command9_Click() If isFocus1 ThenText1.Text = Text1.Text & 8End IfIf isFocus2 ThenText2.Text = Text2.Text & 8End IfEnd SubPrivate Sub Form_Load()isFocus1 = False: isFocus2 = FalseEnd SubPrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)Label4.ForeColor = vbBlackLabel4.FontUnderline = FalseLabel4.FontBold = FalseEnd SubPrivate Sub Label4_Click()Form3.ShowEnd SubPrivate Sub Label4_MouseMove(Button As Integer, Shift As Integer, X AsSingle, Y As Single)Label4.ForeColor = vbGreen Label4.FontUnderline = True Label4.FontBold = True End SubPrivate Sub Text1_GotFocus() isFocus1 = TrueisFocus2 = FalseEnd SubPrivate Sub Text2_GotFocus() isFocus2 = TrueisFocus1 = FalseEnd Sub页面(form3):这里面的亮点自己找哦。
《VB》课内实验报告学生姓名:及学号:学院:班级: 数学101课程名称:VB实验题目:控件数组的应用指导教师姓名及职称:2012年03月28日目录一、实验目的 (1)二、实验内容 (1)三、实验要点及说明 (1)四、实现方法 (1)五、实验结果 (2)六、源程序清单 (2)七、思考及总结 (4)一、实验目的1.掌握动态数组与静态数组的使用方法。
2.掌握控件数组的添加、删除以及使用方法。
3.掌握If语句、Select Case语句以及循环语句的使用。
4.掌握控件数组中索引号(Index)的作用。
二、实验内容1.制作计算器,完成十进制的加减乘除运算。
2.随机产生15个不重复的A-Z(包括A,Z)的大写字母,存放在字符数组中。
三、实验要点及说明1.利用数组控件完成计算器的制作。
(1)设计界面及设置属性界面设计中的显示部分要求用标签实现;运算符、数字分别使用控件数组实现;(2)编写代码图3-1 设计界面程序代码的任务是单击数字按钮和运算符按钮实现十进制的常规运算,同时要求做到实现正负号的转变、结果的标准输出以及除法中除数的检查等功能。
2.界面设计部分要求能够体现出字符数组中的内容,且实现随机不重复显示的功能,具体参数不做要求。
四、实现方法运行环境:Visual Basic运行开发环境;1.VB6.0窗体的属性设置运用复制的方法建立两个建立控件数组,编写代码。
2. 设置窗体的属性,添加一个文本框MultiLine属性设置成True,编写代码。
五、实验结果1. 能够完成十进制的加减乘除运算,可以判断被除数是否为零,如果为零,弹出对话框提示错误。
2.单击窗体随机出现15个不同的字母。
六、源程序清单1、源程序:Option Explicit ‘对所有变量进行显式声明Dim Num1 As Single, Num2 As Single ‘声明Num1,Num2为单精度浮点型变量Dim Flag As Boolean ‘声明Flag为布尔变量Dim Cul As Integer ‘声明Cul为整型变量Private Sub Command1_Click(Index As Integer) ‘Command1的单击事件Num1 = Val(Text1.Text) ‘Text1中的值赋给Num1Flag = True ‘Flag为真Cul = IndexEnd SubPrivate Sub _Click() ‘Command4的单击事件If InStr(Text1.Text, ".") = 0 And Text1.Text <> "" Then ‘如果Text1中没Text1.Text = Text1.Text + "." 有"."并且不为空,就在Text1中加一个"."End IfEnd SubPrivate Sub Command2_Click(Index As Integer)If Flag Then Text1.Text = "": Flag = False ‘如果Flag为真则Text1赋为空Text1.Text = Text1.Text + Command2(Index).Caption ‘如果为假Text1加End Sub Command2(Index) Private Sub Command5_Click() ‘Command5的单击事件的单击事件Text1.Text = "" ‘清空Text1,Num1, Num2的值Num1 = 0Num2 = 0End SubPrivate Sub Command6_Click() ‘Command6的单击事件Dim result As Single ‘声明result为单精度浮点型变量Num2 = Val(Text1.Text) ‘Text1中的值赋给Num2Flag = True ‘Flag b变为真Select Case Cul ‘Select循环Case 0: result = Num1 + Num2Case 1: result = Num1 - Num2Case 2: result = Num1 * Num2Case 3:If Num2 <> 0 Then ‘若分母为零提示result = Num1 / Num2ElseMsgBox "出错!被0除!"End IfEnd SelectIf result \ 1 <> result Then ‘如果result \ 1不等于result那么在result前Text1.Text = Format(result, "0.#") 加”0.”赋给Text1.TextElseText1.Text = Str(result) ‘否则直接将result转化成字符串赋给Text1.TextEnd IfEnd SubPrivate Sub Command3_Click() ‘Command3的单击事件If Text1.Text <> "" Then ‘如果Text1.Text不是空的If InStr( Text1.Text, "-") = 0 Then ‘Text1.Text中不包含"-"Text1.Text = "-" + Text1.Text ‘把"-" Text1.Text连接后赋给Text1.Text ElseText1.Text = Right(Text1.Text, Len(Text1.Text) - 1)End If ‘取Text1.Text中长度减1的字符赋给Text1.Text End IfEnd Sub2、源程序Private Sub Form_Click() ‘Form的单击事件Dim s(1 To 15) As String * 1, c As String * 1 ‘声明s,c为定长字符串Dim Found As Boolean ‘声明Found为布尔变量s(1) = chr(Int(Rnd * 26 + 65)) ‘将一随机字符赋给s(1)n = 2Do While n <= 15 ‘循环条件n<=15c = chr(Int(Rnd * 26 + 65)) ‘将一随机字符赋给cFound = FalseFor j = 1 To n – 1 ‘For循环If s(j) = c Then Found = TrueNext jIf Not Found Then ‘Found为假,进行下两行语句s(n) = cn = n + 1End IfLoopFor i = 1 To 15 ‘循环输出s(i)到Text1.Text中Text1.Text = Text1.Text & s(i)Next iEnd Sub七、思考及总结。
Vb 程序设计课程设计报告《科学计算器的设计》专业:工商管理类班级:1107班学号:110808703姓名:魏启岚指导教师:阮冰设计日期:2012年6月14日第一章:课程设计概述第二章:总体设计第三章:详细设计第四章:调试分析过程描述第五章:综合设计体会参考文献第一章:课程设计概述1.1、课程设计名称一、课程设计名称《科学计算器的设计》1.2、任务要求一、随着电子技术的发展,计算机的功能越来越强大,精度越来越高,性能越来越好,可以实现复杂的科学计算,Windows系统也自带了一个功能强大的计算器。
本次课设要设计一个科学计算器,除了基本的四则运算之外,还有三角与反三角、对数与反对数、乘方与幂运算等。
科学计算器除了具有普通计算器的标准功能之外,还具有很多其他数据计算功能。
本次课设设计的科学计算器包括以下功能:1.具有小数点后10位以上的精度。
2.可以直接输出随机数、圆周率、自然对数的底数和重力加速度等常用常数。
3.可以输入0~9、00、小数点等数字或数学符号,并能对数字取反。
4.能够计算加、减、乘、除四则运算。
5.可以计算倒数、平方、立方、开方和任意乘方或幂指运算,以及阶乘运算。
6.能够计算以10为底的对数和自然对数,以及自然对数为底的幂运算。
7.具有三角与反三角函数的计算功能,并能在角度、弧度和梯度之间进行换算。
8.可以将数据记录到内存中,并能将输入的数据和内存中的数据进行四则运算。
9.能够实现数据的统计计算,包括和、平均值和方差。
10.可以对计算或输入的结果进行复制,也能通过粘贴方式向计算器输入数字。
1.3、开发环境一、科学计算器主要在visual basic6.0中完成。
Visual Basic是一种由微软公司开发的包含协助开发环境的事件驱动编程语言。
从任何标准来说,VB都是世界上使用人数最多的语言——不仅是盛赞VB的开发者还是抱怨VB 的开发者的数量。
它源自于BASIC编程语言。
VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建ActiveX控件。
vb6.0开发实例-回复VB6.0开发实例-一个简单的计算器在VB6.0中,我们可以轻松地创建一个简单的计算器。
计算器是我们日常生活中常见的工具,让我们一步一步地在VB6.0中创建一个简单的计算器,来帮助我们理解和掌握VB编程的基础知识和技巧。
首先,我们需要创建一个新项目。
在VB6.0中,选择“新建”->“标准EXE”创建一个新的窗体应用程序。
接下来,我们需要在窗体上添加一些控件,如文本框、按钮等,以实现计算器的功能。
在VB6.0中,我们可以通过拖动控件到窗体上的方式来添加控件。
第一个控件是一个文本框,用于显示输入的数字和计算结果。
在工具箱中选择文本框控件,然后点击窗体上的位置来添加它。
第二个控件是数字按钮,用于输入数字。
在工具箱中选择按钮控件,然后点击窗体上的位置来添加一个按钮。
我们可以复制该按钮来创建其他数字按钮。
第三个控件是运算符按钮,用于进行加、减、乘、除等计算操作。
同样地,在工具箱中选择按钮控件,然后点击窗体上的位置来添加一个按钮,复制该按钮来创建其他运算符按钮。
接下来,我们需要为这些按钮添加事件处理程序,以实现相应的功能。
在VB6.0中,我们可以通过双击按钮来自动创建一个点击事件的处理程序。
在点击事件中,我们可以使用VB6.0提供的内置函数和运算符来编写计算逻辑。
例如,我们可以使用“+”运算符来进行两个数字的相加,并将结果显示在文本框中。
除了基本的运算功能外,我们还可以为计算器添加其他功能,如清除输入、退格、求平方根等。
这些功能可以使用VB6.0提供的其他内置函数和方法来实现。
最后,我们需要进行界面的美化和调整,以满足用户的需求和审美。
在VB6.0中,我们可以通过更改控件的属性、添加背景和图标等方式来实现界面的美化。
完成所有的功能和界面调整后,我们可以运行程序来测试计算器的功能。
在VB6.0中,我们可以点击“运行”按钮来启动程序,并进行测试和使用。
通过以上的步骤,我们就成功地在VB6.0中创建了一个简单的计算器。
用V B6.0编写简易计算器效果图:废话不多说,直接上步骤一、创建控件组1、创建控件组的方法??首先创建一个命令按钮,调整其大小(觉得合适就行),名称为Command1,Caption属性为数字 0 ;然后进行“复制”和“粘贴”,当选择“粘贴”时,出现对话框提示已有一个同名控件,询问是否创建控件组,选择“是”后,即创建了一个名为“Command”的控件组。
这时,第一个按钮的Index属性值默认为“0”,第二个的Index属性值自动设为“1”,并且大小与第一个按钮相同,只需修改其 Caption 属性为数字“1”并将其拖至合适位置即可。
此后继续使用“粘贴”的方法建立其他控件组中其余按钮,共20个按钮,每建立一个,就将它拖到合适处,并修改相应的Caption属性值。
二、编写代码Dim s1 As Single, s2 As Single, ysf As String'定义两个单精度数变量用与存放参与运算的数,一个字符型存放运算符Private Sub Command1_Click(Index As Integer)Text1.Text = Text1.Text & Command1(Index).Caption'将command1的单击事件与文本框显示的内容连接End SubPrivate Sub Command2_Click()Text1.Text = Text1.Text + "."If (InStr(Text1.Text, ".") = 1) Then'第一位不能为小数Text1.Text = ""End IfIf InStr(Text1.Text, ".") < Len(Text1.Text) Then '防止出现两个小数点Text1.Text = Left(Text1.Text, Len(Text1.Text) - 1)End IfEnd SubPrivate Sub Command3_Click()s2 = Val(Text1.Text) '开始加减乘除运算Select Case ysfCase "+"Text1.Text = s1 + s2Case "-"Text1.Text = s1 - s2Case "*"Text1.Text = s1 * s2Case "/"If s2 = 0 ThenMsgBox "分母不能为零!"Text1.Text = ""ElseText1.Text = s1 / s2End IfEnd SelectText1 = IIf(Left(Text1.Text, 1) = ".", 0 & Text1.Text, Text1.Text) '这个很关键,如果没有这个的话,得出小于1的小数前面没有0End SubPrivate Sub Command4_Click()If Text1.Text = "" Then '文本为空就结束Exit SubEnd IfText1.Text = Left(Text1.Text, Len(Text1.Text) - 1) '文本退一格End SubPrivate Sub Command5_Click()Text1.Text = "" '清除当前框内文本End SubPrivate Sub Command6_Click(Index As Integer)s1 = Val(Text1.Text) '将s1隐藏起来ysf = Command6(Index).CaptionText1.Text = ""End SubPrivate Sub Command7_Click()If Left(Text1.Text, 1) <> "-" Then '判断作为负数Text1.Text = "-" & Text1.TextElseText1.Text = Right(Text1.Text, Len(Text1.Text) - 1)End IfEnd SubPrivate Sub Command8_Click()Text1.Text = Text1.Text * Text1.Text '平方End Sub各位朋友,可以将红色代码复制到相应位置,不清楚的可以全选复制,但是一定要按照我的步骤和给的名称来哦!还可以再添加按钮Private Sub Command9_Click() '这是退出代码EndEnd Sub三、测试,成功的话给个好评哦!谢谢各位下载与支持!这个可以编写作为作业哦!。
使用VC6.0编写一个简易的计算器效果图第一步:启动Visual C++6.0第二步:新建一个工程第三步:选择MFC AppWizard[exe],给工程命名,点击确定。
第四步:点选“基本对话框”,然后点击“完成”。
切记:不要点“下一步”第五步:点击“确定”,就完成工程建立了!第六步:看到这个页面后,就进入了面板的设计。
通过旁边的“控件”在面板中放置相应的按钮,编辑框,文本框等内容。
(这里讲的简易计算器需要按钮,编辑框这两个控件。
一般如果有需要的话还可以加入文本框用于说明。
)第七步:对每个对象建立类向导,但编写计算器只限于编辑框。
点击进入类向导后,点击横向按钮中的第二个按钮,在“Control IDs”中找到编辑框对应的名字,没有前期改动过的,一般都是IDC_EDIT1,点击“IDC_EDIT1”出现的对话框中,Variable type中选择CString,命名。
点击“OK”。
最后编写代码了:将面板上面的所有按钮和编辑框全部双击一遍,就会在“计算器Dlg.CPP”文件中生成控制其功能的空函数。
你需要在这些空函数中写入相应的代码以实现按钮的功能。
(请着重看红色加粗部分的代码,那才是真正的精髓)以下是“计算器Dlg.CPP”文件全部程序代码// 计算器Dlg.cpp : implementation file//#include "stdafx.h"#include "计算器.h"#include "计算器Dlg.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endifclass CAboutDlg : public CDialog{public:CAboutDlg();// Dialog Data//{{AFX_DATA(CAboutDlg)enum { IDD = IDD_ABOUTBOX };//}}AFX_DATA//{{AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUALprotected:DECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD){}void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)END_MESSAGE_MAP()CMyDlg::CMyDlg(CWnd* pParent): CDialog(CMyDlg::IDD, pParent){//{{AFX_DATA_INIT(CMyDlg)num = _T("");//}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}void CMyDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CMyDlg)DDX_Text(pDX, IDC_EDIT1, num);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CMyDlg, CDialog)//{{AFX_MSG_MAP(CMyDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON1, OnButton1)ON_BN_CLICKED(IDC_BUTTON2, OnButton2)ON_BN_CLICKED(IDC_BUTTON3, OnButton3)ON_BN_CLICKED(IDC_BUTTON4, OnButton4)ON_BN_CLICKED(IDC_BUTTON5, OnButton5)ON_BN_CLICKED(IDC_BUTTON6, OnButton6)ON_BN_CLICKED(IDC_BUTTON7, OnButton7)ON_BN_CLICKED(IDC_BUTTON8, OnButton8)ON_BN_CLICKED(IDC_BUTTON9, OnButton9)ON_BN_CLICKED(IDC_BUTTON10, OnButton10)ON_BN_CLICKED(IDC_BUTTON11, OnButton11)ON_BN_CLICKED(IDC_BUTTON12, OnButton12)ON_BN_CLICKED(IDC_BUTTON13, OnButton13)ON_BN_CLICKED(IDC_BUTTON14, OnButton14)ON_BN_CLICKED(IDC_BUTTON15, OnButton15)ON_BN_CLICKED(IDC_BUTTON16, OnButton16)ON_BN_CLICKED(IDC_BUTTON17, OnButton17)ON_BN_CLICKED(IDC_BUTTON18, OnButton18)ON_BN_CLICKED(IDC_BUTTON20, OnButton20)ON_BN_CLICKED(IDC_BUTTON19, OnButton19)ON_EN_CHANGE(IDC_EDIT1, OnChangeEdit1)//}}AFX_MSG_MAPEND_MESSAGE_MAP()BOOL CMyDlg::OnInitDialog(){CDialog::OnInitDialog();ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}SetIcon(m_hIcon, TRUE);SetIcon(m_hIcon, FALSE);return TRUE;}void CMyDlg::OnSysCommand(UINT nID, LPARAM lParam){if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialog::OnSysCommand(nID, lParam);}}void CMyDlg::OnPaint(){if (IsIconic()){CPaintDC dc(this);SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;dc.DrawIcon(x, y, m_hIcon);}else{CDialog::OnPaint();}}HCURSOR CMyDlg::OnQueryDragIcon(){return (HCURSOR) m_hIcon;}void CMyDlg::OnChangeEdit1() {}double num1,num2;char sys;void CMyDlg::OnButton1() {UpdateData(true);num+='1';UpdateData(false);}void CMyDlg::OnButton2() {UpdateData(true);num+='2';UpdateData(false);}void CMyDlg::OnButton3() {UpdateData(true);num+='3';UpdateData(false);}void CMyDlg::OnButton4() {UpdateData(true);num+='4';UpdateData(false);}void CMyDlg::OnButton5() {UpdateData(true);num+='5';UpdateData(false);}void CMyDlg::OnButton6() {UpdateData(true);num+='6';UpdateData(false);}void CMyDlg::OnButton7() {UpdateData(true);num+='7';UpdateData(false);}void CMyDlg::OnButton8() {UpdateData(true);num+='8';UpdateData(false);}void CMyDlg::OnButton9() {UpdateData(true);num+='9';UpdateData(false);}void CMyDlg::OnButton10() {UpdateData(true);num+='0';UpdateData(false);}void CMyDlg::OnButton11() {if(-1==num.Find('.')){UpdateData(true);num+='.';}UpdateData(false);}void CMyDlg::OnButton12() {UpdateData(true);num2=-num2;char rs[20];sprintf(rs,"%g",num2);num=rs;UpdateData(false);}void CMyDlg::OnButton13() {UpdateData(true);num1=atof(num);num='\0';sys='+';UpdateData(false);} void CMyDlg::OnButton14() {UpdateData(true);num1=atof(num);num='\0';sys='-';UpdateData(false);} void CMyDlg::OnButton15() {UpdateData(true);num1=atof(num);num='\0';sys='*';UpdateData(false);}void CMyDlg::OnButton16() {UpdateData(true);num1=atof(num);num='\0';sys='/';UpdateData(false);}void CMyDlg::OnButton17() {if(!num.IsEmpty()){UpdateData(true);num=num.Left(num.GetLength()-1);}UpdateData(false);}void CMyDlg::OnButton18() {UpdateData(true);num='\0';UpdateData(false);}void CMyDlg::OnButton20() {UpdateData(true);num1=atof(num);num='\0';sys='^';UpdateData(false);}void CMyDlg::OnButton19(){UpdateData(true);char rs[50];memset(rs,0,50);switch(sys){case'+':num2=num1+atof(num);sprintf(rs,"%g",num2);num=rs;break;case'-':num2=num1-atof(num);sprintf(rs,"%g",num2);num=rs;break;case'*':num2=num1*atof(num);sprintf(rs,"%g",num2);num=rs;break;case'/':num2=num1/atof(num);sprintf(rs,"%g",num2);num=rs;break;case'^':num2=1;for(inti=0;i<atof(num);i++)num2=num1*num2;sprintf(rs,"%g",num2);num=rs;break;};UpdateData(false);}。
用VB编写一个简单计算器一、功能:实现简单的加减乘除功能,C归零,CE取消输入,%计算并显示第一个操作数的百分比。
二、控件:1个label,20个commandbutton。
三、计算器运行界面:四、详细代码:Option ExplicitDim Op1, Op2 '前面输入的操作数Dim DecimalFlag As Integer '小数点仍然存在吗?Dim NumOps As Integer '操作数个数Dim LastInput '指示上一次按键事件的类型Dim OpFlag '指示未完成的操作Dim TempReadout' C (取消) 按钮的Click 事件过程' 重新设置显示并初始化变量Private Sub Cancel_Click()Readout = Format(0, "0.")Op1 = 0Op2 = 0Form_LoadEnd Sub' CE (取消输入) 按钮的Click 事件过程Private Sub CancelEntry_Click()Readout = Format(0, "0.")DecimalFlag = FalseLastInput = "CE"End Sub' 小数点(.) 按钮的Click 事件过程' 如果上一次按键为运算符,初始化readout 为"0.";' 否则显示时追加一个小数点Private Sub Decimal_Click()If LastInput = "NEG" ThenReadout = Format(0, "-0.")ElseIf LastInput <> "NUMS" ThenReadout = Format(0, "0.")End IfDecimalFlag = TrueLastInput = "NUMS"End Sub' 窗体的初始化过程' 设置所有变量为其初始值Private Sub Form_Load()DecimalFlag = FalseNumOps = 0LastInput = "NONE"OpFlag = " "Readout = Format(0, "0.")'Decimal.Caption = Format(0, ".")End Sub' 数字键(0-9) 的Click 事件过程' 向显示中的数追加新数Private Sub Number_Click(Index As Integer)If LastInput <> "NUMS" ThenReadout = Format(0, ".")DecimalFlag = FalseEnd IfIf DecimalFlag ThenReadout = Readout + Number(Index).CaptionElseReadout = Left(Readout, InStr(Readout, Format(0, ".")) - 1) + Number(Index).Caption + Format(0, ".")End IfIf LastInput = "NEG" Then Readout = "-" & ReadoutLastInput = "NUMS"End Sub' 运算符(+, -, x, /, =) 的Click 事件过程' 如果接下来的按键是数字键,增加NumOps。
VB6.0的小程序计算器对于刚入门学习VB6的朋友来说肯定会做些小程序吧,这里就是给大家演示个简单的计算器程序,仅供参考啦。
界面上加减乘除四个按钮分别是cmdAdd、cmdPlus、cmdMultiple、cmdDevide,小数点按钮是cmdDot,负号按钮是cmdMinuse,数字0~9为了偷懒,用了控件数组cmdNumber(0)~ cmdNumber(9),上面txtShow是显示数字和结果用的,txtOperate是显示中间步骤的。
思路大致是这样,点加减乘除这类操作符的时候,把当前txtShow的值保存在模块变量mstrParam1里,同时把操作符保存到mstrOperate里,按等于号时把先把当前txtShow的值保存在模块变量mstrParam2里,然后对mstrParam1和mstrParam2进行运算,当然要记得设法把String转换成数值进行运算。
转换的过程要注意,这里是用的Variant数据类型,vParam1和vParam2都是Variant 类型,保存的是mstrParam1和mstrParam2的数值。
之所以不用integer、long、double 这些标准类型,是因为这些类型都有大小限制,做出来用着不方便,VB最大的整型long才到 2147483647,这意味着计算器的计算结果只能限制在9位到10位。
而Variant类型可以支持非常大的数,具体多大不清楚,但起码几十位是能够支持的。
另外,最后算完的结果也要做格式化,因为如果数值非常大的话,VB会自动转成科学计数法,所以要用Format函数进行调整。
如果需要源代码的话在我百度空间里留言。
/zhaozhigang517Option ExplicitPrivate Const mstrFORMATDEFAULT As String = "#.##"Private mstrParam1 As String, mstrParam2 As StringPrivate mstrOperate As StringPrivate Sub cmdAdd_Click()mstrParam1 = Trim(txtShow.Text)mstrOperate = "+"txtShow.Text = ""txtOperate.Text = txtOperate.Text & mstrParam1 & vbCrLf txtOperate.Text = txtOperate.Text & mstrOperate & vbCrLfEnd SubPrivate Sub cmdPlus_Click()mstrParam1 = Trim(txtShow.Text)mstrOperate = "-"txtShow.Text = ""txtOperate.Text = txtOperate.Text & mstrParam1 & vbCrLf txtOperate.Text = txtOperate.Text & mstrOperate & vbCrLfEnd SubPrivate Sub cmdMultiple_Click()mstrParam1 = Trim(txtShow.Text)mstrOperate = "*"txtShow.Text = ""txtOperate.Text = txtOperate.Text & mstrParam1 & vbCrLf txtOperate.Text = txtOperate.Text & mstrOperate & vbCrLfEnd SubPrivate Sub cmdDevide_Click()mstrParam1 = Trim(txtShow.Text)mstrOperate = "/"txtShow.Text = ""txtOperate.Text = txtOperate.Text & mstrParam1 & vbCrLftxtOperate.Text = txtOperate.Text & mstrOperate & vbCrLfEnd SubPrivate Sub cmdDot_Click()Dim mstrShow As StringDim i As IntegermstrShow = "."i = InStr(1, txtShow.Text, mstrShow)If i <= 0 ThentxtShow.Text = txtShow.Text & mstrShowEnd IfEnd SubPrivate Sub cmdMinuse_Click()Dim mstrShow As StringDim i As IntegermstrShow = "-"i = InStr(1, txtShow.Text, mstrShow)If i <= 0 ThentxtShow.Text = mstrShow & txtShow.TextElsetxtShow.Text = Right(txtShow.Text, Len(txtShow.Text) - 1) End IfEnd SubPrivate Sub cmdNumber_Click(Index As Integer)Dim mstrShow As StringmstrShow = IndextxtShow.Text = txtShow.Text & mstrShowEnd SubPrivate Sub cmdClear_Click()txtShow.Text = ""End SubPrivate Sub cmdResult_Click()Dim vParam1 As Variant, vParam2 As VariantDim vResult As VariantDim strResult As StringDim i As LongDim blnBeforeDot As BooleanDim lngDotPos As LongDim blnMinuse As BooleanmstrParam2 = Trim(txtShow.Text)txtOperate.Text = txtOperate.Text & mstrParam2 & vbCrLfvParam1 = 0blnBeforeDot = TruelngDotPos = -1blnMinuse = FalseFor i = 1 To Len(mstrParam1)If IsNumeric(Mid(mstrParam1, i, 1)) = True ThenIf blnBeforeDot = True ThenvParam1 = vParam1 * 10 + CByte(Mid(mstrParam1, i, 1))ElsevParam1 = vParam1 + CByte(Mid(mstrParam1, i, 1)) * (0.1 ^ (i - lngDotPos))End IfElseIf Mid(mstrParam1, i, 1) = "." ThenblnBeforeDot = FalselngDotPos = iElseIf Mid(mstrParam1, i, 1) = "-" ThenblnMinuse = TrueEnd IfNext iIf blnMinuse = True ThenvParam1 = -vParam1End IfvParam2 = 0blnBeforeDot = TruelngDotPos = -1blnMinuse = FalseFor i = 1 To Len(mstrParam2)If IsNumeric(Mid(mstrParam2, i, 1)) = True ThenIf blnBeforeDot = True ThenvParam2 = vParam2 * 10 + CByte(Mid(mstrParam2, i, 1))ElsevParam2 = vParam2 + CByte(Mid(mstrParam2, i, 1)) * (0.1 ^ (i - lngDotPos))End IfElseIf Mid(mstrParam2, i, 1) = "." ThenblnBeforeDot = FalselngDotPos = iElseIf Mid(mstrParam2, i, 1) = "-" ThenblnMinuse = TrueEnd IfNext iIf blnMinuse = True ThenvParam2 = -vParam2End IfSelect Case mstrOperateCase "+"vResult = vParam1 + vParam2Case "-"vResult = vParam1 - vParam2Case "*"vResult = vParam1 * vParam2Case "/"vResult = vParam1 / vParam2End SelecttxtOperate.Text = txtOperate.Text & "=" & vbCrLfstrResult = Format(vResult, mstrFORMATDEFAULT)txtShow.Text = strResulttxtOperate.Text = txtOperate.Text & strResult & vbCrLfEnd SubPrivate Sub Form_Load()txtShow.Text = ""txtOperate.Text = ""End Sub(注:可编辑下载,若有不当之处,请指正,谢谢!)。