JavaSE实现图书管理系统的示例代码

目录
  • 前言
  • 1. 项目需求
  • 2. 实现思路
  • 3. 代码实现
    • 包的设计
    • book包
    • operations包
    • user包
  • 4. 实现效果

前言

这篇博客是在学习了一部分Java基础语法之后的练习项目,通过这个小项目的练习,对Java中的类和对象,抽象类和接口,面向对象的继承、多态和封装、组合等进行熟悉理解;抽象出不同的对象,将对象进行合理的设计,完成对象之间的交互,面向对象进行编程。

1. 项目需求

图书管理系统,面向管理员和普通用户使用,对管理员的开放的功能有:添加图书,删除图书,查找图书,显示图书和退出程序等;对普通用户的开放的功能有:查找图书,借阅图书,归还图书和退出程序。

2. 实现思路

先抽象提取出不同的对象,首先想到的对象是用户和书,

用户可分为管理员和普通用户,将管理员和普通用户共有的属性设置为一个父类User,管理员和普通用户继承User,可以先将父类设置为普通类,在写码过程如果合适可以修改为抽象类;

系统对书进行管理,书本身就可以抽象为一个对象;对多本书进行操作管理,书架也可以抽象为一个对象;所以书和书架用两个类来实现,书架可以设计为一个数组;

这里系统对书进行管理,其实就是对书架对应数组进行操作,不同的操作可以通过一个标准去实现,也就是可以定义一个接口,每一个操作类去实现这个接口,完成向上转型,通过接口实现多态;

然后写代码的过程中思考完善各个对象的成员,最终实例化对象,通过不同对象之间的交互完成管理系统。

3. 代码实现

包的设计

book包

Book类

package book;

public class Book {
    private String name;//书名
    private String author;//书的作者
    private int price;//书的价格
    private String type;//书的类型
    private boolean borrowed;//是否被借出,默认false

    public Book(String name, String author, int price, String type) {
        this.name = name;
        this.author = author;
        this.price = price;
        this.type = type;
    }

    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 int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public Boolean getBorrowed() {
        return borrowed;
    }

    public void setBorrowed(Boolean borrowed) {
        this.borrowed = borrowed;
    }

    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                ", type='" + type + '\'' +
                ", borrowed=" + ((borrowed==true) ? "已借出" : "未借出") +
                '}';
    }
}

BookList类

package book;

public class BookList {
    private Book[] books = new Book[100];
    private int usedsize;
    //书架当中默认有三本书

    public BookList() {
        this.books[0] = new Book("三国演义","罗贯中",66,"小说");
        this.books[1] = new Book("西游记","吴承恩",68,"小说");
        this.books[2] = new Book("红楼梦","曹雪芹",64,"小说");
        this.usedsize = 3;
    }

    public int getUsedsize() {
        return usedsize;
    }

    public void setUsedsize(int usedsize) {
        this.usedsize = usedsize;
    }

    public Book getBooks(int pos){
        return this.books[pos];
    }

    public void setBooks(Book book, int pos) {
        this.books[pos] = book;
    }
}

operations包

IOperation接口

package operations;

import book.BookList;

public interface IOperation {
    void work(BookList bookList);
}

AddOperation类

package operations;

import book.Book;
import book.BookList;

import java.util.Scanner;

public class AddOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("新增图书");
        //输入图书信息
        System.out.println("输入新增图书名称:");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        System.out.println("输入新增图书作者:");
        String author = scanner.nextLine();
        System.out.println("输入新增图书价格:");
        int price = scanner.nextInt();
        scanner.nextLine();
        System.out.println("输入新增图书类型:");
        String type = scanner.nextLine();

        Book book = new Book(name, author, price, type);
        //获取存书位置
        int currentSize = bookList.getUsedsize();
        //把书放到书架(数组)
        bookList.setBooks(book, currentSize);
        //书的总数加1
        bookList.setUsedsize(currentSize+1);
        System.out.println("添加成功!");
    }
}

BorrowOperation类

package operations;

import book.Book;
import book.BookList;

import java.util.Scanner;

public class BorrowOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("借阅图书");
        System.out.println("输入要借阅图书的名称:");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        int currentSize = bookList.getUsedsize();

        for (int i = 0; i < currentSize; i++) {
            Book book = bookList.getBooks(i);
            if (name.equals(book.getName())){
                if(book.getBorrowed()){
                    System.out.println("该书已经被借出!");
                    return;
                }else {
                    book.setBorrowed(true);
                    System.out.println("借阅成功!");
                    return;
                }
            }
        }
        System.out.println("没有找到你要借阅的书");
    }
}

