vb05( 建立以文本文件为数据源的应用程序)_第1页
vb05( 建立以文本文件为数据源的应用程序)_第2页
vb05( 建立以文本文件为数据源的应用程序)_第3页
vb05( 建立以文本文件为数据源的应用程序)_第4页
vb05( 建立以文本文件为数据源的应用程序)_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目单元5建立以文本文件为数据源的“员工工资管理系统”师生共勉笑声给生活带来甜美,使它像玫瑰园中的花儿一样芬芳。

目录5.1问题引入5.2预备知识5.3问题分析5.4实现员工工资数据的读取功能5.5实现员工工资数据的显示功能5.6实现员工工资数据的保存功能5.7实现员工工资数据的编辑功能5.8文件操作应用举例5.10本单元容易出错的地方5.11课堂实训和课堂练习师生共勉笑声给生活带来甜美,使它像玫瑰园中的花儿一样芬芳。

5.1问题引入在之前编写的“员工工资管理系统”中,工资的信息存放在有格式的数据库文件中。但是计算机不仅仅可以处理存放在数据库的文件,还可以对不同的数据,如文本文件等的数据进行加工、处理,并且产生相应的结果进行输出。例如:采集一组需要控制的数据进行处理等等。本单元就对如何处理文本文件的数据提出解决的办法。5.2预备知识写数据:把内存中的数据传输到相关联的外部设备(例如磁盘等)并作为文件存放的操作;读数据:把数据文件中的数据传输到内存程序中的操作;文件:记录在外部介质上的数据的集合顺序型:适用于读写在连续块中的文本文件;随机型:适用于读写有固定长度记录结构的文本文件或者二进制文件;二进制型:适用于读写任意有结构的文件;文件访问类型5.2预备知识引用Scripting类型库声明相关的对象变量创建相关的对象变量进行读、写操作关闭文件(TextStream对象的Close方法)

