图书管理系统java文档格式.docx
《图书管理系统java文档格式.docx》由会员分享,可在线阅读,更多相关《图书管理系统java文档格式.docx(31页珍藏版)》请在冰豆网上搜索。
其中包括如下信息:
新书书号、新书名称、新书出版日期、新书出版社、入库数量、编写作者、新书单价。
2.书籍查询功能介绍
在图书馆管理系统中书籍查询是最基本的功能,读者可以根据自己的需求来查询想要借阅的书籍。
本系统是用Java应用程序和Access数据库一起开发的其中利用Java来编程实现功能的代码和布置运行界面。
界面是由检索项、检索词和显示文本区三个部分组成的用户根据自己的需要在检索项中选择自己所要按什么字段进行查询,其中书籍查询功能的检索项中可以按书号查询、按书名查询、按作者名查询、按出版社查询、按入库时间查询等基础查询。
选择检索项后用户只要在检索词中添写自己所要查询的内容并确定键确认后用户要查询的内容就可以在显示文本区中显示出来。
用户可以根据显示的信息得知自己所要借阅书籍的情况。
2.2.4书籍借阅与归还功能介绍
1.借阅书籍功能介绍
此模块主要实现读者可凭有效的图书证号,借阅图书馆内未借出的图书。
输入图书证号后,可显示了该图书证持有者的全部信息(包括借书证号、姓名、性别、所在班级、所属系部、当前可借阅图书个数),供读者确认信息。
通过输入有效的图书编号,查询该图书的全部信息(包括书号、书名、作者、出版社、是否借出、价格)。
借阅成功后,将该图书证号、书号、借阅日期、应还日期信息插入到数据库的表中进行记录。
2.归还书籍功能介绍
此模块主要实现读者凭所要归还图书的图书证号归还图书。
输入所要归还的图书编号后,可显示了该图书证持有者的全部信息(包括借书证号、姓名、性别、所在班级、所属系部、当前可借阅图书个数),供读者确认信息。
还书成功后,从数据库中删除该书的借出记录,并修改数据库中的相应信息。
2.2.5借阅超时功能介绍
此模块主要实现显示过期图书的信息(包括图书证号、书号、借阅日期、应还日期)提醒读者还书。
3.1数据库需求分析
⒈Admi表,即管理员表,记录了用户名和密码。
⒉Admirz表,即管理日志表,记录了书号、书名、图书证号、借/还、操作日期、已付款额。
⒊book表,即图书表,记录了书号、书名、作者、出版社、入库时间、是否借出、价格。
⒋borrowbook表,即借阅表,记录了图书证号、书号、借阅日期、应还日期。
⒌person表,即读者表,记录了图书证号、姓名、性别、系别、班级。
3.2数据库概念结构设计
图书馆管理系统E-R图,如图3-1。
图3-1图书馆管理系统E-R图
3.3数据库表的设计
⒈Admi表
表中记录了可以使管理员进入该系统的用户名及密码,如表3-1所示。
表3-1管理员信息表
字段名称
数据类型
长度
备注
用户名
文本
10
密码
15
⒉Admirz表
表中记录借还书日志,用于存下所有对图书操作的记录,以便以后可以翻阅和查找,如表3-2所示。
表3-2管理日志表
书号
书名
作者
出版社
入库时间
DATE
已付款额
⒊book表
表中记录了库内所有图书的所有资料,如表3-3。
表3-3图书表
是否借出
价格
⒋person表
表中记录库中所有读者的相关信息,如表3-4所示。
表3-4读者表
图书证号
姓名
性别
系别
班级
⒌borrowbook表
表内记录了此时图书的借阅情况,如表3-5所示。
表3-5借阅表
借阅日期
应还日期
第4章系统功能实现
4.1管理员模块功能实现
4.1.1管理员登陆
此模块是整个系统最主要的部分,管理员可以通过此模块实现进入其余各个模块如管理日志、管理员添加、管理员切换、读者添加、读者修改、读者查询、读者删除、新书入库、书籍查询、借阅书籍、归还书籍、借阅超时及退出的功能。
图书管理系统管理员界面如图4-1所示。
图4-1图书管理系统管理员
主要程序代码如下:
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==itemAdmiqh)
{
this.dispose();
Inwinin=newIn("
系统登陆"
);
}
if(e.getSource()==itemtc)
System.exit(0);
if(e.getSource()==itemAdmixj)
CreatAdmicreatAdmi=newCreatAdmi("
管理员添加"
if(e.getSource()==itemAdmirz)
WinTablewintable=newWinTable("
管理日志"
if(e.getSource()==itemBookrk)
AddInfyaddInfy=newAddInfy();
if(e.getSource()==itemPersonlr)
Winpersonaddwinperson=newWinpersonadd("
读者添加"
if(e.getSource()==itemPersoncx)
Winpersonsearchwinperson=newWinpersonsearch("
读者信息查询"
if(e.getSource()==itemPersonxg)
Winpersonmodifywinperson=newWinpersonmodify("
读者信息修改"
if(e.getSource()==itemPersonsc)
Winpersondeletewinperson=newWinpersondelete("
读者删除"
if(e.getSource()==itemBookcx)
Windowjjok=newWindowjj();
if(e.getSource()==itemchaoshi)
daywin=newday();
if(e.getSource()==itemBorrowjs)
Borrowbookwin=newBorrowbook();
if(e.getSource()==itemBorrowhs)
Returnbookwin=newReturnbook();
}
4.1.2管理日志
此模块通过定义类WinTable继承顶层容器JFrame,再添加普通容器JScrollPane、Jpanel,然后通过BorderLayout布局创建界面,最后主要通过数组利用while循环在连接好的数据库中查找表Admirz中的内容,从而实现了可以清楚的显示出书籍借阅与归还信息的功能。
管理日志界面如图4-2所示。
图4-2管理日志
WinTable(Strings)
super(s);
try{Class.forName("
sun.jdbc.odbc.JdbcOdbcDriver"
}
catch(ClassNotFoundExceptione)
{System.out.println("
"
+e);
try{con=DriverManager.getConnection("
jdbc:
odbc:
sun"
"
123"
sql=con.createStatement();
rs=sql.executeQuery("
SELECT*FROMAdmirz"
while(rs.next())
{
k++;
}
catch(SQLExceptione)
a=newObject[k][6];
while(rs.next())
{
for(intj=0;
j<
6;
j++)
if(j<
5)
a[i][j]=rs.getString(j+1);
else
{
a[i][j]=rs.getDouble(j+1);
i++;
}
con.close();
catch(SQLExceptione)
{System.out.println("
}
table=newJTable(a,name);
Containercon=getContentPane();
getContentPane().add(newJScrollPane(table),BorderLayout.CENTER);
setBounds(120,125,700,500);
setVisible(true);
validate();
addWindowListener(newDisposeListener());
}
4.1.3管理员添加功能实现
功能介绍:
该程序主要实现管理员的添加,以便于让实行对图书管理员的管理。
按照标
签提示输入信息,然后点击确定按钮。
首先判断管理员名文本框中输入的文本信息是否符合大于3个字符并小于10个字符的规则,如果不符合规则,则提示错误,如果符合规则,再到Admi表中进行查询,如果相同则用提示框提示错误。
若无相同则可注册。
但还需要保证前后两次的密码相同,才能成功注册,管理员登陆窗口如图4-3所示。
图4-3管理员添加成功界面
publicvoidactionPerformed(ActionEventc)
Stringb=textUser.getText();
Stringd=textPassword1.getText();
Stringg=textPassword2.getText();
if(c.getSource()==buttonqk)
{textUser.setText(null);
textPassword1.setText(null);
textPassword2.setText(null);
if(c.getSource()==buttonEnter||c.getSource()==textPassword2)
if(b.length()<
3||b.length()>
10)
{
JOptionPane.showMessageDialog(null,"
用户名应在3~10个字符之间"
textUser.setText(null);
else
try{Class.forName("
SELECT*FROMAdmiWHERE用户名="
+"
'
+b+"
if(rs.next())
Stringuser=rs.getString
(1);
if(b.equals(user))
JOptionPane.showMessageDialog(null,"
此管理员已被注册"
警告"
JOptionPane.WARNING_MESSAGE);
else
if(d.equals(g))
{
sql.executeUpdate("
INSERTINTOAdmiVALUES"
("
+d+"
)"
this.dispose();
JOptionPane.showMessageDialog(null,"
管理员注册成功"
elseJOptionPane.showMessageDialog(null,"
两次输入密码不一致"
JOptionPane.ERROR_MESSAGE);
}}
4.1.4管理员切换
此模块功能是退出当前管理员界面,进入管理员切换窗口,另一用户可以通过输入自己的用户名和密码直接进入该系统。
但此用户名和密码都必须与已经连接好的数据库中表Admi中的用户名和密码相吻合。
管理员切换界面如图4-4所示。
图4-4管理员切换
publicvoidwindowClosing(WindowEvente)
e.getWindow().dispose();
4.2读者管理模块功能实现
4.2.1读者添加
添加新的读者,使其能够进入图书系统阅览图书,读者添加如图4-5所示。
图4-5读者添加
publicvoidactionPerformed(ActionEvente)
if(e.getSource()==button1)//添加
Stringch=text1.getText();
if(ch.length()!
=5){
请输入5位图书证号!
text1.setText(null);
else{
……//连接数据库
Stringnumber,name,sex,dept,classes,record,insertStr;
number=text1.getText();
name=text2.getText();
if(box1.getState()==true)
{
sex=box1.getLabel();
sex=box2.getLabel();
dept=text3.getText();
classes=text4.getText();
SELECT*FROMpersonWHERE图书证号="
+number+"
if(rs.next()){
JOptionPane.showMessageDialog(null,"
此图书证号已存在"
text1.setText(null);
}
record="
+name+"
+sex+"
+dept+"
+classes+"
;
insertStr="
INSERTINTOpersonVALUES"
+record;
sql.executeUpdate(insertStr);
JOptionPane.showMessageDialog(null,"
添加成功!
con.close();
4.2.2读者修改
对读者需要修改的资料进行重定义,读者信息修改如图4-6所示。
图4-6读者信息修改
publicvoidactionPerformed(ActionEvente)
if(e.getSource()==button1)//修改
}else{
try
……//连接数据库
Stringnumber,name,sex,dept,classes,newnum,record,updateStr;
newnum=text5.getText();
SELECT*FROMpersonwhere图书证号="
+newnum+"
if(rs.next()){
rs1=sql.executeQuery("
if(rs1.next()){
text1.setText(null);
}else
updateStr="
UPDATEpersonSET图书证号="
姓名="
性别=