作者:✿✿ xxxflower. ✿✿
博客主页:xxxflower的博客
专栏:【Java项目】篇
语录:⭐每一个不曾起舞的日子,都是对生命的辜负。⭐

今天我们来练习一个小项目:图书管理系统
我们先来看一下这个项目的运行效果:
使用者分为管理员和普通用户。

我们先来看一下普通用户的操作:

我们再来看一下管理员的操作:


接下来我们一起来看一下这个程序的代码:

文章目录

  • 图书管理系统
    • book
      • Book
      • BookList
    • operations
      • AddOPeration
      • BorrowOperation
      • DelOperation
      • DisplayOperation
      • ExitOperation
      • FindOperation
      • IOPeration
      • ReturnOperation
    • user
      • AdminerUser
      • NormalUser
      • User
    • Main

图书管理系统

book

Book

package book;public class Book {private String name;private String author;private int price;private String type;private boolean isBorrowed;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;}@Overridepublic String toString() {return "Book{" +"name='" + name + '\'' +", author='" + author + '\'' +", price=" + price +", type='" + type + '\'' +((isBorrowed() == true)? "该书已经借出":"该书未借出")+'}';}
}

BookList

package book;public class BookList {private Book[] books = new Book[10];private int usedSize;//储存当前书的个数public BookList(){books[0] = new Book("三体地球往事","刘慈欣",33,"小说");books[1] = new Book("三体黑暗森林","刘慈欣",34,"小说");books[2] = new Book("三体死神永生","刘慈欣",35,"小说");this.usedSize = 3;}public int getUsedSize() {return usedSize;}public void setUsedSize(int usedSize) {this.usedSize = usedSize;}public Book getPos(int pos){return books[pos];}public void setBooks(Book book,int pos){books[pos] = book;}
}

operations

AddOPeration

package operations;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("请输入你要新增的图书的名字:");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);//1.获取当前可以存放的书籍int currentSize = bookList.getUsedSize();//2.把书放在指定位置bookList.setBooks(book,currentSize);//书的有效个数bookList.setUsedSize(currentSize+1);}}

BorrowOperation

package operations;import book.Book;
import book.BookList;import java.util.Scanner;public class BorrowOperation implements IOPeration{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.getPos(i);if (name.equals(book.getName())) {if (book.isBorrowed()) {System.out.println("该书已经被借出!");} 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{public void work(BookList bookList){System.out.println("删除图书!");System.out.println("请输入要删除的图书:");Scanner scanner = new Scanner(System.in);String name = scanner.nextLine();//1.遍历数组当中 是否有你要删除的书,有记录下标int index = -1;int currentSize = bookList.getUsedSize();for (int i = 0; i < currentSize; i++) {Book book = bookList.getPos(i);if(name.equals(book.getName())){index = i;break;}}if(index == -1){System.out.println("没有你要删除的书!");return;}for (int i = index; i < currentSize-1; i++) {Book book = bookList.getPos(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;public class DisplayOperation implements IOPeration{public void work(BookList bookList){System.out.println("显示所有图书!");int currentSize = bookList.getUsedSize();for (int i = 0; i < currentSize; i++) {Book book = bookList.getPos(i);System.out.println(book);}}
}

ExitOperation

package operations;import book.BookList;public class ExitOperation implements IOPeration{@Overridepublic void work(BookList bookList) {System.out.println("退出系统!");System.exit(0);}
}

FindOperation

package operations;import book.Book;
import book.BookList;import java.util.Scanner;public class FindOperation implements IOPeration{@Overridepublic 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.getPos(i);if(name.equals(book.getName())){System.out.println("找到了这本书!");System.out.println(book);return;}}System.out.println("没有这本书!");}
}

IOPeration

package operations;import book.BookList;public interface IOPeration {void work(BookList bookList);
}

ReturnOperation

package operations;import book.Book;
import book.BookList;import java.util.Scanner;public class ReturnOperation implements IOPeration{@Overridepublic 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.getPos(i);if(name.equals(book.getName())){book.setBorrowed(false);System.out.println("归还图书成功!");return;}}System.out.println("没有你要归还的图书!");}
}

user

AdminerUser

package user;import operations.*;import java.util.Scanner;public class AdminerUser extends User{public AdminerUser(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("hello "+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 choic = scanner.nextInt();return choic;}}

NormalUser

package user;import operations.*;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("hello "+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 choic = scanner.nextInt();return choic;}}

User

package user;import book.BookList;
import operations.IOPeration;public abstract class User {protected String name;protected IOPeration[] ioPerations;public User(String name){this.name = name;}public abstract int menu();public void doOperation(int choic, BookList bookList){ioPerations[choic].work(bookList);}}

Main

import book.BookList;
import user.AdminerUser;
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 choic = scanner.nextInt();//根据用户输入的数字判断身份 发生向上转型if(choic == 1){return new AdminerUser(userName);}else{return new NormalUser(userName);}}public static void main(String[] args) {//0.准备数据BookList bookList = new BookList();//1.登录User user = login();while (true){int choic = user.menu();user.doOperation(choic,bookList);}}
}

