当前位置: 首页 > web >正文

基础版-图书管理系统

现在我们用面向对象编程,首先我们要明确这个图书管理系统的对象有哪些?

图书管理需要管理图书(对象1),在哪管理图书呢?书架(对象2)上

然后由谁来管呢?有两类人,一类是:图书管理员(对象3)。另一类:普通用户人员(对象4)

不同的人的权限不一样。

管理员的权限:

1.查找图书(对象5)
2.新增图书(对象6)
3.删除图书(对象7)
4.显示图书(对象8)
0,退出系统(对象9)

普通用户的权限:

1.查找图书
2.借阅图书(对象10)
3.归还图书(对象11)
0,退出系统

 一个对象就是一个类:

1.先实现书和书架:

book类:

public class Book {private String name;//书的名字private String author;//书作者的名字private int price;//书的价格private String type;//书的类型private boolean isBorrowed;//书的状态@Overridepublic String toString() {//book中的toString方法,用来显示书的相关信息return "Book{" +"书名:'" + name + '\'' +", 作者:'" + author + '\'' +", 价格:" + price +", 类型:'" + type + '\'' +(isBorrowed==true?" 已借出":" 未借出") +'}';}public Book(String name, String author, int price, String type) {//构造方法,用来初始化bookthis.name = name;this.author = author;this.price = price;this.type = type;}public void setName(String name) {this.name = name;}//设置书名public void setAuthor(String author) {this.author = author;}//设置书的作者public void setPrice(int price) {this.price = price;}//设置书的价格public void setType(String type) {this.type = type;}//设置书的类型public void setBorrowed(boolean borrowed) {isBorrowed = borrowed;}//设置书的是否借出的状态public String getName() {return name;}//得到书的名字public String getAuthor() {return author;}//得到书的作者的名字public int getPrice() {return price;}//得到书的价格public String getType() {return type;}//得到书的的类型public boolean isBorrowed() {return isBorrowed;}//得到书的是否借出的状态
}

bookList类:

public class bookList {private Book[] books=new Book[10];//用一个数组用来储存书本private int usesize;//书架上的有效书的本数public bookList(){//初始化书架上的书,最开始有三本默认的书books[0]=new Book("三国演义","罗贯中",10,"小说");books[1]=new Book("西游记","吴承恩",59,"小说");books[2]=new Book("红楼梦","曹雪芹",16,"小说");this.usesize=3;}public Book getBooks(int pos) {return books[pos];}//取得书架上对应下标的书public int getUsesize() {return usesize;}//取得书架上有效书本的数量public void setBooks(int i,Book book) {this.books[i] = book;}//修改书架上对应下标的书public void setUsesize(int usesize) {this.usesize = usesize;}//修改书架上有效书的数量public Book[] getBooks() {//取得数组,方便遍历书架上的所有书return books;}public int getInstance(String book) {//for (int i = 0; i <usesize ; i++) {if(book.equals(books[i].getName())){return i;}}return -1;}public void swap(Book n1,Book n2){//交换对应下标n1和n2的书n1.setName(n2.getName());n1.setAuthor(n2.getAuthor());n1.setPrice(n2.getPrice());n1.setType(n2.getType());n1.setBorrowed(n2.isBorrowed());}
}

2.实现用户类: 

 User(父类,抽象类):

public abstract class User {protected String name;protected Listoperation[] operation;public User(String name){this.name=name;}public abstract int menu();public abstract void dooperation(int choice,bookList booklist);
}

 User中menu的抽象方法用来打印菜单的,因为对应不同的用户有不同的权限。

administorUser类(管理员类):

1.第一类用户是管理员:

public class administorUser extends User{public administorUser(String name) {super(name);operation=new Listoperation[]{new exitoperation(),new FIndoperation(),new Addoperation(),new Deletoperation(),new Showoperation()};}public int menu(){System.out.println("欢迎"+name+"来到图书管理系统");System.out.println("1.查找图书");System.out.println("2.新增图书");System.out.println("3.删除图书");System.out.println("4.显示图书");System.out.println("0,退出系统");Scanner scanner =new Scanner(System.in);System.out.println("请输入你的操作:");int x=scanner.nextInt();return x;}public void dooperation(int choice, bookList booklist) {operation[choice].work(booklist);}
}

nomalUser类:

2.第二类用户是普通用户:

public class nomalUser extends User{public nomalUser(String name) {super(name);operation=new Listoperation[]{new exitoperation(),new FIndoperation(),new Borrowoperation(),new returnoperation()};}public int menu(){System.out.println("欢迎"+name+"来到图书管理系统");System.out.println("1.查找图书");System.out.println("2.借阅图书");System.out.println("3.归还图书");System.out.println("0,退出系统");Scanner scanner =new Scanner(System.in);System.out.println("请输入你的操作:");int x=scanner.nextInt();return x;}@Overridepublic void dooperation(int choice, bookList booklist) {operation[choice].work(booklist);}
}

3.实现对应的所有方法:

1.创建一个接口:Listoperation

public interface Listoperation {void work(bookList booklist);
}

2.增添图书:Addoperation

