图书管理系统(20211124120851)_第1页
图书管理系统(20211124120851)_第2页
图书管理系统(20211124120851)_第3页
图书管理系统(20211124120851)_第4页
图书管理系统(20211124120851)_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、1 图书管理系统摘要图书管理系统是以sql servers 2000作 为 后 台 数 据 库 , 采用 visual basic6.0开发的一个数据库管理系统。开发本系统的基本步骤:需求分析、系统概念设计、 系统逻辑和物理设计、 系统实现和维护。 在系统分析中先后用数据字典、数据流图、 e-r 图分析了系统所需的各种数据。在系统的设计过程中,我主要采用了部件进行前台和后台的连接,还采用模块独立设计法,比较详细的展现了各个部件的功能。在后台数据库的设计当中, 我又力求层次清晰,设计简单实用。在系统具体实行阶段中, 我较细致的画出了各个窗体并给出了相应的事件和代码,以实现各个窗体的作用。功能概述

2、:该系统界面友好,操作简便,能完成图书的分类查询,读者借书数量的查询, 图书信息的添加修改删除,读者信息的添加修改删除,同时还能实现借阅功能和还书功能等一系列图书管理功能,开发本系统的总体任务是实现图书管理的系统化和自动化,帮助管理人员更高效地完成图书管理工作。本着实用性的原则, 整个系统由四大功能组成, 每个功能又能保持数据的同步更新。一、图书查询部分:包括按书名查询,按作者查询,按图书类别查询,读者已借书数查询等功能。二、读者借阅部分:包括读者对想借图书是否被借的查询,登记借阅信息等功能。三、读者还书部分:包括登记还书信息等功能。四、更新图书和读者信息部分:包括图书信息的添加修改删除,读者

3、信息的添加修改删除,同时,在添加读者信息时,系统自动将其借书证号作为 id,密码默认为 666666 添加到用户表中,方便读者登录本系统。本系统具有高效、易操作、易维护等特点,并且系统结构清晰、界面友好,功能较为齐全,能有效地协助管理人员进行图书管理工作。2 1. 需求分析需求 分 析 阶 段 必须 准 确 了 解 与 分 析 用 户 需 求 ( 包 括 数 据 与 处理 ),需 求 分 析 是 整 个 设 计 过 程 的 基 础 。需 求 分 析 阶 段 确 定 的 系 统 逻辑 模 型 是 以 后 设 计 和 实 现 目 标 系 统 的 基 础 。1.1 系 统的 数据 字 典本 系 统

4、主 要 数 据 元 素 的 数 据 字 典 卡 片 为 :名 字 : 图 书 信 息 报 表别 名 : 图 书 信 息 表描 述 : 图 书 基 本 信 息 表定 义 : 图 书 信 息 报 表 书 号 书 名 作 者 类 别 登 记 日 期 是 否 被 借 +出 版 社 +年 份 +价 格 +数 量名 字 :借 阅 信 息 报 表别 名 :借 阅 信 息 表描 述 :登 记 读 者 借 书 和 还 书 的 表定 义 :借 阅 信 息 报 表 姓 名 借 书 证 号 书 号 +书 名 +借 书 日 期 +还 书 日 期 +罚 款名 字 :用 户 报 表别 名 :用 户 表 表描 述 :存 储

5、用 户 id password和 权 限 的 表定 义 :用 户 报 表 id password 权 限名 字 :读 者 信 息 报 表别 名 :读 者 信 息 表描 述 :读 者 基 本 信 息 表定 义 :读 者 信 息 报 表 姓 名 借 书 证 号 所 在 单位 职 业 电 话 号 码 登 记 日 期 已 借 书 数3 2. 数据库概念结构设计将需求分析得到的用户需求抽象为信息结构即概念模型的过程就是概念结构设计。它是整个数据库设计的关键。 概念设计阶段主要任务和目标是根据需求分析的结果,包括一般联系实体,画出对应的e-r 图。对于复杂的系统,通常首先要对它的各功能模进行分析,然后再把