【Java项目】小练习——图书管理系统相关推荐

  1. 程序逸的Java项目之旅-图书管理系统之数据库设计(1)

    程序逸的Java项目之旅-图书管理系统之环境的搭建 1.前言 上篇博客我们介绍了一下环境的搭建,我相信很多小伙伴这点应该问题不大,可能就是idea破解和mysql数据库和redis数据库的安装吧,我其 ...

  2. 程序逸的Java项目之旅-图书管理系统之数据库设计(2-完)

    紧接上篇博客>>>>>>程序逸的Java项目之旅-图书管理系统之数据库设计(1) 4.数据库表的创建 对于数据库表,我们可以通过cmd窗口进行创建,但那种方法有点麻 ...

  3. 程序逸的Java项目之旅-图书管理系统之验证码和用户数据的后台获取(1)

    通过上篇博客>>>>>程序逸的Java项目之旅-图书管理系统之后端接口的快速实现,我们就可以快速搭建出基础的项目代码了,今天我们就先来实现一个验证码和后台获取管理员的账号 ...

  4. Java程序员的福音:Java项目教学之图书管理系统(含源代码)

    1 图书管理系统项目演示 图书管理系统分析: 定义Book类 完成主界面和选择 完成查询所有图书 完成添加图书 完成删除图书 完成修改图书 使用Debug追踪调试 2 图书管理系统之标准Book类 我 ...

  5. Java项目:SpringBoot图书管理系统

    作者主页:夜未央5788 简介:Java领域优质创作者.Java项目.学习资料.技术互助 文末获取源码 项目介绍 本系统分为管理员与普通用户两种角色: 管理员角色包含以下功能: 借书管理,图书信息管理 ...

  6. Java项目:(小程序)物业管理系统(spring+spring mvc+mybatis+layui+微信小程)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 本系统功能包括: 微信小程序物业管理系统,微信朝胞括以下几个模 块: 社区公告.报修.信息采集.生活缴费.二手置换 微信小程序 ...

  7. 程序逸的Java项目之旅-图书管理系统之环境的搭建

    其实自己一直没有真正的梳理过一个项目,无论这个项目是简单还是困难,所以我希望通过这个项目帮助我学习以及分享自己的心得给大家,谢谢. 1.前言 这个项目我也是从零开始写,并且更新的速度要看我写的速度,期 ...

  8. 程序逸的Java项目之旅-图书管理系统之项目搭建

    前两篇博客将数据库表简单设计了一下,接下来我们就可以先搭建项目基础的骨架了.很多高校依旧使用eclipse/myeclipse来作为编译器,不是说这个编译器不好,其实Ieda的功能它都有,但用起来就是 ...

  9. 程序逸的Java项目之旅-图书管理系统之后端接口的快速实现

    我们可以借助Mybatis-plus来快速生成我们的DAO,Mapper,和service层,因为通过这些插件可以生成最基础的增删改查语句,但如果是更复杂的语句,我们可以自己再去xml中手写也是可以的 ...

  10. java计算机毕业设计vue图书管理系统源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计vue图书管理系统源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计vue图书管理系统源码+mysql数据库+系统+lw文档+部署 本源码技术栈: 项目架构:B ...

最新文章

  1. 获取Windwos的版本和名称 -- GetVersion|GetVersionEx
  2. enter your credential for http://dev.azure.....Fatal:Authentication failed for ;;
  3. ios13文件连接服务器教程,iOS 13/iPad OS迈向生产力的一大步,SMB文件共享视频图文教程...
  4. 嵌入式linux完整top命令,linux的top命令详解
  5. JQUERY的appendappendTo
  6. C/C++二维数组名和二级指针的联系与区别
  7. 常量数组 python_python数据科学系列:numpy入门详解教程
  8. nullnullc++ 精简版 fps限制
  9. 克罗谈投资策略03_你所期望的赌博方式
  10. nginx对listen端口的优化 -- 第一篇
  11. 解决Intellij中的一些bug
  12. WEB前端是干什么的?
  13. 百度,高德地图经纬度转换
  14. 设置clickhouse默认密码
  15. AcWing 4071. 国际象棋
  16. react 实战案例(webpack构建)
  17. 职场中的你有危机感吗?在职提升来社科院与杜兰大学金融管理硕士项目
  18. 基于Python实现的合同管理系统设计
  19. 小米手机任意版本MIUI安装Google Play服务
  20. 判断用户使用的浏览器是不是IE8

热门文章

  1. AI+医疗试水“近视预测”,未来10年近视度数有规可循...
  2. 铣扁机的常用加工方法及构造原理
  3. linux 系统在机顶盒和wifi卡上运行
  4. 5G - BWP的一些总结
  5. C语言程序设计丁峻岭,C语言程序设计
  6. Redis发布订阅和应用场景
  7. Linux各类常用操作
  8. SQL SERVER学习(五)——CentOS7下安装SQL SERVER
  9. 高新技术企业有国家级和省级之分吗?
  10. php 检测服务器网速_PHP探针推荐:检测服务器环境好帮手