JAVA图书信息管理系统.docx

上传人:b****1 文档编号:22996661 上传时间:2023-04-29 格式:DOCX 页数:33 大小:42.38KB
下载 相关 举报
JAVA图书信息管理系统.docx_第1页
第1页 / 共33页
JAVA图书信息管理系统.docx_第2页
第2页 / 共33页
JAVA图书信息管理系统.docx_第3页
第3页 / 共33页
JAVA图书信息管理系统.docx_第4页
第4页 / 共33页
JAVA图书信息管理系统.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

JAVA图书信息管理系统.docx

《JAVA图书信息管理系统.docx》由会员分享,可在线阅读,更多相关《JAVA图书信息管理系统.docx(33页珍藏版)》请在冰豆网上搜索。

JAVA图书信息管理系统.docx

JAVA图书信息管理系统

JAVA课程设计报告

图书信息管理系统

指导教师:

姓名:

学号:

班级:

日期:

 

一、需求分析……………………………………………………2

二、程序的主要功能及程序运行平台…………………………2

三、程序总框架图………………………………………………3

四、系统模块分析………………………………………………3

五、较具特色的函数……………………………………………4

六、存在的不足与对策…………………………………………5

七、参考文献……………………………………………………5

八、附录(主要源代码及程序类的说明)……………………5

 

一、需求分析

当今时代是飞速发展的信息时代,而图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。

根据调查得知,他们以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实等往往采用对借书卡的人工检查进行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。

数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找.总的来说,缺乏系统,规范的信息管理手段.尽管有的图书馆有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是管理信息系统的开发的基本环境。

数据处理手工操作,工作量大,出错率高,出错后不易更改。

图书馆采取手工方式对图书借阅情况进行人工管理,由于信息比较多,图书借阅信息的管理工作混乱而又复杂;一般借阅情况是记录在借书证上,图书的数目和内容记录在文件中,图书馆的工作人员和管理员也只是当时对它比较清楚,时间一长,如再要进行查询,就得在众多的资料中翻阅、查找了,造成查询费时、费力.如要对很长时间以前的图书进行更改就更加困难了.

基于这些问题,有必要建立一个图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书情况。

 

二、程序的主要功能及程序运行平台

本次课程设计的要求使用图形界面,用数据库建立图书信息表。

(1)针对学生:

1.  能按各种方式(比如书名、编号、作者)查询图书馆的藏书情况。

2。

  能够方便地借阅图书、续借图书、归还图书.

3。

 能够查询自己的基本资料、借阅图书情况.

4。

 能够熟悉图书管理系统的使用。

(2)针对图书管理员:

1。

  能方便的对图书进行录入登记,注销陈旧的书籍.

2.能够方便地对新生进行登记,或注销已经毕业的学生信息(基本信息,借阅信息)。

3。

  能够随时发布一些诸如各学院学生借阅图书超期情况、馆内藏书情况、借情况息,以便各学院能够随时获知本院学生的一些借书信息。

(3)程序运行平台:

在java虚拟机上,使用软件eclipse编程

三、程序总框架图

图书管理系统中包含书籍的采购、入库、编目、出借、归还、淘汰等功能,以及读者信息的管理。

本系统对前期的工作进行了简化,删掉了书籍的采购、入库、编目等繁琐的工作,仅对系统主要部分进行分析。

为了提高服务效果,图书馆系统实行开架阅览,并为读者提供客户端,读者可以查询到馆藏书目和个人在借图书的信息.这项功能也可以通过互联网实现。

图书管理员通过系统记录图书的出借和归还,以及书目的维护和读者信息的维护。

四、系统模块分析

1.新书入库模块:

新书入库界面包括图书相关的属性:

编号、书名、作者、类别、出版日期、出版社、定价、数量、备注等。

2。

图书整理模块:

(1)图书整理界面包括:

图书修改删除、图书类别编辑

图书修改删除界面除了包括图书的相关属性还包括图书修改功能.

图书类别编辑界面包括对类别编号、类别名称进行添加、删除、修改的功模块。

3.办借书卡模块:

办借书卡界面包括借书卡编号、持借书卡人的姓名、性别、组名、证件号。

4.查询模块:

(1)借阅信息查询:

根据查询方式如按借书证号、按姓名等在文本框中输入相关内容即可查询还可查询到期图书

(2)图书信息查询:

查询方式有:

按书号、按书名、按作者、按类别、按出版社。

在关键字中输入相关内容,点击“开始查询”按钮,在DataList中列出查询结果。

如果选中“模糊查询”可查询更多的相关信息.

(3)用户信息查询:

查询方式有:

按借书证号、按姓名。

在关键字框中输入借书证号或者读者姓名。

组用户管理模块:

(4)组用户管理界面:

操作方式包括:

修改、删除、添加。

组用户信息包括:

组编号、组名称、最长天数、最多本数。

5.图书借还模块:

图书借阅界面包括图书编号、书名、类别、出版社、出版日期、借书证号等

归还图书界面包括图书的属性、归还者的信息。

