admin 管理员组

文章数量: 1086019


2024年3月28日发(作者:ruby语言可以做什么)

实习内容:

例题7-1

以下程序段用来在C盘根目录下建立一个名为的顺序文件。

例题7-2

某班30名同学学习成绩如表7-2所示。建立一个名为“”的顺序文件存

放该班同学的学习成绩,每条记录包括学号、姓名、高数、英语、物理、计算机刘向数据。

例题7-3

对例题7-2中生成的“”文件记录进行如下处理:

(1) 计算每个学生的平均成绩。

(2) 将平均成绩大于或等于80分的记录写入“”文件中。

例题7-4

统计例题7-3中生成的“”文件中的记录数。

例题7-5

将例题7-2生成的顺序文件“”读出,按随机方式写入随机文件

“”中。

例题7-6

从随机文件“”中读出数据,计算平均成绩,并将大于或等于80分的学

生成绩写入另一个随机文件“”中。

例题7-7

以二进制模式建立一个数据文件,其中的内容是随机产生的100个大写字母。

例题7-8

以二进制方式读取文件text。Txt,并将结果显示在文本框中。

例题7-9

编写一个复制文件的程序。

例题7-10

编写一个加密软件,要求将源文件按“字节逐位倒排序加密法”,加密。

习题7-3

把随机产生的200个4位整数存入顺序文件中。

事件代码为:

Private Sub Command1_Click()

Dim a(1 To 200) As Integer, i%, n%, m%

For i = 1 To 200

a(i) = Int(Rnd * 9000 + 1000)

Next i

Open "H:VB实习周晓伟实验七" For Output As #1

For m = 1 To 200

Write #1, a(m);

If m Mod 20 = 0 Then

Print #1,

End If

Next m

Close

End Sub

运行结果为:

习题7-4

从第三题的文件中读出数据存入数组a中,从中挑选出所有各位和百位是偶

数的数据存入数组b中,并存储到随机文件中。

运行结果为:

事件代码为:

Option Base 1

Private Sub Command1_Click()

Open "F:VB实习周晓伟实验七" For Input As #1

Open "F:VB实习周晓伟实验七" For Random As #2

Dim a%(1 To 200), b%()

Dim i%, j%, data%, hun%

j = 0

For i = 1 To 200

Input #1, a(i)

data = a(i) Mod 10

hun = (a(i) 100) Mod 10

If data Mod 2 = 0 And hun Mod 2 = 0 Then

j = j + 1

ReDim Preserve b(1 To j)

b(j) = a(i)

Put #2, , b(j)

End If

Next i

Close

End Sub

习题7-5

准备一篇英文文章(至少三段),编程读出其中内容,将所有字符进行替代,

替代关系参照课本。其中,p是某个字符的ascii值,f(p)是计算后新字符的ascii的值。

如果计算后f(p)的值小于等于32或大于130,则该字符不变,否则用f(p)所对应的

字符替换原有字符后写入文件中。

事件代码为:

Private Sub Form_Click()

Dim a As String * 1, fp!, p!

Open "H:VB实习周晓伟实验七" For Input As #1

Open "H:VB实习周晓伟实验七" For Output As #2

Do While Not EOF(1)

