[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