手把手教你做项目---《白云图书馆》I/O流版

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
{
  /*省略*/


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值