图书管理系统ER图-流程图-功能结构图-源代码第一章 前言 11.1问题的提出 11.2本文研究路线 2第二章 管理信息系统研究概述 32.1管理信息系统的发展历史 32.2管理信息系统的特点 42.3管理信息系统的开发过程 5第三章 图书管理系统分析与设计 53.1图书管理系统的用户需求简介 53.2图书管理系统的要求 63.3图书管理系统功能描述 73.4系统功能模块图 83.5系统开发环境简介 103.6数据库设计 113.6.1数据库介绍 113.6.2使用ADO 数据控件访问数据库 123.6.3 数据库需求分析 133.6.4数据库概念结构设计 143.7数据词典分析 163.7.1读者信息表 163.7.2图书信息表 163.7.3借阅信息表 173.8数据流程图 17第4章 图书管理系统的功能实现 194.1登陆界面编码设计 194.2读者管理界面编码设计 214.3图书管理界面编码设计 224.4借阅信息管理界面编码设计 244.5 关键技术 254.6系统测试 25第5章 结论与体会 124
VB+Access图书管理系统
第一章 前言
1.1问题的提出
在当今知识大爆炸的时代,图书作为信息的一种载体,仍是人们获得知识的一种重要途径,因而作为图书管理与借阅的图书馆,它的运行情况则关系到知识的传播速度问题。以往旧的图书管理模式完全是手工操作,从新书的购买、编码、入库、上架,到借阅、续借、归还、查询,无一不是人工处理,需要大量的劳动力与工作量,而且由于人为的原因造成一些错误,也是再所难免的。当读者想要借阅一本书时,首先要查询大量的卡片,而且要有一定的图书管理知识,才能很快的查到。自己想要的图书,在借阅过程中还要填写许多相关的卡片,使得图书的管理效率低下,图书流通速度较慢,因而从一定程度上也影响了知识的传播速度。
随着人类社会的发展,人类对知识的需求也不断地增长。在这种形势下,书籍就渐渐地成为人们获取并增长知识的主要途径,而图书馆就自然而然地在人们的生活中占据了一定的位置。
学校作为教书育人的中坚力量,图书馆的作用更是举足轻重。学校图书馆要做到安全顺畅的运转,为广大同学提供良好的服务,就必须有一套完善健全的运行管理机制。联系实际,考虑各层次学校的情况,软件本身要求易学,界面友好,容易掌握,可以较简单方便的管理各种图书信息;硬件的配置要求不能太高,这样可以很好的适应当前的学校图书馆。系统的总体特点应该是方便、简单、实用。
关键字: Access数据库 VB可视化编程 ADO控件
1.2本文研究路线
由于自己是第一次做系统,对于系统缺乏经验的情况,用最基本方法法可以立足全局,步步为营,减少返工,有利于提高开发质量,加快工程进度。以以前的管理系统我样板可以加速系统开发中用户需求的获得,有助于解决规模不大但不确定的因素较多的管理决策问题,有助于提高系统开发的效率和有效性。根据面临的实际情况,综合考虑上述两种开发方法的特点,在图书管理系统开发过程中采取参考其他的图书管理系统的设计思想再加入自己的部分思想,形成自己的图书管理系统。
首先在管理上,图书管理是一项比较繁琐的工作,不但需要对众多的图书信息进行编目,而且还包括对各类图书类型信息进行处理和查询。如果通过计算机进行工作,并通过计算机进行一系列的借阅操作,显然快捷和方便。
其次技术上,在《可视化编程设计》和《数据库》课程的学习下,对系统的开发打下了基础。
根据实际情况,我们使用ADO控件少量代价快速地构造一个可执行的软件系统模型,使用户和开发人员可以较快地确定需求,然后采用尽可能适用开发方式,对系统模型作连续的精化,将系统需具备的性质逐渐增加上去,直到所有的性质全部满足。此时模块也发展成为最终产品了
图书管理系统VB+Access
第二章 管理信息系统研究概述
2.1管理信息系统的发展历史
科学技术的进步和生产的发展使人类知识总量的增长不断加快,生产社会化趋势的扩大和社会对产品需求的多样性使得组织在营运活动中所涉及的内部和外部信息量迅速地膨胀起来。面对激烈的市场竞争,人们对这些信息进行收集、加工、传递等过程的时间性和准确性提出了更高的要求。这一切使得传统的手工作业为基础的信息系统陷入了机构日益庞大,效率日益降低的困境。电子计算机的出现为摆脱这种困境找到了出路。计算机用于管理信息处理的突出优点是迅速、准确、可靠、具有很大的存储能力,适应于管理信息量大、面宽的特点,适合于管理信息处理及时、准确的要求。
管理信息系统(MIS,Management Information System)是一个由人和计算机等组成的能够提供信息以支持一个组织机构内部的作业、管理、分析和决策职能的系统。管理信息系统利用计算机的硬件和软件,手工规程、分析、计划、控制和决策用的模型,以及数据库对信息进行收集、传输、加工、保存和使用。因此,管理信息系统是一个信息处理系统。
管理信息系统科学依赖于管理科学和技术科学的发展而形成的。管理信息系统科学的三要素是系统的观点,数学的方法以及计算机的应用。这三要素充分结合,相互利用,从而使管理信息系统形成了一个有着鲜明特色的边缘学科。
2.2管理信息系统的特点
管理信息系统的结构是指管理信息系统各个组成部分之间相互关系的总和,它是信息收集和加工的体系。
管理信息系统的开发是一项应用软件工程。为了使开发工作顺利进行,使开发出来的系统达到实用可靠、高效先进的目的,系统开发一般应遵循如下原则。
1. 实用性原则
实用性是系统开发所要遵循的最重要的原则,系统必须满足用户管理上的要求,即保证系统功能的正确性又方便实用,需要友好的用户界面、灵活的功能调度和完善的系统维护措施。为此,系统的开发必须采用成熟的技术,认真细致地作好功能和数据的分析,并充分利用代码技术、菜单技术及人机交互技术,力求向用户提供良好的环境与信心保证。
2. 系统的原则
管理信息系统是组织实体内部进行综合信息管理的软件系统,有着鲜明的整体性、综合性、层次结构性和目的性。它的整体功能是由许多子功能的有序组合而成的,与管理活动和组织职能相互联系、相互协调。系统各子功能处理的数据既独立又相互关联,构成一个完整而又共享的数据体系。因此,在管理信息系统的开发过程中,必须十分注重其功能和数据上的整体性、系统性,这就是我们所强调的系统的原则。
3. 符合软件工程规范的原则
管理信息系统的开发是一项复杂的应用软件工程,应该按照软件工程的理论、方法和规范去组织和实施。无论采用的是那一种开发方法,都必须注重软件表现工具的运用、文档资料的整理、阶段性评审,以及重视项目管理。
2.3管理信息系统的开发过程
图书馆现行的图书管理方法是完全以人工的方式进行的图书的编目、典藏、查询、流通等工作。图书馆管理系统基于计算机技术,实现编目、典藏、流通、读者、查询、系统维护功能。系统对整体功能进行完善。系统对子系统进行调整和划分,编目包括图书/期刊简易编目;典藏可以进行新增、修改及删除馆藏等操作;流通实现借书、还书、续借等各项操作;读者实现对读者资料的各项操作;查询按读者个人借阅情况、编目、馆藏及分类进行查询;系统维护实现对操作员的管理与维护、系统参数维护、操作员登录密码的修改等。
图书管理系统ER图-流程图-功能结构图-源代码
第三章 图书管理系统分析与设计
3.1图书管理系统的用户需求简介
系统的调查与分析,简称系统分析,是管理信息系统开发工作的第一个阶段,也是最重要的一个环节。系统分析在整个系统开发过程中是解决系统是“干什么”的,逐步明确系统的目标,系统的界面以及系统的基本功能等。为下一阶段进行物理方案设计,解决“怎么干”提供依据。
这个阶段的主要活动有:系统初步调查、可行性研究、系统详细调查、新系统逻辑方案的提出。
系统的初步调查是系统分析的第一项活动,也是整个系统开发的第一项活动。初步调查是在“图书馆”的最高层进行的,系统分析员站在高层观察“图书馆”的现状,分析系统的运营情况。初步调查主要由两部分组成:一般调查和信息需求调查。前者包括了解“图书馆”的内部环境和管理目标,调查分析“图书馆”的业务流程,明确进行改造的需求以及确定系统目标和主要功能;后者是初步调查的主要内容,调查组织系统的工作职责和各职能部门所要处理的数据。
用户的需求可分为三个方面:一方面是图书馆工作人员通过图书管理系统来管理各类图书,使得图书馆的各项工作能够有序地进行,从而满足学生的需求;二方面是学生们能通过该系统来查询图书馆中的各类图书,来确定自已需要的书籍的借阅情况,为借阅做好准备;三方面是对图书馆数据库管理的需求,数据库在系统中扮演着极其重要的角色,所以能对系统数据库进行安全和全面地管理也成为了图书管理者的一个重要需求。
3.2图书管理系统的要求
在软、硬件方面对系统的需求,软件要求易学,界面友好,容易掌握,可以很简单方便的管理各种图书信息。硬件需求的配置要求不能太高,这样可以很好的适应当前的学校图书管理工作。
在编目图书这一部分,主要有以下方面的要求:
1,编目前先查看书库中是否有与未编目书同样的图书;
2,选择已编目书的分类号给要编目的新图书;
3,若书库中没有与新书相同的图书,则由编目给图书分类并录入图书分类号。
4,录入新图书类编号;
在流通部分的借书这一方面,主要有以下方面的要求:
1,查看学生的个人借阅情况,看是否已经借满;
2,进行借书登记,同步修改相关信息。
在流通部分的还书这一方面,主要有以下方面的要求:
1,学生还书时,核对其图书的有效性;
2,进行还书登记,同步修改相关信息。
在流通部分的查书这一方面:
用户即就是学生,所提出得的需求比较集中:学生可以根据各种不同的查询途径来对书库图书进行全面的查询。
此外,系统的安全性等其他方面还有以下的要求:
1,系统的所有数据进行统一的管理,要保证其安全性;
2,有专门的人员对数据库进行更新和维护;
3,设计不同用户的操作权限和登陆方法。
3.3图书管理系统功能描述
根据图书管理的功能要求,结合学校图书管理的实际情况,系统分成以下若干模块:编目、典藏、流通、读者、查询、系统维护。各模块完成如下功能:
编目:实现图书/期刊的简易编目与维护。其中“图书/期刊简易编目”作业的作用是新增简单编目,可简单至只需要入书刊名、作者、日期等。“图书/期刊简易维护作业”的作用是处理图书和期刊的编目信息,在这里可以查询书目、修改书目和进行馆藏维护等工作。
典藏:实现对馆藏资料的管理和维护。在“典藏资料管理”作业中操作员可以进行新增、修改及删除馆藏等操作。
流通:实现图书流通的各项操作。流通界面是图书馆对外的窗口,馆员可在“图书流通”作业中按读者学号查询读者相关资料及其借书、还书等情况,并进行借书、还书等各项操作。
读者:实现对读者资料的各项操作。在“读者管理”作业中可以按照各种条件来查询读者相关资料,并进行新增读者、修改读者资料、删除读者等各项操作。
查询:实现对读者个人借阅情况查询、编目查询、馆藏查询及分类查询。“读者个人借阅查询”、“编目查询”和“馆藏查询”作业可以按照所选择或输入的多项查询条件。“分类查询”作业则是按照图书分类法,从大类直到细类逐层进行查询。
系统维护:实现对操作员的管理与维护、系统参数维护、操作员登录密码的修改等。其中“操作员管理”作业可对系统操作人员进行管理与维护,包括对组员的增加与删除。“系统参数维护”作业可对系统内使用到的各种数据、参数等进行维护,例如管理员可以编辑或修改“读者身份”、“借阅规则”等。“修改登录密码”用来修改操作员的登录密码
VB+Access图书管理系统
3.4系统功能模块图
在这一阶段中我们将根据系统调查与分析阶段的结果,进行系统的设计。系统设计包括两个方面的工作:首先是系统总体结构的设计,即把系统的功能分解成许多基本的功能模块,确定它们之间的联系,规定它们的功能和处理流程;其次是具体的物理设计,即对实现系统的各项功能,选择具体的技术手段和处理方式。因此,如果说系统研制人员在系统调查与分析阶段的任务是在逻辑上弄清楚系统“作什么”的话,在系统设计阶段的任务则是在物理上确定系统“如何去做”。
系统设计包括如下工作内容:
1. 系统的总体设计
(1) 系统功能结构的划分
(2) 系统界面设置
2. 具体物理设计
(1) 代码设计
(2) 输出设计
(3) 输入设计
从图书管理系统的整体出发,根据系统的目标将其分解成一系列子系统,各个子系统既相互配合,又各自具有一定的独立功能,共同实现整个系统的目标。上层的子系统其功能越笼统、越抽象,越下层的子系统其功能越简单、越优越,越具体。对于每一个子系统或系统模块,都应该尽量使其相对独立,要尽可能减少各个子系统之间的联系。
系统划分的结果最终为一张分层的树型结构图——图书管理系统的功能结构图如3—1所示。若图片无法显示请联系QQ3710167,图书管理系统免费,转发请注明源于www.lwfree.cn
3.5系统开发环境简介
程序设计是系统实施工作中工作量最大、耗时最多的工作,是开发管理信息系统的主要环节。正确的程序设计思想和良好的方法学指导是非常重要的。传统的结构化程序设计把一个大程序分解成具有层次结构的若干个模块,每层模块在分解成下一层子模块,如此自顶向下,逐步细分,就可以把复杂的大模块分解成功能单一的小模块。在这些小模块完成设计之后,再按其逻辑结构,层层向上组织起来,大的程序就得到了解决。从而使程序设计更加符合人类对现实世界的理解和描述,大大提高了程序设计的能力。
基于上述特点,决定了采用结构化程序设计和面向对象程序设计相结合的方法,以Microsoft Visual Basic 6.0 为开发工具进行程序设计,不仅实现了系统各模块的功能,而且具有直观友好的用户界面,使用户操作简单、方便、快捷,也大大减轻了管理员的工作量,提高了图书管理的自动化程度。
Visual Basic具有强大的数据库管理功能,利用数据控件和数据库管理窗口,可以直接建立或处理Microsoft Access格式的数据库,并提供了强大的数据存储和检索功能。同时,Visual Basic还能直接编辑和访问其他外部数据库。
3.6数据库设计
3.6.1数据库介绍
数据库是一种存储数据并对数据进行操作的工具。数据库的作用在于组织和表达信息,简而言之,数据库就是信息的集合。计算机的数据库可以分为两类:非关系数据库和关系数据库。关系数据库中包含了多个数据表的信息,数据库含有各个不同部分的术语,如记录、域等。
Access2000 就是关系数据库开发工具,数据库能汇集各种信息以供查询、存储和检索。Access 的优点在于它能使用数据表示图或自定义窗体收集信息。数据表示图提供了一种类似于 Excel 的电子表格,可以使数据库一目了然。另外,Access 允许创建自定义报表用于输出数据库中的信息。Access也提供了数据存储库,可以使用桌面数据库文件把数据库文件置于网络文件服务器,与其他网络用户共享数据库。Access 是一种关系数据库工具,关系数据库是已开发的最通用的数据库之一。如上所述,Access 作为关系数据库开发,具备了许多优点,可以在一个数据包中同时拥有桌面数据库的便利和关系数据库的强大功能。
数据库表:
字 段 名
数 据 类 型
数 据 长 度
种类名称
文本型(char)
50
借书数量
数字(INT)
10
借书期限
数字(INT)
10
有效期限
数字(INT)
10
系统管理:
字 段 名
数 据 类 型
数 据 长 度
用户名
文本型(char)
50
密码
文本型(char)
50
3.6.2使用ADO 数据控件访问数据库
ADO是ActiveX Data Objects 的缩写,提供对各种数据库访问的标准接口。
1、如何用ADO存取数据:
在实际编程过程中使用ADO的一个典型的存取数据的步骤为:
a 连接数据源
b 打开记录集对象
c 使用记录集
d 断开连接
2、关闭所有的数据连接
如果在代码中使用了数据控件如 ADO, 在退出时应该关闭所有打开的 recordsource, database 。 虽然对象能自动注销, 但是数据连接不会马上断开, 可能会导致一些内存不能被系统重新分配。
Visual Basic提供了与底层数据库系统紧密的连接。Visual Basic 支持不同的关系数据库管理系统并充分发挥每一个数据库的特长。生成独立应用或脱离服务器运行的服务以上的应用,Visual Basic连接数据库的方式有两种:
1.通过使用Visual Basic的 ADO控件。
2.通过使用由Visual Basic提供的专用的直接与数据库相连的接口。
图书管理系统ER图-流程图-功能结构图-源代码
数据库需求分析
数据存储设计的任务是根据系统功能的要求(特别是数据存储的要求),决定数据的组织形式和存储方法,以便获得最好的文件结构和文件组织形式。数据存储设计主要是进行数据库设计。
(1) 规划阶段
确定开发的总目标,给出计划开发的软件系统的功能、性能、可靠性以及接等方面的设想。
(2) 需求分析阶段
认真细致地了解用户对数据的加工要求,确定系统的功能与边界。本阶段的最终结果,提供一个可作为设计基础的系统说明书,包括对软硬件环境的要求和一整套完善的数据流程图。
(3) 设计阶段
把需求分析阶段所确定的功能细化,主要工作是概念设计阶段、逻辑设计阶段、物理设计阶段,然后,对每个阶段内部设计详细的流程。
(4) 程序编制阶段
以一种或几种特定的程序设计语言表达上一阶段确定的各模块控制流程。程序编制时应遵循结构化程序设计方法。
(5) 调试阶段
对已编好的程序进行单元调试(分调),整体调试(联调)和系统测试(验收)。
(6) 运行和维护阶段
这是整个设计周期最长的阶段,其工作重点是收集和记录系统实际运行的数据。在运行中,必须保持数据库的完整性,必须有效的处理数据故障和进行数据库恢复。同时解决开发过程的遗留问题,改正错误进行功能完善。
3.6.4数据库概念结构设计
数据库设计是要在一个给定的应用环境中通过合理的逻辑设计和有效的物理设计来构造较优的数据库模式,建立数据库及其应用系统,满足用户的各种信息需求。从数据应用系统和开发的全过程来考虑,数据库的设计可分为四个阶段:需求分析、概念设计、逻辑设计、物理设计。需求分析阶段综合用户的需求;在概念设计阶段形成独立于数据库管理系统的概念模式,形成数据库的逻辑模式。然后根据用户的需求,在基本表的基础上建立必要的视图形成数据的外模式。在物理设计阶段根据系统数据库的特点和处理要求,进行物理存储安排,建立索引形成数据库内模式。
逻辑设计的任务就是把概念设计阶段的E—R图转换为系统支持的数据模型(如关系模型),形成数据库的逻辑模式。转化时要解决的问题就是如何将实体间的联系转化为关系模型:
对于实体,将每个实体转换为一个关系,实体的属性即为关系的属性,实体的码即为关系的码。
若实体间的联系是1 :1,可以在两个实体转换成两个关系中任意一个关系的属性中加入另一个关系的码。
若实体间的联系是m :n,则将联系转换为关系。关系的属性为诸实体的码加上联系具有的属性,而关系的码为诸实体码的组合。
物理设计是为数据模型在存储设备上选择合适的存储结构和存储方法,以获得数据库的最佳存取效率,其设计原则如下:
1. 尽可能的减少数据冗余和重复
2. 构设计与操作设计相结合
3. 数据结构具有相对的稳定性
3.7数据词典分析
3.7.1读者信息表
里面记录了读者所有的基本资料:
3.7.2图书信息表里面记录了书籍最基本的信息:
3.7.3借阅信息表
里面记录着所以书籍的借阅信息3.8数据流程图
这项工作的主要任务是给组成系统的各个子系统和模块勾画出大致的计算机处理流程。目的是让开发人员明确子系统或模块中信息的流动、转换、存储和处理情况,以便进一步明确模块物理设计及日后模块实现的任务和工作要点,从而把系统的总体设计思想落实到每一个子系统和功能模块之中。
子系统和模块计算机处理流程,可以用一种基于计算机处理的业务流图来表示。
VB+Access图书管理系统
借书:
借书是图书管理系统的主要流程之一,其过程是在馆藏中查找自己所需要的图书,然后进行借书、借书登记等操作。
其流程图如图3-2
还书:
借书是图书管理系统的主要流程之一,其过程是输入还书的编号或者还书的名称,然后进行还书操作,同时删除借阅记录。
其流程图如图3-3
第4章图书管理系统的功能实现
4.1登陆界面编码设计
本窗体集成了”登录”模块,因此在系统加载时,需要先启动”登录”模块的登录窗体,只有当用户输入了正确的用户名和密码,才能进入到系统主界面。
“登录”窗体运行界面,如图:
当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
登录成功后,管理员可以进行添加和删除用户,修改密码,修改各种资料等操作。
若图片无法显示请联系QQ3710167,图书管理系统免费,转发请注明源于www.lwfree.cn
4.2读者管理界面编码设计
通过DataCombol控件连接到数据库的dbl基础数据表,用DATA GRID控件,将它的各列显示出数据库的各列,属性设为可写,连接到数据库。
用Text 控件来显示所输入的内容,单击“保存“按钮后就可以保存到数据库中,通过ADO控件来浏览记录。
实现读者资料登记的添加、删除、修改、保存功能。
读者管理界面如图:
VB+Access图书管理系统
此窗体的主要代码设计如下:
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
4.3图书管理界面编码设计
通过ADO控件连接到数据库,用DATA GRID控件,将它的各列显示出数据库的各种类型,其类型有:计算机、电子、电工、物理、小说。用户可以通过此窗体来添加或删除类型。次窗体连接到借书窗体。
读者管理界面如图:
此窗体的主要代码设计如下
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
4.4借阅信息管理界面编码设计
次窗体主要用于借书功能,还可以显示借阅者的具体信息,以便于确认借阅者的正确身份。通过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
4.5 关键技术
本系统开发过程中用到的关键技术主要有:
1、Visual Basic与数据库的连接;
2、数据库的建立。
VB+Access图书管理系统
系统测试
测试概述:
系统:WINDOWS
在系统开发过程中采用了多种措施保证软件质量,但是实际开发过程中还是不可避免地会产生差错,系统中通常可能隐藏着错误和缺陷,未经周密测试的系统投入运行,将会造成难以想象的后果,因此系统测试是系统开发过程中为保证软件质量必须进行的工作。大量统计资料表明,系统测试的工作量往往占系统开发总工作量的40%以上。因此,我们必须重视测试工作。
由于程序中隐藏的缺陷只在特定的环境中才有可能显露,系统缺陷通常是由于对某些特定情况考虑不周造成的。因此测试不是为了表明程序正确:成功的测试也不是没有发现错误的测试。有意义的软件测试应该是从“破坏“软件系统的角度出发,精心设计最有可能暴露程序系统缺陷的测试方案。因此软件测试的目标应该是以尽可能少的代价和时间找出软件系统中潜在的错误和缺陷。
系统测试是管理信息系统开发期间中一个十分重要而漫长的阶段。其重要性体现在它是保证系统质量与可靠性的最后关口。且对整个系统开发过程包括系统分析、系统设计和系统实现的最终审查
调试过程分为三个阶段:分调、联调、总调。
1.分调也称模块程序调试,是调试工作的基础工作,目标是发现并纠正程序设计阶段产生的错误。具体做法是对每一个模块进行调试。调试时着重检查了如下几方面:
(1) 模块运行是否正常、无死机。包括检查有无语法错误(例如打错语句、语句不配对等)、逻辑错误(例如文件或变量找不到、变量类型错误等)和流程模块错误(例如模块内的功能调度、模块的进入与退出失败等)。
(2) 模块的功能是否符合设计要求。 包括检查功能有无多余或丢失,功能是否准确无误,算法是否正确,格式是否合理等。
(3) 模块的技术性能如何。包括检查对输入的响应,数据检索、统计与输出的速度等。
(4) 界面是否友好。包括检查画面是否清晰美观,对话是否适度,操作是否方便。
2.联调是指子系统中各程序模块之间的联合调试,目的是发现并纠正系统设计过程中产生的错误。具体做法逐个子系统进行调试。调试时特别检查了如下几方面:
(1)子系统内模块功能的调度是否正确。包括模块间的进退是否自如有无问题等。
(2)子系统的功能是否符合设计的要求。包括功能是否齐全无错漏。
(3)子系统内的数据组织是否符合功能的需要。包括基本数据项是否完整,数据文件间的关系是否正确,数据接口设计是否合理等。
3.总调是对整个程序系统以及人工过程与环境的总调试,目标是发现并纠正系统分析阶段产生的错误。具体做法是对由各个子系统结合而成的程序系统以及配合系统运行而所需的人工过程或操作环境(例如数据采集、录入操作和设置等)进行统一的综合调试。总调的重点应检查了如下几方面:
(1)系统的整体调度功能是否正常。包括主程序与各级菜单之间的进入与返回,口令输入等是否都能正确执行。
(2)系统的功能是否符合系统分析和总体设计的要求。包括系统的功能和结构有无错漏,功能的分配与模块的分解是否合理等。
(3)系统的数据组织与存储是否符合设计的要求。包括检查数据的总容量,文件或数据库与子系统之间的数据联系等。
调试的关键是发现错误,因为只要发现错误,纠正就不难做到。为了有效地发现错误,我采用了两种调试方法:静态调试法、动态调试法
(1) 静态调试法
对文档、程序、数据等资料进行审核,找出其中的错误。这种方法不用运行程序,完全靠调试从文字资料的字里行间中进行检查,检查出其中最基本的错误进行改正。
(2) 动态调试法:
通过程序系统的运行,在程序的“动态”执行中检查和发现错误。我在正确掌握程序的功能要求的情况下,采用该测试犯法对程序进行了一系列的调整。
我采用了静态调试和动态调试相结合的方法,经历了分调、联调和总调阶段,运用适当的测试用例,对系统进行了测试。经过系统测试,程序运行中出现的一些问题和难点在老师的大力帮助下已经一一得到解决,程序基本上实现了图书的管理要求。
1.测试方法
一般来说,对程序测试有两种测试方法:如果已经知道了软件系统应具有的功能,可通过测试来看每个功能是否都能正常使用;如果知道程序的内部工作过程,可以通过测试来检测程序每步是否按照规格说明书的规定正常运行。前一种方法称为黑盒测试,后一种方法称为白盒测试。黑盒测试又成为功能测试,白盒测试又称为结构测试。
因为次软件较小,而且时间较短,我采用的是模块测试方法。
2. 测试方案
添加系统用户
登陆
借书
还书
输入的信息
用户名=小张/密码=aa
确认密码=aa
用户名=张强/密码=aa
选择查询图书的方式后点确定
按读者信息或者图书信息查询要还的书,点确定
预期结果
出现“添加用户成功”的提示信息
进入编目模块
弹出“借书”窗口
弹出“确定要还这本书吗?”的窗口提示
输入结果
出现“添加用户成功”的提示信息
进入编目模块
弹出“借书”窗口
出现“确定要还这本书吗?”的提示信息
图书管理系统VB+Access
第5章结论与体会
历经大半个学期的努力,我的图书管理系统终于如期完成了。此次做系统给我最大的感触有两个。第一个就是有了一个利用本专业所学到的知识,来练习,实践的机会。以前我也学了VB语言等编程语言,但那时我做的仅是用一些零零碎碎的知识,简简单单的语句来解决一些小问题而已。此次做系统却给了我一个机会,一个需要将所学到的有关数据库,管理信息系统以及VB编程三方面的所有的知识结合起来,用自己的汗水浇灌,并最终结出甜美果实的机会。
所以,在此特感谢老师给了我这样一个机会。第二个就是增强了自己的自信心。当我拿到系统的最终打印稿时,按耐不住内心的激动。因为在我第一次看到上届同学做的系统时,我有一种诚惶诚恐的感觉,我不知道两,三个月后我会是什么样子。如今,我也可以骄傲的告诉自己,自己也是能做点事情的。
通过进行图书馆管理系统的开发,进一步明确了研制一个管理信息系统的方法和思路,将系统开发的各阶段的基本活动贯穿起来,使我更加形象、具体的了解了管理信息系统。系统开发的过程是一个巩固以前所学的计算机软件开发知识,掌握新技能的过程。我从这一阶段工作中收益非浅,通过前段时间的毕业设计,我能够融会贯通这几年所学的专业基础知识和专业理论知识,对当前计算机软、硬件技术的发展有了进一步地了解和认识,培养我们综合运用专业知识分析问题、解决问题的能力及运用工具软件的能力。不仅弄清了以前对系统开发的一些模糊的认识,而且提高了软件开发的水平,培养了严谨的工作作风,为今后在工作岗位上用好管好计算机打下了坚实的基础。
在做系统的过程中,我遇到的最大的困难是调程序方面的。在运行程序的过程中经常会出现程序自行中断,需要进行调试的信息。这些信息使得我不得不反复看书,琢磨程序。在一遍一遍的调试之下,程序终于被调通了。那时,我终于可以上上的舒一口气了。
我的系统规模比较小同时由于我的时间和能力等多方面的因素影响,我们的系统也存在一定的缺陷。比如系统的界面不够美观,有的功能不够完善等。对此还请老师给与批评指教,使我能过了解到我系统中所存在的缺陷与不足。
最后,很感谢周老师对我的指导和帮助。使我能顺利的完成我的毕业设计。
图书管理系统ER图-流程图-功能结构图-源代码
源程序清单
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
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()
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
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()
图书管理系统VB+Access
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, ""
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()
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 '不可增加
VB+Access图书管理系统
DataGrid1.AllowDelete = False '不可删除
DataGrid1.AllowUpdate = False
If userpow = "guest" Then '权限相关
Frame2.Enabled = False
End If
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)
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
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
图书管理系统ER图-流程图-功能结构图-源代码
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
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
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
图书管理系统VB+Access
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()
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
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
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)
VB+Access图书管理系统
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
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
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 '权限相关
VB+Access图书管理系统
Private Sub Form_Unload(Cancel As Integer)
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
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
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
VB+Access图书管理系统
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
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