计算机二级VB教程 (12).ppt_第1页
计算机二级VB教程 (12).ppt_第2页
计算机二级VB教程 (12).ppt_第3页
计算机二级VB教程 (12).ppt_第4页
计算机二级VB教程 (12).ppt_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第12章处理文件 VisualBasic程序设计教程 VisualBasic程序设计教程 2 本章介绍 使用文件系统控件 使用有关的语句和函数 操作顺序文件 操作随机文件 使用文件系统对象 VisualBasic程序设计教程 3 12 1概述 为什么要引入了数据文件 文件标识符 文件分类 程序文件和数据文件 数据文件按存储方法的不同 可分为以下三种类型 1 顺序文件2 随机文件3 二进制文件 数据文件的操作形式 VisualBasic程序设计教程 4 12 2操作顺序文件数据的例子 例12 1 设计一个如图12 1所示的界面 该窗体上有1个驱动器列表框 1个文件夹列表框 1个文件列表框和一个文本框 当启动窗体后 用户在驱动器列表框选择驱动器后 文件夹列表框显示选中驱动器下的文件夹 用户双击相应的文件夹 在文件列表框中显示该文件夹下的所有文本文件 txt 用户双击相应的文件就可以在文本框中显示该文件内容 VisualBasic程序设计教程 5 12 3使用文件系统控件 VB提供了三种文件系统控件 它们是 驱动器列表框 DriveListBox 文件夹列表框 DirListBox 和文件列表框 FileListBox VisualBasic程序设计教程 6 12 3 1驱动器列表框 驱动器列表框是下拉式列表框 用来显示当前系统中所有有效的驱动器 包括远程连接的驱动器 通过这个下拉列表框用户可以选择驱动器 1 属性2 常用事件 Change事件 VisualBasic程序设计教程 7 2 常用事件 Change事件 VisualBasic程序设计教程 8 12 3 2文件夹列表框 文件夹列表框以树形展开方式显示某个驱动器或文件夹内的各个子文件夹名 并用打开的文件夹图标来表示选定的文件夹 称当前目录 属性Path 用来设置当前文件夹名或返回所选择的文件夹名 List 该属性的类型为字符串数组 它的每一个列表项的内容是选定磁盘或文件夹下的各子文件夹名 VisualBasic程序设计教程 9 ListCount 表示当前文件夹下的子文件夹个数 ListIndex 它取值的有效范围为 n ListCount 1 其中 1是当前选定文件夹在List属性列表中的序号 从0 ListCount 1则为它的子文件夹在List属性 数组 中的序号 下标 而当前文件夹的父文件夹是绝对值大于1的负数 如图12 3所示 VisualBasic程序设计教程 10 常用事件Chang事件 当鼠标双击新文件夹或改变Path属性时 触发Change事件 Change事件发生后 改变了文件夹列表框的Path属性 即改变了当前文件夹 Click事件 当鼠标单击文件夹时 触发Click事件 Click不会改变文件夹列表框中的当前文件夹 但它会改变文件夹列表框的ListIndex属性 因此要在Click事件中改变当前文件夹 可用以下代码实现 PrivateSubDir1 click Dir1 Path Dir1 List Dir1 ListIndex EndSub VisualBasic程序设计教程 11 Keypress事件 按Windows系统的惯例 在程序中可用两种方法改变选定的路径 即用鼠标双击列表框内的某个文件夹名 或先用光标键把列表框内的光标条移到指定文件夹上 然后按回车 后一种方法的实现 必须由控件的KeyPress事件来完成 例如 PrivateSubDir1 KeyPress KeyAsciiAsInteger IfKeyAscii 13ThenDir1 Path Dir1 List Dir1 ListIndex EndIfEndSub VisualBasic程序设计教程 12 12 3 3文件列表框 文件列表框用于显示当前文件夹下的文件 属性 VisualBasic程序设计教程 13 常用事件Click事件DblClick事件Pathchange事件Patternchange事件 VisualBasic程序设计教程 14 文件系统控件例子 例12 2 设计一个如图12 4所示界面 演示了文件系统控件之间的关系 界面中驱动器 文件夹和文件列表框的名称分别为Drive1 Dir1和File1 组合框的名称为Combo1 其Style属性为2 VisualBasic程序设计教程 15 程序代码 PrivateSubForm Load Combo1 AddItem 所有文件 Combo1 AddItem 文本文件 TXT Combo1 AddItem 图形文件 bmp jpg Combo1 ListIndex 0Dir1 Path c windows EndSub VisualBasic程序设计教程 16 PrivateSubDrive1 Change Dir1 Path Drive1 DriveEndSubPrivateSubDir1 Change File1 Path Dir1 PathEndSub VisualBasic程序设计教程 17 PrivateSubCombo1 Click IfCombo1 Text 所有文件 ThenFile1 Pattern ElseIfCombo1 Text 文本文件 TXT ThenFile1 Pattern TXT ElseIfCombo1 Text 图形文件 bmp jpg ThenFile1 Pattern bmp jpg EndIfEndSub VisualBasic程序设计教程 18 其中SubCombo1 Click 内的程序代码也可以写成 M InStr 1 Combo1 Text N InStr 1 Combo1 Text File1 Pattern Mid Combo1 Text M 1 N M 1 VisualBasic程序设计教程 19 12 4使用有关的语句和函数 VB提供了许多与文件操作有关的语句和函数 使用户可以在应用程序中很方便地对文件和文件夹进行删除 复制和获取文件有关属性等操作 这里简单介绍常用的几个语句 1 ChDrive语句格式 ChDrivedrive功能 改变当前驱动器 示例 ChDrive D VisualBasic程序设计教程 20 2 MkDir语句格式 MkDirfolder功能 创建一个新的文件夹 如果设置了一个无效的文件夹存储路径 将会产生错误 示例 MkDir C TMP MkDir C TMP ABC VisualBasic程序设计教程 21 3 RmDir语句格式 RmDirfolder功能 删除一个存在的空文件夹 文件夹内不能有文件 如果有文件 先用Kill语句删除所有文件 示例 RmDir C TMP ABC 4 ChDir语句格式 ChDirpath功能 改变当前文件夹示例 ChDir C TMP VisualBasic程序设计教程 22 5 FileCopy语句格式 FileCopysource destination功能 复制一个指定源文件到目标位置 用来确定复制的源文件名和目标文件名 它们都可包括文件的存储路径 不能复制一个已经打开的文件 示例 FileCopy C abc txt C TMP bbb txt VisualBasic程序设计教程 23 6 Kill语句格式 Killfile功能 删除指定的文件 必要时文件名应指明它的存储路径 为了删除一类文件 可以使用文件通配符 示例 Kill C TMP txt 7 Name语句格式 Nameold nameAsnew name功能 重新命名一个文件或文件夹 Name语句具有移动文件的功能 即在重新命名时并将其移动到一个不同的文 VisualBasic程序设计教程 24 件夹 不能重新命名一个已经打开的文件 改名示例 Name C TMP bbb txt as aaa txt 移动示例 Name C TMP aaa txt as c bbb txt 8 Shell方法 函数 格式 Shellcommand file window style 或Shell command file window style 功能 调用各种外部的可执行文件 不能调用操作系统的各种内部命令 VisualBasic程序设计教程 25 说明 command file用以确定要执行的外部文件的文件名和目录路径 window style为数值型表达式 用以设置Shell窗口的初始状态值 该值也可使用VB系统的符号常量 如表12 5所示 9 CurDir函数格式 CurDir drive 功能 返回指定盘或默认盘的当前文件夹 10 FileLen函数格式 FileLen file name 功能 返回是指定文件的长度 单位为字节数 VisualBasic程序设计教程 26 12 5操作顺序文件 VB中的顺序文件是普通的文本文件 文件中的每个数据以ASCII码 文本 形式存储 因此能被不同语言的程序共享或直接打印输出 也可由文本编辑器 如记事本或EDIT等 进行修改 顺序文件结构比较简单 它的存储方式是顺序存储 即一个数据接着一个数据地顺序排列 只是提供了第1个数据的存储位置 要查找一个数据时 必须从头开始一个一个地读取直到找到所要的数据 VisualBasic程序设计教程 27 12 5 2打开顺序文件打开文件使用是Open语句 其格式为 Open文件名For模式As 文件号1 文件名 指定打开的文件 2 模式 用于指定文件的操作方式 顺序文件共有3种操作方式 可以选择下列三种形式之一 1 Input 打开一个已经存在的文件作读操作 2 Output 打开一个新文件作写操作 如果文件标识符指定的文件已经存在 则文件中的原内容将被清除 VisualBasic程序设计教程 28 3 Append 打开文件后在文件末尾作追加数据的写操作 如指定的文件已经存在 则文件中的原内容被保留 否则将创建一个新文件 3 文件号 文件号也称通道号 是一个介于1 512之间的整型 4 FreeFile函数 用来获取一个可用的最小的空闲通道号 使用格式为 FileNo FreeFile 或FileNo FreeFile0 VisualBasic程序设计教程 29 例如 Open C TMP ABC DAT ForInputAs1 表示以读文件的操作模式 打开在C TMP路径下的名为ABC DAT的数据文件 OpenFileNameForOutputAsFileNo 表示以写文件的操作模式 创建一个新文件 文件名及存储路径由变量FileName的值决定 通道号由变量FileNo的值决定 VisualBasic程序设计教程 30 12 5 3写入操作1 Write 语句 将表达式的值写入与文件号相关的顺序文件 使用格式如下 Write 文件号 输出表达式列表 VisualBasic程序设计教程 31 1 输出表达式列表的各表达式间可用逗号 或分号 分隔 两种分隔符的效果相同 2 自动在写入文件的各输出项之间 加入分隔符逗号 字符类型输出项以双引号作为界限符 写入文件的逻辑型 日期型数据或空值 NULL 是以 号作为数据项的界限符 如 TRUE FALSE 1999 10 30 NULL VisualBasic程序设计教程 32 3 最后一个输出项的后面如果没有逗号或分号 将自动追加回车换行符 4 如果语句中没有任何输出项即只有通道号及后面的逗号 将向文件中输出一个空行 VisualBasic程序设计教程 33 例12 3 利用Write 语句把数据写入文件PrivateSubForm Click DimnnAsInteger ccAsStringOpen d temp txt ForOutputAs 1nn 123 cc ABCDE Write 1 nn 2 5 3Write 1 cc Write 1 hello Write 1 Write 1 03 01 2001 Close 1EndSub VisualBasic程序设计教程 34 2 Print 语句 它是一种格式化的文件输出语句 其数据输出格式与Print方法在窗体上输出的格式类似 使用格式如下 Print 文件号 输出表达式列表 它与Write 语句的区别在于 Print 语句完全按程序代码中设定的格式输出数据 其中输出表达式列表的各输出项之间及语句末尾 可用逗号或分号分隔 它们的分隔效果不同 关请参见2 7 3 VisualBasic程序设计教程 35 12 5 4关闭顺序文件 结束各种读写操作以后 必须将打开的文件关闭 否则将会造成数据丢失 关闭文件的语句格式为 Close 文件号 文件号 VisualBasic程序设计教程 36 在完成了数据文件的写操作后 当VB程序执行到Close语句 则在关闭并释放文件缓冲区前 会在把缓冲区中的数据写入磁盘后再执行关闭操作 同时释放内存空间 当VB程序执行到End语句或单击窗体关闭按钮时 也会关闭此时尚未关闭的文件 VisualBasic程序设计教程 37 12 5 5读出操作 要把数据从顺序文件中读出 应该以Input模式打开文件 然后使用Input LineInput 语句或Input函数从文件中读出数据 通常Input用来读出由Write写入的数据 LineInput和Input函数用来读出由Print写入的数据 VisualBasic程序设计教程 38 1 Input 语句 从指定的文件中读出数据项 并把它们存入各自的变量中 使用格式为 Input 文件号 变量列表其中 变量名列表中的变量个数决定了该语句从文件中读取的数据个数 例如 语句 Input 1 nn cc dd VisualBasic程序设计教程 39 2 LineInput 语句 仅以回车换行符 Chr 13 Chr 10 作为界限 从文件中读入一整行的字符 并赋予相应的字符型变量 使用格式为 LineInput 文件号 字符型变量 VisualBasic程序设计教程 40 3 Input函数 从文件中读取指定字符数的字符 使用格式为 Input 字符数 文件号 例如b Input 10 1 表示从文件号为1的顺序文件中读出10个字符 VisualBasic程序设计教程 41 4 EOF函数 判断是否已读完了文件中的所有数据 即已到了文件末尾 使用格式为 EOF 文件号 如果指定的文件已经读到了文件末 则函数返回True 否则返回False VisualBasic程序设计教程 42 5 LOF函数 获取已打开文件的总字节数 如果返回0 表示文件为空 使用格式为 LOF 文件号 例如Text1 text Input LOF 1 1 表示把文件号为1的文件内容全部读出显示在文本框中 VisualBasic程序设计教程 43 例12 4 利用EOF函数 统计已打开的某文件中的数据个数 通道号为1 统计结果显示在Text1文本框内 其中文件打开和关闭在窗体的Load和UnLoad事件中完成 VisualBasic程序设计教程 44 PrivateSubCommand1 Click DimNumbasInteger nttasStringNumb 0DoWhileNotEOF 1 Input 1 nttNumb Numb 1LoopText1 Text Str numb EndSub VisualBasic程序设计教程 45 例12 5 设计一个应用程序 界面如图图12 6所示 利用窗体输入若干位同学的姓名和计算机成绩 并将它存入文件中 要求操作过程为 先击 保存 按钮cmdSave 决定要保存的文件 然后在两文本框txtName和txtScore中输入姓名和成绩 击 添加 按钮cmdAdd将数据送入文件 击 退出 cmdExit关闭文件 并结束程序运行 VisualBasic程序设计教程 46 PrivateSubForm Load cmdAdd Enabled FalseEndSubPrivateSubcmdSave Click DimFnameasStringcdl 1 ShowSaveFname cdl 1 FileNameIfTrim cdl 1 FileTitle thenOpenFnameForOutputAs 1cmdAdd Enabled TruecmdSave Enabled FalseElseMsgbox 必须选择一个文件 EndifEndSub VisualBasic程序设计教程 47 PrivateSubcmdAdd Click 向文件添加数据IfTrim txtName Text ThenWrite 1 Trim txtName Text Val txtScore Text EndIftxtName Text txtScore Text txtName SetFocusEndSubPrivateSubcmdExit Click Close 1UnloadMeEndSub VisualBasic程序设计教程 48 例12 6 利用例12 5输入的数据 在窗体的文本框txtContent中显示所有同学的姓名和计算机成绩 并求出班平均分显示在文本框txtAverAge中 设计界面如图所示 VisualBasic程序设计教程 49 PrivateSubcmdShow Click DimSumasInteger CountasInteger NameasString ScoreasIntegercdl 1 ShowOpenifcdl 1 FileTitle thenOpencdl 1 FileNameForInputAs 1ElseMsgbox 必须打开文件 ExitsubEndifSum 0 Count 0 VisualBasic程序设计教程 50 DoWhileNotEOF 1 Input 1 Name ScoretxtContent Text txtContent Text Name ScoretxtContent Text txtContent Text Chr 13 Chr 10 显示信息后换行Sum Sum ScoreCount Count 1 统计人数LooptxtAverage Sum CountClose 1EndSub VisualBasic程序设计教程 51 12 6操作随机文件 前面介绍了怎样建立顺序文件及如何访问它们以找到特定的信息 访问顺序文件的数据需要从头到尾地依次读写 而在许多应用程序中是要求立即定位特定记录的信息 如自动柜员机的应用程序 需要处理银行数以万计的用户帐号 需要迅速检查特定帐号上的信息 这类即时存取操作可以使用随机文件实现 随机文件的记录可以直接访问 而不必通过搜索其它记录 VisualBasic程序设计教程 52 12 6 1什么是随机文件 随机文件是由一个个记录所构成的 记录通常是描述一个对象的基本单位 它由若干个相互关联的数据项组成 在随机文件中 文件的访问是按记录进行操作的 每个记录都有一个记录号且长度都是完全相同的 VisualBasic程序设计教程 53 打开随机文件后 可以同时进行读 写操作 读写数据速度较快 数据更新容易 随机文件的数据以二进制格式存储 需要特定的程序使用它们 用文本编辑器打开则难以正确显示 VisualBasic程序设计教程 54 12 6 2记录用户自定义类型1 定义用户自定义类型 用户自定义类型是派生数据类型 它们是使用其它类型的对象构造出来的PrivateTypeStudentXhasString 10NameasString 8ScoreasIntegerEndType VisualBasic程序设计教程 55 2 访问用户自定义类型的变量 Type定义是用户所定义的一个新的数据类型 在程序中可以使用所定义的类型来声明变量 其方法与VB变量声明相同 DimStdasStudent 访问用户自定义类型变量的成员与访问控件的属性类似 采用点运算符 例如给Std变量的成员赋值 可以使用下列语句 Std Xh 3512354012 Std Name 张三 Std Score 90 VisualBasic程序设计教程 56 12 6 3打开和关闭随机文件 随机文件的打开仍用Open语句 使用格式为 Open文件名 ForRandom As 文件号Len 记录长度1 如果指定文件名的文件不存在 会自动创建 2 Random是默认的访问模式 随机文件读 写的访问模式是相同的 文件打开后 可同时进行读 写操作 3 Len 记录长度 指定了每条记录的长度 如果设置的记录长度比实际的记录长度短 会产生错误 如果比实际的记录长度长 可以写入 当然会浪费磁盘存储空间 可以用Len 函数来确定记录的长度 VisualBasic程序设计教程 57 4 文件打开时 记录指针指向第1条记录 例如以下语句打开了D盘根目录下的Student dat随机文件 Open D Student dat ForRandomAs 1Len Len Std 关闭随机文件的方法同顺序文件一样 用Close语句即可 VisualBasic程序设计教程 58 12 6 4读写随机文件1 写操作Put 文件号 记录号 变量2 读操作Get 文件号 记录号 变量3 Seek函数和Seek语句 1 Seek函数 使用格式为 Seek 文件号 函数返回当前的读 写位置 即当前所指的记录号 返回值的类型是长整型 2 Seek语句 使用格式为 Seek 文件号 记录号语句设置下一个读 写操作的记录号 VisualBasic程序设计教程 59 例12 7 设计程序 界面如图所示 利用随机文件保存学生的成绩 可以输入学号 姓名和计算机成绩 浏览数据 VisualBasic程序设计教程 60 PrivateTypestudentXhAsString 10NameAsString 8ScoreAsIntegerEndTypeDimStdAsstudentPrivateSubForm Load DimLastrecAsInteger iAsIntegerOpen d student dat ForRandomAs 1Len Len Std Lastrec LOF 1 Len Std 总记录数 文件长度 记录长度List1 ClearFori 1ToLastrec 读出所有记录Get 1 i StdList1 AddItemStd Xh Std Name Std ScoreNextClose 1EndSub VisualBasic程序设计教程 61 PrivateSubCommand1 Click DimlastrecAsIntegerStd Xh Text1 TextStd Name Text2 TextStd Score Val Text3 Text Open d student dat ForRandomAs 1Len Len Std lastrec LOF 1 Len Std Put 1 lastrec 1 Std 当前数据追加到最后Close 1CallForm Load 也可以直接用List1 AddItem方法将新记录添加到列表框中Text1 Text 清空以便下次输入Text2 Text Text3 T

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论