当前位置:首页 >> IT/计算机 >>

学校图书管理系统的设计与开发


中央广播电视大学人才培养 模式改革与开放教育试点

中央广播电视大学 专业专科毕业论文 专业专科毕业论文

题目: 题目:

姓 学 学

名: 号: 校:

指导教师: 指导教师:

湖南广播电视大学制

学校图书管理系统的设计与开发

易丹
【摘要】 摘要】 :图书管理系统是智能办公系统(IOA)的重要组成部分,因此,图书管理系 : 统也以方便、 快捷的优点正慢慢地进入人们的生活, 将传统的图书管理方式彻底的解脱 出来,提高效率,减轻工作人员以往繁忙的工作,减小出错的概率,使读者可以花更多 的时间在选择书和看书上。从而使人们有更多时间来获取信息、了解信息、掌握信息。 其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。采用 SQL Server2005 数据库作为后台数据库、Microsoft Visual Basic 6.0 编程语言作为前台 开发工具,通过对数据库技术进行了较深入的学习和应用,主要完成书目检索、读者管 理、借阅管理、图书管理、用户维护、系统维护等系统功能。系统运行结果证明,本文 所设计的图书管理系统可以满足学生和教师借阅者、 图书管理员两方面的需要, 达到了 设计要求。 【关键词】 关键词】 :图书管理 系统设计 信息 VB 可视化编程 SQL Server2005 :

6

目录 第一章系统概述………………………………………………………………………… 第二章开发工具………………………………………………………………………… (一) Microsoft Visual Basic 6.0的优势……………………………………… (二)使用 ADO 数据控件访问数据库……………………………………………… (三) Access2000 简介……………………………………………………………… (四)SQL Server 2005 概述………………………………………………………… (五)Web 技术……………………………………………………………………… 第三章需求分析………………………………………………………………. (一)系统需求分析…………………………………………………………… (二)系统实现的目标………………………………………………………… (三)系统功能模块设计………………………………………………………… (四)系统功能结构图………………………………………………………… (五)系统流程图……………………………………………………………… 第四章总体设计………………………………………………………… (一)数据库概念结构设计………………………………………………………… (二)数据库逻辑结构设计………………………………………………………… (三)图书管理系统的系统 E-R 图………………………………………………………… (四)数据表设计………………………………………………………… 第五章详细设计………………………………………………………… (一)系统流程分析………………………………………………………… (二)主要模块的运行………………………………………………………… (三) 图书信息管理模块………………………………………………………… (四) 图书借还信息模块………………………………………………………… 第六章关键代码设计………………………………………………………… (一)登陆界面编码设计………………………………………………………… (二)读者管理界面编码设计………………………………………………………… (三)图书管理界面编码设计………………………………………………………… (四)借阅信息管理界面编码设计

7

(五) 关键技术………………………………………………………… (六)源程序清单………………………………………………………… 第七章系统测试………………………………………………………… (一)测试概述………………………………………………………… (二)测试方法………………………………………………………… (三)测试方案………………………………………………………… 总结………………………………………………………… 致谢………………………………………………………… 参考文献…………………………………………………………

8

第一章:系统概述 在当今知识大爆炸的时代,图书作为信息的一种载体,仍是人们获得知识的一种重要 途径,因而作为图书管理与借阅的图书馆,它的运行情况则关系到知识的传播速度问题。以 往旧的图书馆管理模式完全是手工操作,从新书的购买、编码、入库、上架,到借阅、续借、 归还、查询,无一不是人工处理,需要大量的劳动力与工作量,而且由于人为的原因造成一 些错误,也是再所难免的。当读者想要借阅一本书时,首先要查询大量的卡片,而且要有一 定的图书管理知识,才能很快的查到。自己想要的图书,在借阅过程中还要填写许多相关的 卡片,使得图书馆的管理效率低下,图书流通速度较慢,因而从一定程度上也影响了知识的 传播速度。 信息技术发展日新月异,区域信息化建设如火如荼,作为信息资源基础建设主体的图 书馆面临着前所未有的挑战和机遇。 近几年随着计算机技术、网络技术的不断发展和普及,目前很多学校都建起了校园网, 进一步推动了图书馆的信息化建设。正是基于这种现状,我们开发了这套图书馆管理系统, 该系统充分发挥了计算机技术、网络技术的强大功能,从整体上改善了图书馆的管理工作, 提高了图书馆服务的功能和质量,实现了图书管理的信息化、网络化、自动化。该系统是利 用数据库软件编制一个管理软件,用以实现图书、读者以及日常工作等多项管理。同时对整 个系统的分析、 设计过程给出一个完整论证。 图书管理系统是一种基于集中统一规划的数据 库数据管理新模式。在对图书、读者的管理,其实是对图书、读者数据的管理。本系统的建 成无疑会为管理者对图书管理系统提供极大的帮助。本系统的设计主要从以下几方面做起: 系统业务流程分析、系统的功能设计、系统的数据库结构设计等。作这些工作需对数据库知 识有足够认识,并深入的了解 Microsoft Visual Basic 6.0 的使用和管理系统的相关知识。 在信息时代的今天,人类需要对在政治、经济、军事、文化、科研、教育等领域产生的大量 信息进行管理,并对数据进行加工处理,数据库技术则是信息管理与数据处理的先进技术。 随着信息量的不断增加,作为计算机的三大主要应用(科学计算、过程控制和数据处理)之 一的数据处理, 已迅速上升为计算机应用的主要方面, 数据库技术则成为人们日常生活中处 理数据不可缺少的有力工具,并且现代的信息管理系统几乎都以数据库技术作为核心。 现在大多数的图书管理方式为手工处理,重复劳动多,劳动强度大,而且容易出错,新 系统的使用能否可以很好的解决这些问题要看系统的可行性, 可行性研究的目的是用最小的 代价在尽可能短的时间内确定问题是否能够解决。系统的可行性分析有以下几个方面: (1)技术可行性:处理速度快、准确通过权限的设置,数据的安全性好、方便查询、借阅 管理等。 (2)经济可行性:系统建设不需要很大的投入、可缩减人力投入。 (3)运行上可行性: 本系统作为一个小型的图书馆信息管理系统, 所耗费的资源非常的小。 (4)从各种社会因素可行性分析:可降低工作人员工作强度,提高效率,会得到学校工作 人员的一致同意的。 综上所述通过可行性分析认为新系统的开发方案切实可行,可进行开发。 第二章:开发工具 (一) Microsoft Visual Basic 6.0的优势 Visual Basic 具有强大的数据库管理功能,利用数据控件和数据库管理窗口,可以直接 建立或处理 Microsoft Access 格式的数据库,并提供了强大的数据存储和检索功能。同时, Visual Basic 还能直接编辑和访问其他外部数据库。以 Microsoft Visual Basic 6.0 为开发工具 进行程序设计,不仅实现了系统各模块的功能,而且具有直观友好的用户界面,使用户操作
9

