图书馆管理系统毕业设计论文Word文档格式.docx
《图书馆管理系统毕业设计论文Word文档格式.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统毕业设计论文Word文档格式.docx(41页珍藏版)》请在冰豆网上搜索。
一个最基本的图书馆管理系统要有如下几个重要功能:
(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
可借天数
fk
浮点数
迟还一天的罚款数目
(2)图书信息表用来储存所有的图书信息,包括图书编号、类别编号、图书名称、作者、译者、出版社、出版日期以及书籍价格8个字段。
该表的逻辑结构如表2.2所示。
表2.2图书信息表
ISBN
图书编号
typeId
否(外键)
类别编号
bookname
图书名称
writer
作者
translator
译者
publisher
出版社
date
日期时间(datetime)
出版日期
price
金钱货币(money)
书籍价格
(3)读者信息表用来储存所有的读者信息,包括读者姓名、性别、年龄、证件号码、会员证有效日期、最大借书量、电话号码、押金、证件类型、职业、读者编号以及办证日期12个字段。
该表的逻辑结构如表2.3所示。
表2.3读者信息表
name
读者姓名
sex
读者性别
age
读者年龄
identityCard
证件号码
会员证有效日期
maxNum
最大借书量
tel
电话号码
keepMoney
押金
zj
证件类型
zy
职业
读者编号
bztime
办证日期
(4)操作员信息表用来保存操作员信息,包括操作员编号、用户名、性别、年龄、证件号码、工作时间、电话号码、是否为管理员、密码9个字段。
该表的逻辑结构如表2.4所示。
表2.4操作员信息表
是(自动递增)
操作员编号
用户名
性别
年龄
workdate
工作时间
admin
是否为管理员
password
密码
(5)图书借阅信息表用来保存所有图书的借阅信息,包括借阅编号、书籍编号、操作员编号、读者编号、是够归还、借书日期以及应还日期7字段。
该表的逻辑结构如表2.5所示。
表2.5图书借阅信息表
借阅编号
bookISBN
书籍编号
operatorId
readerISBN
isback
是否归还
borrowDate
借书日期
backdate
应还日期
(6)图书订购信息表用来保存图书馆的所有订购信息,包括书籍编号、订购日期、订购数量、操作员、是否验收以及书籍折扣6个字段。
该表的逻辑结构如表2.6所示。
表2.6图书订购信息表
ISBn
订购日期
number
订购数量
operator
操作员
checkAndAccept
是否验收
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){//查询方法
if(conn==null)newDao();
//如果连接对象为空,则重新调用构造方法
returnconn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE).executeQuery(sql);
//执行查询
}catch(SQLExceptione){
e.printStackTrace();
returnnull;
//返回null值
}finally{
privatestaticintexecuteUpdate(Stringsql){//更新方法
if(conn==null)newDao();
returnconn.createStatement().executeUpdate(sql);
//执行更新
return-1;
publicstaticvoidclose(){//关闭方法
conn.close();
//关闭连接对象
}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);
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){
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(newComponentAdapter(){
publicvoid