图书管理代码小练习--java

图书练习–java

要求

1.实现简单的登录
2.管理员端
①.查找图书
②.新增图书
③.删除图书
④.显示图书
⑤.退出系统

3.普通用户端
①.查找图书
②.借阅图书
③.归还图书
④.退出系统

思路:

1.创建一个图书相关的类:

先创建package book;
①创建book类,表示一本书

public class book {
    private String name;
    private String author;
    private int price;
    private String type;
    private boolean status;

    public book(String name, String author, int price, String type) {
        this.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 setStatus(boolean status) {
        this.status = status;
    }
    public String getName() {
        return name;
    }
    public String getAuthor() {
        return author;
    }
    public int getPrice() {
        return price;
    }
    public String getType() {
        return type;
    }
    public boolean isStatus() {
        return status;
    }
    @Override
    public String toString() {
        return "book{" +
                "name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                ", type='" + type + '\'' +
                ", status=" + ((status == true)?" 已经借出 " :" 未借出 ")+
                '}';
    }
}

②创建booklist类,用来保存N本书

public class booklist {
    private book[] books;
    private  int usedsize;

    public booklist() {
        this.books = new book[10];
        books[0] = new book("三国演义","罗贯中",23,"小说");
        books[1] = new book("水浒传","施耐庵",53,"小说");
        books[2] = new book("西游记","吴承恩",83,"小说");
        this.usedsize = 3;
    }
    //尾插
    public void setBooks(int pos,book book){
        this.books[pos] = book;
    }

    public book getbook(int pos){
        return this.books[pos];
    }

    public int getUsedsize() {
        return usedsize;
    }

    public void setUsedsize(int usedsize) {
        this.usedsize = usedsize;
    }
}

2.创建操作相关的类:

先创建package operation;
①创建一个接口
//每个操作只是内容不同,但针对的对象是相同的,所以抽象成接口
这里挑了部分代码:

public interface Ioperation {
    void work(booklist booklist);
}

②创建一组操作类,每个类都对应一个用户的某一种操作
新增图书

public class Add implements Ioperation {
    @Override
    public void work(booklist booklist) {
        System.out.println("增加书籍");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入图书的名字");
        String name = scanner.nextLine();
        System.out.println("请输入图书的作者");
        String author = scanner.nextLine();
        System.out.println("请输入图书的价格");
        int price = scanner.nextInt();
        System.out.println("请输入图书的类型");
        String type = scanner.next();
        //新建了一个图书
        book book = new book(name,author,price,type);
        int currentsize = booklist.getUsedsize();
        booklist.setBooks(currentsize,book);
        booklist.setUsedsize(currentsize+1);
    }
}

借阅图书

public class Borrow implements Ioperation{
    @Override
    public void work(booklist booklist) {
        System.out.println("借阅书籍");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你要借阅图书的书名");
        String name = scanner.nextLine();
        for (int i = 0; i < booklist.getUsedsize(); i++) {
            book book = booklist.getbook(i);
            if(book.getName().equals(name)){
                book.setStatus(true);
                System.out.println(book);
                return ;
            }
        }
        System.out.println("没有你要借阅的图书");
    }
}

查找图书

public class Find implements Ioperation{
    @Override
    public void work(booklist booklist) {
        System.out.println("查找书籍");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你要查找的书名");
        String name = scanner.nextLine();

        for (int i = 0; i < booklist.getUsedsize(); i++) {
            book book = booklist.getbook(i);
            if(book.getName().equals(name)){
                System.out.println("有这本书");
                System.out.println(book);
                return ;
            }
        }
        System.out.println("没有这本书");
    }
}

归还图书

public class Return implements Ioperation{
    @Override
    public void work(booklist booklist) {
        System.out.println("归还书籍");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你要归还的书名");
        String name = scanner.nextLine();
        for (int i = 0; i < booklist.getUsedsize(); i++) {
            book book = booklist.getbook(i);
            if(book.getName().equals(name)){
                book.setStatus(false);
                System.out.println(book);
                return ;
            }
        }
        System.out.println("没有你要归还的图书");
    }
}

3.创建用户相关的类:

先创建package User;
①创建user类,这是一个抽象类
** user是一个抽象类,每个子类只需要做两件事**
** 1.初始化对应的操作数组operations**
** 2.实现meau()方法**

public abstract class user {
    public String name;
    public Ioperation[] operations;

    public user(String name) {
        this.name = name;
    }
    public abstract int meau();
     //根据用户选项执行操作
    public void dooperation(int chioce, booklist booklist){
        this.operations[chioce].work(booklist);
    }
}

②创建管理员端的类,是user的子类

public class Adimi extends user{
    public Adimi(String name) {
        super(name);
        this.operations = new Ioperation[]{
                new Exit(),
                new Find(),
                new Add(),
                new Delete(),
                new Display()

        };
    }

    public int meau(){
        Scanner scanner = new Scanner(System.in);
        System.out.println("欢迎进入管理员的菜单");
        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("============================");
        int choice = scanner.nextInt();
        return choice;
    }
}

②创建普通用户的类,是user的子类

public class Normal extends user{
    public Normal(String name) {
        super(name);   //含参数的构造函数,必须显式调用
        this.operations = new Ioperation[]{
                new Exit(),
                new Find(),
                new Borrow(),
                new Return()
        };
    }

    public int meau(){
        System.out.println("欢迎进入普通用户的菜单");
        Scanner scanner = new Scanner(System.in);
        System.out.println("============================");
        System.out.println("hello"+ this.name + "欢迎来到图书馆");
        System.out.println("1.查找图书");
        System.out.println("2.借阅图书");
        System.out.println("3.归还图书");
        System.out.println("0.退出系统");
        System.out.println("============================");
        int choice = scanner.nextInt();
        return choice;
    }
}

4.进行整合:

创建main方法,搭建整体逻辑

public class main {
    public static user login(){
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你的姓名:");
        String name = scanner.nextLine();
        System.out.println("请输入您的身份———1:管理员  2:普通用户");
        int choice = scanner.nextInt();
        if(choice == 1){
            return new Adimi(name);
        }else{
            return new Normal(name);
        }
    }
    public static void main(String[] args) {
        booklist booklist = new booklist();
  //登录并且调用了相应用户的构造函数,构建一个对象,可能是管理员,或者普通用户
        user user = login();
        while(true) {
  //用chioce接收对应操作类的work方法,会调用user 对象引用的 menu方法,并且返回一个chioce
            int chioce = user.meau();
  //用chioce调用对应操作类的work方法
            user.dooperation(chioce, booklist);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值