图书管理系统数据库设计实验报告

图书管理系统设计实验报告

一、实验题目及其要求

编写一个图书管理系统,要求具有以下内容:

1)存储图书信息、采购和淘汰情况、租借情况

2)实现图书采购、淘汰、租借功能。

3)实现图书信息、采购和淘汰、库存、和租借情况查询

4)实现图书的采购、库存、淘汰、租借情况等统计

二、具体实现

在本次系统设计中,我采用了袁老师推荐的Delphi7来进行图书馆管理系统的开发,因为对比其他工具来说用Delphi进行图形界面(GUI)应用程序开发更加简便,而且其与数据库的连接也相当紧密和直接,使得整个开发过程事半功倍。

而对于DBMS,考虑到整个个开发过程的简便,我决定采用Microsoft SQL Server来进行开发,由于之前的实验已经对SQL Server已经比较熟悉,而且该服务器由于是搭建在学校服务器上,所以检查起来也就更加方便。

下面是具体的数据库设计:

1.数据库设计

首先,在得到题目后,我认真地研究了中国科大图书馆的图书管理系统,并且向图书馆管理人员咨询了一些细节设计问题,最终我设计了如下的5张表来作为本次图书管理系统的后台数据,如下:

首先是我们的E-R图,在这里我们的E-R图中省略了实体的属性值,因为在后面每张表中我们都会一一涉及到,所以在这里为了版面原因不再赘述。可以看到,我们的E-R图主要包含了三个实体:用户,书本,书目。其中用户具有多重身份,这是由于其中包含了多级用户,既可以对图书进行借阅、采购,又可以进行下架。在一个书目下又包含了多个书本信息,这是由于在图书馆中,同样的书不可能只有一本所造成。

未命名文件(1)

下面是第一张表:用户(读者)信息表。

/* 表Reader :用户信息表*/
create table PB15051157_LibrarySys_Reader
(
	学工号 char(20) not null, constraint PK_学工号 primary key(学工号),
	姓名 char(50) not null,
	联系方式 char(100) not null,
	已借书数目 int not null, constraint CK_已借书数目 check (已借书数目>= 0),
	读者级别 int not null, constraint CK_读者级别 check (读者级别in (0, 1, 2)),
	--0:开发人员	1:图书馆管理员	 2:普通读者
	密码char(100) not null,
  )

这是一张用户信息表,用以存放各个读者(包括图书管理人员)的信息,学工号是主键这里定义了读者级别,0级也就是最高级是图书馆系统维护人员,最主要的工作是管理图书馆管理人员的帐户,同时也可以进行修改、添加图书信息的工作;1级也就是图书馆管理人员,主要工作是修改、添加图书信息,同时管理普通读者的帐户;2级也就是普通读者,可以借书还书还有查看自己的信息。

/* 表TypeBook :每一种图书信息表*/
create table PB15051157_LibrarySys_TypeBook
(
	书目号 char(10) not null, constraint PK_书目号 primary key(书目号),
	图书位置 char(50) not null,
	书名 char(100) not null,
	作者 char(100) not null,
	出版社 char(100) not null,
	出版时间 char(50) not null,
	关键词 char(200),
	库存 int not null, constraint CK_库存 check (库存>= 0),
	可借阅数量 int not null, constraint CK_可借阅数量 check (库存>= 可借阅数量 and 可借阅数量>=0),
	单价 float not null, constraint CK_单价 check (单价>= 0)
);

这张表主要存放每种书的信息,比如说“数据库系统原理教程”就是当中的一个元素,同时书目号作为主键,这里要注意区别于下表之中的图书编号,这两个是完全不一样的两个概念,前者意味着两本相同的书具有相同的书目号,而后者则是每一本书都具有一个唯一的编号。“关键词”的设计主要是考虑到检索的时候可以更加方便读者利用关键词进行查询,而不必记得书本的全名。

