图书管理系统

图书管理系统

目    录

摘  要....   III

Abstract. IV

前  言.... V

第一章  综述 ………………………………………………………………………… 1

1.1  图书馆管理系统开发背景... 1

1.2  图书馆管理系统的目的和意义... 2

第二章  系统分析设计.... 3

2.1  系统功能分析... 3

2.2  系统功能模块设计... 3

第三章  数据库分析与设计.... 5

3.1  数据库需求分析... 5

3.2  数据库概念结构设计... 5

3.3  数据库逻辑结构设计... 7

3.3.1  书籍信息表... 7

3.3.2  读者信息表.... 8

3.3.3  借阅信息表.... 8

3.3.4  读者类别表.... 8

3.3.5  用户表.... 8

3.4 读者借书过程的数据流图和数据词典... 8

3.4.1  数据流图.... 8

3.4.2  数据词典.... 9

3.5  读者还书过程的数据流图和数据词典... 12

3.5.1  数据流图.... 11

3.5.2  数据词典.... 12

第四章  系统详细设计与实现.... 14

4.1  图书馆管理信息系统主窗体的创建... 14

4.2  系统用户管理模块的创建... 16

4.3  添加读者种类窗体的创建... 20

4.4  查询图书信息与借书窗体的创建... 22

第五章  结果与讨论.... 28

5.1  工作成果... 28

5.2  问题与不足... 28

5.3  学习心得... 28

参考文献.... 30

致  谢.... 31


摘    要

随着科学技术的迅猛发展,图书馆管理工作的自动化所需的软硬件条件已经成熟。因此,我按照软件工程思想和管理信息系统的开发步骤,以图书馆的应用需求为背景,设计开发了本图书馆管理系统。

图书管理系统是典型的信息管理系统(MIS)。本文介绍了在Visual Basic 6.0环境下开发本系统的详细过程,提出实现图书馆信息管理、资源共享的基本目标,从而推动迈向数字化图书馆的步伐,并阐述系统结构设计和功能设计,从图书的入库登记到查询浏览,从借书证发放到图书的借阅,形成了一个整体自动化管理模式,从软件工程的角度进行了科学而严谨的阐述。

 

 

关键词: 图书管理    数据    浏览 

 


 

 ABSTRACT

 

Along with the rapid development of science and technology, the library automation management work for software and hardware conditions ripe. Therefore, I according to software engineering idea and the management information system development steps in the library, the application for background, design the library management system.

The library management system is the typical information management system (MIS). Introduced in the Visual Basic 6.0 under the environment of development of the system, and puts forward the detailed process of library, information management, resources sharing, and promote the Basic goal towards the pace of the digital library, and expounds the construction and design of the system and function of books, from design to browse, inquires from card issued to books borrowing, formed a whole automation management mode, from the Angle of software engineering is a scientific and rigorous.

       

 

KeywordsLibrary Management    Data    Browse


前    言

随着计算机网络技术与通信技术的发展,人类已进入信息化社会,人们对信息和数据的利用与处理也已进入自动化、网络化和社会化阶段,因此,开发相关的信息管理系统已成为社会各行各业之必须,计算机学科作为一门边缘学科,集管理科学、信息科学、系统科学、现代通信技术和计算机技术于一身,可以解决企业或组织所面临的问题。

 图书馆管理系统是一种典型的信息管理系统,它的设计与开发遵循信息管理系统开发的方法。信息管理系统的开发方法有生命周期法、原型法和面向对象的开发方法等,并且管理信息系统的开发是一个开发周期长、技术要求高、影响因素多的复杂系统工程,因此我欲采用面向对象的方法开发小型图书管理系统,以完善个人、小型图书馆、中小型企事业单位的图书管理。本毕业设计研究的主要内容是:使用者需要凭用户名和密码才能进入图书馆管理系统;管理员可以对图书、用户等信息进入增加、修改、删除等操作;也可以进行借出操作和归还操作;用户可以实现多种不同方式查询。

本设计主要用于中小规模的图书管理,总体任务是使图书管理工作规范化、系统化、程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书情况。

 


第一章  综述

随着各图书馆的图书的数量不断增多和图书馆规模的不断扩大,管理这些庞大的体系非常困难的,因为图书的情况是随时改变的,因此必需对图书进行动态的管理,而这对于一个管理人员来说是一件比较复杂的事情,存储、查询、借阅是必不可少的业务。

为了能让管理员从繁重的工作中解脱出来,使管理员在使用一个软件以后能极其容易地对所有图书进行管理,并且准确无误,轻松自如。因此开发一个图书馆管理系统软件是当务之急,也是本毕业设计选题的重要意义和研究宗旨。

