当前位置: 首页 > news >正文

Visual Basic 随机文件

随机文件是以随机方式存取的文件,由一组长度相等的记录组成。它有如下特点:

  • 随机文件的记录长度为固定长度。使用前每个字段所占字节必须事先定好。
  • 记录包含有一个或多个字段,记录必须是用户自定义类型。
  • 每个记录都有一个记录号,随机文件打开后,既可读又可写,可以根据记录号访问文件中的任何一个记录,不需要像顺序文件一样按顺序进行。
1. 打开文件

随机文件的打开仍用Open语句,格式为:

Open <文件名> [For Random] As <文件号> [Len=<记录长度>]

其中,Random是缺省的访问类型,可以省略。记录长度默认为128个字节,每个记录的长度是将各字段所占的字节数相加。如果记录长度比文件记录的实际长度短,则产生一个错误;如果比记录的实际长度长,则会浪费磁盘空间。可以用Len( )函数返回记录的长度。

随机文件与顺序文件一样,使用Close语句关闭打开的文件。

2. 读操作

要对打开的随机文件中记录进行编辑,应先把记录从文件读到内存变量。把记录读入变量,使用Get#语句:

Get #<文件号>,[记录号],<变量名>

其中,记录号是要读记录的编号,记录号可以是整型、变体或长整型,如果省略记录号,则为最近执行GetPut语句的下一个记录,或由Seek函数指定的记录。变量名是接收记录内容的记录型变量名,一般声明为用户定义类型。

3. 写操作

Put#语句用于将变量中的内容写入磁盘文件中,进行记录的添加或替换。其格式为:

Put #<文件号>,[记录号],<变量名>

其中,记录号是要写入或替换的记录位置,变量名是要写入磁盘的数据的变量名,其数据类型应与记录类型一致。

在随机文件中添加记录,事先找出文件的最后一个记录的记录号,然后将新的记录写在它的后面,使用Put#语句向随机文件的末尾添加新记录。

4. 删除记录

通过清除其字段可以删除一个记录,但是该记录仍在文件中存在。通常文件中不能有空记录,最好把余下的记录拷贝到一个新文件,然后删除老文件。要清除随机文件中删除的记录,可按下面几步执行:

(1) 创建一个新文件。

(2) 把有用的所有记录从原文件复制到新文件。

(3) 关闭原文件并用Kill语句删除。

(4) 使用Name语句把新文件重新命名为原文件名。

【例6.3】  将某班学生考试成绩输入到“考试成绩”随机文件中。每个学生的记录包含学号、姓名、数学成绩、语文成绩和外语成绩五个字段,如表6.4所示。

6.4  学生成绩单

学号

姓名

数学成绩

语文成绩

外语成绩

0046

王晓明

85

78

65

0047

李  宁

75

80

78

0048

唐福强

67

76

94

……

……

……

……

……

0090

张大力

82

86

83

创建用户界面。在窗体中先添加两个框架Frame1Frame2。在Frame1中添加一个文本框数组Text1(0)~Text1(4)和5个标签,在Frame2中添加一个列表框List1,在两个框架之间添加4个命令按钮Command1Command4,如图6.10所示。

6.10  随机文件的操作

首先在窗体的通用过程段创建用户定义类型变量:

Private Type cj

   xh As String * 6

   xm As String * 6

   sx As Integer

   yw As Integer

   wy As Integer

End Type

Private cjd As cj

编写显示、输入、添加、删除及列表框的Click事件代码:

Private Sub Command1_Click()   '显示数据

Dim lastrec As Integer

Dim sx As Single, yw As Single, wy As Single

Open "考试成绩" For Random As #1 Len = Len(cjd)

lastrec = LOF(1) / Len(cjd)

List1.Clear

For n = 1 To lastrec

   Get #1, n, cjd

   With cjd

      xh = Format(.xh, "@@@@@@")

      xm = Format(RTrim(.xm), "@@@@@@")

      sx = Format(.sx, "####")

      yw = Format(.yw, "####")

      wy = Format(.wy, "####")

      msg = xh & xm & " " & sx & " " & yw & " " & wy

   End With

   List1.AddItem msg

