java课程设计图书馆信息管理系统.docx
《java课程设计图书馆信息管理系统.docx》由会员分享,可在线阅读,更多相关《java课程设计图书馆信息管理系统.docx(19页珍藏版)》请在冰豆网上搜索。
java课程设计图书馆信息管理系统
Java课程设计报告
题目:
图书馆信息管理系统
学生姓名:
学号:
专业班级:
同组姓名:
指导教师:
设计时间:
2012年上学期第17周
指导老师意见:
评定成绩:
签名:
日期:
一、系统描述
1.1问题的提出
图书馆的管理直接关系到我们大学生如何更好的使用图书,针对当今的大学图书馆藏书越来越多,学生借书越来越频繁,图书管理较为繁琐,图书馆管理工作人员付出的工作时间越来越多,得到的效率却很低这个现状,决定开发学校图书馆管理系统软件,以帮助更好的实现图书馆的管理,让我们能更便捷的借阅图书,让图书馆管理员能花最少的时间办理好借阅图书手续。
1.2可行性分析
1.2.1技术可行性
首先,我们已经学习了Java这门课程,对Java编程有一定的了解,这在编程的技术上是可行的。
其次,由于本系统的开发是基于本地客户端的,仅仅利用数据库来进行数据的查询,增加,修改,删除,并不涉及数据库的高级操作,如触发器,存储过程,而MySQL遵循SQL的语法,完全支持标准SQl的各种操作,完全满足上述需要。
本系统数据量不是很大,不用使用大型的数据库来存储数据。
MySQL安装和卸载都很方便,不会出现卸载不干净等问题,同时MySQL提供定制安装,可以满足客户的个性化要求,利用MySQL操作数据也很方便,如果不想在命令行下进行操作,可以利用NavicatPremium在图形界面下操作数据,MySQL完全支持标准SQL的语法,比如Select,Delete,Insert,Update这些常用操作。
MySQL检索数据速度很快,占用的内存资源很小,对硬件的要求很低,操作时不会出现操作缓慢的问题,在使用MySQL时,用户可以很快的查询到需要的数据。
综上所述,本小组能够完成一个一个比较简单的图书馆信息管理系统的设计。
1.2.2经济可行性
此系统是由在校大学生开发的学校图书馆管理信息系统。
此系统在开发方式上对系统的需求,由于学校图书馆的借阅是一种无商业利益的,所以系统设计开发的周期要短,在短时间内完成,减少开发成本,提高开发效率,方便、简单、实用是作为系统开发的指导思想。
本系统完全能够在校园图书馆管理工作中发挥重要作用,而作为个人,能在软件开发能力方面得到锻炼和提高也是十分重要的,本系统在此不注重任何社会经济目标。
1.3系统功能分析
通过对图书馆的了解,确定本系统具备一下功能。
1.3.1学生端
查询图书,学生可以进行简单的数据查询和高级查询
挂失图书,当图书丢失时进行相关的挂失
预约图书,当所借书不在管内时可以对图书进行预约
1.3.2管理员端
图书管理,包括对图书的增、删、改、查;
管理员管理,超级管理员能对普通管理员进行增、删、改,普通管理员只有修改自己的信息进行修改
借阅管理,即对图书的外借和归还及交纳罚款的管理
二、分析与设计
2.1功能模块划分
学生端口实现对图书的查询,预约与挂失功能,管理员端口实现对图书的管理以及对用户的管理等。
具体的功能模块图如下:
图1系统功能模块图
2.2数据库结构的描述
2.2.1E-R图设计
根据系统结构图和数据流图描述出实体联系图E-R图,该系统包含的实体主要有图书、学生、管理员。
图2学生用户管理图
图4实体间简单的关系图
2.2.2数据库概念设计
根据相关功能设计和E-R图,确定本系统共设计7张表,分别为学生用户基本信息表、管理员基本信息表、图书基本信息表、超期图书信息表、预约图书信息表、挂失图书信息表、借阅图书信息表。
学生用户基本信息表:
用于记录学生用户的基本信息,主要字段为学生用户和密码等,
具体如下
Createtablestudent(
StuNointprimarykey,notnull
StuNamevarchar(50),
StuAgeint,
StuSexvarchar(20),
Classvarchar(50),
Departmentvarchr(50),
Telvarchar();
Permittedvarchar(50),
Passwordvarcahr(50));
管理员基本信息表:
用于记录管理员的用户ID,其具体显现如下
CreatetableManager(
mgNointprimarykey,
permittedvarchar(50)notnull,
passwordvarchar(50)notnull);
图书基本信息表:
该表用于记录图书的基本信息,其具体实现如下
Createtablebook(
BookNOintprimarykey,
BookNamevarchar(50),
Authorvarchar(50),
Publishermentvarchar(50),
BuyTimevarchar(50),
Borrowedvarchar(50),
Orderedvarchar(50)
);
借阅图书信息表:
该表用来记录学生用户借阅图书的信息,包括记录学号、书号。
借阅时间的等信息,表设计如下:
Createtablerecord(
BookNOintprimarykey,
StuNOintprimarykey,
Borrowedvarchar(50),
ReturnTimevarchar(50),
Borrowedvarchar(50),
Orderedvarchar(50);
)
超期图书信息表:
该表用来记录学生超期图书的信息,包括图书ID和学生姓名等信息。
具体表设计如下:
Createtableexceedtime(
StuNOintnull,
BookNOintnull
BookNamevarchar(50)
DelayTimeint);
Primarykey(StuNO,BookName));
预约图书信息表:
该表用来记录学生预约的图书信息,包括图书ID和学生姓名等信息,涉及如下:
Createtableorderreport(
BookNOintprimary,
StuNamevarchar(50),
Classvarchar(50)
);
挂失图书信息表:
该用来记录学生丢失图书的信息,包括图书ID和学生学号等信息,设计如下:
Createtablelosebook(
LBNOintprimarykey,
StuNOint,
BookNOint,
BookNamevarchar(50)
);
3、系统详细设计文档
3.1系统主界面设计
3.2主页面详细设计
四、部分模块功能描述
4.1登陆界面介绍
登录界面有“用户类型”的登录选择项,还有“新用户注册”项。
4.2登录后的主界面介绍
登陆后界面如下:
附上主要代码:
publicclassMenuActions{
privatestaticMapframes;//?
?
?
?
//?
?
?
?
publicstaticExitActionEXIT;//?
?
?
?
publicstaticUserAddActionUSER_ADD;//?
?
?
?
?
?
publicstaticUserModActionUSER_MODIFY;//?
?
?
?
?
?
publicstaticPasswordModActionMODIFY_PASSWORD;//?
?
?
?
?
?
//?
?
?
?
publicstaticBoodOrderActionNEWBOOK_ORDER;//?
?
?
?
?
?
publicstaticCheckBookActionNEWBOOK_CHECK;//?
?
?
?
?
?
//?
?
?
?
publicstaticBookSearchActionBOOK_SEARCH;//?
?
?
?
?
?
publicstaticGiveBackActionGIVE_BACK;//?
?
?
?
?
?
publicstaticBorrowActionBORROW;//?
?
?
?
?
?
publicstaticExpiredActionexpired;//?
?
?
?
?
?
?
?
//?
?
?
?
?
?
publicstaticReaderAddActionREADER_ADD;//?
?
?
?
?
?
?
?
//?
?
?
?
?
publicstaticBookTypeModActionBOOKTYPE_MODIFY;//?
?
?
?
?
?
?
?
publicstaticBookTypeAddActionBOOKTYPE_ADD;//?
?
?
?
?
?
?
?
publicstaticReaderModActionREADER_MODIFY;//?
?
?
?
?
?
?
?
publicstaticBookModActionBOOK_MODIFY;//?
?
?
?
?
?
?
?
publicstaticBookAddActionBOOK_ADD;//?
?
?
?
?
?
?
?
4.3 借书功能实现
setTitle("?
?
?
?
?
?
");
setIconifiable(true);//?
?
?
?
?
?
?
?
---?
?
setClosable(true);//?
?
?
?
?
?
?
---?
?
setBounds(100,100,500,375);
finalJScrollPanescrollPane=newJScrollPane();
scrollPane.setPreferredSize(newDimension(400,100));
panel.add(scrollPane);
finalJPanelpanel_1=newJPanel();
panel_1.setPreferredSize(newDimension(0,120));
getContentPane().add(panel_1,BorderLayout.NORTH);
finalJSplitPanesplitPane=newJSplitPane();
panel_1.add(splitPane);
finalJPanelpanel_3=newJPanel();
panel_3.setPreferredSize(newDimension(240,110));
splitPane.setLeftComponent(panel_3);
finalJPanelpanel_5=newJPanel();
finalGridLayoutgridLayout=newGridLayout(0,2);
gridLayout.setHgap
(2);
gridLayout.setVgap(10);
panel_5.setLayout(gridLayout);
panel_5.setPreferredSize(newDimension(150,100));
panel_3.add(panel_5);
finalJLabellabel=newJLabel();
label.setText("?
?
?
?
:
");
panel_5.add(label);
readerISBN=newJTextField();
readerISBN.setDocument(newDocument(13));
readerISBN.addKeyListener(newISBNListenerlostFocus());
panel_5.add(readerISBN);
finalJLabellabel_1=newJLabel();
label_1.setText("?
?
?
?
:
");
panel_5.add(label_1);
readerName=newJTextField();
readerName.setEditable(false);
panel_5.add(readerName);
finalJLabellabel_2=newJLabel();
label_2.setText("?
?
?
?
:
");
panel_5.add(label_2);
number=newJTextField();
number.setEditable(false);
panel_5.add(number);
finalJLabellabel_4=newJLabel();
label_4.setText("?
?
:
");
panel_5.add(label_4);
keepMoney=newJTextField();
keepMoney.setEditable(false);
panel_5.add(keepMoney);
Iconicon=newImageIcon("1.gif");
finalJPanelpanel_4=newJPanel();
finalGridLayoutgridLayout_1=newGridLayout(0,2);
gridLayout_1.setVgap(10);
panel_4.setLayout(gridLayout_1);
panel_4.setPreferredSize(newDimension(240,110));
splitPane.setRightComponent(panel_4);
finalJLabellabel_5=newJLabel();
label_5.setText("?
?
?
?
:
");
panel_4.add(label_5);
bookISBN=newJTextField();
bookISBN.setDocument(newDocument(13));
bookISBN.addKeyListener(newbookISBNListenerlostFocus());
panel_4.add(bookISBN);
finalJLabellabel_6=newJLabel();
label_6.setText("?
?
?
?
:
");
panel_4.add(label_6);
bookName=newJTextField();
bookName.setEditable(false);
panel_4.add(bookName);
finalJLabellabel_7=newJLabel();
label_7.setText("?
?
?
?
:
");
panel_4.add(label_7);
bookType=newJTextField();
bookType.setEditable(false);
panel_4.add(bookType);
finalJLabellabel_8=newJLabel();
label_8.setText("?
?
?
?
:
");
panel_4.add(label_8);
price=newJTextField();
price.setEditable(false);
panel_4.add(price);
finalJPanelpanel_2=newJPanel();
panel_2.setPreferredSize(newDimension(0,100));
getContentPane().add(panel_2,BorderLayout.SOUTH);
finalJPanelpanel_7=newJPanel();
finalGridLayoutgridLayout_2=newGridLayout(0,2);
gridLayout_2.setVgap(10);
panel_7.setLayout(gridLayout_2);
panel_7.setPreferredSize(newDimension(280,50));
panel_2.add(panel_7);
finalJLabellabel_9=newJLabel();
label_9.setText("?
?
?
?
:
");
panel_7.add(label_9);
todaydate=newJTextField();
todaydate.setEditable(false);
todaydate.setPreferredSize(newDimension(0,0));
todaydate.addActionListener(newTimeActionListener());
todaydate.setFocusable(false);
panel_7.add(todaydate);
finalJLabellabel_11=newJLabel();
label_11.setText("?
?
?
:
");
panel_7.add(label_11);
finalJButtonbuttonBorrow=newJButton();
buttonBorrow.setText("?
?
?
?
?
?
");
buttonBorrow.addActionListener(newBorrowActionListener());
panel_8.add(buttonBorrow);
finalJButtonbuttonClear=newJButton();
buttonClear.setText("?
?
?
?
?
?
");
buttonClear.addActionListener(newClearActionListener(model));
panel_8.add(buttonClear);
五、系统测试
5.1运行界面
5.2登陆后主界面
5.3子功能截图
5.4读者信息管理测试
六、心得体会
在本次图书馆信息管理系统的开发过程中,由于我们初次用数据库作为我们的数据存储来开发,在知识、经验方面都存在着不足。
另外,在整个开发的过程中,时间也比较仓促。
因此,系统在运行时仍有一些漏洞。
虽然本管理系统存在着很多不足,但是通过开发这个系统,使我对项目开发的过程有了一定的了解,同时也进一步熟练和巩固了专业基本知识,巩固了我对Java和SQL的掌握。
更重要的是使我明白了编程语言的相似的地方,可以通过对比学习使我更好的学习以后的编程语言以及更好的使用不同的数据库。
7、参考文献
[1]Java语言程序设计(第二版)中国铁道出版社
[2]Java语言程序设计例题解析与实验指导(第二版)中国铁道出版社
[3]数据库原理及应用(第三版)北京邮电大学出版社
[4]数据库原理及应用实验指导(第三版)北京邮电大学出版社
[5]各种网络资源