简单、方便、快捷,也大大减轻了管理员的工作量,提高了图书管理的自动化程度。 (二)使用 ADO 数据控件访问数据库 ADO 是 ActiveX Data Objects 的缩写,提供对各种数据库访问的标准接口。 1、如何用 ADO 存取数据: 在实际编程过程中使用 ADO 的一个典型的存取数据的步骤为: 连接数据源→打开记录集对象→使用记录集→断开连接 2、关闭所有的数据连接 如 果 在 代 码 中 使 用 了 数 据 控 件 如 ADO , 在 退 出 时 应 该 关 闭 所 有 打 开 的 recordsource, database 。 虽然对象能自动注销, 但是数据连接不会马上断开, 可能会 导致一些内存不能被系统重新分配。 Visual Basic 提供了与底层数据库系统紧密的连接。 Visual Basic 支持不同的关系数据库 管理系统并充分发挥每一个数据库的特长。 生成独立应用或脱离服务器运行的服务以上的应 用,Visual Basic 连接数据库的方式有两种: 1.通过使用 Visual Basic 的 ADO 控件。 2.通过使用由 Visual Basic 提供的专用的直接与数据库相连的接口。 (三) Access2000 简介 Access2000 就是关系数据库开发工具, 数据库能汇集各种信息以供查询、 存储和检索。 Access 的优点在于它能使用数据表示图或自定义窗体收集信息。数据表示图提供了一种类 似于 Excel 的电子表格,可以使数据库一目了然。另外,Access 允许创建自定义报表用于 输出数据库中的信息。Access 也提供了数据存储库,可以使用桌面数据库文件把数据库文 件置于网络文件服务器,与其他网络用户共享数据库。Access 是一种关系数据库工具,关 系数据库是已开发的最通用的数据库之一。如上所述,Access 作为关系数据库开发,具备了 许多优点,可以在一个数据包中同时拥有桌面数据库的便利和关系数据库的强大功能。 (四)SQL Server 2005 概述 SQL Server 是一个关系数据库管理系统它是由 Microsoft 推出的。SQL Server 是一个 具备完全 Web 支持的数据库产品,提供了对可扩展标记语言 (XML) 的核心支持以及在 Internet 上和防火墙外进行查询的能力,提供了以 Web 标准为基础的扩展数据库编程功 能。 丰富的 XML 和 Internet 标准支持允许使用内置的存储过程以 XML 格式轻松存储和检 索数据。 SQL Server 提供强大的开发工具和各类开发特性,在大大提高开发效率的同时,进一 步拓展应用空间,带来新的商业应用机遇。例如,XML 数据库与 Web Service 的支持将使您 的应用实现 Internet 数据互联, .net 集成极大的扩展了开发空间, 异构数据集成、 Service Broker 使您的数据和其它应用无缝集成,各种新数据类型和 T-SQL 扩展带来了诸多灵活性。 VB.net、XQuery、XMLA、C#、ADO.net 2.0、SMO、AMO 等都将成为 SQL Server 数据平台上 开发数据相关应用的有力工具。它具有以下特点: 1.电子商务 在使用由 Microsoft SQL Server 2005 关系数据库引擎的情况下,XML 数据可在关系表 中进行存储,而查询则能以 XML 格式将有关结果返回。此外,XML 支持还简化了后端系统集 成,并实现了跨防火墙的无缝数据传输。你还可以使用 Hypertext Transfer Protocol(超 文本传输协议,HTTP)来访问 SQL Server 2005,以实现面向 SQL Server 2005 数据库的安 全 Web 连接和无须额外编程的联机分析处理(OLAP)多维数据集。 2.上手容易

10

大多数的中小企业日常的数据应用是建立在 Windows 平台上的。由于 SQL Server 与 Windows 界面风格完全一致, 且有许多"向导(Wizard)"帮助, 因此易于安装和学习, 有关 SQL Server 的资料、培训随处可得,并且目前国内具有 MCDBA 认证的工程师不在少数 3.数据仓库 Microsoft SQL Server 2005非常明显的改进就是增加了OLAP(联机分析处理)功能,这可 以让很多中小企业用户也可以使用数据仓库的一些特性进行分析。 OLAP可以通过多维存储技 术对大型、复杂数据集执行快速、高级的分析工作。数据挖掘功能能够揭示出隐藏在大量数 据中的倾向及趋势, 它允许组织或机构最大限度的从数据中获取价值。 通过对现有数据进行 有效分析,这一功能可以对未来的趋势进行预测。 4.兼容性良好 由于今天 Windows 操作系统占领着主导地的位,选择 SQL Server 一定会在兼容性方面 取得一些优势。另外,SQL Server 2005 除了具有扩展性,可靠性以外,还具有可以迅速开 发新的因特网系统的功能。尤其是它可以直接存贮 XML 数据,可以将搜索结果以 XML 格式输出等特点, 有利于构建了异构系统的互操作性, 奠定了面向互联网的企业应用和服务 的基石。这些特点在.NET 战略中发挥着重要的作用。 (五) Web技术 1.浏览器/服务器(Browser/Server)结构 随着Web和Internet计算环境的发展, 将使企业能够以更快的速度、 更低的费用去创建和 布置企业的应用系统,因而,普遍认为C/S架构将会被B/S结构取代。Internet为数据库应用 系统提供了新的机会,采用B/S结构,客户机上只要安装一个浏览器(Browser),如Netscape Navigator或Internet Explores;中间层采用Web服务器, 它接受客户端的请求, 将其转换为SQL 语句,通过ODBC或其他手段传给数据库服务器,并将数据库服务器返回的结果用HTML文 件格式传回给客户机。客户机的要求大大降低,大部分程序在服务器端执行。采用3层体系 结构的Web应用程序由Web浏览器、Web服务器和数据库3部分组成,如图2-1所示。Web浏 览器与Web服务器之间的通信仍然遵循HTTP,Web服务器与数据库之间的通信遵守 CGI(Common Gateway Interface)或者Server API规范。在采用三层体系结构的Web应用程序 中,Web浏览器向Web服务器请求某个HTML文档或者请求执行某个CGI脚本程序。Web服 务器根据Web浏览器请求的是某个CGI程序或者API程序,Web服务器则执行(或调用外部程 序执行)该程序,然后将程序执行结果返回给Web浏览器。习惯上,我们把采用这种体系结 构的Web网站称作“动态网站”。目前,互联网中绝大部分网站和大多数Web应用系统都采 用了这种体系结构。 2.IIS服务器技术 IIS(Internet Information Server Internet 信息服务器)是 Microsoft 公司开发的一 种集 Web,FTP 和 Gopher 服务于一身的服务器,它可以利用 Windows XP Server 的各种功能 并且能在 Internet 上发布信息。IIS 是微软随着 WindowsXP Server 附带的一个软件。IIS 提供 Internet 信息服务器应用程序接口(ISAPI)扩展 Web 服务器的功能,并可通过 Microsoft Visual Basic 6.0T 实现 Web 程序的快速开发,支持用 VB 编写的 CGI 程序,用 VB 开发的 C/S 架构的程序不经过修改就可以在 Web 上发布, 可以使开发动态主页更加方便, 同时也保护了以前的投资。IIS 还包括了 Microsoft Index Server,可实现对本 Web 站点内 容的全文检索以及 Site Server Express 用于分析站点访问的情况。IIS 的管理功能是基于 WindowsXP Server 的,可充分利用 WindowsXP Server 提供的安全服务和目录服务。它的安 全模型是以 NTFS 安全机制为基础的,这样利用资源管理器可以容易地管理使用 IIS 建立的 Web 站点的安全性。 第三章:需求分析

11

(一)系统需求分析 随着互联网的爆炸性发展, 人们越来越习惯于利用网络来实现所需的服务, 网络已深深 影响到人们生活的各个方面。另外,传统的图书馆不能满足一部分现代人的需要,而电子阅 览室, 由于其不受时间与空间的限制同时又具有传统图书馆的大部分功能, 能够满足各类用 户的常规与特殊需求,而且其方便快捷,实现技术又比较成熟,因此受到当代人的喜爱。 该系统主要分为两部分: 读者部分和管理员部分。 为了方便读者查找自己感兴趣的主题 进行阅读,要将图书按照内容进行分类。读者可以按照类别进行查找,逐级浏览、可以查看 自己的信息。 本系统还可对用户的账号和书目的阅读权限进行管理。 管理员需要给用户分配 用户名和密码, 及设定用户的级别, 还为用户提供图书的排行榜让用户能知道那些图书受到 大家的欢迎。 (二)系统实现的目标

学校图书管理系统的开发主要要实现的目标有以下几个方面: 1.界面设计友好、美观。 2.数据存储安全、可靠。 3.信息分类清晰、准确。 4.强大的查询功能,保证数据查询的灵活性。 5.实现对图书借阅和归还过程的全程数据信息跟踪。 6.提供图书借阅排行榜,为图书管理员提供了真实的数据信息。 7.提供灵活、方便的权限设置功能,使整个系统的管理分工明确。 8.具有易维护性和易操作性。
(三)系统功能模块设计 1.系统设置模块:添加删除管理员、设置管理员的权限、说明图书存放书架信息添加 删除书架信息。 2.读者管理模块:添加删除不同类型的读者及注明可借图书的数量、添加删除读者的 档案。 3.图书管理模块:添加删除不同类型的的图书及注明图书可借的天数库存数量、添加 删除图书的档案。 4.图书借还模块:可查询读者借阅和归还图书的信息及图书的现有库存量。 5.系统查询模块:可根据不同的条件(条形码、书名、类别、作者、书架、出版社) 查询读者需要的图书、读者可根据不同的条件(图书条形码、图书名称、读者编号、读者名 字、到期时间)查询自己借阅图书信息。 6.排行榜模块:可以让读者知道图书借阅的排行榜及读者借阅的排行榜 (四)系统功能结构图 根据图书管理系统的实际需求,可以将图书管理系统划分为系统设置、图书管理、读者 管理、图书借还、系统查询、排行榜6个部分各个部分的具体功能的系统功能结构图如图3-1

12

所示。

图书管理系统

系 统 设 置

