分析: 图书管理系统有两种身份:1.普通用户;2.管理员 其中普通用户拥有查找书籍,借阅书籍,归还书籍和退出系统操作; 管理员拥有添加书籍,删除书籍,打印所有书籍和退出系统操作.
图书类
package com.Build; //书籍类 public class Book { private String id; private int price; private String name; private String type; private String author; private boolean isBorrowed; //构造函数 public Book(String id, int price, String name, String type, String author, boolean isBorrowed) { this.id = id; this.price = price; this.name = name; this.type = type; this.author = author; this.isBorrowed = isBorrowed; } //获取书籍id public String getId() { return id; } //获取书籍价格 public int getPrice() { return price; } //获取书籍名字 public String getName() { return name; } //获取书籍作者名字 public String getAuthor() { return author; } //获取书籍类型 public String getType() { return type; } //设置书籍类型 public void setType(String type) { this.type = type; } //设置书籍借阅状态 public void setBorrowed(boolean isBorrowed){ this.isBorrowed = isBorrowed; } //获取书籍借阅状态 public boolean getBorrowed(){ return isBorrowed; } @Override public String toString() { //将书籍信息转为字符串的形式输出 return "Book{" + "id='" + id + '\'' + ",price='" + price + '\'' + ",name='" + name + '\'' + ",type='" + type + '\'' + ",author='" + author + '\'' + ",isBorrowed='" + isBorrowed + '\'' + "}"; } }书架类:
package com.Build; //图书馆类 public class Libary { private Book[] books = new Book[10]; //Book类数组 private int size = 0; //默认构造函数 public Libary(){ } //设置已存书籍数量 public void setSize(int size) { this.size = size; } //获取已存书籍数量 public int getSize() { return size; } //获取书籍 public Book getBook(int index){ return books[index]; } //插入书籍 public void setBook(int index, Book book){ this.books[index] = book; } }操作接口
package com.Operation; import com.Build.Libary; //操作类接口 public interface Operation { void work (Libary libary); }添加书籍操作类
package com.Operation; import com.Build.Book; import com.Build.Libary; import java.util.Scanner; //添加书籍操作类 public class AddOperation implements Operation{ //添加书籍 public void work(Libary libary){ //获取书籍信息 System.out.println("请输入要添加的书籍信息:"); Scanner in = new Scanner(System.in); System.out.println("请输入书籍id:"); String id = in.next(); System.out.println("请输入书籍价格:"); int price = in.nextInt(); System.out.println("请输入书籍名字:"); String name = in.next(); System.out.println("请输入书籍类型:"); String type = in.next(); System.out.println("请输入书籍作者:"); String author = in.next(); Book book = new Book(id,price,name,type,author,false); //将书籍插入libary int index = libary.getSize(); //获取已存书籍个数 libary.setBook(index,book); libary.setSize(libary.getSize() + 1); //已存书籍本书加1 } }删除书籍操作类
package com.Operation; import com.Build.Libary; import java.util.Scanner; //删除书籍操作类 public class RemoveOperation implements Operation { //删除书籍 public void work(Libary libary){ //处理libary为空的情况 if (libary == null){ return; } System.out.println("删除书籍!"); System.out.println("请输入您要查询的书籍id:"); Scanner in = new Scanner(System.in); int i; String id = in.next(); int size = libary.getSize(); for (i = 0; i < size; i++){ if (id.equals(libary.getBook(i).getId())){ break; } } if (i >= size){ System.out.println("抱歉未找到您想要查找的书籍."); }else{ libary.setBook(i,libary.getBook(size - 1)); libary.setSize(size - 1); System.out.println("删除成功."); } } }打印所有书籍操作方法
package com.Operation; import com.Build.Libary; //打印所有书籍操作类 public class DisplayAllOperation implements Operation { //打印所有书籍 public void work(Libary libary){ System.out.println("打印所有书籍信息:"); for (int i = 0; i < libary.getSize(); i++){ //遍历libary System.out.println(libary.getBook(i).toString()); } System.out.println("一共有" + libary.getSize() + "本书."); } }退出操作类
package com.Operation; import com.Build.Libary; public class ExitOperation implements Operation{ public void work(Libary libary){ System.out.println("再见!"); System.exit(1); } }查询书籍操作类
package com.Operation; import com.Build.Libary; import java.util.Scanner; //查询书籍操作类 public class QueryOperation implements Operation { //查询书籍 public void work(Libary libary){ //处理libary为空的情况 if (libary == null){ return; } System.out.println("查询书籍!"); System.out.println("请输入您要查找的书籍名:"); Scanner in = new Scanner(System.in); String name = in.next(); int size = libary.getSize(); //获取图书馆已存书籍本书 int count = 0; for (int i = 0; i < size; i++){ //遍历libary if (name.equals(libary.getBook(i).getName())){ //匹配书籍名 System.out.println(libary.getBook(i).toString()); count++; } } if (count == 0){ System.out.println("抱歉未找到您要的书籍"); }else{ System.out.println("共找到" + count + "本书."); } } }借阅书籍类
package com.Operation; import com.Build.Libary; import java.util.Scanner; //借书籍操作类 public class BorrowOperation implements Operation { //借书 public void work(Libary libary){ //处理libary为空的情况 if (libary == null){ return; } //获取用户要借阅的书籍id System.out.println("借阅书籍!"); System.out.println("请输入您要借的书籍id:"); Scanner in = new Scanner(System.in); String id = in.next(); int size = libary.getSize(); //查找要借阅的书籍 for (int i = 0; i < size; i++){ if (id.equals(libary.getBook(i).getId())){ //找到匹配id的书籍 //处理书籍是否被借阅的情况 if (libary.getBook(i).getBorrowed()){ System.out.println("该书籍已被借阅."); }else{ System.out.println("书籍借阅成功."); } return; } } System.out.println("抱歉未找到您要借阅的书籍."); } }归还书籍类
package com.Operation; import com.Build.Libary; import java.util.Scanner; //归还书籍操作类 public class ReturnOperation implements Operation { //归还书籍 public void work(Libary libary){ System.out.println("归还书籍."); Scanner in = new Scanner(System.in); System.out.println("请输入您要归还的书籍id:"); String id = in.next(); int size = libary.getSize(); for (int i = 0; i < size; i++){ if (id.equals(libary.getBook(i).getId())){ if (libary.getBook(i).getBorrowed()){ System.out.println("该书籍已经归还了."); }else{ System.out.println("书籍归还成功."); } } } System.out.println("未找到该书籍."); } }用户身份抽象类
package com.User; import com.Build.Libary; import com.Operation.Operation; abstract public class User { protected Operation[] operations; //持有当前用户操作功能的对象 String name; int age; String sex; String id; //构造函数 public User(String name, int age, String sex, String id) { this.name = name; this.age = age; this.sex = sex; this.id = id; } //设置用户年龄 public void setAge(){ this.age += 1; } //菜单 abstract public int menu(); //执行用户选择的操作 public void doOperation(int choice, Libary libary){ operations[choice].work(libary); } }普通用户身份类
package com.User; import com.Operation.*; import java.util.Scanner; //普通用户类 public class NormalUser extends User{ //构造函数 public NormalUser(String name,int age,String sex,String id){ super(name,age,sex,id); operations = new Operation[]{ new ExitOperation(), new QueryOperation(), new BorrowOperation(), new ReturnOperation() }; } //菜单函数 @Override public int menu(){ System.out.println("****************"); System.out.println("****************"); System.out.println("****1.查询书籍****"); System.out.println("****2.借阅书籍****"); System.out.println("****3.归还书籍****"); System.out.println("****0.退出程序****"); System.out.println("*****************"); System.out.println("*****************"); System.out.println("__________________"); System.out.println("请输入您的选择:"); Scanner in = new Scanner(System.in); int choice = in.nextInt(); return choice; } }管理员类
package com.User; import com.Operation.*; import java.util.Scanner; //管理员类 public class Administrator extends User { //构造函数 public Administrator(String name,int age, String sex, String id){ super(name,age,sex,id); operations = new Operation[]{ new ExitOperation(), new AddOperation(), new RemoveOperation(), new DisplayAllOperation() }; } @Override //菜单函数 public int menu(){ System.out.println("******************"); System.out.println("******************"); System.out.println("****1.添加书籍*****"); System.out.println("****2.删除书籍*****"); System.out.println("****3.打印书籍*****"); System.out.println("****0.退出程序*****"); System.out.println("******************"); System.out.println("******************"); System.out.println("__________________"); System.out.println("请输入您的选择:"); Scanner in = new Scanner(System.in); int choice = in.nextInt(); return choice; } }程序main类
package com.Main; import com.Build.Libary; import com.User.Administrator; import com.User.NormalUser; import com.User.User; import java.util.Scanner; public class Main { public static void main(String[] args){ Libary libary = new Libary(); //实例化图书馆 User user = login(); //实例化用户 while(true){ int choice = user.menu(); user.doOperation(choice,libary); } } //登录身份确定 public static User login(){ System.out.println("**1.普通用户**"); System.out.println("**2.管理员****"); System.out.println("请输入您的身份:"); Scanner in = new Scanner(System.in); int role = in.nextInt(); if (role == 1){ return new NormalUser("向红",12,"女","0001"); }else{ return new Administrator("小明",15,"男","0002"); } } }