1.对于任何系统,我们最先想到的就是普通用户和管理员,所以我们第一件事情就是创建一个包,里面包含
管理员 Admin(继承User)
普通用户 NormalUser(继承User)
abstract类的 User
2.然后就是我们的菜单了
我们将管理员和用户分为两个不同的菜单
3.我们姑且把管理员和用户的菜单做完了,现在来调用看看,我们写一个login()方法看看
这里我后面多写了一个String name,所以我修改了一下的User,Admin,NormalUser
4.运行一下,看看能否出现管理员和普通用户的菜单(排错)
如果没有出错的话,运行结果如下
5.接下来,我们就要优化一下
(不优化也没关系,我只是这里将向上转型练习一下)
对比
实际上这里就是运用了一个向上转型
User us = login();
//实际上等于
User us = new Admin(name);
//或者是
User us = new NormalUser(name);
//看你是选择1管理员还是0普通用户
然后us.name又经过动态绑定就直接达成了和我们优化前一样的功能
(再次说明,可以不修改代码,我这里只是想练习一下向上转型)
6.下面我们就来创建 书,对于书我们给两个,一个是关于数的属性,一个是用来存储书的数据
7.创建书的属性
但是一般来说,我们对于这些都应该是private(封装,保护作用)
所以我们都需要在前面加上private
然后加上get和set方法,和constructor
代码太长,这里不放图,直接贴代码了
package Book;
public class Book {
private String name;//书名
private int price;//价格
private String author;//作者
private String type;//类型
private boolean isBorrowed;//是否借出
public Book(String name, int price, String author, String type) {
this.name = name;
this.price = price;
this.author = author;
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public boolean isBorrowed() {
return isBorrowed;
}
public void setBorrowed(boolean borrowed) {
isBorrowed = borrowed;
}
}
8.下面就是BookList
定义一个数组,每个数组对应一本书,然后在定义一个size
记住,private!!!(封装,保护作用,记得加get和set方法)
package Book;
public class BookList {
private Book[] book = new Book[10];
private int size = 0;
//下面是编译器自动生成的get和set方法
public Book[] getBook() {
return book;
}
public void setBook(Book[] book) {
this.book = book;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
}
然后我们加一些书本
9.好了书和管理员已经弄好了,下面我们该来进行操作的实现了
我们一共有如下的操作
其中接口Ioperation是用来让其他所有类使用,重写的
10.下面我们将要调用他,首先我们将这些方法使用数组存储,比如下标0对应增加操作,1对应删除操作,所以我们需要在父类增加一个数组
同时在Admin和NormalUser子类完成相应的操作
Admin和Normaluser的menu将其修改为返回int类型,这样我们就可以在main接受然后调用对应的方法了
调用方法
结果如下:
11.实现各种方法
注意我们这里开始对书本进行操作,所以需要在所有的方法添加BookList属性
最后附上各类方法的实现
添加:
借书:
删除:
显示:
退出系统:
查找:
以上就是所有图书管理系统的小练习了
文末附上源码