DelOperation类

package operations;

import book.Book;
import book.BookList;

import java.util.Scanner;

public class DelOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("删除图书");
        System.out.println("输入要删除图书的名称:");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        int currentSize = bookList.getUsedsize();

        //找到并记录要删除书的下标
        int index = -1;
        for (int i = 0; i < currentSize; i++) {
            Book book = bookList.getBooks(i);
            if (name.equals(book.getName())){
                index = i;
                break;
            }
        }
        if(-1 == index) {
            System.out.println("没有找到要删除的这本书!");
        }else {
            for (int i = index; i < currentSize-1; i++) {
                Book book = bookList.getBooks(i+1);
                bookList.setBooks(book, i);
            }
            //每次删除,都要将原来最后一本书位置的引用置空
            bookList.setBooks(null,currentSize-1);
            bookList.setUsedsize(currentSize-1);
            System.out.println("删除成功");
        }
    }
}

DisplayOperation类

package operations;

import book.Book;
import book.BookList;

import java.util.Scanner;

public class DisplayOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("显示图书");
        int currentSize = bookList.getUsedsize();

        for (int i = 0; i < currentSize; i++) {
            Book book = bookList.getBooks(i);
            System.out.println(book);
        }
    }
}

ExitOperation类

package operations;

import book.BookList;

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

FindOperation类

import book.Book;
import book.BookList;

import java.util.Scanner;

public class FindOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("查找图书");
        System.out.println("输入要查找图书的名称:");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        int currentSize = bookList.getUsedsize();

        for (int i = 0; i < currentSize; i++) {
            Book book = bookList.getBooks(i);
            if (name.equals(book.getName())){
                System.out.println("找到了,该书信息如下:");
                System.out.println(book);
                return;
            }
        }
        System.out.println("没有找到这本书!");
    }
}

ReturnOperation类

package operations;

import book.Book;
import book.BookList;

import java.util.Scanner;

public class ReturnOperation implements IOperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("归还图书");
        System.out.println("输入要归还图书的名称:");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        int currentSize = bookList.getUsedsize();

        for (int i = 0; i < currentSize; i++) {
            Book book = bookList.getBooks(i);
            if (name.equals(book.getName())){
                if(book.getBorrowed()){
                    book.setBorrowed(false);
                    System.out.println("归还成功!");
                    return;

                }else {
                    System.out.println("该书未借出!");
                    return;
                }
            }
        }
        System.out.println("没有找到你要归还的书");
    }
}

user包

User类

public abstract class User {
    protected String name;
    protected IOperation[] iOperation;

    public User(String name) {
        this.name = name;
    }
    public abstract int menu();
    public void doOperation(int choice, BookList bookList){
        iOperation[choice].work(bookList);
    }
}

AdminUser类

package user;

import operations.*;

import java.util.Scanner;

public class AdminUser extends User{
    public AdminUser(String name) {
        super(name);
        this.iOperation = new IOperation[]{
                new ExitOperation(),
                new FindOperation(),
                new AddOperation(),
                new DelOperation(),
                new DisplayOperation()
        };
    }

    @Override
    public int menu() {
        System.out.println("---------------------------------");
        System.out.println("Hello 管理员:>"+""+name+" 欢迎来到图书管理系统!");
        System.out.println("      1.查找图书  2.新增图书");
        System.out.println("      3.删除图书  4.显示图书");
        System.out.println("           0.退出系统");
        System.out.println("---------------------------------");
        System.out.println("请输入你的操作:");
        Scanner scanner = new Scanner(System.in);
        int choice = scanner.nextInt();
        return choice;
    }
}

NormalUser类

package user;

import operations.*;

import java.util.Scanner;

public class NormalUser extends User{
    public NormalUser(String name) {
        super(name);
        this.iOperation = new IOperation[]{
                new ExitOperation(),
                new FindOperation(),
                new BorrowOperation(),
                new ReturnOperation()
        };
    }

    @Override
    public int menu() {
        System.out.println("---------------------------------");
        System.out.println("Hello 用户:>"+name+" 欢迎来到图书管理系统!");
        System.out.println("      1.查找图书  2.借阅图书");
        System.out.println("      3.归还图书  0.退出系统");
        System.out.println("---------------------------------");
        System.out.println("请输入你的操作:");
        Scanner scanner = new Scanner(System.in);
        int choice = scanner.nextInt();
        return choice;
    }
}

