程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> 走進VB6啃一塊骨頭

走進VB6啃一塊骨頭

編輯:VB綜合教程
我們在玩《仙劍奇俠傳》時,要是不能保存數據,那麼非得挑燈夜戰三晝夜才能玩完,可見數據存儲之重
  要性。愛好編程的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按鈕為灰色,即不可激活態);點擊【Txt】按鈕,會出現【文本已經建好】提示框(文本的各項是按姓名順序排列的,name分別為Kate、Tom、小鞏、朱朱、朱茵、李麗麗、李繼華、黃慶);在Textname文本框中輸入上面任一姓名,點擊【Lookfor】按鈕即可得到其他的字段(年齡、性別)情況,如果不為此八人,則顯示【notfind】提示框。此程序運行後可以建立一個名為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
  ElseIffindtxt>index(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).name>index(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()
  Ifwhich>0Then'which>0表明查找到
  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
  Iftotalnum>0ThenCmdtxt.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)'計算記錄數
  Iftotalnum>0Then
  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還有更簡單的處理數據的方法,留待以後介紹。希望我燒的骨頭湯能適合大家口味。->

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved