基于JAVA的图书管理系统设计.docx
《基于JAVA的图书管理系统设计.docx》由会员分享,可在线阅读,更多相关《基于JAVA的图书管理系统设计.docx(23页珍藏版)》请在冰点文库上搜索。
基于JAVA的图书管理系统设计
《Java核心技术》
综合实验报告
课程名称:
Java核心技术
专业:
计算机科学与技术
姓名:
沈倩竹
学号:
1430110311
指导教师:
王岩
成绩:
完成日期:
2015年12月18日
1系统分析与设计
1.1需求分析
图书管理系统是高校图书馆不可缺少的一部分,通过图书管理系统可以实现计算机化的图书借阅管理,能够提供方便快速的图书信息检索功能和便捷的图书借阅和归还功能,并且能够对图书信息和读者信息进行管理,方便管理员和读者的借阅处理。
(本人实现了图书添加、图书查询与修改、图书类别管理、用户添加、用户删除、修改密码功能模块的设计)要求系统具备以下特点。
(1)操作简单、易用。
(2)数据存储可靠,具备较高的处理效率。
(3)系统安全、稳定。
(4)开发技术先进、功能完善、扩展性强。
1.2系统功能设计
根据需求分析,本系统具体的功能模块图如图1.2.1所示。
图1.2.1图书借阅系统功能结构图
1.2.1读者信息管理
1、读者信息添加
实现向数据库中添加读者信息的功能。
2、读者信息查询与修改
实现查询指定编号、姓名、类别以及所在部门的读者信息,并对选中的读者信息进行修改操作。
1.2.2图书信息管理
1、图书信息添加
实现向数据库中添加图书信息的功能。
2、图书信息查询与修改
实现查询指定ISBN、图书名称、类别、作者以及出版社的图书信息,并对选中的图书信息进行修改操作。
1.2.3图书借阅管理
1、图书借阅
输入读者的编号以及借阅的图书信息,记录系统当前时间为借阅时间。
2、图书归还
输入读者的编号并选择其名下已借阅的图书,记录系统当前日期为归还时间,判断是否超期并计算罚金。
1.2.4基础信息维护
1、图书类别设置
实现显示数据库中图书类别的功能,并对选中的图书类别进行增、删、改、查功能。
2、读者类别设置
实现显示数据库中读者类别的功能,并对选中的读者类别进行增、删、改、查功能。
3、罚金设置
可以指定超期一天的罚金标准。
1.2.5用户管理
1、修改密码
实现当前用户登陆后,修改用户自己密码的功能。
2、用户添加
实现向数据库中增加用户的功能。
3、用户删除
实现显示数据库中的用户信息,并对选中的用户进行删除的功能。
1.3数据库设计
根据需求分析,创建6个数据表,即图书表、图书类型表、读者表、读者类型表、图书借阅表以及用户表。
1、图书表,表名为book,包括ISBN、图书类型编号、图书名称、作者、出版社、出版日期、印刷次数和单价,其中ISBN为主键,如表1.1所示。
表1.1图书信息表book
列名
数据类型
长度
是否为空
说明
ISBN
char
10
否
ISBN(主键)
typeid
varchar
10
是
图书类型编号
bookname
varchar
30
是
图书名称
author
varchar
30
是
作者
publish
varchar
30
是
出版社
publishdate
date
—
是
出版日期
printtime
int
—
是
印刷次数
unitprice
money
—
是
单价
图书表数据如图1.3.1所示。
图1.3.1图书表数据
2、图书类型表,表名为booktype,包括图书类型编号、图书类型名称,其中图书类型编号为主键,如表1.2所示。
表1.2图书类型表booktype
列名
数据类型
长度
是否为空
说明
id
int
—
否
图书类型编号(主键)
typename
varchar
30
是
图书类型名称
图书类型表数据如图1.3.2所示。
图1.3.2图书类型表数据
3、读者表,表名为reader,包括读者编号、读者类型编号、读者姓名、年龄、性别、电话、所在系部、注册日期,其中读者编号为主键,如表1.3所示。
表1.3读者信息表reader
列名
数据类型
长度
是否为空
说明
readerid
char
8
否
读者编号(主键)
type
int
—
是
读者类型编号
name
char
20
是
读者姓名
age
int
—
是
年龄
sex
char
4
是
性别
phone
char
11
是
电话
dept
varchar
20
是
所在系部
regdate
date
—
是
注册日期
读者表数据如图1.3.3所示。
图1.3.3读者表数据
4、读者类型表,表名为readertype,包括读者类型编号、读者类型名称、最多可借图书数量、最长可借阅图书天数,其中读者类型编号为主键,如表1.4所示。
表1.4读者类型表readertype
列名
数据类型
长度
是否为空
说明
id
int
—
否
读者类型编号(主键)
typename
varchar
20
是
读者类型名称
maxborrownum
int
—
是
最多可借图书数量
limit
int
—
是
最长可借阅图书天数
读者类型表数据如图1.3.4所示。
图1.3.4读者类型表数据
5、用户表,表名为users,包括用户编号、用户名称、用户密码,其中用户编号为主键,如表1.5所示。
表1.5用户信息表users
列名
数据类型
长度
是否为空
说明
id
int
—
否
用户编号(主键)
name
varchar
20
是
用户名称
password
varchar
20
是
用户密码
用户表数据如图1.3.5所示。
图1.3.5用户表数据
6、图书借阅表,表名为borrowbook,包括读者编号、ISBN、借书日期、还书日期、罚金,其中读者编号和ISBN为联合主键,如表1.6所示。
表1.6图书借阅表borrowbook
列名
数据类型
长度
是否为空
说明
readerid
char
8
否
读者编号(主键)
ISBN
char
10
否
ISBN(主键)
borrowdate
date
—
是
借书日期
returndate
date
—
是
还书日期
fine
money
—
是
罚金
图书借阅表数据如图1.3.6所示。
图1.3.6图书借阅表数据
2系统实现
2.1系统框架
项目分为model、view、db三个包,具体项目架构的设计如图2.1.1所示。
图2.1.1图书借阅表数据
1、在com.bbm.model包中创建图书借阅管理系统中的实体类:
Book类,BookType类,Reader类,ReaderType类,Users类,BorrowBook类,如表2.1所示。
表2.1实体类表com.bbm.model
文件名
说明
Book.java
图书类模型
BookType.java
图书类型类模型
BorrowBook.java
图书借阅类模型
Reader.java
读者类模型
ReaderType.java
读者类型类模型
Users.java
用户类模型
2、在com.bbm.view包中创建图书借阅管理系统中的界面及功能类,如表2.2所示。
表2.2界面类表com.bbm.view
文件名
说明
Login.java
登陆界面及功能
Library.java
系统主界面及功能
BookAdd.java
图书添加界面及功能
BookBorrow.java
图书借阅界面及功能
BookReturn.java
图书归还界面及功能
BookSelectandUpdate.java
图书查询与修改界面及功能
BooktypeAdm.java
图书类型管理界面及功能
ReaderAdd.java
读者添加界面及功能
ReaderSelectandUpdate.java
读者查询与修改界面及功能
ReadertypeAdm.java
读者类型管理界面及功能
UserAdd.java
用户添加界面及功能
UserDelete.java
用户删除界面及功能
PasswordChange.java
修改密码界面及功能
FineSet.java
罚金设置界面及功能
3、在com.bbm.db包中创建图书借阅管理系统中的数据访问操作类,如表2.3所示。
表2.3数据访问操作类表com.bbm.db
文件名
说明
Dao.java
基本数据访问操作类
ReaderDao.java
读者操作类
BookDao.java
图书操作类
ReaderTypeDao.java
读者类型操作类
BookTypeDao.java
图书类型操作类
BookBorrowDao.java
图书借阅操作类
UserDao.java
用户操作类
2.2图书类型管理模块的实现
2.2.1图书类型管理模块界面的设计与实现
图书类型管理模块界面的实现分为三个面板,图书类型查询面板(selectjp),其中包含查询结果面板(jspjp)位于selectjp中部,selectjp整体位于整个JFrame的北部,修改信息面板(infojp)位于整个JFrame中部,按钮面板(buttonjp)位于整个JFrame南部。
如图2.2.1所示。
图2.2.1图书类型管理模块界面
主要代码如下:
selectjp.add(jspjp,BorderLayout.CENTER);
this.add(selectjp,BorderLayout.NORTH);
this.add(infojp,BorderLayout.CENTER);
this.add(buttonjp,BorderLayout.SOUTH);
2.2.2图书类型管理模块数据操作的设计与实现
本模块需要进行的数据操作如下:
1、获取数据库中图书类型表中的数据
主要代码如下:
publicstaticListselectBookType(){
Listlist=newArrayList();
Stringsql="select*frombooktype";
ResultSetrs=Dao.executeQuery(sql);
try{
while(rs.next()){
BookTypebt=newBookType();
bt.setId(rs.getInt("id"));
bt.setTypename(rs.getString("typename"));
list.add(bt);
}
}catch(Exceptione){
e.printStackTrace();
}
Dao.close();
returnlist;
}
2、对指定的图书类型的图书信息进行查询
主要代码如下:
publicstaticListselectBookTypeName(Stringtype){
Listlist=newArrayList();
Stringsql="select*frombooktypewheretypenamelike'%"+type+"%'";
ResultSetrs=Dao.executeQuery(sql);
try{
while(rs.next()){
BookTypebt=newBookType();
bt.setId(rs.getInt("id"));
bt.setTypename(rs.getString("typename"));
list.add(bt);
}
}catch(Exceptione){
e.printStackTrace();
}
Dao.close();
returnlist;
}
3、对其进行添加操作
主要代码如下:
publicstaticintinsertBookType(Stringbtno,Stringtypename){
inti=0;
try{
Stringsql="insertintobooktypevalues("+btno+",'"+typename+"')";
i=Dao.executeUpdate(sql);
}catch(Exceptione){
e.printStackTrace();
}
Dao.close();
returni;
}
4、对其进行修改操作
代码同3,具体sql语句如下:
Stringsql="updatebooktypesetid="+btno+",typename='"+typename+"'whereid="+btno+"";
5、对其进行删除操作
代码同3,具体sql语句如下:
Stringsql="deletefrombooktypewhereid="+id+"";
2.2.3图书类型管理模块功能的设计与实现
本模块实现的功能如下:
1、获取数据库中图书类型表中的数据到JTable中,并添加鼠标监听如上图2.2.1所示。
主要代码为:
Object[][]results=getSelect(BookTypeDao.selectBookType());//显示图书类别信息
//添加鼠标监听
classTableListenerextendsMouseAdapter{
@Override
publicvoidmouseClicked(MouseEvente){
intselRow=jt.getSelectedRow();//获取选择表中的某一行保存信息
btnojtf.setText(jt.getValueAt(selRow,0).toString().trim());//获取列并赋值
btnamejtf.setText(jt.getValueAt(selRow,1).toString().trim());
}
}
2、对查询按钮添加监听器(SelectAction),对图书类别进行模糊查询,如图2.2.2所示。
图2.2.2查询功能的实现
主要代码为:
classSelectActionimplementsActionListener{
@Override
publicvoidactionPerformed(ActionEvente){
//TODOAuto-generatedmethodstub
Stringbtname=btjtf.getText().trim();
BookTypeDao.selectBookTypeName(btname);
Object[][]results=getSelect(BookTypeDao.selectBookTypeName(btname));
jt=newJTable(results,readersearch);
jsp.setViewportView(jt);
jt.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
}
}
3、对添加按钮添加监听器(AddAction),向图书类别表中添加新的图书类别信息,例如:
添加编号为“8”,名称为“化学”的图书类别信息,如图2.2.3
(1)所示。
4、
图2.2.3
(1)添加成功
更新后,如图2.2.3
(2)所示。
图2.2.3
(2)添加功能的实现
主要代码为:
classAddActionimplementsActionListener{
@Override
publicvoidactionPerformed(ActionEvente){
if(btnojtf.getText().length()==0){
JOptionPane.showMessageDialog(null,"图书类型编号不能为空!
");
return;
}
if(btnamejtf.getText().length()==0){
JOptionPane.showMessageDialog(null,"图书类型名称不能为空!
");
return;
}
Stringbtno=btnojtf.getText().trim();
Stringbtname=(String)btnamejtf.getText().trim();
inti=BookTypeDao.insertBookType(btno,btname);
if(i==1){
JOptionPane.showMessageDialog(null,"添加成功");
Object[][]results=getSelect(BookTypeDao.selectBookType());
jt=newJTable(results,readersearch);
jsp.setViewportView(jt);
jt.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
}
}
}
5、对修改按钮添加监听器(UpdateAction),修改图书类别表中信息,例如将刚刚添加的“化学”修改为“生物”,如图2.2.4
(1)所示。
图2.2.4
(1)修改成功
更新后,如图2.2.4
(2)所示。
图2.2.4
(2)修改功能的实现
主要代码为:
classUpdateActionimplementsActionListener{
@Override
publicvoidactionPerformed(ActionEvente){
//TODOAuto-generatedmethodstub
Stringbtno=btnojtf.getText().trim();
Stringbtname=btnamejtf.getText().trim();
inti=BookTypeDao.updateBookType(btno,btname);
System.out.println(i);
if(i==1){
JOptionPane.showMessageDialog(null,"修改成功");
Object[][]results=getSelect(BookTypeDao.selectBookType());
jt=newJTable(results,readersearch);
jsp.setViewportView(jt);
jt.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
}
}
}
6、对删除按钮添加监听器(DeleteAction),删除图书类别表中信息,例如将刚刚修改的“生物”删除,如图2.2.5
(1)所示。
图2.2.5
(1)删除成功
更新后,如图2.2.5
(2)所示。
图2.2.5
(2)删除功能的实现
主要代码为:
classDeleteActionimplementsActionListener{
@Override
publicvoidactionPerformed(ActionEvente){
//TODOAuto-generatedmethodstub
Stringbtno=btnojtf.getText().trim();
inti=BookTypeDao.deleteBookType(btno);
System.out.println(i);
if(i==1){
JOptionPane.showMessageDialog(null,"删除成功!
");
Object[][]results=getSelect(BookTypeDao.selectBookType());
jt=newJTable(results,readersearch);
jsp.setViewportView(jt);
jt.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
}
}
}
6、对退出按钮添加监听器(OutAction),实现关闭程序功能。
主要代码如下:
classOutActionimplementsActionListener{
@Override
publicvoidactionPerformed(ActionEvente){
//TODOAuto-generatedmethodstub
setVisible(false);
}
2.3用户添加模块的实现
2.3.1用户添加模块界面的设计与实现
用户添加模块界面的实现分为两个面板,用户添加信息面板(jp1,一个2行两列的表格)位于整个JFrame的中部,按钮面板(buttonjp)位于整个JFrame的南部。
如图2.3.1所示。
图2.3.1用户添加模块界面
主要代码如下:
jp1.setLayout(newGridLayout(2,2));
this.add(jp1,BorderLayout.CENTER);
this.add(buttonjp,BorderLayout.SOUTH);
2.3.2用户添加模块数据操作的设计与实现
用户添加模块需要进行的数据操作为向数据库的用户表中添加用名和密码。
主要代码如下:
publicstaticintinsertUser(Stringname,Stringpwd){
inti=0;
try{
Stringsql="insertintousers(name,password)values('"+name+"','"+pwd+"')";
i=Dao.executeUpdate(sql);
}catch(Exceptione){
e.printStackTrace();
}
Dao.close()