五、较具特色的函数

//图书管理员

publicclassSimpleBookManager{

publicstaticvoidmain(String[]args){

SetFont.setFont(newFont(”楷体”,0,12));

Connectioncon=null;

try{

con=SqlUtil.acquireConnection("127.0。

0.1”,

”1433”,"bookTest","admin","xyz");

}catch(Exceptione){

System。

out。

println(e);

System.exit(—1);

}

if(con!

=null){

JFramef=newJFrame();

f。

addWindowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente){

System.exit(0);

}

});

f。

getContentPane()。

add(newBookManager(f,con));

f.setSize(600,400);

f。

show();

}

}

通过图书管理员来区别与学生功能的区别,增添的功能更具有针对性.使用管理员来进行对学生的管理。

六、存在的不足与对策

在开发图书管理系统的过程当中,也遇到了许多技术上或者其他方面的困难。

如:

开始编程的无从下手,编程时遇到的语法问题等,但是也算经过自己的努力,加上eclipse软件上的提示与指导老师指导,使之基本上克服了这些困难.

在这次设计过程中,培养了我的自学能力,在遇到困难的时候,能够认真的对待,不放弃,无论是查看各种书籍还是到图书馆中查找各种资料,想尽一切办法将这个问题解决。

我总结了许多编程经验,这将在以后的学习生活中有很大的帮助.

这次课程设计还让我学会了eclipse软件的运行方法,使得我的编程能力又有了一个显著地提高。

七、参考文献

[1]耿祥义、张跃平《Java2实用教程》(第三版)北京:

清华大学出版社,2006年8月

八、附录(主要源代码及程序类的说明)

importjavax。

swing.*;

importjava。

awt。

*;

importjava.awt。

event.*;

importjavax。

swing。

table。

*;

importjava.sql.*;

importedu.njust.cs。

*;

//图书管理员

