Java圖書(shū)購(gòu)買訂單系統(tǒng)的簡(jiǎn)單實(shí)現(xiàn)(ArrayList集合框架的應(yīng)用)

實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的圖書(shū)購(gòu)買訂單系統(tǒng)
主要類為:
Admin類:
購(gòu)買方法:通過(guò)對(duì)預(yù)設(shè)的圖書(shū)列表進(jìn)行遍歷。如果輸入的購(gòu)買圖書(shū)編號(hào)與集合中的某個(gè)元素對(duì)象的圖書(shū)編號(hào)相同,且此元素對(duì)象的庫(kù)存大于購(gòu)買數(shù)忙上,購(gòu)買數(shù)大于0:則在order對(duì)象的items屬性列表中钱豁,新建一個(gè)OrderItem類型元素對(duì)象窥妇,將相對(duì)應(yīng)的圖書(shū)名稱恨统、價(jià)格纷纫、購(gòu)買數(shù)量作為其屬性枕扫,然后將book集合相應(yīng)對(duì)象的庫(kù)存減去購(gòu)買數(shù)量。如果輸入的購(gòu)買數(shù)量大于庫(kù)存:則輸出庫(kù)存不足辱魁。然后進(jìn)行循環(huán)調(diào)用自身烟瞧,或調(diào)用訂單方法。
訂單方法:對(duì)訂單對(duì)象中的items集合屬性進(jìn)行判斷染簇,是否為空参滴。不為空則遍歷items集合屬性,輸出items集合中元素對(duì)象的屬性剖笙,匯總購(gòu)買總額卵洗,打印訂單。
訂單Order類:
屬性:訂單號(hào)(orderId)弥咪、訂單總額(total)过蹂、訂單日期(date)、訂單項(xiàng)列表(items)
其中訂單號(hào)(orderId)為隨機(jī)數(shù)與字符串拼接聚至,訂單項(xiàng)列表(items)為ArrayList<OrderItem>數(shù)據(jù)類型
圖書(shū)訂單項(xiàng)OrderItem類:
屬性:圖書(shū)名稱(bookName)酷勺、圖書(shū)單價(jià)(price)、購(gòu)買數(shù)量(num)
圖書(shū)B(niǎo)ook類:
屬性:圖書(shū)編號(hào)(bookId)扳躬、圖書(shū)名稱(bookName)脆诉、圖書(shū)單價(jià)(price)、庫(kù)存數(shù)量(storage)

import java.util.*;

/**
 * 主類測(cè)試
 * @author 萬(wàn)星明
 * @version 1.0
 * @time
 */