图书馆管理系统的流通部分是所有图书馆系统中最重要的部分,流通系统将读者与图书、读者与管理员、读者与读者相互间联系起来,而且流通系统处理的数据类型多,数量大,精细且频繁,因而需要系统应具备较完善的检验防错功能,从而根据系统的运行及反馈信息高质量,高效率地管理系统流通部门的全部功能。

由于时间仓促和本人水平有限,不当之处在所难免,请各位老师批评指正。

1.1    图书馆管理系统开发背景

当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。
   
尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。本系统就是为了管理好图书馆信息而设计的。
    图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。根据调查得知,他们以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实等往往采用对借书卡的人工检查进行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统,规范的信息管理手段。尽管有的图书馆有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是管理信息系统的开发的基本环境。
    数据处理手工操作,工作量大,出错率高,出错后不易更改。图书馆采取手工方式对图书借阅情况进行人工管理,由于信息比较多,图书借阅信息的管理工作混乱而又复杂;一般借阅情况是记录在借书证上,图书的数目和内容记录在文件中,图书馆的工作人员和管理员也只是当时对它比较清楚,时间一长,如再要进行查询,就得在众多的资料中翻阅、查找了,造成查询费时、费力。如要对很长时间以前的图书进行更改就更加困难了。基于这此问题,我认为有必要建立一个图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书情况。

1.2    图书馆管理系统的目的和意义

   我们要实现科学技术现代化,图书情报工作的现代化是极其重要的,又由于科学和技术的不断发展和进步,现代技术是一个动态的概念.第二次世界大战以来,以计算机技术为代表的现代技术有了巨大的发展,而且还在迅速的变化发展之中,70年代后期,出现图书情报工作的 “联机革命”,使计算机更广泛地,更有效的应用到各个角落,发达国家较重视这一领域的发展,我国尚存在较大的差距。所以我们说,图书情报工作计算机化是提高我国科学技术水平的一项带有重大战略意义的措施,它是图书情报工作现代化的重要标志。

计算机技术是现代技术的一部分,图书自动化也只是图书馆现代化的一部分,它们之间是部分和整体的关系,但由于计算机技术是信息技术的心脏,现代社会的骄子,信息社会的科技主角,所以在图书馆现代技术中,计算机技术处于核心地位,它对于其他现代化设备起控制,连接和转换的作用,而图书馆自动化是图书馆现代化的核心和主导部分。图书情报的计算机管理系统能提高图书馆本身管理水平,能代替工作人员进行图书情报资料的某些加工处理,把工作人员从繁重的手工劳动,重复劳动中解放出来。

总之,建立图书馆的计算机自动化管理系统,不但可以大大提高图书馆图书流通率,而且推动了社会文化生活的进步。

本论文以图书馆管理信息系统的需求分析及概念设计为切入点,运用理论与实际相结合的方法,构建一个包含读者信息,书籍信息和借阅信息的图书馆管理系统。图书馆管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。

因此本人结合开放式图书馆的要求,对Access数据库管理系统、Visual Basic程序设计进行了较深入的学习和应用,主要完成对图书管理系统的需求分析、功能模块划分、数据库模式分析,并由此设计了数据库结构和应用程序。希望本文所设计的图书馆管理系统能够满足借阅者和图书馆管理人员的需求。

 

 

 

 


第二章  系统分析设计

2.1    系统功能分析

系统开发的总体任务是实现各种信息的系统化、规范化和自动化。

系统功能分析是在系统开发的总体任务的基础上完成。本设计中的图书馆管理信息系统需要完成功能主要有:

1.有关读者种类标准的制定、种类信息的输入,包括种类编号、种类名称、借书数量、借书期限等。

2.读者种类信息的修改、查询等。

3.读者基本信息的输入,包括读者编号、读者姓名、读者种类、读者性别、工作单位、家庭住址、电话号码、办证日期等。

4.读者基本信息的查询、修改,包括读者编号、读者姓名、读者种类、读者性别、工作单位、家庭住址、电话号码、办证日期等。

5.书籍信息的输入,包括书籍编号、书籍名称、书籍类别、作者姓名、出版社名称、出版日期、登记日期等。

6.书籍信息的查询、修改,包括书籍编号、书籍名称、书籍类别、作者姓名、出版社名称、出版日期、登记日期等。

7.借书信息的输入,包括借书信息编号、读者编号、读者姓名、书籍编号、书籍名称、借书日期等。

8.借书信息的查询、修改,包括借书信息编号、读者编号、读者姓名、书籍编号、书籍名称、借书日期等。

9.还书信息的输入,包括还书信息编号、读者编号、读者姓名、书籍编号、书籍名称、借书日期、还书日期等。

10.还书信息查询和修改,包括还书信息编号、读者编号、读者姓名、书籍编号、书籍名称、借书日期、还书日期等。

