目录
前言:
之前我们学习了Java的一些基础知识,我们从数据类型-》变量-》运算符-》循环选择-》方法-》数组-》类和对象-》封装-》继承-》多态-》抽象类-》接口,那么下面我们就运用这些知识来实现一个简单版的图书管理系统。
1.基础框架的搭建
1.1图书
图书我们主要分为两大模块书和书架。
1.1.1书
我们要实现的目的是下面的这种:
主要要有五个属性:name、author、price、type、isBorrowed。
具体代码如下所示:
-
package book;
-
//书
-
public
class
Book {
-
private
String name;
//书名
-
private
String author;
//作者
-
private int price;
//价格
-
private
String
type;
//书的类型
-
private
boolean isBorrowed;
//是否被借出
-
-
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
isBorrowed(
) {
-
return isBorrowed;
-
}
-
-
public
void
setBorrowed(
boolean borrowed) {
-
isBorrowed = borrowed;
-
}
-
-
@Override
-
public
String
toString(
) {
-
return
"Book{" +
-
"name='" + name +
'\'' +
-
", author='" + author +
'\'' +
-
", price=" + price +
-
", type='" +
type +
'\'' +
-
", isBorrowed=" +
-
(isBorrowed ==
true ?
"已被借出" :
"未被借出") +
-
'}';
-
}
-
}
1.1.2书架
在书架上我们需要先给书架上面默认放上几本书:
具体代码如下所示:
-
package book;
-
//书架
-
public
class
BookList {
-
private
static final
int DEFAULT_SIZE =
10;
-
private Book[] books =
new Book[DEFAULT_SIZE];
//开辟书架的空间。
-
private
int usedSize;
//记录当前books数组中有多少本书
-
public BookList() {
-
books[
0] =
new Book(
"三国演义",
"罗贯中",
89,
"小说");
-
books[
1] =
new Book(
"西游记",
"吴承恩",
78,
"小说");
-
books[
2] =
new Book(
"红楼梦",
"曹雪芹",
49,
"小说");
-
this.usedSize =
3;
//记录当前的数的数目为3
-
}
-
-
public Book[] getBooks(int pos) {
-
return books;
-
}
-
-
public void setBooks(Book[] books) {
-
this.books = books;
-
}
-
-
public int getUsedSize() {
-
return usedSize;
-
}
-
-
public void setUsedSize(int usedSize) {
-
this.usedSize = usedSize;
-
}
-
}
1.2用户
我们主要分为普通用户和管理员。
下面我们具体实现一下两类。
1.2.1抽象类
我们在设计的时候注意到管理员和普通用户有一些属性是一样的所以我们可以对其共性进行抽取。
此时我们还需要实现一个操作的接口。
代码如下所示:
-
package opear;
-
-
import book.BookList;
-
-
public
interface
IOperation {
-
void
work
(BookList bookList);
//操作是对书架上的书进行操作的
-
}
代码如下所示:
-
package user;
-
-
import opear.IOperation;
-
-
public
class
User {
-
protected String name;
-
protected IOperation[] iOperations;
//管理员和普通用户都会有一些具体的操作方法那么此时我们就可以实现成一个接口
-
-
public User(String name) {
-
this.name = name;
-
}
-
}
1.2.2普通用户
对于普通用户来说主要实现四个功能就行:查找图书、借阅图书、归还图书、退出系统。
具体代码如下所示:
-
package user;
-
-
import opear.*;
-
-
import java.util.
Scanner;
-
-
public
class AdminUser extends User{
-
public
AdminUser(
String name) {
-
super(name);
-
//管理员所对应的操作
-
this.iOperations =
new
IOperation[] {
-
new
ExitOperation(),
-
new
FindOperation(),
-
new
BorrowOperation(),
-
new
ReturnOperation(),
-
};
-
}
-
public int menu() {
-
System.out.println(
"***************************");
-
System.out.println(
"hello" + name +
" 欢迎来到简易版图书管理系统!");
-
System.out.println(
"********* 1.查找图书!*******");
-
System.out.println(
"********* 2.借阅图书!*******");
-
System.out.println(
"********* 3.归还图书!*******");
-
System.out.println(
"********* 0.退出系统!*******");
-
System.out.println(
"***************************");
-
System.out.println(
"请输入你的操作:");
-
Scanner scanner =
new
Scanner(
System.in);
-
int choice = scanner.nextInt();
-
-
return choice;
-
}
-
-
}
1.2.3管理员
对于管理员来说主要实现五个功能就行:查找图书、新增图书、删除图书、显示图书、退出系统。
具体代码如下所示:
-
package user;
-
-
import opear.*;
-
-
import java.util.
Scanner;
-
-
public
class AdminUser extends User{
-
public
AdminUser(
String name) {
-
super(name);
-
//管理员所对应的操作
-
this.iOperations =
new
IOperation[]{
-
new
ExitOperation(),
-
new
FindOperation(),
-
new
AddOperation(),
-
new
DelOperation(),
-
new
ShowOperation(),
-
};
-
}
-
public int menu() {
-
System.out.println(
"***************************");
-
System.out.println(
"hello" + name +
" 欢迎来到简易版图书管理系统!");
-
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 scanner =
new
Scanner(
System.in);
-
int choice = scanner.nextInt();
-
-
return choice;
-
}
-
-
}
1.3操作
对于操作我们基于上面管理员和普通用户的操作可以得治我们主要实现一下的操作就可以啦!下面我们来分别具体实现一下。
1.3.1新增图书
具体代码如下所示:
-
package opear;
-
-
import book.Book;
-
import book.BookList;
-
-
import java.util.Scanner;
-
-
//新增图书
-
public
class
AddOperation
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(
"输入类型:");
-
String
type
= scanner.nextLine();
-
System.out.println(
"输入价格:");
-
int
price
= scanner.nextInt();
-
Book
book
=
new
Book(name,author,price,type);
-
//记录当前书架上书的数目
-
int
currentSize
= bookList.getUsedSize();
-
//查询这本书是否存在
-
for (
int
i
=
0; i < currentSize; i++) {
-
Book
tmp
= bookList.getBooks(i);
-
if(tmp.getName().equals(name)) {
-
System.out.println(
"已经存在这本书了,不能再放入了!");
-
return;
-
}
-
}
-
//修改书架上的数目
-
bookList.setBook(book);
-
bookList.setUsedSize(currentSize -
1);
-
}
-
}
1.3.2借阅图书
具体代码如下所示:
-
package opear;
-
-
import book.Book;
-
import book.BookList;
-
-
import java.util.Scanner;
-
-
public
class
BorrowOperation
implements
IOperation{
-
@Override
-
public
void
work
(BookList bookList) {
-
System.out.println(
"借阅图书!");
-
System.out.println(
"请输入你要借阅的图书:");
-
Scanner
scanner
=
new
Scanner(System.in);
-
String
name
= scanner.nextLine();
-
int
currentSize
= bookList.getUsedSize();
//记录当前的图书数目
-
for (
int
i
=
0; i < currentSize; i++) {
-
Book
book
= bookList.getBooks(i);
-
if(book.getName().equals(name) && !book.isBorrowed()) {
-
book.setBorrowed(
true);
-
System.out.println(
"借阅成功!");
-
return;
-
}
-
}
-
}
-
}
1.3.3删除图书
具体代码如下所示:
-
package opear;
-
-
import book.Book;
-
import book.BookList;
-
-
import java.util.Scanner;
-
-
-
public
class
DelOperation
implements
IOperation{
-
@Override
-
public
void
work
(BookList bookList) {
-
System.out.println(
"删除图书!");
-
System.out.println(
"请输入你要删除的图书:");
-
Scanner
scanner
=
new
Scanner(System.in);
-
String
name
= scanner.nextLine();
-
int
currentSize
= bookList.getUsedSize();
-
int
index
= -
1;
//要删除图书的下标
-
//遍历一遍数组找到要删除的元素
-
for (
int
i
=
0; i < currentSize; i++) {
-
Book
tmp
= bookList.getBooks(i);
-
if (tmp.getName().equals(name)) {
-
index = i;
-
break;
-
}
-
}
-
//挪动数据
-
for (
int
j
= index; j < currentSize -
1; j++) {
-
Book
book
= bookList.getBooks(j +
1);
-
bookList.setBook(j,book);
-
}
-
//修改size
-
bookList.setUsedSize(currentSize -
1);
-
//因为删除的是对象,所以把最后一个位置置为null
-
bookList.setBook(currentSize -
1,
null);
-
System.out.println(
"删除成功!");
-
}
-
}
1.3.4退出图书
具体代码如下所示:
-
package opear;
-
-
import book.
BookList;
-
-
public
class
ExitOperation
implements
IOperation{
-
@Override
-
public
void
work(
BookList bookList) {
-
System.
out.
println(
"退出系统!");
-
System.
exit(
0);
-
}
-
}
1.3.5查找图书
具体代码如下所示:
-
package opear;
-
-
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
currentSize
= bookList.getUsedSize();
-
for (
int
i
=
0; i < currentSize; i++) {
-
Book
book
= bookList.getBooks(i);
-
if (book.getName().equals(name)) {
-
System.out.println(
"找到这本书了!");
-
System.out.println(book);
-
return;
-
}
-
}
-
System.out.println(
"书架上没有这本书!");
-
}
-
}
1.3.6归还图书
具体代码如下所示:
-
package opear;
-
-
import book.Book;
-
import book.BookList;
-
-
import java.util.Scanner;
-
-
public
class
ReturnOperation
implements
IOperation{
-
@Override
-
public
void
work
(BookList bookList) {
-
System.out.println(
"归还图书!");
-
System.out.println(
"请输入你要归还的图书:");
-
Scanner
scanner
=
new
Scanner(System.in);
-
String
name
= scanner.nextLine();
-
int
currentSize
= bookList.getUsedSize();
-
for (
int
i
=
0; i < currentSize; i++) {
-
Book
book
= bookList.getBooks(i);
-
if (book.getName().equals(name) && book.isBorrowed()) {
-
book.setBorrowed(
false);
-
System.out.println(
"归还成功!");
-
return;
-
}
-
}
-
}
-
}
1.3.7显示图书
具体代码如下所示:
-
package opear;
-
-
import book.Book;
-
import book.BookList;
-
-
public
class
ShowOperation
implements
IOperation{
-
@Override
-
public
void
work
(BookList bookList) {
-
System.out.println(
"显示所有图书!");
-
int
currentSize
= bookList.getUsedSize();
-
for (
int
i
=
0; i < currentSize; i++) {
-
Book
book
= bookList.getBooks(i);
-
System.out.println(book);
-
}
-
}
-
}
2.具体内容的实现
2.1Main:主代码展示
-
import book.BookList;
-
import user.AdminUser;
-
import user.NormalUser;
-
import user.User;
-
-
import javax.jws.soap.SOAPBinding;
-
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();
-
//int choice = user.menu();
-
//根据choice和user来确定我们到底调用的是哪一个对象进行操作的。
-
while (
true) {
-
int
choice
= user.menu();
-
//根据choice和user来确定我们到底调用对象哪一个操作。
-
user.doWork(choice,bookList);
-
}
-
}
-
}
2.2oper:操作代码展示。
①新增图书。
-
package opear;
-
-
import book.Book;
-
import book.BookList;
-
-
import java.util.Scanner;
-
-
//新增图书
-
public
class
AddOperation
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(
"输入类型:");
-
String
type
= scanner.nextLine();
-
System.out.println(
"输入价格:");
-
int
price
= scanner.nextInt();
-
Book
book
=
new
Book(name,author,price,type);
-
//记录当前书架上书的数目
-
int
currentSize
= bookList.getUsedSize();
-
//查询这本书是否存在
-
for (
int
i
=
0; i < currentSize; i++) {
-
Book
tmp
= bookList.getBooks(i);
-
if(tmp.getName().equals(name)) {
-
System.out.println(
"已经存在这本书了,不能再放入了!");
-
return;
-
}
-
}
-
//修改书架上的数目
-
bookList.setBook(book);
-
bookList.setUsedSize(currentSize +
1);
-
}
-
}
②借阅图书。
-
package opear;
-
-
import book.Book;
-
import book.BookList;
-
-
import java.util.Scanner;
-
-
public
class
BorrowOperation
implements
IOperation{
-
@Override
-
public
void
work
(BookList bookList) {
-
System.out.println(
"借阅图书!");
-
System.out.println(
"请输入你要借阅的图书:");
-
Scanner
scanner
=
new
Scanner(System.in);
-
String
name
= scanner.nextLine();
-
int
currentSize
= bookList.getUsedSize();
//记录当前的图书数目
-
for (
int
i
=
0; i < currentSize; i++) {
-
Book
book
= bookList.getBooks(i);
-
if(book.getName().equals(name) && !book.isBorrowed()) {
-
book.setBorrowed(
true);
-
System.out.println(
"借阅成功!");
-
return;
-
}
-
}
-
}
-
}
③
-
package opear;
-
-
import book.Book;
-
import book.BookList;
-
-
import java.util.Scanner;
-
-
-
public
class
DelOperation
implements
IOperation{
-
@Override
-
public
void
work
(BookList bookList) {
-
System.out.println(
"删除图书!");
-
System.out.println(
"请输入你要删除的图书:");
-
Scanner
scanner
=
new
Scanner(System.in);
-
String
name
= scanner.nextLine();
-
int
currentSize
= bookList.getUsedSize();
-
int
index
= -
1;
//要删除图书的下标
-
//遍历一遍数组找到要删除的元素
-
for (
int
i
=
0; i < currentSize; i++) {
-
Book
tmp
= bookList.getBooks(i);
-
if (tmp.getName().equals(name)) {
-
index = i;
-
break;
-
}
-
}
-
//挪动数据
-
for (
int
j
= index; j < currentSize -
1; j++) {
-
Book
book
= bookList.getBooks(j +
1);
-
bookList.setBook(j,book);
-
}
-
//修改size
-
bookList.setUsedSize(currentSize -
1);
-
//因为删除的是对象,所以把最后一个位置置为null
-
bookList.setBook(currentSize -
1,
null);
-
System.out.println(
"删除成功!");
-
}
-
}
④退出系统。
-
package opear;
-
-
import book.
BookList;
-
-
public
class
ExitOperation
implements
IOperation{
-
@Override
-
public
void
work(
BookList bookList) {
-
System.
out.
println(
"退出系统!");
-
System.
exit(
0);
-
}
-
}
⑤查找图书。
-
package opear;
-
-
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
currentSize
= bookList.getUsedSize();
-
for (
int
i
=
0; i < currentSize; i++) {
-
Book
book
= bookList.getBooks(i);
-
if (book.getName().equals(name)) {
-
System.out.println(
"找到这本书了!");
-
System.out.println(book);
-
return;
-
}
-
}
-
System.out.println(
"书架上没有这本书!");
-
}
-
}
⑥归还图书。
-
package opear;
-
-
import book.Book;
-
import book.BookList;
-
-
import java.util.Scanner;
-
-
public
class
ReturnOperation
implements
IOperation{
-
@Override
-
public
void
work
(BookList bookList) {
-
System.out.println(
"归还图书!");
-
System.out.println(
"请输入你要归还的图书:");
-
Scanner
scanner
=
new
Scanner(System.in);
-
String
name
= scanner.nextLine();
-
int
currentSize
= bookList.getUsedSize();
-
for (
int
i
=
0; i < currentSize; i++) {
-
Book
book
= bookList.getBooks(i);
-
if (book.getName().equals(name) && book.isBorrowed()) {
-
book.setBorrowed(
false);
-
System.out.println(
"归还成功!");
-
return;
-
}
-
}
-
}
-
}
⑦显示图书。
-
package opear;
-
-
import book.Book;
-
import book.BookList;
-
-
public
class
ShowOperation
implements
IOperation{
-
@Override
-
public
void
work
(BookList bookList) {
-
System.out.println(
"显示所有图书!");
-
int
currentSize
= bookList.getUsedSize();
-
for (
int
i
=
0; i < currentSize; i++) {
-
Book
book
= bookList.getBooks(i);
-
System.out.println(book);
-
}
-
}
-
}
⑧接口代码。
-
package opear;
-
-
import book.BookList;
-
-
public
interface
IOperation {
-
void
work
(BookList bookList);
//操作是对书架上的书进行操作的
-
}
2.3user:使用者代码展示
①管理员代码。
-
package user;
-
-
import opear.*;
-
-
import java.util.
Scanner;
-
-
public
class AdminUser extends User{
-
public
AdminUser(
String name) {
-
super(name);
-
//管理员所对应的操作
-
this.iOperations =
new
IOperation[]{
-
new
ExitOperation(),
-
new
FindOperation(),
-
new
AddOperation(),
-
new
DelOperation(),
-
new
ShowOperation(),
-
};
-
}
-
public int menu() {
-
System.out.println(
"***************************");
-
System.out.println(
"hello" + name +
" 欢迎来到简易版图书管理系统!");
-
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 scanner =
new
Scanner(
System.in);
-
int choice = scanner.nextInt();
-
-
return choice;
-
}
-
-
}
②普通用户代码。
-
package user;
-
-
import opear.*;
-
-
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(),
-
};
-
}
-
public int menu() {
-
System.out.println(
"***************************");
-
System.out.println(
"hello" + name +
" 欢迎来到简易版图书管理系统!");
-
System.out.println(
"********* 1.查找图书!*******");
-
System.out.println(
"********* 2.借阅图书!*******");
-
System.out.println(
"********* 3.归还图书!*******");
-
System.out.println(
"********* 0.退出系统!*******");
-
System.out.println(
"***************************");
-
System.out.println(
"请输入你的操作:");
-
Scanner scanner =
new
Scanner(
System.in);
-
int choice = scanner.nextInt();
-
return choice;
-
}
-
}
③用户抽象类代码。
-
package user;
-
-
import book.BookList;
-
import opear.IOperation;
-
-
public
abstract
class
User {
-
protected String name;
-
protected IOperation[] iOperations;
//管理员和普通用户都会有一些具体的操作方法那么此时我们就可以实现成一个接口
-
-
public
User
(String name) {
-
this.name = name;
-
}
-
public
abstract
int
menu
();
-
public
void
doWork
(int choice, BookList bookList) {
-
this.iOperations[choice].work(bookList);
-
}
-
}
3.结果展示
3.1管理员用户展示
3.2普通用户展示
结束语:
好啦这次小编主要基于之前学习的一些Java基础语法知识带着大家一起实现了一个简易版的图书代码,这次小编就给大家分享到这里啦!希望对大家有所帮助,想要学习的同学记得关注小编和小编一起学习吧!如果文章中有任何错误也欢迎各位大佬及时为小编指点迷津(在此小编先谢过各位大佬啦!)
转载:https://blog.csdn.net/weixin_61599986/article/details/127932282