分析:
图书管理系统有两种身份: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");
}
}
}