基于控制台的购书系统 顾客购买时,根据提示输入图书编号来选购需要的书及购买数的数量 购买完毕后,输出顾客的订单信息,包括订单号、订单明细、订单总额 1.图书类(Book) 图书编号 id 图书名称 name 图书单价 price 库存数量stock 2.订单项类(OrderItem) 图书 book 购买数量 num 3.订单类(Order) 订单号 orderId 订单总额 totalmoney 订单项列表 items
代码:
测试类
package base003;
/*
基于控制台的购书系统
顾客购买时,根据提示输入图书编号来选购需要的书及购买数的数量
购买完毕后,输出顾客的订单信息,包括订单号、订单明细、订单总额
1.图书类(Book)
图书编号 id
图书名称 name
图书单价 price
库存数量stock
2.订单项类(OrderItem)
图书 book
购买数量 num
3.订单类(Order)
订单号 orderId
订单总额 totalmoney
订单项列表 items
*/
import java.util.Scanner;
public class Test03 {
public static void main(String[] args) {
Book[] books = new Book[3];
//调用打印图书信息的方法
printBooks(books);
//调用购买图书的方法
Order order = buy(books);
//打印订单信息
printinfo(order);
}
private static void printinfo(Order order) {
System.out.println("订单编号:"+order.getOrderId());
//遍历订单项,输出信息
System.out.println("图书名称\t图书单价\t购买数量");
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"+items[i].getNum());
}
System.out.println("```````````````````````````````````````````");
System.out.println("总金额:"+order.getTotalmoney());
}
//购买图书方法
private static Order buy(Book[] books) {
//创建Order对象
Order order = new Order("001");
//遍历数组books,从键盘获取要购买的图书编号及购买数量
Scanner sc = new Scanner(System.in);
for(int i = 0;i < books.length;i++){
System.out.println("请输入要购买的图书编号:");
int id = sc.nextInt();
System.out.println("请输入购买的数量:");
int num = sc.nextInt();
//建立订单项对象,储存订单信息
OrderItem item = new OrderItem(books[id-1],num);
//把订单项设置到订单对象中
order.setItems(i,item);
}
return order;
//建立订单项对象,储存订单信息
//返回图书编号及购买数量
}
//打印图书信息方法
private static void printBooks(Book[] books) {
books[0] = new Book(1,"一级律师",10,20);
books[1] = new Book(2,"跨界演员",20,10);
books[2] = new Book(3,"针锋对决",15,18);
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
System.out.println("图书编号\t图书名称\t图书单价\t图书库存");
for(int i=0;i<books.length;i++){
Book b = books[i];
System.out.println(b.getId()+"\t\t"+b.getName()+"\t\t"+b.getPrice()+"\t\t"+b.getStock());
}
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
}
}
Book类
package base003;
/*
1.图书类(Book)
图书编号 id
图书名称 name
图书单价 price
库存数量stock
*/
public class Book {
private int id;
private String name;
private double price;
private int stock;
public Book() {
}
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;
}
}
Order类
package base003;
/*
3.订单类(Order)
订单号 orderId
订单总额 total
订单项列表 items
*/
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;
}
}
OrderItem类
package base003;
/*
2.订单项类(OrderItem)
图书 book
购买数量 num
*/
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;
}
}