1、 1一、编写目的随着知识经济时代的来临,将不可避免地从根本上动摇各类组织的管理思想、管理制度和管理方式,现代图书馆的管理也概莫能外。从一定意义上说,建立一套图书馆管理信息系统有着重要的意义。为开发院系图书资料室管理系统,能使图书馆工作人员更好地管理同学借书还书等流程。二、设计任务本数据库系统主要解决在学校图书馆中,实现图书基本情况的录入、修改、删除,能够办理借书卡,实现借书功能、还书功能 ,实现对借阅者图书证的录入、删除,以及根据图书编号对图书进行查询。 系统开发的意图是帮助图书管理人员提高管理效率,通过本管理系统软件,能帮助工作人员利用计算机,快速方便的对图书信息数据进行管理、输入、输出、查
2、找的操作,使杂乱的图书信息数据能够具体化、直观化、合理化等。另一方面方便学生使用,快速查找相关书籍信息,目前图书管理系统在学校的图书管理中起着不可替代的作用,是一个典型的数据库系统。本次的课程设计采用了结构化和面向对象程序设计的方法,使后台数据库具有可扩展性,前台界面简单实用。本系统在 Windows XP 环境中采用 Visual Basic 为开发平台,使用 SQL SERVER 创建数据库,用于对图书信息资料的增加、删除、修改,以及学生借书还书信息的增加、删除、修改。此系统经过分析、设计、编码、调试等一系列步骤,初步实现了设计目标,并且经过适当完善后,最终作出了一个虽简洁但却实用的图书管
3、理系统。 三、功能要求本数据库系统主要解决在学校图书馆中,如何实现图书基本情况的录入、修改、删除,如何办理借书卡,如何实现借书功能、还书功能 ,以及方便的对图书进行查询。 系统开发的意图是帮助图书管理人员提高管理效率,通过本管理系统软件,能帮助工作人员利用计算机,快速方便的对图书信息数据进行管理、输入、输出、查找的操作,使杂乱的图书信息数据能够具体化、直观化、合理化等。具体功能如下:实现图书基本情况的录入、修改、删除,包括图书的编号、书名、价格、种类、购买日期等等。2办理借书卡,包括学生的班级、姓名、学号、性别、年龄、学院、专业等等。实现借书功能、还书功能,包括学号、图书编号、姓名、书名、借书
4、日期、应还日期、备注等等。对图书进行查询,包括书名、种类、图书编号、馆藏副本、馆藏地、可借副本等等。系统开发的意图是帮助图书管理人员提高管理效率,通过本管理系统软件,能帮助工作人员利用计算机,快速方便的对图书信息数据进行管理、输入、输出、查找的操作,使杂乱的图书信息数据能够具体化、直观化、合理化等。本数据库系统软件所需的系统配置为:1软件配置操作系统:Windows XP 中文版或更高;数据库选择:SQL SERVER;开发平台:Visual Basic2硬件配置CPU:Pentium II 266 或更高;内存:64MB 或以上;硬盘:2G 以上;显示器:VGA 或更高四、设计思路及采取的方
5、案1、需求分析(1)数据需求“图书基本信息表”用来存放图书的基本信息。所需数据项有:图书编号、书名、种类、价格、购买日期。其中图书编号为主键。图书编号为唯一可标示每一图书元组的数据项,其数据类型为 char,长度为 10,此图书编号采用国家统一标示方法。书名数据类型为 char,长度为 50。3种类可方便学生对图书进行查找、定位,图书室中图书一般按种类分区存放。数据类型为 char,长度为 50。价格数据类型为 float ,长度为 8。购买日期数据类型为 datetime ,长度为 8。“图书分类信息表”用来存放图书分类的信息,一便方便的对图书所在地进行查询。所需数据项为:图书编号、书名、种
6、类、馆藏地、馆藏副本、可借副本。图书编号为唯一可标示每一图书元组的数据项,其数据类型为 char,长度为 10,此图书编号采用国家统一标示方法。馆藏地为图书在图书馆中的存放位置,有助于学生快速找到图书及图书管理员对图书进行规范存放。其数据类型为 char,长度为 25。馆藏副本为图书室中存放各种图书的数量,当学生进行图书检索时,便可知道图书馆中是否存在此类图书。其数据类型为 smallint,长度为 2。可借副本是在馆藏副本的基础上,让学生知道图书馆中现存的此种图书数量,以及借出的数量。其数据类型为 smallint,长度为 2。“借书卡信息表”用来存放办理借书卡的同学的各类信息。所需数据项为
7、:学号、姓名、性别、年龄、专业、班级、学院。其主键为学号。学号为唯一确定每个学生的信息。其数据类型为 char,长度为 10。按照学校学生实际学号进行录入。姓名为学生称谓,数据类型为 char,长度为 10。性别数据类型为 char,长度为 10,其域为男或女。年龄为学生实际年龄,数据类型为 char,长度为 10。专业为学生所学专业,数据类型为 char,长度为 40。此处可为空,方便老师为未分专业学生录入信息。班级为学生所在班级,数据类型为 char,长度为 10。学院为学生所在学院,数据类型为 char,长度为 20。“借阅信息表”用来存放借书同学有关借书的信息。所需数据项为:学号,姓名
8、,书名,备注,借阅日期,归还日期,图书编号。其主键为学号+图书编号。学号为唯一确定每个学生的信息。其数据类型为 char,长度为 10。按照学校学生实际学号进行录入。4姓名为学生称谓,数据类型为 char,长度为 10。书名为学生所借图书名,数据类型为 char,长度为 50。备注为学生所接此书的有关信息,如借阅时图书以经陈旧或损坏等等。其数据类型为char,长度为 100。借阅日期为学生借书时间,数据类型为 datatime,长度为 8。归还日期为学生还书日期,数据类型为 datatime,长度为 8。图书编号为学生所接图书的唯一标示,此处与学生学号共同组成主码。数据类型为char,长度为
9、10。“代码表”用来存放图书的基本信息,里面有较全的国家统一标准的图书编号及种类。当图书管理员购进新的图书时可通过查询此表来给图书进行编号及确定图书种类然后确定要存放的图书室。并将此信息录入“图书基本信息表”和“图书分类信息表”中。所需数据项为:图书编号,书名,种类。其中图书编号为主码。图书编号为唯一可标示每一图书元组的数据项,其数据类型为 char,长度为 10,此图书编号采用国家统一标示方法。书名数据类型为 char,长度为 50。种类可方便学生对图书进行查找、定位,图书室中图书一般按种类分区存放。数据类型为 char,长度为 50。(2)事务需求(1)在读者信息管理部分,要求如下。可以浏
10、览读者信息。可以对读者信息进行维护,包括添加及删除等操作。(2)在书籍信息管理部分,要求如下。可以浏览书籍信息。可以对书籍信息进行维护,包括添加及删除等操作。(3)在借阅信息管理部分,要求如下。可以浏览借阅信息。可以对借阅信息进行维护操作。(4)在借书卡信息管理部分,要求如下。5可以浏览借书卡信息可以对借书卡信息进行维护,包括办理及删除。2、概念设计总 E-R 图设计如下:在图书馆数据库系统中,从效率、安全、方便角度考虑,应设计用户自模式。对不同级别的用户定义不同的视图:定义一般的读者对数据库的应用只包括对书的借出信息,作者,还书日期,和简介等信息的查找,不能对以上的信息的删除和更改,更新信息
11、只能由图书馆类的服务人员作相应的操作。对学生:学生管理员图书馆查询借阅管理图书办理借书卡容纳购买6图书基本情况(图书编号,书名,价格,种类,购买日期,退出)图书查询(书名,种类,图书编号,馆藏副本,馆藏地,可借副本)E-R 图如下:对管理员:管理人员可以直接访问借阅记录关系,增加删除基本信息。借书卡办理(学号,姓名,年龄,专业,班级,性别,学院,办理,删除,退出)借书还书(学号,图书编号,姓名,书名,借书日期,应还日期,备注,借书,还书)图书查询(书名,种类,图书编号,馆藏副本,馆藏地,可借副本)图书基本情况(图书编号,书名,价格,种类,购买日期,增加记录,删除记录,退出)E-R 图如下:书名
12、 种类图书编号馆藏副本馆藏地可借副本学号姓名借阅日期归还日期备注学生查询 借阅7管理员借书卡学号 姓名 性别 年龄 专业 班级 学院图书办理管理查询、删除、更改、插入书名种类图书编号馆藏副本馆藏地可借副本记录83、逻辑设计阶段(1)根据总 E-R 图中的实体与实体之间的联系以及转换的一般原则,得到如下的关系:读者 证件持有根据以上 1:1 关系得可到关于读者关系:读者( 姓名,性别,年龄,学号,专业,班级,学院); 该关系的函数依赖图:从函数依赖图可以看出,该关系中不存在部分函数依赖、传递函数依赖,且只有学号能够确定其它各项。所以该关系是 BCNF 范式。(2)借书卡(证件号,证件类别); 该
13、关系来源于证件实体, 该关系的函数依赖图如下:书名 种类 价格 数量 购入时间编号 馆藏副本馆藏地学 院班 级学号姓 名性 别年 龄专 业证件证件号证件类别9该关系仍然是 BCNF 范式。(3)图书( 图书编号,书名 ,种类,馆藏地,馆藏副本,可借副本,价格,购买日期 ); 该关系来源于图书实体,它的函数依赖图如下:该关系仍然是 BCNF 范式。(4)借阅纪录(学号,图书编号,姓名,书名,借阅日期,应还日期,备注);优化分析:在图书馆中,由于图书数量上百万册,所以为了提高检索效率,应根据图书类别把图书进行水平分类,即按照图书的种类不同将图书分成不同类型的图书,如:文史图书、自然科学图书编号书
14、名种类馆藏地馆藏副本可借副本价格购买日期学号图书编号备注姓名书名借阅日期应还日期10图书、工具图书、古籍等。这样相同类型的图书存放在一起,便于提高查找效率。证件与读者是紧密联系的,二者同时产生,同时离开,并且日常查询中二者常常同时被要求,因此,应把这两个关系合二为一。即:借书卡(证件号, 姓名,性别,年龄, 学号,学院,专业,班级,);该关系的函数依赖图如下:从函数依赖图可以看出该关系存在非码决定因素, 没有传递依赖和部分依赖,所以是3NF 范式。4、设计数据库本系统在 Windows XP 环境中采用 Visual Basic 为开发平台,使用 SQL SERVER 创建数学 号证件号学院性
15、 别年 龄姓 名专业图书编号书名馆藏地种类班级馆藏副本可借副本11据库。 SQL Server 是一个关系数据库管理系统,SQL Server 2000 的特性包括:(1)Internet 集成。SQL Server 2000 数据库引擎提供完整的 XML 支持。它还具有构成最大的 Web 站点的数据存储组件所需的可伸缩性、可用性和安全功能。 (2)可伸缩性和可用性。同一个数据库引擎可以在不同的平台上使用,从运行 Microsoft Windows 98 的便携式电脑,到运行 Microsoft Windows 2000 数据中心版的大型多处理器服务器。(3)企业级数据库功能。SQL Serv
16、er 2000 关系数据库引擎支持当今苛刻的数据处理环境所需的功能。数据库引擎充分保护数据完整性,同时将管理上千个并发修改数据库的用户的开销减到最小。(4)易于安装、部署和使用。SQL Server 2000 中包括一系列管理和开发工具,这些工具可改进在多个站点上安装、部署、管理和使用 SQL Server 的过程。(1)创建数据库(1)打开 SQL 2000 企业管理器,右键单击数据库创建新数据库,命名为图书管理系统设计。(2)创建数据表创建数据库后,为数据库添加数据表,步骤如下。1.在企业管理器中右击数据库下的“表”文件夹。在弹出的快捷菜单中执行“新建表命令,出现表设计器。2.包括代码表,
17、借书卡信息表,借阅信息表,图书分类信息表,图书基本信息表,用户登录信息表。3.添加表的字段和其他详细资料。各表数据结构如上述数据分析所示。(3)设计前台程序设计图书基本情况表要求能清晰浏览现存图书信息。工程中添加窗体,名称为 f1.在窗体中添加label、command、datagrid、ADODC 控件。修改各个控件 caption 属性,给窗体和命令按钮添加背景图片,ADODC 控件 Visible 属性设置为 False。前台 VB 与后台 SQL 的连接主要靠ADODC 控件。整个系统运行下来,两者之间的连接主要靠 ADODC 控件。右键单击控件,选择属性,通用页点击生成,在弹出的对话
18、框中,选择 Microsoft OLE DB Provider For SQL 12Server,单击下一步按钮,打开连接选项卡,选择所需数据库路径和名称,即已建立的数据库。测试连接,若成功则可以连接。在属性页对话框中选择记录源,命令类型选择 2-AdCmdTable,点击表的存储过程下拉列表选择需要的表。单击确定,关闭属性页。DATAGRID 控件的 DATASource 属性选择 ADODC1,将二者连接,从而实现后台数据表反映到前台。写入代码,设计成功后运行界面如下:对图书基本情况浏览过后,应该具备对基本信息的增加、删除功能。利用命令按钮调用子菜单,实现对图书的增加和删除,子菜单命名为
19、f10,代码为: f10.Show vbModal。如此设计使程序简单易懂不易出现导致系统崩溃的错误,f10 中添加 ADODC 控件,visible 属性设置为 false,与数据库中图书基本信息表建立连接。添加 label、text 控件,修改各个 caption属性。设置 Text 的 DATASource 属性均为 ADODC1,图书编号对应的 text 的 DATAFeild 属性选择“图书编号” 、书名对应的 text 的 DATAFeild 属性选择“书名” ,依次类推,各个 text的 DATAFeild 属性选择相应的后台数据表列名。给命令按钮和 form 添加背景图片并更改
20、大小。写入代码后运行界面分别如下:13设计借书卡办理表要求能清晰浏览已办理的借书卡信息。工程中建立新表单。添加命令按钮、ADODC 控件、DATAGRID 控件。ADODC 控件连接数据库方法以及相应属性设置方法如上所述,连接“借书卡信息表” ,DATAGRID 控件 DATASource 属性选择 ADODC1。写入代码,运行后界面如下:14借书卡信息浏览后,要具备对借书卡的维护功能,通过命令按钮调用子表单实现对借书卡的办理与删除。需要用到 label、text 、command 、ADODC 控件。子界面设计、控件属性设置、前台与后台连接以及主菜单的命令按钮设计方法均如“图书基本信息”菜单
21、的设置方法相同。代码调用后运行结果如下图所示:15设计图书查询表要求能根据输入的图书编号查询图书的基本信息。工程中添加新表单,表单中添加label、text、 command、ADODC 控件按钮。更改各个 label 和 text 以及 command 的 caption属性如下图,给表单和命令按钮添加背景图片,调整大小。ADODC 控件属性如上所述,连接数据库,并隐藏,连接“图书分类信息表” 。各个 text 对应的 DATAField 以及DATASource 属性设置方法与上述“图书基本信息”子菜单设置方法相同。需注意的是图书查询只能按照图书编号查询,为避免出现借阅者不知情况而想要根据
22、其他类别进行查询的做法,不如根据书名查询,根据种类查询,要求其他 text 不能随意更改显示内容,方法是更改除图书编号对应的 text 之外的其他 text 的 enable 属性为 false,菜单运行后字体显示为银白色并且不能插入光标惊醒更改,写入代码后的运行界面如下: 16设计借阅信息表要求能清晰浏览已经借阅的图书信息及学生信息。工程中添加新表单,表单中添加label、ADODC、DATAGRID、command 。更改各个控件属性,给表单和命令按钮添加背景图片调整大小,ADODC 控件连接数据库,连接“借阅信息表”DATAGRID 控件设置数据源,方法与上述“图书基本信息”表单设置方法
23、相同。写入代码,运行成功后界面如下:17浏览完借阅信息后,要求能对借阅信息进行维护,实现借书还书功能。利用命令按钮调用子菜单实现。子表单设计方法如上,运行界面如下:18设计登陆界面在图书馆数据库系统中,从效率、安全、方便角度考虑,对不同级别的用户定义不同的视图:定义一般的读者对数据库的应用只包括对书的借出信息,著者,还书日期,和简介等信息的查找,不能对以上的信息的删除和更改,更新信息只能由图书馆类的服务人员作相应的操作。用户凭借用户名和密码使用系统。在工程中添加窗体,名称 form1。窗体中添加 frame 控件。在控件中添加label、text、 command、ADODC 控件。修改各个控
24、件 caption。给窗体和命令按钮添加背景图片并调整大小,隐藏 ADODC 控件。连接数据库中“用户登录信息表” ,方法如上所述。运行界面如下:19设计主窗体前台使用 VB 设计界面。新建工程,添加 MDI 模块,作为主窗体。添加状态条,要求界面运行后显示系统当前日期时间以及系统名。它属于 ActiveX 控件,先在部件中选中“Microsoft Windows Common Control 6.0”,将其加入工具箱中。在窗体中加入一个状态条控件 StatusBar1,该控件自动位于窗体下方。状态条可分为若干个条目即窗格,在控件上单击鼠标右键选中属性菜单,打开属性页对话框。在窗格标签中,插入
25、 3 个窗格,分别设置它们的样式,分别为 sbrDate、sbrTime、 sbrTExt。工具里菜单编辑器添加标题:“图书基本情况” ,点击插入,输入标题“借书卡办理” ,依次类推一共插入 5 个标题,剩余 3 个分别是“图书查询” 、 “借书还书” 、 “退出” 。将各个系统功能显示在主窗体上方界面运行如下:20(4)连接数据库为 SQL 数据库和 VB 之间建立一个数据连接。整个系统运行下来,两者之间的连接主要靠 ADODC 控件。右键单击控件,选择属性,通用页点击生成,在弹出的对话框中,选择 Microsoft OLE DB Provider For SQL Server,单击下一步按
26、钮,打开连接选项卡,选择所需数据库路径和名称,即已建立的数据库。测试连接,若成功则可以连接。在属性页对话框中选择记录源,命令类型选择 2-AdCmdTable,点击表的存储过程下拉列表选择需要的表。单击确定,关闭属性页。五、取得的结果图书管理信息系统成功运行,功能划分清晰,实现图书基本情况的录入、修改、删除,办理借书卡,实现借书功能、还书功能 ,以及方便的对图书进行查询。各个功能表单的运行结果如上所示,对于不同权限用户的主窗体显示如下:对于管理员:21对于学生:六、总结与体会1、问题与解决设计之初是不会将 SQL 与 VB 连接,实现后台 SQL 数据库,前台 VB 界面。解决方法是查阅了大量
27、图书,并在网上查找方法,最终是在老师的指导下完成连接。第二是对于一些较为复杂的操作,在 VB 菜单中的代码不会写,解决方法是查阅大量图书并在网上查找,最终是22在Visual Basic 程序设计实用教程 高等教育出版社一书中找到解决办法。第三是多个功能在一个表单中难以成功实现,比如图书基本信息表中,增加和删除图书信息后不可以继续翻页查找。解决办法是将这些互相冲突的功能分开,利用子菜单的形式实现增加和删除图书信息的功能。同样将借阅信息表单和借书卡信息表单更改为调用子菜单实现功能。不尽解决了功能冲突,使功能实现更为简单,同时运行界面美观、简洁、易于操作相应功能、无审美疲劳。2、体会设计系统过程中
28、逐步体会到关于系统的一些基本需求,如下:(1)可用性可用于各院图图书馆工作人员,以及各院学生(2)安全性自身提供了对数据的安全保护措施,数据进行集中管理同时避免了数据的不一致和冗余,只有管理中心数据库服务器的成员持有对数据访问的权限,本系统的用户、密码能保证安全。对任务、成员的管理,数据库同时提供了备份和恢复的功能,在数据库服务器出现问题的时候,能进行数据的快速恢复。(3)可维护性A、在用户输入一些不合理的数据的时候,能够进行一些合理的提示信息,不能因为输入错误而导致系统的错误,或者程序停止运行;B、程序运行时,对服务器和网络通信故障能够识别并提示,当故障排除后,程序恢复正常运行;C、数据库要
29、求有灾难备份机制,以防止数据的全部丢失。(4)可转移转换性系统在开发完毕以后,只实现了任务管理的功能和框架,在后续的开发中,可以在本框的基础上,采用 VB 中面向对象的特点来增加功能模块。可能增加的功能模块包括:查询操作中模糊查询功能、打印功能、数据备份功能、自动电子文稿筛选、电子文稿自动摘要、网络版功能。但是本系统也存在缺陷:(1)本系统仅能实现简单的基本功能,对于庞大的图书管理系统还应该具备财政管理,人员管理等等很多方面的设计,本系统均不具备23(2)系统不会有海量存储的要求,功能不支持大量存储信息。(3)技术约束。小组成员均是软件开发的初学者,相对于设计完整的数据库系统存在技术困难。七、
30、主要参考文献数据库系统概论高等教育出版社Visual Basic 程序设计 人民邮电出版社Visual Basic 程序设计实用教程 高等教育出版社互联网借阅八、附录本代码表均是部分重要代码,并未全部显示登陆界面代码如下:24Dim n As IntegerPrivate Sub Command1_Click()Dim txtsql As Stringtxtsql = “select * from 用户登录信息表 where 用户名=“ “ “ “ & “Initial Catalog=图书管理系统设计“Set cmd.ActiveConnection = ans1cmd.CommandTex
31、t = “select * from 图书分类信息表“rst1.CursorLocation = adUseClientrst1.Open cmd, , adOpenStatic, adLockBatchOptimisticrst1.Filter = “图书编号=“ & Text2.Text28rst1.MoveFirstFor i = 0 To rst1.RecordCount - 1Text1.Text = rst1.Fields(“书名“)Text2.Text = rst1.Fields(“图书编号“)Text3.Text = rst1.Fields(“馆藏地“)Text4.Text = rst1.Fields(“种类“)Text5.Text = rst1.Fields(“馆藏副本“)Text6.Text = rst1.Fields(“已借副本“)rst1.MoveNextNext iExit Subadderr:MsgBox “此书不存在“End Sub