Java超詳細(xì)教你寫一個(gè)網(wǎng)絡(luò)購書系統(tǒng)案例
一、購書系統(tǒng)
1.前言
伴隨著互聯(lián)網(wǎng)的飛速發(fā)展,網(wǎng)絡(luò)購書系統(tǒng)作為電子商務(wù)的一種形式,正以其高效、低成本的優(yōu)勢逐步成為新興的經(jīng)營模式,人們已經(jīng)不再滿足互聯(lián)網(wǎng)的用途僅僅局限于信息的瀏覽和發(fā)布,更渴望著能夠充分享受互聯(lián)網(wǎng)所帶來的更多便利。網(wǎng)絡(luò)購書系統(tǒng)正適應(yīng)了當(dāng)今社會的快節(jié)奏生活,使更多顧客可以足不出戶就能方便快捷地購買自己喜歡的圖書。
2.功能介紹
使用Java語言編寫一個(gè)基于控制臺的購書系統(tǒng),實(shí)現(xiàn)購書功能。輸出所有圖書的信息:每本書的編號、書名、單價(jià)、庫存。
在顧客購買書時(shí),根據(jù)提示輸入圖書編號來選購需要的書,并根據(jù)提示輸入購買書的數(shù)量。 購買完畢后輸出顧客的訂單信息,包括:訂單號、訂單明細(xì)、訂單總額。
3.分析
- 需要?jiǎng)?chuàng)建三個(gè)實(shí)體類:圖書類、訂單項(xiàng)類、訂單類。
- 由于購買圖書時(shí),需要選擇圖書的數(shù)量,所以需要在訂單項(xiàng)類里定義獲取圖書對象以及圖書數(shù)量的方法。
- 由于需要指定訂單項(xiàng)以及獲取訂單的訂單列表、訂單號、訂單總額等信息,所以需要有訂單列表、訂單號、訂單總額指定訂單項(xiàng)等方法。
二、圖書類(Book)
1.類名及屬性
- 圖書編號(id)
- 圖書名稱(name)
- 圖書單價(jià)(price)
- 庫存數(shù)量(storage)
2.代碼示例
/* 定義圖書類 */ public class Book { private int id; private String name; private double price; private int stock; //無參構(gòu)造 public Book() { } //帶四個(gè)參數(shù)的構(gòu)造 public Book(int id, String name, double price, int stock) { this.id = id; this.name = name; this.price = price; this.stock = stock; } public int getId() { return id; } public void setId(int id) { this.id = id; } 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; } public int getStock() { return stock; } public void setStock(int stock) { this.stock = stock; } }
三、訂單項(xiàng)類(OrderItem)
1.類名及屬性
- 圖書(book)
- 購買數(shù)量(num)
2.代碼示例
/* 定義訂單項(xiàng)類 */ public class OrderItem { private Book book; private int num; public OrderItem() { } public OrderItem(Book book, int num) { this.book = book; this.num = num; } public Book getBook() { return book; } public void setBook(Book book) { this.book = book; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } }
四、訂單類(Order)
1.類名及屬性
- 訂單號(orderID)
- 訂單總額(total)
- 訂單項(xiàng)列表(items)
2.代碼示例
/* 訂單類 */ public class Order { private String orderID; private OrderItem[] items = new OrderItem[3]; private double totalMoney; public Order() { } public Order(String orderID) { this.orderID = orderID; } public String getOrderID() { return orderID; } public void setOrderID(String orderID) { this.orderID = orderID; } public OrderItem[] getItems() { return items; } public void setItems(int i,OrderItem item) { items[i]=item; } public double getTotalMoney() { for (int i = 0; i < items.length; i++) { totalMoney += items[i].getNum()*items[i].getBook().getPrice(); } return totalMoney; } }
五、測試類(Test)
1.編寫打印圖書信息的方法
/* 打印圖書信息的方法 */ private static void printBooks(Book[] books) { books[0]=new Book(1,"Java2實(shí)用教程",10,20); books[1]=new Book(2,"計(jì)算機(jī)網(wǎng)絡(luò)原理",20,20); books[2]=new Book(3,"概率論數(shù)理統(tǒng)計(jì)",30,20); System.out.println("圖書編號\t圖書名稱\t\t\t圖書單價(jià)\t圖書庫存"); for (int i = 0; i < books.length; i++) { Book b=books[i]; System.out.println("\t"+b.getId() +"\t\t"+b.getName()+"\t\t"+b.getPrice()+"\t\t"+b.getStock()); } }
2.編寫購買圖書的方法
/* 購買圖書的方法 */ private static Order buy(Book[] books) { Order order = new Order("001"); Scanner sc=new Scanner(System.in); for (int i = 0; i < books.length; i++) { System.out.println("請輸入圖書的編號:"); int id = sc.nextInt(); System.out.println("請輸入購買的數(shù)量:"); int num = sc.nextInt(); OrderItem item = new OrderItem(books[id-1],num); order.setItems(i,item); } return order; }
3.編寫打印訂單信息方法
/* 打印訂單信息方法 */ private static void printInfo(Order order) { System.out.println("訂單編號:"+order.getOrderID()); System.out.println("圖書名稱\t\t圖書單價(jià)\t購買的數(shù)量"); OrderItem[] items = order.getItems(); for (int i = 0; i < items.length; i++) { System.out.println(items[i].getBook().getName()+"\t"+items[i].getBook().getPrice()+"\t\t"+items[i].getNum()); } System.out.println("----------------------------------"); System.out.println("總金額:"+order.getTotalMoney()); }
4.編寫main方法
public static void main(String[] args) { Book[] books = new Book[3]; //調(diào)用打印圖書信息的方法 printBooks(books); //調(diào)用購買圖書的方法 Order order = buy(books); //調(diào)用打印訂單信息方法 printInfo(order); }
六、總結(jié)
通過本實(shí)例學(xué)會分析“基于控制臺的購書系統(tǒng)”程序任務(wù)實(shí)現(xiàn)的邏輯思路,掌握并理解面向?qū)ο蟮某绦蛟O(shè)計(jì),包和訪問控制修飾符的使用。?
到此這篇關(guān)于Java超詳細(xì)教你寫一個(gè)購書系統(tǒng)案例的文章就介紹到這了,更多相關(guān)Java 購書系統(tǒng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何對quartz定時(shí)任務(wù)設(shè)置結(jié)束時(shí)間
這篇文章主要介紹了如何對quartz定時(shí)任務(wù)設(shè)置結(jié)束時(shí)間問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12SpringBoot預(yù)加載與懶加載實(shí)現(xiàn)方法超詳細(xì)講解
Spring一直被詬病啟動(dòng)時(shí)間慢,可Spring/SpringBoot是輕量級的框架。因?yàn)楫?dāng)Spring項(xiàng)目越來越大的時(shí)候,在啟動(dòng)時(shí)加載和初始化Bean就會變得越來越慢,很多時(shí)候我們在啟動(dòng)時(shí)并不需要加載全部的Bean,在調(diào)用時(shí)再加載就行,那這就需要預(yù)加載與懶加載的功能了2022-11-11SpringBoot中@ComponentScan注解過濾排除不加載某個(gè)類的3種方法
這篇文章主要給大家介紹了關(guān)于SpringBoot中@ComponentScan注解過濾排除不加載某個(gè)類的3種方法,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用SpringBoot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-07-07idea環(huán)境下Maven無法正常下載pom中配置的包問題
這篇文章主要介紹了idea環(huán)境下Maven無法正常下載pom中配置的包的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06MyBatis詳細(xì)執(zhí)行流程的全紀(jì)錄
這篇文章主要給大家介紹了關(guān)于MyBatis詳細(xì)執(zhí)行流程的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04解決fastjson從1.1.41升級到1.2.28后報(bào)錯(cuò)問題詳解
這篇文章主要介紹了解決fastjson從1.1.41升級到1.2.28后報(bào)錯(cuò)問題詳解,需要的朋友可以參考下2020-02-02IDEA 集成 Docker 插件一鍵部署 SpringBoot 應(yīng)用
通過本文介紹的方法,我們期望能幫助開發(fā)者更輕松地在IDEA中實(shí)現(xiàn)Spring Boot應(yīng)用的Docker化部署,為現(xiàn)代軟件開發(fā)提供更便捷的解決方案,感興趣的朋友一起看看吧2023-11-11