2.2    系统功能模块设计

    对上述各项功能进行集中、模块划分,按照结构化程序设计的要求,得到如图2.1所示的系统功能模块图。

 

图书馆管理信息系统

借阅信息管理

书籍信息管理

读者信息管理

用户管理

密码管理

设置读者种类

设置读者信息

设置书籍种类

设置书籍信息

借书信息管理

还书信息管理

读者种类添加

读者信息查询

书籍类别修改

读者信息修改

读者信息添加

书籍信息修改

借书信息添加

书籍信息添加

书籍类别添加

借书信息查询

还书信息修改

书籍信息查询

读者种类修改

借书信息修改

还书信息添加

还书信息查询

 

系统管理

图2.1  系统功能模块图


第三章  数据库分析与设计

3.1    数据库需求分析

用户的需求具体体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能充分满足各种信息的输出和输入。收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为以后的具体设计打下基础。

针对一般图书馆管理信息系统的需求,通过对图书馆管理工作过程的内容和数据流程分析,设计如下面所示的数据项和数据结构:

1.读者种类信息,包括的数据项有:种类编号、种类名称、借书数量、借书期限、有效期限等。

2.读者信息,包括的数据项有:读者编号、读者姓名、读者种类、读者性别、工作单位、家庭住址、电话号码、办证日期等。

3.书籍类别信息,包括的数据项有:类别编号、类别名称等。

4.书籍信息,包括的数据项有:包括书籍编号、书籍名称、书籍类别、作者姓名、出版社名称、出版日期、登记日期等。

5.借阅信息,包括的数据项有:借阅信息编号、读者编号、读者姓名、书籍编号、书籍名称、借书日期、还书日期等。

  有了上面的数据结构、数据项和数据流程,就可以进行下面的数据库设计了。

3.2 数据库概念结构设计

得到上面的数据项和数据结构以后,就可以设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。

本实例根据上面的设计规划出的实体有:读者类别信息实体、读者信息实体、书籍类别信息实体、书籍信息实体、借阅信息实体。各个实体具体的描述E-R图如下。

读者类别信息实体E-R图如图3.1所示。

读者类别信息实体

种类编号

种类名称

借书期限

借书数量

图3.1  读者类别信息实体E-R图

读者信息实体E-R图如图3.2所示。

读者信息实体

读者编号

读者姓名

读者类别

办证日期

 3.2  读者信息实体E-R图

书籍类别信息实体E-R图如图3.3所示。

书籍类别信息实体

类别编号

类别名称

关键词

备注信息

图3.3  书籍类别信息实体E-R图

书籍信息实体E-R图如图3.4所示。

书籍信息实体

书籍编号

书籍名称

书籍类别

出版社

图3.4  书籍信息实体E-R图

借阅信息实体E-R图如图3.5所示。

借阅信息实体

借阅信息编号

读者信息

书籍信息

借书日期

图3.5  借阅信息实体E-R图

 

实体之间相互关系的E-R图如图3.6所示。

         

读者类别信息

书籍类别信息

书籍信息管理

读者信息管理

借阅书籍

借阅信息管理

读者信息登记

书籍信息登记

                         图3.6  实体之间关系的E-R图

3.3    数据库逻辑结构设计

3.3.1  书籍信息表

由多个图书记录构成。

图书记录的数据结构如下:

图书编号(BookID)      

整数(唯一标示符)

图书书名(BookName)

变长字符串

图书作者(Author) 

变长字符串

图书出版社(Publisher)

变长字符串

3.3.2  读者信息表

由多个读者记录构成

读者记录的数据结构如下:

读者证号(ReaderID)

整数(唯一标示符)

读者姓名(ReaderName)

变长字符串

读者联系方法(Address)      

变长字符串

3.3.3  借阅信息表

由若干个借书记录构成

借书记录的数据结构如下:

借阅图书(BookID)

整数(与图书库中的图书编号对应)(唯一标示符)

借阅者(ReaderID)

整数(与读者库中的图书编号对应)

借阅时间(BorrowDate)

日期

3.3.4  读者类别表

有单个系统设置记录构成

系统设置记录的数据结构如下:

记录号(id)

整数(系统自动生成,唯一标示符)

最多可借图书数(MaxBLNum)

整数

最多借书天数(MaxBLDays)

整数

3.3.5  用户表

由若干个系统操作员记录构成

系统操作员记录的数据结构如下:

记录序号(id)

整数(系统自动生成,唯一标示符)

账号(Addminister)

变长字符串

口令(Password)

变长字符串

权限级别(Level)

变长字符串

3.4    读者借书过程的数据流图和数据词典

3.4.1  数据流图

    读者借书过程数据流程如图3.7所示。

 

 

日历

读者

1

借书

检验

2

借书

登记

选定图书

读者库

图书库

