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项目:图书管理系统(java+swing+Gui+Mysql)

Java项目:图书管理系统(java+swing+Gui+Mysql)

求图书管理系统(java)代码?

期末Web大作业图书管理系统(.net&C#)

期末Web大作业图书管理系统(.net&C#)