【Java】图书管理系统-控制台输出

2024-06-18 1090阅读

项目原码压缩包在我主页的资源中免费领取。(在IDEA中运行,启动类在src -> Main 中运行)

图书管理系统

设计一个简单的控制台输出的图书管理系统,我们首先需要明确其基本功能、设计内容以及设计要求。这个系统可以包括以下几个核心模块:书籍管理、用户管理、借阅与归还管理。以下是一个基础的设计方案:

设计内容

数据模型设计
  • Book 类:包含书的属性,如 name(书名)、author(作者)、price(价格)、type(类型)、borrowed(借出情况)等。
  • User 类:包含用户属性,如 name(姓名)、Books(已借书籍列表,可以是Book对象的集合)。
    功能模块设计
    • 书籍管理

      • 添加书籍
      • 删除书籍
      • 显示书籍信息
      • 查询书籍(按书名查找)
      • 用户管理

        • 查找图书
        • 借阅图书
        • 归还图书

        设计要求

        用户交互友好性
        • 系统应提供清晰的菜单选项,方便用户进行操作。
        • 对于错误输入,系统应给出友好的提示信息,指导用户正确操作。
          数据一致性与安全性
          • 保证数据的一致性,例如在借书时检查书籍是否可借。
          • 虽然是控制台应用,也应考虑简单安全措施,比如对用户密码进行基本的加密处理。
             系统扩展性
            • 设计时应考虑未来可能的功能扩展,如增加评论系统、推荐系统等,确保现有架构易于扩展。

              在该项目中我们设计了两个菜单:

              【Java】图书管理系统-控制台输出

               用来各执行不同的操作。

              项目操作步骤

              1、建立包:

              在该项目中我们建立三个包:1、book 2、operation 3、user 分别用来存放与书籍相关的类、与操作相关的类、与用户相关的类。

              【Java】图书管理系统-控制台输出

              编写与书籍相关的类:

              【Java】图书管理系统-控制台输出

              Book类的代码:

              package book;
              import java.util.Objects;
              /**
               * Created with IntelliJ IDEA.
               * Description:图书
               * User: lenovo
               * Date: 2024-06-04
               * Time: 20:13
               */
              public class Book {
                  private String name;//书名
                  private String auther;//作者
                  private int price;//价格
                  private String type;//书的类型
                  private boolean isBorrowed;//书是否被借出
                  public Book(String name, String auther, int price, String type) {
                      this.name = name;
                      this.auther = auther;
                      this.price = price;
                      this.type = type;
                  }
                  public String getName() {
                      return name;
                  }
                  public void setName(String name) {
                      this.name = name;
                  }
                  public String getAuther() {
                      return auther;
                  }
                  public void setAuther(String auther) {
                      this.auther = auther;
                  }
                  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 isBorrowed() {
                      return isBorrowed;
                  }
                  public void setBorrowed(boolean borrowed) {
                      isBorrowed = borrowed;
                  }
                  @Override
                  public String toString() {
                      return "Book{" +
                              "书名:'" + name + '\'' +
                              ", 作者:'" + auther + '\'' +
                              ", 价格:" + price +
                              ", 类型:'" + type + '\'' +
                              ((isBorrowed == true)?",借出情况:已借出":",借出情况:未借出")  +
                              '}';
                  }
                  @Override
                  public boolean equals(Object o) {
                      if (this == o) return true;
                      if (o == null || getClass() != o.getClass()) return false;
                      Book book = (Book) o;
                      return price == book.price && isBorrowed == book.isBorrowed && Objects.equals(name, book.name) && Objects.equals(auther, book.auther) && Objects.equals(type, book.type);
                  }
                  @Override
                  public int hashCode() {
                      return Objects.hash(name, auther, price, type, isBorrowed);
                  }
              }

              BookList类的代码:

              package book;
              /**
               * Created with IntelliJ IDEA.
               * Description:书架
               * User: lenovo
               * Date: 2024-06-04
               * Time: 20:29
               */
              public class BookList {
                  private Book[] booklist = new Book[10];//用来存放书
                  private int usedSize;//计数器,用来记录当前书架有多少书
                  public BookList() {
                      booklist[0] = new Book("三国演义","罗贯中",71,"小说");
                      booklist[1] = new Book("西游记","吴承恩",82,"小说");
                      booklist[2] = new Book("红楼梦","曹雪芹",79,"小说");
                      this.usedSize = 3;
                  }
                  public void setBooks(int pos, Book book){
                      booklist[pos] = book;
                  }
                  public Book getBook(int pos){
                      return booklist[pos];
                  }
                  public int getUsedSize() {
                      return usedSize;
                  }
                  public void setUsedSize(int usedSize) {
                      this.usedSize = usedSize;
                  }
              }
              

              编写与用户相关的类:

              【Java】图书管理系统-控制台输出

              AdminUser 类的代码:

              package user;
              import operation.*;
              import java.util.Scanner;
              /**
               * Created with IntelliJ IDEA.
               * Description:
               * User: lenovo
               * Date: 2024-06-04
               * Time: 22:19
               */
              public class AdminUser extends Users{
                  public AdminUser(String name) {
                      super(name);
                      this.books = new IBooks[]{
                              new ExitOperation(),
                              new FindBooks(),
                              new AddBooks(),
                              new DelBooks(),
                              new ShowBooks()
                      };
                  }
                  @Override
                  public int menu() {
                      System.out.println("=====================================");
                      System.out.println("hallo! "+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.println("=====================================");
                      Scanner scanner = new Scanner(System.in);
                      int choice = scanner.nextInt();
                      return choice;
                  }
              }

              Normaluser 类的编写:

              package user;
              import operation.*;
              import java.util.Scanner;
              /**
               * Created with IntelliJ IDEA.
               * Description:
               * User: lenovo
               * Date: 2024-06-04
               * Time: 22:19
               */
              public class NormalUser extends Users{
                  public NormalUser(String name) {
                      super(name);
                      this.books = new IBooks[]{
                              new ExitOperation(),
                              new FindBooks(),
                              new BorrowBooks(),
                              new ReturnBooks()
                      };
                  }
                  @Override
                  public int menu() {
                      System.out.println("========================================");
                      System.out.println("hallo! "+this.name+" 欢迎来到普通用户菜单菜单");
                      System.out.println("1.查找图书");
                      System.out.println("2.借阅图书");
                      System.out.println("3.归还图书");
                      System.out.println("0.退出系统");
                      System.out.println("请选择你要操作的序号:>");
                      System.out.println("=======================================");
                      Scanner scanner = new Scanner(System.in);
                      int choice = scanner.nextInt();
                      return choice;
                  }
              }

              Users 类的代码:

              package user;
              import book.BookList;
              import operation.IBooks;
              /**
               * Created with IntelliJ IDEA.
               * Description:
               * User: lenovo
               * Date: 2024-06-04
               * Time: 22:13
               */
              public abstract class Users {
                  protected String name;
                  public IBooks[] books;
                  public Users(String name) {
                      this.name = name;
                  }
                  public abstract int menu();
                  public void doOperation(int choice,BookList booklist){
                      books[choice].work(booklist);
                  }
              }

              编写与操作相关的类:

              【Java】图书管理系统-控制台输出

              AddBooks 类代码的编写:

              package operation;
              import book.Book;
              import book.BookList;
              import java.util.Scanner;
              /**
               * Created with IntelliJ IDEA.
               * Description:
               * User: lenovo
               * Date: 2024-06-04
               * Time: 21:54
               */
              public class AddBooks implements IBooks{
                  @Override
                  public void work(BookList booklist){
                      Scanner scanner = new Scanner(System.in);
                      System.out.println("请输入书名");
                      String name = scanner.nextLine();
                      System.out.println("请输入作者");
                      String auther = scanner.nextLine();
                      System.out.println("请输入价格");
                      int price = scanner.nextInt();
                      scanner.nextLine();
                      System.out.println("请输入书的类型");
                      String type = scanner.nextLine();
                      Book book = new Book(name,auther,price,type);
                      int count = booklist.getUsedSize();
                      for (int i = 0; i  
              

              BorrowBooks 类的代码编写:

              package operation;
              import book.Book;
              import book.BookList;
              import java.util.Scanner;
              /**
               * Created with IntelliJ IDEA.
               * Description:
               * User: lenovo
               * Date: 2024-06-04
               * Time: 22:09
               */
              public class BorrowBooks implements IBooks{
                  @Override
                  public void work(BookList booklist) {
                      int count = booklist.getUsedSize();
                      if(count == 0){
                          System.out.println("图书馆没有图书!");
                          return;
                      }
                      Scanner scanner = new Scanner(System.in);
                      System.out.println("请输入你要借阅的书籍的名字:>");
                      String name = scanner.nextLine();
                      int tmp = -1;
                      for (int i = 0; i  
              

              DelBooks 类的代码编写:

              package operation;
              import book.Book;
              import book.BookList;
              import java.util.Scanner;
              /**
               * Created with IntelliJ IDEA.
               * Description:
               * User: lenovo
               * Date: 2024-06-04
               * Time: 22:02
               */
              public class DelBooks implements IBooks{
                  @Override
                  public void work(BookList booklist){
                      int count = booklist.getUsedSize();
                      if(count == 0){
                          System.out.println("图书馆没有图书!");
                          return;
                      }
                      Scanner scanner = new Scanner(System.in);
                      System.out.println("请输入你要删除的图书的名字:>");
                      String name = scanner.nextLine();
                      int tmp = -1;
                      for (int i = 0; i  
              

              ExitOperation 类的代码编写:

              package operation;
              import book.BookList;
              /**
               * Created with IntelliJ IDEA.
               * Description:
               * User: lenovo
               * Date: 2024-06-04
               * Time: 22:06
               */
              public class ExitOperation implements IBooks{
                  @Override
                  public void work(BookList booklist) {
                      int count = booklist.getUsedSize();
                      for (int i = 0; i  
              

              FindBooks 类的代码:

              package operation;
              import book.Book;
              import book.BookList;
              import java.util.Scanner;
              /**
               * Created with IntelliJ IDEA.
               * Description:
               * User: lenovo
               * Date: 2024-06-04
               * Time: 21:57
               */
              public class FindBooks implements IBooks{
                  @Override
                  public void work(BookList booklist){
                      Scanner scanner = new Scanner(System.in);
                      System.out.println("请输入你要查找的书名");
                      String name = scanner.nextLine();
                      int count = booklist.getUsedSize();
                      for (int i = 0; i  
              

              IBooks 类的代码:

              package operation;
              import book.BookList;
              /**
               * Created with IntelliJ IDEA.
               * Description:
               * User: lenovo
               * Date: 2024-06-04
               * Time: 22:00
               */
              public interface IBooks {
                  void work(BookList booklist);
              }

              ReturnBooks 类的代码:

              import book.BookList;
              import java.util.Scanner;
              /**
               * Created with IntelliJ IDEA.
               * Description:
               * User: lenovo
               * Date: 2024-06-04
               * Time: 22:10
               */
              public class ReturnBooks implements IBooks{
                  @Override
                  public void work(BookList booklist) {
                      int count = booklist.getUsedSize();
                      Scanner scanner = new Scanner(System.in);
                      System.out.println("请输入要归还书籍的名字::");
                      String name = scanner.nextLine();
                      int tmp = -1;
                      for (int i = 0; i  
              

              ShowBooks 类的代码:

              package operation;
              import book.Book;
              import book.BookList;
              /**
               * Created with IntelliJ IDEA.
               * Description:
               * User: lenovo
               * Date: 2024-06-04
               * Time: 22:03
               */
              public class ShowBooks implements IBooks{
                  @Override
                  public void work(BookList booklist) {
                     int count = booklist.getUsedSize();
                     if(count == 0){
                         System.out.println("图书馆没有图书!");
                         return;
                     }
                      for (int i = 0; i  
              

              Main 类的代码:

              import book.BookList;
              import user.AdminUser;
              import user.NormalUser;
              import user.Users;
              import java.util.Scanner;
              /**
               * Created with IntelliJ IDEA.
               * Description:
               * User: lenovo
               * Date: 2024-06-04
               * Time: 20:08
               */
              public class Main {
                  public static Users login(){
                      System.out.println("请输入你的姓名:>");
                      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();
                      Users users = login();
                      while(true){
                          int choice = users.menu();
                          users.doOperation(choice,booklist);
                      }
                  }
              }

              最后代码在Main类中启动。

              运行结果如下图:

              【Java】图书管理系统-控制台输出

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]