图书是否被借出

图书信息

检验

图3.7  读者借书过程

3.4.2  数据词典

1.数据源点及汇点描述:

⑴名称:读者

简要描述:借书、还书、查询及登记注册

有关数据流:借书证;所借书本

⑵名称:日历

简要描述:当日日期

有关数据流:年月日

2.加工逻辑词条描述:

⑴加工名:借书检验

加工编号:1

简要描述:检验读者身份、图书是否入库、读者还能借多少书以此判定读者是否能借书

输入数据流:借书证;所借书本,读者信息,图书信息,图书访问记录,日期

输出数据流:借书错误信息,借书信息

加工逻辑:       IF 借书证未登记入库 THEN

        发出借书错误

      ELSE IF 图书未登记入库 THEN

          发出借书错误

         ELSE IF 读者已借图书和现借图书多于限制数N  THEN

                    发出借书错误

              ELSE IF 读者已借图书中有超期  THEN

                发出借书错误

             ELSE 发出借书信息

             ENDIF

          ENDIF

       ENDIF

      ENDIF

⑵加工名:借书登记

加工编号:2

简要描述:将“借书信息”登记到“图书访问记录库图书访问记录”中,完成后将书本递交读者

输入数据流:借书信息,日期

输出数据流:图书访问记录,图书

加工逻辑:将借书信息及日期写入图书访问记录;

3.数据流名词条描述:

⑴数据流名:借书证

说明:用以携带读者的唯一识别标识

数据流来源:读者

数据流去向:借书检验

数据流组成:借书证=借书证号+姓名+联系方法

          借书证号=“000000001”..“999999999”

          姓名=2{字母}24

          联系方法=4{字母}50

⑵数据流名:图书

说明:记录图书的主要相关信息

数据流来源:读者

数据流去向:借书检验

数据流组成:图书=书号+书名+作者+出版社

          书号=“000000001”..“999999999”

          书名=2{字母}24

          作者=2{字母}24

          出版社=2{字母}24

⑶数据流名:检验错误

说明:用于指示读者借书错误信息

数据流来源:借书检验

数据流去向:读者

数据流组成:检验错误=2{字母}40

⑷数据流名:借书信息

说明:用于传递读者号和图书号

数据流来源:借书检验

数据流去向:借书登记

数据流组成:借书信息=借书证号+书号

⑸数据流名:日期

说明:提供当前日期信息

数据流来源:日历

数据流去向:借书检验,借书登记

数据流组成:日期=年+月+日

      年=“0000”..“9999”

      月=“01”..“12”

      日=“01”..“31”

⑹数据流名:图书访问记录

说明:用于记录读者借书信息

数据流来源:图书访问记录库,借书登记

数据流去向:借书检验

数据流组成:图书访问记录=书号+借阅证号+借书日期

          借书日期=日期

⑺数据流名:读者信息

说明:用于记录登记入库的读者信息

数据流来源:读者库

数据流去向:借书检验

数据流组成:读者信息=借书证号+姓名+联系方法

⑻数据流名:图书信息

说明:用于记录登记入库的图书信息

数据流来源:图书库

数据流去向:借书检验

数据流组成:图书信息=书号+书名+作者+出版社+价格+摘要+状态

4.数据文件词条描述:

⑴数据文件名:读者库

简述:存放读者信息

输入数据:无

输出数据:读者信息

数据文件组成:读者库由“读者信息”组成

⑵数据文件名:图书库

简述:存放图书信息

输入数据:无

输出数据:图书信息

数据文件组成:图书库由“图书信息”组成

⑶数据文件名:图书访问记录库

简述:存放图书访问记录信息

输入数据:图书访问记录

输出数据:图书访问记录

数据文件组成:图书访问记录库由“图书访问记录”组成

3.5    读者还书过程的数据流图和数据词典

3.5.1  数据流图

读者还书过程数据流程如图3.8所示。

日历

读者

3

还书

检验

4

还书

登记

图书

还书返回信息

还书信息

图书访问记录

检验错误

图3.8  读者还书过程

3.5.2  数据词典

1.加工逻辑词条描述:

⑴加工名:还书检验

加工编号:3

   简要描述:检验图书是否图书室外借图书

   输入数据流:图书,图书访问记录

输出数据流:检验错误,还书信息

   加工逻辑:IF 书号与数据库数据不符 THEN

             发出检验错误

        ELSE 发出还书信息

      ENDIF

⑵加工名:还书登记

   加工编号:4

   简要描述:删除读者对该图书的借书信息,如果超期给出警告及天数

   输入数据流:还书信息,日期

   输出数据流:图书访问纪录,还书成功

   加工逻辑:IF 所还图书超期 THEN

          统计超期天数

 生成含警告的返回信息

     ELSE 删除图书访问记录库中相应的借书记录

         生成成功信息

    ENDIF

       给出还书返回信息

