> 文档中心 > [JavaSE-项目] 应科图书管理系统(入门篇)

[JavaSE-项目] 应科图书管理系统(入门篇)

目录

往期回顾,专栏一览

🔴 简介

🔴 核心需求

🔴 类的设计

🔵 创建图书相关的类

🔵 创建操作相关的类

🔵 创建用户相关的类

🔵 进行整合

🔵 实现具体的每个 Operation


往期回顾,专栏一览

🍉 JavaSE 🍋 AWT 🍑 数据结构
🍅 C1进阶之路 🍒 每日一练 🌽 代码报错
🍈 活动

🍹欢迎各路大佬来到 Nick 主页指点

☀️本期文章将学习 [JavaSE] 应科图书管理系统(新人篇),我是博主Nick。✨

✨我的博客主页:Nick_Bears 🌹꧔ꦿ

🌹꧔ꦿ博文内容如对您有所帮助,还请给个点赞 + 关注 + 收藏

    

🍆 该项目暂且不考虑业务逻辑,单纯用于巩固前面所学知识哦!

     

🔴 效果展示

应科图书管理系统(新人篇)

   戳我跳转

   

🔴 简介

🍌 本篇主要是,利用前面所学的知识点:类,抽象类,封装,继承,多态,接口,顺序表等进行的一个简单的代码练习。

     

🔴 核心需求

🍉  简单的登录

    

🍉  管理端

  • 整理书籍(该功能为可扩展功能)
  • 查阅书籍
  • 增加书籍
  • 删除书籍
  • 打印书籍列表
  • 退出

     

🍉 用户端

  • 查询书籍
  • 借阅书籍
  • 归还书籍
  • 退出

     

🔴 类的设计

🔵 创建图书相关的类

  

🍍 先创建 package book 创建 Book 类, 表示一本书

package com.sunjiahui.pojo.book;public class Book {    private String name;//书名    private String author;//作者    private int price;//价格    private String type;//类型    private boolean isBorrowed;//是否借出    public Book() {    }    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 isBorrowed() { return isBorrowed;    }    public void setBorrowed(boolean borrowed) { isBorrowed = borrowed;    }    @Override    public String toString() { return "Book{" +  "书名='" + name + '\'' +  ", 作者='" + author + '\'' +  ", 价格=" + price +  ", 类型='" + type + '\'' +  ((isBorrowed == true) ? " 已被借出" : " 未被借出")+  '}';    }}

     

🍍 创建 BookList 类, 用来保存 N 本书.

package com.sunjiahui.pojo.book;public class BookList {    private Book[] books=new Book[10];    private int usedSize;    public BookList(){ books[0] = new Book("Nick的笔记","Nick",24,"学习资料"); books[1] = new Book("编程之美","《编程之美》小组",99,"学习书籍"); books[2] = new Book("我与地坛","史铁生",46,"名著"); this.usedSize=3;    }    public int getUsedSize() { return usedSize;    }    public void setUsedSize(int usedSize) { this.usedSize = usedSize;    }    /*获取pos位置的一本书[添加一本书]*/    public Book getPos(int pos){ return this.books[pos];    }    /*设置pos下标放一本书*/    public void setBook(int pos,Book book){ this.books[pos] = book;    }}

  

🔵 创建操作相关的类

    

🍈 先创建 package operation

package com.sunjiahui.service;import com.sunjiahui.pojo.book.BookList;import java.util.Scanner;public interface IOperation {    Scanner src = new Scanner(System.in);    void work(BookList bookList);}

   

🍈 接下来创建一组操作类, 每个类对应一个用户的动作

AddOperationDelOperationFindOperationRemoveOperationDisplayOperationBorrowOperationReturnOperationExitOperation

   

🍈 先把空类创建好, 不着急实现细节.

🍈 抽象出 Operation 的好处: 让操作和操作之间低耦合, 让操作和用户之间低耦合.

  

🔵 创建用户相关的类

  

🍒 先创建 package user

🍒 创建 User 类, 这是一个抽象类

package com.sunjiahui.pojo.user;import com.sunjiahui.pojo.book.BookList;import com.sunjiahui.service.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);    }}

  

🍒 创建普通用户类, 是 User 的子类

package com.sunjiahui.pojo.user;import com.sunjiahui.service.IOperation;import com.sunjiahui.service.impl.*;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(),  new DisplayOperation() };    }    @Override    public int menu(){ System.out.println("==================普通用户菜单=================="); System.out.println("hello "+ 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("==============================================="); Scanner src = new Scanner(System.in); int choice = src.nextInt(); return choice;    }}

  

🍒 创建管理员用户类

package com.sunjiahui.pojo.user;import com.sunjiahui.service.IOperation;import com.sunjiahui.service.impl.*;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() };    }    @Override    public int menu(){ System.out.println("==================管理员菜单=================="); System.out.println("hello! "+ 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("============================================="); Scanner src = new Scanner(System.in); int choice = src.nextInt(); return choice;    }}

  

🔵 进行整合

   

🍑 创建 Main 类和 main 方法, 搭建整体逻辑

