图书馆管理系统毕业设计论文1

更新时间:2023-08-15 01:04:01 阅读量: 人文社科 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

毕业设计(论文)

题目:

姓 名学 号 专 业 计算机网络 指导教师 周亚凤

南京航空航天大学

2012年4月

目录

摘要 ....................................................................... IV 前言 ........................................................................ V 第一章 图书馆管理系统分析 ................................................... 1 1.1 需求分析 .............................................................. 1 1.2 功能分析 .............................................................. 2 1.3 系统用例图设计 ........................................................ 2 1.4 绘制系统流程图 ........................................................ 3 1.5 系统的开发环境 ........................................................ 4 第二章 数据库分析与设计 ..................................................... 5 2.1 数据库分析 ............................................................ 5 2.2 数据库概念设计 ........................................................ 5 2.3 数据逻辑结构设计 ...................................................... 7 2.4 各表之间的联系图 ...................................................... 9 第三章 系统设计与功能实现 .................................................. 10 3.1 数据库Dao类的构建 ................................................... 10 3.2 系统登录模块 ......................................................... 11 3.3 主窗体模块 ........................................................... 13 3.4 图书类别管理模块 ..................................................... 15 3.5 图书信息管理模块 ..................................................... 17 3.6 读者信息管理模块 ..................................................... 21 3.7 图书订购管理模块 ..................................................... 24 3.8 图书借阅管理模块 ..................................................... 27 3.9 系统维护模块 ......................................................... 30

第四章 系统测试 ............................................................ 35 4.1 测试项目 ............................................................. 35 4.2 测试用例 ............................................................. 35 结束语 ..................................................................... 37 参考文献 ................................................................... 38

图书馆管理系统

摘要

图书馆管理系统是采用Java做前台,后台数据库则采用的是SQL Server 2005,本系统提供6个功能模块,分别是图书类别管理模块、图书信息管理模块、读者信息管理模块、新书订购管理模块、图书借阅模块,以及系统维护模块。这6个模块里又有许多子模块,通过这些模块之间的相互连接与配合,完成操作员发出的各种指令。

图书馆管理系统是一个供内部人员使用的系统。而图书馆的工作人员也分为两类,一类是操作人员,主要负责图书的借阅和归还的工作;一类是管理员,除了操作人员的所有功能外,还能够对书籍列表、书籍信息、读者信息等进行管理。

论文将全面介绍所设计的图书馆管理系统的系统功能和业务流程,并对系统进行详细的数据分析和设计,最终使用Java完成系统开发。

关键词:图书馆管理系统,SQL Server 2005,Java

前言

随着社会的发展,人们对于知识的需求也在不断地增长。书籍作为人们获取并增长知识的主要途径,使得图书馆在人们生活中占有了一定位置。但是近几年来,随着书量的不断增长,造成了书库空间极度不足,图书挤压,管理不善。这些都直接影响了读者对图书馆藏书的充分利用。这时图书馆就特别需要开发一套图书馆管理系统,通过该系统来提高图书馆的管理效率,从而减少管理方面的工作流和成本。

一个现代化的图书馆在正常运营中总是面对大量的读者信息,书籍信息以及两者相互作用产生的借书信息,还书信息。面对图书馆数以万计的图书,纷繁复杂的读者信息,频繁更替的借还书信息,传统的直接方法不但管理出现漏洞,造成损失。因此有一个智能化、系统化、信息化的图书管理系统十分重要的。充分利用计算机的功能实现对读者管理、书籍管理,借阅管理等自动化控制,将会使图书馆的工作大大减弱。方便友好的图形界面、简便的操作、完善的数据库管理。将会使得图书馆系统极大限度的应用于现代化图书管理中。

第一章 图书馆管理系统分析

1.1 需求分析

图书馆管理系统是一个高度集成的图书信息处理系统,通过将图书馆的各种功能进行整合,从而达到显示检索信息,提高工作效率,降低管理成本等目的。一个典型的图书馆管理系统应该能够管理所有的图书种类,图书信息以及读者信息,还需要提供各种图书信息的检索查询功能。该系统还需要能够对图书的借阅,归还进行管理,并对读者的罚款进行自动计算。通过该系统的自动化管理,能够大大减少图书馆管理人员,还能减少管理人员的工作任务,从而降低管理开销和成本。

一个完整的图书馆管理系统包括前台和后台,前台主要是显示在计算机屏幕上的显示界面,有各种指令按钮,操作框以及文本框,后台主要是为前台的一些操作提供一些必要的数据,也就是一个相对于系统比较完整的数据库,操作员以及各类图书的信息,借书者的信息等等。