2.数据流名词条描述:

⑴数据流名:还书信息

说明:用于传递图书书号

数据流来源:还书检验

数据流去向:还书登记

数据流组成:还书信息=书号

⑵数据流名:还书成功

说明:用于通知还书成功

数据流来源:还书登记

数据流去向:读者

数据流组成:还书成功=2{字母}10

数据文件词条描述:(前面已描述)


第四章  系统详细设计与实现

4.1    图书馆管理信息系统主窗体的创建

这个项目使用多文档界面,单击工具栏中的ADD MDI Form按钮,生成一个窗体。在这个窗体上添加所需的控件,窗体和控件的属性设置见表4-1所示。

表4-1  主窗体及其控件属性设置

控件

属性

属性取值

 

 

frmMain(Form)

Name

FrmMain

Caption

王登伟毕业设计-图书馆管理系统

StartUpPositon

2-屏幕中心

WindowState

Maximized

 

 

SbStatusBar(StatusBar)

Name

SbStatusBar

Panels(1)

Style

SbrText

Panels(2)

Style

SbrDate

Panels(3)

Style

SbrTime

在窗体中加入状态栏控件,可以实时反映系统中各个状态的变化。状态栏控件需要在通常的属性窗口中设置一般属性,还需要在其特有的弹出式菜单中进行设置。选中状态栏控件,单击鼠标右键,选中Property菜单,然后设置属性。创建好的主窗体如图4.1所示。

图4.1  图书馆管理系统主窗体

Visual Basic中使用公用模块来存放整个工程项目公用函数、过程和全局变量等。这样可以极大地提高代码的效率。

在录入有关信息时,需要回车来进入下一个文本框,这样对软件使用者非常方便。在所有的功能模块都需要这个函数,所以将它放在公用模块中,代码如下:

Public Sub EnterToTab(Keyasc As Integer)

  ‘判断是否为回车键

   If  Keyasc=13  Then

      ‘转换成Tab

      SendKeys”{TAB}”

   End If

End Sub

Keyasc用来保存当前按键,SendKeys函数用来指定的按键。一旦单击回车键,将返回Tab键,下一个控件自动获得输入焦点。

添加全局变量,用来记录各个窗体的读写状态,代码如下:

Pubic flagRTedit As Boolean

Pubic gintRTmode As Integer

Pubic flag Redit As Boolean

Pubic gintRmode As Integer

Pubic flagBTedit As Boolean

Pubic gintBTmode As Integer

Pubic flagBedit As Boolean

Pubic gintBmode As Integer

Pubic flagBOedit As Boolean

Pubic gintBOmode As Integer

Pubic flagBBedit As Boolean

Pubic gintBBmode As Integer

gintRTmode变量用来记录是添加状态还是修改状态,赋值1为添加,赋值2为修改。flagRTedit变量用来标示是否进入修改的窗体。其他全局变量同理。

由于图书馆管理信息系统启动后,需要对用户进行判断。如果登陆者是授权用户,将进入系统,否则将停止程序的执行。这个判断需要在系统运行的最初进行,因此将代码放在公用模块中。 

4.2    系统用户管理模块的创建

系统启动后,将首先出现如图4.2所示的窗体。

   

图4.2  系统启动界面窗体图

点击确定后将出现登录窗体如图4.3所示,用户首先输入用户名,然后输入密码。如果用户3次输入的密码不正确,将退出程序。

图4.3  用户登录窗体

用户登录窗体中放置了两个文本框(TextBox),用来输入用户名和密码;两个按钮(CommandButton)用来确定或者取消登录;3个标签用来标志窗体的信息。这些控件的属性设置见表4-2所示。

 

表4-2  登录窗体中各个控件的属性设置

控件

属性

属性取值

 

frmLogin(Form)

Name

frmLogin

Caption

身份验证

StartUpPositon

CenterScreen

WindowState

Nomal

txtUserName

Name

txtUserName

txtPassword

Name

txtPassword

PasswordChar

*

cmdOK

Name

cmdOK

Caption

确定

cmdCance1

Name

cmdCance1

Caption

取消

Label1

Caption

用户名

Label2

Caption

密码

Label3

Caption

注意:如果您的身份验证三次未正确,系统将自动关闭!

文本框txtPasswordPasswordChar属性是用指定字符来掩盖用户名输入密码。

为窗体定义全局变量OK,用来判断登录是否成功;定义Cnt,用来记载输入密码的次数,并且在载入窗体时初始化这两个全局变量,代码如下:

强制变量声明

Option Explicit

Pubic OK As Boolean

记录确定次数

Dim miscount As Integer

Private Sub Form_Load()

          OK=False

     miscount=0

End Sub

