Java图书管理系统附源码Word文件下载.docx
《Java图书管理系统附源码Word文件下载.docx》由会员分享,可在线阅读,更多相关《Java图书管理系统附源码Word文件下载.docx(35页珍藏版)》请在冰豆网上搜索。
程序设计:
主框架设计:
主框架上方包含三个按钮,分别是“系统管理”、“图书信息管理”和“图书流通管理”,定义JMenuBar类的对象、JMenu类的对象和JMenuItem类的对象,分别表示菜单栏、菜单组和菜单选项,然后调用初始化函数,将不同类的对象通过setText()函数设定不同的文本,然后将其添加到窗口容器中。
对每个按钮分别添加不同的消息监听,响应相应的消息,调用不同的类完成不同的功能。
消息监听功能详见源代码bookMain类。
图书信息管理模块包括增加图书,删除图书,编辑图书,查找图书和显示图书信息。
具体的方法实现在bookBean中实现,当用户点击相应的按钮时,消息监听模块就会调用bookBean的构造函数产生一个bookBean的对象,然后通过对象调用bookBean类中的相应方法,完成事件的相应。
增加图书信息模块:
调用bookAdd类的构造函数产生一个该类的对象,在初始化函数中显示信息输入对话框,提示用户输入图书ID,图书名称和图书所有者,由于刚增加的图书没有被借阅,所以图书状态和图书使用者为默认值,分别为空闲和null,因此用户不必输入这两个属性值。
完成输入后,点击确定按钮,消息监听模块将调用bookBean的构造函数产生一个该类的对象,通过该对象调用bookBean的bookAdd函数,执行SQL语句,通过insert语句完成图书信息的增加插入功能。
删除图书信息模块:
调用bookDel类的构造函数产生一个该类的对象,在初始化函数中显示信息输入对话框,提示用户输入要删除图书的ID。
完成输入后,点击确定按钮,消息监听模块将调用bookBean的构造函数产生一个该类的对象,通过该对象调用bookBean的bookDel函数,执行删除的SQL语句,通过delete语句完成图书信息的删除功能。
修改图书信息模块:
点击按钮后调用bookEdit类的构造函数产生一个该类的对象,在初始化函数中显示信息输入对话框,提示用户输入要修改图书的ID和其他图书信息,用户将信息输入完成后,点击确定按钮,消息监听模块将调用bookBean的构造函数产生一个该类的对象,通过该对象调用bookBean的bookEdit函数,执行修改的SQL语句,通过update语句完成图书信息的编辑功能。
查找图书信息模块:
点击按钮后调用bookSearch类的构造函数产生一个该类的对象,在初始化函数中显示信息输入对话框,提示用户输入要查找图书的ID,用户将信息输入完成后,点击确定按钮,消息监听模块将调用bookResult的构造函数产生一个该类的对象,通过该对象的构造函数,执行查找的SQL语句,通过select语句完成图书信息的查找功能,然后构造图标,将查询到的信息显示在图表中。
显示图书信息模块:
点击按钮后调用bookDisplay类的构造函数产生一个该类的对象,在该对象的构造函数中调用bookAllSearch函数,查询所有的图书信息,显示在表格中。
图书流通管理模块包含图书的借阅与归还功能,其实就是对数据库中的某一记录集的某一属性进行修改。
图书借阅模块:
用户输入要借阅的图书名称和本人姓名,点击确定后,将调用bookBean的构造函数产生一个对象,通过该对象调用bookBook函数,修改数据库中的信息,将图书状态属性变为已借,将图书用户属性变为用户姓名,完成图书的借阅功能。
图书归还模块:
用户输入要归还的图书名称,点击确定后,将调用bookBean的构造函数产生一个对象,通过该对象调用bookReturn函数,修改数据库中的信息,把图书的状态置为空闲,将图书用户置为空,从而完成图书的归还功能。
备注:
报告此部分未附源代码,详见程序源码部分。
运行截图:
图书信息增加:
图书信息修改:
图书信息查询:
图书信息删除:
图书信息显示:
图书借阅:
图书归还:
分析总结:
本程序在数据库设计方面可以改为多张表存储的方式,用三张表来记录图书信息,借阅关系和学生信息,这样可以减少数据冗余,还可以增加一些其他功能,比如图书挂失等功能。
由于刚刚接触到Java界面设计,所以本程序在界面设计方面还有有待改进的地方。
程序源码:
DatabaseConn.java
packagebookDB;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
publicclassDatabaseConn{
privateStatementstmt=null;
ResultSetrs=null;
privateConnectionconn=null;
Stringsql;
publicDatabaseConn(){}
publicvoidOpenConn()throwsException{
try{
Class.forName("
sun.jdbc.odbc.JdbcOdbcDriver"
);
conn=DriverManager.getConnection("
jdbc:
odbc:
library"
}catch(Exceptione){System.err.println("
数据库连接:
"
+e.getMessage());
}
}
publicResultSetexecuteQuery(Stringsql){
stmt=null;
rs=null;
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=stmt.executeQuery(sql);
}catch(SQLExceptione){System.err.println("
查询数据:
returnrs;
publicvoidexecuteUpdate(Stringsql){
mit();
更新数据:
publicvoidcloseStmt(){
try{stmt.close();
}catch(SQLExceptione){
System.err.println("
释放对象:
}
publicvoidcloseConn(){
try{conn.close();
}catch(SQLExceptionex){
+ex.getMessage());
publicstaticStringtoGBK(Stringstr){
if(str==null)
str=null;
else
str=newString(str.getBytes("
ISO-8859-1"
),"
GBK"
}catch(Exceptione){System.out.println(e);
returnstr;
importjava.awt.AWTEvent;
importjava.awt.BorderLayout;
importjava.awt.Container;
importjava.awt.Font;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
importjavax.swing.JFrame;
importjavax.swing.JMenu;
importjavax.swing.JMenuBar;
importjavax.swing.JMenuItem;
bookMain.java
publicclassbookMainextendsJFrameimplementsActionListener{
privatestaticfinallongserialVersionUID=1L;
//----------建立菜单栏----------
JMenuBarmainMenu=newJMenuBar();
//--------------建立系统管理菜单组--------------
JMenumenuSystem=newJMenu();
JMenuItemitemExit=newJMenuItem();
JMenumenubook=newJMenu();
JMenumenuevent=newJMenu();
JMenuItemitemAdd=newJMenuItem();
JMenuItemitemEdit=newJMenuItem();
JMenuItemitemDelete=newJMenuItem();
JMenuItemitemSelect=newJMenuItem();
JMenuItemitemBook=newJMenuItem();
JMenuItemitemReturn=newJMenuItem();
JMenuItemitemDisplay=newJMenuItem();
//------------创建窗体模板对象--------------
publicstaticbookInfom_stu=newbookInfo();
publicbookMain(){
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.pack();
this.setSize(600,480);
this.setTitle("
图书管理系统"
Init();
}catch(Exceptione){e.printStackTrace();
privatevoidInit()throwsException{
ContainercontentPane=this.getContentPane();
contentPane.setLayout(newBorderLayout());
//------添加菜单组-------
menuSystem.setText("
系统操作"
menuSystem.setFont(newFont("
Dialog"
0,12));
menubook.setText("
图书信息管理"
menubook.setFont(newFont("
menuevent.setText("
图书流通管理"
menuevent.setFont(newFont("
//---------生成系统管理菜单组---------
itemExit.setText("
退出"
itemExit.setFont(newFont("
//--------------生成学生菜单组----------------
itemAdd.setText("
增加图书"
itemAdd.setFont(newFont("
itemEdit.setText("
修改信息"
itemEdit.setFont(newFont("
itemDelete.setText("
删除图书"
itemDelete.setFont(newFont("
itemSelect.setText("
查询"
itemSelect.setFont(newFont("
itemDisplay.setText("
显示全部信息"
itemDisplay.setFont(newFont("
//--------------生成管理事务菜单组----------------
itemBook.setText("
图书借阅"
itemBook.setFont(newFont("
itemReturn.setText("
图书归还"
itemReturn.setFont(newFont("
menuSystem.add(itemExit);
menubook.add(itemAdd);
menubook.add(itemEdit);
menubook.add(itemDelete);
menubook.add(itemSelect);
menubook.add(itemDisplay);
menuevent.add(itemBook);
menuevent.add(itemReturn);
//----组合菜单栏---
mainMenu.add(menuSystem);
mainMenu.add(menubook);
mainMenu.add(menuevent);
this.setJMenuBar(mainMenu);
//添加事件监听
itemExit.addActionListener(this);
itemAdd.addActionListener(this);
itemEdit.addActionListener(this);
itemDelete.addActionListener(this);
itemSelect.addActionListener(this);
itemBook.addActionListener(this);
itemReturn.addActionListener(this);
itemDisplay.addActionListener(this);
setVisible(true);
this.addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){System.exit(0);
});
publicvoidactionPerformed(ActionEvente){
Objectobj=e.getSource();
if(obj==itemExit){System.exit(0);
elseif(obj==itemAdd){
bookAddasi=newbookAdd();
//asi.downInit();
asi.pack();
asi.setVisible(true);
}elseif(obj==itemEdit){
bookEditesi=newbookEdit();
//esi.downInit();
esi.pack();
esi.setVisible(true);
}elseif(obj==itemDelete){
bookDeldsi=newbookDel();
//dsi.downInit();
dsi.pack();
dsi.setVisible(true);
}elseif(obj==itemSelect){
bookSearchsbid=newbookSearch();
sbid.pack();
sbid.setVisible(true);
}elseif(obj==itemBook){
bookBooksboo=newbookBook();
sboo.pack();
sboo.setVisible(true);
}elseif(obj==itemReturn){
bookReturnsre=newbookReturn();
sre.pack();
sre.setVisible(true);
}elseif(obj==itemDisplay){
bookDisplaysre=newbookDisplay();
}
publicstaticvoidmain(String[]args){newbookMain();
bookAdd.java
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassbookAddextendsJFrameimplementsActionListener{
Containerc;
JLabeljLabel1=newJLabel();
JLabeljLabel2=newJLabel();
JLabeljLabel3=newJLabel();
JLabeljLabel4=newJLabel();
JLabeljLabel5=newJLabel();
JTextFieldsid=newJTextField(10);
JTextFieldsname=newJTextField(10);
JTextFieldsowner=newJTextField(10);
JTextFieldsstatus=newJTextField(10);
JTextFieldsuser=newJTextField(10);
JButtonaddconfirm=newJButton();
publicbookAdd(){
增加图书信息"
this.setResizable(false);
try{Init();
}catch(Exceptione){e.printStackTrace();
//设置居中
DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation((int)(screenSize.width-400)/2,(int)(screenSize.height-300)/2+45);
publicvoidInit()throwsException{
this.setSize(300,500);
c=this.getContentPane();
c.setLayout(newFlowLayout());
jLabel1.setText("
图书ID:
"
jLabel1.setFont(newFont("
c.add(jLabel1);
sid.setText(null);
sid.setFont(newFont("
c.add(sid);
jLabel2.setText("
图书名称:
jLabel2.setFont(newFont("