6、它的功能结构图画出来,功能分析之后,再根据不同用户对数据和使用权限的不同要求分析局部e-r 模式,然后再把各个局部 e-r 模式综合起来形成统一的整体e-r 图。2.1 图书管理系统功能分析图书管理系统包括查询、借阅、还书、更新图书和读者信息。(1)图书查询管理:包括按书名查询,按作者查询,按图书类别查询,读者已借书数查询 4 部分。其中,图书信息包括图书编号、 书名、图书类别、作者、出版社、剩余数量、登记日期、价格、出版日期以及是否已被借出。(2)图书借阅管理:包括者对想借图书是否被借的查询,登记借阅信息2部分功能。其中,登记借阅信息包括借书证号、姓名、图书编号、书名和借书日期。另外,还要求

7、每人最多只能借5 本书。(3)图书还书管理:实现登记还书信息功能。其中,还书信息与借阅信息的区别是存储还书日期和罚款。(4)图书和读者信息管理:包括图书信息和读者信息都包括查询、添加、修改和删除 4 部分功能。其中,读者信息包括姓名、 借书证号、所在单位、职业、电话号码、登记日期、已借书数。同时,在添加读者信息时,系统自动将其借书证号作为 id,密码默认为 666666添加到用户表中,方便读者登录本系统。图书信息同上。2.2 e-r 图的设计数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率

8、, 保证数据的完整和一致。 同时,合理的数据库结构也将有利于程序的实现。设计数据库系统时应该首先充分了解用户各个方面的需求,包括现有的以及将来可能增加的需求。针对图书管理系统的需求,通过对图书管理系统流程分析,设计此系统需要的 e-r图。利用 e-r 图进行数据库的概念设计, 可分成三步进行: 首先设计局部 er 模式, 然后把各局部 e-r 模式综合成一个全局模式, 最后对全局 er 模式进行优化,得到最终的模式,即概念模式。e-r 模型的 “ 联系” 用于刻画实体之间的关联。 一种完整的方式是对局部结构中任意两个实体类型, 依据需求分析的结果, 考察局部结构中任意两个实体类型之间是否存在联

9、系。若有联系,进一步确定是1:n,m:n ,还是 1:1 等。还要考察一个实体类型内部是否存在联系,两个实体类型之间是否存在联系,多个实体类型之间是否存在联系,等等。4 所有局部 e-r 模式都设计好了后,接下来就是把它们综合成单一的全局概念结构。全局概念结构不仅要支持所有局部e-r 模式,而且必须合理地表示一个完整、一致的数据库概念结构。1) 确定公共实体类型为了给多个局部 e-r 模式的合并提供开始合并的基础,首先要确定各局部结构中的公共实体类型。 在这一步中我们仅根据实体类型名和键来认定公共实体类型。一般把同名实体类型作为公共实体类型的一类候选,把具有相同键的实体类型作为公共实体类型的另

10、一类候选。2) 局部 e-r 模式的合并合并的原则是: 首先进行两两合并; 先和合并那些现实世界中有联系的局部结构;合并从公共实体类型开始,最后再加入独立的局部结构。3) 消除冲突冲突分为三类:属性冲突、结构冲突、命名冲突。设计全局e-r 模式的目的不在于把若干局部e-r 模式形式上合并为一个e-r 模式,而在于消除冲突,使之成为能够被所有用户共同理解和接受的同一的概念模型。4) 全局 e-r 模式的优化在得到全局 e-r 模式后,为了提高数据库系统的效率,还应进一步依据处理需求对 e-r 模式进行优化。一个好的全局e-r 模式,除能准确、全面地反映用户功能需求外, 还应满足下列条件: 实体类