publicclassSimpleBookManager{

publicstaticvoidmain(String[]args){

SetFont.setFont(newFont(”楷体",0,12));

Connectioncon=null;

try{

con=SqlUtil。

acquireConnection(”127。

0。

0.1”,

"1433",”bookTest","admin","xyz");

}catch(Exceptione){

System.out.println(e);

System。

exit(—1);

}

if(con!

=null){

JFramef=newJFrame();

f.addWindowListener(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente){

System。

exit(0);

});

f.getContentPane()。

add(newBookManager(f,con));

f。

setSize(600,400);

f.show();

}

classBookManagerextendsJPanelimplementsActionListener{

privateString[]columnNames={”图书编号","书名","定价","出版社”};

privateClass[]dataType={String.class,String.class,Double。

class,String。

class};

privateCustomTableModelmodel=null;

privateJTabletable=null;

privateConnectioncon=null;

privateJButtonbtnAdd=newTextAndPicButton(”image/addrow20.gif","增加");

privateJButtonbtnSearch=newTextAndPicButton("image/search20.gif”,"查询”);

privateJButtonbtnDelete=newTextAndPicButton(”image/deleterow20.gif","删除”);

privateJButtonbtnExit=newTextAndPicButton("image/exit20。

gif","退出”);

privateJFramef=null;

publicBookManager(JFramef,Connectioncon){

this。

f=f;

this.con=con;

//构建工具条

JToolBartoolBar=newJToolBar();

toolBar.add(btnAdd);

toolBar.add(btnSearch);

toolBar。

add(btnDelete);

toolBar。

add(btnExit);

//注册事件侦听器

btnAdd。

addActionListener(this);

btnSearch。

addActionListener(this);

btnDelete.addActionListener(this);

btnExit.addActionListener(this);

//构建表格

model=newCustomTableModel(0,columnNames。

length,columnNames,dataType);

table=newJTable(model);

table。

setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

//设定表格每列的宽度

setTableColumnWidth(0,100);

setTableColumnWidth(1,200);

setTableColumnWidth(2,100);

setTableColumnWidth(3,250);

//布局工具条及表格

this。

setLayout(newBorderLayout());

this。

add(toolBar,BorderLayout。

NORTH);

this。

add(newJScrollPane(table),BorderLayout。

CENTER);

}

//设置表格指定列的宽度

publicvoidsetTableColumnWidth(intcolumn,intwidth){

if(column=0){

TableColumncol=table.getColumn(columnNames[column]);

col。

setPreferredWidth(width);

}

publicvoidactionPerformed(ActionEvente){

Objects=e。

getSource();

if(s==this.btnAdd)add();

elseif(s==this。

btnSearch)search();

elseif(s==this。

btnDelete)delete();

elseif(s==this.btnExit)System。

exit(0);

}

//增加一条记录到数据库

publicvoidadd(){

BookEditorbe=newBookEditor(f,”增加”,true);

be.show();

//只有点击了信息对话框中的确定按钮,才增加记录

if(be。

getActionCode()==be。

OK){

StringinsertSql="insertintobookInfoVALUES(?

,?

)”;

Object[]lineForDBAdd={be.getID(),be.getBookName(),

be.getBookPrice(),be.getBookPress()};

if(SqlUtil.addRowToDB(con,insertSql,lineForDBAdd))

{//成功写入数据库的记录,追加到表格的末行显示

Object[]lineForTable=

SqlUtil。

getLineForTableFromLineForDB(lineForDBAdd,dataType);

model。

insertRow(model。

getRowCount(),lineForTable);

//将表格的最后一行选中

table.changeSelection(model.getRowCount()-1,0,false,false);

}

else

JOptionPane.showMessageDialog(this,”新增时出错!

”,

”提示”,JOptionPane。

INFORMATION_MESSAGE);

}

}

//查询数据库

publicvoidsearch(){

SearchDialogsd=newSearchDialog(f,”查询",true);

sd.show();

if(sd.getActionCode()==sd.OK){

StringreadSql=sd。

getSQL();

SqlUtil。

readDBToTable(con,readSql,model,dataType);

}

//删除选定的记录

publicvoiddelete(){

intselected=table。

getSelectedRow();

if(selected>=0&&selected

getRowCount()){

intresult=JOptionPane.showConfirmDialog(f,"您确定要删除该条图书信息吗?

,"确认",JOptionPane。

YES_NO_OPTION,JOptionPane。

QUESTION_MESSAGE);

if(result!

=JOptionPane。

YES_OPTION)return;

StringdeleteSql="deletefrombookInfowherebookID=?

”;

Object[]keys={model.getValueAt(selected,0)。

toString()};

if(SqlUtil。

deleteFromDB(con,deleteSql,keys))

model.removeRow(selected);

else

JOptionPane。

showMessageDialog(f,"请选定要删除的一行!

”提示",JOptionPane.INFORMATION_MESSAGE);

//内部类,用于显示/编辑图书信息的一个模式对话框

classBookEditorextendsJDialogimplementsActionListener{

finalintOK=1;

finalintCANCEL=-1;

finalintCLOSE=0;

privateintactionCode=CANCEL;

privateJLabellabID=newJLabel(”图书编号");

privateJTextFieldtxtID=newJTextField();

privateJLabellabBookName=newJLabel("图书名称”);

privateJTextFieldtxtBookName=newJTextField();

privateJLabellabBookPrice=newJLabel("单价”);

privateJTextFieldtxtBookPrice=newJTextField();

privateJLabellabBookPress=newJLabel(”出版社");

privateJTextFieldtxtBookPress=newJTextField();

privateJButtonbtnPre=newJButton(”上一个”);

privateJButtonbtnNext=newJButton(”下一个");

privateJButtonbtnOk=newJButton("确定”);

privateJButtonbtnCancel=newJButton(”取消”);

privateJFramef=null;

publicBookEditor(JFramef,Strings,booleanb){

super(f,s,b);

this。

f=f;

//面板p中显示图书信息

JPanelp=newJPanel();

p。

setLayout(newGridBagLayout());

LayoutUtil。

add(p,GridBagConstraints.NONE,

GridBagConstraints。

CENTER,0,0,0,0,1,1,labID);

LayoutUtil。

add(p,GridBagConstraints。

HORIZONTAL,

GridBagConstraints.CENTER,100,0,1,0,1,1,txtID);

LayoutUtil。

add(p,GridBagConstraints。

NONE,

GridBagConstraints.CENTER,0,0,2,0,1,1,labBookName);

LayoutUtil.add(p,GridBagConstraints.HORIZONTAL,

GridBagConstraints。

CENTER,100,0,3,0,1,1,txtBookName);

LayoutUtil.add(p,GridBagConstraints。

NONE,

GridBagConstraints。

CENTER,0,0,0,1,1,1,labBookPrice);

LayoutUtil。

add(p,GridBagConstraints。

HORIZONTAL,

GridBagConstraints。

CENTER,100,0,1,1,1,1,txtBookPrice);

LayoutUtil。

add(p,GridBagConstraints。

NONE,

GridBagConstraints。

CENTER,0,0,2,1,1,1,labBookPress);

LayoutUtil.add(p,GridBagConstraints。

HORIZONTAL,

GridBagConstraints.CENTER,100,0,3,1,1,1,txtBookPress);

//注册事件侦听器

btnOk.addActionListener(this);

btnCancel.addActionListener(this);

btnPre。

addActionListener(this);

btnNext。

addActionListener(this);

btnOk.setIcon(newImageIcon(”image/ok20。

gif”));

btnCancel.setIcon(newImageIcon("image/cancel20。

gif”));

btnPre.setIcon(newImageIcon("image/pre20.gif”));

btnNext。

setIcon(newImageIcon("image/next20.gif"));

btnNext.setHorizontalTextPosition(SwingConstants.LEFT);

//在增加模式下前后移动按钮置为不可用

//读者扩展该程序具有编辑功能时,可以将前后移动按钮置为可用

if(s.equals(”增加”)){

btnPre.setEnabled(false);

btnNext.setEnabled(false);

}

//面板ap中显示4个按钮

JPanelap=newJPanel();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1