实验H数据文件.docx

上传人:b****5 文档编号:5163980 上传时间:2022-12-13 格式:DOCX 页数:17 大小:82.64KB
下载 相关 举报
实验H数据文件.docx_第1页
第1页 / 共17页
实验H数据文件.docx_第2页
第2页 / 共17页
实验H数据文件.docx_第3页
第3页 / 共17页
实验H数据文件.docx_第4页
第4页 / 共17页
实验H数据文件.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

实验H数据文件.docx

《实验H数据文件.docx》由会员分享,可在线阅读,更多相关《实验H数据文件.docx(17页珍藏版)》请在冰豆网上搜索。

实验H数据文件.docx

实验H数据文件

实验H数据文件

一、实验目的

1.掌握顺序文件、随机文件及二进制文件的特点和使用。

2.掌握各类文件的打开、关闭和读/写操作。

3.学会在应用程序中使用文件。

二、实验内容

1.编写如图H.1所示的应用程序。

若单击“建立文件”按钮,则分别用Print#和Write#语句将三个同学的学号、姓名和成绩写入文件Score.dat和Scorel.dat;若单击“读取文件”按钮,则用LineInput语句按行将两个文件中的数据送往相应的文本框。

要求:

学号和姓名是字符串类型,成绩是整型。

PrivateSubCommand1_Click()

Open"C:

\Users\Administrator\Desktop\第八章\H1\score"ForOutputAs#1

Print#1,"051023","王海涛",66

Print#1,"052498","周文英",88

Print#1,"050992","陈建东",77

Open"C:

\Users\Administrator\Desktop\第八章\H1\score1"ForOutputAs#2

Write#2,"051023","王海涛",66

Write#2,"052498","周文英",88

Write#2,"050992","陈建东",77

Close

