利用 Vector数据结构、对象序列化、输入输出流设计并编写一个命令行图书管理系统Java应用程序,具备以下功能:1)打印系统列表(书号,作者姓名,标题,出版社,定价);2)增加一本新书;3)查找一本书;4)删除一本书;5)离开系统;6)保存系统数据到文件中;7)从文件中加载旧数据。
时间: 2023-11-25 11:05:18 浏览: 27
好的,我会为您提供一个基本的命令行图书管理系统的Java应用程序。
首先,我们需要定义一个Book类,该类包含书号、作者姓名、标题、出版社和定价等属性,代码如下:
```java
import java.io.Serializable;
public class Book implements Serializable {
private int bookNumber;
private String authorName;
private String title;
private String publisher;
private double price;
public Book(int bookNumber, String authorName, String title, String publisher, double price) {
this.bookNumber = bookNumber;
this.authorName = authorName;
this.title = title;
this.publisher = publisher;
this.price = price;
}
public int getBookNumber() {
return bookNumber;
}
public void setBookNumber(int bookNumber) {
this.bookNumber = bookNumber;
}
public String getAuthorName() {
return authorName;
}
public void setAuthorName(String authorName) {
this.authorName = authorName;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getPublisher() {
return publisher;
}
public void setPublisher(String publisher) {
this.publisher = publisher;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
```
接下来,我们需要定义一个BookManager类,该类包含以下方法:
1. 打印系统列表:printBookList()
2. 增加一本新书:addBook()
3. 查找一本书:findBook()
4. 删除一本书:deleteBook()
5. 保存系统数据到文件中:saveToFile()
6. 从文件中加载旧数据:loadFromFile()
代码如下:
```java
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class BookManager {
private List<Book> bookList = new ArrayList<>();
public void printBookList() {
System.out.println("书号\t作者姓名\t标题\t出版社\t定价");
for (Book book : bookList) {
System.out.println(book.getBookNumber() + "\t" + book.getAuthorName() + "\t" + book.getTitle() + "\t" + book.getPublisher() + "\t" + book.getPrice());
}
}
public void addBook() {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入书号:");
int bookNumber = scanner.nextInt();
scanner.nextLine(); // 读取换行符
System.out.print("请输入作者姓名:");
String authorName = scanner.nextLine();
System.out.print("请输入书名:");
String title = scanner.nextLine();
System.out.print("请输入出版社:");
String publisher = scanner.nextLine();
System.out.print("请输入定价:");
double price = scanner.nextDouble();
Book book = new Book(bookNumber, authorName, title, publisher, price);
bookList.add(book);
System.out.println("添加成功!");
}
public void findBook() {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入要查找的书号:");
int bookNumber = scanner.nextInt();
for (Book book : bookList) {
if (book.getBookNumber() == bookNumber) {
System.out.println("书号\t作者姓名\t标题\t出版社\t定价");
System.out.println(book.getBookNumber() + "\t" + book.getAuthorName() + "\t" + book.getTitle() + "\t" + book.getPublisher() + "\t" + book.getPrice());
return;
}
}
System.out.println("没有找到该书!");
}
public void deleteBook() {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入要删除的书号:");
int bookNumber = scanner.nextInt();
for (Book book : bookList) {
if (book.getBookNumber() == bookNumber) {
bookList.remove(book);
System.out.println("删除成功!");
return;
}
}
System.out.println("没有找到该书!");
}
public void saveToFile() {
try {
ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream("book.dat"));
outputStream.writeObject(bookList);
outputStream.close();
System.out.println("保存成功!");
} catch (IOException e) {
System.out.println("保存失败:" + e.getMessage());
}
}
public void loadFromFile() {
try {
ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream("book.dat"));
bookList = (List<Book>) inputStream.readObject();
inputStream.close();
System.out.println("加载成功!");
} catch (IOException | ClassNotFoundException e) {
System.out.println("加载失败:" + e.getMessage());
}
}
}
```
最后,我们需要定义一个Main类,该类包含以下方法:
1. 主菜单:mainMenu()
2. 选择操作:selectOperation()
代码如下:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
BookManager bookManager = new BookManager();
bookManager.loadFromFile(); // 从文件中加载旧数据
mainMenu(bookManager); // 显示主菜单
}
public static void mainMenu(BookManager bookManager) {
Scanner scanner = new Scanner(System.in);
System.out.println("欢迎使用图书管理系统!");
while (true) {
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("0. 离开系统");
int choice = scanner.nextInt();
switch (choice) {
case 1:
bookManager.printBookList();
break;
case 2:
bookManager.addBook();
break;
case 3:
bookManager.findBook();
break;
case 4:
bookManager.deleteBook();
break;
case 5:
bookManager.saveToFile();
break;
case 6:
bookManager.loadFromFile();
break;
case 0:
bookManager.saveToFile(); // 保存数据到文件中
System.out.println("Goodbye!");
System.exit(0);
default:
System.out.println("无效的选择,请重新输入!");
}
}
}
}
```
现在,我们已经完成了一个基本的命令行图书管理系统的Java应用程序。您可以根据自己的需求进行修改和扩展。