读 者 管 理

图 书 管 理

图 书 借 还

系 统 查 询

排 行 榜

管 理 员 设 置

书 架 设 置

读 者 类 型 管 理

读 者 档 案 管 理

图 书 档 案 管 理

图 书 类 型 管 理

图 书 借 阅

图 书 归 还

图 书 档 案 查 询

图 书 借 阅 查 询

图 书 借 阅 排 行 榜

读 者 借 阅 排 行 榜

图 3-1

系统功能结构图

1.图书借阅系统完成用户的借书过程其数据流图如图3-2所示。

图3-2

借阅系统的数据流图

2.还书系统完成图书的归还过程其数据流图如图3-3所示。

13

图3-3

归还系统的数据流图

3.图书档案管理系统为用户提供图书档案信息其数据流图如图3-4所示。

图3-4

图书档案管理数据流图

4.读者档案系统用于记录读者的详细信息其数据流图如图3-5所示。

14

图3-5

读者档案管理数据流图

(五)系统流程图 图书管理系统的流程是用户先输入自己的帐号密码及系统显示的验证码进入系统如有 一项不符合则不能进入系统, 成功登陆系统后系统根剧登陆的帐号信息从数据库中的数据进 行对比判断是读者还是管理员,如果是读者则能进行信息查询,及修改自己的相关信息,查 询到自己所需要的图书就能通过管理员进行借阅图书、 归还图书也是通过管理员完成的。 如 果不是读者而是管理员, 那管理员可以进行相关信息的查询、 添加删除图书及读者的所有信 息、设置相应的权限、为图书更新排行榜的信息、以及完成读者的图书借阅与归还。图书管 理系统的系统流程图如图3-6所示。 登陆 系统



是否登陆

管 理 员

判断身份

读者

排行榜信息

图书信息

读者信息

图书归还

图书借阅

信息查询

图3-6

图书管理系统的流程图

第四章:总体设计 (一)数据库概念结构设计 数据库概念结构设计是在需求分析的基础上, 设计出能够满足用户需求的各种实体, 以 及它们之间的关系, 为后面的逻辑结构设计打下基础。 这个阶段不用考虑所采用的数据库管 理系统、操作系统类型、机器类型等问题。这阶段可用的工具很多。用的最多的是 E-R 图 (Entity-Relation,实体-关系图), 另外还有许多计算机辅助工具(Computer Aided Software Engineering, CASE)可以帮助进行设计。本系统采用了 E-R 图的方法进行数据库概念结构设
15

计。E-R 图是描述数据实体关系的一种直观描述工具。这种图中有: 1.实体:用方框表示,方框内为实体的名称。 2.实体的各种属性:用椭圆表示,椭圆内为属性名称。使用线段将其和响应的实体连接 起来。 3.实体之间的联系:用菱形表示,菱形内为联系的名称。 实体和实体之间的联系较多,比较常见的联系有 l:1,l:N 和 M:N 这三种。 (二)数据库逻辑结构设计 概念结构是独立于实际数据模型的信息结构, 必须将其转化为逻辑结构后才能进行数据 库应用的设计。也就是要将概念上的结构转化为数据库系统所支持的实际数据模型。 第一种转化是将实体转化为关系表。这种转化较简单,需要将实体的属性定义为表的 属性即可。 第二种转化是联系的转化。即将各个实体之间的联系转化为表格之间的关系,如外部 键的定义。 在上面工作的基础上归纳出人员管理数据库表格的组成之间的联系等等。该数据库系 统具有以下方面的特点:结构合理,对一个人员建立多条记录。所建立的数据冗余度小,独 立性强。建档、修改、查询、统计快速而准确。保密性好、可靠性好。 图书管理系统中要有图书, 图书是图书管理系统中密不可分的部分, 因此要创建一图书 信息实体,用来保存图书的详细信息。图书信息实体属性图如图 4-1 所示。

图 4-1

图书信息实体属性图

(三)图书管理系统的系统 E-R 图 图书管理系统的系统 E-R 图如图 4-2 示。

16

类型

……

编号

编号

密 码

名称

读者

管理

管理员

修改

删除

添加

还书时间

修改

借还

图书

管理

删除 借书时间 类型 …… 条形码

添加

图 4-2 图书管理系统的系统 E-R 图

(四) 数据表设计 本系统使用的数据库管理系统为 SQL Server 2005。数据库中的表有管理员信息表、图书 信息表、读者信息表、管理员权限表、图书借阅归还表等。 第五章:详细设计 (一)系统流程分析 根据开发图书管理系统的需求分析,本系统设计了三种用户,分别为系统管理员、教师 和学生。 系统要求有系统管理员用户,我们设定系统管理员,当系统管理员使用帐户登录后,需 要查看有关图书的一系列的信息,管理员可以通过系统导航菜单进入读者管理界面、图书管 理界面、图书借还界面、系统查询界面、排行榜界面,在读者界面中,管理员添加和修改学 生或教师信息、用户可以查看自己信息,在图书管理界面管理员可以添加和修改图书信息、 用户可查看图书,在图书借还界面完成读者借书还书的操作,系统查询界面管理员可以查看 借出去的图书信息及库存的信息、用户可以查找自己的所需的图书,排行榜界面主要是可以 让用户知道哪些图书受到读者的喜爱。读者(老师和学生)使用读者帐号登陆系统后,可以 查询自己所需要的图书的信息、也可以查询自己个人的基本信息及图书的借还信息,还能查 看排行榜的信息。读者的借书和还书过程是通过管理员完成的。 〈二〉 主要模块的运行 1. 登陆界面 当用户输入用户名、密码,系统自动将输入的信息和相关数据表中的内容进行比较,如

17

果该用户输入的内容和数据表中的内容相符,则通过验证,此次登录成功;否则登录失败。 比较的过程是由浏览器将指令,数据发送到 Web 服务器,Web 服务器通过对数据库进行查询将 结果返回到浏览器,从而端显示成功的消息,用户只有成功登陆系统后才能进行一系列的操 作,如下图 5-1 所示。

5-1

图书管理系统登陆界面

(三)图书信息管理模块 图书信息管理模块主要分为查看图书信息页面和添加修改图书信息页面,用户可以在 查看图书信息页面查看图书的基本信息,管理员也可以看这些信息,并且可以通过单击“添 加图书信息”这个超级链接或 GridView 控件中的“详情”超级链接转到添加或删除图书信 息界面,并在该页中添家或修改图书信息,如图 5-2 与 5-3 所示。

图 5-2

查看图书信息界面

(四)图书借还信息模块 图书借还管理模块主要分为图书借阅页面和图书归还页面,用户可以在通过这个模块查 看图书的借阅和归还信息。管理员可以在图书通过这个模块来完成读者借和还书的操

作,如图 5-3 所示。

18

第六章:关键代码设计 代码是一组有序的数字或字母的排列,是代表客观存在的实体或属性的符号,代码设计 就是给系统中某些实体及其属性予相应的编码。 在管理信息系统中, 代码是人和计算机对实 体及其属性进行识别、记载和处理的共同语言,成为人和机器交换信息的有力工具。 通过对数据库及彼此之间的联系进行分析,对所有数据文件中的主码和外来码的构成进行设计 (一)登陆界面编码设计 本窗体集成了”登录”模块,因此在系统加载时,需要先启动”登录”模块的登录窗体,只有当用 户输入了正确的用户名和密码,才能进入到系统主界面。 当 user 表没有该用户,将无法使用本程序。 user = myrs("user ") 将公共变量 user 设为用户的身份 此窗体的主要代码设计如下: Dim rs_login As New ADODB.Recordset If Trim(Combo1.Text) = "" Then MsgBox "没有这个用户", vbOKOnly + vbExclamation, "" Combo1.SetFocus Else sql = "select * from 系统管理 where 用户名='" & Combo1.Text & "'" Else MsgBox "密码不正确", vbOKOnly + vbExclamation, txtpwd.SetFocus 登录成功后,管理员可以进行添加和删除用户,修改密码,修改各种资料等操作 (二)读者管理界面编码设计 通过 DataCombol 控件连接到数据库的 dbl 基础数据表, DATA GRID 控件, 用 将它的各 列显示出数据库的各列,属性设为可写,连接到数据库。 用 Text 控件来显示所输入的内容,单击“保存“按钮后就可以保存到数据库中,通过 ADO 控件来浏览记录。 实现读者资料登记的添加、删除、修改、保存功能。 读者管理界面如图: 此窗体的主要代码设计如下: sql = "读者编号='" & Trim(Text1.Text & " ") & "'" If Check2.Value = vbChecked Then If Trim(sql) = "" Then sql = "读者姓名='" & Trim(Text2.Text & " ") & "'" sql = sql & "and 读者姓名='" & Trim(Text2.Text & " ") & "'" If Check3.Value = vbChecked Then If Trim(sql) = "" Then sql = "读者类别='" & Trim(Combo1.Text & " ") & "'" sql = sql & "and 读者类别='" & Trim(Combo1.Text & " ") & "'" sql = "select * from 读者信息 where " & sql (三)图书管理界面编码设计 通过 ADO 控件连接到数据库,用 DATA GRID 控件,将它的各列显示出数据库的各种 类型,其类型有:计算机、电子、电工、物理、小说。用户可以通过此窗体来添加或删除类 型。次窗体连接到借书窗体。

