习题七及答案习题七1.单项选择题(1)根据数据的存取方式和结构,文件可以分为()。A)顺序文件和随机文件B)程序文件和数据文件C)ASCII文件和二进制文件D)文本文件和二进制文件(2)下列叙述不正确的是()。A)打开一个文件后,才能对其进行读写操作B)Open语句兼有打开文件和新建文件的功能C)当用Open语句打开一个已经打开的文件时,将出现错误信息D)用Open语句以顺序输入的方式打开一个不存在的文件时,将建立该文件(3)以下能判断是否到达文件尾的函数是()。A)BOFB)LOCC)LOFD)EOF(4)下面关于顺序文件的描述正确的是()。A)每条记录的长度必须相同B)可通过编程对文件中的某条记录方便地修改C)数据只能以ASCII码形式存放在文件中,所以可通过文本编辑软件显示D)文件的组织结构复杂(5)能对顺序文件进行输出操作的语句是()。A)PutB)GetC)WriteD)Read(6)下列叙述错误的是()。A)文件是实现程序和数据分离的重要方式B)按文件的性质分类,可将文件分为ASCII文件和二进制文件C)文件的存取方式有顺序文件和随机文件两种D)文件的逻辑结构通常有记录文件和流式文件两种形式(7)目录列表框的Path属性的作用是()。A)显示当前驱动器或指定驱动器上的路径B)显示当前驱动器或指定驱动器上的某目录下的文件名C)显示根目录下的文件名D)只显示当前路径下的文件(8)执行语句OpenTel.datForRandomAs#1Len=50后,对文件Tel.dat中的数据能够执行的操作是()。A)只能写,不能读B)只能读,不能写C)既可以读,也可以写D)不能读,不能写(9)下面关于随机文件的描述不正确的是()。A)每条记录的长度必须相同B)一个文件中记录号不必惟一C)可通过编程对文件中的某条记录方便地修改D)文件的组织结构比顺序文件复杂(10)文件号最大可取的值为()。A)255B)511C)512D)256(11)PRINT#1,STR1$中的PRINT是()。A)文件的写语句B)在窗体上显示的方法C)子程序名D)以上均不是(12)为了建立一个随机文件,其中每一条记录由多个不同数据类型的数据项组成,应使用()。A)记录类型B)数组C)字符串类型D)变体类型(13)在窗体上画一个名称为Drive1的驱动器列表框,一个名称为Dir1的目录列表框,一个名称为File1的文件列表框,两个名称分别为Label1、Label2,标题分别为空白和“共有文件”的标签。编写程序,使得驱动器列表框与目录列表框、目录列表框与文件列表框同步变化,并且在标签Label1中显示当前文件夹中文件的数量。如图7-14所示。图7-14(9)题的运行界面能够正确实现上述功能的程序是()。A)PrivateSubDir1_Change()B)PrivateSubDir1_Change()File1.Path=Dir1.PathFile1.Path=Dir1.PathEndSubEndSubPrivateSubDrive1_Change()PrivateSubDrive1_Change()Dir.Path=Drive1.DriveDir1.Path=Drive1.DriveLabel1.Caption=File1.ListCountLabel1.Caption=File1.ListEndSubEndSubC)PrivateSubDir1_Change()D)PrivateSubDir1_Change()File1.Path=Dir1.PathFile1.Path=Dir1.PathLabel1.Caption=File1.ListCountLabel1.Caption=File1.ListEndSubEndSubPrivateSubDrive1_Change()PrivateSubDrive1_Change()Dir1.Path=Drive1.DriveDir1.Path=Drive1.DriveLabel1.Caption=File1.ListCountLabel1.Caption=File1.ListEndSubEndSub(14)设在工程中有一个标准模块,其中定义了如下记录类型TypeBooksNameAsString*10TelNumAsString*20EndType在窗体上画一个名为Commandl的命令按钮,要求当执行事件过程Commandl_Click时,在顺序文件Person.txt中写入一条记录。下列能够完成该操作的事件过程是()。A)PrivateSubCommand1_Click()B)PrivateSubCommand1_Click()DimBAsBooksDimBAsBooksOpenc:\Person.txtForOutputAs#1Openc:\Person.txtForInputAs#1B.Name=InputBox(输入姓名)B.Name=InputBox(输入姓名)B.TelNum=InputBox(输入电话号码)B.TelNum=InputBox(输入电话号码)Write#1,B.Name,B.TelNumPrint#1,B.Name,B.TelNumClose#1Close#1EndSubEndSubC)PrivateSubCommand1_Click()D)PrivateSubCommand1_Click()DimBAsBooksDimBAsBooksOpenc:\Person.txtForOutputAs#1Openc:\Person.txtForInputAs#1B.Name=InputBox(输入姓名)B.Name=InputBox(输入姓名)B.TelNum=InputBox(输入电话号码)B.TelNum=InputBox(输入电话号码)Write#1,BPrint#1,Name,TelNumClose#1Close#1EndSubEndSub2.填空题(1)VisualBasic提供的对数据文件的三种访问方式为随机访问方式、和二进制访问方式。(2)文件操作的一般步骤是打开(或建立)文件、进行读写操作和。(3)VisualBasic中,文件指针的定位通过语句来实现。(4)VisualBasic中,用于读写随机文件的语句分别是和。(5)在VisualBasic中,用来返回用Open语句打开的文件的大小的函数是。(6)当目录列表框的Path属性改变时,将触发事件;而当文件列表框的Path属性改变时,将触发的事件是。(7)如果要在文件列表框中只显示后缀为rar和zip的压缩文件,则应该将文件列表框的某属性设置为*.rar;*.zip,这个属性是。(8)要在一个顺序文件的末尾增加数据,则该文件的打开方式应为。(9)以下程序的功能是:把当前目录下的顺序文件smtext1.txt的内容读入内存,并在文本框Text1中显示出来。请填空。PrivateSubCommand1_Click()DiminDataAsStringText1.Text=Open.\smtext1.txtAs#1DoWhileInput#1,inDataText1.Text=Text1.Text&inDataLoopClose#1EndSub(10)在窗体上建立一个文本框,其名称为Text1,在属性窗口中把该文本框的MultiLine属性设置为True,然后编写如下的事件过程:PrivateSubForm_Click()Opend:\test\smtext1.txtForInputAs#1DoWhileNotLineInput#1,aspect$whole$=whole$+aspect$+Chr$(13)+Chr$(10)LoopText1.Text=whole$Close#1Opend:\test\dmtext2.txtForOutputAs#1Print#1,Close#1EndSub上述程序的功能是:把磁盘文件smtext1.txt的内容读到内存并在文本框中显示出来,然后把该文本框中的内容存入磁盘文件smtext2.txt,请填空。(11)以下代码建立文件名为“c:\stud1.txt”的顺序文件,内容来自文本框,每按一次回车键写入一条记录,然后清除文本框的内容,直到文本框内输入“END”字符串。PrivateSubForm_Load()Open〝c:stud1.txt〞ForOutputAs#1Text1=〝〞EndSubPrivateSubText1_KeyPress(KeyAsciiAsInteger)IfKeyAscii=13ThenIfThenClose#1EndElseText1=〝〞EndIfEndIfEndSub(12)磁盘文本文件e:\my\zg.dat的工资和职称情况,每条记录由工号、工资、职称组成,现对有职称的职工加工资,规定“教授”或“副教授”加原有工资的15%,“讲师”加原有工资的10%,“助教”加原有工资的5%,其他人员不加工资。本程序要求根据加工资的条件修改原文本文件内各类人员的相应工资。分析:文本文件不能直接进行修改,只能增加一个临时文件,顺序地从老文件读出内容,判断是否要修改。若不修改,则将原内容写到临时文件中;若修改,则将新内容写入临时文件中,直到文件结束。然后,通过临时文件将内容重新依次写回老文件。由此可见顺序文件修改某一条记录比较麻烦,但适合于批量数据的整体修改或处理。当然,也可通过VB提供的文件操作命令,删除老文件,将临时文件改名为老文件或将临时文件复制为老文件。PrivateSubCommand1_Click()Dimno%,gz!,zc$Open〝e:\my\zg.txt〞ForInputAs#1Open〝e:\my\lszg.txt〞ForOutputAs#2DoWhileNotEOF(1)SelectCasezcgz=gz*1.15Case〝讲师〞Case〝助教〞Gz=gz*1.05EndSelectLoopClose#1,#2Open〝e:\my\zg.txt〞Open〝e:\my\lszg.txt〞DoWhileNotEOF(2)Input#2,no,gz,zcLoopClose#1,#2EndSub3.编程题(1)编写程序,查找文件Student.txt中是否有字符串LiMing。(2)编写程序,实现驱动器列表框、目录列表框和文件列表框的同步操作。在文件列表框中显示所有后缀为*.log的文件,当用户双击文件列表框中的某个文件时,该文件的内容在文本框中显示出7-15所示。图7-15习题(2)的运行结果(3)编写程序,从键盘上输入若干个学生记录(姓名、性别、年龄、成绩、电话),以“DONE”为输入结束符,将输入的数据写入随机文件。输入完毕后,将所有的学生记录读出来打印在窗体上。学生记录定义如下:TypeStudentNameAsString*8SexAsString*2AgeAsIntegerScoreAsIntegerTelAsString*12EndType(4)编一个程序,完成如下功能:当用户分别在源文件框和目标文件框中输入文件名后,单击“复制”按钮,则将源文件复制到目标文件。程序运行界面如图7-16所示。图7-16习题(4)程序运行界面(5)在窗体上画两个名称分别为Command1和Command2的命令按钮,其标题分别设为“添加货物”和“查找货物”;两个名称分别为Label1和Label2的标签,其Caption属性分别为“货号”、“货名”;再画两个名称分别为Text1和Text2的文本框,其Text属性设为空白字符串。程序界面如图7-17所示。编写一个程序,实现如下功能:在“货号”和“货名”框中输入相应信息,点击“添加货物”按钮可以向文件中添加信息;在“货号”框中输入货号,点击“查找货物”按钮可以将找到的货号和货名显示在文本框中。图7-17习题(5)程序界面习题七参考答案:一、选择题(1)A(2)C(3)D(4)C(5)C(6)B(7)A(8)C(9)B