Option Explicit是用来规定所有变量使用前必须定义。这样可以避免由于输入错误而产生的新变量。

当用户输入完用户名和用户密码,单击cmdOK按钮将对用户输入信息进行判断。用户单击该按钮,将触发按钮cmdOKClick事件,连接数据库中用户表如图4.4所示。

图4.4  用户表

代码如下:

Option Explicit

Dim cnt As Integer '记录确定次数

Private Sub cmdCancle_Click()

 Unload Me

End Sub

Private Sub cmdOK_Click()

Dim sql As String

Dim rs_login As New ADODB.Recordset

Dim conn As New ADODB.Connection

conn.Open "provider=Microsoft.Jet.OLEDB.4.0; data source=" & App.Path & "\database.mdb"

 

 If Trim(Text1.Text) = "" Then

   MsgBox "用户名不能为空,请重新输入!"

   Text1.SetFocus

 Else

   sql = "select * from 用户表 where user_ID='" & Trim(Text1.Text) & "'"

   rs_login.Open sql, conn, adOpenKeyset, adLockPessimistic

   If rs_login.EOF = True Then

     MsgBox "没有这个用户,请重输入!", vbOKOnly + vbExclamation, ""

     Text1.Text = ""

     Text1.SetFocus

   Else

     username = Text1.Text

     If Trim(rs_login.Fields(1)) = Trim(Text2.Text) Then

      

        Unload Me

        frmMain.Show

     Else

       MsgBox "密码不正确,请重输入!", vbOKOnly + vbExclamation, ""

        Text2.SetFocus

       Text2.Text = ""

     End If

   End If

 End If

 cnt = cnt + 1

 If cnt = 3 Then

  Unload Me

 End If

End Sub

 

Private Sub Form_Load()

cnt = 0

End Sub

用户如果没有输入用户名和用户密码,将出现消息框给予提示。如果输入的用户名在用户表中没有找到,将提示重新输入用户名,文本框将重新获得输入焦点。例如在图4.3用户登录窗体中的用户名中输入“100”,将在数据库中用户表中的user_ID中进行匹配,如图4.4用户表所示,user_ID中没有“100”,这时系统将出示提示框“没有这个用户,请重新输入”。如果用户输入用户名正确而输入的密码不正确,文本框txtPassword将重新获得输入焦点。例如在图4.3用户登录窗体中的用户名中输入“110”,密码中输入“1234”,将先对数据库中用户表的user_ID中的项进行匹配,如图4.4用户表中所示,有“110”这一项,用户名匹配成功,接着将密码“1234”与user_ID中“110”想对应的mima中的项进行匹配,发现与“110”所对应的项是“3333”,密码匹配不成功,这时系统将出示提示框“密码不正确,请重新输入”。当所输入的用户名和密码都在数据库中的用户表中匹配成功,用户登陆成功,全局变量OK将被赋值为True;一旦三次输入密码均不正确,全局变量OK将被赋值False。公用模块中的Main过程将根据OK的值决定是退出,或者进入系统。如果用户取消登录,单击“取消”按钮,将触发按钮Click事件,代码如下:

      OK=False

      Me.Hide

  MeVisual Basic中一个常用对象,用来指代当前对象本身。

4.3    添加读者种类窗体的创建

添加读者种类窗体是在窗体上放置多个文本框,用来输入读者种类信息;两个按钮用来确定是否添加读者种类信息;多个标签用来提示文本框中需要输入的内容。

用户通过此窗体的使用可以很容易的添加读者的种类,如图4.5所示。

图4.5  添加读者类别窗体

在载入窗体时,将会连接数据库当中的读者类别表,如图4.6所示。

图4.6  读者类别表

程序代码如下:

  Private Sub Command1_Click()

    Dim sql As String

Dim conn As New ADODB.Connection

    Dim rs_readerstyle As New ADODB.Recordset

    If Trim(Text1.Text) = "" Then

         MsgBox "读者种类不能为空 ", vbOK0nly + vbExclamation, ""

         Text1.SetFocus

         Exit Sub

End If

    If Trim(Text2.Text) = "" Then

         MsgBox "借书数量不能为空", vbOK0nly + vbExclamation, ""

         Text2.SetFocus

         Exit Sub

    End If

    If Trim(Text3.Text) = "" Then

         MsgBox "借书期限不能为空", vbOK0nly + vbExclamation, ""

         Text3.SetFocus

         Exit Sub

    End If

    If Trim(Text4.Text) = "" Then

         MsgBox "有限期限不能为空", vbOK0nly + vbExclamation, ""

         Text4.SetFocus

         Exit Sub

    End If

 