11、型的个数要尽可能的少;实体类型所含属性个数尽可能少;实体类型间联系无冗余。根据上述所示得出本系统的全局er 图如下:借阅书读者姓名借书证号书号书名书号出版社登记日期类别作者姓名借书证号职业所在单位年份价格是否被借还书日期借书日期书名登记日期已借书数m n 5 3. 数据库逻辑结构设计(e-r 图向关系模型转换)数据的概念结构设计完毕后,逻辑结构设计的任务就是把概念结构设计阶段设计好的基本 e-r图转换为与逻辑结构。根据上面的e-r 图,现在将数据库概念结构转化为 sql server2000数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。e-r图转换的关系模型为:图书信息表(书号、书名

12、、图书类别、作者、出版社、是否被借、登记日期、价格、年份)读者信息表(借书证号、姓名、所在单位、职业、电话号码、登记日期、已借书数)图书借阅信息表(借书证号、书号、姓名、书名和借书日期、还书日期)用户表( id、password、权限)在上面的实体以及实体之间关系的基础上,形成数据库中的表以及各个表之间的关系。 sql server2000数据库中各个表的设计代码如下:定义图书信息表:create book (sno char(10) primary key, sname char(20), swriter char(15), sfy char( 10), 登记日期 datetime, 是否被

13、借 char(2), 价格 money, 出版社 char(20), 年份 datetime 数量 smallint ) 定义读者信息表:create reader (借书证号 char(10) primary key, 姓名 char(8), 所在单位 char(20), 职业 char(10), 电话号码 char(15), 登记日期 datetime, 已借书数 smallint ) 定义借阅信息表:create 借阅信息(借书证号 char(10), 6 sno char(10), 姓名 char(8), sname char(20), 借出日期 datetime, 还书日期 date

14、time, 罚款 money, primary key( 借书证号 ,sno), foreign key(借书证号 ) references reader(借书证号 ), foreign key(sno) references book(sno) ) 定义用户表:create 用户(id char(10) primary key, password char(10), 权限 char(10) ) 关系模型的逻辑结构是一组关系模式的集合,关系模型要求关系必须是规范化的, 即要求关系必须满足一定的规范条件, 这些规范条件中最基本的一条就是,关系订单每一个分量必须是一个不可分的数据项。关系模型可以具

15、有更高的数据独立性、更好的安全保密性。4. 物理设计(数据库的维护)由于应用环境不断变化, 数据库运行过程中物理存储也会不断变化,对数据库设计进行调整修改等维护工作是设计工作的继续和提高。对数据库经常性的维护工作主要包括:(1)数据库的转储和恢复针对不同的应用要求制定不同的转储计划,保证一旦发生故障能尽快将数据库恢复到某种一致的状态,尽可能减少对数据库的破坏。(2) 数据库的安全性、完整性控制在数据库运行过程中由于应用环境的变化,对安全性的要求也会发生变化,如原来机密的数据现在可以公开查询了,新加入的数据又可能是机密的了。系统中用户的密级改变。 这都需要根据实际情况修改原有的安全性控制,可以设

16、置数据库密码及用户权限。同样,数据库的完整性的约束条件也会变化,需要dba不断修正。(2)数据库性能的监督、分析和改造利用 microsoft sql server2000提供的检测系统性能参数的工具,在数据库运行过程中,监督数据进行分析,找出改进系统性能的方法,并做适当调整。(4)数据库的重组及重构造数据库运行一段时间后,由于记录不断增、删、改,增添、修改的数据不能为空,否则不能保存到数据库中。 使数据库的物理存储情况变坏,降低了数据的7 存取效率,数据库性能下降, 这时 dba要对数据库进行重组织, 或部分重组织(只对频繁增、删的表进行重组织),可以利用microsoft sql serv

17、er2000专门提供的数据重组织实用程序操作,按原设计要求重新安排存储位置、回收垃圾、 减少指针链等,提高系统性能。有些情况,如由于数据库应用环境发生变化,增加了新的应用或新的实体,取消了某些应用, 有的实体与实体间的联系发生变化,则需要调整数据库的模式及内模式。5. 系统功能结构框图图书管理系统客户端图书管理系统服务器端查询图书信息管理还书借阅读者信息管理按书名查询按作者查询查询图书是否被借按分类查询添加借阅信息登记还书信息缴纳罚款添加图书信息删除图书信息修改图书信息删除读者信息修改读者信息添加读者信息网络管理模块数据管理模块管理客户端连接信息操作数据库8 6. 程序原代码及其说明。用 sq

