Java基础---IO流习题

使用对象IO流简单练习一个图书管理系统

Book类(书类)

package day2024_03_21.pojo;import java.io.Serializable;public class Book implements Serializable {private static final long serialVersionUID = 1L;private  Integer BookId;private  String BookName;private  String BookAuthor;public Book() {}public Book(Integer bookId, String bookName, String bookAuthor) {BookId = bookId;BookName = bookName;BookAuthor = bookAuthor;}public Integer getBookId() {return BookId;}public void setBookId(Integer bookId) {BookId = bookId;}public String getBookName() {return BookName;}public void setBookName(String bookName) {BookName = bookName;}public String getBookAuthor() {return BookAuthor;}public void setBookAuthor(String bookAuthor) {BookAuthor = bookAuthor;}@Overridepublic String toString() {return "书籍编号:" + BookId +"; 书籍名称:" + BookName +"; 书籍作者:" + BookAuthor;}
}

BookUtil(书籍实现类) 

package day2024_03_21.util;import day2024_03_21.pojo.Book;import java.io.*;
import java.util.ArrayList;
import java.util.List;public class BookUtil {int bookId = 106;{ArrayList<Book> bookList = new ArrayList<>();bookList.add(new Book(101, "圣经", "多人"));bookList.add(new Book(102, "论语", "孔子"));bookList.add(new Book(103, "十年征服时间的人", "尼古拉斯·尼科尔贝克"));bookList.add(new Book(104, "儒林外史", "吴敬梓"));bookList.add(new Book(105, "孔子将", "论语"));ObjectOutputStream obOutput = null;try {obOutput = new ObjectOutputStream(new FileOutputStream("E://books/book.txt"));obOutput.writeObject(bookList);} catch (IOException e) {e.printStackTrace();} finally {try {obOutput.close();} catch (IOException e) {e.printStackTrace();}}}//查看所有的图书信息public List<Book> bookFillAll() {List<Book> bookList = this.iosBookAll();return bookList;}//模糊查询public List<Book> findCondition(String inputValue) {List<Book> bookList = this.iosBookAll();ArrayList<Book> conditionBook = new ArrayList<>();for (Book book : bookList) {if (book.getBookName().indexOf(inputValue) != -1 || book.getBookAuthor().equals(inputValue)) {conditionBook.add(book);}}return conditionBook;}//新增书籍public Boolean addBook(Book book) {book.setBookId(bookId++);List<Book> bookList = this.iosBookAll();bookList.add(book);Boolean addFlag = this.oosBookWrite(bookList);return addFlag;}//修改书籍信息public Boolean reviseBook(int reviseInput,Book book1) {//所有的书籍信息List<Book> bookList = this.iosBookAll();for (Book book : bookList) {if (book.getBookId().equals(reviseInput)) {book.setBookName(book1.getBookName());book.setBookAuthor(book1.getBookAuthor());break;}}Boolean reviseFlag = this.oosBookWrite(bookList);return reviseFlag;}//根据学生id删除学生public Boolean deleteBook(int deleteInput) {//所有的书籍信息List<Book> bookList = this.iosBookAll();for (Book book : bookList) {if (book.getBookId().equals(deleteInput)) {bookList.remove(book);break;}}Boolean deleteFlag = this.oosBookWrite(bookList);return deleteFlag;}//公共方法读private List<Book> iosBookAll() {List<Book> bookList = null;ObjectInputStream objectInput = null;try {objectInput = new ObjectInputStream(new FileInputStream("E://books/book.txt"));bookList = (ArrayList<Book>) objectInput.readObject();} catch (IOException e) {e.printStackTrace();} catch (ClassNotFoundException e) {throw new RuntimeException(e);} finally {try {objectInput.close();} catch (IOException e) {e.printStackTrace();}}return bookList;}//公共方法写private Boolean oosBookWrite(List<Book> bookList) {ObjectOutputStream obOutput = null;try {obOutput = new ObjectOutputStream(new FileOutputStream("E://books/book.txt"));obOutput.writeObject(bookList);return true;} catch (IOException e) {e.printStackTrace();return false;} finally {try {obOutput.close();} catch (IOException e) {e.printStackTrace();}}}
}

 

User类(用户类)