public class Admin {
    //生成全局Scanner對(duì)象sc贷币,方便輸入
    static Scanner sc = new Scanner(System.in);
    /**
     * @Admin主類的主方法
     * @param args
     */
    public static void main(String[] args) {
        //創(chuàng)建一個(gè)訂單對(duì)象order
        Order order = new Order();
        //創(chuàng)建一個(gè)自定義Book泛型的ArrayList集合book
        ArrayList<Book> book = new ArrayList<Book>();
        //創(chuàng)建book集合中的元素對(duì)象
        book.add(new Book("1","java教程",30.6,30));
        book.add(new Book("2","jsp 指南",42.1,40));
        book.add(new Book("3","SSH 架構(gòu)",47.3,15));

        System.out.println("=========圖書(shū)列表=========");
        System.out.println("圖書(shū)列表===圖書(shū)名稱==單價(jià)==庫(kù)存");
        //對(duì)集合book進(jìn)行遍歷击胜,輸出其元素對(duì)象的屬性
        for (Book book2 : book) {
            System.out.println(book2.getBookID()+"--------"+book2.getBookName()+"--"+book2.getPrice()+"--"+book2.getStorage());     
        }
        //調(diào)用buy方法,傳入order對(duì)象以及book集合
        buy(order,book);
    }
    /**
     * @buy方法役纹,提供購(gòu)買處理
     * @param order
     * @param book
     */
    public static void buy(Order order,ArrayList<Book> book) {
            System.out.println("請(qǐng)輸入購(gòu)買圖書(shū)編號(hào):");
            String bookID = sc.next();
            System.out.println("請(qǐng)輸入購(gòu)買該圖書(shū)數(shù)量:");
            int num = sc.nextInt();
            //對(duì)傳入的book集合進(jìn)行遍歷
            for(int i=0;i<book.size();i++) {
                //如果輸入的圖書(shū)編號(hào)與集合中的某個(gè)元素對(duì)象的圖書(shū)編號(hào)相同
                if(bookID.equals(book.get(i).getBookID())) {
                    //且此元素對(duì)象的庫(kù)存大于購(gòu)買數(shù)偶摔,購(gòu)買數(shù)大于0
                    if(book.get(i).getStorage()>=num && num>0) {
                        //則在order對(duì)象的items屬性列表中,新建一個(gè)OrderItem類型元素對(duì)象促脉,將相對(duì)應(yīng)的圖書(shū)名稱辰斋、價(jià)格、購(gòu)買數(shù)量作為其屬性
                        order.items.add(new OrderItem(book.get(i).getBookName(),book.get(i).getPrice(),num));
                        //將book集合相應(yīng)對(duì)象的庫(kù)存減去購(gòu)買數(shù)量
                        book.get(i).setStorage(book.get(i).getStorage()-num);
                    }else if(num>book.get(i).getStorage()){
                        //如果輸入的購(gòu)買數(shù)量大于庫(kù)存瘸味,則輸出庫(kù)存不足
                        System.out.println("庫(kù)存不足");
                        break;
                    }else {
                        //否則無(wú)消費(fèi)
                        System.out.println("無(wú)消費(fèi)宫仗!");
                    }
                }
            }

            System.out.println("是否繼續(xù)購(gòu)買!y/n:");
            String anwser = sc.next();
            //如果判斷是否繼續(xù)購(gòu)買
            if(anwser.equalsIgnoreCase("y")) {
                //是旁仿,則調(diào)用buy自身
                buy(order,book);
            }else {
                //否藕夫,調(diào)用order訂單方法
                order(order,book);
            }

    }
    /**
     * @order方法,提供打印訂單處理
     * @param order
     * @param book
     */
    public static void order(Order order,ArrayList<Book> book) {
        System.out.println("          圖書(shū)訂單                     ");
        System.out.println("圖書(shū)訂單號(hào):"+order.orderID);
        System.out.println("圖書(shū)名稱          購(gòu)買數(shù)量       圖書(shū)單價(jià)");
        System.out.println("--------------------------");
        //對(duì)order對(duì)象中的items集合屬性進(jìn)行判斷,是否為空
        if(order.items.isEmpty()) {
            //為空則
            System.out.println("無(wú)任何消費(fèi)汁胆!");
        }else {
            //不為空則遍歷items集合屬性
            for (OrderItem M : order.items) {
                //輸出items集合中元素對(duì)象的屬性
                System.out.println(M.getBookName()+"           "+M.getNum()+"       "+M.getPrice());
                //匯總購(gòu)買總額
                order.total +=M.getNum()*M.getPrice();
            }
        }

        System.out.println("--------------------------");
        System.out.println("訂單總額:                          "+order.total);
        System.out.println("日期:"+order.date);
    }
}

---------------------------------------------------------------------------------------------------
import java.util.ArrayList;
import java.util.Date;
import java.util.Random;

/**
 * 訂單類
 * @author 萬(wàn)星明
 * @version 1.0
 * @time
 */
public class Order {
    /**
     * 訂單號(hào)(orderId)梭姓、訂單總額(total)、訂單日期(date)嫩码、訂單項(xiàng)列表(items)
     */
    //創(chuàng)建一個(gè)隨機(jī)數(shù)器
    Random r = new Random();
    //隨機(jī)一個(gè)四位數(shù)的整數(shù)型值,并將其轉(zhuǎn)為字符串罪既,與10086連接起來(lái)铸题,賦值給訂單號(hào)orderID屬性
    public String orderID = "10086"+String.valueOf(r.nextInt(8999)+1000);
    double total;
    Date date = new Date();
    //這是一個(gè)集合列表屬性
    ArrayList<OrderItem> items = new ArrayList<OrderItem>();