19

此窗体的主要代码设计如下 sql = "书名='" & Trim(Text1.Text & " ") & "'" If Check2.Value = vbChecked Then If Trim(sql) = "" Then sql = "类别='" & Trim(Combo1.Text & " ") & "'" sql = sql & "and 书名='" & Trim(Combo1.Text & " ") & If Check3.Value = vbChecked Then sql = "作者='" & Trim(Text2.Text & " ") & "'" sql = sql & "and 作者='" & Trim(Text2.Text & " ") & sql = "出版社='" & Trim(Text3.Text & " ") & "'" sql = sql & "and 出版社='" & Trim(Text3.Text & " ") sql = "书籍编号='" & Trim(Text4.Text & " ") & "'" sql = sql & "and 书籍编号='" & Trim(Text4.Text & " If Trim(sql) = "" Then MsgBox "请选择查询方式!", vbOKOnly + vbExclamation sql = "select * from 书籍信息 where " & sql (四)借阅信息管理界面编码设计 次窗体主要用于借书功能, 还可以显示借阅者的具体信息, 以便于确认借阅者的正确身 份。通过 ADO 控件连接到数据库,用 DATA GRID 控件,将它的各列显示出所有读者的编号和 姓名。次窗体主要用于借书操作。 此窗体的主要代码设计如下 sql = "select * from 借阅信息" sql = "select * from 书籍信息 where 书籍编号='" & book_num & "'" sql = "select * from 读者信息 where 读者编号='" & Combo1.Text & "'" MsgBox "请先登记读者!", vbOKOnly + vbExclamation rs_borrowbook.Open sql, conn, adOpenKeyset, adLockPessimistic rs_borrowbook.Fields(8) = rs_borrowbook.Fields(8) + 1 rs_borrowbook.Update rs_borrowbook.Close MsgBox "本书借阅成功!", vbOKOnly + vbExclamation (五) 关键技术 本系统开发过程中用到的关键技术主要有: 1.Visual Basic 与数据库的连接; 2.数据库的建立。 (六)源程序清单 1.文件名 login(login.frm) 功能说明:整个系统的登陆界面,需要输入用户名和登陆密码才能进入到系统中,进行 借阅等操作。 源代码: Option Explicit Dim cnt As Integer Private Sub Command1_Click() Dim sql As String Dim rs_login As New ADODB.Recordset

20

If Trim(Combo1.Text) = "" Then MsgBox "没有这个用户", vbOKOnly + vbExclamation, "" Combo1.SetFocus Else sql = "select * from 系统管理 where 用户名='" & Combo1.Text & "'" rs_login.Open sql, conn, adOpenKeyset, adLockPessimistic If rs_login.EOF = True Then MsgBox "没有这个用户", vbOKOnly + vbExclamation, "" Combo1.SetFocus Else If Trim(rs_login.Fields(1)) = Trim(txtpwd.Text) Then userID = Combo1.Text rs_login.Close Unload Me form1.Show Else MsgBox "密码不正确", vbOKOnly + vbExclamation, "" txtpwd.SetFocus End If End If End If cnt = cnt + 1 If cnt = 3 Then Unload Me End If Exit Sub End Sub Private Sub Command2_Click() Unload Me End Sub Private Sub Form_Load() Dim connectionstring As String connectionstring = "provider=Microsoft.Jet.oledb.4.0;" & _ "data source=book.mdb" conn.Open connectionstring cnt = 0 End Sub Private Sub txtuser_Change() End Sub 2.文件名 form1(form1.frm) 功能说明:整个系统的主界面,其中包括图书管理、读者管理、图书借阅管理、系统 管理、关于,以及在这下面的子菜单。 源代码: Private Sub add_admin_Click()

21

frmadduser.Show End Sub Private Sub add_back_book_Click() frmbackbookinfo.Show End Sub Private Sub add_book_info_Click() frmaddbookinfo.Show End Sub Private Sub add_book_style_Click() frmaddbookstyle.Show End Sub Private Sub add_lend_book_Click() frmfindbook.Show End Sub Private Sub add_reader_info_Click() frmaddreaderinfo.Show End Sub Private Sub add_reader_style_Click() frmaddreaderstyle.Show End Sub Private Sub change_pwd_Click() frmchangepwd.Show End Sub Private Sub del_book_info_Click() frmmodifybookinfo.Show End Sub Private Sub del_book_style_Click() frmmodifybookstyle.Show End Sub Private Sub del_reader_info_Click() frmreaderinfo.Show End Sub Private Sub del_reader_style_Click() frmmodifyreaderstyle.Show End Sub Private Sub exit_sys_Click() End End Sub Private Sub find_book_info_Click() frmfindbook.Show End Sub Private Sub find_lend_book_Click() frmfindborrowinfo.Show End Sub

22

Private Sub find_reader_info_Click() frmfindreader.Show End Sub Private Sub Form_Load() End Sub Private Sub gly_Click() Form2.Show End Sub frmmodifybookstyle.Show End Sub Private Sub modify_reader_info_Click() frmreaderinfo.Show End Sub Private Sub modify_reader_style_Click() frmmodifyreaderstyle.Show End Sub 3.文件名 frmaddbookstyle(frmbookstyle.frm) 功能说明:用于添加图书类别信息。 源代码: Option Explicit Private Sub Command1_Click() Dim rs_bookstyle As New ADODB.Recordset Dim sql As String If Trim(Text1.Text) = "" Then MsgBox "图书种类不能为空", vbOKOnly + vbExclamation, "" Text1.SetFocus Exit Sub End If If Trim(Text2.Text) = "" Then MsgBox "种类编号不能为空", vbOKOnly + vbExclamation, "" Text2.SetFocus Exit Sub End If sql = "select * from 图书类别 where 类别名称='" & Text1.Text & "'" rs_bookstyle.Open sql, conn, adOpenKeyset, adLockPessimistic If rs_bookstyle.EOF Then rs_bookstyle.AddNew rs_bookstyle.Fields(0) = Trim(Text1.Text) rs_bookstyle.Fields(1) = Trim(Text2.Text) rs_bookstyle.Update MsgBox "添加图书类别成功!", vbOKOnly, "" rs_bookstyle.Close Else MsgBox "读者类别重复!", vbOKOnly + vbExclamation, ""

23

Text1.SetFocus Text1.Text = "" rs_bookstyle.Close Exit Sub End If End Sub Private Sub Command2_Click() Unload Me End Sub 4.文件名 frmmodifybookstyle(code) 功能说明:图书类别管理,可以修改和删除图书类别。 源代码: Option Explicit Dim rs_reader As New ADODB.Recordset Private Sub cmdcancel_Click() rs_reader.CancelUpdate DataGrid1.Refresh DataGrid1.AllowAddNew = False DataGrid1.AllowUpdate = False cmdmodify.Enabled = True cmddel.Enabled = True cmdcancel.Enabled = False cmdupdate.Enabled = False End Sub Private Sub cmddel_Click() Dim answer As String On Error GoTo delerror answer = MsgBox("确定要删除吗?", vbYesNo, "") If answer = vbYes Then DataGrid1.AllowDelete = True rs_reader.Delete rs_reader.Update DataGrid1.Refresh MsgBox "成功删除!", vbOKOnly + vbExclamation, "" DataGrid1.AllowDelete = False Else Exit Sub End If delerror: If Err.Number <> 0 Then MsgBox Err.Description End If End Sub Private Sub cmdmodify_Click()

24

Dim answer As String On Error GoTo cmdmodify cmddel.Enabled = False cmdmodify.Enabled = False cmdupdate.Enabled = True cmdcancel.Enabled = True DataGrid1.AllowUpdate = True cmdmodify: If Err.Number <> 0 Then MsgBox Err.Description End If End Sub Private Sub Command5_Click() rs_reader.Update DataGrid1.Refresh End Sub Private Sub cmdupdate_Click() If Not IsNull(DataGrid1.Bookmark) Then rs_reader.Update End If cmdmodify.Enabled = True cmddel.Enabled = True cmdcancel.Enabled = False cmdupdate.Enabled = False DataGrid1.AllowUpdate = False MsgBox "保存成功!", vbOKOnly + vbExclamation, "" End Sub Private Sub Command1_Click() Unload Me End Sub Private Sub Form_Load() Dim sql As String On Error GoTo loaderror sql = "select * from 图书类别" rs_reader.CursorLocation = adUseClient rs_reader.Open sql, conn, adOpenKeyset, adLockPessimistic cmdupdate.Enabled = False '设定 datagrid 控件属性 DataGrid1.AllowAddNew = False DataGrid1.AllowDelete = False DataGrid1.AllowUpdate = False If userpow = "guest" Then Frame2.Enabled = False End If

'打开数据库

'不可增加 '不可删除 '权限相关

25

Set DataGrid1.DataSource = rs_reader Exit Sub loaderror: MsgBox Err.Description End Sub 5.文件名 frmaddbookinfo(frmaddbookinfo.frm) 功能说明:添加图书信息,包括图书编号、书名、出版日期、入库日期、作者等信息。 源代码: Option Explicit Private Sub Command1_Click() Dim rs_addbook As New ADODB.Recordset Dim sql As String If Trim(Combo1.Text) = "" Then MsgBox "请选择图书种类", vbOKOnly + vbExclamation, "" Combo1.SetFocus Exit Sub End If If Trim(Text1.Text) = "" Then MsgBox "图书编号不能为空", vbOKOnly + vbExclamation, "" Text1.SetFocus Exit Sub End If If Trim(Text2.Text) = "" Then MsgBox "书名不能为空", vbOKOnly + vbExclamation, "" Text2.SetFocus Exit Sub End If If Not IsDate(Text5.Text) Then MsgBox "请按照 yyyy-mm-dd 格式输入日期", vbOKOnly + vbExclamation, "" Text5.SetFocus Exit Sub End If If Not IsDate(Text6.Text) Then MsgBox "请按照 yyyy-mm-dd 格式输入日期", vbOKOnly + vbExclamation, "" Text6.SetFocus Exit Sub End If sql = "select * from 书籍信息 where 书籍编号='" & Text1.Text & "'" rs_addbook.Open sql, conn, adOpenKeyset, adLockPessimistic If rs_addbook.EOF Then rs_addbook.AddNew rs_addbook.Fields(0) = Trim(Text1.Text) rs_addbook.Fields(1) = Trim(Text2.Text) rs_addbook.Fields(2) = Trim(Combo1.Text)

26

rs_addbook.Fields(3) = Trim(Text3.Text) rs_addbook.Fields(4) = Trim(Text4.Text) rs_addbook.Fields(5) = Trim(Text5.Text) rs_addbook.Fields(6) = Trim(Text6.Text) rs_addbook.Fields(7) = "否" rs_addbook.Update MsgBox "添加书籍信息成功!", vbOKOnly, "" rs_addbook.Close Else MsgBox "图书编号重复!", vbOKOnly + vbExclamation, "" Text1.SetFocus Text1.Text = "" rs_addbook.Close Exit Sub Private Sub Form_Load() Dim rs_leibie As New ADODB.Recordset Dim sql As String sql = "select * from 图书类别" rs_leibie.Open sql, conn, adOpenKeyset, adLockPessimistic rs_leibie.MoveFirst Do While Not rs_leibie.EOF Combo1.AddItem rs_leibie.Fields(0) rs_leibie.MoveNext Loop rs_leibie.Close End Sub Private Sub Frame1_DragDrop(Source As Control, X As Single, Y As Single) End Sub 6.文件名 frmfindbook(form) 功能说明:查询图书信息,可以选择性的输入图书的编号、名称或者类别查询图书的 详细信息。 源代码: Option Explicit Dim panduan As String Private Sub Command1_Click() Dim rs_findbook As New ADODB.Recordset Dim sql As String If Check1.Value = vbChecked Then sql = "书名='" & Trim(Text1.Text & " ") & "'" End If If Check2.Value = vbChecked Then If Trim(sql) = "" Then sql = "类别='" & Trim(Combo1.Text & " ") & "'" Else

27

sql = sql & "and 书名='" & Trim(Combo1.Text & " ") & "'" End If End If If Check3.Value = vbChecked Then If Trim(sql) = "" Then sql = "作者='" & Trim(Text2.Text & " ") & "'" Else sql = sql & "and 作者='" & Trim(Text2.Text & " ") & "'" End If End If If Check4.Value = vbChecked Then If Trim(sql) = "" Then sql = "出版社='" & Trim(Text3.Text & " ") & "'" Else sql = sql & "and 出版社='" & Trim(Text3.Text & " ") & "'" End If End If If Check5.Value = vbChecked Then If Trim(sql) = "" Then sql = "书籍编号='" & Trim(Text4.Text & " ") & "'" Else sql = sql & "and 书籍编号='" & Trim(Text4.Text & " ") & "'" End If End If If Trim(sql) = "" Then MsgBox "请选择查询方式!", vbOKOnly + vbExclamation Exit Sub End If sql = "select * from 书籍信息 where " & sql rs_findbook.CursorLocation = adUseClient rs_findbook.Open sql, conn, adOpenKeyset, adLockPessimistic DataGrid1.AllowAddNew = False DataGrid1.AllowDelete = False DataGrid1.AllowUpdate = False Set DataGrid1.DataSource = rs_findbook 'rs_findbook.Close End Sub Private Sub Command2_Click() Unload Me End Sub Private Sub Command3_Click() If Trim(book_num) = "" Then MsgBox "请选择要借阅的图书!", vbOKOnly + vbExclamation Exit Sub

28

End If If panduan = "是" Then MsgBox "此书已被借出!", vbOKOnly + vbExclamation Exit Sub End If frmborrowbook.Show End Sub Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer) book_num = DataGrid1.Columns(0).CellValue(DataGrid1.Bookmark) panduan = DataGrid1.Columns(7).CellValue(DataGrid1.Bookmark) End Sub Private Sub Form_Load() Dim rs_find As New ADODB.Recordset Dim sql As String sql = "select * from 图书类别" rs_find.Open sql, conn, adOpenKeyset, adLockPessimistic rs_find.MoveFirst If Not rs_find.EOF Then Do While Not rs_find.EOF Combo1.AddItem rs_find.Fields(0) rs_find.MoveNext Loop Combo1.ListIndex = 0 End If rs_find.Close End Sub 7.文件名 frmaddreaderstyle(frmaddreaderstyle.frm) 功能说明:添加读者的类别。 源代码: Option Explicit Dim rs_readerstyle As New ADODB.Recordset Private Sub Command1_Click() Dim sql As String If Trim(Text1.Text) = "" Then MsgBox "读者种类不能为空", vbOKOnly + vbExclamation, "" Text1.SetFocus Exit Sub End If If Trim(Text2.Text) = "" Then MsgBox "借书数量不能为空", vbOKOnly + vbExclamation, "" Text2.SetFocus Exit Sub End If If Trim(Text3.Text) = "" Then

