1. 图书管理系统菜单
1.1 管理员菜单
- 查找图书
- 新增图书
- 删除图书
- 显示图书
- 退出系统
1.2普通用户菜单
- 查找图书
- 借阅图书
- 归还图书
- 退出系统
2.基本框架的实现
首先我们要建立一个新的文件,在文件内建立三个包,分别命名为user(用户)、book(图书),operation(操作)

先写book相关的代码。于是,我们先在book包中新建一个java类,名为:Book。

显示图书时,我们希望它能显示出所有图书的名称、作者、价格、类型和图书目前是否借出。
private String name;//书名
private String author;//作者
private int price;//价格(价格也可以定义为浮点型)
private String type;//图书的种类
private boolean isLend;//图书是否被借出
右击鼠标,选择Generate(这里我加了汉化),选择Getter and Setter 选项,点击shift,点最后一个,就能全选



自动生成:
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public boolean isLend() {
return isLend;
}
再写它们的构造方法:
当我们新增一本图书时,它默认就是未被借出的,所以不用构造方法。
快捷键:alt+insert。按ctrl,可以多选,直接生成下面代码块:
public Book(String name, String author, int price, String type) {
this.name = name;
this.author = author;
this.price = price;
this.type = type;
// this.isLend = isLend;新生成的书籍默认是没有被借出的,所以省略
}
我们再右键选择Generate,选择ToString,全选,点OK,自动生成:
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", author='" + author + '\'' +
", price=" + price +
", type='" + type + '\'' +
(isLend==true ? " 已借出" :" 未借出")+
//", isLend=" + isLend +
'}';
}
此时,在book包中新建一个类:BookList(书架):
在这个书架中,我们希望能在里面固定的位置放书,并且能知道放了几本书:
private Book[] books=new Book[10];//这个书架可以放十本书
private int useSize;//记录下当前book数组中有几本书
然后依旧是右键Generate ,getter and setter(先选useSize),自动生成:
public int getUseSize() {
return useSize;
}
public void setUseSize(int useSize) {
this.useSize = useSize;
}
这边先按照思路把整体的框架下先实现出来,其中的细节之后再慢慢写出来
book包已经告一段落了,现在来写user包
我们在user包中新建三个类:AdminUser(管理员)、NormalUser(普通用户)、User
NormalUser、AdminUser,这也就是我们图书管理系统面对的两个对象了,管理员和普通用户,他们具有一些相同的属性。我们就可以写一个User类,让两个类去继承,来省一些代码了
这里先写user类
package user;
public class User {
protected String name;//名字.这边的protect代表的是名字的权限。如果是private,它只能在同一个包的同一类使用。就不能让AdminUser类继承了。
//写public的话,权限太大了,不是很好。
public User(String name) {
//构造方法
this.name = name;
}
}
所以在AdminUser类中:
package user;
public class AdminUser extends User{
public AdminUser(String name) {
super(name);
}
}
可以直接用快捷键,alt+insert,直接生成构造方法。
同理,NormalUser类中:
package user;
public class NormalUser extends User{
public NormalUser(String name) {
super(name);
}
}
现在书的属性和用户的属性的包和类已经完成差不多,现在要搭建用户的功能上去
由于想要实现的功能和操作基本上是针对图书的我们可以继续创一个包operation再创建一个接口命名为IOperation
package operation;
import book.BookList;
public interface IOperation {
void work(BookList bookList);
}
我们在opera(实现功能的包)中,创建两个类,AddOperation、FindOperation,这两个类。
我们会发现这两个类的实现也都要依靠BookList(书架)来实现。所以,在这两个类中,实现接口:
FindOperation类中:
package operation;
import book.BookList;
public class FindOperation implements IOperation{
//继承
@Override
public void work(BookList bookList) {
//重写IOPeration类中的work方法
System.out.println("查找图书!");
}
}
AddOperation类中:
package operation;
import book.BookList;
public class AddOperation implements IOPeration {
public void work(BookList bookList){
System.out.println("新增图书!");
}
}
同理,新建类DelOperation(删除图书):
package operation;
import book.BookList;
public class DelOperation implements IOPeration{
@Override
public void work(BookList bookList) {
System.out.println("删除图书!");
}
}
新建一个类:ShowOperation(显示图书):
package operation;
import book.BookList;
public class ShowOperation implements IOPeration{
@Override
public void work(BookList bookList) {
System.out.println("打印所有图书!");
}
}
再新建一个类:ExitOperation(退出系统):
package operation;
import book.BookList;
public class ExitOperation implements IOPeration{
@Override
public void work(BookList bookList) {
System.out.println("退出系统!");
}
}
新建一个BrrowOperation类(借阅图书):
package operation;
import book.BookList;
public class BrrowOperation implements IOPeration{
@Override
public void work(BookList bookList) {
System.out.println("借阅图书!");
}
}
再新建一个类:ReturnOperation(归还图书):
package operation;
import book.BookList;
public class ReturnOperation implements IOPeration{
@Override
public void work(BookList bookList) {
System.out.println("归还图书!");
}
}

接着,我们来细化我们的类。
我们还没有给user添加菜单。
我们先给管理员添加菜单:
public int menu(){
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("请输入你的操作:");
}
再给普通用户添加菜单:
public int menu(){
System.out.println("******普通用户菜单******");
System.out.println("1.查找图书");
System.out.


469

被折叠的 条评论
为什么被折叠?