    public double getTotal() {
        return total;
    }
    public void setTotal(double total) {
        this.total = total;
    }
    public Date getDate() {
        return date;
    }
    public void setDate(Date date) {
        this.date = date;
    }

    public ArrayList<OrderItem> getItems() {
        return items;
    }
    public void setItems(ArrayList<OrderItem> items) {
        this.items = items;
    }

}

---------------------------------------------------------------------------------------------------
/**
 * 圖書(shū)訂單項(xiàng)類
 * @author 萬(wàn)星明
 * @version 1.0
 * @time
 */
public class OrderItem {
    /**
     * 圖書(shū)名稱(bookName)、圖書(shū)單價(jià)(price)琢感、購(gòu)買數(shù)量(num)
     */
    private String bookName;
    private double price;
    private int num;

    public OrderItem() {
    }

    public OrderItem(String bookName, double price, int num) {
        super();
        this.bookName = bookName;
        this.price = price;
        this.num = num;
    }

    public int getNum() {
        return num;
    }
    public void setNum(int num) {
        this.num = num;
    }

    public String getBookName() {
        return bookName;
    }

    public void setBookName(String bookName) {
        this.bookName = bookName;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

}

---------------------------------------------------------------------------------------------------
/**
 * 圖書(shū)類
 * @author 萬(wàn)星明
 * @version 1.0
 * @time
 */
public class Book {
    /**
     * 圖書(shū)編號(hào)(bookId)丢间、圖書(shū)名稱(bookName)、圖書(shū)單價(jià)(price)驹针、庫(kù)存數(shù)量(storage)
     */
    private String bookID;
    private String bookName;
    private double price;
    private int storage;

    public Book() { 
    }
    public Book(String bookID, String bookName, double price, int storage) {
        super();
        this.bookID = bookID;
        this.bookName = bookName;
        this.price = price;
        this.storage = storage;
    }
    public String getBookID() {
        return bookID;
    }
    public void setBookID(String bookID) {
        this.bookID = bookID;
    }
    public String getBookName() {
        return bookName;
    }
    public void setBookName(String bookName) {
        this.bookName = bookName;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double price) {
        this.price = price;
    }
    public int getStorage() {
        return storage;
    }
    public void setStorage(int storage) {
        this.storage = storage;
    }

}

image.gif
image.gif

?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末烘挫,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子柬甥,更是在濱河造成了極大的恐慌饮六,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件苛蒲,死亡現(xiàn)場(chǎng)離奇詭異卤橄,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)臂外,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門窟扑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人漏健,你說(shuō)我怎么就攤上這事嚎货。” “怎么了蔫浆?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵殖属,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我克懊,道長(zhǎng)忱辅,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任谭溉,我火速辦了婚禮墙懂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘扮念。我一直安慰自己损搬,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著巧勤,像睡著了一般嵌灰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上颅悉,一...
    開(kāi)封第一講書(shū)人閱讀 49,784評(píng)論 1 290
  • 那天沽瞭,我揣著相機(jī)與錄音,去河邊找鬼剩瓶。 笑死驹溃,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的延曙。 我是一名探鬼主播豌鹤,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼枝缔!你這毒婦竟也來(lái)了布疙?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤愿卸,失蹤者是張志新(化名)和其女友劉穎灵临,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體擦酌,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡俱诸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了赊舶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片睁搭。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖笼平,靈堂內(nèi)的尸體忽然破棺而出园骆,到底是詐尸還是另有隱情,我是刑警寧澤寓调,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布锌唾,位于F島的核電站,受9級(jí)特大地震影響夺英,放射性物質(zhì)發(fā)生泄漏晌涕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一痛悯、第九天 我趴在偏房一處隱蔽的房頂上張望余黎。 院中可真熱鬧,春花似錦载萌、人聲如沸惧财。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)垮衷。三九已至厅翔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間搀突,已是汗流浹背刀闷。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留仰迁,地道東北人涩赢。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像轩勘,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子怯邪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348