JAVA图书馆借阅系统论文.docx
《JAVA图书馆借阅系统论文.docx》由会员分享,可在线阅读,更多相关《JAVA图书馆借阅系统论文.docx(39页珍藏版)》请在冰点文库上搜索。
JAVA图书馆借阅系统论文
XX科技学院
Java课程设计
设计(论文)题目:
_图书馆借阅系统
所在院:
信息工程学院_
专业班级:
XX级计算机科学与技术x班
学生姓名:
XX
学号:
XX
指导教师:
XX
20XX年x月8日
XX科技学院
课程设计(论文)任务书
设计题目:
图书馆借阅系统
专业班级:
学号姓名xx
主要内容
图书借阅管理系统的主要包含:
添加新书、添加学生;删除图书、删除学生;修改图书信息、修改学生;查询所有图书、按书名查询图书、按图书编号查询;按学号查询学生、按学生姓名查询学生;借阅图书;还书;图书催还模块。
基本要求:
统采用Java中的Swing包来进行界面的设计,使用C/S设计模式,通过菜单选择相应的操作,直观且操作简单。
数据库选用MicrosoftOfficeAccess2006;编辑平台选用MyEclipse。
到的知识点有:
类的基本构成,异常处理,图形用户界面,文件操作和数据库操作等。
完成期限:
20xx年x月6日
指导教师签名:
评审小组负责人签名:
引言
1.1开发背景
在我国信息化管理系统近年来日趋成熟,在采用计算机技术进行管理之前,图书的图书借阅工作是非常繁琐和复杂的。
图书的借阅工作完全依赖于手工操作,不但费时费力而且经常容易出错。
读者在借书的时候首先要有一个借阅证,工作人员把读者要借阅的信息卡与读者的借阅证放到一起,并且在借阅证上填写借阅信息,这就是手工操作时代的借阅过程。
这样的借阅工作显而易见,效率非常低,因为工作量大不仅容易丢失,而且还容易出错。
总的来说,缺乏系统、规范的信息管理手段。
利用计算机来处理这些流程无疑会极大程度地提高效率和处理能力。
读者排队的时间会明显缩短,读者可以花更多的时间在选书和看书上面。
而且近年来,随着图书馆规模的逐渐扩大,图书数量也相应的大量增加,有关的图书的各种信息成倍增长,总是面对大量的读者信息、书籍信息、以及两者相互作用而产生的借书信息、还书信息等等面对如此庞大的信息量,需要一套合理、有效、规范的图书馆管理系统。
对图书资料进行统一、集中的管理。
使用本软件之后,工作人员可以查询某位读者、某种图书的借阅情况,以及借书还书,读者的信息增加修改等变得都非常方便和快捷,效率也提高了。
1.2目前一些图书管理系统存在的问题
1.检索速度慢、效率低
因为图书馆的藏书种类多、数量多,将藏书准确地分门别类,快速检索,手工进行非常困难,有时会出现一些错误信息,例如馆中没有此书或已被别人借走且没有记录。
图书馆的规模越大,这个问题越突出。
2.借书、还书工作量大
借书、还书频率越大,说明图书馆的作用越大,然而随之而来的大量的借书、还书登记、实存图书的更新以及借出图书超期、遗失等的处理,其工作量之大,往往是人工操作所难以胜任的。
而且经常会出现这样那样的差错。
3.图书统计工作难、藏书更新不能及时完成。
图书馆的图书应根据科学技术的发展和教学工作的需要及时添加和更新,然而由于藏书数量及图书种类越来越多,加上自然损耗,人为破坏,使图书的统计工作难以及时完成,藏书的更新也就很难有针对性地进行,藏书的知识结构得不到良好地控制。
1.3课题意义
随着计算机的广泛应用,其逐步成为现代化的标志。
图书馆的信息量也会越来越大,因此需要对读者资源、书籍资源、借书信息、还书信息进行管理,及时了解各个环节中信息的变更,要对因此而产生的单据进行及时的处理,为了提高图书馆或者企业内部对图书存销的自动化的管理,能够更快速的满足读者的要求,提高各种工作的效率,现对其设计相应的系统,以达到上述的目的。
图书管理系统的主要功能是实现图书馆图书借阅和归还的管理的自动化。
围绕这一主要功能,本系统涉及到以下核心功能:
借阅管理,归还管理。
除了这些核心功能外,还包括一些基本和辅助功能,它们是:
用户管理、图书馆参数、管理员管理。
1.4课题内容
1.实现图书馆对所藏图书的按类别、书名等多方面的查询,最大的方便读者和图书馆工作人员对所需图书的查询;
2.建立图书馆外借读者数据库,方便工作人员对读者进行有效管理;
3.建立图书馆工作人员数据库,限定每个工作人员对软件操作的权限,最大限度的保护数据库;
4.建立读者数据库,限定每个读者对图书借阅的操作的权限,最大限度的保护数据库;
5.实现图书馆对新书入库,旧书注销的简单处理,方便进货;实现图书馆的有效管理。
2需求分析
2.1可行性分析
采用现代化统一的计算机系统,能够有效优化图书馆管理系统,使其高效的发挥最大作用,能够迅捷的为读者提供相应的服务,也同时能为管理人员减轻负担。
开发本系统的可行性研究如下:
2.1.1技术可行性
技术上的可行性分析主要分析技术条件能否顺利完成开发工作,软、硬件能否满足需要。
本系统采用java开发出友好美观的人机界面,便于用户理解、操作。
使用Eclipse作为开发工具,使用方面规范性强。
数据库管理系统采用Access,它能够处理大量数据,同时保持数据的完整性、安全性。
因此本系统的开发平台已成熟可行。
硬件方面,在科技飞速发展的今天,硬件更新速度越来越快,容量越来越大,可靠性越来越高,价格越来越便宜,因此硬件平台也能够满足本系统所需[1]。
2.1.2经济可行性
鉴于计算机技术发展异常迅猛,,在硬件软件配置以及开发技术均以可行的情况下开发这样一个管理系统成本不会很高,但其可以大大提高图书馆的工作效率,也是图书馆管理发展的必然趋势,其必将有比较宽阔的市场,,加上目标系统并不是十分复杂和开发周期较短,人员经济支出有限。
开发完成运行后,为使用者带来便利,为系统的进一步推广创造了条件,经济收益将远超过投资。
从经济角度考虑,此系统开发可行。
2.2功能分析
该系统主要建立一个基于C/S模式的图书管理系统,面对当今很多小型图书管理仍是人工管理带来的检索速度慢,效率低,借阅归还图书量大,图书统计工作量大,藏书不能完成及时更新的问题,该系统可以对两个不同的用户类型实现不同的功能:
1.对于图书馆工作人员能够方便的对图书信息的管理,可以增加、修改、删除图书,丰富具体图书的信息,对不同图书进行分类操作;可以根据图书证号和图书的条形码的进行借书和还书的操作;对读者的信息进行增加、修改、删除,以及读者的的信息统计来实现对读者的管理;对管理员的一些信息进行添加、删除和管理权限的设置来实现对管理员的管理;可以查询图书相关资料、当前借阅情况和历史借阅情况;以及对一些参数的
管理。
2.对于读者在本系统的应用下可实现按照各种方式(如:
书名,作者,ISBN号,出版)查询图书馆的藏书情况;能够查询自己的借阅图书情况,也能查询自己的信息(如学号、姓名、密码、电话、地址等)和更新自己的信息以便对自己的信息进行管理。
2.3性能分析
1.打开软件后任意的浏览切换不同的界面(随意操作),包括“图形登陆界面”,“图书查询界面”,“借书还书界面”,“读者管理界面”,“管理员界面”,“图书管理界面”及各个菜单项和按钮均有反应且反应正确无误。
2.不可用的按钮,全部置灰,减少用户无谓的操作,提高可操作性。
3.具有较高的可靠性和容错能力,无溢出问题和数据丢失。
4.界面设计合理。
面板内文字为当前语言,并且语意明确。
各个组件无交错覆盖。
输入框内文字字数以及类型任意输入,无越界以及提示违规现象。
3总体设计
3.1模块设计
系统可以对两个不同的用户类型实现不同的功能。
1.图书馆管理人员功能模块,它包括1)根据图书的书名、isbn来查图书信息;再根据读者的图书证号来查询读者的借阅信息。
2)借书还书模块:
根据学号和图书条形码进行图书借阅操作;通过图书条形码来进行还书操作。
3)系统维护:
图书维护可以增加、修改、删除图书,丰富具体图书的信息;读者维护可对读者的信息进行增加、修改、删除,以及读者的信息统计来实现对读者的管理;管理员维护读管理员的一些信息进行添加、删除和管理权限的设置来实现对管理员的管理;参数维护图书馆管理的一些参数的进行管理。
2.读者管理模块,各种它包括1)书目检索模块可以根据书名、ISBN号查询图书馆的藏书情况。
2)我的借阅模块能够查询自己的借阅图书情况,及时根据图书信息进行还书。
3)读者信息修改模块可以对自己的学号、姓名、电话进行更新以便对自己的信息进行管理。
功能模块图如图3.1所示。
程序流程:
3.2数据库设计
数据库是整个系统的基石,数据库的设计优劣直接影响到整个系统的设计成败,本节对数据库的设计进行专门阐述。
数据库设计是把现实世界的实体模型与需求转换成数据库的模型的过程,它是建立数据库应用系统的核心问题。
数据库及其应用的性能都建立在良好的数据库设计的基础之上,数据库的数据是一切操作的基础,如果数据库设计不好,那么其它一切用于提高数据库性能的方法收效都是有限的。
数据库设计的关键是如何使设计的数据库能合理地存储用户的数据,方便用户进行数据处理[10]。
设计数据库必须遵循一定的规则,在关系型数据库中,这种规则就是范式,范式是符合某一种级别的关系模式的集合。
一般人们设计数据库遵循第三范式。
即:
数据库表中不包含已在其他表中包含的非主关键字信息。
采用范式减少了数据冗余,节约了存储空间,同时加快了增删改的速度。
3.2.1图书信息表结构设计
图书信息表主要用于存储图书馆中所藏图书的相关信息,其中的相关信息是在图书入库时由操作员进行添加完善,此表主要用于读者和图书管理员对馆中图书的查询,系统用户根据图书的某个属性进行查询,便可得知图书的其他相关信息,其中图书所在书架属性是便于读者借阅时对图书的寻找,图书价格是在读者不慎将图书遗失时对遗失图书进行赔偿的依据。
表的具体结果如表4.1所示。
图书表(Books)
字段名
字段类型
描述
Isbn
Varchar2(20)
图书编号
Book_Name
Varchar2(100)
图书名称
Book_Desc
Varchar2(1000)
图书描述
Book_Price
Number(4,2)float
图书单价
Book_Type
Varchar2(50)
图书类别
Book_Total
Number(4)int
图书总库存量
Book_Current
Number(4)int
图书目前数量
Isbn
Book_Name
Book_Desc
Book_Price
Book_Type
Book_Total
Book_Current
isbn-001-001
Java高级编程指南
Java高级编程指南
32.5
Java编程系列
2
2
ISBN-001-002
Java中级编程指南
Java中级编程指南
30.5
Java编程系列
4
4
ISBN-001-003
Java初级编程指南
Java初级编程指南
28.5
Java编程系列
3
3
ISBN-002-001
数据结构
数据结构
28.5
数据结构
5
5
ISBN-003-001
数据库指南
数据库指南
25.5
数据库指南
3
3
ISNB-005-001
J2EE编程指南
J2EE编程指南
40
J2EE编程系列
1
1
3.2.2读者信息表结构设计
读者信息表的设计是为了图书馆管理员对读者进行管理,其中读者ID,不同类型证件的号码都是唯一的,是读者在借阅图书时需要输入对读者身份进行识别的信息,读者电话等信息是为了与读者进行联系,读者类型信息决定了读者一次性可借阅的图书的数量,注册时间可用于查询计算读者身份有效的期限,操作员是为了便于对信息才操作的查询。
表的具体结构设计如图4.3所示。
学生证(借书证)表(Student)
字段名
字段类型
描述
Student_ID
Varchar2(20)
学生证编号
Student_Name
Varchar2(20)
学生姓名
Student_ID
Student_Name
98212001
小吴
98212002
小李
98212003
小马
98212004
小陈
3.2.3图书借阅信息表结构设计
该表的设计是用于对读者借阅图书进行管理,表中图书条码属性是对借阅图书的唯一性识别标识,读者ID号记录借阅的相应读者,借书时间记录了相应的归还时间,以及归还时是否超时,以及超期天数,根据读者的类型以及天数进行罚款,是否归还标识可查询读书是否被归还,表的具体结构设计如图4.5所示。
表4.5学生借还书记录表(Books_Log)
字段名
字段类型
描述
ID
Number(8)long
图书借阅编号
Student_ID
Varchar2(20)
学生证编号
Borrow_Date
Date
图书借阅日期
Return_Date
Date
图书归还日期
Isbn
Varchar2(20)
图书编号
Book_Num
Number(4)int
图书数量
Is_Return
Number
(1)int
是否归还
4核心代码实现
4.1主界面实现
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.sql.SQLException;
importjavax.swing.ImageIcon;
importjavax.swing.JDialog;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JMenu;
importjavax.swing.JMenuBar;
importjavax.swing.JMenuItem;
importjavax.swing.UIManager;
importorg.jvnet.substance.SubstanceLookAndFeel;
importorg.jvnet.substance.theme.SubstanceLightAquaTheme;
publicclassMainJFrameextendsJFrameimplementsActionListener
{
publicMainJFrame()//空文件的构造方法
{
super("图书馆借阅系统");
this.setBounds(400,200,555,610);//设置窗口位置及大小
this.setDefaultCloseOperation(EXIT_ON_CLOSE);//HIDE_ON_CLOSE隐藏
JMenuBarmenubar=newJMenuBar();
this.setJMenuBar(menubar);//菜单栏添加到框架窗口
Stringmenustr[]={"添加","删除","修改","查询","借书","还书","催还表","帮助"};
JMenumenu[]=newJMenu[menustr.length];
for(inti=0;i
{
menu[i]=newJMenu(menustr[i]);
menubar.add(menu[i]);
}
Stringmenuitemstr1[]={"添加新书","添加学生"};
JMenuItemmenuitem1[]=newJMenuItem[menuitemstr1.length];
for(inti=0;i{
menuitem1[i]=newJMenuItem(menuitemstr1[i]);
menu[0].add(menuitem1[i]);
menuitem1[i].addActionListener(this);
}
Stringmenuitemstr2[]={"删除图书","删除学生"};
JMenuItemmenuitem2[]=newJMenuItem[menuitemstr2.length];
for(inti=0;i{
menuitem2[i]=newJMenuItem(menuitemstr2[i]);
menu[1].add(menuitem2[i]);
menuitem2[i].addActionListener(this);
}
Stringmenuitemstr3[]={"修改图书","修改学生"};
JMenuItemmenuitem3[]=newJMenuItem[menuitemstr3.length];
for(inti=0;i{
menuitem3[i]=newJMenuItem(menuitemstr3[i]);
menu[2].add(menuitem3[i]);
menuitem3[i].addActionListener(this);
}
JMenumenu1=newJMenu("查询图书");
menu[3].add(menu1);
JMenuItemmenuitem8=newJMenuItem("按书号查询");
menu1.add(menuitem8);
menuitem8.addActionListener(this);
JMenuItemmenuitem9=newJMenuItem("按书名查询");
menu1.add(menuitem9);
menuitem9.addActionListener(this);
JMenumenu2=newJMenu("查询学生");
menu[3].add(menu2);
JMenuItemmenuitem10=newJMenuItem("按学号查询");
menu2.add(menuitem10);
menuitem10.addActionListener(this);
JMenuItemmenuitem11=newJMenuItem("按姓名查询");
menu2.add(menuitem11);
menuitem11.addActionListener(this);
JMenuItemmenuitem4=newJMenuItem("浏览图书");
menu[3].add(menuitem4);
menuitem4.addActionListener(this);
JMenuItemmenuitem5=newJMenuItem("借书");
menu[4].add(menuitem5);
menuitem5.addActionListener(this);
JMenuItemmenuitem6=newJMenuItem("还书");
menu[5].add(menuitem6);
menuitem6.addActionListener(this);
JMenuItemmenuitem7=newJMenuItem("催还");
menu[6].add(menuitem7);
menuitem7.addActionListener(this);
JLabeljlabel=newJLabel("",newImageIcon("Image\\B.png"),JLabel.CENTER);
this.getContentPane().add(jlabel,"Center");
this.setVisible(true);
}
publicvoidactionPerformed(ActionEvente)//单击事件处理方法,单击菜单项
{
if(e.getActionCommand()=="添加新书")
{
try
{
newInsertBookJFrame();
}
catch(SQLExceptione1){}
}
if(e.getActionCommand()=="添加学生")
{
try
{
newInsertStudentJFrame();
}
catch(SQLExceptione1){}
}
if(e.getActionCommand()=="删除图书")
{
try
{
newDeleteBookJFrame();
}
catch(SQLExceptione1){}
}
if(e.getActionCommand()=="删除学生")
{
try
{
newDeleStuJFrame();
}
catch(SQLExceptione3){}
}
if(e.getActionCommand()=="修改图书")
{
try
{
newModifyBookJFrame();
}
catch(SQLExceptione1){}
}
if(e.getActionCommand()=="修改学生")
{
try
{
newModifyStuJFrame();
}
catch(SQLExceptione6){}
}
if(e.getActionCommand()=="按书号查询")
{
newQueryBookbyIDJFrame();
}
if(e.getActionCommand()=="按书名查询")
{
newQueryBookByNameJFrame();
}
if(e.getActionCommand()=="按书名查询")
{
newQueryBookByNameJFrame();
}
if(e.getActionCommand()=="按学号查询")
{
newQueryStuByIDJFrame();
}
if(e.getActionCommand()=="按姓名查询")
{
newQueryStuByNameJFrame();
}
if(e.getActionCommand()=="浏览图书")
{
try
{
newQueryJFrame();
}
catch(Exceptione1){}
}
if(e.getActionCommand()=="借书")
{
try
{
newBorrowBookJFrame();
}
catch(Exceptione0){}
}
if(e.getActionCommand()=="还书")