29

MsgBox "借书期限不能为空", vbOKOnly + vbExclamation, "" Text3.SetFocus Exit Sub End If If Trim(Text4.Text) = "" Then MsgBox "有限期限不能为空", vbOKOnly + vbExclamation, "" Text4.SetFocus Exit Sub End If sql = "select * from 读者类别 where 种类名称='" & Text1.Text & "'" rs_readerstyle.Open sql, conn, adOpenKeyset, adLockPessimistic If rs_readerstyle.EOF Then rs_readerstyle.AddNew rs_readerstyle.Fields(0) = Trim(Text1.Text) rs_readerstyle.Fields(1) = CInt(Text2.Text) rs_readerstyle.Fields(2) = CInt(Text3.Text) rs_readerstyle.Fields(3) = CInt(Text4.Text) rs_readerstyle.Update MsgBox "添加读者类别成功!", vbOKOnly, "" rs_readerstyle.Close Text1 = "" Text2 = "" Text3 = "" Text4 = "" Else MsgBox "读者类别重复!", vbOKOnly + vbExclamation, "" Text1.SetFocus Text1.Text = "" rs_readerstyle.Close Exit Sub End If End Sub 8.文件名 frmmodifyreaderstyle(form) 功能说明:读者类别管理,可以查询、删除、修改读者的信息。 源代码: Option Explicit Dim rs_reader As New ADODB.Recordset cmdmodify.Enabled = True cmddel.Enabled = True cmdcancel.Enabled = False cmdupdate.Enabled = False End Sub Private Sub cmddel_Click() Dim answer As String

