文件的基本操作 实验

实验 文件的基本操作
一、实验目的
(1)掌握顺序文件、随机文件、二进制文件的特点及使用方法。
(2)熟练掌握文件的打开、关闭和读写命令。
(3)学会利用文件建立简单的应用程序。
二、相关知识
1.文件的基本概念及文件类型
“文件”是存放在外部介质(磁盘、磁带等)上的相关数据的集合,每一个文件都有文件名。根据文件中数据的存放形式,将数据文件分为3种类型,即顺序文件、随机文件和二进制文件。对此,vb提供了3种文件访问的类型:顺序访问、随机访问和二进制访问。
2.顺序文件
要处理的文件只包含文本信息,其中的数据没有分成记录,就可以使用顺序型访问。进行顺序访问要用到以下3种打开文件的模式:
● 读文件:open[路径:]文件名[.扩展名] forinput as #文件号。
● 写文件:open[路径:]文件名[.扩展名] for output as #文件号。
● 追加写入:open[路径:]文件名[.扩展名] for append as #文件号。
3.随机文件
随机文件是由一组相同长度的记录组成,每个记录包含一个或多个字段。具有一个字段的记录对应于任一标准类型,具有多个字段的记录对应于用户定义类型。随机文件对读写顺序没有限制,可以以记录为单位,读写任何—条记录。进行随机访问要用到以下打开文件的模式:open[路径:]文件名[.扩展名] for random as #文件号 [len = 记录长度]
4.二进制文件
二进制访问是以字节为单位对文件进行的访问操作,它允许用户读写文件的任何字节。通过使用二进制访问可使磁盘空间的使用降到最小,当要保持文件的尺寸尽量小时,应使用二进制型访问。要打开二进制访问的文件,open语句打开文件的方式如下:
open[路径:]文件名[.扩展名] for binary as #文件号
三、实验举例
(实例1)已知某班学生成绩文件为“grade.dat”,该文件共有6个宇段:姓名、语文成绩、数学成绩、英语成绩、计算机成绩、总分:姓名字段为8个字符的字符型,其余宇段都是数值型。设该文件已经按照总分降序排序,输入一个总分,请用折半查找的方法查找该班是否存在某分数的人,若找到,输出该学生的情况,否则输出没有找到。
根据上述描述,进行如下操作:
(1)首先在模块中建立如下结构:
type stdinfo
name as string * 8
yuwen as integer
math as integer
english as integer
xgrade as integer
sum as integer
end type
(2)将学生信息(包括:姓名、4门课成绩)放入到abc.txt文件中。
”张三”,98,97,96,94
”李四”,94,96,95,95
“王五”,92,90,98,93
“赵六”,90,96,92,88
“孙七”,88,92,86,84
“马八”,93,86,88,80
“武九”,90,84,80,82
“刘一”,86,80,85,83
“曹二”,78,90,82,80
然后用如下代码将上面数据的文件变成为随机文件“grade.dat”。
private sub command2 click()
dim filenol as integer, fileno2 as integer
dim std as stdinfo
dim c as integer
filenol=freefile
open app.path & ”\abc.txt” for input as #fileno1
fileno2 = freefile
open app.path & ”\grade.dat”for random as #fileno2 len = len(std)
c = 1
do while not eof(filenol)
input #fileno1, std.name,std.yuwen, std.math,_
std.english, std.xgrade
std.sum = std.yuwen +std.math + std.english + std.xgrade
put #fileno2, c, std
c = c + 1
loop
close #fileno2
close #fileno1
end sub
(3) 进行折半查找。
private sub form_load()
forml.caption = “学生成绩折半查找”
end sub
private sub commandl_click()
dim fileno as integer
dim low as integer
dim mid as integer
dim high as integer
dim std as stdinfo
dim c as integer
fileno = freefile
open app.path & ”\grade.dat” for random as #fileno len = len(std)
high = lof(fileno) \ len(std)
c = inputbox( “输入一个总分”)
do while low c then
low = mid+ l
elseif std.sum < c then
high = mid - l
else
exit do
end if
loop
if low <= high then
print std.name,std.yuwen,std.math,std.english,std.xgrade,std.sum
else
print“成绩”;c; ”没有找到”
end if
close #fileno
end sub
程序运行时输入334,结果为________。
长江存储64层3D NAND芯片专利研发完成,预计明年完成生产线建置
滤波电容的选择及在开关电源中的作用
用于复杂检查和校准的PCB微电子工具
忠于体验打磨颜值,魅族魅蓝6为百元机指明方向
为C++代码安全把关,TrustInSoft使世界变得更安全
文件的基本操作 实验
变频器控制板为什么频繁烧坏,其原因是什么
WiFi的2.4GHz和5GHz有什么区别
疫苗接种机器人中的肌肉注射点智能检测技术
医院能源管理平台对医院用电设备的电能质量进行监测和治理——安科瑞 严新亚
基于EZ-USB的电磁眼接口
坚果R2支持90Hz高刷新率
iPhone12京东预约破百万,到底香在哪?
乐融Letv推出Y系列产品 定位是极致性价比
Android Studio Chipmunk更新后的卡顿检测界面
海思MPP系统概述
希捷科技携手WWF启动“中国西部山区大熊猫栖息地监测与恢复示范”项目
索尼公布2018 Q2财报:PS4总出货量达8610万台
用于PV电池板模块的I-V扫描测试电路
原理解析:线程池中多余的线程是如何回收的?