JAVA【案例3-1】基于控制台的购书系统

【基于控制台的购书系统】

1、案例描述

伴随互联网的蓬勃发展,网络购书系统作为电子商务的一种形式,正以高效、低成本的的又是逐步成为新兴的经营模式,互联网的用途也不再局限于信息的浏览和发布,人们能够充分享受互联网带来的更多便利。网络购书系统正是适应了当今社会快节奏的生活,使顾客足不出户便可以方便、快捷、轻松地选购自己喜欢的图书。

本案列要求使用所学知识编写一个基于控制台的购书系统,实现购书功能。程序输出所有图书的信息,包括每本书的编号、书名、单价、库存。

顾客买书时,根据提示输入图书编号选购需要的书,并根据提示输入需要购书的数量。购买完毕输出顾客的订单,包括订单号、订单明细、订单总额。

2、案例目的

(1)学会分析“基于控制台的购书系统”案例的实现思路

(2)完成“基于控制台的购书系统”案例代码编写、编译及运行

(3)理解和掌握面向对象的设计程序

(4)会用类图进行面向对象设计

(5)掌握封装的实现及好处

3、运行结果

4、代码实现

Book.java

package cn.itcast.example;

public class Book {
	private int bno;
	private String bid;
	private String name;
	private double price;
	private int stocks;
	public Book(int bno, String bid, String name, double price, int stocks) {
		this.bno = bno;
		this.bid = bid;
		this.name = name;
		this.price = price;
		this.stocks = stocks;
	}
	public int getBno() {
		return bno;
	}
	public String getBid() {
		return bid;
	}
	public String getName() {
		return name;
	}
	public double getPrice() {
		return price;
	}
	public int getStocks() {
		return stocks;
	}
}

Order.java

package cn.itcast.example;

public class Order {
	private String oid;
	private OrderItem[] items;
	private double total;
	public Order(String oid) {
		this.oid = oid;
		this.items = new OrderItem[3];
	}
	public String getOid() {
		return oid;
	}
	public void setOid(String oid) {
		this.oid = oid;
	}
	public OrderItem[] getItems() {
		return items;
	}
	public void setItems(OrderItem items,int idx) {
		this.items[idx] = items;
	}
	public double getTotal() {
		calTotal();
		return total;
	}
	private void calTotal() {
		double total = 0;
		for(int i = 0; i < items.length; i++) {
			total += items[i].getNums() * items[i].getBook().getPrice();
		}
		this.total = total;
	}
	public void setTotal(double total) {
		this.total = total;
	}
}

OrderItem.java

package cn.itcast.example;

public class OrderItem {
	private Book book;
	private int nums;
	public OrderItem(Book book, int nums) {
		this.book = book;
		this.nums = nums;
	}
	public Book getBook() {
		return book;
	}
	public void setBook(Book book) {
		this.book = book;
	}
	public int getNums() {
		return nums;
	}
	public void setNums(int nums) {
		this.nums = nums;
	}
}

BookDemo.java

package cn.itcast.example;

import java.time.LocalTime;
import java.util.Iterator;
import java.util.Scanner;

public class BookDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Book[] books = new Book[3];//存储图书
		outBookInfo(books);
		//购买图书
		Order order = purchase(books);
		//打印订单
		outOrderInfo(order);
	}
	private static void outOrderInfo(Order order) {
		System.out.println("\t图书订单\t");
		System.out.println("订单编号" + order.getOid());
		System.out.println("\t图书名称\t\t购买数量\t图书单价");
		OrderItem[] items = order.getItems();
		String line = null;
		for(int i = 0; i <items.length; i++) {
			line = items[i].getBook().getName() + "\t" +items[i].getNums() + "\t" +items[i].getBook().getPrice();
			System.out.println(line);
		}
		System.out.println("订单总额:¥" + order.getTotal());
		System.out.println(" ");
	}
	private static Order purchase(Book[] books) {
		Scanner sc = new Scanner(System.in);
		OrderItem item = null;
		Order order = new Order("book-order-" + LocalTime.now().toString());
		for(int i = 0; i < books.length;i++) {
			System.out.println("请选择需要购买的图书编号:");
			int bno = sc.nextInt();
			System.out.println("购买数量:");
			int num = sc.nextInt();
			item = new OrderItem(books[bno - 1], num);
			order.setItems(item, i);
			System.out.println("请继续购买图书。");
		}
		sc.close();
		return order;
	}
	private static void outBookInfo(Book[] books) {
		books[0] = new Book(1, "b978-7-115-548", "Java基础案例编程", 19.9, 100);
		books[1] = new Book(2, "b328-3-124-431", "Python数据分析", 29.9, 56);
		books[2] = new Book(3, "b112-8-765-904", "机器学习实战(上)", 39.9, 220);
		System.out.println("\t图书列表\t");
		System.out.println("编号\t\tISBN\t\t名称\t\t价格\t\t库存");
		String line = null;
		for(int i = 0; i < books.length; i++) {
			line = books[i].getBno()+"\t"+books[i].getBid()+"\t"+books[i].getName()+"\t"+books[i].getPrice()+"\t"+books[i].getStocks();
			System.out.println(line);
		}
		System.out.println("");
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值