'Provider = "Microsoft.Jet.OLEDB.3.5.1 ;Persist Security Info=false;data source=D:\图书管理系统\database.mdb"

 

 conn.Open "provider=Microsoft.Jet.OLEDB.4.0; data source=" & App.Path & "\database.mdb"

 

 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) = Trim(Text2.Text)

   rs_readerstyle.Fields(2) = Trim(Text3.Text)

   rs_readerstyle.Fields(3) = Trim(Text4.Text)

   rs_readerstyle.Update

   MsgBox "添加读者类别成功!", vbOKOnly, ""

   rs_readerstyle.Close

 Else

   MsgBox "读者类别重复!", vbOKOnly + vbExclamation, ""

   Text1.SetFocus

   Text1.Text = ""

   rs_readerstyle.Close

   Exit Sub

End If

 

End Sub

 

Private Sub Command2_Click()

  Unload Me

End Sub

程序首先对是否输入内容进行判断,然后进行格式判断,接着添加数据到数据库。最后根据状态来显示相应的信息:如果是添加状态,将提示添加成功,然后重新显示并清空所有文本框,以便继续添加记录:如果处于修改状态,将提示修改成功,然后更新所有记录的列表。

4.4    查询图书信息与借书窗体的创建

    查询图书信息窗体可以使用户方便快捷的得知书籍的基本信息,可以通过书名、编号、图书类别、作者、出版社进行对图书的基本信息的查询,如图4.7所示。

图4.7  查询书籍信息窗体

用户设置查询方式并输入查询内容后,单击“确定”按钮后,将会连接到数据库当中的书籍信息表,如图4.8所示。

图4.8  书籍信息表

在如图4.7查询书籍信息窗体中,用户可以选择单一条件进行查询,例如在复选框书名前单击鼠标左键,选定书名查询,然后在复选框书名中输入你所要查询的书籍名称,点击“确定”按钮,如果所输入的书籍名称与数据库中的“书籍信息表”中的书名项中相匹配,那么所有符合查询条件的书籍信息都将出现在如图4.7查询书籍信息窗体中的文本框中;如果所输入的书籍名称与数据库中的“书籍信息表”中的书名项中不匹配,系统将出示提示框“查询不到该图书信息”。用户也可以选择使用多项条件查询,多项条件查询可以更准确的查找到用户所需要的书籍信息。例如可以选定复选框中的“书名”、“编号”、“作者”,然后输入相应的查询内容,这时将对数据库中“书籍信息表”中的“图书编号”、“书名”、“作者”各项进行匹配,如果匹配成功,那么所有符合查询条件的书籍信息都将出现在如图4.7查询书籍信息窗体中的文本框中;如果所输入的书籍名称与数据库中的“书籍信息表”中的“图书编号”、“书名”、“作者”各项匹配不成功,系统将出示提示框“查询不到该图书信息”,注意,在使用多项条件查询时,在所选复选框中有一项没有和数据库中“书籍信息表”中对应项匹配失败,系统都将出示提示框“查询不到该图书信息”。

程序代码如下:

Option Explicit

Dim panduan As String

 

Private Sub Command1_Click()

Dim rs_findbook As New ADODB.Recordset

Dim conn As New ADODB.Connection

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

If Check5.Value = vbChecked Then

  If Trim(sql) = "" Then

    sql = "出版社='" & Trim(Text4.Text & " ") & "'"

  Else

    sql = sql & "and 出版社='" & Trim(Text4.Text & " ") & "'"

  End If

End If

 

conn.Open "provider=Microsoft.Jet.OLEDB.4.0; data source=" & App.Path & "\database.mdb"

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

If rs_findbook.RecordCount = 0 Then

  MsgBox "查询不到该图书信息!", vbOKOnly + vbExclamation

Else

  Set DataGrid1.DataSource = rs_findbook

End If

End Sub

 

Private Sub Command2_Click()

Unload Me

End Sub

如果用户对所查询到的图书满意,决定借阅该书,那么在如图4.7查询书籍信息窗体中显示图书信息的文本框中该书位置单击鼠标左键,选定该书,然后单击“借这本书”按钮,这时将与数据库中的“书籍信息表”中的“是否被借出”项进行核对,如果所借图书相对应的“是否被借出”项为“是”,那么系统将出示提示框“此书以被借出”;如果所借图书相对应的“是否被借出”项为“否”,那么将会打开借书窗体,如图4.9所示。

                             图4.9  借书窗体 

实现程序代码如下:

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

 Unload Me

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 conn As New ADODB.Connection

 Dim sql As String

 sql = "select * from 图书类别"

 conn.Open "provider=Microsoft.Jet.OLEDB.4.0; data source=" & App.Path & "\database.mdb"

 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

用户需要选择正确的“读者编号”和“读者姓名”,然后单击“确定”按钮,系统将出示提示框“借阅成功”,数据库中的“书籍信息:表”中的“是否被借出”项将被改写为“是”;如果用户不想借阅此书,那么单击“取消”按钮,将退出借书窗体。


