一、简单介绍
该练习是对面向编程知识点的一个简单的代码练习
二、核心内容
1、简单的登录
2、管理端
整理书籍(该功能为可扩展功能)
查阅书籍
增加书籍
删除书籍
打印书籍列表
退出
3、用户端
查询书籍
借阅书籍
归还书籍
退出
三、代码实现
1.创建一个book包
Book.java
package book;
public class Book {
private String name;
private String author;
private int price;
private String type;
private boolean isBorrowed = false;
public Book(String name, String author, int price, String type) {
this.name = name;
this.author = author;
this.price = price;
this.type = type;
}
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 getBorrowed() {
return isBorrowed;
}
public void setBorrowed(boolean borrowed) {
isBorrowed = borrowed;
}
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", author='" + author + '\'' +
", price=" + price +
", type='" + type + '\'' +
((isBorrowed == true)?(", 已借出"):(", 未借出"))+
'}';
}
}
BookList.java
package book;
public class BookList {
private Book[] books = new Book[10];
private int useSize;
public int getUseSize() {
return useSize;
}
public void setUseSize(int useSize) {
this.useSize = useSize;
}
public BookList() {
books[0] = new Book("三国演义", "罗贯中", 100,"小说");
books[1] = new Book("水浒传", "施耐庵", 100,"小说");
books[2] = new Book("西游记", "吴承恩", 100,"小说");
this.useSize = 3;
}
public Book getBook(int pos) {
return this.books[pos];
}
public void setBooks(int pos,Book book) {
this.books[pos] = book;
}
}
2.创建一个operation包
AddOperation.java
package operation;
import book.Book;
import book.BookList;
import java.util.Scanner;
public class AddOperation implements IOPeration {
@Override
public void work(BookList bookList) {
System.out.println("新增书籍");
System.out.println("请输入你要增加的图书名字:");
String name = scanner.nextLine();
System.out.println("请输入你要增加的图书作者:");
String author = scanner.nextLine();
System.out.println("请输入你要增加的图书类型:");
String type = scanner.nextLine();
System.out.println("请输入你要增加的图书价格:");
int price = scanner.nextInt();
Book book= new Book(name,author,price,type);
//把书放到数组中 在原来数组中没有这本书
int size = bookList.getUseSize();
for (int i =0 ;i < size; i++) {
Book bookCurrent = bookList.getBook(i);
if (bookCurrent.getName().equals(name)) {
System.out.println("该书架有这本书!");
return;
}
}
bookList.setBooks(size,book);
bookList.setUseSize(size+1);
System.out.println("新增成功!");
}
}
BorrowOperation.java
package operation;
import book.Book;
import book.BookList;
public class BorrowOperation implements IOPeration {
@Override
public void work(BookList bookList) {
System.out.println("借阅书籍");
System.out.println("请输入借阅图书的名字:");
String name= scanner.nextLine();
int size = bookList.getUseSize();
for (int i =0 ;i < size; i++) {
Book bookCurrent = bookList.getBook(i);
if (bookCurrent.getName().equals(name)) {
bookCurrent.setBorrowed(true);
System.out.println("借阅成功!");
return;
}
}
System.out.println("借阅失败!");
}
}
DelOperation.java
package operation;
import book.Book;
import book.BookList;
public class DelOperation implements IOPeration {
@Override
public void work(BookList bookList) {
System.out.println("删除书籍");
System.out.println("请输入你要删除的图书名字:");
String name = scanner.next();
int index = 0;
int size = bookList.getUseSize();
int i =0;
for ( ;i < size; i++) {
Book bookCurrent = bookList.getBook(i);
if (bookCurrent.getName().equals(name)) {
index = i;
break;
}
}
if (i == size) {
System.out.println("没有你要删除的这本书!");
return;
}
for (int j = index; j < size-1; j++) {
//j+1 = j;
Book book = bookList.getBook(j+1);
bookList.setBooks(j,book);
}
bookList.setUseSize(size-1);
System.out.println("删除成功了");
}
}
DisplayOperation.java
package operation;
import book.Book;
import book.BookList;
public class DisplayOperation implements IOPeration {
@Override
public void work(BookList bookList) {
System.out.println("显示图书");
int size = bookList.getUseSize();
for (int i = 0; i < size; i++) {
Book book = bookList.getBook(i);
System.out.println(book);//bookList[i]不能写 BookList是一个类 不是数组
}
}
}
ExitOperation.java
package operation;
import book.BookList;
public class ExitOperation implements IOPeration {
@Override
public void work(BookList bookList) {
System.out.println("退出系统!");
System.exit(0);//0正常退出 -1 非正常退出
}
}
FindOperation.java
package operation;
import book.Book;
import book.BookList;
import java.util.Scanner;
public class FindOperation implements IOPeration {
@Override
public void work(BookList bookList) {
System.out.println("查找书籍");
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你要查找的书名:");
String name = scanner.nextLine();
int size = bookList.getUseSize();
for (int i =0 ;i < size; i++) {
Book book= bookList.getBook(i);
if (book.getName().equals(name)) {
System.out.println("找到了这本书的信息,如下所示:");
System.out.println(book);
return;
}
}
System.out.println("!!!该书架没有这本书");
}
}
IOPeration.java
package operation;
import book.BookList;
import java.util.Scanner;
public interface IOPeration {
Scanner scanner = new Scanner(System.in);
void work(BookList bookList);
}
ReturnOperation.java
package operation;
import book.Book;
import book.BookList;
public class ReturnOperation implements IOPeration {
@Override
public void work(BookList bookList) {
System.out.println("归还书籍");
System.out.println("请输入借阅图书的名字:");
String name= scanner.nextLine();
int size = bookList.getUseSize();
for (int i =0 ;i < size; i++) {
Book bookCurrent = bookList.getBook(i);
if (bookCurrent.getName().equals(name)) {
bookCurrent.setBorrowed(false);
System.out.println("归还成功!");
return;
}
}
System.out.println("归还失败!");
}
}
3.创建一个user包
AdminUser.java
package user;
import operation.*;
import java.util.Scanner;
public class AdminUser extends User {
public AdminUser(String name) {
super(name);
this.ioPerations = new IOPeration[] {
new ExitOperation(),// 0 下标
new FindOperation(),
new AddOperation(),
new DelOperation(),
new DisplayOperation(),
};
}
@Override
public int menu() {
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.退出系统!");
Scanner scanner = new Scanner(System.in);
int choice = scanner.nextInt();
return choice;
}
}
NormalUser.java
package user;
import operation.*;
import java.util.Scanner;
public class NormalUser extends User {
public NormalUser(String name) {
super(name);
this.ioPerations = new IOPeration[] {
new ExitOperation(),
new FindOperation(),
new BorrowOperation(),
new ReturnOperation(),
};
}
@Override
public int menu() {
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.退出系统!");
Scanner scanner = new Scanner(System.in);
int choice = scanner.nextInt();
return choice;
}
}
User.java
package user;
import book.BookList;
import operation.IOPeration;
public abstract class User {
protected String name;
protected IOPeration[] ioPerations;
public User(String name) {
this.name = name;
}
public abstract int menu();
public void doIOpeartion(int choice, BookList bookList) {
this.ioPerations[choice].work(bookList);
}
}
4.Main.java
import book.BookList;
import user.AdminUser;
import user.NormalUser;
import user.User;
import java.util.Scanner;
public class Main {
public static User login() {//返回父类
System.out.println("请输入姓名:");
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
System.out.println("请输入你的身份:1-》管理员 0-》普通用户");
int choice = scanner.nextInt();
if (choice == 1) {
return new AdminUser(name);
} else {
return new NormalUser(name);
}
}
public static void main(String[] args) {
BookList bookList = new BookList();//准备数据
User user = login();//多态
while (true) {//循坏输入
int choice = user.menu();//可以显示不同的菜单
user.doIOpeartion(choice,bookList); //组合功能
}
}
}