18、l对所建表实现下列查询1 求总藏书量、藏书总金额,总库存册数、最高价、最低价。select sum( 数量) /*从图书表中选出总藏书量 */ from book select sum( 价格) /*从图书表中选出藏书总金额*/ from book select count(distinct sname) /*从图书表中选出总库存册书*/ from book select max( 价格) /*从图书表中选出价格最高的图书*/ from book select min(价格) /*从图书表中选出价格最低的图书*/ from book 2 列出藏书在 3 本以上的书(书名、作者、出版社、年份)。

19、select * from book where sname=any (select sname /*选出图书表中 3 本以上书名相同的书 */ from book group by(sname) having count(*)=3) and 出版社 =any /*选出图书表中 3 本以上书名相同并且出版社也相同的书*/ (select 出版社from book group by( 出版社 ) having count(*)=3) 3 哪些出版社的藏书种类数超过5 种。select 出版社 /*选出藏书种类数超过5 中的出版社 */ from book group by( 出版社 ) havi

20、ng count(sname)5 4 目前实际已借出多少册书?select count(*) /*选出实际已借册数 */ from book where 是否被借 = 是 5 年份最久远的书。select * /*选出年份最久远的书 */ from book where 年份=any (select min(年份) from book ) 9 6 “数据库系统原理教程,王珊编,清华大学出版社,1998 年出版”还有几本?select count(*) from book where sname=数据库系统原理教程 and swriter=王珊and 出版社 = 清华大学出版社 and 是否被借

