走进VB6啃一块骨头

amyquxing

amyquxing

2016-02-19 12:29

想不想get新技能酷炫一下,今天图老师小编就跟大家分享个简单的走进VB6啃一块骨头教程,一起来看看吧!超容易上手~
我们在玩《仙剑奇侠传》时,要是不能保存数据,那么非得挑灯夜战三昼夜才能玩完,可见数据存储之重
  要性。爱好编程的CFAN是不会放过数据文件的,下面跟着我驰骋吧!我们先吃一个哈密瓜,开门即来编一传统的比较有代表性的程序,不可不看的哟!
  程序分为一个表单cfanvb.frm,一个模块cfanvb.bas。一个表单程序。程序的表单中有五个命令按钮,从上到下分别命名为Cmdnew、Cmdsave,Cmdtxt、cmdlookfor、Cmdexit,标题分别为&New、&Save、&Txt、&Lookfor、&Exit;还有三个文本框,名称分别为Textname、Textage、Textsex;还有三个标签。
  程序的功能
  功能1:能存储你所输入的每一条完整记录,并创造数据库文件nas.db。
  功能2:能按输入的姓名字段查找记录并显示。
  功能3:将所有记录按NAME字段排序制成文本文件nas.txt,以便打印、修改。
  程序运行情况
  先后输入八条记录,name字段分别为李继华、朱茵、小巩、朱朱、李丽丽、黄庆、Tom、Kate,并一一存储(按Save按钮,存储第一条记录前,Txt按钮为灰色,即不可激活态);点击按钮,会出现提示框(文本的各项是按姓名顺序排列的,name分别为Kate、Tom、小巩、朱朱、朱茵、李丽丽、李继华、黄庆);在Textname文本框中输入上面任一姓名,点击按钮即可得到其他的字段(年龄、性别)情况,如果不为此八人,则显示提示框。此程序运行后可以建立一个名为Nas.db的数据库文件和一个名为Nas.txt的文本文件。
  
  Cfanvb.bas模块代码为:
  Typenas'定义记录类型
  nameAsString*6'姓名
  ageAsString*3'年龄
  sexAsString*4'性别
  EndType
  Typenasindex'定义另一记录类型
  nameAsString*6'姓名
  numberAsInteger'记录号
  EndTyep
  PublicamongAsnas'定义公共变量
  publicindex()Asnasindex'定义枚举索引数组
  PublictotalnumAsInteger'定义总记录数
  
  cfanvb.frm表单的代码为:
  OptionExplicit'强制变量必须进行正规声明
  Constnasdb="as.db"'定义常量数据库文件名
  Constnastxt="as.txt"'定义文本文件名
  Functionsearch(findtxt)AsInteger'Function过程,寻找某一姓名findtxt,得出记录号search
  DimfrontAsInteger'定义变量
  DimbehindAsInteger
  DimfindnumAsInteger
  DimmiddleAsInteger
  front=1
  behind=totalnum'定义初始值
  findnum=0
  DoWhilefront=behindAndfindnum=0
  middle=(front behind)2'用二分法查找
  Iffindtxt=Rtrim(index(middle).name)Then'找到此记录
  findnum=middle
  ElseIffindtxtindex(middle).nameThen
  front=middle 1'要找的记录在middle之后
  Else
  behind=middle-1'要找的记录在middle之前
  EndIf
  Loop
  search=findnum'如找到,则找到的记录号为search;否则,search为0
  EndFunction
  Subcreateindex()'为所有记录建立索引
  DimIAsInteger,changeAsnasindex,jAsInteger
  ForI=ITototalnum
  Get#1,I,among'读出第I条记录
  index(I).name=among.name'此记录的name字段赋予索引I的name字段
  index(I).number=I'记录号赋予索引I的number字段
  NextI
  ForI=ltototalnum-1
  Forj=I 1Tototalnum
  Ifindex(I).nameindex(j).nameThen
  change=index(I)
  index(I)=index(j)
  index(j)=change
  EndIf
  Nextj
  NextI'对索引数组排序,使index(I).nameFndSub
  PrivateSubCmdexit_Click()
  Close#1'关闭文件1
  End'结束
  EndSub
  PrivateSubCmdlookfor_Click()'查找
  DimwhichAsInteger
  DimfinditAsInteger
  which=search(textname.Text)'调用search()
  Ifwhich0Then'which0表明查找到
  findit=index(which).number
  Get#1,findit,among'由记录号读出记录
  withamong
  textname=.name'将此记录的各字段显示于文本框
  Textage=.age
  Textsex=.sex
  EndWith
  Else
  MsgBox"can'tfindit",48,"lookfor"'否则没找到提示信息
  EndIf
  EndSub
  PrivateSubcmdnew_Click()'所有文本框清空
  textname=""
  Textage=""
  Textsex=""
  textname.SetFocus'textname文本框得到输入焦点
  EndSub
  PrivateSubCmdsave_Click()
  totalnum=totalnum 1'记录数加1
  Iftotalnum0ThenCmdtxt.Enabled=True'使Cmdtxt按钮由灰色变成可激活
  Withamong'将各文本框内容存于记录
  .name=textname.text
  .age=Textage.Text
  .sex=Textsex.Text
  EndWith
  Put#1,totalnum,among'将记录加入#1
  ReDimindex(totalnum)'重新定义枚举数组
  createindex'调用过程重新建立索引
  textname=""'清空文本框,激活textname
  Textage=""
  Textsex=""
  textname.SetFocus
  EndSub
  PtivateSubCmdtxt_Click()'建立文本文件
  DimI
  Dimmessage1AsString,message2AsString
  OpennastxtForOutputAs#2'打开文本,接受输出
  ForI=1Tototalnum
  Get#1,index(I).number,among'读记录
  Withamong
  Print#2,"";Ucase(Trim.(.name))
  Print#2,"age:";.age'用Print语句建立文本
  Print#2,"sex:";.sex
  EndWith
  NextI
  Close#2'关闭文本文件
  textname.SetFocus
  message1="文本nas.txt已经建好"
  message2="file"
  MsgBox$message1,64,message2'显示文本已建好对话框
  EndSub
  PrivateSubForm_Load()'程序运行装人表单时的事件
  OpennasdbForRandomAs#1'打开数据库
  Len=Len(among)
  totalnun=LOF(1)/Len(among)'计算记录数
  Iftotalnum0Then
  ReDimindex(totalnum)'定义枚举索引数组
  createindex'建立索引
  Else
  Cmdtxt.Enabled=False'禁止Cmdtxt按钮
  EndIf
  EndSub
  我们通过以上程序,可以得出哪些启示呢?
  1.文件可分为文本文件(一般为顺序存取格式,本程序为cfanvb.txt)和随机存取文件(本程序为cfan
  vb.db)。
  2.随机存取文件由一些固定长度的记录组成,建立好索引后,能在不读入其他记录的情况下,直接跳到某一记录。
  3.在文本文件中使用的语句:
  (1)OpenfilenameForoutput(append)As#numberoutput:创建一个新文件并准备写入数据;
  append:打开一个已存在的文件并准备写入数据于文件的结尾。
  (2)Print#number,[data1;data2;data3...]
  它可将一个或多个没有分隔的字符串输出到指定文件#filenumber,“print#filename,”表示输出一空行。
  (3)Write#number,data1,data2,data3...
  它可将一行数据写入一个已经打开的文件,并提供“,”作间隔。
  (4)OpenfilenameForInputAs#number
  它为读数据而打开一个文件。
  4.随机存取文件常用语句:
  (1)OpenfilenameForRandomAs#numberLen=recordlength
  以随机方式打开一既可以读又可以写的文件,其中recordlength为文件记录的字节数。
  (2)Put#number,recordnumber,record(写入)
  Get#number,recordnumber,record(读出)
  其中,#number文件已经打开,"recordnumber指明要写入(或读出)的位置,record指那条记录。
  本文介绍了处理数据的一些传统方法和基本知识,根据本程序的思路,你可制作出自己喜欢的小程序。其实VB6还有更简单的处理数据的方法,留待以后介绍。希望我烧的骨头汤能适合大家口味。->

展开更多 50%)
分享

猜你喜欢

走进VB6啃一块骨头

编程语言 网络编程
走进VB6啃一块骨头

身上青一块紫一块是怎么回事呢?

电脑网络
身上青一块紫一块是怎么回事呢?

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

如何新增一块硬盘

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
如何新增一块硬盘

用VB6创建MTS组件

ASP
用VB6创建MTS组件

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

一块怎么通话涂鸦

手机软件 应用软件
一块怎么通话涂鸦

手臂上有一块一块的角化脱皮怎么搞的?

皮肤干燥
手臂上有一块一块的角化脱皮怎么搞的?

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

用XML+FSO+JS实现服务器端文件的选择效果

用XML+FSO+JS实现服务器端文件的选择效果

VB6中动态设置报表结果

VB6中动态设置报表结果
下拉加载更多内容 ↓