vb实验H__数据文件
- 格式:doc
- 大小:131.50 KB
- 文档页数:14
实验八数据库操作一.实验目的1. 掌握创建数据库的方法2. 掌握数据控件的使用方法3. 掌握控件的数据绑定技术4. 掌握数据库记录集的操作方法二.实验内容1,创建数据库stud.mdb通过“Microsoft Access”和VB6中的“可视化数据库管理器”分别建立数据库stud.mdb,其中有一个数据表student,该数据表的结构如下:字段名类型长度学号String 7班级String 8姓名String 8性别String 2年龄Integer出生日期Date/Time婚否Boolean简历备注在数据表中输入三条记录如下:学号班级姓名性别年龄出生日期婚否简历2.,控件的数据绑定技术程序1:使用控件的数据绑定技术显示、修改、添加student数据表中的数据。
窗体界面如下。
程序代码见附录。
3,数据库记录集的操作方法程序2:利用数据库记录集的操作方法实现显示、修改、添加和删除记录的功能。
程序界面如下图所示。
程序代码见附录。
程序附录:Private Sub Command1_Click()If Data1.Recordset.RecordCount <> 0 ThenData1.Recordset.MoveFirstEnd IfListRecEnd SubPrivate Sub Command2_Click()If Not Data1.Recordset.BOF ThenData1.Recordset.MovePreviousEnd IfListRecEnd SubPrivate Sub Command3_Click()If Not Data1.Recordset.EOF ThenData1.Recordset.MoveNextEnd IfListRecEnd SubPrivate Sub Command4_Click()If Data1.Recordset.RecordCount <> 0 ThenData1.Recordset.MoveLastEnd IfListRecEnd SubPrivate Sub Command5_Click()Data1.Recordset.AddNewData1.Recordset.Fields(0) = Text1.TextData1.Recordset.Fields(1) = Text2.TextData1.Recordset.Fields(2) = Text3.TextData1.Recordset.Fields(3) = Text4.TextData1.Recordset.Fields(4) = CInt(Text5.Text)Data1.Recordset.Fields(5) = CDate(Text6.Text)Data1.Recordset.Fields(6) = CBool(Text7.Text)Data1.Recordset.Fields(7) = Text8.TextData1.Recordset.UpdateListRecEnd SubPrivate Sub Command6_Click()If Not Data1.Recordset.EOF And Not Data1.Recordset.BOF Then Data1.Recordset.DeleteEnd IfListRecEnd SubPrivate Sub Command7_Click()If Not Data1.Recordset.EOF And Not Data1.Recordset.BOF Then Data1.Recordset.EditData1.Recordset.Fields(0) = Text1.TextData1.Recordset.Fields(1) = Text2.TextData1.Recordset.Fields(2) = Text3.TextData1.Recordset.Fields(3) = Text4.TextData1.Recordset.Fields(4) = CInt(Text5.Text)Data1.Recordset.Fields(5) = CDate(Text6.Text)Data1.Recordset.Fields(6) = CBool(Text7.Text)Data1.Recordset.Fields(7) = Text8.TextData1.Recordset.UpdateEnd IfListRecEnd SubPrivate Sub Command8_Click()EndEnd SubPrivate Sub ListRec()If Not Data1.Recordset.EOF And Not Data1.Recordset.BOF Then Text1.Text = Data1.Recordset.Fields(0)Text2.Text = Data1.Recordset.Fields(1)Text3.Text = Data1.Recordset.Fields(2)Text4.Text = Data1.Recordset.Fields(3)Text5.Text = Data1.Recordset.Fields(4)Text6.Text = Data1.Recordset.Fields(5)Text7.Text = Data1.Recordset.Fields(6)Text8.Text = Data1.Recordset.Fields(7)End IfEnd SubPrivate Sub Form_Load()Data1.DatabaseName = "stud.mdb"Data1.RecordSource = "student"Data1.RefreshIf Data1.Recordset.RecordCount <> 0 ThenData1.Recordset.MoveLastData1.Recordset.MoveFirstEnd IfListRecEnd Sub三.实验总结。
数据文件
一、数据文件概述
二、文件访问
顺序文件
二进制文件
1
一、数据文件概述
变量或数组中的数据不能长期保存
文件或数据库中的数据可以长期保存
文件:存储在外存(如磁盘)上的
用文件名标识的数据集合
处理文件的方法:
① VB6.0原用的文件处理方式
② System.IO中的StreamReader和StreamWriter类本章采用①处理方法
8.2.1 顺序文件引例编写如图所示的程序。
根据现有的知识,
学生信息需存储在结构数组中
' 定义结构类型StudType
Structure StuType
Dim No As String ‘ 学号
Dim Name As String ‘ 姓名
Dim Mark As Integer ‘ 成绩
End Structure
' 定义记录数组Student
Dim Student(99) As StuType
致命缺陷:系统运行结束数据丢失
1. 按文件的内容分类:程序文件和数据文件
例:Winword.exe Test.DOC
2. 按存储信息的形式分类:ASCII文件和二进制文件文本文件:具有行结构
3. 按访问模式分类:
①顺序文件:按顺序进行访问,是ASCII文件
②随机文件:直接访问文件中的任意一条记录
③二进制文件:这是按访问模式分类的二进制文件
最原始的文件类型,是由一个个字节所组成,没有格式
文件缓冲区:文件打开后
系统在内存中开辟的数据存储区域文件号:文件缓冲区的编号
文件号代表文件
对文件的所有操作都是通过文件号进行。
数组实验二:对于一个给定的整数数组,将数组中的元素按值的(递增)不减排序。
程序运行后的结果如下:实验二的主要步骤:1、在G盘上创建一个VBTest0731的文件夹。
2、新建一个Visual 的Windows应用程序项目Array2。
打开Visual 2005开发环境,从菜单中选择“文件”|“新建项目”,弹出“新建项目对话框”,在对话框的“项目类型”中选择“Visual Basic|Windows”,在模板中选择“Windows应用程序”。
输入项目名称为Array2,如图1,点击“确定”进入项目开发环境。
图1新建项目3、保存项目到G:\VBTest0731目录下,项目名称为Array2.在项目开发环境中,选择菜单中选择“文件”|“全部保存”,弹出“保存对话框”,点击“游览”按钮,选择G:\VBTest0731文件夹,输入名称Array2,如图2。
图2保存项目3、界面设计从工具箱中拖两个文本框TextBox控件、两个标签控件Label与一个按钮Button控件到窗体上,设计界面如图3。
图3程序界面按表1设置各控件的属性。
控件属性属性值Form Name FrmSort Text 对数组进行排序Label Text 请输入数组的元素,以逗号隔开:Label Text 排序后的结果:TextBox Name txtInput TextTextBox Name txtRes TextButtonName btnSortText 排序Click事件btnSort_Clcik打开“设计器”窗口,用鼠标在程序界面中Button“排序”上双击,产生btnSort_Clcik 事件,并自动切换到“代码”窗口。
在btnSort_Click中编写如下代码:Private Sub btnSort_Click(ByVal sender As System.Object, _ByVal e As System.EventArgs) Handles btnSort.Click'定义一个变量s用来保存从TextBox输入的字符串Dim s As String'将TextBox输入的字符串保存到变量s中s = txtInput.Text'定义一个字符串数组strs 用来存放从界面TextBox中输入的数字Dim strs() As String'将字符串s中数据按逗号分隔开,并保存到字符串数组strs中strs = s.Split(",")'定义一个整数数组ints 来存放从界面输入的经过转换后的数字Dim ints(strs.Length - 1) As Integer'定义循环计数变量iDim i, j As Integer'将字符串数组转换成整数数组,Cint是一个函数,用来将字符串转换成数字For i = 0 To strs.Length - 1ints(i) = CInt(strs(i))Next'下面的代码用来对数组ints 中元素按从小到大进行排序Dim k As Integer'k用来记录程序运行过程中的那个最大元素的下标值Dim tmp As Integer'定义一个临时变量tmp来存放元素交换时的中间结果k = 0For i = 0 To ints.Length - 1 '第一层循环,依次处理数组中的每个元素For j = i To ints.Length - 1 '第二层循环,从数组i到无级最后的元素中选择一个最小的元素,放置到下标i处If ints(i) > ints(j) Then'if语句块表示判定当ints(i)中元素值大于其他元素时时,将两个元素的位置进行交换tmp = ints(i)ints(i) = ints(j)ints(j) = tmpEnd IfNextNext'程序计算完成,数组ints中的保存的是排序后的结果,通过程序界面上的txtRes控件显示结果 txtRes.Text = ""'首先清空内容'循环,对排序后的数组ints中的元素进行显示For i = 0 To ints.Length - 1txtRes.Text = txtRes.Text & ints(i)txtRes.Text = txtRes.Text & " "'排序后的元素用空格隔开NextEnd Sub5、运行程序,测试结果按F5运行程序,随机输入一组数据,点击“排序”按钮,测试结果的正确性。
VB上机实验——实验报告实验标题:班级:姓名:学号:时间:实验七文件的基本操作和文件的读写[实验目的]1.掌握DriveListBox、DirListBox和FileListBox等文件控件的使用方法2.掌握用传统方式进行文件复制、移动、删除及重命名等基本方法3.掌握顺序文件、随机文件和二进制文件的读写操作方法4.了解MSFlexGrid控件的使用方法[实验内容]一、使用DriveListBox、DirListBox和FileListBox等控件程序1:建立一个应用程序,该程序利用文件系统控件可以实现文件的复制、移动和删除,如下图所示。
程序代码见附录。
实验思考题1:如果要求一次操作多个文件或文件,应如何修改程序?答:将File属性框中Mulistlest改为2-Extended。
二、顺序文件、随机文件和二进制文件的读写程序2:编写程序,要求能将文本框中的内容写入顺序文件,或者能将顺序文件的内容读入到文本框中,如下图所示。
程序代码见附录。
实验思考题2:● 顺序文件的读写还有哪些方法?答:顺序文件的读写方法有:1. 打开顺序文件语句,格式如下:Open <文件名> For [Input | Output | Append] As <文件号> [Len = <记录长度>]2.关闭顺序文件语句,格式如下:Close [[#]<文件号>] [,[#]<文件号>]……3、将数据写入文件语句,格式如下:Print #文件号,[<表达式列表>]4.读文件数据语句,格式如下:Write #<文件号>,[<表达式列表>]程序3:编写程序,要求能将下图中若干个文本框中的内容写入随机文件中,或者能将随机文件的内容读入到相应的文本框中,如下图所示。
提示:● 在随机文件读写操作之前,应先定义一个自定义的记录类型。
定义方法见下例。
实验H 数据文件 一、实验目的 1.掌握顺序文件、随机文件及二进制文件的特点和使用。 2.掌握各类文件的打开、关闭和读/写操作。 3.学会在应用程序中使用文件。 二、实验内容 1.编写如图H.1所示的应用程序。若单击“建立文件”按钮,则分别用Print#和Write#语句将三个同学的学号、姓名和成绩写入文件Score.dat和Scorel.dat;若单击“读取文件”按钮,则用Line Input语句按行将两个文件中的数据送往相应的文本框。 要求:学号和姓名是字符串类型,成绩是整型。
Private Sub Command1_Click() Open "C:\Users\Administrator\Desktop\第八章\H1\score" For Output As #1 Print #1, "051023", "王海涛", 66 Print #1, "052498", "周文英", 88 Print #1, "050992", "陈建东", 77
Open "C:\Users\Administrator\Desktop\第八章\H1\score1" For Output As #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)
End Sub Private Sub Command2_Click() Dim no As String, name As String, s As Integer
Open "C:\Users\Administrator\Desktop\第八章\H1\score" For Input As #1 Do While Not EOF(1) Line Input #1, linedata List1.AddItem linedata Loop
Open "C:\Users\Administrator\Desktop\第八章\H1\score1" For Input As #2 Do While Not EOF(2) Input #2, no, name, s List2.AddItem no & name & s Loop
Close End Sub 2.将斐波那契数列的前1 0项写入文件Fb .dat,然后从该文件将数据读取出来并计算合计和平均数,最后送入列表框。 要求:文件数据格式如图H.2所示,列表框中项目格式如图H.3所示。
Private Sub Command1_Click() Dim fib%(0 To 9), i% Open "C:\Users\Administrator\Desktop\第八章\H2\Fb.dat" For Output As #1 For i = 0 To 9 If i = 0 Or i = 1 Then fib(i) = i Else fib(i) = fib(i - 1) + fib(i - 2) End If Print #1, """Fib(" & i & ")""," & fib(i) Next i Close #1
i = Shell("NOTEPAD.exe" + " C:\Users\Administrator\Desktop\第八章\H2\Fb.dat", vbNormalNoFocus)
Close #1 End Sub Private Sub Command2_Click() Dim st$, n%, sum% Open "C:\Users\Administrator\Desktop\第八章\H2\Fb.dat" For Input As #1 Do While Not EOF(1) Input #1, st, n sum = sum + n List1.AddItem st & "=" & n Loop Close #1
List1.AddItem "合计:" & sum List1.AddItem "平均:" & sum / 10
End Sub 3.设计一个如图H.4所示的应用程序。 要求: ① 单击“打开文件”按钮弹出一个通用对话框,选择文件后显示在文本框中。 ② 单击“保存文件”按钮后弹出通用对话框,确定文件名后保存。 ③ 单击“查找下一个”按钮后在文本文件中查找单词“VB”,找到后以高亮度显示。若再单击“查找下一个”按钮,则继续查找。 Private Sub Command1_Click() CommonDialog1.Action = 1 Text1.Text = "" Open CommonDialog1.FileName For Input As #1 Do While Not EOF(1) Line Input #1, inputdata Text1.Text = Text1.Text + inputdata + vbCrLf Loop Close #1
End Sub Private Sub Command2_Click() CommonDialog1.FileName = "Default.Txt" CommonDialog1.DefaultExt = "Txt" CommonDialog1.Action = 2 Open CommonDialog1.FileName For Output As #1 Print #1, Text1.Text Close #1
End Sub Private Sub Command3_Click() Static j% Text1.SetFocus j = InStr(j + 1, Text1, "VB")
If j > 0 Then Text1.SelStart = j - 1 Text1.SelLength = 2 j = j + 1 Else MsgBox "找不到" End If End Sub Private Sub Command4_Click() End
End Sub 4.编写一个随机文件程序。 要求: ① 建立一个具有5个学生的学号、姓名和成绩的随机文件( Random. dat)。 ② 读出Random.dat文件中的内容,然后按成绩排序,最后按顺序写入另一个随机文件( Randoml.dat)。 ③ 再一次读出文件的内容,按文件中的顺序将学生的信息显示在屏幕上,检查正确性。
Private Type Studtype no As String * 4 name As String * 6 mark As Single
End Type Dim Student As Studtype, Stud(1 To 5) As Studtype, t As Studtype
Private Sub Command1_Click() Open "C:\Users\Administrator\Desktop\第八章\H4\score.dat" For Random As #1 Len = Len(Student)
With Student .no = "0001" .name = "小王" .mark = 66 End With Put #1, 1, Student
With Student .no = "0002" .name = "俊杰" .mark = 99 End With Put #1, 2, Student
With Student .no = "0003" .name = "勇气" .mark = 88 End With Put #1, 3, Student
With Student .no = "0004" .name = "光明" .mark = 55 End With Put #1, 4, Student
With Student .no = "0005" .name = "加油" .mark = 77 End With Put #1, 5, Student
Close #1
End Sub Private Sub Command2_Click() Open "C:\Users\Administrator\Desktop\第八章\H4\score.dat" For Random As #1 Len = Len(Student) For i = 1 To 5 Get #1, i, Student Print Student.no, Student.name, Student.mark Stud(i) = Student Next i Close #1
For i = 1 To 5 For j = i + 1 To 5 If Stud(i).mark > Stud(j).mark Then t = Stud(i): Stud(i) = Stud(j): Stud(j) = t Next