一、目的(本次实验所涉及并要求掌握的知识点)
- 掌握类的继承复用技术。
- 掌握接口设计技术。
- 理解多态技术。
- 理解常用的设计模式
- 初步能进行Java面向对象的综合设计
二、题目:
设计一个图书信息维护程序:利用链表LinkedList进行图书信息列表的存储和操作,能按书号搜索、增加、删除、修改一个图书信息。
a、设计思路:
- Book 类设计: 创建一个 Book 类,包含图书的属性(书名、书号、作者、价格)和相应的 getter 和 setter 方法。
- Test 类设计: 主要的测试类 Test 中使用 LinkedList<Book> 来存储图书信息。提供添加、搜索、删除、更新等操作的方法。
- 用户交互设计: 使用 Scanner 类来获取用户输入,通过循环和条件语句来实现用户交互。用户可以选择添加图书,以及是否使用搜索、删除、更新功能。
b、主要代码结构:
- Book类:包含了图书的名称、编号、作者和价格等属性,以及对应的getter和setter方法。
- 主函数:创建了一个LinkedList链表用于存储Book对象,并添加了一些预设的图书信息。然后,使用for-each循环遍历链表,打印出每本图书的信息。
c、主要代码段的文字分析:
- Book 类的构造函数和 toString 方法: 构造函数初始化图书的属性,toString 方法用于返回图书信息的字符串表示。
- Test 类的 addBook 方法: 通过用户输入创建图书对象,并添加到 bookList 中,然后输出成功添加的信息。
- Test 类的 searchBook 方法: 用户输入要搜索的书号,遍历 bookList 查找匹配的图书,并输出找到的图书信息。
- Test 类的 deleteBook 方法: 用户输入要删除的书号,使用迭代器遍历 bookList,找到匹配的图书并删除,输出删除成功的信息。
- Test 类的 updateBook 方法: 用户输入要更新的书号和新的图书信息,遍历 bookList 找到匹配的图书并更新,输出更新成功的信息。
- 用户交互部分: 使用 Scanner 获取用户输入,通过循环和条件语句实现添加图书、选择是否使用搜索、删除、更新功能的交互。
d、输出结果截图:
图2-3
代码:
package NUM3;
import java.util.LinkedList;
class Book {
private String bookName;
private String bookNum;
private String bookAuthor;
private String bookPrice;
public Book(String bookName, String bookNum, String bookAuthor, String bookPrice) {
this.bookName = bookName;
this.bookNum = bookNum;
this.bookAuthor = bookAuthor;
this.bookPrice = bookPrice;
}
public String getBookName() {
return bookName;
}
public String getBookNum() {
return bookNum;
}
public String getBookAuthor() {
return bookAuthor;
}
public String getBookPrice() {
return bookPrice;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public void setBookNum(String bookNum) {
this.bookNum = bookNum;
}
public void setBookAuthor(String bookAuthor) {
this.bookAuthor = bookAuthor;
}
public void setBookPrice(String bookPrice) {
this.bookPrice = bookPrice;
}
}
public class Test {
public static void main(String args[]) {
LinkedList<Book> bookList = new LinkedList<Book>();
bookList.add(new Book("Java", "1", "A", "100"));
bookList.add(new Book("C++", "2", "B", "200"));
bookList.add(new Book("Python", "3", "C", "300"));
bookList.add(new Book("C", "4", "D", "400"));
bookList.add(new Book("C#", "5", "E", "500"));
bookList.add(new Book("PHP", "6", "F", "600"));
bookList.add(new Book("JavaScript", "7", "G", "700"));
bookList.add(new Book("Ruby", "8", "H", "800"));
bookList.add(new Book("Go", "9", "I", "900"));
bookList.add(new Book("Swift", "10", "J", "1000"));
for (Book book : bookList) {
System.out.println(book.getBookName() + " " + book.getBookNum() + " " + book.getBookAuthor() + " " + book.getBookPrice());
}
}
}