1 圖書管理系統項目演示
圖書管理系統分析:
- 定義Book類
- 完成主界面和選擇
- 完成查詢所有圖書
- 完成添加圖書
- 完成刪除圖書
- 完成修改圖書
- 使用Debug追蹤調試
2 圖書管理系統之標準Book類
我們發現每一本書都有書名和價格,定義一個Book類表示書籍
public class Book {
private String name;
private double price;
public Book() {
}
public Book(String name, double price) {
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
3 圖書管理系統之主界面和選擇的實現
主界面的內容其實就是通過打印語句打印出來的.但是要注意因爲每個操作過後都會重新回到主界面,所以使用while(true)死循環的方式.
public class BookManager {
public static void main(String[] args) {
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("請輸入你的選擇:");
//創建鍵盤錄入對象
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
switch (num) {
case 1:
// 查看所有書籍
break;
case 2:
// 添加書籍
break;
case 3:
// 刪除書
break;
case 4:
// 修改書
break;
case 5:
// 退出
break;
default:
System.out.println("輸入錯誤,請重新輸入");
break;
}
}
}
}
4 圖書管理系統之查詢所有圖書
public class BookManager {
public static void main(String[] args) {
Map<String, ArrayList<Book>> map = new HashMap<>();
// 創建集合對象,用於存儲學生數據
ArrayList<Book> it = new ArrayList<Book>();
it.add(new Book("Java入門到精通", 99));
it.add(new Book("PHP入門到精通", 9.9));
map.put("it書籍", it);
ArrayList<Book> mz = new ArrayList<Book>();
mz.add(new Book("西遊記", 19));
mz.add(new Book("水滸傳", 29));
map.put("名著", mz)
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("請輸入你的選擇:");
//創建鍵盤錄入對象
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
switch (num) {
case 1:
// 查看所有書籍
findAllBook(map);
break;
case 2:
// 添加書籍
break;
case 3:
// 刪除書
break;
case 4:
// 修改書
break;
case 5:
// 退出
System.out.println("謝謝你的使用");
System.exit(0); // JVM退出
break;
default:
System.out.println("輸入錯誤,請重新輸入");
break;
}
}
}
private static void findAllBook(Map<String, ArrayList<Book>> map) {
System.out.println("類型\t\t書名\t價格");
Set<Map.Entry<String, ArrayList<Book>>> entries = map.entrySet();
for (Map.Entry<String, ArrayList<Book>> entry : entries) {
String key = entry.getKey();
System.out.println(key);
ArrayList<Book> value = entry.getValue();
for (Book book : value) {
System.out.println("\t\t" + book.getName() + "\t" + book.getPrice());
}
}
}
}
5 圖書管理系統之添加圖書
private static void addBook(Map<String, ArrayList<Book>> map) {
// 創建鍵盤錄入對象
Scanner sc = new Scanner(System.in);
System.out.println("請輸入要添加書籍的類型:");
String type = sc.next();
System.out.println("請輸入要添加的書名:");
String name = sc.next();
System.out.println("請輸入要添加書的價格:");
double price = sc.nextDouble();
Book book = new Book(name, price);
// 拿到書籍列表
ArrayList<Book> books = map.get(type);
if (books == null) {
// 如果書籍列表不存在創建一個書籍列表
books = new ArrayList<>();
map.put(type, books);
}
// 將書添加到集合中
books.add(book);
System.out.println("添加" + name + "成功");
}
6 圖書管理系統之刪除圖書
private static void deleteBook(Map<String, ArrayList<Book>> map) {
// 創建鍵盤錄入對象
Scanner sc = new Scanner(System.in);
System.out.println("請輸入要刪除書籍的類型:");
String type = sc.next();
System.out.println("請輸入要刪除的書名:");
String name = sc.next();
// 拿到書籍列表 : 用Map集合的
ArrayList<Book> books = map.get(type);
if (books == null) {
System.out.println("您刪除的書籍類型不存在");
return;
}
for (int i = 0; i < books.size(); i++) {
Book book = books.get(i);
if (book.getName().equals(name)) {
books.remove(i); // 找到這本書,刪除這本書
System.out.println("刪除" + name + "書籍成功");
return; // 刪除書籍後結束方法
}
}
System.out.println("沒有找到" + name + "書籍");
}
7 圖書管理系統之修改圖書
private static void editBook(Map<String, ArrayList<Book>> map) {
// 創建鍵盤錄入對象
Scanner sc = new Scanner(System.in);
System.out.println("請輸入要修改書籍的類型:");
String type = sc.next();
System.out.println("請輸入要修改的書名:");
String oldName = sc.next();
System.out.println("請輸入新的書名:");
String newName = sc.next();
System.out.println("請輸入新的價格:");
double price = sc.nextDouble();
// 拿到書籍列表
ArrayList<Book> books = map.get(type); // 根本不不像一個技術人員
if (books == null) {
System.out.println("您修改的書籍類型不存在");
return;
}
for (int i = 0; i < books.size(); i++) {
Book book = books.get(i);
if (book.getName().equals(oldName)) {
// 找到這本書,修改這本書
book.setName(newName);
book.setPrice(price);
System.out.println("修改成功");
return; // 修改書籍後結束方法
}
}
System.out.println("沒有找到" + oldName + "書籍");
}
8 Debug追蹤調試
之前我們看程序的執行流程都是通過System.out.println();但是又不能讓程序執行到某條語句後停下來,也不能看到程序具體的執行步驟.而是執行完所有的語句程序結束了。
斷點調試可以查看程序的執行流程和暫停程序.可以快速解決程序中的bug
Debug調試窗口介紹