/* 表SingleBook:每一本图书信息表*/
create table PB15051157_LibrarySys_SingleBook
( 
	图书编号 char(20) not null, constraint PK_图书编号 primary key(图书编号),
	书目号 char(10) not null, constraint FK_书目号 foreign key(书目号) references PB14209054_LibraryTable_TypeBook(书目号),
	采购号 char(10) not null, constraint FK_采购号 foreign key(采购号) references PB14209054_LibraryTable_InBook(采购号),
	下架号 char(10), constraint FK_下架号 foreign key(下架号) references PB14209054_LibraryTable_OutBook(下架号),
	借出状态 char(6) not null, constraint CK_借出状态 check (借出状态in ('可借阅','已下架', '已借出')),
	借出时间 char(50),
	应归还时间 char(50),
	借阅人 char(20), constraint FK_借阅人 foreign key(借阅人) references PB15051157_LibrarySys_Reader(学工号),
);

这张表主要用于存放每一本书的具体信息,比如说“数据库系统原理教程”这种数有n本这样的数,而每一本书的信息就是存放在这张表里。“书目号”、**“采购号”还有“下架号”**分别对应着这本书所属书的种类、以及采购和下架时对应的编号,并且作为外键可以查阅到相关的书籍信息、采购、下架信息,这里借阅人存储的是对应的借出的同学的学工号,并且作为外键方便查询对方信息。

/* 表BookIn :图书采购信息表*/
create table PB15051157_LibrarySys_BookIn
(
	采购号 char(10) not null, constraint PK_采购号 primary key(采购号),
	采购时间 char(50) not null,
	采购人 char(20) not null, constraint FK_采购人 foreign key(采购人) references PB14209054_LibraryTable_Reader(学工号),
	供应商 char(100) not null,
	采购数量 int not null, constraint CK_采购数量 check (采购数量>= 0),
	采购总额 float not null, constraint CK_采购总额 check (采购总额>= 0)
);

/* 表BookOut :图书下架信息表*/
create table PB15051157_LibrarySys_BookOut
(
	下架号char(10) not null, constraint PK_下架号p rimary key(下架号),
	下架时间char(50) not null,
	下架人char(20) not null, constraint FK_下架人 foreign key(下架人) references PB14209054_LibraryTable_Reader(学工号),
	下架数量int not null, constraint CK_下架数量 check (下架数量>= 0)
);

这两张表分别为采购表及下架表,用以记录采购信息及下架信息,在这里不做详细介绍。

2.SQL Server服务器的搭建

对于数据库的搭建,我们使用MicroSoft SQLServer 登陆了202.38.88.99并且在数据库中建立了如图的五个表格:

![Image 1](C:\Users\rusis\Documents\数据库报告\Image 1.png)

然后使用SQLServer的GUI工具向其中插入了相应的读者,图书,采购,淘汰信息,在这里所执行的SQL语句详情可见附件中的SQL文件。

3.Delphi 7图书管理系统应用的开发

在Delphi 7的设计当中,我们主要考虑了三个界面。

  • 主界面,主要是供读者进行查询图书以及归还和借阅图书的操作

  • 开发者界面,主要是供开发者进行新读者注册,读者密码重置,新图书上架,旧图书淘汰,添加采购信息的功能。

    在开发者界面里,还内嵌了一个图书情况统计的页面,可以详细统计以下:

    • 图书情况统计
    • 下架信息统计
    • 借阅信息统计
    • 采购信息统计
  • 读者界面,读者可以查询相关的借阅信息。

下面我们来按照题目要求逐步分析该系统的功能:

#####1、存储图书信息、采购和淘汰情况、租借情况

对于该点,由于我们采用了微软的SQL Server,因此相应的图书信息,采购和淘汰情况,租借情况全都储存在了学校机房上的SQL Server 服务器上,因此不必担心,只要通过我们的应用程序就可以实现对我们所存储的信息的读写。

#####2、实现图书采购、淘汰、租借功能

在我们的系统设计当中,有三类不同的账户,其中一二类账户登陆进去之后可以进行图书采购、淘汰、租借功能。而三类账户即读者账户,仅仅可以实现租借功能。如下图,先是登录了-0级账户,在蓝色方框出进行登录,然后上面显示了读者级别,并且会自动弹出开发者管理界面。

main

下图即为管理界面:

捕获

该界面比较直观,主要具备了以下功能:

  • 注册新用户/重置旧用户的密码

register

resetPNG

  • 对图书进行淘汰下架

    bookout

  • 添加采购信息