30

On Error GoTo delerror answer = MsgBox("确定要删除吗?", vbYesNo, "") If answer = vbYes Then DataGrid1.AllowDelete = True rs_reader.Delete rs_reader.Update DataGrid1.Refresh MsgBox "成功删除!", vbOKOnly + vbExclamation, "" DataGrid1.AllowDelete = False Else Exit Sub End If delerror: If Err.Number <> 0 Then MsgBox Err.Description End If End Sub Private Sub cmdmodify_Click() Dim answer As String On Error GoTo cmdmodify cmddel.Enabled = False cmdmodify.Enabled = False cmdupdate.Enabled = True cmdcancel.Enabled = True DataGrid1.AllowUpdate = True cmdmodify: If Err.Number <> 0 Then MsgBox Err.Description End If End Sub Private Sub Command5_Click() rs_reader.Update DataGrid1.Refresh End Sub Private Sub cmdupdate_Click() If Not IsNull(DataGrid1.Bookmark) Then rs_reader.Update End If cmdmodify.Enabled = True cmddel.Enabled = True cmdcancel.Enabled = False cmdupdate.Enabled = False DataGrid1.AllowUpdate = False MsgBox "保存成功!", vbOKOnly + vbExclamation, ""

31

End Sub Private Sub Command1_Click() Unload Me End Sub Private Sub Form_Load() Dim sql As String On Error GoTo loaderror sql = "select * from 读者类别" rs_reader.CursorLocation = adUseClient rs_reader.Open sql, conn, adOpenKeyset, adLockPessimistic '打开数据库 cmdupdate.Enabled = False '设定 datagrid 控件属性 DataGrid1.AllowAddNew = False '不可增加 DataGrid1.AllowDelete = False '不可删除 DataGrid1.AllowUpdate = False If userpow = "guest" Then '权限相关 Frame2.Enabled = False End If Set DataGrid1.DataSource = rs_reader 'cmdcancel.Enabled = False Exit Sub loaderror: MsgBox Err.Description End Sub Private Sub Form_Unload(Cancel As Integer) Set DataGrid1.DataSource = Nothing rs_reader.Close End Sub 9、文件名 frmaddreaderinfo(frmaddreaderinfo.frm) 功能说明:添加读者信息,包括读者的姓名、性别、读者类别、登记日期、电话号码、 工作单位、家庭地址等信息。 源代码: Option Explicit Dim rs_addreader As New ADODB.Recordset Private Sub Command1_Click() Dim sql As String If Trim(Combo1.Text) = "" Then MsgBox "请选择读者种类", vbOKOnly + vbExclamation, "" Combo1.SetFocus Exit Sub End If If Trim(Text1.Text) = "" Then MsgBox "读者姓名不能为空", vbOKOnly + vbExclamation, "" Text1.SetFocus

32

Exit Sub End If If Trim(Text2.Text) = "" Then MsgBox "读者编号不能为空", vbOKOnly + vbExclamation, "" Text2.SetFocus Exit Sub End If sql = "select * from 读者信息 where 读者编号='" & Text2.Text & "'" rs_addreader.Open sql, conn, adOpenKeyset, adLockPessimistic If rs_addreader.EOF Then rs_addreader.AddNew rs_addreader.Fields(0) = Trim(Text1.Text) rs_addreader.Fields(1) = Trim(Text2.Text) rs_addreader.Fields(2) = Trim(Combo2.Text) rs_addreader.Fields(3) = Trim(Combo1.Text) rs_addreader.Fields(4) = Trim(Text3.Text) rs_addreader.Fields(5) = Trim(Text4.Text) rs_addreader.Fields(6) = Trim(Text5.Text) rs_addreader.Fields(7) = CDate(Text6.Text) rs_addreader.Update MsgBox "添加读者信息成功!", vbOKOnly, "" rs_addreader.Close Text1 = "" Text2 = "" Text3 = "" Text4 = "" Text5 = "" Text6 = "" Else MsgBox "读者编号重复!", vbOKOnly + vbExclamation, "" Text1.SetFocus Text1.Text = "" rs_addreader.Close Exit Sub End If End Sub Private Sub Command2_Click() Unload Me End Sub Private Sub Form_Load() Combo2.AddItem "男" Combo2.AddItem "女" Dim rs_leibie As New ADODB.Recordset

33

Dim sql As String sql = "select * from 读者类别" rs_leibie.Open sql, conn, adOpenKeyset, adLockPessimistic rs_leibie.MoveFirst Do While Not rs_leibie.EOF Combo1.AddItem rs_leibie.Fields(0) rs_leibie.MoveNext Loop rs_leibie.Close End Sub 10.文件名 frmreaderinfo(frmreaderinfo,frm) 功能说明:读者信息管理,可以修改和删除读者的信息。 源代码: Option Explicit Dim rs_reader As New ADODB.Recordset Private Sub cmdcancel_Click() rs_reader.CancelUpdate DataGrid1.Refresh DataGrid1.AllowAddNew = False DataGrid1.AllowUpdate = False cmdmodify.Enabled = True cmddel.Enabled = True cmdcancel.Enabled = False cmdupdate.Enabled = False End Sub Private Sub cmddel_Click() Dim answer As String On Error GoTo delerror answer = MsgBox("确定要删除吗?", vbYesNo, "") If answer = vbYes Then DataGrid1.AllowDelete = True rs_reader.Delete rs_reader.Update DataGrid1.Refresh MsgBox "成功删除!", vbOKOnly + vbExclamation, "" DataGrid1.AllowDelete = False Else Exit Sub End If delerror: If Err.Number <> 0 Then MsgBox Err.Description End If End Sub

34

Private Sub cmdmodify_Click() Dim answer As String On Error GoTo cmdmodify cmddel.Enabled = False cmdmodify.Enabled = False cmdupdate.Enabled = True cmdcancel.Enabled = True DataGrid1.AllowUpdate = True cmdmodify: If Err.Number <> 0 Then MsgBox Err.Description End If End Sub Private Sub Command5_Click() rs_reader.Update DataGrid1.Refresh End Sub Private Sub cmdupdate_Click() If Not IsNull(DataGrid1.Bookmark) Then rs_reader.Update End If cmdmodify.Enabled = True cmddel.Enabled = True cmdcancel.Enabled = False cmdupdate.Enabled = False DataGrid1.AllowUpdate = False MsgBox "保存成功!", vbOKOnly + vbExclamation, "" End Sub Private Sub Command1_Click() Unload Me End Sub Private Sub Form_Load() Dim sql As String On Error GoTo loaderror sql = "select * from 读者信息" rs_reader.CursorLocation = adUseClient rs_reader.Open sql, conn, adOpenKeyset, adLockPessimistic cmdupdate.Enabled = False '设定 datagrid 控件属性 DataGrid1.AllowAddNew = False DataGrid1.AllowDelete = False DataGrid1.AllowUpdate = False If userpow = "guest" Then Private Sub Form_Unload(Cancel As Integer)

'打开数据库

'不可增加 '不可删除 '权限相关

35

Set DataGrid1.DataSource = Nothing rs_reader.Close End Sub 11.文件名 frmfindreader(frmfindreader.frm) 功能说明:查询读者信息,可以选择性的输入读者姓名、读者编号、读者种类来查询 读者的详细信息。 源代码: Option Explicit Private Sub Command1_Click() Dim rs_findreader As New ADODB.Recordset Dim sql As String If Check1.Value = vbChecked Then sql = "读者编号='" & Trim(Text1.Text & " ") & "'" End If If Check2.Value = vbChecked Then If Trim(sql) = "" Then sql = "读者姓名='" & Trim(Text2.Text & " ") & "'" Else sql = sql & "and 读者姓名='" & Trim(Text2.Text & " ") & "'" End If End If If Check3.Value = vbChecked Then If Trim(sql) = "" Then sql = "读者类别='" & Trim(Combo1.Text & " ") & "'" Else sql = sql & "and 读者类别='" & Trim(Combo1.Text & " ") & "'" End If End If sql = "select * from 读者信息 where " & sql rs_findreader.CursorLocation = adUseClient rs_findreader.Open sql, conn, adOpenKeyset, adLockPessimistic DataGrid1.AllowAddNew = False DataGrid1.AllowDelete = False DataGrid1.AllowUpdate = False Set DataGrid1.DataSource = rs_findreader End Sub Private Sub Command2_Click() Unload Me End Sub Private Sub Form_Load() Dim rs_find As New ADODB.Recordset Dim sql As String sql = "select * from 读者类别" rs_find.Open sql, conn, adOpenKeyset, adLockPessimistic

