比較適合新手練手的一個簡易項目
直接上源碼
Book
package code; /** * @author ztr * @version 創建時間:2021年3月4日 下午8:21:40 * 類說明 */ public class Book { private String name; private String author; private double price; private String type; // 有參構造器 public Book(String name, String author, double price, String type) { super(); this.name = name; this.author = author; this.price = price; this.type = type; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public String getType() { return type; } public void setType(String type) { this.type = type; } }
Cuser
package code; import java.util.Iterator; import java.util.List; import java.util.Scanner; /** * @author ztr * @version 創建時間:2021年3月4日 下午8:32:15 類說明 */ public class Cuser extends User { Scanner sc = new Scanner(System.in); public Cuser(String name, String sex, int age) { super(name, sex, age); } // 查找書籍 @Override public void serach(List<Book> LibraryBookDate) { // Scanner sc = new Scanner(System.in); System.out.println("請輸入你想要查詢的書籍名稱"); String name = sc.next(); for (int i = 0; i < LibraryBookDate.size(); i++) { if (name != null) { if (LibraryBookDate.get(i).getName().equals(name)) { System.out.println("查詢成功"); System.out.println(LibraryBookDate.get(i).getName() + " " + LibraryBookDate.get(i).getAuthor() + " " + LibraryBookDate.get(i).getPrice() + " " + LibraryBookDate.get(i).getType()); } } else { System.out.println("沒有此書"); } } } //遍歷圖書 @Override public void display(List<Book> LibraryBookDate) { // 使用lambda表達式 Iterator<Book> it = LibraryBookDate.iterator(); while (it.hasNext()) { // 因為it.next()返回的是object類型所以需要進行類型強轉 Book book = (Book) it.next(); System.out.println(book.getName() + " " + book.getAuthor() + " " + book.getPrice() + " " + book.getType()); } } //借閱書籍 @Override public void borrow(List<Book> LibraryBookDate) { // Scanner sc = new Scanner(System.in); System.out.println("請輸入你想要借閱的書籍書名:"); String name = sc.next(); // 獲取集合的迭代器 Iterator<Book> it = LibraryBookDate.iterator(); while (it.hasNext()) { Book book = (Book) it.next(); if (book.getName().equals(name)) { System.out.println(book.getName() + " " + book.getAuthor() + " " + book.getPrice() + " " + book.getType()); UserBookDate.userdateBooks.add(book); it.remove(); } else { System.out.println("沒有該書籍"); } } } // 歸還書籍 public void revert(List<Book> LibraryBookDate){ // Scanner sc = new Scanner(System.in); System.out.println("請輸入需要歸還的書籍:"); String name = sc.next(); Iterator<Book> it = UserBookDate.userdateBooks.iterator(); while(it.hasNext()){ Book book = (Book)it.next(); if(book.getName().equals(name)){ it.remove(); LibraryBookDate.add(book); } } } }
LibraryBookDate
package code; import java.util.ArrayList; import java.util.List; /** * @author ztr * @version 創建時間:2021年3月4日 下午9:21:13 * 類說明 */ public class LibraryBookDate { static List<Book> LibraryBookDate = new ArrayList<Book>(); }
Menu
ackage code; import java.util.Scanner; /** * @author ztr * @version 創建時間:2021年3月6日 下午4:28:07 類說明 */ public class Menu { public void menuRuser() { Ruser ruser = new Ruser("ztr", "man", 20); System.out.println("1.查閱書籍" + "/n" + "2.遍歷書籍" + "/n" + "3.刪除書籍" + "4.添加書籍" + "5.返回上一層"); Scanner sc = new Scanner(System.in); int n = sc.nextInt(); switch (n) { case 1: ruser.serach(LibraryBookDate.LibraryBookDate); menuRuser(); break; case 2: ruser.display(LibraryBookDate.LibraryBookDate); menuRuser(); break; case 3: ruser.borrow(LibraryBookDate.LibraryBookDate); menuRuser(); break; case 4: ruser.insert(LibraryBookDate.LibraryBookDate); menuRuser(); break; case 5: menu(); break; default: System.out.println("請重新輸入:"); menuRuser(); break; } sc.close(); } public void menuCuser() { Cuser cuser = new Cuser("x", "man", 10); System.out.println("1.查閱書籍" + "/n" + "2.遍歷書籍" + "/n" + "3.借閱書籍" + "4.歸還書籍" + "5.返回上一層"); Scanner sc = new Scanner(System.in); int n = sc.nextInt(); switch (n) { case 1: cuser.serach(LibraryBookDate.LibraryBookDate); menuCuser(); break; case 2: cuser.display(LibraryBookDate.LibraryBookDate); menuCuser(); break; case 3: cuser.borrow(LibraryBookDate.LibraryBookDate); menuCuser(); break; case 4: cuser.revert(LibraryBookDate.LibraryBookDate); menuCuser(); break; case 5: menu(); break; default: System.out.println("請重新輸入:"); menuCuser(); break; } sc.close(); } public void menu() { System.out.println("====圖書館管理系統==="); System.out.println("1.用戶 2.管理員 3.退出"); Scanner sc = new Scanner(System.in); int n = sc.nextInt(); switch (n) { case 1: menuCuser(); break; case 2: menuRuser(); case 3: break; default: System.out.println("請重新輸入"); break; } sc.close(); } }
Operate
package code; import java.util.List; /** * @author ztr * @version 創建時間:2021年3月4日 下午8:25:01 * 類說明 */ public interface Operate { public void serach(List<Book> LibraryBookDate); public void display(List<Book> LibraryBookDate); public void borrow(List<Book> LibraryBookDate); }
Ruser
package code; import java.util.Iterator; import java.util.List; import java.util.Scanner; /** * @author ztr * @version 創建時間:2021年3月6日 下午3:56:25 類說明 */ public class Ruser extends User { Scanner sc = new Scanner(System.in); public Ruser(String name, String sex, int age) { super(name, sex, age); } // 查找書籍 @Override public void serach(List<Book> LibraryBookDate) { // Scanner sc = new Scanner(System.in); System.out.println("請輸入你想要查找的書籍書名:"); String name = sc.next(); // 獲取集合的迭代器 Iterator<Book> it = LibraryBookDate.iterator(); while (it.hasNext()) { Book book = (Book) it.next(); if (book.getName().equals(name)) { System.out.println(book.getName() + " " + book.getAuthor() + " " + book.getPrice() + " " + book.getType()); UserBookDate.userdateBooks.add(book); } else { System.out.println("沒有該書籍"); } } } // 遍歷圖書 @Override public void display(List<Book> LibraryBookDate) { // 使用lambda表達式 Iterator<Book> it = LibraryBookDate.iterator(); while (it.hasNext()) { // 因為it.next()返回的是object類型所以需要進行類型強轉 Book book = (Book) it.next(); System.out.println(book.getName() + " " + book.getAuthor() + " " + book.getPrice() + " " + book.getType()); } } // 刪除圖書 @Override public void borrow(List<Book> LibraryBookDate) { // Scanner sc = new Scanner(System.in); System.out.println("請輸入你要刪除書籍的書名:"); String name = sc.next(); // 獲取集合的迭代器 Iterator<Book> it = LibraryBookDate.iterator(); while (it.hasNext()) { Book book = (Book) it.next(); if (book.getName().equals(name)) { System.out.println(book.getName() + " " + book.getAuthor() + " " + book.getPrice() + " " + book.getType()); it.remove(); } else { System.out.println("沒有該書籍"); } } } // 添加圖書 public void insert(List<Book> libraryBookDate) { // Scanner sc = new Scanner(System.in); System.out.println("請依次輸入鎖添加書籍的信息:1.書名2.作者3價格4類型"); String name = sc.next(); String author = sc.next(); double price = sc.nextDouble(); String type = sc.next(); Book book = new Book(name, author, price, type); libraryBookDate.add(book); } }
User
package code; /** * @author ztr * @version 創建時間:2021年3月4日 下午8:24:46 * 類說明 */ public abstract class User implements Operate{ private String name; private String sex; private int age; public User(String name, String sex, int age) { super(); this.name = name; this.sex = sex; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
UserBookDate
package code; import java.util.ArrayList; import java.util.List; /** * @author ztr * @version 創建時間:2021年3月6日 下午2:07:20 * 類說明 */ public class UserBookDate { static List<Book> userdateBooks = new ArrayList<Book>(); }
Test
package code; /** * @author ztr * @version 創建時間:2021年3月6日 下午4:47:25 * 類說明 */ public class Test { public static void main(String[] args){ Menu menuone = new Menu(); menuone.menu(); } }
Fileio
package FileIo; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.Iterator; import code.Book; import code.LibraryBookDate; /** * @author ztr * @version 創建時間:2021年3月6日 下午9:29:18 類說明 */ public class Fileio { public void fileread() { // 創建字符緩沖流對象 BufferedReader br = null; try { br = new BufferedReader(new FileReader("src/book.txt")); String line; while ((line = br.readLine()) != null) { // 把讀取到的字符串數據存儲到集合中 String[] strArray = line.split(" "); String name = strArray[0]; String author = strArray[1]; double price = Double.parseDouble(strArray[2]); String type = strArray[3]; // 創建書本對象 Book book = new Book(name, author, price, type); LibraryBookDate.LibraryBookDate.add(book); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) {// 寫文件是會有IO異常 // TODO: handle exception e.printStackTrace(); } finally { // 為了保障close一定執行 if (br != null) { try { br.close(); } catch (IOException e) { e.printStackTrace(); } } } } public void filewrite() { // 創建輸出緩沖流對象 BufferedWriter bw = null; try { bw = new BufferedWriter(new FileWriter("src/book.txt")); // 遍歷集合 Iterator<Book> iterator = LibraryBookDate.LibraryBookDate .iterator(); while (iterator.hasNext()) { Book book = (Book) iterator.next(); bw.write(book.getName() + " "); bw.write(book.getAuthor() + " "); bw.write(String.valueOf(book.getPrice()) + " "); bw.write(book.getType() + " "); bw.newLine(); // 強制數據輸出 bw.flush(); } } catch (FileNotFoundException e) { // TODO: handle exception } catch (IOException e) { e.printStackTrace(); // TODO: handle exception } finally { if (bw != null) { try { bw.close(); } catch (IOException e2) { // TODO: handle exception e2.printStackTrace(); } } } } }
功能非常簡單,但可以自己進行功能的擴展