package day2024_03_21.pojo;import java.io.Serializable;public class User implements Serializable {private static final long serialVersionUID = 1L;private Integer userId;private String userName;private String userPassWord;public User() {}public User(Integer userId, String userName, String userPassWord) {this.userId = userId;this.userName = userName;this.userPassWord = userPassWord;}public Integer getUserId() {return userId;}public void setUserId(Integer userId) {this.userId = userId;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getUserPassWord() {return userPassWord;}public void setUserPassWord(String userPassWord) {this.userPassWord = userPassWord;}@Overridepublic String toString() {return "用户ID:" + userId +"; 用户名称:" + userName + '\'' +"; 用户密码:" + userPassWord;}
}

UserUtil(用户实现类)

package day2024_03_21.util;import day2024_03_21.pojo.User;import java.io.*;
import java.util.ArrayList;public class UserUtil {{ArrayList<User> userList = new ArrayList<>();userList.add(new User(1, "root", "1234"));userList.add(new User(2, "kwj", "1111"));userList.add(new User(3, "aw", "2222"));ObjectOutputStream obOutput = null;try {obOutput = new ObjectOutputStream(new FileOutputStream("E://books/user.txt"));obOutput.writeObject(userList);} catch (IOException e) {e.printStackTrace();} finally {try {obOutput.close();} catch (IOException e) {e.printStackTrace();}}}//登录功能public boolean login(String userNameInput, String userPassInput) {ObjectInputStream objectInput = null;ArrayList<User> userArrayList = null;try {objectInput = new ObjectInputStream(new FileInputStream("E://books/user.txt"));userArrayList = (ArrayList<User>) objectInput.readObject();} catch (IOException e) {e.printStackTrace();} catch (ClassNotFoundException e) {throw new RuntimeException(e);} finally {try {objectInput.close();} catch (IOException e) {e.printStackTrace();}}for (User user : userArrayList) {if (user.getUserName().equals(userNameInput) && user.getUserPassWord().equals(userPassInput)) {return true;}}return false;}
}

BookMain(主菜单类) 

package day2024_03_21.main;import day2024_03_21.pojo.Book;
import day2024_03_21.util.BookUtil;
import day2024_03_21.util.UserUtil;import java.util.List;
import java.util.Scanner;public class BookMain {public static void main(String[] args) {Scanner sc = new Scanner(System.in);BookUtil bookUtil = new BookUtil();UserUtil userUtil = new UserUtil();boolean flag = true;System.out.println("请输入用户名:");String userNameInput = sc.next();System.out.println("请输入用户密码:");String userPassInput = sc.next();boolean loginFlag = userUtil.login(userNameInput, userPassInput);if (loginFlag) {System.out.println("登录成功!");while (flag) {System.out.println("======欢迎来到图书管理系统======");System.out.println("1.查看所有的图书信息");System.out.println("2.模糊查询书籍信息");System.out.println("3.新增书籍信息");System.out.println("4.修改书籍信息");System.out.println("5.删除书籍信息");System.out.println("6.退出系统");System.out.println("请输入你的选择:");int select = sc.nextInt();switch (select) {case 1://查看所有的图书信息List<Book> bookList = bookUtil.bookFillAll();for (Book book : bookList) {System.out.println(book);}break;case 2://模糊查询书籍信息System.out.println("请输入查询关键字:");String inputValue = sc.next();List<Book> conditionBook = bookUtil.findCondition(inputValue);for (Book book : conditionBook) {System.out.println(book);}break;case 3://新增书籍信息Book book = new Book();System.out.println("请输入书籍的名字:");book.setBookName(sc.next());System.out.println("请输入书籍的作者:");book.setBookAuthor(sc.next());boolean addFlag = bookUtil.addBook(book);System.out.println(addFlag ? "添加成功!" : "添加失败!");break;case 4://修改书籍信息System.out.println("所有书籍信息如下:");List<Book> bookList1 = bookUtil.bookFillAll();for (Book book1 : bookList1) {System.out.println(book1);}System.out.println("请输入要修改的书籍编号:");int reviseInput = sc.nextInt();Book book1 = new Book();System.out.println("请输入书籍的名称:");book1.setBookName(sc.next());System.out.println("请输入书籍的作者:");book1.setBookAuthor(sc.next());Boolean reviseFlag = bookUtil.reviseBook(reviseInput, book1);System.out.println(reviseFlag ? "修改成功!" : "修改失败!");break;case 5://删除书籍信息System.out.println("所有书籍信息如下:");List<Book> bookList2 = bookUtil.bookFillAll();for (Book book2 : bookList2) {System.out.println(book2);}System.out.println("请输入要删除的书籍编号:");int deleteInput = sc.nextInt();Boolean deleteFlag = bookUtil.deleteBook(deleteInput);System.out.println(deleteFlag ? "删除成功!" : "删除失败!");break;case 6:flag = false;System.out.println("退出系统成功!");break;}}} else {System.out.println("登录失败!");}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/770197.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

import * as的使用

import * as 是将一个模块的所有导出内容作为一个命名空间对象导入到当前模块中&#xff0c;其中 * 表示导入该模块中的所有导出内容&#xff0c;而 as 则用于指定导入的命名空间对象的名称。 例如&#xff1a;在 formatter 文件中有两个方法导出 const a () > {console.…

代码随想录算法训练营第三十四天 |1005. K 次取反后最大化的数组和 、134. 加油站、135. 分发糖果

代码随想录算法训练营第三十四天 |1005. K 次取反后最大化的数组和 、134. 加油站、135. 分发糖果 1005. K 次取反后最大化的数组和题目解法 134. 加油站题目解法 135. 分发糖果题目解法 感悟 1005. K 次取反后最大化的数组和 题目 解法 考虑绝对值 class Solution { public…

亚马逊广告八大打法,新手卖家须知

在亚马逊平台上&#xff0c;商家们可以利用各种广告产品来推广他们的商品和品牌。今天给大家分享亚马逊上常见的八种广告打法&#xff01; 亚马逊广告八大打法 一、Coupon白帽刷广告法 1️⃣ 发布大额优惠券&#xff1a;在产品详情页提供引人注意的大额优惠券&#xff08;打折幅…

图像分类的实战案例

图像分类是计算机视觉领域的一个基本任务&#xff0c;它在许多实际应用中都有广泛的应用。以下是一些图像分类的实战案例&#xff1a; 人脸识别&#xff1a; 应用&#xff1a;安全监控、身份验证、社交媒体面部标记。实例&#xff1a;使用深度学习模型识别和验证图像中的人脸&…

前端理论总结(css3)——css动画与js动画区别 // 选择器/优先级

一、 css动画与js动画区别 1&#xff1a;js是逐帧动画&#xff0c;css是补间动画。 2&#xff1a;js动画控制能力很强可以在动画播放过程中对动画进行控制&#xff1a;开始、暂停、回放、终止、取消都是可以做到的 3&#xff1a;js动画使用CPU运算&#xff0c;会阻…

真机笔记(3) 真机需求讲解

目录 拓扑分析&#xff1a; 设计理念&#xff1a; 1. 生产区交换需求&#xff1a; 2. 生产区交换需求&#xff1a; 3. 服务器区交换需求&#xff1a; 4. 路由设计 5. 地址规划&#xff1a; 拓扑分析&#xff1a; 蓝色&#xff1a;网线 红色&#xff1a;多模光纤 黄色&am…

【SpringBoot框架篇】37.使用gRPC实现远程服务调用

文章目录 RPC简介gPRC简介protobuf1.文件编写规范2.字段类型3.定义服务(Services) 在Spring Boot中使用grpc1.父工程pom配置2.grpc-api模块2.1.pom配置2.2.proto文件编写2.3.把proto文件编译成class文件 3.grpc-server模块3.1.pom文件和application.yaml3.2.实现grpc-api模块的…

Rust 语言中 Vec 的元素的删除方法

在 Rust 中&#xff0c;Vec&#xff08;向量&#xff09;提供了多种删除元素的方法。以下是一些常用的删除方法&#xff1a; remove: 这是最常用的删除方法&#xff0c;它接受一个索引作为参数&#xff0c;并移除该索引处的元素&#xff0c;同时返回被移除的元素。所有后面的元…

Java贪心算法(含面试大厂题和源码)

贪心算法是一种在每一步选择中都采取在当前状态下最好或最优&#xff08;即最有利&#xff09;的选择&#xff0c;从而希望导致结果是全局最好或最优的算法策略。贪心算法解决问题的过程中&#xff0c;每一步都做出一个看似最优的决定&#xff0c;它永远不会回溯&#xff0c;这…

洛谷刷题 | B3623 枚举排列

枚举排列 题目描述 今有 n n n 名学生&#xff0c;要从中选出 k k k 人排成一列拍照。 请按字典序输出所有可能的排列方式。 输入格式 仅一行&#xff0c;两个正整数 n , k n, k n,k。 输出格式 若干行&#xff0c;每行 k k k 个正整数&#xff0c;表示一种可能的队…

2-Flume之Sink与Channel

Flume Sink HDFS Sink 将数据写到HDFS上。数据以文件形式落地到HDFS上&#xff0c;文件名默认是以FlumeData开头&#xff0c;可以通过hdfs.filePrefix来修改 HDFS Sink默认每隔30s会滚动一次生成一个文件&#xff0c;因此会导致在HDFS上生成大量的小文件&#xff0c;实际过程…

使用git下载github/gitee仓库部分或单个文件的方法

前言 有些时候在github或者gitee仓库中我们只需要下载整个项目中的我门需要的那一部分文件夹或文件就行了&#xff0c;不需要下载所有的项目。这样可以节省很多流量和时间 步骤 1.建立一个新的 git 本地仓库 这里我在D:\test中初始化 命令&#xff1a; git init2.在本地仓…

Istio 部署 Spring Coud 微服务应用

Istio 服务部署 这篇文章讲述如何将 Java Spring Cloud 微服务应用部署到 Istio mesh 中。 准备基础环境 使用 Kind 模拟 kubernetes 环境。文章参考&#xff1a;https://blog.csdn.net/qq_52397471/article/details/135715485 在 kubernetes cluster 中安装 Istio 创建一…

Excel双击单元格后弹窗输入日期

Step1. 在VBE界面新建一个窗体(Userform1),在窗体的工具箱的空白处右键,选中添加附件,勾选Calendar control 8.0,即可完成日历的添加。 PS:遗憾的是, Office 64 位没有官方的日期选择器控件。唯一的解决方案是使用Excel 的第三方日历。 参考链接:How to insert calen…

电路笔记 :灯光画 JLC 嘉立创EDA+PCB打样(笔记)

项目介绍 PCB板灯光画(可行性验证)&#xff0c;PCB灯光画无论是电路原理还是焊接都非常简单&#xff0c;所有元器件均采用0805及体积更大的封装&#xff0c;只需要电烙铁和焊锡丝等基础的工具就能制作&#xff0c;新手小白也能轻松复刻&#xff0c;里边还有PCB板实现灯光画效果…

数据交换技术

目录 <线路交换> <报文交换> <分组交换> 1.数据报分组交换 2.虚电路分组交换 计算机网络是以数据交换为目的的技术&#xff0c;从交换技术的发展过程来看&#xff0c;主要经历了线 路交换、报文交换、分组交换的过程。 <线路交换> 线路交换又称为…

【算法】归并排序(递归法)

目录 归并排序简介算法步骤(递归)C语言实现归并排序简介 归并排序(merge sort)是一种高效、通用且基于比较的排序算法。由约翰冯诺依曼(John von Neumann)于1945年发明,是一种分治算法(divide-and-conquer algorithm)。时间复杂度为 O ( n log ⁡ n ) O{\left(n\log …

Python调用上一级目录中的文件/模块(实测可正确导入)

#指定调用上一级别目录 conf中的文件 import sys import os.path sys.path.append(os.path.dirname(os.path.abspath(__file__)) "/../conf")#如果是上上级目录中的文件&#xff0c;使用 sys.path.append(os.path.dirname(os.path.abspath(__file__)) "/../..…

vue3+threejs新手从零开发卡牌游戏(十):创建己方战域

首先在game目录下创建site文件夹&#xff0c;用来存放战域相关代码&#xff1a; 这里思考下如何创建战域&#xff0c;我的想法是添加一个平面&#xff0c;将己方战域和对方战域都添加进这个平面中&#xff0c;所以首先我们先添加一个战域plane&#xff0c;site/index.vue代码如…

[蓝桥杯 2020 省 AB1] 网络分析

一开始写的暴力合并 卡n^2过的不是正解 看正解是类似 虚拟点树形DP的思路 很巧妙 记录一下 #include<bits/stdc.h> using namespace std; using ll long long; using pii pair<int,int>; #define int long long const int N 3e510; const int inf 0x3f3f3f3f; …