package com.sunjiahui.controller;import com.sunjiahui.pojo.book.BookList;import com.sunjiahui.pojo.user.AdminUser;import com.sunjiahui.pojo.user.NormalUser;import com.sunjiahui.pojo.user.User;import java.util.Scanner;public class Main {    public static void main(String[] args) { BookList bookList=new BookList(); User user = login(); //向上转型; while(true){     int choice = user.menu();//动态绑定->多态     //根据你的choice 调用合适的操作     user.doWork(choice,bookList); }    }    public static User login(){ System.out.print("请输入你的姓名:"); Scanner src = new Scanner(System.in); String name = src.nextLine(); System.out.println("请输入你的身份:1-->管理员||2-->普通用户"); int choice = src.nextInt(); if(choice==1){     return new AdminUser(name); }else{     return new NormalUser(name); }    }}

   

🍑 可以先测试下代码的基本框架是否存在问题

  

🔵 实现具体的每个 Operation

  

🍹 AddOperation

package com.sunjiahui.service.impl;import com.sunjiahui.pojo.book.Book;import com.sunjiahui.pojo.book.BookList;import com.sunjiahui.service.IOperation;public class AddOperation implements IOperation {    @Override    public void work(BookList bookList){ System.out.println("新增图书!"); System.out.println("请输入图书名字:"); String name = src.nextLine(); System.out.println("请输入图书作者:"); String author = src.nextLine(); System.out.println("请输入图书类型:"); String type = src.nextLine(); System.out.println("请输入图书价格:"); int price = src.nextInt(); Book book = new Book(name,author,price,type); int size=bookList.getUsedSize(); bookList.setBook(size,book); bookList.setUsedSize(size+1); System.out.println("新增图书成功!");    }}

  

🍹 BorrowOperation

package com.sunjiahui.service.impl;import com.sunjiahui.pojo.book.Book;import com.sunjiahui.pojo.book.BookList;import com.sunjiahui.service.IOperation;public class BorrowOperation implements IOperation {    @Override    public void work(BookList bookList){ System.out.println("借阅图书!"); System.out.println("请输入你要借阅的图书的名字:"); String name = src.nextLine(); for (int i = 0; i < bookList.getUsedSize(); i++) {     Book book = bookList.getPos(i);     if(book.getName().equals(name)){  book.setBorrowed(true);  System.out.println("借阅成功!");  System.out.println(book);  return;     } } System.out.println("没有找到你要借阅的书!");    }}

  

🍹 DelOperation

package com.sunjiahui.service.impl;import com.sunjiahui.pojo.book.Book;import com.sunjiahui.pojo.book.BookList;import com.sunjiahui.service.IOperation;public class DelOperation implements IOperation {    @Override    public void work(BookList bookList) { System.out.println("删除图书!"); System.out.println("请输入你要删除的图书的名字:"); //根据书名找位置 String name =src.nextLine(); int size = bookList.getUsedSize(); int index = 0; //存储找到的下标 int i=0; //进行删除 for (; i =size){     System.out.println("没有你要删除的那本书!");     return; } //开始删 for (int j =index; j < size - 1; j++) {     Book book = bookList.getPos(j+1);     bookList.setBook(j,book); } bookList.setBook(size,null); bookList.setUsedSize(size-1); System.out.println("删除成功!");    }}

  

🍹 DisplayOperation

package com.sunjiahui.service.impl;import com.sunjiahui.pojo.book.Book;import com.sunjiahui.pojo.book.BookList;import com.sunjiahui.service.IOperation;public class DisplayOperation implements IOperation {    @Override    public void work(BookList bookList) { for (int i = 0; i < bookList.getUsedSize(); i++) {     Book book = bookList.getPos(i);     System.out.println(book); }    }}

   

🍹   ExitOperation

package com.sunjiahui.service.impl;import com.sunjiahui.pojo.book.BookList;import com.sunjiahui.service.IOperation;public class ExitOperation implements IOperation {    @Override    public void work(BookList bookList) { System.out.println("退出系统!"); System.exit(0);    }}

  

🍹 FindOperation

package com.sunjiahui.service.impl;import com.sunjiahui.pojo.book.Book;import com.sunjiahui.pojo.book.BookList;import com.sunjiahui.service.IOperation;public class FindOperation implements IOperation {    @Override    public void work(BookList bookList) { System.out.println("查找图书!"); String name = src.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("没有找到这本书!");    }}

   

🍹 ReturnOperation

package com.sunjiahui.service.impl;import com.sunjiahui.pojo.book.Book;import com.sunjiahui.pojo.book.BookList;import com.sunjiahui.service.IOperation;public class ReturnOperation implements IOperation {    @Override    public void work(BookList bookList) { System.out.println("归还图书!"); System.out.println("请输入你要归还的图书的名字:"); String name = src.nextLine(); for (int i = 0; i < bookList.getUsedSize(); i++) {     Book book = bookList.getPos(i);     if(book.getName().equals(name)){  book.setBorrowed(false);  System.out.println("归还成功!");  System.out.println(book);  return;     } } System.out.println("没有找到你要归还的书!");    }}

      

[JavaSE-项目]应科图书管理系统(新人篇)-Java文档类资源-CSDN下载该项目包含:jar包,可运行exe文件,和整个打包的项目关于这个项目我的博客链接:https更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/weixin_50369395/85096421

股票学习网站