VB16进制间的相互转换课程设计Word文档下载推荐.docx
《VB16进制间的相互转换课程设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《VB16进制间的相互转换课程设计Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。
2.1.1系统的驱动控制方案设计……………………………………………………………
……
结论…………………………………………………………………………………………
致谢…………………………………………………………………………………………
参考文献……………………………………………………………………………………
摘要
随着计算机的普及,计算机语言已经运用到生活的各个方面,本次课程设计使用VB语言作为开发工具,进行了各数制的相互转换的程序设计,该程序能实现电脑数制转换及详细计算的功能,能够更方便更准确的辅助我们设计和计算,计算结果详细精准,运行界面简单明了,操作方便简易能节约大量的时间。
关键词:
数字数制计算
1引言
1.1问题的提出
随着计算机的普及,有时随着工作的需要,我们也许在烦恼怎么才能快捷轻松的找到各数制之间的转换,要如何设计才能如傻瓜相机般能让人第一次运用就能准确使用,它对我们今后的学习有什么用。
1.2任务与分析
本课题主要的目的是为了合理的使用VB中的软件操作,设计一个简易的数制转换程序,实现数据之间的相互转换,输入数据即可得到想要的数制值。
1.操纵界面简单明了
2.尽量考虑成熟的操纵程序,简单,考虑周全,又漏洞很少
2设计方案
2.1程序设计原理
欲实现各数制(包括整数及其小数的)的相互转换,我们最熟悉:
2进制→8进制,2进制→10进制,2进制→16进制
8进制→2进制,10进制→2进制,16进制→2进制
如其他16进制到8进制这样的整数转换都很困难,更不要说他们的小数部分的转换咯,所以鉴于此,我的设计方案就是先写出以上6个函数程序,如代码中的Er_to_Si,Er_to_Ba,Er_to_SL等等这样的六个函数!
通过2进制这个桥梁,从而就能实现其他非常见的其他数制的转换,如16进制→8进制,就能通过函数的调用实现16进制→2进制→8进制的间接转换,如代码:
PublicFunctionSL_to_BA(ByValHexAsString)AsString
DimAAsString
A=sL_to_ER(Hex)“16进制→2进制
SL_to_BA=Er_to_Ba(A)“2进制→8进制
EndFunction
通过这样的方式就能轻松实现转换了!
2.1.1程序功能描述
1.实现整数的转换。
2.实现小数部分的转换。
3.在右侧的空白标签中输出结果。
2.1.2程序功能结构分析
2.2程序界面和代码设计:
2.2.1主页面的代码:
PrivateSubTimer1_Timer()
Picture1.Cls
Picture1.Print"
欢迎使用数制转换计算机"
Label3.Visible=True
Label7.Visible=False
Timer2.Enabled=True
EndSub
PrivateSubTimer2_Timer()
任冬|版权所有,复制必究"
Label7.Visible=True
Label3.Visible=False
Timer1=True
PrivateSubCombo1_Click()
DimiAsInteger
Fori=1To11
Command1(i).Enabled=True
Next
IfCombo1.Text="
十六进制"
Then
Fori=1To17
Else
Fori=12To17
Command1(i).Enabled=False
EndIf
IfCombo1.Text="
二进制"
Fori=2To9
八进制"
Command1(8).Enabled=False
Command1(9).Enabled=False
PrivateSubCommand2_Click()
Label2="
"
:
Label4="
PrivateSubForm_Load()
Combo1.AddItem"
十进制"
Combo2.AddItem"
PrivateSubCommand1_Click(IndexAsInteger)
SelectCaseIndex
Case0To10
Label2.Caption=Label2.Caption&
Command1(Index).Caption
Case11
Label2=Left(Str(Label2),Len(Str(Label2))-1)
Case12To17
EndSelect
2.2.2转换计算的代码:
PrivateSubCommand6_Click()
IfCombo2.Text="
ThenLabel4=Label2
ThenLabel4=Ten_to_Two(Label2)
ThenLabel4=Ten_to_Sl(Label2)
ThenLabel4=Ten_to_Ba(Label2)
EndIf
IfCombo2.Text="
ThenLabel4=Er_to_Si(Label2)
ThenLabel4=Er_to_Ba(Label2)
ThenLabel4=Er_to_SL(Label2)
ThenLabel4=BA_to_er(Label2)
ThenLabel4=Ba_to_Si(Label2)
ThenLabel4=BA_to_SL(Label2)
ThenLabel4=sL_to_ER(Label2)
ThenLabel4=sL_to_SI(Label2)
ThenLabel4=SL_to_BA(Label2)
2.2.3六个基本函数的代码:
PublicFunctionTen_to_Two(tenAsSingle)AsString
DimZsAsInteger,XsAsSingle
DimZsc,Xsc,XsdAsString
Xsd="
Zs=Fix(ten)
Xs=ten-Zs
DoWhileZs>
0
Zsc=ZsMod2&
Zsc
Zs=Zs\2
Loop
DoWhileXs<
>
Xsd="
."
Xs=Xs*2
Xsc=Xsc&
Fix(Xs)
Xs=Xs-Fix(Xs)
Ten_to_Two=Zsc&
Xsd&
Xsc
PublicFunctionTen_to_Sl(ByValOctAsSingle)AsString
DimBinAsString
Bin=Ten_to_Two(Oct)
Ten_to_Sl=Er_to_SL(Bin)
EndFunction
PublicFunctionTen_to_Ba(tenAsSingle)AsString
DimbAsString
b=Ten_to_Two(ten)
Ten_to_Ba=Er_to_Ba(b)
PublicFunctionEr_to_Si(ByValerAsString)AsString
DimiAsLong
n=InStr(er,"
)
Ifn=0Then
b=er
Else
b=Left$(er,n-1)
r=Right$(er,Len(er)-n)
Fori=1ToLen(b)
A=2^(Len(b)-i)
s=s+Mid(b,i,1)*A
Fori=1ToLen(r)
c=2^(-i)
Xs=Xs+Mid(r,i,1)*c
Er_to_Si=s+Xs
PublicFunctionEr_to_SL(ByValerAsString)AsString
DimHAsString
IfLen(b)Mod4<
0Then
b=String(4-Len(er)Mod4,"
0"
)&
b
IfLen(r)Mod4<
r=r&
String(4-Len(r)Mod4,"
Fori=1ToLen(b)Step4
SelectCaseMid(b,i,4)
Case"
0000"
H=H&
"
0001"
1"
0010"
2"
0011"
3"
0100"
4"
0101"
5"
0110"
6"
0111"
7"
1000"
8"
1001"
9"
1010"
A"
1011"
B"
1100"
C"
1101"
D"
1110"
E"
1111"
F"
EndSelect
Nexti
IfLen(H)<
1Then
WhileLeft(H,1)="
H=Right(H,Len(H)-1)
Wend
z=H
H="
Fori=1ToLen(r)Step4
SelectCaseMid(r,i,4)
r=H
Er_to_SL=z&
r
PublicFunctionEr_to_Ba(ByValBinAsString)AsString
DimHAsString
n=InStr(Bin,"
b=Bin
b=Left$(Bin,n-1)
r=Right$(Bin,Len(Bin)-n)
IfLen(b)Mod3<
b=String(3-Len(b)Mod3,"
IfLen(r)Mod3<
r=r&
String(3-Len(r)Mod3,"
Fori=1ToLen(b)Step3
SelectCaseMid(b,i,3)
Case"
000"
001"
010"
011"
100"
101"
110"
111"
Nexti
IfLen(H)<
WhileLeft(H,1)="
H=Right(H,Len(H)-1)
Wend
z=H
H="
Fori=1ToLen(r)Step3
SelectCaseMid(r,i,3)
x=H
Er_to_Ba=z&
x
PublicFunctionBA_to_er(ByValOctAsString)AsString
DimiAsLong
DimbAsString
Fori=1ToLen(Oct)
SelectCaseMid(Oct,i,1)
b=b&
WhileLeft(b,1)="
b=Right(b,Len(b)-1)
BA_to_er=b
PublicFunctionsL_to_ER(ByValHexAsString)AsString
Hex=UCase(Hex)
Fori=1ToLen(Hex)
SelectCaseMid(Hex,i,1)
sL_to_ER=b
2.2.4其他非常数制的函数调用:
PublicFunctionBA_to_SL(ByValOctAsString)AsString
Bin=BA_to_er(Oct)
BA_to_SL=Er_to_SL(Bin)
A=Hex
A=sL_to_ER(A)
A=Er_to_Ba(A)
SL_to_BA=A
PublicFunctionsL_to_SI(ByValHexAsString)AsString
b=sL_to_ER(Hex)
sL_to_SI=Er_to_Si(b)
PublicFunctionBa_to_Si(ByValOctAsString)AsString
b=BA_to_er(Oct)
Ba_to_Si=Er_to_Si(b)
3结果分析
分析:
该程序通过设计一个简易的数制转换程序和简单的函数调用过程,就实现实现了个数制转换的高度精确:
(如图)
结论
通过本次程序设计代码的编写,加强了对VB程序设计的深层认识和理解,巩固了VB上机操作能力,在课设创作的过程中,我学会了基本的VB编程技能,对软件制作也有了初步的了解。
同时也遇到了种种困难,体验到了编程的艰辛本次课程设计使用VB语言作为开发工具,进行了曲线的绘制和度数程序设计的程序设计,该程序能实现电脑绘制曲线及详细计算的功能,能够更方便更准确的辅助我们设计和计算,计算结果详细精准。
另外感谢朱晓海老师的悉心帮助,如果没有老师的帮助,完成此任务是很困难的。
另外软件的制作是一件辛苦而费力的工作,但在同学的努力下,我们不但按时完成,而且从中学到了许多课本上没有的东西,首先是团队的合作精神。
现代软件的制作不是一个人可以完成的,个人始终需要集体的支持。
在确定制作项目之后,我们进行了分工,每个人都有任务。
但分工不等于对其余人的工作放手不管,在遇到困难时,大家集中在一起进行分析讨论,共同解决。
其次是学习与实践的关系。
在课本上学到了VB程序的基础知识。
但在实践中,需要大量的拓展知识。
我们在理解书本知识的基础上,查阅了大量的书籍,不仅找到了问题的解决方法,而且优中取优,尽量选取最简方法,从而促进了我们VB知识的提