Java Swing 期末大作业-----图书借阅管理系统
Posted RAIN 7
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java Swing 期末大作业-----图书借阅管理系统相关的知识,希望对你有一定的参考价值。
文章目录
项目:图书借阅系统
子项目:需求分析
图书借阅系统有以下四大模块:读者信息管理、图书信息管理、图书借阅管理、用户信息管理、类型信息管理,我们接下来对每一模块的具体功能进行分析需求。
第一模块:图书信息管理
图书信息管理是图书借阅系统最核心的功能,因为图书是最关键的要素, 在系统中有着所有图书的相关信息。
图书增、删、改、查功能
首先我们得能知道系统中有什么书,这本书的相关信息,知道了图书的信息这样我们才能根据读者的需求借书,所以这一模块就需要一个图书查询功能。查询要能查询所有书籍的关键信息,同时也能在知道了书名或者书的ISBN进行指定查找。
如果图书馆新进了一批书籍,我们得把这些书籍给登记进入系统中,这里模块就需要一个图书信息增加功能,我们需要输入图书的关键信息然后添加信息到我们的后台系统中。
如果输入的图书信息有误,我们需要一个图书信息修改功能,如果有的图书被读者弄丢了,最后我们要把这本书的记录在图书系统中删除,所以需要一个图书删除功能。
第二模块:读者信息管理
图书借阅系统中读者信息也是很重要的,我们需要对读者的信息进行操作。
如果是第一次来借书,那么必须要在系统中创建读者信息, 在根据读者id进行借阅书籍,所以需要一个读者信息增加功能。系统管理员给长期不借阅书籍的读者注销读者用户,需要读者信息删除功能。系统管理员要知道当前读者的所有信息或者指定信息,此模块需要一个查询读者信息的功能,还包括查询所有和根据id指定查询。
第三模块:类型信息管理
读者类型信息管理
我们借阅书籍,因为读者的身份或者类别不同,读者借阅书籍肯定有不同的规则,参照一般大学图书馆的规则,学生能最多借3本书,3个月内归还,老师最多能借5本书,5个月内归还,所以因为读者身份不同借阅书籍的规则也不同,所以我们要对读者类型信息进行分类,用户可以对读者的类型信息进行增删改查操作。
图书类型信息管理
与之对应的图书类别信息也是如此,真正图书系统中书籍一定是很多的,所以分类就很有必要,所以我们也要对书籍的类别进行管理,对书籍的类别信息进行增删改查操作。
第四模块:借阅信息管理
图书借阅与归还也是系统中较为关键的业务,读者需要根据自己的需求借阅自己想要阅读的图书,此时就需要图书的借阅功能,功能展开,我们需要最为关键的读者信息、借阅的图书信息,以及借书的日期,然后增加到借书的数据库中。
当读者阅读完这本书或者到达了阅读的最长期限,用户必须要归还图书,当前模块需要一个归还功能,根据借阅图书的ISBN或者图书id进行归还,具体就是在借阅的书籍列表中进行删除,把书籍的借阅信息删除。
我们同时也会在借阅和归还的面板中加入显示所有借阅书籍的功能,让读者知道那本书被借阅了,书被借走了没法再借了(默认系统中每本书只有一本)。这里就需要一个查询功能,直接查询数据库中所有被借阅的图书信息以及相关的读者信息。
第五模块:用户信息管理
用户信息对于图书系统是至关重要的,为什么重要呢?它关乎与我们是否能够成功登入该系统中。首先登陆需要一个具体的登录功能,用户输入用户名跟或者密码,然后程序在后台中查询数据库进行比对操作,比对成功才能登入
如果用户第一次登陆,那么没有注册用户名,需要我们设置一个注册功能,就是添加用户操作,用户自己设置用户名和密码(前提:不能和数据库中的用户名一致),增加成功我们就用此用户的信息进行登陆操作。如果该用户想要修改密码,那么就需要写一个修改密码的功能,先输入原密码,然后输入新密码,最后确认新密码。
如果系统管理员想要删除某个用户(长期不登录,或者登陆异常)的用户信息,那么就需要在后台中写一个删除用户的功能,根据用户名进行删除(前提:数据库中对应字段设为唯一)。同时系统管理员想要查找用户的信息,需要写一个查询功能进行查询所有。
子项目:数据库设计
图书信息表用于存储图书基本信息,如表1所示
数据库中具体的表相关信息
图书类别信息表用于存储图书类别基本信息,如表2所示
数据库中具体的表相关信息
读者信息表用于存储读者基本信息,如表3所示
数据库中具体的表相关信息
读者类别信息表用于存储读者基本信息,如表4所示
数据库中具体的表相关信息
借阅图书信息表用于存储借阅的图书关键信息,如表5所示
数据库中具体的表相关信息
用户表用于存储系统中的用户信息,如表6所示
数据库中具体的表相关信息
子项目:图书借阅系统中类的应用
数据库操作具体表相关的类,如图7所示
具体表中数据对应的实体类(pojo),如图8所示
Swing实现的Java可视化界面相关的类,如图9所示
实现前端界面与后端数据交互的类(事件),如图10 所示
子项目:图书借阅系统界面设计与实现
1、创建登录界面
用户在文本框中输入用户名和密码,成功登录后进入图书系统的主界面,如图11所示
package com.bbm.staticview;
import javax.swing.*;
public class Login extends JFrame
private JPanel myPanel;
private JLabel labName,labPassword;
private JTextField txtName;
private JPasswordField txtPassword;
private JButton btnConfirm,btnReset;
public Login(String name)
super(name);//框架类设标题
setSize(250,150);
setLocationRelativeTo(null);
myPanel=new JPanel();
setContentPane(myPanel);
labName=new JLabel("用户名:");
labPassword=new JLabel("密 码:");
txtName=new JTextField(12);
txtPassword=new JPasswordField(12);
txtPassword.setEchoChar('*');
btnConfirm=new JButton("登录");
btnReset=new JButton("重置");
myPanel.add(labName);
myPanel.add(txtName);
myPanel.add(labPassword);
myPanel.add(txtPassword);
myPanel.add(btnConfirm);
myPanel.add(btnReset);
setVisible(true);
public static void main(String[] args)
// TODO Auto-generated method stub
new Login("登录");
2、创建图书增加界面
输入对应标签的信息,点击添加,成功增加一条图书信息
package com.bbm.staticview;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import javax.swing.*;
public class BookAdd extends JFrame
private JPanel panel,bookPanel,btnPanel;
private JLabel labISBN,labType,labName,labAuthor,
labPublish,labPublishDate,labPrice;
private JTextField txtISBN,txtName,txtAuthor,
txtPublish,txtPublishDate,txtPrice;
JComboBox cmbBookType;//组合框
private JButton btnAdd,btnReset,btnExit;
public BookAdd(String s)
super(s);
setSize(400,200);
setLocationRelativeTo(null);
panel=new JPanel(new BorderLayout());
setContentPane(panel);
//图书面板的信息
GridLayout grid1=new GridLayout(4,4);//网格布局
grid1.setHgap(5);
grid1.setVgap(5);
bookPanel=new JPanel(grid1);
labISBN=new JLabel("ISBN:");
labISBN.setHorizontalAlignment(SwingConstants.CENTER);//居中
txtISBN=new JTextField(15);
labType=new JLabel("图书类别:");
cmbBookType=new JComboBox();
cmbBookType.addItem("计算机类");
cmbBookType.addItem("外语类");
labName=new JLabel("书名:");
txtName=new JTextField(12);
labAuthor=new JLabel("作者");
txtAuthor=new JTextField(12);
labPublish=new JLabel("出版社");
txtPublish=new JTextField();
labPublishDate=new JLabel("出版日期");
txtPublishDate=new JTextField(12);
labPrice=new JLabel("价格");
txtPrice=new JTextField(12);
//其余类似,作者,出版社,出版社日期,价格,课后大家补充。
bookPanel.add(labISBN);
bookPanel.add(txtISBN);
bookPanel.add(labType);
bookPanel.add(cmbBookType);
bookPanel.add(labName);
bookPanel.add(txtName);
bookPanel.add(labAuthor);
bookPanel.add(txtAuthor);
bookPanel.add(labPublish);
bookPanel.add(txtPublish);
bookPanel.add(labPublishDate);
bookPanel.add(txtPublishDate);
bookPanel.add(labPrice);
bookPanel.add(txtPrice);
//将各组件加入到面板
panel.add(bookPanel,BorderLayout.CENTER);
btnPanel=new JPanel();
btnAdd=new JButton("增加");
btnReset=new JButton("重置");
btnExit=new JButton("退出");
btnPanel.add(btnAdd);
btnPanel.add(btnReset);
btnPanel.add(btnExit);
panel.add(btnPanel,BorderLayout.SOUTH);
setVisible(true);
public static void main(String[] args)
new BookAdd("图书添加");
3.创建图书修改与查询界面
在中间面板中显示所有图书信息,输入图书信息,可以实现删除与修改功能。
package com.bbm.staticview;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Insets;
import javax.swing.*;
import javax.swing.border.Border;
public class BookSelectModify extends JFrame
private JPanel panel,selectConditionPane,btnPanel,
centerPanel,selectResultPane,bookPane;
private JComboBox cmbChoice,cmbType;
private JTextField txtSelect,txtISBN,txtName,txtAuthor,
txtPublish,txtPublishDate,txtPrice;
private JLabel labISBN,labType,labName,labAuthor,
labPublish,labPublishDate,labPrice;
private JButton btnSelect,btnModify,btnDelete,btnExit;
private JTable table;
private JScrollPane scrollPane;
public BookSelectModify()
setTitle("图书管理");//设置标题
setSize(500,500);
setLocationRelativeTo(null);
panel=new JPanel(new BorderLayout());
setContentPane(panel);
selectConditionPane=new JPanel();
cmbChoice=new JComboBox();
cmbChoice.addItem("全部");
cmbChoice.addItem("书名");
txtSelect=new JTextField(20);
selectConditionPane.add(cmbChoice);
selectConditionPane.add(txtSelect);
panel.add(selectConditionPane,BorderLayout.NORTH);
//中间面板
centerPanel=new JPanel();
selectResultPane=new JPanel();
table=new JTable();
scrollPane=new JScrollPane(table);
scrollPane.setPreferredSize(new Dimension(400,240));//设大小
selectResultPane.add(scrollPane);
bookPane=new JPanel(new GridLayout(4,4));
//4行4列,需要创建每个组件,加到bookPane中,另外6个课后完成
labISBN=new JLabel("ISBN号");
labType=new JLabel("图书类型");
labName=new JLabel("书名");
labAuthor=new JLabel("作者");
labPublish=new JLabel("出版社");
labPublishDate=new JLabel("出版日期");
labPrice=new JLabel("价格");
txtISBN=new JTextField(8);
cmbType=new JComboBox();
cmbType.addItem("计算机类");
cmbType.addItem("管理类");
txtName=new JTextField(8);
txtAuthor=new JTextField(8);
txtPublish=new JTextField(8);
txtPublishDate=new JTextField(8);
txtPrice=new JTextField(8);
bookPane.add(labISBN);
bookPane.add(txtISBN);
bookPane.add(labType);
bookPane.add(cmbType);
bookPane.add(labName);
bookPane.add(txtName);
bookPane.add(labAuthor);
bookPane.add(txtAuthor);
bookPane.add(labPublish);
bookPane.add(txtPublish);
bookPane.add(labPublishDate);
bookPane.add(txtPublishDate);
bookPane.add(labPrice);
bookPane.add(txtPrice);
centerPanel.add(selectResultPane);
centerPanel.add(bookPane);
panel.add(centerPanel,BorderLayout.CENTER);
btnPanel=new JPanel();
btnSelect=new JButton("查询");
btnModify=new JButton("修改");
btnDelete=new JButton("删除");
btnExit=new JButton("退出");
btnPanel.add(btnSelect);
btnPanel.add(btnModify);
btnPanel.add(btnDelete);
btnPanel.add(btnExit);
panel.add(btnPanel,BorderLayout.SOUTH);
setVisible(true);
public static void main(String[] args)
// TODO Auto-generated method stub
new BookSelectModify();
4.读者信息增加界面
输入对应的信息,点击增加,实现添加信息的功能。
package com.bbm.staticview;
import javax.swing.*;
import java.awt.*;
public class ReaderAdd extends JFrame
private JPanel panel,bookPanel,btnPanel;
// 标签
private JLabel labReaderID, labName,labType, labSex, labAge,
labPhone, labDept, labRegisterDate;
// 文本属性
private JTextField txtReaderID,txtName, txtSex,
txtAge, txtPhone,txtDept,txtRegisterDate;以上是关于Java Swing 期末大作业-----图书借阅管理系统的主要内容,如果未能解决你的问题,请参考以下文章
Java项目:图书管理系统(java+swing+Gui+Mysql)