图书馆管理系统本科毕业论文.docx
- 文档编号:24236338
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:42
- 大小:1.53MB
图书馆管理系统本科毕业论文.docx
《图书馆管理系统本科毕业论文.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统本科毕业论文.docx(42页珍藏版)》请在冰豆网上搜索。
图书馆管理系统本科毕业论文
毕业设计(论文)
题目:
图书馆管理系统
姓名陈平
学号
专业计算机网络
指导教师周亚凤
南京航空航天大学
2012年4月
图书馆管理系统
摘要
图书馆管理系统是采用Java做前台,后台数据库则采用的是SQLServer2005,本系统提供6个功能模块,分别是图书类别管理模块、图书信息管理模块、读者信息管理模块、新书订购管理模块、图书借阅模块,以及系统维护模块。
这6个模块里又有许多子模块,通过这些模块之间的相互连接与配合,完成操作员发出的各种指令。
图书馆管理系统是一个供内部人员使用的系统。
而图书馆的工作人员也分为两类,一类是操作人员,主要负责图书的借阅和归还的工作;一类是管理员,除了操作人员的所有功能外,还能够对书籍列表、书籍信息、读者信息等进行管理。
论文将全面介绍所设计的图书馆管理系统的系统功能和业务流程,并对系统进行详细的数据分析和设计,最终使用Java完成系统开发。
关键词:
图书馆管理系统,SQLServer2005,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)系统开发平台:
Eclipse3.4。
(2)数据库管理系统软件:
SQLServer2005。
(3)运行平台:
Windows7。
(4)Java开发包:
JDK5.0以上。
(5)分辨率:
800×600以上。
(6)GUI开发包:
Swing。
第二章数据库分析与设计
2.1数据库分析
在开发图书馆管理系统时,考虑到图书量大,数据库维护大的特点,选用SQLServer2005作为数据库管理系统。
在SQLServer2005中新增一个数据库,其数据库名为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
整数(int)
是
图书类别编号
typeName
文本(varchar)
否
图书类别名称
days
整数(int)
否
可借天数
fk
浮点数
否
迟还一天的罚款数目
(2)图书信息表用来储存所有的图书信息,包括图书编号、类别编号、图书名称、作者、译者、出版社、出版日期以及书籍价格8个字段。
该表的逻辑结构如表2.2所示。
表2.2图书信息表
字段名
数据类型
是否主键
描述
ISBN
文本(varchar)
是
图书编号
typeId
整数(int)
否(外键)
类别编号
bookname
文本(varchar)
否
图书名称
writer
文本(varchar)
否
作者
translator
文本(varchar)
否
译者
publisher
文本(varchar)
否
出版社
date
日期时间(datetime)
否
出版日期
price
金钱货币(money)
否
书籍价格
(3)读者信息表用来储存所有的读者信息,包括读者姓名、性别、年龄、证件号码、会员证有效日期、最大借书量、电话号码、押金、证件类型、职业、读者编号以及办证日期12个字段。
该表的逻辑结构如表2.3所示。
表2.3读者信息表
字段名
数据类型
是否主键
描述
name
文本(varchar)
是
读者姓名
sex
文本(varchar)
否(外键)
读者性别
age
整数(int)
否
读者年龄
identityCard
文本(varchar)
否
证件号码
date
日期时间(datetime)
否
会员证有效日期
maxNum
整数(int)
否
最大借书量
tel
文本(varchar)
否
电话号码
keepMoney
金钱货币(money)
否
押金
zj
整数(int)
否
证件类型
zy
文本(varchar)
否
职业
ISBN
文本(varchar)
是
读者编号
bztime
日期时间(datetime)
否
办证日期
(4)操作员信息表用来保存操作员信息,包括操作员编号、用户名、性别、年龄、证件号码、工作时间、电话号码、是否为管理员、密码9个字段。
该表的逻辑结构如表2.4所示。
表2.4操作员信息表
字段名
数据类型
是否主键
描述
id
整数(int)
是(自动递增)
操作员编号
name
文本(varchar)
否
用户名
sex
文本(varchar)
否
性别
age
整数(int)
否
年龄
identityCard
文本(varchar)
否
证件号码
workdate
日期时间(datetime)
否
工作时间
tel
文本(varchar)
否
电话号码
admin
整数(int)
否
是否为管理员
password
文本(varchar)
否
密码
(5)图书借阅信息表用来保存所有图书的借阅信息,包括借阅编号、书籍编号、操作员编号、读者编号、是够归还、借书日期以及应还日期7字段。
该表的逻辑结构如表2.5所示。
表2.5图书借阅信息表
字段名
数据类型
是否主键
描述
id
整数(int)
是(自动递增)
借阅编号
bookISBN
文本(varchar)
否(外键)
书籍编号
operatorId
整数(int)
否(外键)
操作员编号
readerISBN
文本(varchar)
否(外键)
读者编号
isback
整数(int)
否
是否归还
borrowDate
日期时间(datetime)
否
借书日期
backdate
日期时间(datetime)
否
应还日期
(6)图书订购信息表用来保存图书馆的所有订购信息,包括书籍编号、订购日期、订购数量、操作员、是否验收以及书籍折扣6个字段。
该表的逻辑结构如表2.6所示。
表2.6图书订购信息表
字段名
数据类型
是否主键
描述
ISBn
文本(varchar)
是
书籍编号
date
日期时间(datetime)
否
订购日期
number
整数(int)
否
订购数量
operator
文本(varchar)
否
操作员
checkAndAccept
整数(int)
否
是否验收
zk
浮点
否
书籍折扣
2.4各表之间的联系图
各表间的联系图如图2.7所示。
图2.7各表间联系图
第三章系统设计与功能实现
3.1数据库Dao类的构建
首先定义了一个类Dao,并为该类添加了4中方法,分别是构造方法Dao、查询方法executeQuery、更新方法executeUpdate以及关闭连接方法close。
publicclassDao{
protectedstaticStringdbClassName=
"com.microsoft.sqlserver.jdbc.SQLServerDriver";//数据库连接驱动类
protectedstaticStringdbUrl="jdbc:
sqlserver:
//localhost:
1433;"
+"DatabaseName=db_library;";//数据库连接URL
protectedstaticStringdbUser="sa";//数据库用户名
protectedstaticStringdbPwd="123";//数据库密码
privatestaticConnectionconn=null;//数据库连接对象
privatestaticStringISBN;
privateDao(){//构造方法
try{
if(conn==null){//如果连接对象为空
Class.forName(dbClassName);//加载驱动类
conn=DriverManager.getConnection(dbUrl,dbUser,dbPwd);//获得连接对象
}
}catch(Exceptionee){
ee.printStackTrace();
}
}
privatestaticResultSetexecuteQuery(Stringsql){//查询方法
try{
if(conn==null)newDao();//如果连接对象为空,则重新调用构造方法
returnconn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE).executeQuery(sql);//执行查询
}catch(SQLExceptione){
e.printStackTrace();
returnnull;//返回null值
}finally{
}
}
privatestaticintexecuteUpdate(Stringsql){//更新方法
try{
if(conn==null)newDao();//如果连接对象为空,则重新调用构造方法
returnconn.createStatement().executeUpdate(sql);//执行更新
}catch(SQLExceptione){
e.printStackTrace();
return-1;
}finally{
}
}
publicstaticvoidclose(){//关闭方法
try{
conn.close();//关闭连接对象
}catch(SQLExceptione){
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。
主要方法如下:
publicstaticOperatercheck(Stringname,Stringpassword){
Operateroperater=newOperater();//操作员信息对象
Stringsql="select*fromtb_operatorwherename='"+name
+"'andpassword='"+password+"'andadmin=1";
ResultSetrs=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方法,该方法为系统入口的方法,通过执行该方法来执行系统。
其主要代码如下:
publicclassLibraryextendsJFrame{
privatestaticfinalJDesktopPane
DESKTOP_PANE=newJDesktopPane();//桌面窗体
publicstaticvoidmain(String[]args){
try{
UIManager.setLookAndFeel(UIManager
.getSystemLookAndFeelClassName());//设置系统界面外观
newBookLoginIFrame();//登录窗口
}catch(Exceptionex){
ex.printStackTrace();
}
}
publicstaticvoidaddIFame(JInternalFrameiframe){//添加子窗体的方法
DESKTOP_PANE.add(iframe);//新增子窗体
}
}
下面再来配置主窗体的其他属性,首先需要设置其大小和位置,然后还要设置其菜单栏和工具栏,最后需要在桌面窗体中添加一个背景图片。
其代码实现如下。
publicLibrary(){
super();
setDefaultCloseOperation(
WindowConstants.EXIT_ON_CLOSE);////设置关闭按钮处理事件
Toolkittool=Toolkit.getDefaultToolkit();//获得默认的工具箱
DimensionscreenSize=tool.getScreenSize();//获得屏幕的大小
setSize(800,600);//设置窗体大小
setLocation((screenSize.width-getWidth())/2,
(screenSize.height-getHeight())/2);//设置窗体位置
setTitle("图书馆管理系统");//设置窗体标题
JMenuBarmenuBar=createMenu();//调用创建菜单栏的方法
setJMenuBar(menuBar);//设置菜单栏
JToolBartoolBar=createToolBar();//调用创建工具栏的方法
getContentPane().add(toolBar,BorderLayout.NORTH);//设置工具栏
finalJLabellabel=newJLabel();//创建一个标签,用来显示图片
label.setBounds(0,0,0,0);//设置窗体的大小和位置
label.setIcon(null);//窗体背景
DESKTOP_PANE.addComponentListener(newComponentAdapte
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书馆 管理 系统 本科毕业 论文