一个最基本的图书馆管理系统要有如下几个重要功能: (1)用户在借书超期的情况下得到来自管理员的提醒。

(2)管理员可以方便进行图书管理,用户管理,管理员管理。图书管理包括图书信息以及图书分类的添加,修改,删除。用户管理包括用户信息的添加,删除,修改。管理员管理包括管理员信息的添加,删除,修改等。

(3)用户和管理员可以修改自己的密码,修改前需先核实自己的原始密码。 (4)未注册用户(游客)也可以浏览所有的图书信息和分类信息,但是无法借阅。 (5)实现模糊查询,使用户得到更多的相关记录。并且考虑使用的方便性,一些经常使用的输入无须用户输入,比如进行图书查询时图书分类只须用户做选择就可以。 (6)考虑程序执行操作时可能出现的情况,比如删除图书分类时该分类下存在图书,程序自动跳转该分类图书查看。删除某个用户,如果存在借书记录则不允许删除,跳转到该用户的借书记录。等待管理员确认该用户所借图书已经全部归还之后才允许删除该用户信息。

一个图书馆管理系统要是能实现以上的各种功能,那么这个图书馆管理系统也就算是比较成功的一个系统了。

1.2 功能分析

根据以上需求分析,我所设计的图书馆管理系统有6个功能模块,分别是图书类别管

理模块,图书信息管理模块,读者信息管理模块,新书订购管理模块,图书借阅模块以及系统维护模块。其中各功能模块的具体说明如下:

图书类别管理模块:该模块主要负责管理图书馆的图书种类信息,如图书种类的名称、可借天数、罚款数目等信息。

图书信息管理模块:该模块主要负责管理图书馆的图书信息,如图书编号、图书名称、作者、出版社等信息。

读者信息管理模块:该模块主要负责管理图书馆的读者信息,如读者编号、读者信息、证件号码、最大借书量等信息。

图书订购管理模块:该模块主要负责管理图书馆的新书订购信息、包括新书订购和验收新书两个子模块。

图书借阅管理模块:该模块主要负责图书馆的书籍借阅和归还信息,包括图书借阅、图书归还、图书搜索3个子模块。

系统维护模块:该模块主要负责图书馆的工作人员信息,包括用户管理和更改系统口令两个子模块。

1.3 系统用例图设计

图书馆管理系统是一个内部人员使用的系统,也就是说不是所有的人都能够使用它,只有图书馆的工作人员才能使用。而图书馆的工作人员也分为两类,一类是操作人员,主要负责图书的借阅和归还的工作;一类是管理员,除了操作人员的所有功能外,还能够对书籍列表,书籍信息,读者信息等进行管理。下面以管理员为例绘制其所对应的用例图如图1.1所示。

图1.1 管理员用例图

1.4 绘制系统流程图

本系统首先需要对用户的身份进行识别,只有合法的用户才能进入系统,否则将无法进入系统。进入系统后,首先打开系统主窗体,在系统首页的菜单栏或者功能区可以选择各种导航链接来进行各种操作。由于不同权限的用户对于系统有不同的功能,下面以功能最多的管理员为例,其系统流程图如图1.2所示。

图1.2 系统流程图

1.5 系统的开发环境

图书馆管理系统的具体开发环境要求如下: (1)系统开发平台:Eclipse 3.4。

(2)数据库管理系统软件:SQL Server 2005。 (3)运行平台:Windows 7。 (4)Java开发包:JDK 5.0以上。 (5)分辨率:800×600以上。

(6)GUI开发包:Swing。

第二章 数据库分析与设计

2.1 数据库分析

在开发图书馆管理系统时,考虑到图书量大,数据库维护大的特点,选用SQL Server 2005作为数据库管理系统。在SQL Server 2005中新增一个数据库,其数据库名为db_library。数据库中可以包含图书信息、图书类别信息、图书借阅信息、操作员信息、图书订购信息及读者信息等实体,用来存储不同的信息。

2.2 数据库概念设计

本系统一共设计规划出6个实体,分别是图书类别信息实体、图书信息实体、读者信息实体、操作员实体、图书借阅信息实体以及图书订购信息实体。

图书的类别有很多,因此可以建立一个图书馆类别信息表,专门用来保存图书的类别信息。同时因为每种类别的书籍阅读时间有所不同,所以需要在类别表中保存该类别可借天数信息。图书类别信息实体E-R图如图2.1所示。

