java 图书管理系统 实训文档
实训作业报告
学院: 软件学院专业: 软件工程
姓名:胡信
学号:20081573 指导老师:邓泓
二0一0 年九月
一、系统简介
随着图书馆的规模不断的增大,图书量及其他相关的信息量海量增加,面对庞大的信息量,传统的图书馆的人工管理方式可能会导致管理上的混乱,相关资源的运用的也过多浪费,因此必须有一套有效的、合理的、规范的图书馆管理系统,对图书馆进行集中有效的管理,解决信息量大,借书还书工作量大,图书统计工作难,图书藏书更新慢的,检索慢等各种问题。本系统能实现图书馆的管理的基本功能,图书检索、借还、挂失预约等,管理员对系统相关的管理图书管理,学生信息管理等。系统采用java语句编写,用myeclipse作为开发工具,mysql 作为数据库
二、可行性和需求分析
2.1 可行性研究
技术可行性:
Java +swing +Jdbc+Mysql技术上可行的
经济可行性:
无
2.2需求分析
通过对图书馆的了解,确定本系统具备一下功能。
A.学生用户端
查询图书,学生可以进行简单的数据查询和高级查询
挂失图书,当图书丢失时进行相关的挂失
预约图书,当所借书不在管内时可以对图书进行预约
B.管理员端
图书管理,包括对图书的增、删、改、查;
管理员管理,超级管理员能对普通管理员进行增、删、改、,普通管理员
只有修改自己的信息进行修改
借阅管理,即对图书的外借和归还及交纳罚款的管理
C.系统目标:
通过系统分析并进行相关探讨,确定系统最终目标如下
a.实现需求分析阶段A.B及客户提出的的功能;
b.提高键盘的易用性,减少鼠标的操作功能
c.使用较为流行的树状列表控件作为导航,直观的显示系统结构。
d.洽淡地使用监听器进行动作时间的监听
e.合理的使用表格进行数据显示
f.在适当的场合灵活运用swing的各种控件,如面板,标签等
2.3系统功能结构图
2.4系统流程图
顶层图
0层图
2.5 数据流图
2.6数据字典
2.7 概念结构设计
根据系统结构图和数据流图描述出实体联系图E-R图,该系统包含的实体主要有图书、学生、管理员。
2.7.1管理员、图书E-R图
2.7.2学生用户管理图
2.7.3实体间简单的关系图
2.8 数据库概念设计
根据相关功能设计和E-R图,确定本系统共设计7张表,分别为学生用户基本信息表、管理员基本信息表、图书基本信息表、超期图书信息表、预约图书信息表、挂失图书信息表、借阅图书信息表。
数据表设计
2.8.1 学生用户基本信息表:用于记录学生用户的基本信息,主要字段为学生用户和密码等,
具体如下
Create table student(
StuNo int primary key, not null
StuName varchar(50),
StuAge int ,
StuSex varchar(20),
Class varchar(50),
Department varchr(50),
Tel varchar();
Permitted varchar(50),
Password varcahr(50));
2.8.2管理员基本信息表:用于记录管理员的用户ID,其具体显现如下Create table Manager(
mgNo int primary key ,
permitted varchar (50)not null,
password varchar(50)not null);
2.8.3图书基本信息表:该表用于记录图书的基本信息,其具体实现如下Create table book (
BookNO int primary key,
BookName varchar(50),
Author varchar(50),
Publisherment varchar (50),
BuyTime varchar(50),
Borrowed varchar(50),
Ordered varchar(50)
);
2.8.4 借阅图书信息表:该表用来记录学生用户借阅图书的信息,包括记录学号、书号。借阅时间的等信息,表设计如下:
Create table record (
BookNO int primary key ,
StuNO int primary key,
Borrowed varchar(50),
ReturnTime varchar(50),
Borrowed varchar(50),
Ordered varchar(50);
)
2.8.5超期图书信息表:该表用来记录学生超期图书的信息,包括图书ID和学生姓名等信息。具体表设计如下:
Create table exceedtime(
StuNO int null,
BookNO int null
BookName varchar(50)
DelayTime int );
Primary key (StuNO,BookName));
2.8.6预约图书信息表:该表用来记录学生预约的图书信息,包括图书ID 和学生姓名等信息,涉及如下:
Create table orderreport (
BookNO int primary ,
StuName varchar(50),
Class varchar(50)
);
2.8.7 挂失图书信息表:该用来记录学生丢失图书的信息,包括图书ID和学生学号等信息,设计如下:
Create table losebook (
LBNO int primary key,
StuNO int ,
BookNO int ,
BookName varchar(50)
);
三、概要设计
3.1 系统功能结构模块
根据系统项目的开发要求,系统开发时划分了以下几个模块借阅图书模块、预约图书模块。挂失图书模块、管理员管理模块。管理员管理模块又分学生用户管理模块、图书管理模块。结构模块功能图
3.2
3.3功能函数设计
3.3.1 类封装:
DataBase:封装了数据库连接和数据库操作及资源的释放的信息
Root:封装了主页信息
Login:封装了登录信息
Student:封装了学生信息
BookManage:封装了图书基本管理的信息
Manager:封装了管理的信息
3.3.2 功能函数函数设计
3.3.2.1:数据库部分在DataBase类中包含三个方法
(1)void getQuery(String sql)
函数功能:执行数据的查询功能
(2)int updateDb(String sql):
函数功能:执行数据的增、删、改操作
(3)void realease()
函数功能:实现断开数据库连接及释放资源操作
3.3.2.2:图书管理部分在BookManage类中包含一下方法
(1) void insertBook() ;
执行功能:实现图书的添加,添加与图书的所有需求信息包括必
须的书号,书名,作者等
(2)void deleteBook();
函数功能:根据输入的图书号,删除该图书在馆的信息
(3) void updateBook()
函数功能:根据输入的信息,修改相应的图书信息
3.3.2.3管理员管理部分在Manager类中
(1) void insertManager()
函数功能:添加普通管理员和学生信息,包括设置相应的用户名密码
和权限,在添加新学生用户时通过调用student 类中void
insertstudent()方法来添加学生信息
(2)void deleteManager ()
函数功能:删除用户信息,包括对学生的删除和对普通用户的删
除,不能删除超级管理员,调用student类中的void
deleteStudent()方法来执行删除学生信息
(3)void updateManager()
函数功能:修改用户信息,只能修改本省管理信息,不能修改学生
信息,调用学生类student中void updateStudent()方法来
实现对学生信息的修改
(4)void selectManager()
void manager1()
函数功能:用于超级管理员对于普通管理员的筛选并且选出后显示于界面列表中
3.3.2.4 图书查询部分位于SearchBook类中
int seniorSearch():查询图书信息,其中有包括简单查询:根据一个信息(书名,作者等)进行查询,和高级查询根据多信
息进行查询(书名,作者出版社等),学生和管理员是都通
过调用次方法来实现该工功能
3.3.2.5其他部分
(1)void loseBook (int row)
函数功能:实现对图书丢失的进行挂失处理,返回显示在列表中的书行号。
(2).int checkTime ( int sno ,int bno )
函数功能:根据学号和书号判断所换书籍是否超期,共有超期没
叫罚款,正常还书,超期交罚款几种情况。返回一个
标志,该函数还能进行挂失处理
(3) void updateTable()
函数功能:实现对界面下列表的更新,即当还掉一本书后,实现
显示列表的更新
四.详细设计
1.系统主函数main()设计
2.主页面详细设计
五.调试分析
本系统在Myeclipse8.0以上版本中编译调试通过,可顺利运行,各项功能均达到设计的要求
系统项目在包huxin中,可以采用分模块调试的方法进行编译,即完成一个函数功能木块就编译一个功能,最后进行整体编译
六、用户使用手册
1.此系统所需要的软件和环境相关配置如下:
a. 系统采用JDK1.6或以上版本
b. 数据库:采用mysql5.0或以上版本
(c.用myeclipse或eclipse作为开发工具)
2.系统预览
a.登录界面有“学生登录”、“管理员”、“清空”
如果输入错误的密码和用户名均有对话框弹出提示
//查询学号文本中所输入的学号是否在STUDENT表中
sql="select StuNo,Password from student where
StuNO="+Integer.parseInt(jtxtArray.getText().trim());
db=new DataBase(); //创建DataBase类对象
db.getQuery(sql); //执行查询
try
{
if(!db.rs.next())
{
JOptionPane.showMessageDialog(this,"输入有误,登
录失败!","消息
",https://www.360docs.net/doc/be13610799.html,RMATION_MESSAGE);
}
else
{
String stuNo=db.rs.getString(1).trim(); //得
到文本框中的学号和密码
String password = db.rs.getString(2).trim();
if(jtxtArray.getText().trim().equals(stuNo
)&&String.valueOf(jpassword.getPassword())
.equals(password))
{
jlArray[2].setText("恭喜您,登陆成功!!");
new StudentSystem(); //创建学生端窗体
this.dispose(); // 将登录窗体隐藏
}
else
{
JOptionPane.showMessageDialog(this, "输入
有误,登录失败!");
}
}
//连接数据库代码
public DataBase(){
try{//加载MySQL的驱动类,并创建数据库连接
Class.forName("org.gjt.mm.mysql.Driver");
con=DriverManager.getConnection("jdbc:mysql://localhost:3306
/test","root","12345");
stat=con.createStatement();//创建Statement对象
}
catch(Exception e)
{//如果从Login类传的参数不对,则提示出错
e.printStackTrace();
}
}
public void getQuery(String sql){//声明select方法
try{
rs=stat.executeQuery(sql);
}
b.学生登录系统系统后,就进入学生管理系统,如图,在左边的树状列表,可以通过单击不同的节点进行相应的操作。当用户单击“退出”节点时会弹出对话框提示用户是否退出系统
c.进入系统管理后,单击树状中各个节点便可进行相应的功能操作“查询图书”、“预约图书”、“挂失图书”
public int seniorSearch(){
int flag=0;//设置标志位
String str0=jtxtArray[0].getText().trim();
String str1=jtxtArray[1].getText().trim();
String str2=jtxtArray[2].getText().trim();
if(str0.equals("")&&str1.equals("")&&str2.equals("")){//文本框输入为空
JOptionPane.showMessageDialog(this,"请输入必要的信息!!!",
"消息",https://www.360docs.net/doc/be13610799.html,RMATION_MESSAGE);
flag++;
}
if(((!str0.equals(""))&&(str1.equals(""))&&(str2.equals(""))) ||((str0.equals(""))&&(!str1.equals(""))&&(str2.equals("")))
||((str0.equals(""))&&(str1.equals(""))&&(!str2.equals("")))){ JOptionPane.showMessageDialog(this,"请使用简单查询!!!",
"消息",https://www.360docs.net/doc/be13610799.html,RMATION_MESSAGE);
flag++;
}
if((!str0.equals(""))&&(!str1.equals(""))&&(str2.equals(""))){//书名和作者组合
sql="select * from BOOK where BookName='"+str0+"' and Author='"+str1+"'";
jtxtArray[0].setText("");jtxtArray[1].setText("");
}
if((!str0.equals(""))&&(str1.equals(""))&&(!str2.equals(""))){//书名和出版社组合
sql="select * from Book where BookName='"+str0+"' and Publishment='"+str2+"'";
jtxtArray[0].setText("");jtxtArray[2].setText("");
}
if((str0.equals(""))&&(!str1.equals(""))&&(!str2.equals(""))){//作者与出版社组合
sql="select * from Book where Author='"+str1+"' and Publishment='"+str2+"'";
jtxtArray[1].setText("");jtxtArray[2].setText("");
}
if((!str0.equals(""))&&(!str1.equals(""))&&(!str2.equals(""))){//三者组合
sql="select * from Book where BookName='"+str0
+"' and Publishment='"+str2+"' and
Author='"+str1+"'";
jtxtArray[0].setText("");jtxtArray[1].setText("");jtxtArray[2].se t Text("");
}
if(str7.trim().equals("是"))
{ //该书已经被预约,输出提示信息框
JOptionPane.showMessageDialog(this,"此书已经被预约","消息
",https://www.360docs.net/doc/be13610799.html,RMATION_MESSAGE);
}
Else
{ //预约成功,设置预约项Ordered为是,表示该书已经被预约
sql="update BOOK set Ordered='是' where
BookNO="+Integer.parseInt(jtxt3.getText().trim());
db.updateDb(sql);
//输出预约成功信息框
JOptionPane.showMessageDialog(this,"预约成功","消息
",https://www.360docs.net/doc/be13610799.html,RMATION_MESSAGE);
sql="insert into ORDERREPORT
values("+Integer.parseInt(jtxt3.getText().trim())
+",'"+stuName+"','"+classes+"','"+bookName+"',"
+Integer.parseInt(jtxt4.getText().trim())+",'"+author+"')";
db.updateDb(sql);
}
d.进入管理员系统后就在主页面如图,在界面左边有树形列表,进行相应功能的选择进行操作,包括“学生用户管理”、“图书管理”、“借阅预约图书”、“交纳罚款”、“管理员管理员”等功能选择
图书管理主页面
管理学生用户界面
插入学生信息
if(str1[0].equals("")&&str1[1].equals("")&&str1[2].equals("")
&&str1[3].equals("")&&str1[4].equals("")&&str1[5].equals(""))
{//当各文本框为空提示
JOptionPane.showMessageDialog(this, "学生信息不能为空!!!", "消息",https://www.360docs.net/doc/be13610799.html,RMATION_MESSAGE);
return;
}
if(!str1[0].equals("")&&!str1[1].equals("")&&!str1[2].equals("") &&!str1[3].equals("")&&!str1[4].equals("")&&!str1[5].equals(""))
{//当在文本框输入信息
str1[6]=jcp.getSelectedItem().toString();
sql="insert into STUDENT(StuNO,StuName,StuSex,Class,Department,"
+"Password,Permitted) values('"+str1[0]+"','"+str1[1]+"','"
+ str1[2] + "',' "+str1[3]+"','"+
str1[4]+"','"+str1[5]+"','"+str1[6]+"')";
db=new DataBase();
db.updateDb(sql);//插入学生信息
删除学生
try{//对结果集进行异常处理
if(db.rs.next()){
sql="delete from STUDENT where StuNO="+Integer.parseInt(stuno);
db=new DataBase();
db.updateDb(sql);//删除学号为输入内容的学生的信息 JOptionPane.showMessageDialog(this, "成功删除该生信息记录!!", "消息",https://www.360docs.net/doc/be13610799.html,RMATION_MESSAGE);
return;
}
else{//若Record表中有该学号,则输出提示对话框
JOptionPane.showMessageDialog(this, "不能删除该生信息他有书未还,请他还书!!",
"消息",https://www.360docs.net/doc/be13610799.html,RMATION_MESSAGE);
}
管理图书页面
在最后可以选择退出系统功能
图书信息插入Book表
void insertBook(){
for(int i=0;i<5;i++){//声明输入变量
str1[i]=jtxtArray[i].getText().trim();
}
if(str1[0].equals("")&&str1[1].equals("")&&str1[2].equals("") &&str1[3].equals("")&&str1[4].equals("")){//当输入为空进行提示
JOptionPane.showMessageDialog(this, "图书信息不能为空!!!",
"消息",https://www.360docs.net/doc/be13610799.html,RMATION_MESSAGE);
return;
}
if(!str1[0].equals("")&&!str1[1].equals("")&&!str1[2].equals("") &&!str1[3].equals("")&&!str1[4].equals("")){//将图书信息插入Book表
str1[5]=jcp1.getSelectedItem().toString();
str1[6]=jcp2.getSelectedItem().toString();
sql="insert into BOOK values('"+str1[0]+"','"+str1[1]+"','"
+ str1[2] + "',' "+str1[3]+"','"+
str1[4]+"','"+str1[5]+"','"+str1[6]+"')";
db=new DataBase();
db.updateDb(sql);//数据插入
//删除图书记录
void deleteBook(){
String bookno = jtxtArray[0].getText().trim();
if(bookno.equals("")){//当书号输入为空,提示
JOptionPane.showMessageDialog(this, "书号不能为空!!!",
"消息",https://www.360docs.net/doc/be13610799.html,RMATION_MESSAGE);
return;
}
sql="select * from RECORD where BookNO="+Integer.parseInt(bookno);
db=new DataBase();
db.getQuery(sql);//删除图书记录
try{
if(db.rs.next()){//若Record表中有该书号,则输出提示对话框
JOptionPane.showMessageDialog(this, "不能删除此书", "消息",https://www.360docs.net/doc/be13610799.html,RMATION_MESSAGE);
return;
}
}
catch(Exception e){e.printStackTrace();}
sql="delete from book where BookNO="+Integer.parseInt(bookno);
db.updateDb(sql);//若Record表中无此书号则删除此书
}
//修改书本信息
void updateBook(){
String bookno = jtxtArray[0].getText().trim();