JAVA图书馆管理系统课程设计.docx
- 文档编号:6121556
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:15
- 大小:385.88KB
JAVA图书馆管理系统课程设计.docx
《JAVA图书馆管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《JAVA图书馆管理系统课程设计.docx(15页珍藏版)》请在冰豆网上搜索。
JAVA图书馆管理系统课程设计
图书馆管理系统
1.课程设计的目的
目前,随着网络技术的飞速发展,各行各业都在追求信息化,以防在信息时代落伍,而普通高校也如此,图书馆是高校师生获得知识的一个重要渠道。
因此一个健全的图书管理系统就必不可少,图书管理系统的使用大大的提高了图书馆的工作效率,很好的节省了大量的人力、物力和财力资源。
管理信息系统的开发是一个开发周期长、技术要求高、影响因素多的复杂系统工程,因此制定一个完善、可行、合理的开发计划,不仅是系统开发成功的保证,而且可以提高效率、节省时间、降低成本。
由于在过去人们对信息管理的主要方式是基于文本、表格等纸质的手工处理之上的,而用手工进行图书借阅管理存在多种弊端,其中包括图书过于繁多,包含很多的信息数据的管理对于图书借阅情况如:
借阅天数、超过限定借阅时间等等的统计和核实,往往采用对借阅卡的人工查询进行,对借阅天数等用人工计算、手抄进行。
信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。
总的来说缺乏系统、规范的管理手段人们操控起来是很困难的;因此,使用电子化的管理手段将是大势所趋,建立一个图书管理系统也是图书管理部门提高工作效益的有效手段。
系统能够合理高效地利用图书资源,使得图书借阅更加的科学合理。
2.设计方案论证
2.1需求分析
对于一个图书管理系统来说,图书的查询及数据的维护管理是其中的核心环节。
在现现行的图书管理中存在几个共同的问题:
(1)图书种类过多,数据庞大;这是几乎所有图书馆都会遇到的共同问题,各种不同种类的图书馆为这些图书入库,进行添加于维护增加了很多的难题,对这些数据的反复输入,往往造成庞大的工作量和较低的效率。
(2)查询图书困难,每天的借阅情况,读者借阅的到期、还书情况,各项数据的汇总和统计情况必须由管理员统计上报,图书库总管理员才能考虑对图书馆的硬件如某类书的需求数量进行改变已向上级申报。
(3)图书毁坏及图书破损;在借阅过程中难免此类现象的发生,如何及时发现及事后对毁坏图书进行淘汰和更新也是个需要解决的问题。
(4)不能及时归还图书;经常有读者超过借阅期的情况发生,对此类读者的超期信息提示也是图书借阅管理工作中必须解决的问题之一。
本软件主要有以下几方面的功能
(1)系统部分:
主要完成本系统工程的维护工作(包括:
添加用户、添加员工、修改密码)
(2)图书管理部分:
要完成图书基本信息的管理(包括:
添加、修改、查询、删除图书基本信息)
(3)借阅管理部分:
主要完成图书借阅的管理(包括:
图书借阅、归还、查询等)2.2系统包含的类及类之间的关系
本系统共包括15个Java源文件和1个辅助文件。
类之间的关系如图1所示。
图1类关系图
(1)AppBook.java
该文件包含主函数入口,旨在创建登录界面对象并在屏幕中居中显示。
(2)FrLogin.java
该文件是登录界面的封装类,定义并设置了登录界面相关组件及显示效果,还定义了登录、退出按钮的事件监听。
功能:
点击登录按钮,对填写的信息进行验证并与数据库数据进行比对,匹配就登录成功进入主界面;取消按钮即可退出系统。
(3)FrMain.java
该文件是主界面的封装类,定义并设置了主界面相关组件及显示效果,还定义了菜单栏上面各菜单项的监听事件,有系统管理:
修改管理员密码、退出,基本操作:
添加新读者、新书入库、借书、还书、续借、读者管理、图书管理,帮助:
关于等10个事件的监听。
功能:
点击对应的菜单栏就会弹出对应的对话框,并传递需要的参数。
(4)FrChange.java
该文件是修改用户密码界面的封装类,定义并设置了更改密码界面相关组件及显示效果,还定义了确定、取消按钮的事件监听。
功能:
点击确定按钮,对输入的信息进行验证并与数据库数据进行比对,匹配就更新数据库,下次登录使用新密码;取消按钮即关闭修改密码界面。
(5)FrAddreader.java
该文件是添加新读者界面的封装类,定义并设置了添加新读者界面相关组件及显示效果,还定义了提交、返回按钮的事件监听。
功能:
点击提交按钮,对输入的信息进行验证,通过就写入数据库然后返回读者的编号,不符合要求就提示重新输入;返回按钮即关闭添加新读者界面。
(6)FrAddBook.java
该文件是新书入库界面的封装类,定义并设置了新书入库界面相关组件及显示效果,还定义了提交、退出按钮的事件监听。
功能:
点击提交按钮,对输入的信息进行验证,通过就写入数据库然后返回图书添加成功消息,不符合要求就提示重新输入;退出按钮即关闭新书入库界面。
(7)FrBorrow.java
该文件是借书登记界面的封装类,定义并设置了借书登记界面相关组件及显示效果,还定义了确定、取消按钮的事件监听。
功能:
点击确定按钮,对输入的信息进行验证,若输入的信息满足要求且该读者没有借该图书就提示借书成功并将数据写入数据库,否则提示对应的不通过原因;取消按钮及关闭借书登记界面。
(8)FrReturn.java
该文件是还书登记界面的封装类,定义并设置了还书登记界面相关组件及显示效果,还定义了提交、取消按钮的事件监听。
功能:
点击提交按钮,对输入的信息进行验证并与数据库中数据比对,若输入的信息满足要求且与数据库中数据一致就提示还书成功并更新数据库,否则提示对应的不通过原因;取消按钮及关闭还书登记界面。
(9)FrKeep.java
该文件是续借登记界面的封装类,定义并设置了续借登记界面相关组件及显示效果,还定义了提交、取消按钮的事件监听。
功能:
点击提交按钮,对输入的信息进行验证并与数据库中数据比对,若输入的信息满足要求且与数据库中数据一致就提示续借成功并更新数据库,否则提示对应的不通过原因;取消按钮即关闭续借登记界面。
(10)FrAbout.java
该文件是关于界面的封装类,定义并设置了续借登记界面相关组件及显示效果,
还定义了确定按钮的事件监听。
功能:
显示系统的版权及开发工具等信息,点击确定按钮就关闭关于界面。
(11)FrReadermanage.java
该文件是读者管理界面的封装类,定义并设置了读者管理界面相关组件及显示效果,还定义了查找、修改、删除、刷新、关闭按钮的事件监听。
功能:
对读者的信息进行统一的管理,包括删、改、查等功能,其中选中列表中的一列然后点击修改按钮就会打开读者信息修改界面。
(12)FrRedit.java
该文件是读者信息修改界面的封装类,定义并设置了读者信息修改界面相关组件及显示效果,还定义了确定、取消按钮的事件监听。
功能:
对可以修改的信息修改后,点击确定按钮就更新对应数据库中的读者数据,取消按钮即关闭读者信息修改界面。
(13)FrBookmanage.java
该文件是图书管理界面的封装类,定义并设置了图书管理界面相关组件及显示效果,还定义了查找、修改、删除、刷新、关闭按钮的事件监听。
功能:
对图书的信息进行统一的管理,包括删、改、查等功能,其中选中列表中的一列然后点击修改按钮就会打开图书信息修改界面。
(14)FrBedit.java
该文件是图书信息修改界面的封装类,定义并设置了图书信息修改界面相关组件及显示效果,还定义了确定、取消按钮的事件监听。
功能:
对可以修改的信息修改后,点击确定按钮就更新对应数据库中的读者数据,取消按钮即关闭图书信息修改界面。
(15)DBC.java
该文件是数据库接口的类,定义了数据库的创建、连接、查找、更新等操作。
功能:
对数据库总的数据进行增、删、改、查等基本操作。
2.3系统设计
成员变量
表1成员变量
成员变量描述
成员变量描述
名称
主菜单条
JMenuBarbar
jMenuBar1
系统管理菜单
JMenu
menuSysManage
基本操作菜单
JMenu
menuBasic
帮助菜单
JMenu
menuHelp
修改密码菜单项
JMenuItem
miChangePwd
退出菜单项
JMenuItem
miExit
添加新读者菜单项
JMenuItem
miAddReader
新书入库菜单项
JMenuItem
miAddBook
借书菜单项
JMenuItem
miBorrowBook
还书菜单项
JMenuItem
miReturnBook
续借菜单项
JMenuItem
miGoon
读者管理菜单项
JMenuItem
miReaderManage
图书管理菜单项
JMenuItem
miBookManage
关于菜单项
JMenuItem
miAbout
主界面背景
JLabel
lblMainbg
主界面图片
ImageIcon
back
3.设计结果
运行AppBook.java文件,就会创建并显示登陆界面,具体界面如下:
图2系统登录
输入正确的用户名和密码就会进入主窗口,否则会弹出相关提示,如图3。
图3系统登录
进入系统主页面包含系统管理、基本操作、帮助三个选项及其对应下拉列表
图4图书馆管理系统主界面
选中读者管理界面的列表中的一项,点击修改按钮,就会打开读者信息修改界面,具体图示如下图5所示:
图5读者信息修改窗口
选中图书管理界面的列表中的一项,点击修改按钮,就会打开图书信息修改界面,具体图示如下所示。
图6图书信息修改窗口
4.设计体会
通过为期一个星期的课程设计,将我们这学期所学的JAVA知识得到了巩固和应用,在设计的过程中我们也遇到了很多的问题,不过通过查阅资料及询问老师,问题都得到了解决,这次课程设计还让我们明白了写程序不能闭门造车,要努力扩展知识面,开阔视野,开阔思维,也学会了更加快速的查阅到自己所需要的资料。
短短的一个星期的课程设计过程使我们受益匪浅,不仅是在专业知识方面,最主要是在怎样去解决编程中出现的问题。
遇到问题不能乱,要有条理的设计,找到不熟的方面,再细心的收集资料,比如做这个课程设计的过程中,我们就不是很熟悉菜单栏(JMenuBarbar)、菜单(JMenu)以及菜单项(JMenuItem)之间的关系以及事件的响应,最后通过查阅资料都得到了解决,还有很多很多的问题,这里就不一一列出了。
通过这次的课程设计,我们加深了对面向对象编程的理解,学会了JAVA中一些技术的使用,加深了对JAVA的理解。
另外,本系统还有一些不足之处,整个系统的可靠性、健壮性还有待进一步进行测试,系统安全性设计还不够完善。
5.参考文献
[1]仇宾.Java版井字棋的设计与实现[J].电脑编程技巧与维护,2013,09:
75-80.
[2]明日科技.Java从入门到精通(第2版)[M].北京:
清华大学出版社,2012.9:
20-25
[3]梁勇.Java语言程序设计:
基础篇[M],第2版.北京:
机械工业出版社,2011:
305-350
[4]李兴华.Javaweb开发实战经典基础篇[M].北京:
清华大学出版社,2011.8:
123-130
[5]魔乐科技软件实训中心.Java从入门到精通[M].北京:
人民邮电出版社,2012.4:
10-25
[6]布洛克.EffectiveJava中文版(第2版)[M].北京:
机械工业出版社,2012,1:
53-60
[7]诱明.Java技术[J].程序员,2005,06:
11
[8]刘潇.基于JAVA的五子棋游戏设计与实现[J].电脑知识与技术,2011,06:
1353-1354
[9]姜景根,李祥.基于Java的多线程并发服务器的设计与应用[J].电脑与信息技术,2012,01:
15-17+42
[10]阮彤,李京,冯东雷.基于Java的应用服务器的设计与实现[J].计算机研究与发展,2011,08:
939-946.
附录
FrMain.java
packagemybook.book;
importjava.awt.*;
importjavax.swing.*;
importjava.awt.Rectangle;
importjavax.swing.BorderFactory;
importjava.awt.Color;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.MouseEvent;
importjava.awt.event.MouseAdapter;
importjava.awt.BorderLayout;
importjava.util.Calendar;
importjava.io.IOException;
importmydbc.dbc.DBC;
importjava.sql.ResultSet;
importjava.sql.SQLException;
//该类为本程序主界面
publicclassFrMainextendsJFrame{
//私有成员
JMenuBarjMenuBar1=newJMenuBar();
JMenumenuSysManage=newJMenu();
JMenuItemmiChangePwd=newJMenuItem();
JMenuItemmiExit=newJMenuItem();
JMenumenuBasic=newJMenu();
JMenuItemmiAddReader=newJMenuItem();
JMenuItemmiAddBook=newJMenuItem();
JMenuItemmiBorrowBook=newJMenuItem();
JMenuItemmiReturnBook=newJMenuItem();
JMenuItemmiGoon=newJMenuItem();
JMenuItemmiReaderManage=newJMenuItem();
JMenuItemmiBookManage=newJMenuItem();
JMenumenuHelp=newJMenu();
JMenuItemmiAbout=newJMenuItem();
JPanelpalState=newJPanel();
JLabellblSysName=newJLabel();
JLabellblShow=newJLabel();
JLabellblMainbg=newJLabel();
JLabellblNowtime=newJLabel();
JLabellblTime=newJLabel();
ImageIconback=newImageIcon("img/bookbg.jpg");
publicFrMain(){
try{
jbInit();
}catch(Exceptionexception){
exception.printStackTrace();
}
}
privatevoidjbInit()throwsException{
getContentPane().setLayout(null);
this.setJMenuBar(jMenuBar1);
setSize(newDimension(600,490));
this.setTitle("图书管理系统");
menuSysManage.setText("【系统管理】");
miChangePwd.setText("修改密码");
miChangePwd
.addActionListener(newFrMain_miChangePwd_actionAdapter(this));
miExit.setText("退出");
miExit.addActionListener(newFrMain_miExit_actionAdapter(this));
menuBasic.setText("【基本操作】");
miAddReader.setText("添加新读者");
miAddReader
.addActionListener(newFrMain_miAddReader_actionAdapter(this));
miAddBook.setText("新书入库");
miAddBook.addActionListener(newFrMain_miAddBook_actionAdapter(this));
miBorrowBook.setText("借书");
miBorrowBook.addActionListener(newFrMain_miBorrowBook_actionAdapter(
this));
miReturnBook.setActionCommand("还书");
miReturnBook.setText("还书");
miReturnBook.addActionListener(newFrMain_miReturnBook_actionAdapter(
this));
miGoon.setText("续借");
miGoon.addActionListener(newFrMain_miGoon_actionAdapter(this));
miReaderManage.setText("读者管理");
miReaderManage
.addActionListener(newFrMain_miReaderManage_actionAdapter(this));
miBookManage.setText("图书管理");
miBookManage.addActionListener(newFrMain_miBookManage_actionAdapter(
this));
menuHelp.setText("【帮助】");
miAbout.setText("关于");
miAbout.addActionListener(newFrMain_miAbout_actionAdapter(this));
palState.setBounds(newRectangle(0,400,700,38));
palState.setLayout(null);
lblSysName.setText("图书管理系统");
lblSysName.setBounds(newRectangle(3,3,85,31));
lblShow.setText("技术支持JAVAECLIPSE");
lblShow.setBounds(newRectangle(86,3,150,31));
lblMainbg.setIcon(back);
lblMainbg.setBounds(newRectangle(0,0,699,431));
lblTime.setText("当前时间:
");
lblTime.setBounds(newRectangle(350,3,63,31));
lblNowtime.setBounds(newRectangle(420,3,179,31));
jMenuBar1.add(menuSysManage);
jMenuBar1.add(menuBasic);
jMenuBar1.add(menuHelp);
menuSysManage.add(miChangePwd);
menuSysManage.addSeparator();
menuSysManage.add(miExit);
menuBasic.add(miAddReader);
menuBasic.add(miAddBook);
menuBasic.addSeparator();
menuBasic.add(miBorrowBook);
menuBasic.add(miReturnBook);
menuBasic.add(miGoon);
menuBasic.addSeparator();
menuBasic.add(miReaderManage);
menuBasic.add(miBookManage);
menuHelp.add(miAbout);
this.getContentPane().add(palState);
this.getContentPane().add(lblMainbg);
palState.add(lblSysName);
palState.add(lblShow);
palState.add(lblNowtime);
palState.add(lblTime);
Timetime=newTime();
time.start();
}
//该方法用于被调用并初始化一个新Frame
publicvoidNewFram(Framex){
DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSize();
DimensionframeSize=x.getSize();
if(frameSize.height>screenSize.height){
frameSize.height=screenSize.height;
}
if(frameSize.width>screenSize.width){
frameSize.width=screenSize.width;
}
x.setLocation((screenSize.width-frameSize.width)/2,
(screenSize.height-frameSize.height)/2);
x.setVisible(true);
}
classTimeextendsThread{
publicvoidrun(){
//以下用于同步显示时间
Calendarcal;
while(true){
try{
cal=Calendar.getInstance();
Stringnow=cal.get(Calendar.YEAR)+"年"
+(cal.get(Calendar.MONTH)+1)+"月"
+cal.get(Calendar.DATE)+"日"
+cal.get(Calendar.HOUR)+"时"
+cal.get(Calendar.MINUTE)+"分"
+cal.get(Calendar.SECOND)+"秒";
lblNowtime.setText(now);
//每一秒钟循环一次
Thread.sleep(1000);
}catch(InterruptedExceptionex){
System.out.println(ex.getMessage());
}
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 图书馆 管理 系统 课程设计