您现在的位置:首页 >> 实验指导 >> 内容

实验十二 文件

时间:2009-11-16 11:21:03 点击:1279

 

一、            实验目的

(1)  理解顺序文件、随机文件、二进制文件的区别及不同的应用环境;

(2)  掌握三种文件的打开、写入数据、读取数据、关闭操作;

(3)  掌握文件系统控件的使用;

(4)  掌握常用的文件操作语句和函数;

(5)  熟悉文件系统对象,掌握使用文件系统对象操作文件。

二、            实验内容

1.实验1将仿照Windows记事本的样式,设计一个记事本程序。通过该实验,将掌握顺序文件的读写、通用对话框的打开保存等内容。图44是程序运行后的界面。具体步骤如下:


(1)创建一个标准EXE应用程序,从工具箱中拖一个文本输入框到Form1上面。调整文本输入框在对话框中的位置及大小,设置它的MultiLine属性为“True”,ScrollBars属性为“2-Vertical”。修改Form1Caption属性为“我的记事本”。

(2)

为窗体添加文件菜单。选择“工具”    “菜单编辑器”,按照表12添加菜单。

12  记事本菜单选项属性设置

Caption

Name

Index

Shortcut

文件

mf_file

1

新建

mf_new

2

Ctrl+N

打开

mf_Open

3

Ctrl+O

保存

mf_save

4

Ctrl+S

-

Separate

0

退出

mf_exit

5

(3)为了让窗体改变大小的时候,Text1的大小也随之改变,并且Text1总是充满整个窗体,需要在Form1Resize过程中添加如下代码:

Private Sub Form_Resize()

Text1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight

End Sub

Move函数实现将Text1移动到某一个位置,并可以修改Text1的宽、高。

(4)当用户选择文件菜单中新建命令,将清空Text1中的内容,可由如下代码实现:

Private Sub mf_new_Click(Index As Integer)

Text1.Text = ""

End Sub

(5)当用户选择文件菜单中打开命令,将弹出一个打开对话框,可以选择需要打开的文本并显示在Text1中。由于文件是顺序文件,我们采用Input模式打开该文件,用Line Input语句来实现每一行的字符串的读入。具体实现及说明如下:

Private Sub mf_Open_Click(Index As Integer)

Dim strTmp As String

CommonDialog1.CancelError = True

On Error GoTo ErrHandler

CommonDialog1.Flags = cdlOFNHideReadOnly

'设置文件过滤字符串

CommonDialog1.Filter = "All Files (*.*)|*.*|Text Files(*.txt)|*.txt"

CommonDialog1.FilterIndex = 2

CommonDialog1.ShowOpen  '显示打开对话框

Open CommonDialog1.FileName For Input As #1     '打开选择的文件

Text1.Text = ""         '清空Text1

Do Until EOF(1)         '循环读取文档中每一行直到结束

    Line Input #1, strTmp

    Text1.Text = Text1.Text + strTmp + Chr(13) + Chr(10)    '在每一行后面加上换行符

Loop

Close #1                '关闭文件

Exit Sub

ErrHandler:             '出错处理

Exit Sub

End Sub

(6)当用户选择文件菜单中保存命令,将弹出一个保存对话框,可以设置保存的路径及文件名称并将Text1中的文本写入该文件中。由于文件是顺序文件,我们采用Output模式打开文件,使用Print语句来实现输出。具体实现及说明如下:

Private Sub mf_save_Click(Index As Integer)

CommonDialog1.CancelError = True

On Error GoTo ErrHandler

CommonDialog1.Flags = cdlOFNHideReadOnly

'设置文件过滤字符串

CommonDialog1.Filter = "All Files (*.*)|*.*|Text Files(*.txt)|*.txt"

CommonDialog1.FilterIndex = 2

CommonDialog1.ShowSave      '显示保存对话框

Open CommonDialog1.FileName For Output As #1     '打开选择的文件

Print #1, Text1.Text        'Text1中的文本写入打开的文件中

Close #1        '关闭文件

Exit Sub

ErrHandler:     '出错处理

Exit Sub

End Sub

2.实验2将实现一个简单的信息管理系统。通过该实验,将掌握随机文件的打开、关闭、读写等内容。具体步骤如下:

(1)

创建一个标准EXE应用程序,添加6个标签、5个文本框、1个水平滚动条、2个按钮控件,排列如图45

(2)定义学生信息记录及Form1的成员变量如下:

Private Type student

    name As String * 8      '姓名

    id As String * 12       '学号

    sex As String * 2       '性别

    special As String * 15  '专业

    address As String * 30  '住址

End Type

Private info As student     '学生记录变量

Private strPath As String   '记录文件路径

Private totalNum As Long    '记录总数

(3)定义过程GetRecord用来获取指定记录,并将该记录显示在窗体上,实现如下:

Private Sub GetRecord(num As Integer)

Open strPath For Random As #1 Len = Len(info)   '以随机方式打开文件

totalNum = LOF(1) / Len(info)                   '计算记录总数

If totalNum >= num Then                         '设置窗体信息

    Get #1, num, info

    txName.Text = info.name

    txId.Text = info.id

    txSex.Text = info.sex

    txSpecial.Text = info.special

    txAddress.Text = info.address

End If

Close #1                '关闭文件

End Sub

(4)当窗体Load的时候,打开记录文件,读取记录信息,并显示第一条记录,具体操作如下:

Private Sub Form_Load()

strPath = App.Path + "\info.data"   '设置记录文件路径

GetRecord (1)                       '获取第一个记录

If totalNum = 0 Then

    HScroll1.Max = 1

Else

    HScroll1.Max = totalNum

End If

HScroll1.Min = 1

txName.Enabled = False

txId.Enabled = False

txSex.Enabled = False

txSpecial.Enabled = False

txAddress.Enabled = False

lbShow.Caption = "总记录数:" + Str(totalNum) + "   当前记录号:" + Str(1)

btSave.Enabled = False

End Sub

(5)当用户单击“添加”按钮时,编辑框有效,实现如下:

Private Sub btAdd_Click()

txName.Enabled = True

txId.Enabled = True

txSex.Enabled = True

txSpecial.Enabled = True

txAddress.Enabled = True

txName.Text = ""

txId.Text = ""

txSex.Text = ""

txSpecial.Text = ""

txAddress.Text = ""

btAdd.Enabled = False

btSave.Enabled = True

End Sub

(6)当单击保存时,将用户输入的学生记录信息添加到文件的末尾,实现如下:

Private Sub btSave_Click()

    info.name = txName.Text

    info.id = txId.Text

    info.sex = txSex.Text

    info.special = txSpecial.Text

    info.address = txAddress.Text

    Open strPath For Random As #1 Len = Len(info)   '以随机方式打开文件

    Put #1, totalNum + 1, info                      '添加记录的文件末尾

    Close #1

    totalNum = totalNum + 1                         '记录总数加1

    HScroll1.Max = totalNum

    HScroll1.Value = totalNum                       '滚动条滚动到末尾

    txName.Enabled = False

    txId.Enabled = False

    txSex.Enabled = False

    txSpecial.Enabled = False

    txAddress.Enabled = False

    btAdd.Enabled = True

    btSave.Enabled = False

End Sub


作者:Admin  
  • VB程序设计学习网站(赣南师范学院) © 2008 版权所有 All Rights Reserved.
  • 地址:江西省赣州市经济技术开发区 赣南师范学院数学与计算机科学学院 邮政编码:341000
    Email:ZQ188@163.com 技术支持QQ:87319633 移ICP备10086号
  • GnsySjxy! V2.4