36

If Not rs_find.EOF Then Do While Not rs_find.EOF Combo1.AddItem rs_find.Fields(0) rs_find.MoveNext Loop Combo1.ListIndex = 0 End If rs_find.Close End Sub 12.文件名 frmfindborrowinfo(frmfindborrowinfo.frm) 功能说明:查询借书信息,可以查询到已借出的书、未借出的图书。 源代码: Option Explicit Private Sub Command1_Click() Dim sql As String Dim rs_find As New ADODB.Recordset If Option1.Value = True Then sql = "select * from 书籍信息 where 是否被借出='是'" End If If Option2.Value = True Then sql = "select * from 书籍信息 where 是否被借出='否'" End If If Option3.Value = True Then sql = "select * from 借阅信息 where 读者姓名='" & Text1.Text & "'" End If rs_find.CursorLocation = adUseClient rs_find.Open sql, conn, adOpenKeyset, adLockPessimistic DataGrid1.AllowAddNew = False DataGrid1.AllowDelete = False DataGrid1.AllowUpdate = False Set DataGrid1.DataSource = rs_find End Sub 13.文件名 frmbackbookinfo(frmbackbookinfo.frm) 功能说明:添加还书信息,可以通过读者编号、读者姓名、图书编号、图书名称等查 询到已借出的书。 源代码: Option Explicit Dim findform As Boolean Private Sub Combo1_Click() Combo2.ListIndex = Combo1.ListIndex End Sub Private Sub Command1_Click() Dim rs_reader As New ADODB.Recordset Dim sql As String

37

findform = True sql = "select * from 借阅信息 where 读者姓名='" & Combo2.Text & "'" rs_reader.CursorLocation = adUseClient rs_reader.Open sql, conn, adOpenKeyset, adLockPessimistic Set DataGrid1.DataSource = rs_reader DataGrid1.AllowAddNew = False DataGrid1.AllowDelete = False DataGrid1.AllowUpdate = False End Sub Private Sub Command2_Click() Dim rs_book As New ADODB.Recordset Dim sql As String findform = False sql = "select * from 借阅信息 where 书籍编号='" & Combo3.Text & "'" rs_book.CursorLocation = adUseClient rs_book.Open sql, conn, adOpenKeyset, adLockPessimistic Set DataGrid1.DataSource = rs_book DataGrid1.AllowAddNew = False DataGrid1.AllowDelete = False DataGrid1.AllowUpdate = False End Sub Private Sub Command3_Click() Dim book_num As String Dim reader_num As String Dim answer As String Dim rs_back As New ADODB.Recordset Dim sql As String On Error GoTo delerror book_num = DataGrid1.Columns(3).CellValue(DataGrid1.Bookmark) reader_num = DataGrid1.Columns(1).CellValue(DataGrid1.Bookmark) answer = MsgBox("确定要还这本书吗?", vbYesNo, "") If answer = vbYes Then sql = "select * from 借阅信息 where 书籍编号='" & book_num & "'" rs_back.CursorLocation = adUseClient rs_back.Open sql, conn, adOpenKeyset, adLockPessimistic rs_back.Delete rs_back.Update rs_back.Close sql = "select * from 书籍信息 where 书籍编号='" & book_num & "'" rs_back.CursorLocation = adUseClient rs_back.Open sql, conn, adOpenKeyset, adLockPessimistic rs_back.Fields(7) = "否" rs_back.Update rs_back.Close

38

sql = "select * from 读者信息 where 读者编号='" & reader_num & "'" rs_back.CursorLocation = adUseClient rs_back.Open sql, conn, adOpenKeyset, adLockPessimistic rs_back.Fields(8) = rs_back.Fields(8) - 1 rs_back.Update rs_back.Close If findform = True Then Command1_Click Else Command2_Click End If MsgBox "成功删除!", vbOKOnly + vbExclamation, "" DataGrid1.AllowDelete = False Else Exit Sub End If delerror: If Err.Number <> 0 Then MsgBox Err.Description End If rs_reader.Close sql = "select * from 借阅信息" rs_book.CursorLocation = adUseClient rs_book.Open sql, conn, adOpenKeyset, adLockPessimistic If Not rs_book.EOF Then Do While Not rs_book.EOF Combo3.AddItem rs_book.Fields(3) Combo4.AddItem rs_book.Fields(4) rs_book.MoveNext Loop End If rs_book.Close End Sub 第七章:系统测试 (一)测试概述: WINDOWS 系统: 在系统开发过程中采用了多种措施保证软件质量, 但是实际开发过程中还是不可避免地 会产生差错,系统中通常可能隐藏着错误和缺陷,未经周密测试的系统投入运行,将会造成 难以想象的后果, 因此系统测试是系统开发过程中为保证软件质量必须进行的工作。 大量统 计资料表明,系统测试的工作量往往占系统开发总工作量的 40%以上。因此,我们必须重 视测试工作。 由于程序中隐藏的缺陷只在特定的环境中才有可能显露, 系统缺陷通常是由于对某些特 定情况考虑不周造成的。 因此测试不是为了表明程序正确: 成功的测试也不是没有发现错误 的测试。有意义的软件测试应该是从“破坏“软件系统的角度出发,精心设计最有可能暴露

39

程序系统缺陷的测试方案。 因此软件测试的目标应该是以尽可能少的代价和时间找出软件系 统中潜在的错误和缺陷。 系统测试是管理信息系统开发期间中一个十分重要而漫长的阶段。 其重要性体现在它是保证 系统质量与可靠性的最后关口。 且对整个系统开发过程包括系统分析、 系统设计和系统实现 的最终审查 调试过程分为三个阶段:分调、联调、总调。 1.分调也称模块程序调试, 是调试工作的基础工作, 目标是发现并纠正程序设计阶段产 生的错误。具体做法是对每一个模块进行调试。调试时着重检查了如下几方面: (1)模块运行是否正常、无死机。包括检查有无语法错误(例如打错语句、语句不配对 等) 、逻辑错误(例如文件或变量找不到、变量类型错误等)和流程模块错误(例如模块内 的功能调度、模块的进入与退出失败等) 。 (2) 模块的功能是否符合设计要求。 包括检查功能有无多余或丢失, 功能是否准确无误, 算法是否正确,格式是否合理等。 (3)模块的技术性能如何。包括检查对输入的响应,数据检索、统计与输出的速度等。 (4) 界面是否友好。包括检查画面是否清晰美观,对话是否适度,操作是否方便。 2. 联调是指子系统中各程序模块之间的联合调试, 目的是发现并纠正系统设计过程中产 生的错误。具体做法逐个子系统进行调试。调试时特别检查了如下几方面: (1)子系统内模块功能的调度是否正确。包括模块间的进退是否自如有无问题等。 (2)子系统的功能是否符合设计的要求。包括功能是否齐全无错漏。 (3)子系统内的数据组织是否符合功能的需要。包括基本数据项是否完整,数据文件间 的关系是否正确,数据接口设计是否合理等。 3. 总调是对整个程序系统以及人工过程与环境的总调试, 目标是发现并纠正系统分析阶 段产生的错误。 具体做法是对由各个子系统结合而成的程序系统以及配合系统运行而所需的 人工过程或操作环境(例如数据采集、录入操作和设置等)进行统一的综合调试。总调的重 点应检查了如下几方面: (1)系统的整体调度功能是否正常。包括主程序与各级菜单之间的进入与返回,口令输 入等是否都能正确执行。 (2) 系统的功能是否符合系统分析和总体设计的要求。 包括系统的功能和结构有无错漏, 功能的分配与模块的分解是否合理等。 (3)系统的数据组织与存储是否符合设计的要求。包括检查数据的总容量,文件或数据库 与子系统之间的数据联系等。 调试的关键是发现错误,因为只要发现错误,纠正就不难做到。为了有效地发现错误, 我采用了两种调试方法:静态调试法、动态调试法 (1) 静态调试法 对文档、程序、数据等资料进行审核,找出其中的错误。这种方法不用运行程序,完全靠调 试从文字资料的字里行间中进行检查,检查出其中最基本的错误进行改正。 (2) 动态调试法: 通过程序系统的运行,在程序的“动态”执行中检查和发现错误。我在正确掌握程序的功能 要求的情况下,采用该测试犯法对程序进行了一系列的调整。 我采用了静态调试和动态调试相结合的方法,经历了分调、联调和总调阶段,运用适当的测 试用例,对系统进行了测试。经过系统测试,程序运行中出现的一些问题和难点在老师的大 力帮助下已经一一得到解决,程序基本上实现了图书的管理要求。 (二)测试方法 一般来说,对程序测试有两种测试方法:如果已经知道了软件系统应具有的功能,可通过