第五章  结果与讨论

由于时间的关系本文初步的完成了图书馆管理信息系统中的主窗体创建、用户管理模块的创建、添加读者类别窗体的创建和查询书籍信息窗体的创建。实现了对借阅信息的管理、书籍信息的管理、读者信息的管理、系统管理。本毕业设计论文对系统的需求分析、模型分析、设计和实现作了较详细地叙述,表明了面向对象的思想在系统开发中的优越性。也正因此使该原型系统在可扩展性、可移植性、代码重用性、系统维护上有明显的优势。

5.1    工作成果

针对各图书馆信息管理的特点,开发了图书馆管理信息系统,具备了图书馆管理中所需要的各种基本功能:

1.可以进行读者信息的存储;

2.书籍信息的录入和调整;

3.借阅信息的管理;

4.较为容易的操作

5.2    问题与不足

本文中所开发的图书馆管理信息系统还有很多不足之处:

1.功能还比较简单;

2.没有经过大量用户的实践检验,无法保证完全满足用户各方面的要求;

3.功能有待在使用过程中完善提高。

5.3    学习心得

1.在程序的设计过程中,通过各种资料的阅读,更深一步的了解了图书馆管理信息系统、数据库系统的的概念,它们的发展史、技术要点和设计思路。为今后开发和设计信息系统和数据库系统打下了深厚的基础。

2.在开发软件的过程中,对编程工具 Visual Basic从一无所知到较熟练的应用,不仅新学会了一种功能强大的编程语言,而且提高了独立自学的能力。在学习过程中,遇到了许多的问题,经过努力,我终于冲破了这些难点。由于每个软件的自身设计思路是不一样的,在各种功能的实现上多存在着差异,这使我走了许多的弯路。但同时使我了解了一种新的思路,使我获益匪浅。

3.在毕业设计过程中,我还学到了很多其他方面的道理。关于学习与实践:学到的知识是有限的,面对的实践应用是多种多样的,所学很可能无法满足所用,必须在实践中、在应用中不断学习不断提高,这次完成毕业设计的过程中我学到了许多从前闻所未闻的知识和技能。关于理论与实用:作为一个计算机专业的毕业生,毕业设计是一次重要的实践机会,完成的必须是一件实用的作品。

总之,这次设计是我受益匪浅。对我以后的工作、学习打下了坚实的基础。尤其是软件的设计过程和思路的开拓益处更多。


参考文献

 

[1] 刘韬,骆娟. Visual Basic数据库系统开发实例导航.北京:人民邮电出版社,2006

[2] 卢湘江,李向荣. MySQL高级配置和管理. 北京:清华大学出版社,2005

[3] 章立民. SQL Server 2000完全实战. 北京:中国铁道出版社,2003

[4] 秦增富. 大学图书馆建设. 北京:中国机械出版社,2002

[5] 闪四清. 数据库系统原理与应用教程.北京:清华大学出版社,2002

[6] 阮家栋,施美雅. 数据库技术. 北京:科学出版社,2002

[7] 郑学坚,周斌.微型计算机应用及原理.北京:清华大学出版社,2002

[8]闪四清.完全掌握SQL Server2000[M].北京:人民邮电出版社,2001

[9] 闪四清.数据库系统原理与应用教程[M].北京:清华大学出版社,2002

[10] John Chirillo,Scott Blaul. Storage Security Protecting SANs,NAS,and DAS.

[11] Ferland J A, Fleurent C. SAPHIR: A decision support system for course scheduling[J]. Interfaces, 2006, 24 (2)

[12] Pawlak, Z. Rough Sets. International Journal of Information and Computer Science[M]. 2008, 11

[13] Fabien A.P.Petitcolas,Ross J.anderson and Markus G. Kuhn. Information Hiding—A Survey. 2009.


致    谢

 

通过最后这学期的毕业设计,使我对所学知识有了更深一步的理解与掌握,理论与实践也能更好地结合在一起,这一过程中我遇到了很多困难,但这更使我觉得其中的乐趣和那种战胜困难后的成就感。在即将离校之际,能有这次实践的机会,深感难得,同时感到学无止境,在今后的学习和工作中,我会不断的充实自己。

在此,由衷感谢我的指导教师——刘心声老师,他在知识积累、课题设计和完成论文等各方面的悉心指导和给予我的大力帮助,才使我顺利完成了这此毕业设计与论文的撰写工作,在此深表感谢!

感谢黑河电大的领导和老师多年来在学习与生活中给予我的关怀和教导。

由于本人的能力有限,设计论文中一定存在许多问题和不足,望各位老师和同学能够给予批评和指正,我将不胜感激!

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值