图书管理系统(java)

                                                                                                                                                           

一.首先建立一个书架

public class Book {//书籍
    private String title;
    private String auther;
    private int price;
    private String types;
    public boolean state;

    public Book(String title, String auther, int price, String types) {
        this.title = title;
        this.auther = auther;
        this.price = price;
        this.types = types;
    }

    public String getTitle() {
        return title;
    }

    public boolean isState() {
        return state;
    }

    public void setState(boolean state) {
        this.state = state;
    }

    @Override
    public String toString() {
        return "Book{" +
                "title='" + title + '\'' +
                ", auther='" + auther + '\'' +
                ", price=" + price +
                ", types='" + types + '\'' +
                ","+(state==false?"未借出":"已借出")+
//                ", state=" + state +(将这改为state==false?"未借出":"已借出",方便后面借                             还书籍显示)
                '}';
    }
public class BookList {//书架
    public int number;//记录书本数
    public Book[] books=new Book[10];//建立数组放书
    public BookList(){
        this.books[0]=new Book("三国演义","罗贯中",10,"小说");
        this.books[1]=new Book("西游记","吴承恩",12,"小说");
        this.books[2]=new Book("红楼梦","曹雪芹",11,"小说");
        number=3;
    }

    public int getNumber() {
        return number;
    }

    public Book[] getBooks() {
        return books;
    }

    public void setNumber(int number) {
        this.number = number;
    }

    public void setBooks(Book book,int pos) {
        this.books[pos] = book;//将book内容放入books【pos]中
    }
}

                                                                                                                                                           

二.建立一个用户

public abstract class User 
{//抽象类
    public String name;
    public User(String name) {
        this.name = name;
    }
    public IOperation[] imperation;//在标题三,接口
    public abstract int mean();//抽象方法
}
public class AdminUser extends User{//继承抽象类要重写抽象方法(管理员)
    public AdminUser(String name) {
        super(name);
        this.imperation=new IOperation[]{//建立数组内容,五个
                new ExitOperation(),
                new FindOperatin(),
                new AbbOperation(),
                new DeOperation(),
                new ShowOperation()
        };
    }
    public int mean(){//重写
        System.out.println("欢迎"+this.name+"来到图书管理系统");
        System.out.println("========管理员菜单=============");
        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 in=new Scanner(System.in);
        int sum=in.nextInt();
        return sum;
    }
}
public class NomallUser extends User{//继承抽象类要重写抽象方法(普通用户)
    public NomallUser(String name) {
        super(name);
        this.imperation=new IOperation[]{//建立数组内容,四个
                new ExitOperation(),
                new FindOperatin(),
                new BorrowOperation(),
                new ReturnOperation()
        };
    }
    public int mean(){//重写
        System.out.println("欢迎"+this.name+"来到图书管理系统");
        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("请选择功能:");
        Scanner in=new Scanner(System.in);
        int sum=in.nextInt();
        return sum;
    }
}

                                                                                                                                                           

三.建立一个主函数

public class Main {
    public static User get(){
        Scanner in=new Scanner(System.in);
        System.out.println("请输入你的姓名:");
        String name=in.nextLine();
        System.out.println("请选择你的身份:1.管理员 2.普通用户");
        int user= in.nextInt();
        if(user==1){
            return new AdminUser(name);
        } else if (user==2) {
            return new NomallUser(name);
        }else {
            return null;
        }
    }
    public static void main(String[] args) {
        User user=get();//向上转型
        BookList bookList=new BookList();
        while (true){
            int choise=user.mean();//如果get()函数return new AdminUser(name);则user.mean为标题二中AdminUser的 mean()
            user.imperation[choise].work(bookList);//如果get()函数return new
AdminUser(name);看下图解释,同理可反推return new NomallUser(name);
        }
    }
}

user.imperation[choise].work(bookList);

  1.user.imperation[choise]表示AdminUser中this.imperation数组   ,例如当choise=0时,imperation[0]=new ExitOperation().同理可以反推当choise=1、2....

  2.user.imperation[choise].work(bookList)中work(booklist)为标题四中接口,    例如当choise=0时,imperation[0]=new ExitOperation()则user.imperation[0].work(bookList)相当于进入ExitOperation()中work函数,同理可以反推当choise=1、2....

                                                                                                                                                           

.建立一个功能接口

public interface IOperation {
    public void work(BookList bookList);
}
public class FindOperatin implements IOperation{
    public void work(BookList bookList) {//重写接口里函数
        Scanner in=new Scanner(System.in);
        System.out.println("请输入要找的书名:");
        String name=in.nextLine();
        int a=1,num=bookList.getNumber();
        for (int i=0;i<num;i++){
            if(name.equals(bookList.books[i].getTitle())){
                System.out.println(bookList.books[i]);
                a=0;
                break;
            }
        }
        if(a==1){
            System.out.println("没有找到该书");
        }
    }
}

  • 19
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值