package io;
import sun.awt.image.OffScreenImageSource;
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;
public class menu {
public static void main(String[] args) throws IOException, ClassNotFoundException {
while (true) {//菜单可以接着选择
//打印菜单
System.out.println("-----欢迎来到白云图书馆-----");
System.out.println("-----1.展示书籍-----");
System.out.println("-----2.录入书籍-----");
System.out.println("-----3.下架书籍-----");
System.out.println("-----4.退出菜单-----");
//引入Scanner类与if语句进行菜单的选择交互
Scanner sc = new Scanner(System.in);
System.out.println("-----请输入你要选择的菜单序号-----");
//利用键盘输入序号
int choice = sc.nextInt();//利用choice变量来接收键盘输入的序号
/*nextInt() 是 Scanner 类的一个方法,
它用于从输入的文本中解析并返回一个 int 类型的值。
这个方法会不断从标准输入(通常是键盘)读取字符,
直到遇到与整数格式不匹配的字符为止(例如,空格、换行符等)。
*/
if (choice == 1) {
System.out.println("【白云图书馆】>>>>>>>1.展示书籍\n");
// 从文件中读取list
File f = new File("D:\\BaiYunLibrary\\demo.txt");
if (f.exists() == true) {//文件如果存在 exists()这个方法返回值为布尔值
// 管套管
FileInputStream fis = new FileInputStream(f);
ObjectInputStream ois = new ObjectInputStream(fis);
// 将集合读取:
ArrayList list = (ArrayList) (ois.readObject());//从文件中读取集合
//对集合进行遍历
for (int i = 0; i <= list.size() - 1; i++) {
book shu = (book) (list.get(i));
System.out.println(shu.getBookNo() + "---《" + shu.getBookName() + "》---" + shu.getBookAuthor());
}
} else {//文件不存在
System.out.println("当前没有上新书籍,先上新书籍再进行书籍展示。\n");
}
}
if (choice == 2) {
System.out.println("【白云图书馆】>>>>>>>2.录入书籍\n");
System.out.println("请输入书籍编号");
int bNo = sc.nextInt();
System.out.println("请输入书籍名字");
String bName = sc.next();
System.out.println("请输入书籍作者");
String bAuthor = sc.next();
File f = new File("D:\\BaiYunLibrary\\demo.txt");
//每上一本书,创建一本书的对象
book shu = new book(bNo, bName, bAuthor); // 使用变量bNo, bName, bAuthor
shu.setBookNo(bNo);
shu.setBookName(bName);
shu.setBookAuthor(bAuthor);
if (f.exists() == true) {//文件如果存在 exists()这个方法返回值为布尔值
// 管套管
FileInputStream fis = new FileInputStream(f);
ObjectInputStream ois = new ObjectInputStream(fis);
// 将集合读取:
ArrayList list = (ArrayList) (ois.readObject());//从文件中读取集合
//集合读取出来后追加新的书籍
list.add(shu);
//把集合写到文件里去
//需要管套管
FileOutputStream fos = new FileOutputStream(f);
ObjectOutputStream oos = new ObjectOutputStream(fos);
//将list写出
oos.writeObject(list);
//关闭流
oos.close();
} else {//文件不存在,证明第一次上新书,添加新个体到集合中
//创建一个集合:用于存放书籍个体
ArrayList list = new ArrayList();//空集合
list.add(shu);
//把集合写到文件里去
//需要管套管
FileOutputStream fos = new FileOutputStream(f);
ObjectOutputStream oos = new ObjectOutputStream(fos);
//将list写出
oos.writeObject(list);
//关闭流
oos.close();
}
}
if (choice == 3) {
System.out.println("【白云图书馆】>>>>>>>3.下架书籍\n");
System.out.println("请录入要下架的书籍的编号");
int deletionNo = sc.nextInt();
File f = new File("D:\\BaiYunLibrary\\demo.txt");
// 管套管
FileInputStream fis = new FileInputStream(f);
ObjectInputStream ois = new ObjectInputStream(fis);
// 将集合读取:
ArrayList list = (ArrayList) (ois.readObject());//从文件中读取集合
for (int i = 0; i <= list.size() - 1; i++) {
book shu = (book) (list.get(i));
if (shu.getBookNo() == deletionNo) {
list.remove(shu);
System.out.println("书籍下架成功");
}
//把集合写到文件里去
//需要管套管
FileOutputStream fos = new FileOutputStream(f);
ObjectOutputStream oos = new ObjectOutputStream(fos);
//将list写出
oos.writeObject(list);
//关闭流
oos.close();
}
}
if (choice == 4) {
System.out.println("【白云图书馆】>>>>>>>4.退出菜单\n");
break;//跳出循环
}
}
}
}
package io;
import java.io.Serializable;
public class book implements Serializable//序列化:implements Serializable
{
/*省略*/
}