简易图书管理系统
【摘要】:图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理。图书馆若采取手工方式对图书资料和图书借阅情况进行人工管理,由于资料繁多,手工处理的工作量大,整体管理效率低下,也不方便读者对图书资料的查阅。为了提高日常的图书管理效率,必须开发满足大多数中小型的图书管理要求的图书管理系统。文章针对通常的图书管理流程,深入分析了图书管理系统的需求和功能,为图书管理系统程序开发提供了现实理论基础。
二十一世纪是信息高度交流与发展的时代,面计算机系统则在信息时代扮演着极为重要的脚色,随着计算机的不断发展,计算机以渗透到各个领域,图书馆也不例外,图书馆的计算机化已不容迟缓。
图书馆在正常运营中总是面对大量的读者信息、书籍信息以及两者相互作用产生的借书信息、还书信息。需要对读者资源、书籍资源、借书信息、还书信息进行管理,及时了解各个环节中信息的变更,有利于提高管理效率。
一、 图书管理系统的需求分析
当决定要开发一个信息系统时,首先要对信息系统的需求进行分析,需求分析要做的工作是深入描述软件的功能和性能,确定软件设计的限制和软件同其他系统元素的接口细节,定义软件的其他有效性需求。
获得当前系统的处理流程。在此首先假设当前系统是手工处理系统。手工处理流程大致是这样的。读者将要借的书和借阅证交给工作人员,工作人员将每本书附带的描述书信息的卡和读者借阅证一起放在一个小格栏,并在借阅证和每本书上贴的借阅信息。这样借书过程就完成了。还书时读者将要还的图书交给工作人员,工作人员图书信息找到相应的书卡和借阅证,并填写相应的还书信息。
抽象出当前系统的逻辑模型。在理解当前系统“怎么做”的基础上,抽取其“做什么”的本质,从而从当前系统的物理模型抽象出当前系统的逻辑模型。在物理模型中有许多物理因素,随着分析工作的深入,有些非本质的物理因素就成为不必要的负担,因而需要对物理模型进行分析,区分出本质的物理因素就成为不必要的负担,因而需要对物理模型进行分析,区分出本质的和非本质的因素,去掉那些非本质的因素即可获得反映系统本质的逻辑模型。
建立目标系统的逻辑模型。分析目标系统与当前系统逻辑上的差别,明确目标系统到底要“做什么”,从而从当前系统的逻辑模型导出目标系统的逻辑模型。
在对原始借书流程进行分析后,我们对新的图书处理流程进行整理,采用自助借还书的方式,过程如下:
借书过程:读者挑选到所需图书后,在系统中输入图书编号以及自己的ID号,当然现实应用中可以与外接的条形码扫描,以及借阅证感应装置等联合使用。系统根据读者ID从读者文件和借阅文件中找到相应记录;根据图书编号从图书文件中找到相应记录。当然,有一些情况将不允许借书,比如,图书已被借阅(本系统以此为例),当然也可根据图书馆的实际情况进行设置。比如:
1、读者所借阅图书已超过该读者容许的最多借书数目。
2、该读者记录中有止借标志。
3、 该读者还有已超过归还日期而仍未归还的图书。
4、 该图书暂停外借。
若读者符合所有借书条件时,予以借出。系统在借阅文件中增加一条记录,记入读者ID、图书ID、借阅日期等内容。
还书过程:还书时读者只要将书交给管理人员,将自己的ID号,书上的图书编号输入系统,系统从借阅文件上找到相应记录,填上还书日期后写入归还图书文件,并从借阅文件上删去相应记录,就完成了简易的还书操作,若要增加超期,罚款等功能预算也是可以的,本系统只是简单实现,就没有增加这类模块。
前面着重对借还书流程进行了说细的阐述,下面介绍图书管理系统的总体功能要求。简单的图书管理系统主要包括下面的功能:
1、 借书:完成读者借书这一业务流程;
2、还书:完成读者还书这一业务流程;
3、查询图书:查询所有图书信息,以及更加图书编号(ID)或书名查询,本系统以ID查询为例,书名查询类似;
4、 对图书信息的管理:添加图书、删除图书,修改图书信息;
5、 读者查询:根据读者号,查询读者信;
6、图书借阅信息查询
7、对读者信息的管理:添加读者,删除读者,修改读者信息等。
二、 图书管理系统的功能分析
系统功能分析是在系统开发的总体任务的基础上完成。图书馆管理信息系统需要完成功能主要有:
● 管理员登陆,修改密码;
● 图书信息的输入,包括图书编号、图书名称、作者姓名、出版社名称、图书页数、入库日期等;
● 读者基本信息的输入,包括读者编号、读者姓名、读者类型、读者性别、电话号码、办证日期等;
● 图书信息的查询、修改、添加,删除;
● 读者基本信息的查询、修改,以及添加、删除;
● 借书信息的输入,包括读者编号、书籍编号、借书日期等(可根据实际需要增加或减少)
● 借书信息的查询;
● 还书信息的输入,包括读者编号、书籍编号、还书日期等(可根据实际需要增加或减少)
●还书信息的查询。
系统功能模块:
管理员:
1、查询信息:查询图书信息(ID查询、查询所有)、管理员信息、图书借阅信息、图书归还信息;
2、管理图书:添加图书、删除图书、修改图书信息;
3、管理读者:添加读者、删除读者、修改读者信息;
4、修改密码:可以修改自己的登录密码。
读者:
1、查询信息:查询图书信息,查询个人借阅信息;
2、借阅图书
3、归还图书
系统功能模块图:
三、数据库设计
数据库是数据管理的最新技术。十多年来数据库管理系统已从专用的应用程序发展成为通用的系统软件。由于数据库具有数据结构化,最低冗余度,较高的程序与数据独立性,易于扩充,易于编制应用程序等优点,较大的信息系统都是建立在数据库设计之上的。因此不仅大型计算机及中小型计算机,甚至微型机都配有数据库管理系统。
数据库系统的出现使信息系统从以加工数据的程序为中心转向围绕共享的数据库为中心的新阶段。这样既便于数据的集中管理,又有利于应用程序的研制和维护,提高了数据的利用性和相容性,提高了决策的可靠性。目前,数据库已经成为现代信息系统不可分割的重要组成部分。数据库技术也是计算机领域中发展最快的技术之一。
数据库设计是把现实世界的实体模型与需求转换成数据库的模型的过程,它是建立数据库应用系统的核心问题。数据库及其应用的性能都建立在良好的数据库设计的基础之上,数据库的数据是一切操作的基础,如果数据库设计不好,那么其它一切用于提高数据库性能的方法收效都是有限的。数据库设计的关键是如何使设计的数据库能合理地存储用户的数据,方便用户进行数据处理。
设计数据库必须遵循一定的规则,在关系型数据库中,这种规则就是范式,范式是符合某一种级别的关系模式的集合。一般人们设计数据库遵循第三范式。即:数据库表中不包含已在其他表中包含的非主关键字信息。采用范式减少了数据冗余,节约了存储空间,同时加快了增、删、改的速度。
整个系统所包括的信息有图书信息、读者信息、图书借阅信息、图书归还信息。可将这些信息抽象为下列系统所需要的数据项和数据结构:
1)图书信息(编号、图书名称、作者、页数、价格、出版社、入库时间)
2)读者信息(编号、姓名、性别、读者类型、年龄、登记日期、电话)
3)管理员(编号、用户名、密码)
4)图书借阅信息(图书编号,读者ID,借书时间)
5)图书归还信息(图书编号,读者ID,归还时间)
注:带下划线表示主键
图书信息表结构设计:
表1 图书信息表tab_book
字段名称 |
数据类型 |
字段长度 |
是否为空 |
说明 |
bookid bookname |
Varchar2 Varchar2 |
20 50 |
No No |
图书编号 图书名称 |
author |
Varchar2 |
50 |
No |
作者 |
price |
float |
8 |
Yes |
图书价格 |
Publish |
Varchar2 |
50 |
Yes |
出版社 |
intime |
Varchar2 |
20 |
No |
图书入库时间 |
page |
int |
10 |
Yes |
图书页码 |
读者信息表结构设计:
表2 读者信息表tab_reader
字段名称 |
数据类型 |
字段长度 |
是否为空 |
说明 |
Id |
Varchar2 |
20 |
No |
读者编号 |
name |
Varchar2 |
50 |
No |
姓名 |
sex |
Varchar2 |
4 |
Yes |
性别 |
Age |
Int |
4 |
Yes |
年龄 |
readertype |
Varchar2 |
10 |
Yes |
读者类型 |
tel |
Varchar2 |
20 |
No |
电话 |
intime |
Varchar2 |
20 |
No |
登记时间 |
管理员信息表结构设计:
表 3 管理员信息表tab_manager
字段名称 |
数据类型 |
字段长度 |
是否为空 |
说明 |
ID |
int |
10 |
No |
编号 |
name |
varchar |
50 |
No |
名称 |
password |
varchar |
20 |
No |
密码 |
图书借阅信息表结构设计:
表 4 图书借阅信息表tab_borrow
字段名称 |
数据类型 |
字段长度 |
是否为空 |
说明 |
BID |
Varchar2 |
20 |
No |
图书编号 |
Borid |
Varchar2 |
30 |
No |
借阅人ID |
Bortime |
Varchar2 |
30 |
No |
借阅时间 |
图书归还信息表结构设计:
表 5 图书归还信息表tab_retrun
字段名称 |
数据类型 |
字段长度 |
是否为空 |
说明 |
BID |
Varchar2 |
20 |
No |
图书编号 |
retid |
Varchar2 |
30 |
No |
还书人ID |
retime |
Varchar2 |
30 |
No |
归还时间 |
程序设计
数据库连接
public class JDBCUtils { // 连接数据库必备的基本连接 /** *DriverManager 是驱动管理类 * 1)可以通过重载getconnection方法获取数据库连接 * 2)可以同时管理多个驱动程序 */ public static ConnectiongetConnection() { // 1.准备创建数据库连接的四个字符串 导入驱动 Properties properties =new Properties(); //加载流 InputStream in =JDBCUtils.class.getClassLoader().getResourceAsStream("jdbc.properties"); try { properties.load(in); } catch (IOException e1){ e1.printStackTrace(); } //加载具体的信息 String username =properties.getProperty("username"); String password =properties.getProperty("password"); String jdbcUrl =properties.getProperty("jdbcUrl"); String driver =properties.getProperty("driver"); Connection conn = null; try { // 2.加载驱动 Class.forName(driver); // 3.建立与数据库的连接 conn =DriverManager.getConnection(jdbcUrl, username, password); } catch(ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e){ e.printStackTrace(); } // 返回建立的连接 return conn; } /** * 释放连接 */ public static void freeAll(Connection conn,Statement st,ResultSetrs){ if(conn!=null){ try { conn.close(); } catch (SQLException e){ e.printStackTrace(); } } if(st!=null){ try { st.close(); } catch (SQLException e){ e.printStackTrace(); } } if(rs!=null){ try { rs.close(); } catch (SQLException e){ e.printStackTrace(); } } } }