Next

Close #1

End Sub

Private Sub Command2_Click()   '输入数据

For i = 0 To 4

  Text1(i).Text = ""

Next

Text1(0).SetFocus

Command3.Enabled = True

End Sub

Private Sub Command3_Click()   '添加记录

Dim lastrec As Integer

For i = 0 To 4

   If Text1(i).Text = "" Then

      MsgBox "数据不全,输入完整后再添加", , "添加记录"

      Exit Sub

   End If

Next

With cjd

   .xh = Text1(0).Text

   .xm = Text1(1).Text

   .sx = Val(Text1(2).Text)

   .yw = Val(Text1(3).Text)

   .wy = Val(Text1(4).Text)

End With

Open "考试成绩" For Random As #1 Len = Len(cjd)

lastrec = LOF(1) / Len(cjd)

Put #1, lastrec + 1, cjd

Close #1

Call Command1_Click

Command3.Enabled = False

End Sub

Private Sub Command4_Click()   '删除记录

Dim lastrec As Integer

recnum = List1.ListIndex + 1

Open "临时数据" For Random As #1 Len = Len(cjd)

Open "考试成绩" For Random As #2 Len = Len(cjd)

lastrec = LOF(2) / Len(cjd)

For n = 1 To lastrec

   If n <> recnum Then

      Get #2, n, cjd

      Put #1, , cjd

   Else

      Get #2, n, cjd

      With cjd

        Text1(0).Text = .xh

        Text1(1).Text = .xm

        Text1(2).Text = .sx

        Text1(3).Text = .yw

        Text1(4).Text = .wy

      End With

   End If

Next

Close #1

Close #2

Kill "考试成绩"

Name "临时数据" As "考试成绩"

Call Command1_Click

End Sub

Private Sub List1_Click()

If List1.ListIndex > -1 Then

   Command4.Enabled = True

Else

   Command4.Enabled = False

End If

End Sub

http://www.dtcms.com/a/541838.html

相关文章:

  • 选服务好的网站建设公司网易企业邮箱app叫什么名字
  • 比百度更好的网站网站后台怎么做友情链接
  • 网站建站侵权怎么办推荐一下做图文的网站
  • Java 多线程:从单体到分布式的演进与陷阱
  • JAVA中的注解是什么玩意
  • 能不能上传网站再备案陕西西安网站设计公司
  • 各大网站注册记录商城建站报价方案
  • 注入漏洞网站源码程序开发的基本步骤是什么?
  • 超硬核c语言编程随想笔记:深挖cint**二级指针-核心多级指针的内存陷阱,彻底终结多级指针恐惧症
  • 邯郸建立网站费用乐清网站开发
  • JAVA面试入职笔记 | linux常用基本指令快速查看
  • 网站设计公司苏州erp系统的功能包括哪些
  • 【2025-系统规划与管理师】第16章:资源与工具管理
  • 天津网站建设案例wordpress怎么导入自己的php
  • 东莞网站优化方法有哪些哈尔滨大型网站设计公司
  • 模板的网站都有哪些公司网站建设公
  • 避免踩坑!三星打印机SCX3401驱动安装详细步骤解析
  • 有哪些网站开发技术甘肃省建设工程造价信息网站
  • 建网站 选安全网页设计代码单元格内容怎么居中
  • 双牌网站建设app网站样式
  • 模型参数大小计算
  • AI智能体连载(9)绘制智能体的工作流
  • 0.4、向量、向量维度、向量比较、向量搜索和相关算法
  • 无SDK API,可自定义API C++开发的脚本语言源码编译过程
  • 广州网站搭建哪家好公司网站报价
  • 网站 单页做网站需要用到什么
  • 硬件与软件交互全解析:协议、控制与数据采集实践
  • 国内外网站建设2017php网站怎么做的
  • 离石古楼角网站建设合肥有哪些做网站的公司
  • 二叉树的锯齿形层序遍历