图2.1 图书类别信息实体E-R图

对于图书馆来说最重要的就是要管理其下的书籍,所以需要建立一个图书信息表,用来保存图书的所有信息。图书信息实体E-R图如图2.2所示。

图2.2 图书信息实体E-R图

要想在图书馆借书首先需要进行登记并交付押金。领取读书卡才能借书。所以需要建立一个读者信息表来保存图书馆的所有读者的登记信息。读者信息实体E-R图如图2.3所示。

图2.3 读者信息实体E-R图

图书馆里一般有一个以上的系统操作员,需要建立一个操作员信息表,用来保存操作员的身份信息。操作员信息实体E-R图如图2.4所示。

图2.4 操作员信息实体E-R图

图书馆最大的功能就是能够借书,这时需要建立一个图书借阅信息表,用来保存读者的借书信息。图书的借阅信息实体E-R图如图2.5所示。

图2.5 图书的借阅信息实体E-R图

图书馆除了借书,还需要到出版社或其他代理商订购新书,这是需要建立一个图书订购信息表,用来保存所有的订购信息。图书订购信息实体E-R图如图2.6所示。

图2.6 图书订购信息实体E-R图

2.3 数据逻辑结构设计

根据设计好的各实体E-R图创建数据库的逻辑结构,数据库各表的结构如下: (1)图书类别信息采表用来储存所有的图书类别信息,包括图书类别编号、图书类别名称、可借天数以及迟还一天的罚款数目4个字段。该表的逻辑结构如表2.1所示。

表2.1 图书类别信息表

字 段 名

id typeName days fk

数 据 类 型 整数(int) 文本(varchar) 整数(int) 浮点数 是 否 主 键

是 否 否 否 描 述 图书类别编号 图书类别名称 可借天数

迟还一天的罚款数目

(2)图书信息表用来储存所有的图书信息,包括图书编号、类别编号、图书名称、作者、译者、出版社、出版日期以及书籍价格8个字段。该表的逻辑结构如表2.2所示。

表2.2 图书信息表

字 段 名

ISBN typeId bookname writer translator publisher date price

数 据 类 型 文本(varchar) 整数(int) 文本(varchar) 文本(varchar) 文本(varchar) 文本(varchar) 日期时间(datetime) 金钱货币(money) 是 否 主 键

是 否(外键)

否 否 否 否 否 否 描 述 图书编号 类别编号 图书名称 作者 译者 出版社 出版日期 书籍价格

(3)读者信息表用来储存所有的读者信息,包括读者姓名、性别、年龄、证件号码、会员证有效日期、最大借书量、电话号码、押金、证件类型、职业、读者编号以及办证日期

12个字段。该表的逻辑结构如表2.3所示。

表2.3 读者信息表

字 段 名

name sex age identityCard

date maxNum tel keepMoney

zj zy ISBN bztime

数 据 类 型 文本(varchar) 文本(varchar) 整数(int) 文本(varchar) 日期时间(datetime)

整数(int) 文本(varchar) 金钱货币(money)

整数(int) 文本(varchar) 文本(varchar) 日期时间(datetime) 是 否 主 键

是 否(外键)

否 否 否 否 否 否 否 否 是 否 描 述 读者姓名 读者性别 读者年龄 证件号码 会员证有效日期 最大借书量 电话号码 押金 证件类型 职业 读者编号 办证日期

(4)操作员信息表用来保存操作员信息,包括操作员编号、用户名、性别、年龄、证件号码、工作时间、电话号码、是否为管理员、密码9个字段。该表的逻辑结构如表2.4所示。

表2.4 操作员信息表

字 段 名

数 据 类 型 整数(int) 文本(varchar) 文本(varchar) 整数(int) 文本(varchar) 日期时间(datetime) 文本(varchar) 整数(int) 文本(varchar)

id name sex age identityCard workdate tel admin password

是 否 主 键 是(自动递增)

否 否 否 否 否 否 否 否 描 述 操作员编号 用户名 性别 年龄 证件号码 工作时间 电话号码 是否为管理员

密码

(5)图书借阅信息表用来保存所有图书的借阅信息,包括借阅编号、书籍编号、操作员编号、读者编号、是够归还、借书日期以及应还日期7字段。该表的逻辑结构如表2.5所示。

表2.5 图书借阅信息表

字 段 名

id bookISBN operatorId readerISBN