Main类

import book.BookList;
import user.AdminUser;
import user.NormalUser;
import user.User;

import java.util.Scanner;

public class Main {
    public static User login(){
        System.out.println("请输入你的姓名:");
        Scanner scanner = new Scanner(System.in);
        String userName = scanner.nextLine();
        System.out.println("请确认你的身份:> |1->管理员|0->普通用户|");
        int choice = scanner.nextInt();
        if(1==choice){
            return new AdminUser(userName);
        }else{
            return new NormalUser(userName);
        }
    }

    public static void main(String[] args) {
        //准备数据
        BookList bookList = new BookList();
        //登录
        User user = login();

        while (true) {
            int choice = user.menu();
            user.doOperation(choice, bookList);
        }
    }
}

4. 实现效果

管理员

普通用户

以上就是JavaSE实现图书管理系统的示例代码的详细内容,更多关于JavaSE图书管理系统的资料请关注我们其它相关文章!

(0)

相关推荐

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

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

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

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

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

    本文实例为大家分享了java实现简单的图书管理系统的具体代码,供大家参考,具体内容如下 一.项目分布 Book类: 定义了书的一些属性(书名,作者,价格,分类,状态)并且写了属性的get.set方法 Library类: 写了登录函数(1.普通用户,2.管理员,3.退出系统), Person类:定义的人的属性(姓名,性别,年龄)并且写了属性的get.set方法,定义了一些书. operate接口:操作的接口,操作方法:查询/查阅,删除/借阅,增加/还书,显示书籍列表 Root类:继承了Person

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

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

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

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

  • JavaSE实战之酒店订房系统的实现

    酒店管理系统 为某个酒店编写程序:酒店管理系统,模拟订房,退房,打印所有房间状态等功能 1.该系统的用户是酒店的前台 2.酒店当中所有的房间使用一个二维数组来模拟 3.酒店当中的每一个房间应该是一个java对象:Room 4.每一个房间Room应该有:房间编号,房间类型属性,房间是否空闲 Hotel.java /** * Created with IntelliJ IDEA. * Description:酒店 * User: Lenovo * Date: 2022-07-02 * Time: 2

  • JavaSE实现电影院系统

    本文实例为大家分享了JavaSE实现电影院系统的具体代码,供大家参考,具体内容如下 利用Java的面向对象进阶知识,结合日志,创建一个简单电影院系统 一.定义一个User作为父类,减少代码冗余 public class User {     //用户类,充当父类     private String loginName;       //假名(昵称),不重复     private String username;        //真名     private String passWord;

  • JAVASE系统实现抽卡功能

    本文实例为大家分享了JAVASE系统实现抽卡功能的具体代码,供大家参考,具体内容如下 先看下文件结构 使用到的知识点: 看下Client类的实现: package SocketS; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import ja

  • JavaSE实现图书管理系统的示例代码

    目录 前言 1. 项目需求 2. 实现思路 3. 代码实现 包的设计 book包 operations包 user包 4. 实现效果 前言 这篇博客是在学习了一部分Java基础语法之后的练习项目,通过这个小项目的练习,对Java中的类和对象,抽象类和接口,面向对象的继承.多态和封装.组合等进行熟悉理解:抽象出不同的对象,将对象进行合理的设计,完成对象之间的交互,面向对象进行编程. 1. 项目需求 图书管理系统,面向管理员和普通用户使用,对管理员的开放的功能有:添加图书,删除图书,查找图书,显示图

  • Java实现图书管理系统的示例代码

    目录 一.功能介绍 二.Main包 三.User包 1. User 2. AdminUser 3. NormalUser 四.book包 1. Book 2. BookList 五.operations包 1. IOperation接口 2. AddOperation 3. BorrowOperation 4. DelOperation 5. DisplayOperation 6. ExitOperation 7. FindOperation 8. ReturnOperation 一.功能介绍

  • Python实现一个简单的毕业生信息管理系统的示例代码

    写在前面: 从昨晚的梦里回忆起数据管理的作业: 实现一个自己的选题---- 毕业生信息管理系统,实现学生个人信息基本的增删改查, 我想了想前段时间刚学习的列表,这个简单啊 ,设计一个学生信息列表,然后列表里面再存每个学生详细信息的列表,然后来实现一个基本的增删查改,这个不难啊!直接开始撸代码! 上代码! def Menu():##菜单主界面 print('*'*22) print("* 查看毕业生列表输入: 1 *") print("* 添加毕业生信息输入: 2 *"

  • C++实现管理系统的示例代码

    概述 系统中需要实现的功能如下: 添加联系人:向通讯录中添加新人,信息包括(姓名.性别.年龄.联系电话.家庭住址)最多记录1000人 显示联系人:显示通讯录中所有的联系人信息 删除联系人:按照姓名进行删除指定联系人 查找联系人:按照姓名查看指定联系人信息 修改联系人:按照姓名重新修改指定联系人 清空联系人:清空通讯录中所有信息 退出通讯录:退出当前使用的通讯录 步骤 新建结构体 contact.h #include<iostream> #include<string> using

  • 3分钟纯 Java 注解搭个管理系统的示例代码

    最近接触到个新项目,发现它用了一个比较有意思的框架,可以说实现了我刚入行时候的梦想,所以这里马不停蹄的和大家分享下. 在我刚开始工作接触的项目都还没做前后端分离,经常需要后端来维护页面,有时候觉得自己好像天生不适合干前端,你要是让我研究研究后端的技术,看个中间件源码啊,分析分析什么框架底层原理啊,这都问题不大,偶尔搞一下JS也可以.你要是让我写个css样式,那简直要命了,一点也提不起兴趣,不知道有没有跟我一样的. 今天要介绍的框架直接不用写页面了,话不多说,下边咱们直奔主题 Erupt一个通用后

  • Python实现GUI学生管理系统的示例代码

    目录 序 言 代码解析 一.登录页面 二.主页面显示 三 .页面显示 四.查询数据 五.删除数据 六.修改数据 七.关于部分 八.数据保存,保存信息 序 言 哈喽兄弟们,好久不见!最近实在太忙了,所以又双叒叕断更了~ 表弟大学快毕业了,学了一个学期Python居然还不会写学生管理系统,真的给我丢脸啊,教他又不肯学,还让我直接给他写,我真想两巴掌上去,最终还是写了给他,谁让他是我表弟呢,关键时候还是得帮他一把! 写完了放在那也是放着,所以今天分享给大家吧! 话不多说,咱们直接开始吧! 代码解析 一

  • C语言实现职工工资管理系统的示例代码

    目录 一.需求分析 二.项目环境 2.1.项目创建过程 2.2.向项目添加头文件与源文件 三.职工工资管理系统模块功能 3.1.系统总体设计框图 3.2.系统模块总体设计 3.3.设计系统菜单功能 3.4.设计系统输入模块 3.5.设计系统查询模块 3.6.设计系统修改模块 3.7.设计系统删除模块 3.8.设计系统统计模块 3.9.设计系统输出模块 3.10.设计系统追加模块 3.11.设计系统退出模块 总结 一.需求分析 1.随着计算机的飞速发展,它的应用已经十分广泛,它在人们的生产.生活.

  • Eclipse+Java+Swing实现图书管理系统(详细代码)

    目录 一.系统介绍 二.系统展示 1.注册 2.登录 5.管理员端-添加图书类别 6.管理员端-修改图书类别 7.管理员端-添加图书 8.管理员端-修改图书 9.管理员端-管理用户信息 10.管理员端-查询借阅信息 三.部分代码 AdminMainFrm.java BookAddFrm.java BookManagerFrm.java BookInfoFrm.java BookTypeAddFrm.java BookTypeManagerFrm.java BorrowDetailFrm.java

  • vue+express 构建后台管理系统的示例代码

    一个vue+express 构建的后台管理系统 说明: vue+express 构建的后台管理系统,包括登录.注册.表格的增删改查 github 在线 搭建vue项目: 1.安装vue-cli脚手架 npm install -g vue-cli 2.创建基于webpack模版的项目 vue init webpack my-express 3.安装包依赖并运行 cd my-express npm install npm run dev vue项目基于iview-admin改造的 通过应用生成器工具

  • 图书管理系统java代码实现

    本文实例为大家分享了java实现图书管理系统的具体代码,供大家参考,具体内容如下 /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:    <图书管理系统--java>                          * 作    者:       刘江波                       * 完成日期:    2012     年  3    

随机推荐