轻轻松松学VB第一期自己动手做称手工具软件.docx
《轻轻松松学VB第一期自己动手做称手工具软件.docx》由会员分享,可在线阅读,更多相关《轻轻松松学VB第一期自己动手做称手工具软件.docx(10页珍藏版)》请在冰豆网上搜索。
![轻轻松松学VB第一期自己动手做称手工具软件.docx](https://file1.bdocx.com/fileroot1/2022-11/23/89d14408-1c75-4139-8cb1-44b7b1cc5824/89d14408-1c75-4139-8cb1-44b7b1cc58241.gif)
轻轻松松学VB第一期自己动手做称手工具软件
轻轻松松学VB,第一期:
自己动手做称手工具软件
大家有没有在电子制作的时候一个公式要反复用好几遍,参数改好几次,计算更是想吐,现成的软件又不好找,要不就是用着不顺手,其实,大家可以学一点VB知识,就完全可以打造自己的计算工具。
我在假期闲的无聊就练练手,自己动手做了几个小工具软件,在此我就抛砖引玉了,把制作过程及代码贴上来,欢迎大家拍砖。
首先是熟悉VB的编程环境,就是常用VB6.0.这个相关只是就先暂不补充了,感兴趣的看看书半个小时就能上手。
下面是其中的几个界面:
2011-10-314:
25:
46上传
下载附件(51.93KB)
2011-10-314:
25:
57上传
下载附件(31.66KB)
2011-10-314:
26:
10上传
下载附件(40.88KB)
在计算电阻分压这一块关键的是协调数据使用条件,比如用一些提示信息来提醒你哪些必须输入哪些可以输入,这里我用了几个if语句解决的,代码有点笨,见谅。
PrivateSubCommand1_Click()
Dima,b,c,d,eAsSingle
a=Val(Text2.Text)
b=Val(Text3.Text)
c=Val(Text1.Text)
d=Val(Text4.Text)
IfText1.Text<>""AndText2.Text<>""AndText3.Text<>""AndText4.Text<>""Then
MsgBox"请保证输入的数据只有三个已知量!
",vbYes,"注意"
Else
Ifd>cAndc<>0Then
MsgBox"请设置输入电压高于输出电压",vbYes,"注意"
Else
Ifc=d<>0Then
a=0
Text3.Text="∞"
Text2.Text=0
Else
IfText2.Text=""Then
e=b*(c-d)/d
Text2.Text=e
Else
IfText3.Text=""Then
e=a*d/(c-d)
Text3.Text=e
Else
IfText1.Text=""Then
e=d*(a+b)/b
Text1.Text=e
Else
IfText4.Text=""Then
e=b*c/(a+b)
Text4.Text=e
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndSub
PrivateSubCommand2_Click()
Text1.Text=""
Text2.Text=""
Text3.Text=""
Text4.Text=""
EndSub
PrivateSubCommand3_Click()
MsgBox"本工具由小猛为结婚的电感制作,版权没有,翻版不究,本计算为知三求一形式,输入变量时请输入三个,再次计算请先清除或者保证一个变量为空,输入电压务必大于输出电压。
数值为单精度,正数范围在1.401298E-45到3.402823E38之间,不填写数值默认为0",vbYes+0,"工具说明"
EndSub
PrivateSubCommand4_Click()
End
EndSub
习惯不好,没加注释,大家忍着看吧,是不是感觉重复的语句很多,其实就这么简单,不用很牛B的句子,毕竟咱们是玩电的,不是专业程序员。
下面说一下解方程的。
这个一般的程序书上算法都有。
话不多说,直接上代码:
PrivateSubCommand1_Click()
Form1.Show
Form2.Hide
EndSub
PrivateSubCommand2_Click()
DimaAsSingle,bAsSingle,cAsSingle
DimDAsSingle,X1AsSingle,X2AsSingle
DimRAsSingle,PAsSingle
a=Val(Text1.Text) '取数据a
b=Val(Text2.Text) '取数据b
c=Val(Text3.Text) '取数据c
Ifa=0Then '当a=0
Text4.Text="不是二次方程"
Text5.Text="不是二次方程"
Else 'a<>0
D=b*b-4*a*c
R=-b/(2*a)
IfD=0Then 'D=0
Text4.Text=R
Text5.Text=R
ElseIfD>0Then 'D>0
X1=(-b+Sqr(D))/(2*a)
X2=(-b-Sqr(D))/(2*a)
Text4.Text=X1
Text5.Text=X2
Else 'D<0
P=Sqr(-D)/(2*a)
Text4.Text=R&"+"&P&"i"
Text5.Text=R&"-"&P&"i"
EndIf
EndIf
EndSub
PrivateSubCommand3_Click()
Text1.Text=""
Text2.Text=""
Text3.Text=""
Text4.Text=""
Text5.Text=""
EndSub
PrivateSubCommand4_Click()
Dima1,b1,c1,m1,n1,t1,x11,y11AsSingle
a1=Val(Text6.Text)
b1=Val(Text7.Text)
c1=Val(Text8.Text)
m1=Val(Text10.Text)
n1=Val(Text11.Text)
t1=Val(Text12.Text)
IfText6.Text<>""AndText7.Text<>""AndText8.Text<>""AndText10.Text<>""AndText11.Text<>""AndText12.Text<>""AndText6.Text<>Text10.TextAndText7.Text<>Text11.TextThen
y11=(m1*c1-a1*t1)/(a1*n1-b1*m1)
x11=(-c1-b1*y11)/a1
Text9.Text=x11
Text13.Text=y11
Else
IfText6.Text=Text10.TextOrText7.Text=Text11.TextThen
MsgBox"不为二元方程组!
",vbYes,"注意"
Else
IfText6.Text=""OrText7.Text=""OrText8.Text=""AndText10.Text=""OrText11.Text=""OrText12.Text=""Then
MsgBox"请保证输入数据的完整性!
",vbYes,"注意"
EndIf
EndIf
EndIf
EndSub
PrivateSubCommand5_Click()
Text6.Text=""
Text7.Text=""
Text8.Text=""
Text9.Text=""
Text10.Text=""
Text11.Text=""
Text12.Text=""
Text13.Text=""
EndSub
大家慢慢看吧……
下面就把波形绘制的贴出来,主要实现方法就是峰值叠加跟折线描图,大家都懂得,废话我就不多说了
OptionExplicit
ConstPiAsSingle=3.14159265358979
Dima() AsSingle,b()AsSingle,c()AsSingle
DimYMaxAsSingle,AZeroAsBoolean
Dimw AsInteger,h,aaAsInteger
SubDrawsin(aAsSingle,bAsSingle,cAsSingle)
Dimi AsInteger,xAsSingle,yAsSingle,jAsSingle
DimoiAsSingle,ojAsSingle
Fori=0TowStep1
x=i/w*6*Pi
y=a*Sin(b*x+c)
j=-h*(y-YMax)/(2*YMax)
Ifi=0Then
Picture1.PSet(i,j),RGB(255,0,0)
Else
Picture1.Line(oi,oj)-(i,j),RGB(255,0,0)
EndIf
oi=i
oj=j
Next
EndSub
SubDrawaaddsin()
Dimi AsInteger,xAsSingle,yAsSingle,jAsSingle
DimoiAsSingle,ojAsSingle
Dimk AsInteger
Fori=0TowStep1
x=i/w*6*Pi
y=0
Fork=1ToUBound(a)
y=a(k)*Sin(b(k)*x+c(k))+y
Next
j=-h*(y-YMax)/(2*YMax)
Ifi=0Then
Picture2.PSet(i,j),RGB(0,0,255)
Else
Picture2.Line(oi,oj)-(i,j),RGB(0,0,255)
EndIf
oi=i
oj=j
Next
EndSub
SubDrawXY()
WithPicture1
Picture1.Line(0,h/2)-(w,h/2)
Picture1.Line(0,0)-(0,h)
.CurrentX=0
.CurrentY=h/2
Picture1.Print"0"
.CurrentX=w/3
.CurrentY=h/2
Picture1.Print"2π"
.CurrentX=2*w/3
.CurrentY=h/2
Picture1.Print"4π"
.CurrentX=w-15
.CurrentY=h/2
Picture1.Print"6π"
EndWith
WithPicture2
Picture2.Line(0,h/2)-(w,h/2)
Picture2.Line(0,0)-(0,h)
.CurrentX=0
.CurrentY=h/2
Picture2.Print"0"
.CurrentX=w/3
.CurrentY=h/2
Picture2.Print"2π"
.CurrentX=2*w/3
.CurrentY=h/2
Picture2.Print"4π"
.CurrentX=w-15
.CurrentY=h/2
Picture2.Print"6π"
EndWith
EndSub
PrivateSubCommand1_Click()
DimiAsInteger
IfVal(Text1.Text)=0Then
AZero=True
Else
ReDimPreservea(UBound(a)+1)
ReDimPreserveb(UBound(b)+1)
ReDimPreservec(UBound(c)+1)
a(UBound(a))=Val(Text1.Text)
b(UBound(b))=Val(Text2.Text)
c(UBound(c))=Val(Text3.Text)
YMax=YMax+Abs(a(UBound(a)))
Picture1.Cls
Picture2.Cls
DrawXY
Fori=1ToUBound(a)
Drawsina(i),b(i),c(i)
Next
Drawaaddsin
EndIf
Text5.Text=YMax
aa=aa+1
Text4.Text=aa
IfAZeroThenPicture1.Line(0,h/2)-(w,h/2),RGB(255,0,0)
Picture2.Line(0,h/2)-(w,h/2),RGB(255,0,0)
EndSub
PrivateSubCommand2_Click()
Picture1.Cls
Picture2.Cls
Form_Load
Text1.Text=""
Text2.Text=""
Text3.Text=""
Text5.Text=""
EndSub
PrivateSubCommand3_Click()
Form1.Show
Form111.Hide
EndSub
PrivateSubForm_Load()
ReDima(0),b(0),c(0)
YMax=0
aa=0
AZero=False
WithPicture1
.AutoRedraw=True
.ScaleMode=vbPixels
w=.ScaleWidth
h=.ScaleHeight
EndWith
WithPicture2
.AutoRedraw=True
.ScaleMode=vbPixels
w=.ScaleWidth
h=.ScaleHeight
EndWith
DrawXY
Text4.Text=0
EndSub