a = Input(1, #1)

p = Asc(a)

fp = (p * 11) Mod 256

If fp > 130 Or fp <= 32 Then

Print #2, a;

Else

Print #2, Chr(fp);

End If

Loop

Close

End Sub

运行结果为:

习题7-6

有一个20名学生的成绩单,其中包括每个学生姓名和5门课程成绩。姓名依次记做

A~T,成绩均随机产生(在50~100分之间),请计算出平均成绩由高到低排序后分别写

入顺序文件和随机文件中。

事件代码为:

Private Type student

xm As String * 1

gs As Integer

yy As Integer

wl As Integer

jsj As Integer

dh As Integer

aver As Integer

End Type

Private Sub Command1_Click()

Dim a(1 To 20) As student

Dim i%, aver!, n%, max%, k%, j%, t As student

Open "F:VB实习周晓伟实验七" For Output As #1

Open "F:VB实习周晓伟实验七" For Random As #2 Len = 200

For i = 1 To 20

a(i).xm = Chr(i + 64)

a(i).gs = Int(Rnd * 51 + 50)

a(i).yy = Int(Rnd * 51 + 50)

a(i).wl = Int(Rnd * 51 + 50)

a(i).jsj = Int(Rnd * 51 + 50)

a(i).dh = Int(Rnd * 51 + 50)

a(i).aver = (a(i).gs + a(i).jsj + a(i).wl + a(i).yy + a(i).dh) / 5

Next i

For j = 1 To 19

k = j

For l = j + 1 To 20

If a(k).aver < a(l).aver Then k = l

Next l

t = a(j): a(j) = a(k): a(k) = t

Next j

For ii = 1 To 20

Write #1, a(ii).xm, a(ii).gs, a(ii).jsj, a(ii).wl, a(ii).yy, a(ii).dh, a(ii).aver

Put #2, , a(ii)

Next ii

Close

End Sub

运行结果为:

第八章

例题8-1

制作一个如图8-1a所示的“谚语展示牌”,每半分钟显示一条谚语,并循环显示。

例题8-2

制作一个倒计时牌,显示到国庆还有多少天及当前日期和时间。

例题8-3

设计一个简单的数学游戏。

例题8-4

设计一个简单文本编辑器。

例题8-5

设计一个程序对列表框中的项目进行添加和删除。

例题8-6

设计一个简单的商品销售程序。

例题8-7

在窗体上添加一个水平滚动条,设置Max属性为100,Min属性为0,Smallchange

属性为1,LargeChange属性为10.另外在添加一个文本框,用来显示滑块当前位置所代

表的值。

例题8-8

设计一个图片缩放程序,使用一个水平滚动条和一个垂直滚动条分别控制图片的宽和

高的缩放比例。

第九章例题

设计一个如图9-4a所示的文本编辑器,其菜单设计如图9-4b。当文本框中没有内容

被选中时,剪贴、复制、删除菜单项为不可用,当有内容被选中时,则变为可用状态。添

加一个“字号”的顶级菜单,用于设置文本框中字体的大小,该菜单栏包括“五号”、“四

号”子菜单项,当用户选择“四号”时,在该菜单中添加“三号”子菜单项,当选择“五

号”时,在该菜单项中删除“三号”子菜单项。将“编辑”菜单作为文本框的快捷菜单(当

用户在文本框中单击右键时显示菜单)。

实验总结:

1. 例题部分基本没有问题,不过习题部分出现了一些问题,通过看课本和请问老师解

决了部分问题。

2. 数据文件看似简单但是操作起来很困难,主要原因是:不知道运行后的结果是否正

确。常常出现乱码一样的结果,但是也有不是乱码的时候,因此就不知道乱码的是不是正

确的了,然后就是一遍遍的检查修改。我发现如果是顺序文件输入的情况那么在txt文件

中显示出来的是数字,这种情况我可以判断代码是不是正确的,不过当以随机顺序输入的

时候常常出现乱码似的现象(就像下面的题,不知道是否正确),不过有时候那些乱码间相

隔很大距离(下面有截图),我不知道是什么原因。

3. 在做习题过程中当运用到先前学到的知识的时候,常常是只知道思路,但是不知道

代码该怎么写或者运用的公式是什么例如:习题6中的将成绩由高到低排序的代码就记错

了,习题3中产生随机数记得有点模糊。

4.做到第八章,已经到了VB的最后章节,更加上已经结课,因此很多人开始浮躁,我

也是其中之一,即使从课本上抄源代码,也是错误百出,这也是对一个人的缩影,若是到

了最后就越不能着急,越是着急问题就越多,其实只要学会思考,从哪都能学到人生哲理。

5.下面是第七章习题和例题中出现的自己不能解决的问题。

例题7-10

编写一个加密软件,要求将源文件按“字节逐位倒排序加密法”,加密。

不知道哪里出现问题了,下面是代码:

Function ByteToBin(m As Byte) As String

Dim c$

c$ = ""

Do While m <> 0

r = m Mod 2

m = m 2

c$ = r & c$

Loop

c$ = Right("00000000" & c$, 8)

ByteToBin = c$

End Function

Function Reverve(m As String) As String

Dim i%, x$

x = ""

For i = 1 To 8

x = Mid(m, i, 1) & x

Next i

reserve = x

End Function

Function BinToByte(m As String) As Byte

Dim x As String * 1, y%, z%

z = 0

For i = 1 To 8

x = Mid(m, i, 1)

y = x * 2 ^ (8 - i)

z = z + y

Next i

BinToByte = z

End Function

Private Sub Command1_Click()

Dim x As Byte, i%, fname$

fname = InputBox("请输入要加密的文件名!注意加上路径名:")

If Dir(fname) = "" Then

MsgBox "文件不存在!"

Exit Sub

End If

Open fname For Binary As #1

For i = 1 To LOF(1)

Get #1, i, x

x = BinToByte(Reverve(ByteToBin(x)))

Put #1, i, x

Next i

Close

MsgBox "任务完成!"

End Sub

习题4

以顺序文件和随机文件输入显示结果不一样,下面是显示的区别,不知道代码对不对,

是不是以随机文件输入进去后在记事本中看到的不再是随机产生的数字,而是乱码似的字

母?

顺序文件输入结果为:

这时候的事件代码为:

Option Base 1

Private Sub Command1_Click()

Open "F:VB实习周晓伟实验七" For Input As #1

Open "F:VB实习周晓伟实验七" For Output As #2

Dim a%(1 To 200), b%()

Dim i%, j%, data%, hun%

j = 0

For i = 1 To 200

If EOF(1) Then Exit For

Input #1, a(i)

data = a(i) Mod 10

hun = (a(i) 100) Mod 10

If data Mod 2 = 0 And hun Mod 2 = 0 Then

j = j + 1

ReDim Preserve b(1 To j)

b(j) = a(i)

Write #2, b(j);

End If

Next i

Close

End Sub

随机文件输入结果为:

代码为:

Private Sub Form_Click()

Dim a As String * 1, fp!, p!

Open "F:VB实习周晓伟实验七" For Input As #1

Open "F:VB实习周晓伟实验七" For Output As #2

Do While Not EOF(1)

a = Input(1, #1)

p = Asc(a)

fp = (p * 11) Mod 256

If p <= 32 Or p > 130 Then

Print #2, a;

Else

Print #2, Chr(fp);

End If

Loop

Close

End Sub


本文标签: 文件 显示 文本框 顺序