addbuy

  • 添加采购的图书信息

    • 若采购的图书的类别信息已在数据库内,从添加采购图书处管理即可,登记完之后,库存数量增加,可借阅图书增加,对图书类别信息无影响。

      Buy

    • 若采购的图书的类别信息不在数据库内,需要在添加图书信息处,先把图书的信息添加进去,然后再在添加采购图书处添加图书数量。

    addbook

下面再介绍租借功能的实现:

在主界面上用读者账号进行登录,登录成功后左上角会显示已登录信息,则可以进行借阅和归还操作。若未登录则会出现提示登录信息。

借阅图书效果如下:

boorrow

归还图书如下:

reborrow

之所以设计成如上的原因主要是因为在实际上的图书管理系统中,更多使用的是RFID技术存储和读取图书对应的图书编号,因此在这一步中,实际输入编号的操作是由RFID感应器来自动实现的,所以这样可以免去读者自己输入图书编号的麻烦,而且在一定程度上也可以防止误操作,保证我们系统的强壮可用性。

3&4、实现图书信息、采购和淘汰、库存、和租借情况查询和统计:

如下图,这是对图书信息、采购、淘汰、库存和租借情况的查询和统计。

主要分为如下四个部分:

  • 对于图书情况的查询统计:

    由于对于图书信息的详细查询在主页上也可以做到,因此在这里功能上不再赘余。只统计图书的总数,以及其中的类别和已下架的图书数。

searchbook

  • 对于借阅信息的查询和统计:

    在这里可以查询到每一本书的借阅情况,包括借阅人,借出时间和应归还时间,方便图书管理员进行管理。同时在这里,下面一栏还显示了未下架的图书总数,已借出的图书数以及尚可借阅的图书数。

lend

  • 对于采购信息的查询和统计:

    这里的设计主要是考虑到管理信息的需求,所以统计了不同供应商的数量,总共的采购次数以及到目前为止总共的采购总额。

outbook

5、系统额外的功能设计

在我们的设计的系统比题目要求增添了一些额外的功能,其设计的依据主要是来自于现实我们中国科大的图书馆系统。

  • 读者中心功能:主要是提供给读者用户,支持的功能有两个:修改账号的密码,以及查询本账号的借阅图书信息(包括借阅的图书的图书编号,书名,借出时间,应归还时间)

reader

  • 图书借阅额限制:

    和科大图书馆系统类似,我们这里也对每一个读者的借阅额做出了限制,每个人最多的可借阅量为8本,一旦达到8本就不可继续借阅,必须在归还相应的图书之后再进行借阅。

fullborrow

  • 多样化的图书搜索功能:

    在我们的系统中,提供了搜索图书馆中搜索库存图书的功能,并且提供了多种搜索方式,可以依照书名、作者、出版社,关键字进行模糊搜索,方便读者进行查询借阅,而且无需登录。

    search

  • 合理的人性化设计:

    在我们的系统中基本每一个界面都会带有一个退出/返回按钮,这是为了防止用户误操作造成无故退出,也更加符合系统的设计原则。

以上则为我们系统的所有功能介绍。

4、设计体会

在本次的大作业中,综合使用了本次课程中所教授的基本所有东西。例如有:

  • SQL 的基本使用
  • Dephi 7的用户程序设计
  • GUI的设计基本原则
  • 数据库的设计理论

在本次的设计过程中,首先必须要清楚我们所需要的设计的图书信息管理系统的结构。一个完善的图书馆系统所需要的基本模块都必须要先设计好才能让我们的设计过程不会被各种突然遇到的问题打断。

而在本次的锻炼实践中,我们也得到了从理论到实践的机会。在课程中学到的很多东西都可以有所得,有所悟,而不只是单纯的纸上谈兵。

同时,借此机会,我们也学到了很多课堂上学不到的东西,掌握了许多实用的工具,例如学会了SQL Server的基本使用,Dephi7 的基本使用,它们都是非常有用的工具,不仅仅是在课堂作业中,更会在我们日后的职业生涯中有着不可估摸的作用。其次本次系统的设计也对我学习用户界面设计有所启发,一个系统不仅仅需要具有合理的功能模块设计,而且也需要有更加人性化的界面设计,便于用户学习使用和掌握,这样才能使系统能够让更多的人接受!

展开阅读全文

没有更多推荐了,返回首页