i1=Shell("NOTEPAD.exe"+"c:

\score",vbNormalNoFocus)

i2=Shell("NOTEPAD.exe"+"c:

\score1",vbNormalNoFocus)

 

EndSub

PrivateSubCommand2_Click()

DimnoAsString,nameAsString,sAsInteger

Open"C:

\Users\Administrator\Desktop\第八章\H1\score"ForInputAs#1

DoWhileNotEOF

(1)

LineInput#1,linedata

List1.AddItemlinedata

Loop

Open"C:

\Users\Administrator\Desktop\第八章\H1\score1"ForInputAs#2

DoWhileNotEOF

(2)

Input#2,no,name,s

List2.AddItemno&name&s

Loop

Close

EndSub

2.将斐波那契数列的前10项写入文件Fb.dat,然后从该文件将数据读取出来并计算合计和平均数,最后送入列表框。

要求:

文件数据格式如图H.2所示,列表框中项目格式如图H.3所示。

PrivateSubCommand1_Click()

Dimfib%(0To9),i%

Open"C:

\Users\Administrator\Desktop\第八章\H2\Fb.dat"ForOutputAs#1

Fori=0To9

Ifi=0Ori=1Then

fib(i)=i

Else

fib(i)=fib(i-1)+fib(i-2)

EndIf

Print#1,"""Fib("&i&")"","&fib(i)

Nexti

Close#1

i=Shell("NOTEPAD.exe"+"C:

\Users\Administrator\Desktop\第八章\H2\Fb.dat",vbNormalNoFocus)

Close#1

EndSub

PrivateSubCommand2_Click()

Dimst$,n%,sum%

Open"C:

\Users\Administrator\Desktop\第八章\H2\Fb.dat"ForInputAs#1

DoWhileNotEOF

(1)

Input#1,st,n

sum=sum+n

List1.AddItemst&"="&n

Loop

Close#1

List1.AddItem"合计:

"&sum

List1.AddItem"平均:

"&sum/10

EndSub

3.设计一个如图H.4所示的应用程序。

要求:

1单击“打开文件”按钮弹出一个通用对话框,选择文件后显示在文本框中。

2单击“保存文件”按钮后弹出通用对话框,确定文件名后保存。

3单击“查找下一个”按钮后在文本文件中查找单词“VB”,找到后以高亮度显示。

若再单击“查找下一个”按钮,则继续查找。

PrivateSubCommand1_Click()

CommonDialog1.Action=1

Text1.Text=""

OpenCommonDialog1.FileNameForInputAs#1

DoWhileNotEOF

(1)

LineInput#1,inputdata

Text1.Text=Text1.Text+inputdata+vbCrLf

Loop

Close#1

EndSub

PrivateSubCommand2_Click()

CommonDialog1.FileName="Default.Txt"

CommonDialog1.DefaultExt="Txt"

CommonDialog1.Action=2

OpenCommonDialog1.FileNameForOutputAs#1

Print#1,Text1.Text

Close#1

EndSub

PrivateSubCommand3_Click()

Staticj%

Text1.SetFocus

j=InStr(j+1,Text1,"VB")

Ifj>0Then

Text1.SelStart=j-1

Text1.SelLength=2

j=j+1

Else

MsgBox"找不到"

EndIf

EndSub

PrivateSubCommand4_Click()

End

EndSub

4.编写一个随机文件程序。

要求:

1建立一个具有5个学生的学号、姓名和成绩的随机文件(Random.dat)。

2读出Random.dat文件中的内容,然后按成绩排序,最后按顺序写入另一个随机文件(Randoml.dat)。

3再一次读出文件的内容,按文件中的顺序将学生的信息显示在屏幕上,检查正确性。

PrivateTypeStudtype

noAsString*4

nameAsString*6

markAsSingle

EndType

DimStudentAsStudtype,Stud(1To5)AsStudtype,tAsStudtype

PrivateSubCommand1_Click()

Open"C:

\Users\Administrator\Desktop\第八章\H4\score.dat"ForRandomAs#1Len=Len(Student)

WithStudent

.no="0001"

.name="小王"

.mark=66

EndWith

Put#1,1,Student

WithStudent

.no="0002"

.name="俊杰"

.mark=99

EndWith

Put#1,2,Student

WithStudent

.no="0003"

.name="勇气"

.mark=88

EndWith

Put#1,3,Student

WithStudent

.no="0004"

.name="光明"

.mark=55

EndWith

Put#1,4,Student

WithStudent

.no="0005"

.name="加油"

.mark=77

EndWith

Put#1,5,Student

Close#1

EndSub

PrivateSubCommand2_Click()

Open"C:

\Users\Administrator\Desktop\第八章\H4\score.dat"ForRandomAs#1Len=Len(Student)

Fori=1To5

Get#1,i,Student

PrintStudent.no,Student.name,Student.mark

Stud(i)=Student

Nexti

Close#1

Fori=1To5

Forj=i+1To5

IfStud(i).mark>Stud(j).markThent=Stud(i):

Stud(i)=Stud(j):

Stud(j)=t

Next

Nexti

Open"C:

\Users\Administrator\Desktop\第八章\H4\score.dat"ForRandomAs#2Len=Len(Student)

Fori=1To5

Put#2,i,Stud(i)

Nexti

Close#1

EndSub

PrivateSubCommand3_Click()

Open"C:

\Users\Administrator\Desktop\第八章\H4\score.dat"ForRandomAs#1Len=Len(Student)

Fori=1To5

Get#1,i,Stud(i)

PrintStud(i).no;Stud(i).name;Stud(i).mark

Nexti

Close#1

EndSub

5.在教材例8.6中添加一组按钮,如图H.5所示,并编写事件过程。

DimStudentAsStudType

DimRecord_NoAsInteger

SubCommand1_Click()

WithStudent

.iNo=Val(Text1.Text)

.strName=Text2.Text

.strSex=IIf(Option1.Value,"1","0")

.sMark=Val(Text4.Text)

EndWith

Open"C:

\Users\Administrator\Desktop\第八章\H5\STUDENT.DAT"ForRandomAs#1Len=Len(Student)

Record_No=LOF

(1)/Len(Student)+1

Label4.Caption=Record_No

Put#1,Record_No,Student

Close#1

EndSub

SubCommand2_Click()

Open"C:

\Users\Administrator\Desktop\第八章\H5\STUDENT.DAT"ForRandomAs#1Len=Len(Student)

Record_No=Val(Text3.Text)

Get#1,Record_No,Student

Text1.Text=Student.iNo

Text2.Text=Student.strName

IfStudent.strSex="1"Then

Option1.Value=True

Else

Option2.Value=True

EndIf

Text4.Text=Student.sMark

Record_No=LOF

(1)/Len(Student)

Close#1

EndSub

PrivateSubCommand3_Click()

Open"C:

\Users\Administrator\Desktop\第八章\H5\STUDENT.DAT"ForRandomAs#1Len=Len(Student)

Record_No=1

Get#1,Record_No,Student

Text1.Text=Student.iNo

Text2.Text=Student.strName

IfStudent.strName="1"Then

Option1.Value=True

Else

Option2.Value=True

EndIf

Text4.Text=Student.sMark

Close#1

EndSub

PrivateSubCommand4_Click()

Open"C:

\Users\Administrator\Desktop\第八章\H5\STUDENT.DAT"ForRandomAs#1Len=Len(Student)

Record_No=Record_No+1

Get#1,Record_No,Student

Text1.Text=Student.iNo

Text2.Text=Student.strName

IfStudent.strName="1"Then

Option1.Value=True

Else

Option2.Value=True

EndIf

Text4.Text=Student.sMark

Close#1

EndSub

PrivateSubCommand5_Click()

Open"C:

\Users\Administrator\Desktop\第八章\H5\STUDENT.DAT"ForRandomAs#1Len=Len(Student)

Record_No=Record_No-1

Get#1,Record_No,Student

Text1.Text=Student.iNo

Text2.Text=Student.strName

IfStudent.strName="1"Then

Option1.Value=True

Else

Option2.Value=True

EndIf

Text4.Text=Student.sMark

Close#1

EndSub

PrivateSubCommand6_Click()

Open"C:

\Users\Administrator\Desktop\第八章\H5\STUDENT.DAT"ForRandomAs#1Len=Len(Student)

Record_No=Val(Label4.Caption)

Get#1,Record_No,Student

Text1.Text=Student.iNo

Text2.Text=Student.strName

IfStudent.strName="1"Then

Option1.Value=True

Else

Option2.Value=True

EndIf

Text4.Text=Student.sMark

Close#1

EndSub

SubCommand7_Click()

WithStudent

.iNo=Val(Text1.Text)

.strName=Text2.Text

.strSex=IIf(Option1.Value,"1","0")

.sMark=Val(Text4.Text)

EndWith

Open"C:

\Users\Administrator\Desktop\第八章\H5\STUDENT.DAT"ForRandomAs#1Len=Len(Student)

Record_No=Val(Text4.Text)

Put#1,Record_No,Student

Close#1

EndSub

SubForm_Load()

Open"C:

\Users\Administrator\Desktop\第八章\H5\STUDENT.DAT"ForRandomAs#1Len=Len(Student)

Label4.Caption=LOF

(1)/Len(Student)

Close#1

EndSub

6.将教材例8.4用随机文件实现。

PrivateTypestudtype

noAsInteger

nameAsString*6

markAsInteger

EndType

DimstdAsstudtype

DimrecordAsInteger

PrivateSubCommand1_Click()

Withstd

.no=Val(Text1.Text)

.name=Text2.Text

.mark=Val(Text3.Text)

EndWith

Open"C:

\Users\Administrator\Desktop\第八章\H6\score1"ForRandomAs#1Len=Len(std)

record=LOF

(1)/Len(std)+1

Put#1,record,std

Close#1

Text1.Text=""

Text2.Text=""

Text3.Text=""

Text1.SetFocus

EndSub

PrivateSubCommand2_Click()

Dimsum,countAsInteger

Open"C:

\Users\Administrator\Desktop\第八章\H6\score1"ForRandomAs#1Len=Len(std)

Fori=1Torecord

Get#1,i,std

sum=sum+std.mark

count=count+1

List1.AddItemstd.no&""&std.name&std.mark

Nexti

List1.AddItem"总分"&sum

List1.AddItem"平均成绩"&sum/count

Close#1

EndSub

7.编写一个能将任意两个文件的内容合并的程序,程序界面由自己设计。

提示:

若要处理任意类型的文件,则文件必须作为二进制文件打开。

PrivateSubCommand1_Click()

DimcharAsByte

Open"C:

\Users\Administrator\Desktop\第八章\H7\t1.dat"ForBinaryAs#1

Open"C:

\Users\Administrator\Desktop\第八章\H7\t2.dat"ForBinaryAs#2

Open"C:

\Users\Administrator\Desktop\第八章\H7\t3.dat"ForBinaryAs#3

DoWhileNotEOF

(1)

Get1,,char

Put3,,char

Loop

DoWhileNotEOF

(2)

Get2,,char

Put3,,char

Loop

Close#1,#2,#3

EndSub

习题八

l、什么是文件?

ASCII文件与二进制文件有什么区别?

答:

文件是存储在外存储器(如磁盘)上的用文件名称标识的数据的集合。

按存储信息的形分类,文件可分为ASCII文件和二进制文件。

ASCII文件存放的是各种数据的ASCII代码,可以用记事本打开;二进制文件存放的是各种数据的二进制代码,不能用记事本打开,必须由专用程序打开。

2、根据文件的访问模式,文件可分为哪几种类型?

答:

根据文件的访问模式,文件可分为顺序文件、随机文件、二进制文件。

顺序文件要求按顺序访问文件中的数据;随机文件可以根据记录号直接访问某一特定记录;二进制文件要求以字节为单位定位数据位置,允许程序直接访问各个字节数据,也允许程序按所需的任何方式组织和访问数据。

3、构造满足下列条件的Open语句。

(1)建立一个新的顺序文件Seqnew.dat.供用户写入数据,指定文件号为1。

答:

Open”Seqnew.dat”ForOutputAs#1

(2)打开一个旧的顺序文件Seqold.dat,用户将从该文件读出数据,指定文件号为2。

答:

Open”Seqold.dat”ForIntputAs#2

(3)打开一个旧的顺序文件Seqappend.dat,用户将在该文件后面添加数据,文件号调用FreeFile函数获得。

答:

DimNo%

No=FreeFile

Open”Seqappend.dat”ForAppendAs#No

4、试写出程序代码片段,将文本文件Text.dat中的内容读入变量strTest$中。

答:

文本文件具有行结构的特性,可以按行读取文本文件中的数据:

Open"Text.dat"ForInputAs#1

strtest$=""

DoWhileNotEOF

(1)

LineInput#1,linedata

strtest$=strtest$+linedata+vbCrLf

Loop

Close#1

5、Print#和Write#语句的区别?

各有什么用途?

答:

两种语句区别是:

用Write#语句输出数据时,各数据之间自动插入“,”,并给字符串加上双引号,以区别数据类型;而用Print#语句输出数据时,数据项之间既无逗号分隔,字符串又无双引号引起。

因此,为了以后读取数据项的方便,输出列表有多个数据项组成时,建议使用Write#语句。

6、试说明EOF函数的功能

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 自考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1