数 据 类 型 整数(int) 文本(varchar) 整数(int) 文本(varchar)

是 否 主 键 是(自动递增) 否(外键) 否(外键) 否(外键) 描 述 借阅编号 书籍编号 操作员编号 读者编号

isback borrowDate backdate

整数(int)

日期时间(datetime) 日期时间(datetime) 否 否 否 是否归还 借书日期 应还日期

(6)图书订购信息表用来保存图书馆的所有订购信息,包括书籍编号、订购日期、订购数量、操作员、是否验收以及书籍折扣6个字段。该表的逻辑结构如表2.6所示。

表2.6 图书订购信息表

字 段 名

ISBn date number operator checkAndAccep

t zk

数 据 类 型 文本(varchar) 日期时间(datetime)

整数(int) 文本(varchar)

整数(int)

浮点

是 否 主 键

是 否 否 否

否 否

描 述 书籍编号 订购日期 订购数量 操作员 是否验收 书籍折扣

2.4 各表之间的联系图

各表间的联系图如图2.7所示。

图2.7 各表间联系图

第三章 系统设计与功能实现

3.1 数据库Dao类的构建

首先定义了一个类Dao,并为该类添加了4中方法,分别是构造方法Dao、查询方法executeQuery、更新方法executeUpdate以及关闭连接方法close。 public class Dao {

protected static String dbClassName = 象 }

private static ResultSet executeQuery(String sql) { //查询方法 try {

if(conn==null) new Dao(); //如果连接对象为空,则重新调用构造方法

}

"com.microsoft.sqlserver.jdbc.SQLServerDriver";//数据库连接驱动类

protected static String dbUrl = "jdbc:sqlserver://localhost:1433;"

+ "DatabaseName=db_library;";//数据库连接URL

//数据库用户名

protected static String dbUser = "sa"; protected static String dbPwd = "123"; private static Connection conn = null; private static String ISBN; private Dao() { try {

if (conn == null) {

//数据库密码

//数据库连接对象

//构造方法

//如果连接对象为空 //加载驱动类

Class.forName(dbClassName);

conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd);//获得连接对

} catch (Exception ee) { }

ee.printStackTrace();

return conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,

ResultSet.CONCUR_UPDATABLE).executeQuery(sql);//执行查询

} catch (SQLException e) {

e.printStackTrace(); return null;

//返回null值

} finally {

}

private static int executeUpdate(String sql) { try {

if(conn==null) new Dao(); //如果连接对象为空,则重新调用构造方法

return conn.createStatement().executeUpdate(sql);//执行更新

//更新方法

}

} catch (SQLException e) {

e.printStackTrace(); return -1;

} finally { } }

public static void close() {//关闭方法 try {

conn.close();//关闭连接对象

} catch (SQLException e) {

e.printStackTrace();

}finally{

conn = null; //设置连接对象为null值

}

}

3.2 系统登录模块

对于图书馆管理系统而言,不是所有的用户都是可以使用的,所有需要添加一个登陆模块。通过该模块来对用户的合法性进行判断,只有合法的用户才能进入到系统。整个登陆模块的实现非常简单,相信读者能够快速掌握其开发过程。登录模块的运行结果如图3.1

所示。

图3.1 系统登录界面

3.2.1 登陆窗体界面设计与实现

登陆窗体的界面设计我依然采用的是比较传统的方法,新建一个类BookLoginFrame类,用来显示登录窗体。在该窗体中需要使用到四类控件,分别是JLabel、JTextFieid、JPasswordField以及JButton。其中控件JLabel是用来显示顶部的图片以及标签文本;控件JTextFieid用来接收用户名输入信息;控件JPasswordField用来接收密码输入信息;控件JButton用来创建登陆和重置按钮。 3.2.2 操作员登陆

在Dao类中新增一个方法check,通过该方法来检测用户信息是否合法。该方法接收两个参数,分别是操作员用户名name,操作员密码passsward。主要方法如下:

public static Operater check(String name, String password) { Operater operater=new Operater();//操作员信息对象

String sql = "select * from tb_operator where name='" + name

+ "' and password='" + password + "'and admin=1"; ResultSet rs = Dao.executeQuery(sql);

try {

while (rs.next()) {

operater.setId(rs.getString("id")); operater.setName(rs.getString("name")); operater.setGrade(rs.getString("admin")); operater.setPassword(rs.getString("password"));

……

}

} }

3.3 主窗体模块