public class Addoperation implements Listoperation{@Overridepublic void work(bookList booklist) {System.out.println("增添图书...");Scanner sc=new Scanner(System.in);if(booklist.getBooks().length==booklist.getUsesize()){System.out.println("书架已满,放不下了");return ;}System.out.println("请输入书名:");String name=sc.nextLine();for (int i = 0; i < booklist.getUsesize(); i++) {if(name.equals(booklist.getBooks(i).getName())){System.out.println("书架上已经有这本书");return ;}}System.out.println("请输入作者的名字:");String author=sc.nextLine();System.out.println("请输入该小说的类型:");String type=sc.nextLine();System.out.println("请输入该书的价格:");int price= sc.nextInt();Book newbook=new Book(name,author,price,type);booklist.setBooks(booklist.getUsesize(),newbook);booklist.setUsesize(booklist.getUsesize()+1);System.out.println("插入成功");return ;}
}

3.借阅图书:Borrowoperation

public class Borrowoperation implements Listoperation{@Overridepublic void work(bookList booklist) {System.out.println("借阅图书...");System.out.println("请输入你要借阅的图书的名字:");Scanner sc=new Scanner(System.in);String name=sc.nextLine();for (int i = 0; i < booklist.getUsesize(); i++) {Book book=booklist.getBooks(i);if(book.isBorrowed()==true){System.out.println("该书已经被借出");return ;}if(book.getName().equals(name)){book.setBorrowed(true);System.out.println("借阅成功");return ;}}System.out.println("未找到你要借阅的书");return ;}
}

4.删除图书:Deletoperation

public class Deletoperation implements Listoperation{@Overridepublic void work(bookList booklist) {System.out.println("删除图书...");Scanner sc=new Scanner(System.in);if(booklist.getUsesize()==0){System.out.println("书架上没有书,删除失败");return ;}System.out.println("请输入要删除的书名:");String name=sc.nextLine();int x= booklist.getInstance(name);for (int i = x; i < booklist.getUsesize()-1; i++) {booklist.swap(booklist.getBooks(i),booklist.getBooks(i+1));}booklist.setUsesize(booklist.getUsesize()-1);System.out.println("删除成功");}
}

5.退出系统:exitoperation

public class exitoperation implements Listoperation{@Overridepublic void work(bookList booklist) {System.out.println("退出系统...");System.exit(0);}
}

6.查找图书:FIndoperation

public class FIndoperation implements Listoperation{@Overridepublic void work(bookList booklist) {System.out.println("查找图书...");System.out.println("请输入你要查找的图书的名字:");Scanner sc=new Scanner(System.in);String name=sc.nextLine();for (int i = 0; i < booklist.getUsesize(); i++) {Book book=booklist.getBooks(i);if(book.getName().equals(name)){System.out.println("找到了");System.out.println(book);return ;}}System.out.println("未找到此书");return ;}
}

7.归还图书:returnoperation

public class returnoperation implements Listoperation{@Overridepublic void work(bookList booklist) {System.out.println("归还图书...");System.out.println("请输入你要归还的图书的名字:");Scanner sc=new Scanner(System.in);String name=sc.nextLine();for (int i = 0; i < booklist.getUsesize(); i++) {Book book=booklist.getBooks(i);if(book.getName().equals(name)){book.setBorrowed(false);System.out.println("归还图书成功");return ;}}System.out.println("未找到需要归还的书");return ;}
}

8.展示图书:Showoperation

public class Showoperation implements Listoperation{@Overridepublic void work(bookList booklist) {System.out.println("显示图书...");for (int i = 0; i < booklist.getUsesize(); i++) {Book book=booklist.getBooks(i);System.out.println(book);}}
}

http://www.xdnf.cn/news/795.html

相关文章:

  • AOSP Android14 Launcher3——点击桌面图标启动应用动画流程
  • url和http
  • 海外服务器安装Ubuntu 22.04图形界面并配置VNC远程访问指南
  • AI 速读 SpecReason:让思考又快又准!
  • opencv 图像矫正的原理
  • 小刚说C语言刷题——1039 求三个数的最大数
  • PyTorch与TensorFlow模型全方位解析:保存、加载与结构可视化
  • 明心见性与真如三昧
  • CTF web入门之SQL注入使用工具sqlmap
  • 网页下载的m3u8格式文件使用FFmpeg转为MP4
  • C#常用LINQ
  • 快速搭建 Cpolar 内网穿透(Mac 系统)
  • 嵌入式开发板调试方式完全指南:串口/SSH/Telnet及其他方式对比
  • 深度学习框架PyTorch——从入门到精通(3.3)YouTube系列——自动求导基础
  • 【每天一个知识点】主题建模(Topic Modeling)
  • 浙江大学DeepSeek 公开课 第三季 第1期讲座 - 马东方教授 (附PPT下载) by突破信息差
  • 【25软考网工笔记】第三章 局域网(1)CSMA/CD、二进制指数退避算法、最小帧长计算
  • 高品质性价比之王-特伦斯便携钢琴V10
  • 海外版高端Apple科技汽车共享投资理财系统
  • Spark-SQL编程
  • 【第十六届 蓝桥杯 省 C/Python A/Java C 登山】题解
  • 《Java工程师面试核心突破》专栏简介
  • Uniapp 自定义TabBar + 动态菜单实现教程(Vuex状态管理详解)
  • Docker如何更换镜像源提高拉取速度
  • 【Easylive】为什么需要手动转换 feign.Response 到 HttpServletResponse
  • Itext进行PDF的编辑开发
  • GPU高效利用率实战揭秘:蓝耘元生代VS传统云平台的降维打击
  • Spark,hadoop的组成
  • 大数据学习(109)-Impala 和 Hive 之间的 SQL 差异
  • FPGA 中 XSA、BIT 和 DCP 文件的区别