FileSystemObject(FSO)对象模型编程5.2预备知识打开或建立文件(Open语句)进行读、写操作(LineInput#、Write#语句等)关闭文件(Close语句)传统文件I/O处理5.3问题分析利用文本文件进行员工工资数据管理的应用程序在程序运行时,将存放于文本文件中的员工工资数据读出,实现浏览显示功能;对这些数据进行修改、删除、添加、插入等编辑操作;将更新后的员工工资数据再写入文件;任务分析:5.3问题分析控件数组cmd_Browse控件数组cmd_Edit控件cmd_Write界面运行效果如下:5.3问题分析数据输入:Form_Load数据处理:cmd_Browse_Clickcmd_Edit_Click数据输出:界面输出:Form_Load、cmd_Browse_Click、cmd_Edit_Click文件输出:cmd_Write_Click声明工程级的通用过程执行对文件中数据的读写操作,可以与窗体界面分离;有助于程序的扩展,可以直接调用这些过程;启动对象SubMain创建程序主窗体和事件过程代码框架:5.3问题分析PrivateSubForm_Load()'从文件中读取数据

'显示第1个员工的工资数据

'显示员工的总人数和当前员工的顺序号EndSubPrivateSubcmd_Browse_Click(IndexAsInteger)SelectCaseIndex Case0'第一位员工

Case1'前一位员工

Case2'后一位员工

Case3'最后一位员工

EndSelect

'显示第n位员工的工资数据

'显示员工的总人数和当前员工的顺序号EndSub框架代码:5.3问题分析PrivateSubcmd_Edit_Click(IndexAsInteger)SelectCaseIndex Case0'在所有记录的最后新增一条

Case1'修改当前记录

Case2'在当前记录的位置插入一条记录

Case3'删除当前记录

EndSelect

'显示第n位员工的工资数据

'显示员工的总人数和当前员工的顺序号EndSubPrivateSubcmd_Write_Click()'向文件中写入数据EndSub框架代码:5.4实现员工工资数据的读取功能实现把数据从外存(文本文件)读到内存(变量)中的功能在标准模块中声明:与员工工资数据有关的工程级变量和符号常量;在标准模块中创建:从文本文件中读出数据的通用过程方法一:采用FSO对象模型方法二:采用传统文件I/O语句和函数编写从文本文件中读出数据的通用过程5.4实现员工工资数据的读取功能步骤一:引用Scripting类型库单击“工程”菜单中的“引用”命令;打开“引用”对话框;从“可用的引用”列表框中选择“MicrosoftScriptingRuntime”;步骤二:声明相关的对象变量

DimfsoAsNewFileSystemObject DimtsAsTextStream

New是一个关键字,它用于创建新对象。方法一:采用FSO对象模型5.4实现员工工资数据的读取功能步骤三:创建相关的对象

Setts=fso.OpenTextFile(g_strFileName,ForReading)

用Set语句创建对象的实例,把对象赋予其变量。 其中,第二个参数可为下列三个常数之一ForReading:以只读模式打开文件。不能对此文件进行写操作。ForWriting:以只写方式打开文件。不能对此文件进行读操作。ForAppending:打开文件并在文件末尾进行写操作。5.4实现员工工资数据的读取功能步骤四:进行读操作

TextStream对象的ReadLine方法步骤五:关闭文件文件操作完毕,就要将文件关闭,这样下一次才能正确的创建文本流对象。TextStream对象的Close方法5.4实现员工工资数据的读取功能数组的应用结合后面的第6单元内容定义二维数组: Dim

g_vntArrWage(5,50)

使用二维数组: 存放第1个人的第1个信息

g_vntArrWage(1,1)=“Helen”

5.4实现员工工资数据的读取功能循环的应用(结合后面的第6单元内容)For循环变量=初值To终值[Step步长]<循环体>Next[循环变量]用DoWhile循环举例:i=1DoWhilei<=5Printii=i+1Loop控制循环的变量赋初值DoWhile循环条件

<循环体>

控制循环的变量赋值Loop用For循环举例:Fori=1to5 PrintiNextI5.4实现员工工资数据的读取功能五个步骤中后三步都是在ReadFromFile_fso通用过程中实现'文件读取:方法一PublicSubReadFromFile_fso()

'过程级变量i,j:i表示第几位员工,j表示第几项信息

DimiAsInteger,jAsInteger

'FSO:步骤三——文本流的创建(读方式)

Setts=fso.OpenTextFile(g_strFileName,ForReading)i=0 'Do循环:变量i赋初值

DoWhileNotts.AtEndOfStream'Do循环:执行一次,读取一位员工数据

i=i+1 'Do循环:变量i每次累加1Forj=1TogInfoNum 'For循环:执行一次,读取工资数据中的一项

'FSO:步骤四——文本流的读操作

g_vntArrWage(i,j)=ts.ReadLineNextLoop'FSO:步骤五——文本流的关闭

ts.Closeg_intRecNum=iEndSub5.4实现员工工资数据的读取功能步骤一:打开文件Open语句:对文件做任何I/O(输入/输出)操作之前都必须先打开文件;在内存中为文件的读写分配一个缓冲区,并决定使用什么样的访问方式;具体的Open语句如下所示:Openg_strFileNameForInputAs#1

其中,打开方式:Input:从顺序型文件中输入(读)字符;Output:把字符输出(写)到顺序型文件,覆盖写;Append:把字符输出(写)到顺序型文件的尾部,追加写;方法二:采用传统文件I/O语句和函数进行读文件

5.4实现员工工资数据的读取功能步骤二:进行读操作LineInput#语句:从已打开的顺序文件中读出一行中的所有字符(不包括回车换行符),并将它分配给字符串型变量;

LineInput#文件号,变量名 其中,文件号应该与之前Open语句中的文件号相对应;步骤三:关闭文件打开一个文件(Input、Output或Append方式)之后,一旦要为其它类型的操作重新打开它,就必须先用Close语句关闭它;

Close[#]文件号5.5实现员工工资数据的显示功能'显示第n位员工的工资数据,并显示员工的总人数和当前员工的顺序号PrivateSubDispWageInfo()DimjAsInteger

Forj=1TogInfoNum

txt_WageInfo(j-1)=g_vntArrWage(g_intNum,j)Nextlbl_CountAll="共"&Str(g_intRecNum)&"位员工"lbl_CountNum="第"&Str(g_intNum)&"位员工"EndSub编写显示员工工资数据以及相关数据的通用过程

程序一开始运行,就要求把员工的工资数据显示在相应的文本框中,并在界面下方的标签中显示出员工的总人数和当前员工的顺序号;这些数据的显示操作在之后还会被频繁用到;5.5实现员工工资数据的显示功能PrivateSubForm_Load()DimiAsIntegerCallReadFromFile_fso''文件读取:方法一

g_intNum=1CallDispWageInfo'显示第1位员工工资数据、员工的总人数和当前员工的顺序号

Fori=1TogInfoNum

txt_WageInfo(i-1).Enabled=FalseNextcmd_Write.Visible=FalseEndSub编写Form_Load事件过程

5.5实现员工工资数据的显示功能PrivateSubcmd_Browse_Click(IndexAsInteger)SelectCaseIndexCase0'第一位员工

g_intNum=1Case1'前一位员工

Ifg_intNum<=1ThenMsgBox"已是第一位员工!"Elseg_intNum=g_intNum-1EndIfCase2'后一位员工

Ifg_intNum>=g_intRecNumThenMsgBox"已是最后一位员工!"Elseg_intNum=g_intNum+1EndIfCase3'最后一位员工

g_intNum=g_intRecNumEndSelectCallDispWageInfo‘显示第n位员工工资数据、员工的总人数和当前员工的顺序号EndSub

编写浏览员工工资数据的cmd_Browse_Click事件过程

5.6实现员工工资数据的保存功能文件中的员工工资数据能在窗体上显示、浏览,同时,程序还具有编辑功能:增加新员工的工资数据;对某位现有员工的工资数据进行修改或直接删除;编辑的结果只有写到文件中才能真正地保存下来,所以这些功能最终都可以归结为文件的写入操作;覆盖写入追加写入

分析:5.6实现员工工资数据的保存功能将新增员工的工资数据插入到文件中间的某个位置;对现有员工工资数据进行修改、删除;说明:顺序型文件操作模式,只能从上到下逐条顺序进行;要在存储工资数据的二维数组中完成了相应的操作后,才能执行文件的覆盖写入操作;用重新把整个数组写入文件的方式来实现;编写向文本文件覆盖写入数据的通用过程

5.6实现员工工资数据的保存功能PublicSubWriteToFile_fso()DimiAsInteger,jAsInteger

'FSO:步骤三——文本流的创建(覆盖写方式)

Setts=fso.OpenTextFile(g_strFileName,ForWriting)Fori=1Tog_intRecNum'外层循环:执行一次,写入一位员工的工资数据

Forj=1TogInfoNum'内层循环:执行一次,写入工资数据中的一项信息

ts.WriteLineg_vntArrWage(i,j)'FSO:步骤四——文本流的写操作

NextNextts.Close'FSO:步骤五——文本流的关闭EndSub'文件覆盖写入:方法一覆盖写入说明:FSO对象模型的处理过程包括五个步骤,其中,第一步“引用”必须要在编写具体代码之前完成的;第二步“声明”是将相关对象的声明放在标准模块中的通用声明部分;5.6实现员工工资数据的保存功能PublicSubWriteToFile_IO()DimiAsInteger,jAsInteger

'传统文件I/O:步骤一——文件打开(覆盖写方式)

Openg_strFileNameForOutputAs#1Fori=1Tog_intRecNum'外层循环:执行一次,写入一位员工的工资数据

Forj=1TogInfoNum'内层循环:执行一次,写入工资数据中的一项信息

Print#1,g_vntArrWage(i,j)'传统文件I/O:步骤二——文件写操作

NextNextClose#1'传统文件I/O:步骤三——文件关闭EndSub'文件覆盖写入:方法二覆盖写入5.6实现员工工资数据的保存功能新增员工的工资数据放在文件的最后;

文件中原有的数据会全部予以保留的情况;说明:在存储工资数据的二维数组中完成了相应的操作后,只把最后一位员工的工资数据记录追加写入文件;本次写入的数据就会添加到文件的末尾;编写在文本文件末尾追加写入数据的通用过程

5.6实现员工工资数据的保存功能PublicSubAppendToFile_fso()DimiAsInteger,jAsInteger

'FSO:步骤三——文本流的创建(追加写方式)

Setts=fso.OpenTextFile(g_strFileName,ForAppending)Forj=1TogInfoNum'For循环:执行一次,写入工资数据中一项信息

ts.WriteLineg_vntArrWage(g_intRecNum,j)'FSO:步骤四——文本流的写操作

Nextts.Close'FSO:步骤五——文本流的关闭EndSub'文件追加写入:方法一追加写入5.6实现员工工资数据的保存功能PublicSubAppendToFile_IO()DimjAsInteger

'传统文件I/O:步骤一——文件打开(追加写方式)

Openg_strFileNameForAppendAs#1Forj=1TogInfoNum'For循环:执行一次,写入工资数据中的一项信息

'传统文件I/O:步骤二——文件的写操作

Print#1,g_vntArrWage(g_intRecNum,j)NextClose#1'传统文件I/O:步骤三——文件关闭EndSub‘文件追加写入:方法二追加写入5.7实现员工工资数据的编辑功能声明两个模块级变量m_blnDele、m_blnWrite数据类型都是布尔(逻辑)型区别编辑操作类型:新增、插入、修改、删除m_blnDele:表示编辑数据的方式m_blnWrite:表示数据写入的方式

m_blnWrite=True '初始化为覆盖写入方式

m_blnDele=False '初始化为非删除操作

fra_Browse.Visible=False '浏览/编辑框架不可见

fra_Edit.Visible=Falsecmd_Write.Visible=True '保存数据按钮可用编写编辑按钮的cmd_Edit_Click事件过程

5.7实现员工工资数据的编辑功能新增一条工资记录的代码段修改一条工资记录的代码段

修改一条工资记录的代码段删除一条工资记录的代码段数组操作5.7实现员工工资数据的编辑功能PrivateSubcmd_Write_Click()DimiAsIntegerIfm_blnDele=FalseThenFori=1TogInfoNum '将文本框中的内容(当前员工工资数据)存入数组

g_vntArrWage(g_intNum,i)=txt_WageInfo(i-1)NextEndIfIfm_blnWrite=TrueThen'向文件中写入数据

CallWriteToFile_fso'文件覆盖写入:方法一

ElseCallAppendToFile_fso'文件追加写入:方法一

EndIffra_Browse.Visible=Tr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论