1、题目
编写一个Java程序,模拟顾客去书店选书、结算和买书的过程。
界面效果:
输出效果:
...
欢迎来到汉唐书城....
图书列表
图书编号 图书名称 图书价格 库存数量
------------------------------------------------------------
1 Java教程 30.6 30
2 JSP指南 42.1 40
3 SSM架构 47.3 15
------------------------------------------------------------
请输入图书编号选择图书:
1
书店管理员已经找到了《Java教程》的书。
书店管理员已经找到了《30.6》的书价格。
请输入购买图书的数量:
1
请继续购买图书...
请输入图书编号选择图书:
2
书店管理员已经找到了《JSP指南》的书。
书店管理员已经找到了《42.1》的书价格。
请输入购买图书的数量:
2
请继续购买图书...
请输入图书编号选择图书:
3
书店管理员已经找到了《SSM架构》的书。
书店管理员已经找到了《47.3》的书价格。
请输入购买图书的数量:
3
请继续购买图书...
您已经买了3种书
图书订单
图书订单编号:0001
图书名称 购买数量 图书单价
------------------------------------------------------------
Java教程 1 30.6
JSP指南 2 42.1
SSM架构 3 47.3
------------------------------------------------------------
订单总额:256.7
Process finished with exit code 0
2、代码示例
图书:
public class Book {
private String bookId;
private String bookName;
private Double price;
private int storage;
public Book(){
}
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;
}
@Override
public String toString() {
return "Book{" +
"bookId='" + bookId + '\'' +
", bookName='" + bookName + '\'' +
", price=" + price +
", storage=" + storage +
'}';
}
}
订单:
import java.util.Date;
//订单
public class Order {
private String orderId;
private Double total;
private Date date;
private OrderItem[] items;
public Order(){
//限制只能买三本书
this.items = new OrderItem[3];
this.total = 0.0;
}
//显示订单明细
public void showDetail(){
System.out.println("图书订单");
System.out.println("图书订单编号:" + this.orderId);
System.out.println("图书名称\t购买数量\t图书单价");
System.out.println("------------------------------------------------------------");
for (OrderItem orderItem : items) {
System.out.println(orderItem.getBookName() + "\t\t" + orderItem.getNum() + "\t\t" + orderItem.getPrice());
}
System.out.println("------------------------------------------------------------");
}
//计算总价格
public void calcTotal(){
for (OrderItem orderItem : items) {
//System.out.println( orderItem );
this.total += orderItem.getNum() * orderItem.getPrice();
}
System.out.println("订单总额:" + this.total);
}
public String getOrderId() {
return orderId;
}
public void setOrderId(String orderId) {
this.orderId = orderId;
}
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 OrderItem[] getItems() {
return items;
}
public void setItems(OrderItem[] items) {
this.items = items;
}
}
订单条目:
//订单项目
public class OrderItem {
private String bookName;
private double price;
private int num;
public OrderItem(){
}
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 getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
@Override
public String toString() {
return "OrderItem{" +
"bookName='" + bookName + '\'' +
", price=" + price +
", num=" + num +
'}';
}
}
书店:
//书店
public class Shop {
//书架
private Book[] books;
public Shop(){
Book book1 = new Book();
book1.setBookId("1");
book1.setBookName("Java教程");
book1.setPrice(30.6);
book1.setStorage(30);
Book book2 = new Book();
book2.setBookId("2");
book2.setBookName("JSP指南");
book2.setPrice(42.1);
book2.setStorage(40);
Book book3 = new Book();
book3.setBookId("3");
book3.setBookName("SSM架构");
book3.setPrice(47.3);
book3.setStorage(15);
this.books = new Book[3];
books[0] = book1;
books[1] = book2;
books[2] = book3;
}
//显示书店的书
public void show(){
System.out.println("欢迎来到西安汉唐书城....");
System.out.println("图书列表");
System.out.println("图书编号\t\t\t图书名称\t\t\t图书价格\t\t\t库存数量");
System.out.println("------------------------------------------------------------");
for (Book book : books) {
System.out.println( book.getBookId() + "\t\t\t\t" + book.getBookName() + "\t\t\t" + book.getPrice() + "\t\t\t" + book.getStorage() );
}
System.out.println("------------------------------------------------------------");
}
//根据图书编号查询书名
public String findBookName(String bookId){
String bookName = "";
for (Book book : books) {
if (book.getBookId().equals(bookId)){
bookName = book.getBookName();
break;
}
}
System.out.println("书店管理员已经找到了《" + bookName + "》的书。");
return bookName;
}
//根据图书编号查询书名
public Double findBookPrice(String bookId){
Double price = 0.0;
for (Book book : books) {
if (book.getBookId().equals(bookId)){
price = book.getPrice();
break;
}
}
System.out.println("书店管理员已经找到了《" + price + "》的书价格。");
return price;
}
}
购买场景:
import java.util.Date;
import java.util.Scanner;
public class Client {
public static void main(String[] args) {
//扫描器
Scanner scanner = new Scanner(System.in);
//书店
Shop shop = new Shop();
shop.show();
//买书
Order order = new Order();
order.setOrderId("0001");
order.setDate( new Date() );
for (int i = 0; i < order.getItems().length; i++) {
//在每次购买的过程中产生一个订单条目对象
OrderItem orderItem = new OrderItem();
//书名
System.out.println("请输入图书编号选择图书:");
String bookId = scanner.next();
//根据图书编号查询书名
orderItem.setBookName(shop.findBookName(bookId));
//单价
orderItem.setPrice(shop.findBookPrice( bookId ) );
//数量
System.out.println("请输入购买图书的数量:");
int num = 0;
num = scanner.nextInt();
orderItem.setNum(num);
order.getItems()[i] = orderItem;
System.out.println("请继续购买图书...");
}
System.out.println( "您已经买了" + order.getItems().length + "种书");
//结算
order.showDetail();
order.calcTotal();
}
}