Java arraylist图书_Java图书购买订单系统的简单实现(ArrayList集合框架的应用)

本文介绍了一个使用Java ArrayList实现的图书购买订单系统。系统包括Admin类、Order类、OrderItem类和Book类,支持用户输入购买图书编号和数量,根据库存情况进行购买,并能打印订单详情。
摘要由CSDN通过智能技术生成

实现了一个简单的图书购买订单系统

主要类为:

Admin类:

购买方法:通过对预设的图书列表进行遍历。如果输入的购买图书编号与集合中的某个元素对象的图书编号相同,且此元素对象的库存大于购买数,购买数大于0:则在order对象的items属性列表中,新建一个OrderItem类型元素对象,将相对应的图书名称、价格、购买数量作为其属性,然后将book集合相应对象的库存减去购买数量。如果输入的购买数量大于库存:则输出库存不足。然后进行循环调用自身,或调用订单方法。

订单方法:对订单对象中的items集合属性进行判断,是否为空。不为空则遍历items集合属性,输出items集合中元素对象的属性,汇总购买总额,打印订单。

订单Order类:

属性:订单号(orderId)、订单总额(total)、订单日期(date)、订单项列表(items)

其中订单号(orderId)为随机数与字符串拼接,订单项列表(items)为ArrayList数据类型

图书订单项OrderItem类:

属性:图书名称(bookName)、图书单价(price)、购买数量(num)

图书Book类:

属性:图书编号(bookId)、图书名称(bookName)、图书单价(price)、库存数量(storage)

import java.util.*;

/**

* 主类测试

* @author 万星明

* @version 1.0

* @time

*/

public class Admin {

//生成全局Scanner对象sc,方便输入

static Scanner sc = new Scanner(System.in);

/**

* @Admin主类的主方法

* @param args

*/

public static void main(String[] args) {

//创建一个订单对象order

Order order = new Order();

//创建一个自定义Book泛型的ArrayList集合book

ArrayList book = new ArrayList();

//创建book集合中的元素对象

book.add(new Book("1","java教程",30.6,30));

book.add(new Book("2","jsp 指南",42.1,40));

book.add(new Book("3","SSH 架构",47.3,15));

System.out.println("=========图书列表=========");

System.out.println("图书列表===图书名称==单价==库存");

//对集合book进行遍历,输出其元素对象的属性

for (Book book2 : book) {

System.out.println(book2.getBookID()+"--------"+book2.getBookName()+"--"+book2.getPrice()+"--"+book2.getStorage());

}

//调用buy方法,传入order对象以及book集合

buy(order,book);

}

/**

* @buy方法,提供购买处理

* @param order

* @param book

*/

public static void buy(Order order,ArrayList book) {

System.out.println("请输入购买图书编号:");

String bookID = sc.next();

System.out.println("请输入购买该图书数量:");

int num = sc.nextInt();

//对传入的book集合进行遍历

for(int i=0;i

//如果输入的图书编号与集合中的某个元素对象的图书编号相同

if(bookID.equals(book.get(i).getBookID())) {

//且此元素对象的库存大于购买数,购买数大于0

if(book.get(i).getStorage()>=num && num>0) {

//则在order对象的items属性列表中,新建一个OrderItem类型元素对象,将相对应的图书名称、价格、购买数量作为其属性

order.items.add(new OrderItem(book.get(i).getBookName(),book.get(i).getPrice(),num));

//将book集合相应对象的库存减去购买数量

book.get(i).setStorage(book.get(i).getStorage()-num);

}else if(num>book.get(i).getStorage()){

//如果输入的购买数量大于库存,则输出库存不足

System.out.println("库存不足");

break;

}else {

//否则无消费

System.out.println("无消费!");

}

}

}

System.out.println("是否继续购买!y/n:");

String anwser = sc.next();

//如果判断是否继续购买

if(anwser.equalsIgnoreCase("y")) {

//是,则调用buy自身

buy(order,book);

}else {

//否,调用order订单方法

order(order,book);

}

}

/**

* @order方法,提供打印订单处理

* @param order

* @param book

*/

public static void order(Order order,ArrayList book) {

System.out.println(" 图书订单 ");

System.out.println("图书订单号:"+order.orderID);

System.out.println("图书名称 购买数量 图书单价");

System.out.println("--------------------------");

//对order对象中的items集合属性进行判断,是否为空

if(order.items.isEmpty()) {

//为空则

System.out.println("无任何消费!");

}else {

//不为空则遍历items集合属性

for (OrderItem M : order.items) {

//输出items集合中元素对象的属性

System.out.println(M.getBookName()+" "+M.getNum()+" "+M.getPrice());

//汇总购买总额

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 万星明

* @version 1.0

* @time

*/

public class Order {

/**

* 订单号(orderId)、订单总额(total)、订单日期(date)、订单项列表(items)

*/

//创建一个随机数器

Random r = new Random();

//随机一个四位数的整数型值,并将其转为字符串,与10086连接起来,赋值给订单号orderID属性

public String orderID = "10086"+String.valueOf(r.nextInt(8999)+1000);

double total;

Date date = new Date();

//这是一个集合列表属性

ArrayList items = new ArrayList();

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 getItems() {

return items;

}

public void setItems(ArrayList items) {

this.items = items;

}

}

---------------------------------------------------------------------------------------------------

/**

* 图书订单项类

* @author 万星明

* @version 1.0

* @time

*/

public class OrderItem {

/**

* 图书名称(bookName)、图书单价(price)、购买数量(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;

}

}

---------------------------------------------------------------------------------------------------

/**

* 图书类

* @author 万星明

* @version 1.0

* @time

*/

public class Book {

/**

* 图书编号(bookId)、图书名称(bookName)、图书单价(price)、库存数量(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;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值