JAVA课设图书管理.docx
《JAVA课设图书管理.docx》由会员分享,可在线阅读,更多相关《JAVA课设图书管理.docx(46页珍藏版)》请在冰豆网上搜索。
JAVA课设图书管理
一可行性研究
上个世纪90年代初美国科学家首次提出数字图书馆这一概念以来,全球开展数字图书馆研究与实践已近十几个年头。
我国图书情报界、IT业界自1995年左右开始对这一领域跟踪研究,1998年开始全面升温,迄今无论是在对数字图书馆的认识,还是理论研究、关键技术准备方面,都取得了很大的进展。
国内数字图书馆的实践活动大致可分为以下三种类型:
资源服务型、服务研究型和联合建设型。
虽然,从严格意义上讲,资源服务型不能算是数字图书馆,但它的网上信息服务目前已在大多数图书馆开展,是现阶段我国图书情报界提供网上数字服务的主要形式。
随着图书馆规模的不断扩大,图书数量也相应的增加,有关图书的各种信息量也成倍增加,面对着庞大的信息量,传统的人工方式管理会导致图书馆管理上的混乱,人力与物力过多浪费,图书馆管理费用的增加,从而使图书馆的负担过重,影响整个图书馆的运作和控制管理,因此,必须制定一套合理、有效,规范和实用的图书管理系统,对图书资料进行集中统一的管理。
系统开发的总的设计目标是实现图书管理的系统化、规范化和自动化,实现对图书资料的集中统一的管理。
通过该系统可以实现图书信息的检索、图书借阅管理、用户个人信息的管理等各种功能,实现图书管理的快捷、高效
二需求分析
随着计算机应用的日益普及和深化,网上办公已经成为一种趋势。
本项目要开发的是基于局域网和互联网的图书管理系统。
由于学院藏书量大,借书的学生多,原来的人工工作方式不仅会造成办理时间的延误和人力资源的浪费,特别是在借书高峰期时这种冲突更加明显,而且存在着各种信息不易存放、易丢失、难以备份和查询等缺点。
因此,实现一个将各种图书管理和服务功能集成起来的管理信息系统就显得十分必要,既可以节省资源,又可以有效存储、更新、查询信息,提高工作和服务效率。
开发的系统要求界面友好,方便直观。
既要方便管理员对图书信息进行添加、删除、修改、查询和统计等管理,又要方便学生借书、还书和续借等业务的办理。
将数据库发布到互联网上,进行资源共享,方便学生可以在自己的权限内对图书信息进行访问,查询相关信息和进行续借操作。
三总体设计
本图书管理系统软件的设计思想符合图书管理的规范工作流程,用户可以通过使用本图书管理系统,缩短管理图书所用的时间,提高了管理图书的效率,使用起来方便灵活。
系统的设计包括了一般图书管理系统的主要几个模块,主要分为身份验证、借阅图书、归还图书,打印催还单,信息查询,系统维护,帮助,退出系统几大模块。
身份验证主要完成的是管理员的身份验证,即此用户是否有使用该软件的权利;借阅图书模块主要完成借阅图书的一些信息情况;归还图书模块主要完成用户归还图书的情况;打印催还单模块主要完成催促用户归还图书情况,并行成资料库;信息查询模块主要完成对用户借阅信息的查询并形成历史记录,可供随时浏览;系统维护模块主要完成对系统的维护工作;帮助模块主要为用户提关于本系统的一些帮助信息;退出系统模块完成退出本系统工作。
本系统不仅方便了用户,而且可以减少工作人员的工作量,提高了工作效率和工作质量。
本系统具有以下特点:
系统基于网络;操作界面友好,操作方便、快捷、一目了然,而且系统提供查询、添加、修改、删除等功能,方便用户和管理人员使用。
四系统实现
具体实现功能如下:
1、安全管理:
提供用户登录、注销及修改密码等功能。
2、用户个人信息管理:
每个用户可以对自己的信息进行查看以及修改密码等操作,还可以查看当前借阅信息和历史借阅信息。
3、信息发布:
用户可以查看当前最新图书信息。
4、图书信息管理:
图书管理员可以对图书进行增加及更新操作。
5、图书借阅管理:
图书管理员可以对图书进行借阅和归还操作。
6、图书查询:
用户可以通过书名以及作者进行查询。
主要功能:
1登录——身份验证
检测用户是否为合法用户,若为合法用户方可使用本系统。
此模块还应包含修改用户密码和新增用户的功能。
2借阅图书功能
在该模块中采用对图书进行编号,对用户进行编号方式来管理,管理人员点击借阅按钮后可以输入借阅人编号或姓名,系统将进行判断,如果系统的借阅人库中无该借阅人那么系统将给出提示;如果系统中确有其人,则显示借阅人姓名,借阅日期,借阅经手人等相关信息。
然后输入借阅图书编码,系统自动判断,如果该书已全部借出,将提示用户;如果书库中尚有该书,将完成本次借阅操作。
3归还图书功能
这部分主要完成的是用户归还图书的一些基本信息.在这个模块中点击还书或直接按回车键,光标定位于借阅人编码或姓名项,输入借阅图书的编码,系统考成绩自动判断.如果系统中无该借阅人的借阅信息,那么系统将提示用户;如果系统库中确有该借阅人的信息,那么系统从数据库中读出该借阅人的信息并添入借阅窗口,同时系统还将图书管理员信息,还书日期写入该窗口。
4打印催还单功能
打印催还单功能用来显示未还书的用户,列出清单。
如果需要打印全部应还书人员的信息,选区择全部打印。
5信息查询功能
这部分主要完成个人借阅、催还书目浏览、图书分布情况查询、按关键字查询等几个方面的功能。
可以通过个人借阅子菜单来了解个人借阅的一些相关信息;通过图书分布情况查子菜单可以得到关于图书的一些相关信息;也可以通过按关键字查询子菜单实现通过关键字来查询图书的一些相关内容。
6系统维护功能
这部分主要是针对于维护系统而设置的,主要完成书库维护、借阅人库维护、管理员库维护、部门库维护以及设定默认还书期限等出个方面的功能。
书库维护子菜单可以完对新书的入库以及查询和删除书目等;借阅人库维护子菜单可以实现借阅人的查询等功能;管理员库维护子菜单能够对管理员进行增加、修改、删除等;部门库维护子菜单可以对借阅人所在的部门进行增加、修改和删除;还可以通过默认还书期限子菜单对还书期限进行设置。
7帮助的功能
这里主要完成对用户的一些帮助信息。
8退出功能
主要完成退出系统的功能。
五软件系统结构分析
管理员功能模块如图所示
用户功能模块如图所示
管理员数据流如图所示
用户数据流如图所示
六系统实现
主界面功能实现
图书管理系统主界面用于管理员对书籍的管理,主要功能包括以下几个部分:
图书入库、图书证管理、图书流通管理、统计查询、帮助。
运行界面如下图所示:
主要程序代码如下:
packagebook;
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
importjava.sql.*;
publicclassBookInfoimplementsActionListener
{
privateJFrameframe;
privateStatementstmt;
privateConnectioncon;
privateJTabletableTest;
privateString[]columnNames={"书名","条形码","分类号","分类名","排架号","出版社",
"出版日期","入库日期","状态","简介"};
privateObject[][]rowData=newObject[100][10];
privateJButtonbtn;
privateJRadioButtonrbtn1,rbtn2;
privateJTextFieldjtfd;
publicBookInfo()
{
Fonts=newFont("楷体",Font.PLAIN,12);
UIManager.put("Component.font",s);
UIManager.put("Label.font",s);
UIManager.put("ComboBox.font",s);
UIManager.put("Button.font",s);
UIManager.put("Menu.font",s);
UIManager.put("MenuItem.font",s);
frame=newJFrame("图书信息查询");
Containercontent=frame.getContentPane();
btn=newJButton("查询");
jtfd=newJTextField();
JPanelpl=newJPanel();
rbtn1=newJRadioButton("书名");
rbtn2=newJRadioButton("条形码");
rbtn1.setSelected(true);
btn.addActionListener(this);
ButtonGroupgroup=newButtonGroup();
group.add(rbtn1);
group.add(rbtn2);
pl.setLayout(newGridLayout(1,4,10,0));
pl.add(rbtn1);
pl.add(rbtn2);
pl.add(jtfd);
pl.add(btn);
tableTest=newJTable(rowData,columnNames);
tableTest.setRowHeight(20);
tableTest.setPreferredScrollableViewportSize(newDimension(500,30));
JScrollPanescrollPane=newJScrollPane(tableTest);
content.add(pl,BorderLayout.NORTH);
content.add(scrollPane,BorderLayout.CENTER);
frame.pack();
frame.setLocation(100,150);
frame.setSize(850,300);
frame.setVisible(true);
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con=DriverManager.getConnection("jdbc:
odbc:
library");
stmt=con.createStatement();
}
catch(ClassNotFoundExceptione)
{
System.err.println(e.getMessage());
}
catch(SQLExceptione)
{
System.err.println(e.getMessage());
}
}
publicvoidactionPerformed(ActionEvente)
{
Objectobj=e.getSource();
ResultSetresult;
StringsqlStr;
inti=0;
Stringstr=jtfd.getText().trim();
if(rbtn2.isSelected())
{
sqlStr="selectbookname,bannercode,kindnumber,kindname,positionnumber,"+
"publishingcompany,publishtime,putintime,state,introductionfrombookwhere"+
"bannercode="+"'"+str+"'";
}
else
{
sqlStr="selectbookname,bannercode,kindnumber,kindname,positionnumber,"+
"publishingcompany,publishtime,putintime,state,introductionfrombookwhere"+
"booknamelike'"+str+"%'";
}
try
{
if(obj==btn)
{
if(str.equals(""))
{
JOptionPane.showMessageDialog(frame,"查询输入不能为空!
");
return;
}
result=stmt.executeQuery(sqlStr);
for(intj=0;j{
for(intk=0;k<10;k++)
rowData[j][k]=null;
}
tableTest.repaint();
while(result.next())
{
if(i{
rowData[i][0]=result.getString("bookname");
rowData[i][1]=result.getString("bannercode");
rowData[i][2]=result.getString("kindnumber");
rowData[i][3]=result.getString("kindname");
rowData[i][4]=result.getString("positionnumber");
rowData[i][5]=result.getString("publishingcompany");
rowData[i][6]=result.getDate("publishtime");
rowData[i][7]=result.getDate("putintime");
rowData[i][8]=result.getString("state");
rowData[i][9]=result.getString("introduction");
i++;
}
else
{
JOptionPane.showMessageDialog(frame,"pleasespecifythebookname!
");
}
}
jtfd.setText("");
}
}
catch(SQLExceptionsqle)
{
System.err.println(sqle);
}
}
publicstaticvoidmain(String[]args)
{
newBookInfo();
}
}
登录界面实现
通过查询Access数据库里面看是否有没有输入的用户名和密码,从而是否允许进入该管理系统,运行界面如下图所示:
主要程序代码如下:
packagebook;
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
importjava.sql.*;
publicclassLoginextendsJFrame
{
privatestaticfinallongserialVersionUID=1L;
privateJLabelJLb1;
privateJLabelJLb2;
privateJButtonOk_btn;
privateJButtonCancel_btn;
privateJTextFieldJtfld1;
privateJPasswordFieldJtfld2;
privateJFrameframe;
privateConnectioncon;
privateStatementstmt;
publicLogin()
{
JFrame.setDefaultLookAndFeelDecorated(true);
frame=newJFrame("登陆");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Containercontent=frame.getContentPane();
content.setLayout(newGridLayout(3,2,20,20));
JLb1=newJLabel("用户名:
");
JLb2=newJLabel("密码:
");
Jtfld1=newJTextField();
Jtfld2=newJPasswordField();
Ok_btn=newJButton("确定");
Cancel_btn=newJButton("取消");
Ok_btn.addActionListener(newActionHandler());
Cancel_btn.addActionListener(newActionHandler());
content.add(JLb1);
content.add(Jtfld1);
content.add(JLb2);
content.add(Jtfld2);
content.add(Ok_btn);
content.add(Cancel_btn);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setSize(300,200);
frame.setVisible(true);
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con=DriverManager.getConnection("jdbc:
odbc:
library");
stmt=con.createStatement();
}
catch(ClassNotFoundExceptione)
{
}
catch(SQLExceptionex)
{
}
}
classActionHandlerimplementsActionListener
{
@SuppressWarnings("deprecation")
publicvoidactionPerformed(ActionEvente)
{
Stringstr1,str2,username,sqlStr;
Objectobj=e.getSource();
str1=Jtfld1.getText().trim();
str2=Jtfld2.getText().trim();
try{
if(obj.equals(Ok_btn))
{
if(str1.equals(""))
{
JOptionPane.showMessageDialog(frame,"用户名不能为空");
return;
}
sqlStr="select*fromloginwhereuser_name="+"'"+str1+"'"+
"andpsw="+"'"+str2+"'";
ResultSetresult=stmt.executeQuery(sqlStr);
if(result.next())
{
username=result.getString("user_name");
if(username.equals("管理员"))
{
JOptionPane.showMessageDialog(frame,"欢迎光临!
");
newMainFrame();
}
else
{
JOptionPane.showMessageDialog(frame,"欢迎光临!
");
MainFramemainFrame=newMainFrame();
mainFrame.menuItem3.setEnabled(false);
mainFrame.menuItem6.setEnabled(false);
mainFrame.menuItem7.setEnabled(false);
mainFrame.menuItem8.setEnabled(false);
mainFrame.menuItem9.setEnabled(false);
}
frame.dispose();
stmt.close();
con.close();
}
else
{
JOptionPane.showMessageDialog(frame,"输入名或密码错误!
");
}
}
else
{
frame.dispose();
stmt.close();
con.close();
}
}
catch(SQLExceptionex)
{
System.err.println(ex);
}
}
}
publicstaticvoidmain(String[]args)
{
javax.swing.SwingUtilities.invokeLater(newRunnable()
{
publicvoidrun()
{
newLogin();
}
});
}
}
图书入库界面实现:
图书入库是图书馆管理系统中不可缺少的部分,用于入库图书,通过界面中的文本框接收图书的信息,然后将此信息写入Accesss数据库的表中,在添加过程中判断图书号的位数,已确保图书的有效性。
运行界面如下图所示:
主要程序代码如下:
packagebook;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.sql.*;
importjava.text.*;
importjava.math.*;
publicclassBookimplementsActionListener
{
privateJButtonbtn1,btn2,btn3,btn4;
privateJTextFieldjtfd1,jtfd2,jtfd3,jtfd5,jtfd6,
jtfd7,jtfd8,jtfd9,jtfd10;
privateJComboBoxjcbx;
privateJTextAreajta;
privateConnectioncon;
privatePreparedStatementpstmt1,pstmt2;
privateJFrameframe;
@SuppressWarnings("static-access")
publicBook()
{
Fonts=newFont("楷体",Font.PLAIN,12);
UIManager.put("Component.font",s);
UIManager.put("Label.font",s);
UIManager.put("ComboBox.font",s);
UIManager.put("Button.font",s);
UIManager.put("Menu.font",s);
UIManager.put("MenuItem.font",s);
frame=newJFrame("图书入库");
Containercontent=frame.getContentPane();
Toolkittool=frame.getToolkit();
@SuppressWarnings("unused")
Dimensionwndsize=tool.getScreenSize();
JLabellb1=newJLabel("书名:
");
JLabellb2=newJLabel("条形码:
");