21、 = 否and 年份 like%1998% 7 哪一年的图书最多?select 登记日期 /*选出哪一年的图书最多 */ from book group by( 登记日期 ) having count(sno)=all (select count(sno) from book group by 登记日期) 8 哪本借书证未归还的图书最多?select 借书证号 , 姓名 /*选出哪本借书证未归还的图书最多*/ from reader where 已借书数 = (select max(已借书数 ) from reader ) 9平均每本借书证的借书册数。select avg(已借书数 ) /*选

22、出平均每本借书证的借书册数*/ from reader 10哪个单位平均借书册数最多?select 所在单位 /*选出哪个单位平均借书册数*/ from reader group by( 所在单位 ) having avg( 已借书数 )=all (select avg(已借书数 ) from reader group by( 所在单位 ) 11 最近两个月都未被借过的书。select * /*选出最近两个月都未被借过的书*/ from book where sno not in (select sno from 借阅信息where month( 借出日期 )in (11,12) ) 12 列

23、出那些借了图书逾期未归还的借书证号和图书名。select 借书证号 ,sname/* 选出借了图书逾期未归还的借书证号和图书名*/ from 借阅信息10 where 还书日期 is null and (2010-year(借出日期 )*365+(1-month(借出日期 )*30+(12-day(借出日期 )30 13这个月未借过书的借书证. select 借书证号 , 姓名 /*选出这个月未借过书的借书证号和姓名*/ from reader where 借书证号 not in (select 借书证号from 借阅信息where month( 借出日期 )=12 ) 14 这两个月哪种书出

24、借最多?select sname /*选出这两个月哪种书借出最多*/ from 借阅信息group by(sname) having count(sname)=all (select count(sname) from 借阅信息7. 收获及体会通过这次课程设计,我掌握了accesss 数据库的编程方法,掌握了visual 中文版视化面向对象的编程语言的使用方法。对目前流行的软件开发方法和手段,有了一定的认识,丰富了软件开发的经验,提高了编制程序的水平,加深理解了许多课程中、书本上学到的知识和理论。同时通过编写毕业设计论文,我还掌握了软件文档的书写方法和书写格式。因为初次开发一个系统,所以此系统

25、还有许多不完善的地方。由于时间有限, 和我的编程水平和经验不足,有些功能并没有完全实现,有些功能实现的并不理想。在已经完成的程序中,也存在许多不尽人意的算法和数据结构。而这也让我充分认识到了软件编制的困难程度。对软件的编制速度,复杂程度有了充分的认识。整个库存管理系统已经开发完毕。在开发的过程中,确实遇到了不少的困难和阻碍,首先,由于第一次接触这样的系统开发,当时上手时一片迷茫,根本不知道要做些什么事情,从何做起, 怎么做, 其次, 书本上的理论知识终究不同于实际的操作,真正让我把项目设置的整个流程反映在系统中着实还是有一定的困难的。因为毕竟没有真正地实践过,对于整个流程还只是停留在书本上看到

26、的,老师上课讲到的。不过,经过一段时间的调查和研究,翻阅大量的资料以及导师的细心指导,由此开始慢慢地上了轨道,也渐渐地理清了思路,了解了自己应该如何开始,于是为自己制订了一份进度安排,一步步地按照这个进度施行计划。同时, 指导老师也让我们先做一份系统分析,那么在真正的设计时就可以有个导向,以此达到事半功倍的效果。确实,事实证明,这是非常需要的。在后期的程序设计中,这份系统分析起到了举足轻重的份量,使我们在具体设计中有了更为清晰的目标。但是,在此过程中,也并不是一帆风顺的,特别是在编程方面,遇到了很多的困难,以前虽说没学过vb, 但是真要使用这个开发工具开发一个系统并不是易事,有时候, 有些在系

27、统中的功能我们构想的很好,很完美,但在实际的操作中,并不能完全实现,很多时候,虽然把程序编写出来了,但在执行的时候却不断地报错,往往是这个功能可以实现了,那段程序却又出现了错误,所以,在这段过程中, 需要经过无数次的修改,不断地学习,反反复复的实践,最终才完成了这个11 系统的开发。在这次课程设计中,我要特别感谢郑教师,在您的大力帮助下不仅仅是完成了此系统的开发而且学会了一门编程语言,使我的能力得到了提高。7. 系统的实现及运行结果分析7.1 用户登录界面通过该界面登录图书管理系统和进行密码修改。(1)在您选择修改密码时,将进入如下界面:在单击“确定”按钮后, 如果两次新密码输入一致, 将返回

28、一个信息框, 提12 示密码修改成功。 如果不一致,也将返回一个信息框提示两次输入的新密码不一致。(2)在您选择登录时,将根据用户权限提供相应操作。如果登录的用户是普通用户, 进入主界面将不能进行图书信息和读者信息的修改。如下图。如果登录的用户是管理员,进入主界面可以进行所有操作,如下图:7.2 查询界面进入主界面后,在您选择查询时,将来到查询界面。在这里,您可以选择查询方式,如果您选择按书名查询, 并输入书名后点击 “确定”,将查到如下结果:13 当然您也可以选择其他查询, 如按作者查询,按分类查询,查询已借书数等。查询完毕后,您可以选择“返回” ,重新回到主界面,也可以选择“退出”,退出本

29、系统。7.3 借阅界面在主界面,您也可以选择借阅,来到借阅界面。在这里,您可以查询要借的图书是否被别人借走。 如被借走, 您将不能借阅, 同时“添加”按钮显示灰色,不能点击。如果没被借走,您可以点击“添加”借阅此书。14 点击“添加”后,进入如下界面,登记借阅信息:在单击“确定”按钮后, 如果输入正确, 将返回一个信息框, 提示借阅信息已成功登记,如下图。如果该读者已借5 本书,点击“确定”按钮后,将返回信息框,提示15 借阅完毕后,您可以选择“返回” ,重新回到主界面,也可以选择“退出”,退出本系统。7.4 还书界面在主界面,您也可以选择还书,来到还书界面。在这里,您可以输入借书证号,所还书

30、号点击“确定”,找到要还的图书。来到如下界面,登记还书信息。16 输入还书日期后,点击“确定”,如果您借书时间超过一个月,系统将返回一个信息框,提示您需要缴纳罚款。最后系统提示还书信息已成功登记。还书完毕后,您可以选择“返回” ,重新回到主界面,也可以选择“退出”,退出本系统。7.5 更新图书和读者信息界面如果您是管理员在主界面, 还可以选择更新图书和读者信息, 来到如下界面。在这里,您可以选择更新图书信息和读者信息。17 (1)如果您要更新图书信息,点击后,来到如下界面:在这里您可以点击“添加”,通过如下界面,录入新的图书信息。18 您也可以在设置条件里确切的找到图书,对其进行修改和删除,

31、点击 “修改”后,进入如下界面,修改后点击“确定”。同时,您也可以点击“删除”,删除图书信息。点击后,返回一个信息框,提示是否要删除,如果您点击“是” ,就将该图书信息删除了。19 最后还可以点击“返回”,回到图。(2)如果您要更新读者信息,点击后,来到如下界面:同样在这里您可以点击“添加”,通过如下界面,录入新的读者信息。在录入新的读者信息时,系统自动将其借书证号作为id,密码默认为 666666 添加到用户表中,方便读者登录本系统。您还可以在设置条件里确切的找到读者信息,对其进行修改和删除, 点击 “修改”后,进入如下界面,修改后点击“确定”。20 同时,您也可以点击“删除”,删除读者信息

32、。点击后,返回一个信息框,提示是否要删除,如果您点击“是” ,就将该读者信息删除了。最后点击“返回”,回到图。9. 附录(代码)9.1 附录一(登录界面)private sub command3_click() form6.show unload me end sub private sub form_activate() yhdl3 = 0 end sub private sub command1_click() yhdl3 = yhdl3 + 1 adodc1.recordsource = select password from 用户 where id = + text1.text +

33、and password = + text2.text + adodc1.refresh 21 yhdl2 = adodc1.recordset.recordcount if yhdl2 = 0 then msgbox 用户名或密码错误,请重新输入, , 提示 if yhdl3 2 then msgbox 您已输错3 次,已无法登陆!, , 提示 unload me end if exit sub else adodc2.recordsource = select 权限 from 用户 where id = + text1.text + adodc2.refresh set datagrid1

34、.datasource = adodc2 datagrid1.refresh yhdl = datagrid1.text if yhdl = 普通用户 then form2.show form2.command1.enabled = false form1.hide else form2.show form1.hide end if end if end sub private sub command2_click() unload me end sub private sub 登录 _click() yhdl3 = yhdl3 + 1 adodc1.recordsource = select

35、 password from 用户 where id = + text1.text + and password = + text2.text + adodc1.refresh yhdl2 = adodc1.recordset.recordcount if yhdl2 = 0 then msgbox 用户名或密码错误,请重新输入, , 提示 if yhdl3 2 then msgbox 您已输错3 次,已无法登陆!, , 提示 unload me end if exit sub else adodc2.recordsource = select 权限 from 用户 where id = +

36、text1.text + adodc2.refresh set datagrid1.datasource = adodc2 22 datagrid1.refresh yhdl = datagrid1.text if yhdl = 普通用户 then form2.show form2.command1.enabled = false form1.hide else form2.show form1.hide end if end if end sub private sub 退出 _click() unload me end sub private sub 修改密码 _click() form6

37、.show unload me end sub 9.2 附录二(查询界面)private sub command1_click() text2.text = text3.text = adodc2.recordsource = select sno as 书号 ,sname as 书名 ,swriter as 作者 ,sfy as 分类 , 登记日期 as 登记日期 , 是否被借 as 是否被借 , 价格 as 价格 , 出版社 as 出版社 , 年份 as 年份 from book where sname= + text1.text + adodc2.refresh set datagrid

38、1.datasource = adodc2 datagrid1.refresh end sub private sub command2_click() text1.text = text2.text = adodc2.recordsource = select sno as 书号 ,sname as 书名 ,swriter as 作者 ,sfy as 分类 , 登记日期 as 登记日期 , 是否被借 as 是否被借 , 价格 as 价格 , 出版社 as 出版社 , 年份 as 年份 from book where sfy= + text3.text + adodc2.refresh set

39、 datagrid1.datasource = adodc2 datagrid1.refresh end sub private sub command3_click() text1.text = text3.text = 23 adodc2.recordsource = select sno as 书号 ,sname as 书名 ,swriter as 作者 ,sfy as 分类 , 登记日期 as 登记日期 , 是否被借 as 是否被借 , 价格 as 价格 , 出版社 as 出版社 , 年份 as 年份 from book where swriter= + text2.text + ad

40、odc2.refresh set datagrid1.datasource = adodc2 datagrid1.refresh end sub private sub command4_click() unload me form2.show end sub private sub command5_click() unload me end sub private sub command6_click() adodc6.recordsource = select 已借书数 as 已借书数 from reader where 借书证号= + text4.text + adodc6.refre

41、sh set datagrid2.datasource = adodc6 datagrid2.refresh text5.text = datagrid2.text end sub 9.3 附录三(借阅模块)private sub command1_click() unload me form2.show end su private sub command2_click() unload me end sub private sub command3_click() adodc3.recordsource = select 是否被借 from book where sno= + text1.

42、text + adodc3.refresh set datagrid2.datasource = adodc3 datagrid2.refresh jl = datagrid2.text if jl = 是 then comm1.enabled = false msgbox 您所查询的图书已被借走!, vbokonly, 信息提示 else comm1.enabled = true end if end sub 24 private sub form_load() recs = adodc1.recordset.recordcount text2.text = recs if recs 0 t

43、hen adodc1.recordset.movelast adodc1.recordset.movefirst end if end sub private sub comm1_click() flag = 1 form11.show vbmodal text2.text = recs end sub private sub retcomm_click() unload me form1.show end sub private sub form_activate() text1(0) = : text1(1) = text1(2) = : text1(3) = text1(4) = : t

44、ext1(5) = end sub private sub comm1_click() if trim(text1(0).text) = then msgbox 数据不能为空,请正确输入, vbokonly, 信息提示 text1(0).setfocus exit sub end if if trim(text1(1).text) = then msgbox 数据不能为空,请正确输入, vbokonly, 信息提示 text1(1).setfocus exit sub end if if trim(text1(2).text) = then msgbox 数据不能为空,请正确输入, vboko

45、nly, 信息提示 text1(2).setfocus exit sub end if if trim(text1(3).text) = then msgbox 数据不能为空,请正确输入, vbokonly, 信息提示 text1(3).setfocus exit sub end if 25 if trim(text1(4).text) = then msgbox 数据不能为空,请正确输入, vbokonly, 信息提示 text1(4).setfocus exit sub end if adodc1.recordsource = select 已 借 书 数from reader where

46、 借 书 证 号 = + text1(0).text + adodc1.refresh set datagrid1.datasource = adodc1 datagrid1.refresh yjss = datagrid1.text yjss = yjss + 1 adodc2.recordsource = select * from book where sno= + text1(1).text + adodc2.refresh set datagrid2.datasource = adodc2 datagrid2.refresh sfbj = datagrid2.text if sfbj

47、 = 是 then msgbox 对不起!您所借的图书已被借走!, vbokonly, 信息提示 else if yjss 5 then msgbox 对不起!您所借的书数已超过5 本,请及时归还!, vbokonly, 信息提示 else sfbj = 是 recs = recs + 1 form5.adodc1.recordset.addnew form5.adodc1.recordset.fields(借书证号 ) = trim(text1(0).text) form5.adodc1.recordset.fields(姓名 ) = trim(text1(2).text) form5.ad

48、odc1.recordset.fields(sno) = trim(text1(1).text) form5.adodc1.recordset.fields(sname) = trim(text1(3).text) form5.adodc1.recordset.fields(借出日期 ) = trim(text1(4).text) adodc1.recordset.fields(已借书数 ) = trim(yjss) adodc2.recordset.fields(是否被借 ) = trim(sfbj) if trim(text1(5).text) then form5.adodc1.reco

49、rdset.fields(还书日期 ) = trim(text1(5).text) end if form5.adodc1.recordset.update adodc1.recordset.update adodc2.recordset.update msgbox 借阅信息已成功登记!, vbokonly, 信息提示 end if end if unload me end sub 26 private sub comm2_click() unload me end sub 9.4 附录四(还书模块)private sub form_load() recs = adodc1.recordset

50、.recordcount text2.text = recs if recs 0 then adodc1.recordset.movelast adodc1.recordset.movefirst end if end sub private sub form_activate() datagrid1.setfocus call encomm end sub private sub command1_click() unload me form2.show end sub private sub command2_click() unload me end sub private sub co

51、mmand3_click() flag = 2 form13.show vbmodal text2.text = recs end sub private sub selcmd1_click() condstr = if trim(text1.text) and trim(text3.text) then if condstr = then condstr = 借书证号 = + trim(text1.text) + + and sno = + trim(text3.text) + end if end if if condstr then adodc1.recordsource = selec

52、t * from 借阅信息 where + condstr + order by 借出日期 desc adodc1.refresh else adodc1.recordsource = select * from 借阅信息 adodc1.refresh 27 end if recs = adodc1.recordset.recordcount text2.text = recs if recs = 0 then msgbox 没有任何满足条件的记录, vbokonly, 信息提示 end if call encomm flag = 2 form13.show vbmodal text2.tex

53、t = recs end sub private sub selcmd2_click() text1.text = : text3.text = end sub private sub retcomm_click() unload me form1.show end sub private sub encomm() if recs = 0 then command2.enabled = false else command2.enabled = true end if end sub private sub form_activate() jl1 = 0 if flag = 2 then te

54、xt1(0).text = trim(form12.adodc1.recordset.fields(借书证号 ) & text1(2).text = trim(form12.adodc1.recordset.fields(姓名 ) & text1(1).text = trim(form12.adodc1.recordset.fields(sno) & text1(3).text = trim(form12.adodc1.recordset.fields(sname) & text1(4).text = trim(form12.adodc1.recordset.f

55、ields(借出日期 ) & text1(5).text = trim(form12.adodc1.recordset.fields(还书日期 ) & text3.text = trim(form12.adodc1.recordset.fields(罚款 ) & else text1(0) = : text1(1) = text1(2) = : text1(3) = text1(4) = : text1(5) = : text3 = 0 end if end sub private sub comm1_click() jl1 = jl1 + 1 28 if jl1 1

56、then msgbox 还书信息已成功登记!, vbokonly, 信息提示 unload me end if if trim(text1(5).text) = then msgbox 数据不能为空,请正确输入, vbokonly, 信息提示 text1(5).setfocus exit sub end if adodc1.recordsource = select * from reader where 借书证号 = + text1(0).text + adodc1.refresh adodc2.recordsource = select * from book where sno= + t

57、ext1(1).text + adodc2.refresh text2.text = trim(adodc1.recordset.fields(已借书数 ) & yjss1 = text2.text text4.text = 否 yjss1 = yjss1 - 1 form12.adodc1.recordset.fields(借书证号 ) = trim(text1(0).text) form12.adodc1.recordset.fields(姓名 ) = trim(text1(2).text) form12.adodc1.recordset.fields(sno) = trim(te

58、xt1(1).text) form12.adodc1.recordset.fields(sname) = trim(text1(3).text) form12.adodc1.recordset.fields(借出日期 ) = trim(text1(4).text) form12.adodc1.recordset.fields(还书日期 ) = trim(text1(5).text) form12.adodc1.recordset.update adodc1.recordset.fields(已借书数 ) = trim(yjss1) adodc2.recordset.fields(是否被借 )

59、= trim(text4.text) adodc1.recordset.update adodc2.recordset.update text1(5).text = trim(form12.adodc1.recordset.fields(还书日期 ) & jssj = (year(text1(5).text) - year(text1(4).text) * 360 + (month(text1(5).text) - month(text1(4).text) * 30 + (day(text1(5).text) - day(text1(4).text) if jssj 30 then j

60、ssj = (jssj - 30) * 2 label8.visible = true text3.visible = true label9.visible = true if jl1 = 1 then msgbox 您借书时间超过规定时间,需要按每天0.5 元罚款! , vbokonly, 信息提示 end if text3.text = jssj form12.adodc1.recordset.fields(罚款 ) = trim(text3.text) form12.adodc1.recordset.update else 29 msgbox 还书信息已成功登记!, vbokonly, 信息提示 unloa

温馨提示

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

评论

0/150

提交评论