目录
题目
伴随互联网的蓬勃发展,网络购书系统作为电子商务的一种形式,正以其高效、低成本的优势逐步成为新兴的经营模式,人们已经不再满足互联网的用途仅仅局限于信息的浏览和发布,更渴望着能够充分享受互联网所带来的更多便利。网络购书系统正适应了当今社会快节奏地生活,使顾客足不出户便可以方便快捷轻松地选购自己喜欢的图书。
本任务要求,使用所学知识编写一个基于控制台的购书系统,实现购书功能。输出所有图书的信息:包括每本书的编号、书名、单价、库存。
顾客购买书时,根据提示输入图书编号来选购需要的书,并根据提示输入购买书的的数量。
购买完毕后输出顾客的订单信息,包括:订单号、订单明细、订单总额。
分析
(1)通过任务描述可知,该系统中必须包括3个实体类,类名及属性设置如下:
1. 图书类(Book):
a) 图书编号(id)
b) 图书名称(name)
c) 图书单价(price)
d) 库存数量(storage)
2. 订单项类(OrderItem):
a) 图书(book)
b) 购买数量(num)
3. 订单类(Order):
a) 订单号(orderID)
b) 订单总额(total)
c) 订单项列表(items)
(2)由于购买图书时,需要选择图书的数量,所以需要在订单项类里定义获取图书对象以及图书数量的方法。
(3)由于需要指定订单项以及获取订单的订单列表、订单号、订单总额等信息,所以需要有订单列表、订单号、订单总额指定订单项等方法。
代码
1.图书类(Book)
public class Book {
private int id;
private String name;
private double price;
private int storage;
public Book(int id,String name,double price,int storage) {
this.id=id;
this.name=name;
this.price=price;
this.storage=storage;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public double getPrice() {
return price;
}
public int getStorage() {
return storage;
}
}
2.订单项类(OrderItem)
public class OrderItem {
private Book book;
private int num;
public OrderItem(Book book,int num) {
this.book=book;
this.num=num;
}
public Book getBook() {
return book;
}
public int getNum() {
return num;
}
}
3.订单类(Order)
public class Order {
private String orderId;
private OrderItem items[];
private double total;
public Order(String orderId) {
this.orderId=orderId;
this.items=new OrderItem[3];
}
public String getOrderId() {
return orderId;
}
public OrderItem[] getItems() {
return items;
}
public double getTotal() {
calTotal();
return total;
}
public void setItem(OrderItem item,int i) {
this.items[i]=item;
}
public void calTotal() {
double total=0;
for(int i = 0; i < items.length; i++) {
total += items[i].getNum()*items[i].getBook().getPrice();
}
this.total=total;
}
}
4.Demo
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Book books[]=new Book[3];
outBooks(books);
Order order=purchase(books);
outOrder(order);
}
public static Order purchase(Book books[]) {
Order order=new Order("00001");
OrderItem item=null;
Scanner in = new Scanner(System.in);
for(int i=0;i<3;i++) {
System.out.println("请输入图书编号选择图书:");
int cid=in.nextInt();
System.out.println("请输入购买图书数量:");
int inum=in.nextInt();
item=new OrderItem(books[cid-1],inum);
order.setItem(item, i);
System.out.println("请继续购买图书。");
}
in.close();
return order;
}
public static void outOrder(Order order) {
System.out.println("\n\t图书订单");
System.out.println("图书订单号:"+order.getOrderId());
System.out.println("图书名称\t购买数量\t图书单价");
System.out.println("--------------------------------------------");
OrderItem item[]=order.getItems();
for(int i=0;i<item.length;i++) {
System.out.println(item[i].getBook().getName()+"\t"+item[i].getNum()+"\t"+item[i].getBook().getPrice());
}
System.out.println("--------------------------------------------");
System.out.println("订单总额:\t\t"+order.getTotal());
}
public static void outBooks(Book books[]) {
books[0]=new Book(1,"Java教程",30.6,30);
books[1]=new Book(2,"JSP教程",42.1,40);
books[2]=new Book(3,"SSH架构",47.3,15);
System.out.println("\t图书列表");
System.out.println("图书编号\t图书名称\t图书单价\t库存数量");
System.out.println("-------------------------------------------");
for (int i=0;i<books.length;i++) {
System.out.println(i+1+"\t"+books[i].getName()+"\t"+books[i].getPrice()+"\t"+books[i].getStorage());
}
System.out.println("-------------------------------------------");
}
}