40

测试来看每个功能是否都能正常使用; 如果知道程序的内部工作过程, 可以通过测试来检测 程序每步是否按照规格说明书的规定正常运行。 前一种方法称为黑盒测试, 后一种方法称为 白盒测试。黑盒测试又成为功能测试,白盒测试又称为结构测试。 因为次软件较小,而且时间较短,我采用的是模块测试方法。 (三)测试方案 添加系统用户 输 入 的 信 息 预 期 结 果 输 入 结 果 登陆 借书 还书

用户名=小张/ 密码=aa 确认密码=aa

用户名= 张强/密 码=aa

选择查询图 书的方式后 点确定

按读者信息或者图书信息查询要还的 书,点确定

出现“添加用 户成功”的提 示信息 出现“添加用 户成功”的提 示信息

进入编目 模块

弹出“借书” 弹出 “确定要还这本书吗?” 的窗口提 窗口 示

进入编目 模块

弹出“借书” 出现 “确定要还这本书吗?” 的提示信 窗口 息 总结

经过几个月的设计和开发,学校图书管理系统基本开发完毕。其功能基本符合用户需求。 对于数据的一致性的问题也通过程序进行了有效的解决。但是该系统还有许多不尽如人意的 地方,在今后有待进一步改善。通过这次毕业设计真切地体会到毕业设计的目的并不止于自 己单纯任务的完成,而在于学习新的知识并掌握具体的方法,如何具体使用和具体应用你所 学所用的语言。从而获得一种本领:就是融会贯通各种语言。回首整个开发设计过程,我学 到了很多书本上学不到的东西。比如以前开发软件的时候,一般做的就是编码工作,实现比 较简单的功能。但是这次毕业设计,我要负责图书管理系统的整个开发过程,包括系统可行 性分析、系统需求分析、系统概要设计、系统详细设计等方面的工作。在每个设计阶段我都 能学到一些新知识,对我的动手能力提高很大。在整个毕业设计过程中,我基本上完成了图 书管理系统各个模块的功能,达到了毕业设计的要求。页面设计还有进一步改善的地方,我 会在今后的学习工作中着重加强这方面的锻炼。 在以后的工作中, 还会遇到很多类似的情况, 此次毕业设计为我以后的工作积累了很多 宝贵的经验。这几个月中,从接到设计课题到具体设计再到完成系统开发,是一个不断地遇 到问题与解决问题的过程。其中包括:分析各种需求、完善各种功能、增加必要环节、对各 部分及整体进行检测与维护。 当然仍存在许多问题不能解决地尽善尽美, 还需不断地继续与 探索。在结束设计的同时也感到了劳动的艰辛与劳动成果的来之不易,明白了毕业设计是给 自己提供了一个锻炼、升华、提高、完善的机会。 主要研究内容及成果 介绍学校图书管理系统根据实际的需求及发展情况进行设计与开发情况,及介绍本系统 设计应用平台及技术支持讲述本系统设计理念及具体设计情况,讲解本系统具体制作方法及 核心代码。开发的图书管理系统基本上能完成预期的目标,大致能满足读者和管理员的要求。 不过也有一些不足之处需要好好改进。
41

今后进一步研究方向 〈一〉对页面进行美化,使界面变的更美观一点。 〈二〉 增加数据转换接口,使得本系统能与学校图书管理系统数据库进行无缝连接。 〈三〉添加系统功能,本系统只有让读者知道还书的期限,当图书超期而读者也没注意要自 己所借图书超期了,就无法及时的还书了,因此增加图书到期催还功能,能让读者在自己信 息查询时候就能看到系统对自己所借图书的超期提醒以方便读者的图书归还。 致谢 为期三年的大学专科的学习生活即将结束,在此,感谢我的家人,是他们的支持和鼓励 使我有了三年美好的大学时光。 我要感谢所有曾经教导过我的老师和关心过我的同学, 感谢 他们在我学习成长过程中所给予我的帮助。 这次毕业设计能成功完成, 要特别感谢我的指导老师许德武老师, 感谢许老师对我的作 品提出的建议和指导。在整个设计阶段,许老师在我有困难的时候细心为我指导,给了我很 大的帮助。在论文完成之际,谨向我尊敬的导师表示诚挚的谢意,感谢许老师对我的关心和 帮助。在整个系统的开发过程中,同学和朋友给了我很大的帮助。感谢给予我帮助的同学和 朋友们,他们在我的整个设计过程中给我提供了大量的技术指导和实践机会。 衷心的感谢你们! 参考文献:
[1] 王小铭,信息管理系统及其开发技术[M].电子工业出版社,1997.1。 [2] 刘遵仁、于忠清,SQL Server 中文版基础培训教程[M].人民邮电出版社,2002.9。[3] 刘韬 骆 娟 何旭洪 visual basic 6.0 数据库系统开发实例[M]. 人民邮电出版社 [4] 张宇明,学校图书馆管理信息系统的设计与实现(硕士学位论文) 吉林大学 2008 [5] 刘圣才 李春葆 visual basic 6.0 程序设计题典[M]. 清华大学出版社 人民邮电出饭社 [6] 林永 张乐强 visual basic 6.0 用户编程手册[M]

[7] 史嘉权,数据库系统教程[M],清华大学出版社,2001.8。 [8]. Microsoft 公司主编, SQL Server 2000 数据库程序设计[M], 高等教育出版社,2002.7。 [9] 王珊,萨师煊.数据库系统概论(第四版)[M].高等教育出版社

42


相关文章:
学校图书管理系统软件开发
基于这一 点,开发学校图书管理软件。 学校图书管理软件,是以高校的管理方式为实例而设计的一种实用型管理系统。本系 统最大的特点是通用性、简单操作性,适用于...
基于BS模式的学校图书管理系统设计与实现
基于BS模式的学校图书管理系统设计与实现_企业管理_经管营销_专业资料。学号 分类...基于 b/s 模式进行开发图书管理系统,首先实现前台页面的开发,之后进行后台数据库...
学校图书管理系统的设计
学校图书管理系统的设计_学习总结_总结/汇报_实用文档。学校图书管理系统论文毕业...简单易用、完全面向对象、具有平台无关性且安全可靠的主要面向 Internet 的开发...
图书管理系统的设计开发
图书管理系统的设计开发_计算机软件及应用_IT/计算机_专业资料。论文本科...本系统的设计主要用于管理学校图书馆的信息, 希望通过该系统实现学校图 书馆的...
学校图书管理系统的设计与开发
湖南广播电视大学制 学校图书管理系统的设计与开发 易丹【摘要】 摘要】 :图书管理系统是智能办公系统(IOA)的重要组成部分,因此,图书管理系 : 统也以方便、 快捷...
高校图书馆管理系统数据库设计
本文通过作者设计和开发一个中小型高校图书馆管理系统的实践,阐述 了高校图书管理...每个学校都有图书馆,最初 由于图书数量和种类较少,人工手动管理比较方便和灵活...
图书管理系统的设计和开发 —王富岩
2 图书管理系统需求分析 2.1 应用需求分析图书馆管理系统开发的总的设计目标是实现图书管理的系统化、规范化和自动 化,实现对图书资料的集中统一的管理。本系统...
简单图书管理系统的设计与开发
简单图书管理系统的设计与开发_工学_高等教育_教育专区。武汉理工大学华夏学院 课程...让我在即将离开学校进入社会 之前有了一定的资本,提高了我与人沟通的能力。 ...
基于JAVA的学校图书馆管理系统的设计与实现
基于JAVA 的学校图书管理系统的设计与实现 学校代码:10410 序号: 20051174 本科毕业论文 谁有个人图书管理系统源代码 JAVA 版本的_百度知道 1 个回答 - 最新...
学校图书管理系统的开发
学校图书管理系统的开发_销售/营销_经管营销_专业资料 暂无评价|0人阅读|0次下载学校图书管理系统的开发_销售/营销_经管营销_专业资料。大专生毕业设计(论文) (...
更多相关标签: