Java快速实现图书管理基本功能

目录
  • 前言
  • 主函数
  • 书的创建
  • 对用户的操作
  • 对书的操作

前言

今天的内容主要是利用前面所学的知识点:类,抽象类,封装,继承,多态,接口等进行的一个简单的代码练习。

主要要求:

1、用户登录

2、管理端

  • 查找图书
  • 新增图书
  • 删减图书
  • 显示图书列表
  • 退出系统

3、用户端

  • 查找图书
  • 借阅图书
  • 归还图书
  • 退出系统

我们可以将以上内容分为对书的创建初始化,对用户的操作,对书的操作。

主函数

Main:(对所有流程进行整合)

import book.BookList;
import User.NormalUser;
import User.AdminUser;
import User.user;
import java.util.Scanner;
public class Main {
    public static user login(){
        System.out.print("请输入你的姓名:");
        Scanner scanner=new Scanner(System.in);
        String name=scanner.nextLine();
        System.out.println("请选择你的身份:1->管理员  0->普通用户");
        int choice=scanner.nextInt();
        if(choice==1){
            return new AdminUser(name);
        }else{
            return new NormalUser(name);
        }
    }
    public static void main(String[] args) {
        BookList bookList = new BookList();
        user us = login();//向上转型
        while (true) {
            int choice = us.menu();//多态绑定
            us.doWork(choice, bookList);
        }
    }
}

书的创建

Book:

package book;
//创建图书
public class Book {
    private String name;//书名
    private String author;//书的作者
    private String type;//书的类型
    private int price;//书的价格
    boolean isBorrowed;//书是否被借出
//在这里我们就不对isBorrowed进行构造,在最后打印的时候对他进行判断就好
    public Book(String name, String author, String type, int price) {
        this.name = name;
        this.author = author;
        this.type = type;
        this.price = price;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public int getPrice() {
        return price;
    }
    public void setPrice(int price) {
        this.price = price;
    }
    public boolean isBorrowed() {
        return isBorrowed;
    }
    public void setBorrowed(boolean borrowed) {
        isBorrowed = borrowed;
    }
    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", type='" + type + '\'' +
                ", price=" + price +
                ((isBorrowed==true)?" 已被借出":" 未被借出") +
                '}';
    }
}

BookList:

package book;
//创建书架
public class BookList {
   private Book[] books=new Book[10];//创建一个数组当书架放书,假设一共可以放10本
    public int usedSize;//书架上有效放书数
    public BookList(){//假设一开始书架上就放了三本书
        books[0]=new Book("红楼梦","曹雪芹","文学",55);
        books[1]=new Book("西游记","吴承恩","文学",65);
        books[2]=new Book("水浒传","施耐庵","文学",23);
        usedSize=3;
    }
    public int getUsedSize(){
        return usedSize;
    }
    public void setUsedSize(int usedSize){
        this.usedSize=usedSize;
    }
    //获取一本书的位置
    public Book getpos(int pos){
        return this.books[pos];
    }
    //在下标为pos的位置上放一本书(添加)
    public void setBook(int pos,Book book){
        this.books[pos]=book;
    }
}

对用户的操作

创建用户user类:

package User;
import book.BookList;
import operation.IOperation;

public abstract class user {
    protected String name;
    protected  IOperation[] iOperations;//创建操作类数组,通过返回的数字用于对书的操作
    public user(String name){
        this.name=name;
    }
    public abstract int menu();//用于动态绑定
    public void doWork(int choice, BookList bookList){
        iOperations[choice].work(bookList);
    }
}

创建管理员用户类AdminUser ,是 user 的子类.

package User;
import operation.*;
import java.util.Scanner;
public class AdminUser extends user {
    public AdminUser(String name) {
        super(name);
        this.iOperations=new IOperation[]{//初始化数组,将菜单上的数字与对应的操作放好
                new ExitOperation(),
                new FindOperation(),
                new AddOperation(),
                new DelOperation(),
                new DisplayOperation()
        };
    }
    public int menu(){
        System.out.println("========管理员的菜单========");
        System.out.println("欢迎"+this.name+"来到图书馆");
        System.out.println("1.查找图书");
        System.out.println("2.新增图书");
        System.out.println("3.删减图书");
        System.out.println("4.显示图书");
        System.out.println("0.查退出系统");
        System.out.println("===========================");
        System.out.print("请选择你要的操作: ");
        Scanner scanner=new Scanner(System.in);
        int choice=scanner.nextInt();
        return choice;//返回选择的数字
    }
}

创建普通用户类NormalUser, 是 user 的子类.

package User;
import operation.*;
import java.util.Scanner;
public class NormalUser extends user {
    public NormalUser(String name){
        super(name);
        this.iOperations=new IOperation[]{
             new ExitOperation(),
             new FindOperation(),
             new BorrowOperation(),
             new ReturnOperation()
        };
    }
    public int menu(){
        System.out.println("========普通用户的菜单========");
        System.out.println("欢迎"+this.name+"来到图书馆");
        System.out.println("1.查找图书");
        System.out.println("2.借阅图书");
        System.out.println("3.归还图书");
        System.out.println("0.退出系统");
        System.out.println("============================");
        System.out.print("请选择你要的操作: ");
        Scanner scanner=new Scanner(System.in);
        int choice=scanner.nextInt();
        return choice;
    }
}

对书的操作

创建接口 IOperation:

package operation;
import book.BookList;
import java.util.Scanner;
public interface IOperation {
    Scanner scanner=new Scanner(System.in);
    void work(BookList bookList);
}

创建增加图书类AddOperation,继承接口 IOperation

package operation;
import book.Book;
import book.BookList;
import java.util.Scanner;
public class AddOperation implements IOperation{
    public void work(BookList bookList){
        System.out.println("新增图书!");
        System.out.println("请输入图书的名字:");
        String name = scanner.nextLine();
        System.out.println("请输入图书的作者:");
        String author = scanner.nextLine();
        System.out.println("请输入图书的类型:");
        String type = scanner.nextLine();
        System.out.println("请输入图书的价格:");
        int price = scanner.nextInt();
        Book book=new Book(name,author,type,price);//新创建一本书
        int size= bookList.getUsedSize();
        bookList.setBook(size,book);
        bookList.setUsedSize(size+1);
        System.out.println("新增图书成功");
    }
}

创建删减图书类DelOperation,继承接口 IOperation

package operation;
import book.Book;
import book.BookList;
public class DelOperation implements IOperation{
    public void work(BookList bookList){
        System.out.println("删减图书");
        System.out.println("请输入要删减图书的名字:");
        String name=scanner.nextLine();
        int size= bookList.getUsedSize();
        int index=0;
        int i=0;
        for (i = 0; i <size ; i++) {
            Book book = bookList.getpos(i);
            if(name.equals(book.getName())) {
               index=i;
               break;
            }
        }
        if(i>=size){
            System.out.println("没有你要删除的图书");
        }
        //删除就是要将j+1下标的信息放进j下标里面信息去,这样子j里面的信息就被删除了
        for (int j = index; j < size-1; j++) {
         Book book=bookList.getpos(j+1);//获取j+1下标放的书的信息给j下标
         bookList.setBook(j,book);
        }
        bookList.setBook(size,null);//删除之后,把最后一个下标信息置为null
        bookList.setUsedSize(size-1);//下标减1
        System.out.println("删除成功");
    }
}

创建查找图书类FindOperation,继承接口 IOperation

package operation;
import book.BookList;
import book.Book;
public class FindOperation implements IOperation{
    public void work(BookList bookList){
        System.out.println("查找图书!");
        System.out.println("请输入要查找书的名字");
        String name = scanner.nextLine();
        int size = bookList.getUsedSize();
        for (int i = 0; i < size; i++) {
            Book book = bookList.getpos(i);//找到这本书的信息
            if(name.equals(book.getName())) {//比较名字是否相同
                System.out.println("找到了这本书,信息如下:");
                System.out.println(book);
                return;
            }
        }
        System.out.println("没有找到这本书!");
    }
}

创建显示图书列表类DisplayOperation,继承接口 IOperation

package operation;
import book.Book;
import book.BookList;
public class DisplayOperation implements IOperation{
    public void work(BookList bookList){
        System.out.println("显示图书");
        for(int i=0;i<bookList.usedSize;i++){
            Book book=bookList.getpos(i);
            System.out.println(book);
        }
    }
}

创建借阅图书列表类BorrowOperation,继承接口 IOperation

package operation;
import book.Book;
import book.BookList;
public class BorrowOperation implements IOperation{
    public void work(BookList bookList){
        System.out.println("借阅图书");
        System.out.println("请输入你要借阅的图书的名字");
        String name=scanner.nextLine();
        int size= bookList.getUsedSize();
        for(int i=0;i<size;i++){
            Book book = bookList.getpos(i);
            if(name.equals(book.getName())) {
                book.setBorrowed(true);
                System.out.println("借阅成功");
                System.out.println(book);
                return;
            }
        }
        System.out.println("没有你要借阅的书");
    }
}

创建归还图书列表类ReturnOperation,继承接口 IOperation

package operation;
import book.Book;
import book.BookList;
public class ReturnOperation implements IOperation{
    public void work(BookList bookList){
        System.out.println("归还图书");
        System.out.println("请输入你要归还的图书的名字");
        String name=scanner.nextLine();
        int size= bookList.getUsedSize();
        for(int i=0;i<size;i++){
            Book book = bookList.getpos(i);
            if(name.equals(book.getName())) {
                book.setBorrowed(true);
                System.out.println("归还成功");
                System.out.println(book);
                return;
            }
        }
        System.out.println("没有你要归还的书");
    }
}

创建退出系统类ExitOperation,继承接口 IOperation

package operation;
import book.BookList;
public class ExitOperation implements IOperation{
    public void work(BookList bookList){
        System.out.println("退出系统");
        System.exit(0);
    }
}

到此这篇关于Java快速实现图书管理基本功能的文章就介绍到这了,更多相关Java图书管理内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java图书管理系统课程设计

    本文实例为大家分享了Java图书管理系统的具体代码,供大家参考,具体内容如下 大二上学期做的一个Java课程设计,总分为四个Java文件,AllBook,AllBorrow,AllStudent,Tushu. 本系统是一个面向图书馆的管理系统,具有一定的实用性.它主要完成了图书的基本操作功能,全校学生信息的相关基本操作,以及对图书的借阅归还管理.本系统采用当前流行的面向对象的JAVA语言开发工具eclipse来完成整个系统的设计.系统在设计过程中不可避免地遇到了各种各样的问题,由于整个系统完全都

  • Java 实战图书管理系统的实现流程

    一.项目简述 功能包括(管理员和学生角色): 管理员和学生登录,图书管理,图书添加删除修改,图书 借阅,图书归还,图书查看,学生管理,借还管理,读者 管理,密码管理,信息修改等等功能. 二.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持) 项目技术: JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript

  • JAVA大作业之图书管理系统实现全解

    目录 一.简介 二.系统的设计 1.Book包: 1.1.book类: 1.2.bookList类: 2.Operation包: 2.1.增加书籍: 2.2.删除书籍: 2.3.借阅书籍 2.4.归还书籍 2.5.显示书籍 2.6.查找书籍 2.7.整理书籍 2.8.退出系统 3.User包: 3.1.User 3.2.管理员 3.3.普通用户 4.程序的运行 三.结尾 一.简介 在学习了Java语法的类.接口.继承.多态.接口等基础语法后的一简单的项目练习. 具体功能为: 1.简单的根据姓名的

  • Java顺序表实现图书管理系统

    本文实例为大家分享了Java顺序表实现图书管理系统的具体代码,供大家参考,具体内容如下 一.简介 实现此项目的目的是巩固并理解前面的知识点:类,抽象类,封装,继承,多态,接口等 二.核心需求 管理端   查阅书籍   增加书籍   删除书籍   打印书籍列表   退出系统 用户端   查询书籍   借阅书籍   归还书籍   打印书籍列表   退出系统 三.类的设计 1. 创建图书类 图书类中包含图书的名称,价格,类型,作者和是否被借出等信息,并生成构造方法,Getter()和Setter()方

  • Java实战之图书管理系统的实现

    目录 一.项目运行 二.效果图 三.核心代码 登录控制层 图书管理控制层 读者管理控制层 一.项目运行 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持) 项目技术: HTML +Springboot+ SpringMVC + MyBatis + ThymeLeaf + JavaScript + JQuery + Ajax + maven等等. 二.效果图 三.核心代码 登录控制层

  • JAVA实现图书管理系统项目

    目录 前言 项目需求 设计前提 设计目标 设计结构图 功能解读 项目实现 基本对象的设置 通过IO流的写入写出 总结 前言 相信再每一个学生在学习编程的时候,应该都会写的一个小项目--图书管理系统.为什么这么说呢?因为我认为一个学校的氛围很大一部分可以从图书馆的氛围看出来,而图书管理系统这个不大不小的项目,学生接触的多,也算是比较熟悉,就不会有陌生感,能够练手,有有些难度,所以,今天,我的小小项目也来了. 项目需求 设计前提 掌握java基本语法 熟悉使用流程控制 理解面向对象思想 熟练封装,继

  • java实现简单图书管理系统

    本文实例为大家分享了java实现简单图书管理系统的具体代码,供大家参考,具体内容如下 JAVA练习的作业,题目如下: 设计一个图书管理系统类和用户类,要求具有以下功能: (1). 查询和修改图书信息.(2). 增加和删除图书信息.(3). 个人借阅信息查询.(4). 图书归还功能(5). 用户管理功能和退出程序功能(注:用户信息可以保存在内存即可) 上代码: User.java public class User {     String id;     String name;     int

  • Java手写图书管理基本功能附代码

    目录 1.book包 2.user包 3.operate包 Java中的最主要的语法之前基本都介绍完毕,本篇将使用之前的内容来写一个简单的图书管理系统,中间会展示部分代码来讲解,源码地址在这项目: 个人练习的项目 - Gitee.com 首先还是来看看运行的效果 我们来分析一下: Java中是通过对象之间的交互来解决事情的,所以我们来看看有哪些对象 首先显而易见的两个对象:用户和书,所以创建两个包book和user 通过上图可以看到:不同用户之间有相同的操作,也有不同的操作,所以不妨将所有的操作

  • Java快速实现图书管理基本功能

    目录 前言 主函数 书的创建 对用户的操作 对书的操作 前言 今天的内容主要是利用前面所学的知识点:类,抽象类,封装,继承,多态,接口等进行的一个简单的代码练习. 主要要求: 1.用户登录 2.管理端 查找图书 新增图书 删减图书 显示图书列表 退出系统 3.用户端 查找图书 借阅图书 归还图书 退出系统 我们可以将以上内容分为对书的创建初始化,对用户的操作,对书的操作. 主函数 Main:(对所有流程进行整合) import book.BookList; import User.NormalU

  • 基于vue.js快速搭建图书管理平台

    Vue.js是当下很火的一个JavaScript MVVM(Model-View-ViewModel)库,它是以数据驱动和组件化的思想构建的.相比于Angular.js,Vue.js提供了更加简洁.更易于理解的API,使得我们能够快速地上手并使用Vue.js. 上一期简单讲解了vue的基本语法,这一次我们做一个小项目,搭建一个简单的图书管理平台,能够让我们更深刻的理解这门语言的妙用. 1.DEMO样式 首先我们需要搭建一个简单的demo样式,推荐大家使用bootstrap,可以很快的搭建出一个清

  • java GUI实现学生图书管理简单实例

    本文实例为大家分享了java GUI学生图书管理的具体代码,供大家参考,具体内容如下 - mysql数据库建表: 1.book表 2.bs借书记录表 3.std学生表 4.dl登录用户表 . - 列表内容 1.databd.java //程序入口及登录验证 import java.awt.*; import java.awt.event.*; import java.sql.*; import javax.swing.*; import javax.swing.border.EmptyBorde

  • vue.js实现图书管理功能

    本文实例为大家分享了vue.js实现图书管理功能的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta

  • Java语言实现简单的酒店前台管理小功能(实例代码)

    笔者是一名刚上路的小萌新,有什么问题希望大家可以指正! 以下为题目: 为某个酒店编写程序:酒店管理系统,模拟订房.退房.打印所有房间状态等功能. 1.该系统的用户是:酒店前台. 2.酒店使用一个二维数组来模拟."Room[][] rooms;" 3.酒店中的每一个房间应该是一个java对象:Room 4.每一个房间Room应该有:房间编号.房间类型.房间是否空闲. 5.系统应该对外提供的功能: 可以预定房间:用户输入房间编号,订房. 可以退房:用户输入房间编号,退房. 可以查看所有房间

  • C++详细实现完整图书管理功能

    目录 图书管理系统功能概览: 登录,注册 学生,老师借书,查看自己当前借书情况,还书. 管理员增加书,查看当前借阅情况,查看当前所有借阅人,图书信息. 代码概览: 各个模块主要负责功能 COperationManagement.h  负责登录,注册,管理员,将图书,初始化操作,将借阅信息等从文件中读取出来,放入容器中,便于操作,不用一直对文件进行I/O. CBook.h  用于对书抽象,并实现了>>的重载,便于文件读入,读出 CUser.h  工具人,作为老师,学生的父类 CStudent.h

  • 基于Vue实现图书管理功能

    本文实例为大家分享了vue简单的图书管理具体代码,供大家参考,具体内容如下 <table class="table table-bg table-border table-bordered"> <tr> <th>ID</th> <th>书名</th> <th>作者</th> <th>价格</th> <th>操作</th> </tr>

  • Java如何通过Maven管理项目依赖

    项目的依赖 Java最大的一个优势之一应该是整个生态中无数的框架和API,我们创建实际的项目不可避免的都需要用到这些框架和API,而它们通常都是以JAR包的形式提供.我们之前在编译项目的时候,需要在classpath上存放依赖的JAR包.而且这些外部的JAR包还会有其他依赖.我们需要递归地一个个去下载所有这些外部依赖,并且要确保下载的版本都是正确的,当项目越来越复杂的时候,这是极其麻烦的事情,比如碰到JAR Hell的问题. Maven现在来拯救我们了,Maven可以自动帮我们做依赖管理,我们需

  • Java+MySQL实现图书管理系统(完整代码)

    (完整代码+实训报告): 链接: https://pan.baidu.com/s/1E6BhEaHMa6Wch5yf6YAjOA 提取码: vnrx 觉着有用就点个赞哦~ 一,功能 管理员登录 图书借阅信息管理 图书信息管理 管理员更改密码 退出系统 二,工具 Eclipse Version: 2018-09 (4.9.0) MySQL Workbench 8.0 CE mysql-connector-java-8.0.13.jar 三.效果图: 登录界面: 主界面: 借阅书籍管理: 个人书库管

随机推荐