本任务要求:使用所学知识编写一个基于控制台的购书系统,实现购书功能,输出所有图书的信息,包括每本书的编号,书名,单价,库存。
顾客购买书时,根据提示输入图书编号来选需要的书,并根据提示输入购买书的数量,
购买完成后,输出顾客的订单信息,包括订单号,订单明细,订单总额。
此案例分为四个类
Book ,Order , Orderitem,Test(注意开头字母大写)
Book类
此类有四个参数,id编号 name姓名 price价格 stock库存。
1.无参构造方法
2.有参构造方法
3.getter and setter方法。
//图书类
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;
}
//get and set 方法
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类
//订单类
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;
}
public void setOrderId(int i, OrderItem item) {
}
}
OrderItem类
//订单项类
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;
}
}
Test类
下列代码调用了三种方法来完成程序,
1.打印图书信息
2.购买方法
3.打印订单信息
import java.util.Scanner;
public class test {
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=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("请输入购买数量");
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,"java教程图书", 10,20);
books[1]=new Book(2,"HTML教程图书", 20,20);
books[2]=new Book(3,"python教程书", 30,20);
System.out.println("--------------------------------------------");
System.out.println("图书编号\t图书名称\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"+b.getPrice()+"\t\t"+b.getStock());
}
}
}
结果展示
下图没有排列整齐,(如果觉得不好看可以自己在上面输入制表符进行调节)