《毕业设计(论文)图书信息管理系统1.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)图书信息管理系统1.doc(32页珍藏版)》请在三一办公上搜索。
1、设计项目:图书信息管理系统专 业:计算机网络技术班 级:07计网班学 号:姓 名:指导老师:设计时间:2010-3-292010-5-7目 录 摘要1第一章 概述11.1开发背景11.2图书管理系统产生的背景11.3 系统功能要求的分析1第二章 开发环境及实现技术介绍22.1运行环境22.2 开发软件介绍2第三章 图书管理系统的设计与实现73.1 系统的设计73.1.1系统的概要设计73.1.2 系统的数据设计73.2 系统的设计与实现123.2.1 欢迎登陆界面的设计与实现123.2.2 主窗体设计与实现133.2.3 用户管理模块的设计与实现153.2.4图书借阅管理模块的设计与实现183
2、.2.5图书归还模块的设计与实现203.2.6图书归还模块的设计与实现223.2.7图书归还模块的设计与实现233.2.8图书类别管理的设计与实现253.2.9增加读者模块的设计与实现263.2.10增加读者模块的设计与实现28总结与提高28参考文献29附录30摘要在图书管理系统用计算机管理图书是一种计算机应用技术的创新,在计算机还未普及之前图书管理都是由图书管理人员手工记账的方式来操作的,现在一般的图书馆都是采用计算机作为工具的实用的计算机图书管理程序来帮助图书馆管理员进行更有效的图书管理。图书管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发
3、两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。关键字:图书,面向对象,软件工程第一章 概述1.1开发背景图书管理系统使用计算机管理图书是计算机应用技术的一种创新,在计算机还未普及之前图书管理都是采用图书管理人员手工记账的方式来操作的.现在一般的图书馆都是采用计算机作为工具的实用的计算机图书管理程序来帮助图书馆管理员进行更有效的图书管理,不仅工作量减少了,效率也大大提高了。1.2图书管理系统产生的背景图书管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立
4、起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。 经过研究分析,我使用SQL 2000作为后台数据库,使用 MICROSOFT公司的 VISUAL BASIC作为前台开发工具,利用其提供的各种面向对象的开发工具,尤其是数据窗口这一能方便而简洁操纵数据库的智能化对象,首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系统。 1.3 系统功能要求的分析经调查分析,系统功能要求大致有如下模块要求:系统管理:数据备份还原、数据导入导出、用户管理、用户切换、当前用户 密码的修改图书管理:图书浏览管理(增加、修
5、改、删除)、图书类别管理、图书信息管理读者管理:读者类型管理、读者信息管理(增加、修改、删除) 借阅管理:图书借阅、图书归还、超期罚款查询管理:图书信息查询、读者信息查询、借阅信息查询报表管理:读者信息报表、借阅信息报表、图书信息报表、罚款信息报表帮助管理:关于系统基本操作:图书借阅、借阅查询、图书归还、罚款管理资料管理:图书浏览管理、图书类别管理、出版社管理、读者信息管理、读者类型管 理第二章 开发环境及实现技术介绍2.1运行环境 由于本系统是针对图书管理而开发的,对运行环境的要求不是太高,容易操作并且维护简单。其设计基本上可以满足图书馆内图书管理的需要2.2 开发软件介绍本系统所采用的编程
6、语言为visual basic 6.0与 微软的 SQL 2000作为后台数据库,现分别对其简单介绍:Visual Basic 6.0是Micrsoft公司出品的开发工具,Visual Basic是一种可视化的,面向对象的Windows开发语言,它具有易用,通用和开发效率高的特点。随着微软对它不断地改进以及计算机本身性能的提高,使得Visual Basic越来越适合一般的应用程序开发。正如Bill Gate所说,世界上绝大多数的Windows应用程序是用Visual Basic编写的。在众多的开发工具中,我为什么要选择Visual Basic6.0呢?因为VB具有众多其它开发工具所没有的优点!
7、具体介绍如下:u 开发的高效u 语言的高效u 编译的高效u 执行的高效u 维护的高效基于以上理由,我选择了VB6.0作为我的前台开发工具!主要的控件及其基本属性,事件简介 常用命令按钮类的控件:1) Caption属性:用来显示在控件上的标题。2) Enable属性:控制控件的激活状态灰色或可用。3) Appearance属性:值为1时,则以3D效果显示该控件,0则不然。4) Backcolor属性:用来改变在按钮上显示图像的背景色。5) Font属性:控制各种文字字体类型.6) Left,top,height,width属性:设定控件的位置与大小.7) Visible属性:确定控件运行时是否
8、为可见.8) Index属性:当控件为一控件数组时,此属性值为该控件在数组的下标值.9) Picture属性:设置返回commandButton控件中要显示的图片。 命令按钮类的事件:10) 单击事件Click事件(1) 触发与适用此事件是在一个命令按钮对象上按下然后释放一个鼠标按钮时发生。命令按钮的Click事件仅对当单击鼠标时发生。(2) 事件处理过程按钮单击事件的处理过程为: Private Sub object-Click(Index As Integer)其中Object为引发该事件的对象名称。如果是命令按钮的控件是数组,则需要使用Index参数标识该控件。11) 获得焦点GotFo
9、cus事件(3) 触发与适用 当命令按钮获得焦点产生该事件,获得焦点可以通过诸如Tab切换或单击对象之类的用户动作,或在代码中用SetFocus方法改变焦点来实现。(4) 事件处理过程命令按钮GotFoucs事件处理过程为:Private Sub Object-GotFocus(Index As Integer)12) LostFocus事件:当一个对象失去焦点时发生13) KeyDown事件:当命令按钮具有焦点时按下一个键时发生14) KeyUp事件:当命令按钮具有焦点时释放一个键时发生。15) KeyPress事件:当用户按下或松开一个ANSI键时发生。16) MouseDown事件:当在
10、命令按钮上按下鼠标按钮时发生。17) MouseMove事件:当命令按钮上移动鼠标时发生。18) MouseUp事件:当在命令按钮上释放鼠标按钮时发生。 标签框类的控件类的控件:19) Caption属性:在应用程序界面上加入说明。20) Backstyle属性:用以指示标签是否透明.21) Bordstyle属性:用以设定控件是否有边框。 文本框类的控件:22) Text属性:通过像text属性赋值的方法来改变该属性的值。23) Maxlength属性:该属性设定在文本框控件中能够输入的最大字符数。24) Passwordchar属性:该属性设定输入文本的特殊显示字符,在设计密码程序时非常有
11、用。25) Keypress:事件由用户在文本框控件中按任意键触发。26) BackColor属性:设置返回背景色27) BorderStyle属性:设置对象的边框样式28) DataFormat属性:设定DataFormat对象,用于数据绑定29) DataSource属性:设定控件绑定的一个数据源30) DragIcon属性:设定图标,它将在拖放操作中作为指针显示31) Enabled属性:设置/返回运行时TextBox是否相应用户事件32) Font属性:设置/返回字体属性33) ForeColor属性:设置/返回文本的前景色34) Height属性:设置/返回TextBox的高度35)
12、 Index属性:设置/返回唯一的标识控件数组中该控件的编号36) Left属性:设置/返回TextBox控件的水平位置37) Locked属性:设置/返回TextBox中文本是否可编辑38) Top属性:设置/返回TextBox控件的垂直位置 文本框类的事件:39) Change事件:当改变文本框内容时发生40) Click事件:鼠标单击控件时发生41) DblClick事件:用鼠标左键双击控件时发生42) DragDrop事件:在一个完整的拖放动作完成或使用Drag方法,并将其Action参数设置为2时发生43) DragOver事件:在拖放操作正在进行时发生44) GotFocus事件:
13、当一个命令按钮获得焦点时发生45) KeyDown事件:当命令按钮具有焦点时按下一个键时发生 单选按钮类的控件:46) Caption属性:显示在控件上的文本,是单选按钮的标题。47) Enable属性:该控件为灰色时为false,表示运行时不可用。48) Index属性:属性值表示为单选按钮组成的控件中某个按钮的索引值。49) Tabindex属性:建立控件时,vb自动为其分配一个tabindex值,利用tab键可以在控件之间切换焦点。50) Value属性:反映控件状态的属性,返回true表示已选择了该按钮。51) BackColor 属性:设置/返回背景色。52) FontBold 属性
14、:设置/返回字体粗体样式。 单选按钮类的常用事件:53) Click 事件:鼠标单击控件时发生。54) DbClick事件: 当在一个对象上按下和释放鼠标按钮并再次按下和释放按钮时,该事件发生。55) DragDrop事件:在一个完整的拖放动作或使用Drag方法,并将其Action参数设置位2时,该事件发生。56) DragOver事件: 在拖放操作正在进行时发生。57) GotFocus事件: 当获的对象焦点时发生。58) LostFocus事件:当对象失去焦点时发生。59) KeyDown事件:当控件具有焦点时按下一个键时发生。60) KeyUp事件: 当控件具有焦点时释放一个键时发生。6
15、1) KeyPress事件:当用户按下或释放ANSI一个键时发生。62) MouseDown事件:当在控件上按下鼠标键时发生。63) MouseMove事件:在控件上移动鼠标时发生。64) MouseUp事件:在控件上释放鼠标时发生。 复选按钮类的控件:65) Caption属性:缺省为check1。66) Index属性:该属性值为复选框控件数组的下标.67) Value属性:value为0表空白,为1表勾号,为2表示灰色勾号.68) 某进程修改。69) DataField属性:设置或返回数据使用者将被绑定到的字段名。70) Datasource属性:设置或返回控件绑定的一个数据源。71)
16、DisabledPicture属性:设置或返回一个对图片的引用,该图片在控件无效时显示在控件中。72) DragIcon属性:设置或返回图标,它将在拖放操作中作为指针显示。73) DragMode属性:设置返回一个值,确定在拖放操作中所用方式。74) Font属性:设置或返回字体的属性。75) Value属性:设置或返回控件的状态。 复选按钮类的控件的基本事件:76) Click事件:鼠标单击控件时发生。77) DragDrop事件:在一个完整的拖放动作完成或使用Drag方法,并将其Action参数设置为2时发生。78) DragOver事件:在拖放操作正在进行时发生。79) GotFocus
17、事件:在对象获的焦点时发生。,80) 作被执行或取消。81) 时,此事件发生。 框架类的控件:82) List属性:列表框控件的表项是使用数组的方式保存,数组的每一个元素存储列表控件的一个表项83) Listcount属性:控件列表部分项目的个数。84) Mutselect属性:可以设置列表框为单选或允许多选属性.85) Selectd属性:标示一个数组,数组各元素为:Selected(0),selected(1) 滚动条类的控件:86) Value属性:滚动条上滑块所在位置由value值所决定。87) Max和min属性:对value值的最大,最小进行限制。 定时器类类的控件:88) Ena
18、ble属性:为true时(缺省值),激活定时器开始计时;为false时处于休眠状态.数据库连接方式选择:Visual basic6.0连接数据库的主要方式以下几种方式:一是:用data控件进行数据库链接 ,二是利用adodc(ADO Data Control)进行数据库链接 。三是: 利用DataEnvironment进行数据库链接.四是利用ADO(ActiveX Data Objects)进行编程:现在我来大致对这几种技术应用介绍:一、 用data控件进行数据库链接.第一步:给窗体添加一个Data控件。第二步:用Access建立一个名为Pad的数据库,在库中建立一个表Myset,给表添加四个
19、字段:backcolor(数据),forecolor(文本),fontname(文本),fontsize(文本)。注意:请将库文件存入程序所在目录。如果你的机器没安装有Access,可通过VB建库。二、 利用adodc(ADO Data Control)进行数据库链接: 使用adodata控件访问数据库可以完全不用编写代码,只需要通过简单的设置和操作其属性就可以实现与数据库的连接,通过绑定数据感知控件,就能提供一个访问数据库的界面,用来实现对数据库的浏览,贴加,删除,修改等操作.三、 利用DAO对数据库进行操纵: 在visual basic 中提供了两种与jet数据引擎接口的方法:data控件
20、与数据访问对象(DAO)DAO是database object的英文缩写,要访问数据库一方面数据库要提供访问接口,另一方面要在编程环境中有对数据库的支持.DAO模型是设计关系数据库系统结构的对象类的集合.他们提供了管理关系型数据库系统所需要的全部操作属性和方法,这其中包括建立数据库,定义表,字段和建立表间关系,定位和查询数据库等.关系数据库介绍:关系数据库是目前各类数据库中最重要、最流行的数据库,他应用数学方法来处理数据库数据,是目前使用最广泛的数据库系统。20世纪70年代以后开发的数据库管理系统产品几乎都是基于关系的。在数据库发展的历史上,最重要的成就就是关系模型。 关系数据库系统与非关系数
21、据库系统的区别是:关系系统只有“表“这一种数据结构;而非关系数据库系统还有其他数据结构,对这些数据结构有其他的操作。结构化查询语言SQL(Structured Query Language)是一种介于关系代数与关系演算之间的语言,其功能包括查询、操纵、定义和控制四个方面,是一个通用的、功能极强的关系数据库语言。目前已成为关系数据库的标准语言MicrosoftAccess介绍:使用MicrosoftAccess,可以在单一的数据库文件中管理所有的信息。在这个文件中,用户可以将自己的数据分别保存在各自独立的存储空间中,这些空间称作表;可以使用联机窗体来查看、添加及更新表中的数据;使用查询来查找并检
22、索所要的数据;也可以使用报表以特定的版面布置来分析及打印数据。如果要保存数据,请为每一种类型的信息创建一个表。如果要从查询、窗体或报表中的多个表中将数据合并在一起,就要定义各个表之间的关系。如果要搜索并检索符合指定条件的数据,包括来自多个表中的数据,就要创建查询。查询的同时也可以更新或删除多条记录,并对数据执行内嵌或自定义的计算。如果要简单地直接在某个表中查看、输入及更改数据,请创建一个窗体。在打开一个窗体时,MicrosoftAccess将从一个或多个表中检索数据,并使用用户在“窗体向导”选择的版面布局或所创建的版面布局,将窗体显示在屏幕上。 如果要分析数据或将数据以特定的方式打印出来,请创
23、建一个报表。例如,可以打印一份将数据分组并计算数据总和的报表,也可以打印另一份带有各种数据格式的打印邮件标签的报表。第三章 图书管理系统的设计与实现3.1 系统的设计3.1.1系统的概要设计该系统考虑将整个系统分解成如下模块:欢迎界面主界面图书管理图书信息管理读者类别管理读者信息管理图书借阅管理借书管理还书管理系统管理登录图书类别管理罚款管理3.1.2 系统的数据设计系统的数据设计包括表和表之间的设计、视图设计、表与视图之间的设计。需保证数据的一致性和完整性强、数据安全性等。以下是各表和视图的是详细设计及其关系图。1. 各张表之间关系图2. 出版社表其中出版社编号设置为自动以1为单位递增。以I
24、SBN号为出版社表的主键。3.读书信息表:4.读者信息表:5.图书借阅表表:6.图书类型表:7.用户信息表:8.罚款信息表:10.读者类型表:11.bookview视图:12.Borrowview视图:13.Readerview视图:3.2 系统的设计与实现3.2.1 欢迎登陆界面的设计与实现 欢迎界面代码: 登陆界面代码: 登陆设计中,主要判断用户名密码是否为空,用户名密码是否正确,所选的用户 类型是否与用户名匹配,只有以上这些条件都正确的情况下,用户才能进入系统。 判断是否为空 If Text1.Text = Or Text2.Text = ThenMsgBox (用户名或密码不能为空),
25、 vbOKOnly + vbExclamation, (系统提示信息)Text1.Text = Text2.Text = Text1.SetFocusExit SubEnd If 正确性判断Adodc1.RecordSource = select * from 用户信息表 where 用户名= & Trim(Text1.Text) & and 密码= & Trim(Text2.Text) & Adodc1.Refresh If Adodc1.Recordset.RecordCount = 0 Then MsgBox (用户名或密码有误), vbOKOnly + vbExclamation, (
26、系统提示信息) Text1.SetFocus Exit Sub Else MsgBox (用户类型不符), vbOKOnly + vbExclamation, (系统提示信息) Text2.SetFocus3.2.2 主窗体设计与实现 Toolbar1设计代码:Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)Select Case Button.Index Case 1 If userpurview = 系统管理员 Then 用户管理.Show Else MsgBox (你不是系统管理员,没有权限!), v
27、bOKOnly + vbExclamation, (系统提示信息) End If Case 2 备份还原.Show Case 3 读者信息管理.Show Case 4 图书管理浏览.Show Case 5 出版社管理1.Show Case 6 EndEnd SelectEnd Sub 全局模块sub main()设计代码:Public Sub main()On Error GoTo errorhandle If App.PrevInstance Then MsgBox 程序已运行, vbExclamation + vbOKOnly, 操作提示 End End If conn = Provide
28、r=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=bookdata;Data Source=WORKER conn.Open 欢迎界面.Showerrorhandle: If conn.State adStateOpen Then MsgBox (数据库连接失败), vbOKOnly + vbExclamation, (系统提示信息) Else End IfEnd Sub 判断权限设计代码: 备份还原设计代码:3.2.3 用户管理模块的设计与实现 保存按钮设计代码: 删除按钮设计代
29、码:3.2.4图书借阅管理模块的设计与实现 借出按钮关键设计代码:图书的借出主要要考虑几个问题:(1)看这本书还有没有库存量,没有的话就不能外借;(2)借书册数是否大于库存数量,大于的话就不能外借;(3)判断借阅者的借书证是不是处于挂失状态,挂失的借书证不能借书;(4)判断借阅者所借的图书数量是否大于他的最大借书数量,大于的话就不能借出;(5)判断该借阅者是否有超期图书未还,有的话就不能借书给他,而是应该先让他先罚款还书后才能借;(6)判断该借阅者是否应经结借过此书,借过的话就不用再借给他了。只有都满足以上条件的话才能正常的为借阅者借书。l 判断读者是否有超期图书l 判断读者是否已经借了此书l
30、 统计读者已借书数量l 判断当前借书读者的借书证状态l 判断所借图书是否有馆藏图书 List1关键设计代码:(List2相似,这里以List1为例)3.2.5图书归还模块的设计与实现 归还按钮关键设计代码 浏览全部按钮关键设计代码:Private Sub Command5_Click()Adodc1.ConnectionString = conn Adodc1.RecordSource = SELECT * FROM 图书借阅表 Adodc1.Refresh If Adodc1.Recordset.RecordCount 0 Then Set DataGrid1.DataSource = Ad
31、odc1 DataGrid1.Refresh End IfEnd Sub3.2.6图书归还模块的设计与实现 付款按钮关键设计代码:罚款需考虑被罚款者必须先付滞纳金,所付滞纳金是否大于应缴纳的金额,该图书是否超期等问题,其代码如下:If Text14.Text = Then MsgBox (请付滞纳金,谢谢!), vbOKOnly, 系统提示信息 Text14.SetFocus Exit Sub End IfIf Text13.Text = 0 Then MsgBox (该图书没有超期,不用缴纳滞纳金!), vbOKOnly, 系统提示信息 Text14.SetFocus Exit Sub En
32、d IfIf Val(Text14.Text) Val(Text13.Text) Then MsgBox (所付的滞纳金必须大于或等于应缴金额!), vbOKOnly, 系统提示信息 Text14.SetFocus Exit Sub End If 显示全部按钮关键设计代码:这里显示的秩序是超期的图书,所以我应该判断显示出应还日期小于当前日期的图书就可以了,其关键代码如下:Private Sub Command5_Click()Adodc3.ConnectionString = connAdodc1.ConnectionString = conn Adodc1.ConnectionString
33、= conn Adodc1.RecordSource = SELECT * FROM borrowview where (应还日期) 0 Then Set DataGrid1.DataSource = Adodc1 DataGrid1.Refresh Else MsgBox (此时没有超期的图书!), , 系统提示信息 End IfEnd Sub3.2.7图书归还模块的设计与实现 添加按钮关键设计代码:If flag = 添加 ThenText1.Text = Text1.Text + 1Text2.Text = & Text2.Text & Text5.Text = Left(Text5.T
34、ext, 9) & - & Right(Text5.Text, 1) + 1If checkdata Then Adodc1.ConnectionString = conn Adodc1.RecordSource = select * from 图书信息表 order by 图书编号 Adodc1.RefreshIf Adodc1.Recordset.RecordCount 0 ThenAdodc1.Recordset.AddNewSet nstream = New ADODB.Streamnstream.Type = adTypeBinarynstream.OpenAdodc1.Record
35、set.Fields(图书编号) = Text1.TextAdodc1.Recordset.Fields(图书名称) = Text2.TextAdodc1.Recordset.Fields(图书类型) = Text3.TextAdodc1.Recordset.Fields(作者) = Text4.TextAdodc1.Recordset.Fields(ISBN) = Text5.TextAdodc1.Recordset.Fields(出版社) = Text6.TextAdodc1.Recordset.Fields(出版日期) = DTPicker1.ValueAdodc1.Recordset.
36、Fields(图书页数) = Text7.TextAdodc1.Recordset.Fields(价格) = Text8.TextAdodc1.Recordset.Fields(总藏书数量) = Text9.TextAdodc1.Recordset.Fields(现存数量) = Text10.TextAdodc1.Recordset.Fields(简介) = Text11.TextAdodc1.Recordset.UpdateMsgBox (添加成功!), vbOKOnly + vbExclamation, (系统提示信息)Adodc1.RefreshEnd IfEnd IfEnd If Da
37、taGrid1_Click()事件关键设计代码:新增图书信息.Text2.SetFocusmm = DataGrid1.Columns(0).TextAdodc2.ConnectionString = connAdodc2.RecordSource = select * from 图书信息表 where 图书编号= & Trim(mm) & Adodc2.RefreshIf Adodc2.Recordset.RecordCount 0 Then Text1.Text = Adodc2.Recordset.Fields(图书编号) Text2.Text = Adodc2.Recordset.Fi
38、elds(图书名称) Text2.Text = Adodc2.Recordset.Fields(图书名称) Text3.Text = Adodc2.Recordset.Fields(图书类型) Text4.Text = Adodc2.Recordset.Fields(作者) Text5.Text = Adodc2.Recordset.Fields(ISBN) Text6.Text = Adodc2.Recordset.Fields(出版社) DTPicker1.Value = Adodc2.Recordset.Fields(出版日期) Text7.Text = Adodc2.Recordset
39、.Fields(图书页数) Text8.Text = Adodc2.Recordset.Fields(价格) Text9.Text = Adodc2.Recordset.Fields(总藏书数量) Text10.Text = Adodc2.Recordset.Fields(现存数量) Text11.Text = Adodc2.Recordset.Fields(简介)End IfCommand2.Enabled = True3.2.8图书类别管理的设计与实现 TreeView1_Click()事件关键设计代码:mm = TreeView1.SelectedItem.keyqq = Right(m
40、m, Len(mm) - 2)Adodc1.RecordSource = select * from 图书类型表 where 类型层次编号= & Trim(qq) & Adodc1.RefreshIf Adodc1.Recordset.RecordCount 0 ThenText1.Text = Adodc1.Recordset.Fields(图书类型代码)Text2.Text = Adodc1.Recordset.Fields(图书类型名称)Text3.Text = Adodc1.Recordset.Fields(图书类型说明)Text4.Text = Adodc1.Recordset.Fi
41、elds(类型层次编号)Text5.Text = Adodc1.Recordset.Fields(类型父项编号)Text6.Text = Adodc1.Recordset.Fields(类型父项编号) & _ & Adodc1.Recordset.Fields(图书类型名称)End If图书类别管理.Frame2.Enabled = True 保存按钮关键设计代码:l checkdata() 函数Private Function checkdata() As BooleanIf Text1.Text = Or Text2.Text = ThenMsgBox (代码和名称不能为空!), vbOK
42、Only, 系统提示信息Exit FunctionEnd IfAdodc1.RecordSource = select * from 图书类型表 where 图书类型代码= & Trim(Text1.Text) & or 类型层次编号= & Trim(Text4.Text) & order by 类型父项编号Adodc1.RefreshIf Adodc1.Recordset.RecordCount 0 ThenMsgBox (该信息已存在,重复添加!), vbOKOnly, 系统提示信息Adodc1.Recordset.Closecheckdata = FalseExit FunctionEl
43、secheckdata = TrueEnd IfEnd Functionl tree() 函数Private Sub tree()TreeView1.Nodes.ClearSet node1 = TreeView1.Nodes.add(, , kk, 图书类型列表, 1)Adodc1.RecordSource = select * from 图书类型表 order by 类型父项编号Adodc1.RefreshDo While Adodc1.Recordset.EOF = FalseIf Adodc1.Recordset.Fields(类型父项编号) = 0 Thenf_key = Trim(
44、k_ & Adodc1.Recordset.Fields(类型层次编号)f_text = Adodc1.Recordset.Fields(图书类型代码) & _ & Adodc1.Recordset.Fields(图书类型名称)Call addfu(f_key, f_text)Elsestr_Key = Adodc1.Recordset.Fields(类型父项编号)c_key = Adodc1.Recordset.Fields(类型层次编号)c_text = Adodc1.Recordset.Fields(图书类型名称)Call AddChildNode(k_ & str_Key, k_ & c_key, c_text)End IfAdodc1.Recordset.MoveNextLoopEnd Sub3.2.9增加读者模块的设计与实现 添加按钮关键设计代码:If flag = 添加 ThenIf checkdata