图书馆管理系统的主窗体模式是由三个部分组成的。第一部分是位于主窗体上组上端的系统菜单栏,用来实现链接系统功能菜单。第二部分位于菜单栏下面的工具栏,用来提供各种常用功能链接。第三部分位于工具下的系统功能窗口区域,主要用来显示各种功能窗口。

3.3.1 主窗体界面设计

在主窗体中可以显示其他功能窗体,所以需要在该窗体中加入一个桌面窗体。通过将其他功能窗体加入到该窗体中。从而实现多窗体显。同时在主窗口体中,还需要添加一个main方法,该方法为系统入口的方法,通过执行该方法来执行系统。其主要代码如下: public class Library extends JFrame { private static final JDesktopPane

DESKTOP_PANE = new JDesktopPane();//桌面窗体

public static void main(String[] args) { try {

UIManager.setLookAndFeel(UIManager

.getSystemLookAndFeelClassName());//设置系统界面外观 new BookLoginIFrame();//登录窗口

} catch (Exception ex) { ex.printStackTrace();

} }

public static void addIFame(JInternalFrame iframe) { // 添加子窗体的方法 } }

下面再来配置主窗体的其他属性,首先需要设置其大小和位置,然后还要设置其菜单栏和工具栏,最后需要在桌面窗体中添加一个背景图片。其代码实现如下。

DESKTOP_PANE.add(iframe); //新增子窗体

public Library() {

super();

setDefaultCloseOperation(

WindowConstants.EXIT_ON_CLOSE);////设置关闭按钮处理事件

Toolkit tool = Toolkit.getDefaultToolkit();

//获得默认的工具箱 //获得屏幕的大小

//设置窗体大小

Dimension screenSize = tool.getScreenSize(); setSize(800, 600);

setLocation((screenSize.width - getWidth()) / 2,

(screenSize.height - getHeight()) / 2);

setTitle("图书馆管理系统");

//设置窗体位置

//设置窗体标题

JMenuBar menuBar = createMenu(); //调用创建菜单栏的方法 setJMenuBar(menuBar);

//设置菜单栏

JToolBar toolBar = createToolBar(); // 调用创建工具栏的方法 getContentPane().add(toolBar, BorderLayout.NORTH);//设置工具栏 final JLabel label = new JLabel(); //创建一个标签,用来显示图片 label.setBounds(0, 0, 0, 0);

//设置窗体的大小和位置

label.setIcon(null); // 窗体背景

DESKTOP_PANE.addComponentListener(new ComponentAdapter() {

public void componentResized(final ComponentEvent e) {

Dimension size = e.getComponent().getSize();//获得组件大小 label.setSize(e.getComponent().getSize());//设置标签大小 label.setText("<html><img width=" + size.width + " height="

+ size.height + " src='"

+ this.getClass().getResource("/backImg.jpg") + "'></html>");//设置标签文本

} };

DESKTOP_PANE.add(label,new Integer(Integer.MIN_VALUE));//将标签添加到桌面窗体

getContentPane().add(DESKTOP_PANE);//将桌面窗体添加到主窗体中

}

3.3.2 主窗体菜单栏设计

在Library类中定义一个createMenu方法,在该方法中实现菜单栏的设计。其运行界面如图3.2所示。

图3.2 主窗体界面

3.4 图书类别管理模块

图书类别管理模块包含两个子模块,分别是图书类别添加和图书类别修改。其中图书类别添加模块用来录入新的图书类别信息,图书列别修改模块用来修改已有的图书列别信息。系统界面如图3.3所示。

图3.3 图书类别修改界面

3.4.1 图书类别添加模块

要添加图书类别信息,首先要在Dao中添加一个InsertbookType方法,通过该方法来接受用户输入的所有书籍类别信息,然后执行插入操作。其主要方法如下:

public static int InsertBookType(String bookTypeName,String days,double fk){ int i=0;

try{String sql="insert into

tb_bookType(typeName,days,fk)

values('"+bookTypeName+"','"+days+"',"+fk+")";

i=Dao.executeUpdate(sql);//执行插入操作

}

……

}

3.4.2 图书类别修改模块

修改图书类别信息同保存图书类别信息非常类似,首先在Dao中添加一个方法UpdatebookType。通过该方法来接收图书修改表单中提交的书籍类别信息。其代码如下:

public static int UpdatebookType(String id,String typeName,String days,String fk){

int i=0;

try{String sql="update

tb_bookType set typeName='"+typeName+"',

本文来源:https://www.bwwdw.com/article/d15j.html

Top