图书馆管理系统.docx
《图书馆管理系统.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统.docx(27页珍藏版)》请在冰豆网上搜索。
图书馆管理系统
学生学号
0912050127
成绩
《管理信息系统》大作业
课程名称
管理信息系统
指导教师姓名
王旭琪
学生姓名
白海雕
专业班级
计科0901
完成日期
2012年5月7日
2011—2012学年第2学期
目录
一、系统简介2
二、可行性和需求分析3
2.1可行性研究3
2.2需求分析3
2.3系统功能结构图4
2.4系统流程图4
2.5数据流图5
2.6数据字典5
2.7概念结构设计6
2.8数据库概念设计7
三、概要设计10
3.1系统功能结构模块10
3.3功能函数设计11
四.详细设计13
五.调试分析14
六、用户使用手册15
一、系统简介
随着图书馆的规模不断的增大,图书量及其他相关的信息量海量增加,面对庞大的信息量,传统的图书馆的人工管理方式可能会导致管理上的混乱,相关资源的运用的也过多浪费,因此必须有一套有效的、合理的、规范的图书馆管理系统,对图书馆进行集中有效的管理,解决信息量大,借书还书工作量大,图书统计工作难,图书藏书更新慢的,检索慢等各种问题。
本系统能实现图书馆的管理的基本功能,图书检索、借还、挂失预约等,管理员对系统相关的管理图书管理,学生信息管理等。
系统采用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数据字典
字段名称
数据类型
字段大小
字段说明
StuNO
Int
N/A
学生学号
StuName
Varchar
50
学生姓名
StuAge
Int
N/A
学生年龄
StuSex
Varchar
50
学生性别
Class
Varchar
50
所在班级
Derpartment
Varchar
50
所在院系
Tel
Char
11
电话
Permitted
Varchar
50
学生借阅许可
Password
Varchar
50
密码
mgNo
Int
N/A
管理员ID
Permitted
Varchar
50
管理员权限
Password
Varchar
50
管理员密码
BookNO
Int
N/A
图书ID
BookName
Varchar
50
图书名称
Author
Varchar
50
图书作者
Publisherment
Varchar
50
出版社
BuyTime
Varcgar
50
购进时间
Borrowed
Varchar
50
是否借阅
Ordered
Varchar
50
是否预约
Borrowed
Varchar
50
借阅时间
ReturnTime
Varchar
50
归还时间
DelayTime
Varchar
50
超期天数
LBNO
varchar
50
挂失书号
2.7概念结构设计
根据系统结构图和数据流图描述出实体联系图E-R图,该系统包含的实体主要有图书、学生、管理员。
2.7.1管理员、图书E-R图
2.7.2学生用户管理图
2.7.3实体间简单的关系图
2.8数据库概念设计
根据相关功能设计和E-R图,确定本系统共设计7张表,分别为学生用户基本信息表、管理员基本信息表、图书基本信息表、超期图书信息表、预约图书信息表、挂失图书信息表、借阅图书信息表。
数据表设计
2.8.1学生用户基本信息表:
用于记录学生用户的基本信息,主要字段为学生用户和密码等,
具体如下
Createtablestudent(
StuNointprimarykey,notnull
StuNamevarchar(50),
StuAgeint,
StuSexvarchar(20),
Classvarchar(50),
Departmentvarchr(50),
Telvarchar();
Permittedvarchar(50),
Passwordvarcahr(50));
2.8.2管理员基本信息表:
用于记录管理员的用户ID,其具体显现如下
CreatetableManager(
mgNointprimarykey,
permittedvarchar(50)notnull,
passwordvarchar(50)notnull);
2.8.3图书基本信息表:
该表用于记录图书的基本信息,其具体实现如下
Createtablebook(
BookNOintprimarykey,
BookNamevarchar(50),
Authorvarchar(50),
Publishermentvarchar(50),
BuyTimevarchar(50),
Borrowedvarchar(50),
Orderedvarchar(50)
);
2.8.4借阅图书信息表:
该表用来记录学生用户借阅图书的信息,包括记录学号、书号。
借阅时间的等信息,表设计如下:
Createtablerecord(
BookNOintprimarykey,
StuNOintprimarykey,
Borrowedvarchar(50),
ReturnTimevarchar(50),
Borrowedvarchar(50),
Orderedvarchar(50);
)
2.8.5超期图书信息表:
该表用来记录学生超期图书的信息,包括图书ID和学生姓名等信息。
具体表设计如下:
Createtableexceedtime(
StuNOintnull,
BookNOintnull
BookNamevarchar(50)
DelayTimeint);
Primarykey(StuNO,BookName));
2.8.6预约图书信息表:
该表用来记录学生预约的图书信息,包括图书ID和学生姓名等信息,涉及如下:
Createtableorderreport(
BookNOintprimary,
StuNamevarchar(50),
Classvarchar(50)
);
2.8.7挂失图书信息表:
该用来记录学生丢失图书的信息,包括图书ID和学生学号等信息,设计如下:
Createtablelosebook(
LBNOintprimarykey,
StuNOint,
BookNOint,
BookNamevarchar(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)voidgetQuery(Stringsql)
函数功能:
执行数据的查询功能
(2)intupdateDb(Stringsql):
函数功能:
执行数据的增、删、改操作
(3)voidrealease()
函数功能:
实现断开数据库连接及释放资源操作
3.3.2.2:
图书管理部分在BookManage类中包含一下方法
(1)voidinsertBook();
执行功能:
实现图书的添加,添加与图书的所有需求信息包括必须的书号,书名,作者等
(2)voiddeleteBook();
函数功能:
根据输入的图书号,删除该图书在馆的信息
(3)voidupdateBook()
函数功能:
根据输入的信息,修改相应的图书信息
3.3.2.3管理员管理部分在Manager类中
(1)voidinsertManager()
函数功能:
添加普通管理员和学生信息,包括设置相应的用户名密码和权限,在添加新学生用户时通过调用student类中voidinsertstudent()方法来添加学生信息
(2)voiddeleteManager()
函数功能:
删除用户信息,包括对学生的删除和对普通用户的删除,不能删除超级管理员,调用student类中的voiddeleteStudent()方法来执行删除学生信息
(3)voidupdateManager()
函数功能:
修改用户信息,只能修改本省管理信息,不能修改学生信息,调用学生类student中voidupdateStudent()方法来实现对学生信息的修改
(4)voidselectManager()
voidmanager1()
函数功能:
用于超级管理员对于普通管理员的筛选并且选出后显示于界面列表中
3.3.2.4图书查询部分位于SearchBook类中
intseniorSearch():
查询图书信息,其中有包括简单查询:
根据一个信息(书名,作者等)进行查询,和高级查询根据多信息进行查询(书名,作者出版社等),学生和管理员是都通过调用次方法来实现该工功能
3.3.2.5其他部分
(1)voidloseBook(introw)
函数功能:
实现对图书丢失的进行挂失处理,返回显示在列表中的书行号。
(2).intcheckTime(intsno,intbno)
函数功能:
根据学号和书号判断所换书籍是否超期,共有超期没叫罚款,正常还书,超期交罚款几种情况。
返回一个标志,该函数还能进行挂失处理
(3)voidupdateTable()
函数功能:
实现对界面下列表的更新,即当还掉一本书后,实现显示列表的更新
四.详细设计
1.系统主函数main()设计
2.主页面详细设计
五.调试分析
本系统在Myeclipse8.0以上版本中编译调试通过,可顺利运行,各项功能均达到设计的要求
系统项目在包huxin中,可以采用分模块调试的方法进行编译,即完成一个函数功能木块就编译一个功能,最后进行整体编译
六、用户使用手册
1.此系统所需要的软件和环境相关配置如下:
a.系统采用JDK1.6或以上版本
b.数据库:
采用mysql5.0或以上版本
(c.用myeclipse或eclipse作为开发工具)
2.系统预览
a.登录界面有“学生登录”、“管理员”、“清空”
如果输入错误的密码和用户名均有对话框弹出提示
//查询学号文本中所输入的学号是否在STUDENT表中
sql="selectStuNo,PasswordfromstudentwhereStuNO="+Integer.parseInt(jtxtArray.getText().trim());
db=newDataBase();//创建DataBase类对象
db.getQuery(sql);//执行查询
try
{
if(!
db.rs.next())
{
JOptionPane.showMessageDialog(this,"输入有误,登录失败!
","消息",JOptionPane.INFORMATION_MESSAGE);
}
else
{
StringstuNo=db.rs.getString
(1).trim();//得到文本框中的学号和密码
Stringpassword=db.rs.getString
(2).trim();
if(jtxtArray.getText().trim().equals(stuNo)&&String.valueOf(jpassword.getPassword()).equals(password))
{
jlArray[2].setText("恭喜您,登陆成功!
!
");
newStudentSystem();//创建学生端窗体
this.dispose();//将登录窗体隐藏
}
else
{
JOptionPane.showMessageDialog(this,"输入有误,登录失败!
");
}
}
//连接数据库代码
publicDataBase(){
try{//加载MySQL的驱动类,并创建数据库连接
Class.forName("org.gjt.mm.mysql.Driver");con=DriverManager.getConnection("jdbc:
mysql:
//localhost:
3306/test","root","12345");
stat=con.createStatement();//创建Statement对象
}
catch(Exceptione)
{//如果从Login类传的参数不对,则提示出错
e.printStackTrace();
}
}
publicvoidgetQuery(Stringsql){//声明select方法
try{
rs=stat.executeQuery(sql);
}
b.学生登录系统系统后,就进入学生管理系统,如图,在左边的树状列表,可以通过单击不同的节点进行相应的操作。
当用户单击“退出”节点时会弹出对话框提示用户是否退出系统
c.进入系统管理后,单击树状中各个节点便可进行相应的功能操作“查询图书”、“预约图书”、“挂失图书”
publicintseniorSearch(){
intflag=0;//设置标志位
Stringstr0=jtxtArray[0].getText().trim();
Stringstr1=jtxtArray[1].getText().trim();
Stringstr2=jtxtArray[2].getText().trim();
if(str0.equals("")&&str1.equals("")&&str2.equals("")){//文本框输入为空
JOptionPane.showMessageDialog(this,"请输入必要的信息!
!
!
",
"消息",JOptionPane.INFORMATION_MESSAGE);
flag++;
}
if(((!
str0.equals(""))&&(str1.equals(""))&&(str2.equals("")))
||((str0.equals(""))&&(!
str1.equals(""))&&(str2.equals("")))
||((str0.equals(""))&&(str1.equals(""))&&(!
str2.equals("")))){
JOptionPane.showMessageDialog(this,"请使用简单查询!
!
!
",
"消息",JOptionPane.INFORMATION_MESSAGE);
flag++;
}
if((!
str0.equals(""))&&(!
str1.equals(""))&&(str2.equals(""))){//书名和作者组合
sql="select*fromBOOKwhereBookName='"+str0+"'andAuthor='"+str1+"'";
jtxtArray[0].setText("");jtxtArray[1].setText("");
}
if((!
str0.equals(""))&&(str1.equals(""))&&(!
str2.equals(""))){//书名和出版社组合
sql="select*fromBookwhereBookName='"+str0+"'andPublishment='"+str2+"'";
jtxtArray[0].setText("");jtxtArray[2].setText("");
}
if((str0.equals(""))&&(!
str1.equals(""))&&(!
str2.equals(""))){//作者与出版社组合
sql="select*fromBookwhereAuthor='"+str1+"'andPublishment='"+str2+"'";
jtxtArray[1].setText("");jtxtArray[2].setText("");
}
if((!
str0.equals(""))&&(!
str1.equals(""))&&(!
str2.equals(""))){//三者组合
sql="select*fromBookwhereBookName='"+str0
+"'andPublishment='"+str2+"'andAuthor='"+str1+"'";
jtxtArray[0].setText("");jtxtArray[1].setText("");jtxtArray[2].setText("");
}
if(str7.trim().equals("是"))
{//该书已经被预约,输出提示信息框
JOptionPane.showMessageDialog(this,"此书已经被预约","消息",JOptionPane.INFORMATION_MESSAGE);
}
Else
{//预约成功,设置预约项Ordered为是,表示该书已经被预约
sql="updateBOOKsetOrdered='是'whereBookNO="+Integer.parseInt(jtxt3.getText().trim());
db.updateDb(sql);
//输出预约成功信息框
JOptionPane.showMessageDialog(this,"预约成功","消息",JOptionPane.INFORMATION_MESSAGE);
sql="insertintoORDERREPORTvalues("+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,"学生信息不能为空!
!
!
",
"消息",JOptionPane.INFORMATION_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="insertintoSTUDENT(StuNO,StuName,StuSex,Class,Department,"
+"Password,Permitted)values('"+str1[0]+"','"+str1[1]+"','"
+str1[2]+"','"+str1[3]+"','"+
str1[4]+"','"+str1[5]+"','"+str1[6]+"')";
db=newDataBase();
db.updateDb(sql);//插入学生信息
删除学生
try{//对结果集进行异常处理
if(db.rs.next()){
sql="deletefromSTUDENTwhereStuNO="+Integer.parseInt(stuno);
db=newDataBase();
db.updateDb(sql);//删除学号为输入内容的学生的信息
JOptionPane.showMessageDialog(this,"成功删除该生信息记录!
!
","消息",JOptionPan