图书管理系统java.docx
《图书管理系统java.docx》由会员分享,可在线阅读,更多相关《图书管理系统java.docx(31页珍藏版)》请在冰豆网上搜索。
图书管理系统java
1.管理员登陆
此模块主要是利用MenuBar添加菜单条,利用Menu和MenuItem添加菜单和菜单的各个参数,通过事件ActionEvent可以实现进入各个模块如管理日志、管理员添加、管理员切
换、读者添加、读者修改、读者查询、读者删除、新书入库、书籍查询、借阅书籍、归还书
籍、借阅超时及退出的功能。
2.管理日志
此模块可以清楚的显示出书籍借阅与归还的信息,包括书号、书名、图书证号、借/还、操作日期、已付款额。
读者可以通过此模块实现的功能清楚的了解图书被借阅和归还的详细信息,从而给读者带来了很多方便。
3.管理员添加功能介绍
此模块功能是增加新管理员的登陆帐户。
在图书馆管理系统中必须有每一个管理者的帐户让其可以正常进行新图书证的办理、借阅书籍和归还书籍等系统管理。
所以在管理员功能模块中增加了管理员添加这个功能。
4.管理员切换
此模块的主要功能是进行管理员之间的切换,即单击管理员菜单下的管理员切换,就会退出当前管理员界面,从而出现管理员切换窗口,而另一管理员就可以在管理员切换窗口中的用户名和密码两栏中通过输入自己的用户名和密码直接进入该系统。
2.2.2读者管理
1.读者添加
此模块主要的实现功能是添加新的读者信息,即当有新的读者要看查看本图书馆中的书藉,可以通过此功能实现,当数据库中存在其新信息,即成为本图书馆的新一位读者。
其中信息分别包括图书证号、学生姓名、性别、系别、班级,同时可有三项功能在此处实现,即添加、重置以及返回。
2.读者修改
此模块主要的实现功能对有信息更新的读者进行即时修改,以随时更新读者在数据库中的信息。
本模块通过图书证号确定读者,可对读者信息的新图书证号、学短姓名、性别、系别、班级。
此处可分别实现对该功能的修改、重置、返回。
3.读者查询
此模块主要可对所要了解的读者信息。
即把读者的信息从数据库调出来,显示在该窗口中的文字区域。
查询方式分别有按图书证查询、按姓名查询、按班级查询、按年级查询,并可通过办理入相应的关键字,更加缩小查询范围。
此处可实现查询和返回功能。
4.读者删除
此模块可以删除一些不再使用本系统的读者资料,从而达到对数据库中的清理,即清除一些不必要资料,此处有四种删除途径,分别为按图书证号删除、按姓名删除、按班级删除、安年级删除,并可通过所输入的关键字尽快找到所要删除的资料。
此处可分别实现对该功能的修改、重置、返回。
1.新书入库功能介绍
此模块主要的实现功能是将新来的图书输入到图书馆管理系统的书库当中,其中主要按如下信息往书库中输入,这部分的操作主要是便于书库合理的管理,有利于读者能够对新书有
一个更详细的了解。
其中包括如下信息:
新书书号、新书名称、新书出版日期、新书出版社、入库数量、编写作者、新书单价。
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管理日志表
字段名称
数据类型
长度
备注
书号
文本
10
书名
文本
15
作者
文本
15
出版社
文本
15
入库时间
DATE
15
已付款额
文本
10
⒊book表
表中记录了库内所有图书的所有资料,如表3-3。
表3-3图书表
字段名称
数据类型
长度
备注
书号
文本
10
书名
文本
15
作者
文本
15
出版社
文本
15
入库时间
DATE
15
是否借出
文本
10
价格
文本
10
⒋person表
表中记录库中所有读者的相关信息,如表3-4所示。
表3-4读者表
字段名称
数据类型
长度
备注
图书证号
文本
10
姓名
文本
15
性别
文本
15
系别
文本
15
班级
文本
15
⒌borrowbook表
表内记录了此时图书的借阅情况,如表3-5所示。
表3-5借阅表
字段名称
数据类型
长度
备注
图书证号
文本
10
书号
文本
15
借阅日期
DATE
15
应还日期
DATE
15
第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);
}
catch(ClassNotFoundExceptione)
}
try{con=DriverManager.getConnection("jdbc:
odbc:
sun","123","123");
sql=con.createStatement();
rs=sql.executeQuery("SELECT*FROMAdmirz");
while(rs.next())
{
k++;
}
}
catch(SQLExceptione)
}
try{con=DriverManager.getConnection("jdbc:
odbc:
sun","123","123");
sql=con.createStatement();
rs=sql.executeQuery("SELECT*FROMAdmirz");
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)
}
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
{
}
catch(ClassNotFoundExceptione)
}
try{con=DriverManager.getConnection("jdbc:
odbc:
sun","123","123");
sql=con.createStatement();
rs=sql.executeQuery("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"+"("+"'"+b+"'"+","+"'"+d+"'"+")");
this.dispose();
JOptionPane.showMessageDialog(null,"管理员注册成功");
}
elseJOptionPane.showMessageDialog(null,"两次输入密码不一致","警告",JOptionPane.ERROR_MESSAGE);
}
con.close();
}
catch(SQLExceptione)
}
}}
}
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){
JOptionPane.showMessageDialog(null,"请输入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();
}
else
{
sex=box2.getLabel();
}
dept=text3.getText();
classes=text4.getText();
rs=sql.executeQuery("SELECT*FROMpersonWHERE图书证号="+"'"+number+"'");
if(rs.next()){
JOptionPane.showMessageDialog(null,"此图书证号已存在","警告",JOptionPane.WARNING_MESSAGE);
text1.setText(null);
}
record="("+"'"+number+"'"+","+"'"+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)//修改
{
Stringch=text1.getText();
if(ch.length()!
=5){
JOptionPane.showMessageDialog(null,"请输入5位图书证号!
");
text1.setText(null);
}else{
try
{
……//连接数据库
Stringnumber,name,sex,dept,classes,newnum,record,updateStr;
newnum=text5.getText();
number=text1.getText();
name=text2.getText();
if(box1.getState()==true)
{
sex=box1.getLabel();
}
else
{
sex=box2.getLabel();
}
dept=text3.getText();
classes=text4.getText();
sql=con.createStatement();
rs=sql.executeQuery("SELECT*FROMpersonwhere图书证号="+"'"+newnum+"'");
if(rs.next()){
rs1=sql.executeQuery("SELECT*FROMpersonwhere图书证号="+"'"+number+"'");
if(rs1.next()){
JOptionPane.showMessageDialog(null,"此图书证号已存在","警告",JOptionPane.WARNING_MESSAGE);
text1.setText(null);
}else
{
updateStr="UPDATEpersonSET图书证号="+"'"+number+"'"+","+"姓名="+"'"+name+"'"+","+"性别="+"'"+sex+"'"+","+"系别="+"'"+dept+"'"+","+"班级="+"'"+classes+"'"+"WHERE图书证号="+"'"+newnum+"'";
sql.executeUpdate(updateStr);
JOptionPane.showMessageDialog(null,"修改成功!
");
}
}
else
{
JOptionPane.showMessageDialog(null,"查无此人!
");
}
……//连接数据库
con.close();
}
4.2.3读者查询
功能介绍:
可以对数据库中已有的读者信息进行