visual basic程序设计教程第四版答案(刘炳文)
编写一个建立图书数据文件的程序。程序运行后,可以从键盘上输入每种图书的有关数据,包括图书分类号、登记号、作者、单价、购进数、借出数、出版日期和出版社名称,把这些数据存人文件中。文件建立后,按登记号的顺序(由小到大)输出全部内容。
解:图书数据文件记录的结构见下表:
分类号 登记号 作者 单价 购进数 借出数 出版日期 出版社
… … … … … … … …
按以下步骤操作。
(1)执行“工程”菜单中的“添加模块”命令,建立一个新的标准模块,在该模块中定义如下的记录类型和全局变量:
Type Book_Info
class_num As Integer
reg_num As Integer
Author As String * 6
price As Single
buy_num As Integer
loan_num As Integer
pub_date As String
pub_com As String * 18
End Type
Option Base 1
Public Book_num() As Book_Info
Public n As Integer
(2)在窗体层编写输入数据的通用过程:
Sub B_Input(Num As Integer)
n = n + Num
ReDim Book_num(Num) As Book_Info
Open "d:\BookI.txt" For Append As #1
For i = 1 To Num
Book_num(i).class_num = InputBox("请输人图书分类号")
Book_num(i).reg_num = InputBox("请输人登记号")
Book_num(i).Author = InputBox("请输人作者名")
Book_num(i).price = InputBox("请输入单价")
Book_num(i).buy_num = InputBox("请输人购进数")
Book_num(i).loan_num = InputBox("请输人借出数")
Book_num(i).pub_date = InputBox("出版日期")
Book_num(i).pub_com = InputBox("请输人出版社名称")
Write #1, Book_num(i).class_num, Book_num(i).reg_num, _
Book_num(i).Author, Book_num(i).price, _
Book_num(i).buy_num, Book_num(i).loan_num, _
; Book_num(i).pub_date, Book_num(i).pub_com
Next i
Close #1
Open "d:\num.txt" For Output As #1
Print #1, n
Close #1
End Sub
该过程用来输入数据,并把输人的数据存人磁盘文件。它有1个参数,即需要输人的图书种类数。文件用Append方式打开,因此每次输人的数据都附加到原来数据的后面。这里应注意全局变量n的使用。调用该过程时,把Num的实参与n相加,再赋予n,从而可以把多次调用该过程所输人的图书种类数累加起来。在过程的最后,把n存人一个磁盘文件,这样,即使退出程序或关机,仍可以记下当前图书数文件中记录的个数。在这个过程中,输人的数据被存入记录数组。
(3)在窗体层编写输出数据的通用过程:
Sub B_output()
Open "d:\num.txt" For Input As #1
Input #1, n
Close #1
ReDim Book_num(n) As Book_Info
Open "d:\BookI.txt" For Input As #2
x = 1
Print "分类号 "; "登记号 "; "作者 "; "单价 "; "购进数 "; _
; "借出数 "; "出版日期 "; "出版社"
Print
Print "原来顺序:"
Do While Not EOF(2)
Input #2, Book_num(x).class_num, Book_num(x).reg_num, _
Book_num(x).Author, Book_num(x).price, _
Book_num(x).buy_num, Book_num(x).loan_num, _
Book_num(x).pub_date, Book_num(x).pub_com
Print Book_num(x).class_num; " "; Book_num(x).reg_num; " " _
; Book_num(x).Author; " "; Book_num(x).price; " "; _
Book_num(x).buy_num; " "; Book_num(x).loan_num; " " _
; Book_num(x).pub_date; " "; Book_num(x).pub_com
x = x + 1
Loop
Close #2
Print
SortB
End Sub
该过程用来输出图书数据文件中的记录,它首先打开前一个过程建立的文件,然后按建立顺序输出每个记录。由于题目要求按登记号由小到大的顺序输出记录,因此用一个过程对各记录进行排序,并输出排序后的结果。
排序过程如下:
Sub SortB()
For k = n To 2 Step -1
For l = 1 To k - 1
If Book_num(l).reg_num > Book_num(l + 1).reg_num Then
t = Book_num(l + 1).reg_num
Book_num(l + 1).reg_num = Book_num(l).reg_num
Book_num(l).reg_num = t
t = Book_num(l + 1).class_num
Book_num(l + 1).class_num = Book_num(l).class_num
Book_num(l).class_num = t
t = Book_num(l + 1).Author
Book_num(l + 1).Author = Book_num(l).Author
Book_num(l).Author = t
t = Book_num(l + 1).price
Book_num(l + 1).price = Book_num(l).price
Book_num(l).price = t
t = Book_num(l + 1).buy_num
Book_num(l + 1).buy_num = Book_num(l).buy_num
Book_num(l).buy_num = t
t = Book_num(l + 1).pub_date
Book_num(l + 1).pub_date = Book_num(l).pub_date
Book_num(l).pub_date = t
t = Book_num(l + 1).pub_com
Book_num(l + 1).pub_com = Book_num(l).pub_com
Book_num(l).pub_com = t
End If
Next l
Next k
Print "按登记号排序后顺序:"
For j = 1 To n
Print Book_num(j).class_num; " "; Book_num(j).reg_num; " "; _
Book_num(j).Author; " "; Book_num(j).price; " "; _
Book_num(j).buy_num; " "; Book_num(j).loan_num; " "; _
Book_num(j).pub_date; " "; Book_num(j).pub_com
Next j
End Sub
该过程用冒泡法对文件中的记录进行排序,然后输出。
(4)编写如下窗体单击事件过程:
Private Sub Form_Click()
Dim h As Integer
an = InputBox("是第一次运行程序吗?(Y/N)")
If UCase(an) <> "Y" Then
Open "d:\num.txt" For Input As #1
Input #1, n
Close #1
End If
IOrO = InputBox("输入或输出? (I/O)")
If UCase(IOrO) = "I" Then
h = InputBox("需要输入多少种图书")
h = Val(h)
B_Input h
Else
B_output
End If
End Sub
在该过程中,首先询问是不是第一次运行程序,如果不是,则打开存放图书种类数的文件,读人种类数,并把它赋予全局变量n。接着询问是输人还是输出。如果是输入,则调用输人过程,否则调用输出过程。
程序运行后,单击窗体,在输人对话框中输入“Y”(第一次运行程序),在接下来的输 人对话框中输人“I”(输入),然后即可根据提示输人数据。假定输人如下表1所列的数据。
分类号 登记号 作者 单价 购进数 借出数 出版日期 出版社
3001 2006 王大明 56 40 12 2000年5月 海天出版社
3008 2003 张得功 45 60 21 2000年3月 华联出版社
3009 2004 李得胜 26 80 35 1999年12月 环宇出版社
3005 2012 杨国春 48 60 14 2000年6月 CPW出版公司
3013 2015 陈雷 24 40 16 2000年2月 家电出版社
程序的运行情况如下图所示。
visual basic 程序设计教程第四版答案 刘炳文 编著
来源:visual basic程序设计教程第四版答案(刘炳文)
本文链接:http://www.wb98.com/vb1/post/vb_14.12.html
本站文章搜索: