图书管理系统;
1.功能:
添加图书
删除图书
查找图书
根据书名查找
根据借阅状态查找
查找全部
退出
更新图书
借书
还书
2.准备:
读取:
从文件中读取图书信息,完成持久化存储
static{
FileInputStream fileInputStream = null;
try {
fileInputStream = new FileInputStream("book.txt");
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
books = (ArrayList<Book>) objectInputStream.readObject();
} catch (Exception e) {
books = new ArrayList<Book>();
}
}
输出
将图书信息写入文件
public static void write() throws IOException {
FileOutputStream fileOutputStream = new FileOutputStream("book.txt");
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
//这里是将集合对象写入文件
objectOutputStream.writeObject(books);
objectOutputStream.flush();
objectOutputStream.close();
fileOutputStream.close();
}
3.实体类(图书类)
包括:id ,书名,作者,价格,类型,状态
package LibraryMessageSystem;
import java.io.Serializable;
/**
* Description:
* date: 2023/5/3 15:11
*
* @author fjp
* @version 1.0
*/
public class Book implements Serializable {
private String id;
//书名
private String name;
//作者
private String author;
//价格
private String price;
//书本的风格
private String style;
//是否借出
private String status;
public Book() {
}
public Book(String id, String name,String author, String price, String style, String status) {
this.id = id;
this.name = name;
this.author = author;
this.price = price;
this.style = style;
this.status = status;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getStyle() {
return style;
}
public void setStyle(String style) {
this.style = style;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
@Override
public String toString() {
return id+"\t\t "+ name+"\t\t"+author+"\t\t"+price+"\t\t "+style+"\t "+status+"\t";
}
}
4.添加图书
从键盘输入添加的图书信息,添加到集合中,图书编号随机生成
public static void inputBooks(){
Scanner scanner = new Scanner(System.in);
int id =(int) Math.floor( Math.random()*1000);
String newid = Integer.toString(id);
System.out.println("请输入图书名:");
String name = scanner.next();
System.out.println("请输入作者名:");
String author = scanner.next();
System.out.println("请输入图书价格:");
String price = scanner.next();
System.out.println("请输入图书种类:");
String style = scanner.next();
System.out.println("请输入图书状态:");
String status = scanner.next();
Book book = new Book();
book.setId(newid);
book.setName(name);
book.setAuthor(author);
book.setPrice(price);
book.setStyle(style);
book.setStatus(status);
books.add(book);
}
将集合写入文件
public static void addBook() throws IOException, ClassNotFoundException {
inputBooks();
write();
System.out.println("添加成功");
}
5.删除图书
根据书名进行删除图书
public static void deleteBook() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要删除图书的书名:");
String next = scanner.next();
for (Book book : books) {
if (book.getName().equals(next)){
books.remove(book);
System.out.println("删除成功");
try {
write();
} catch (IOException e) {
e.printStackTrace();
}
return;
}
System.out.println("未找到图书");
}
}
6.查找图书
根据书名查找
public static void findName(){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要查找的书名");
String name = scanner.next();
for (Book book : books) {
if (book.getName().equals(name)){
System.out.println("编号 书名 作者 价格 类型 状态");
System.out.println(book);
return;
}
System.out.println("未找到图书,请重新输入");
}
}
根据借阅状态查找
public static void findStatus(){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要查找的图书类别");
String style = scanner.next();
for (Book book : books) {
if (book.getStatus().equals("未借")){
System.out.println("编号 书名 作者 价格 类型 状态");
System.out.println(book);
break;
}else if(book.getStatus().equals("已借")){
System.out.println("编号 书名 作者 价格 类型 状态");
System.out.println(book);
break;
}else {
System.out.println("状态输入有误,您可以输入未借/已借");
}
}
}
查找全部图书信息
public static void findBook(){
System.out.println("编号 书名 作者 价格 类型 状态");
for (Book book : books) {
System.out.println(book);
}
}
7.更新图书信息
public static void modifyBook() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要更新图书的编号或书名:");
String next = scanner.next();
for (Book book : books) {
if (book.getName().equals(next)||book.getId().equals(next)){
System.out.println(book);
System.out.println("请输入要修改的内容:");
System.out.println("书名");
String name = scanner.next();
System.out.println("作者:");
String author = scanner.next();
System.out.println("价格");
String price = scanner.next();
System.out.println("类别:");
String style = scanner.next();
System.out.println("状态");
String status = scanner.next();
book.setName(name);
book.setPrice(price);
book.setAuthor(author);
book.setStyle(style);
book.setStatus(status);
System.out.println("修改成功");
try {
write();
} catch (IOException e) {
e.printStackTrace();
}
return;
}
System.out.println("请输入正确的书名或编号");
}
}
8.借书
首先遍历看图书是否存在,存在接着判断图书状态,未借可借,更改图书状态,已借,不能借阅
public static void borrow() {
Scanner scanner = new Scanner(System.in);
System.out.println("输入要借阅的书名:");
String name = scanner.next();
for (Book book : books) {
if (book.getName().equals(name)) {
if (book.getStatus().equals("未借")) {
book.setStatus("已借");
System.out.println("借阅成功,请爱惜图书");
try {
write();
} catch (IOException e) {
e.printStackTrace();
}
return;
} else if (book.getStatus().equals("已借")) {
System.out.println("已借出,换本书吧");
return;
}
}else {
System.out.println("图书不存在");
}
}
}
9.还书
输入归还的书名,更改图书状态
public static void returnBook() throws IOException {
Scanner scanner = new Scanner(System.in);
System.out.println("输入要归还的书名:");
String name = scanner.next();
for (Book book : books) {
book.setStatus("未借");
System.out.println("归还成功");
write();
}
}
10.环境类
package LibraryMessageSystem;
import java.io.IOException;
import java.util.Scanner;
/**
* Description:
* date: 2023/5/3 15:11
*
* @author fjp
* @version 1.0
*/
@SuppressWarnings("all")
public class LibraryMessageSystem {
public static void main(String[] args) throws IOException, ClassNotFoundException {
boolean tag = true;
while(true){
System.out.println(" -------------------------------------------------------------");
System.out.println("| 图书管理系统 |");
System.out.println("| 1.增加图书 2.删除图书 3.查找图书 4.更新图书 5.借书 6.还书 |");
System.out.println(" -------------------------------------------------------------");
Scanner scanner = new Scanner(System.in);
System.out.println("请选择你需要的操作:");
int i = scanner.nextInt();
switch (i){
case 1:
BookUtil.addBook();
break;
case 2:
BookUtil.deleteBook();
break;
case 3:
tag=true;
while(tag) {
System.out.println("1.书名查找 2.状态查找 3.查找全部 4.返回上一级");
System.out.println("请选择查询方式:");
int nextInt = scanner.nextInt();
if (nextInt == 1) {
BookUtil.findName();
}
if (nextInt == 2) {
BookUtil.findStatus();
}
if (nextInt == 3) {
BookUtil.findBook();
}
if (nextInt == 4) {
tag = false;
}
}
break;
case 4:
BookUtil.modifyBook();
break;
case 5:
BookUtil.borrow();
break;
case 6:
BookUtil.returnBook();
break;
}
}
}
}
个人博客:https://fenjiapeng.github.io/