使用Java实现面向对象编程》阶段测试sellbook

  • 《使用Java实现面向对象编程》阶段测试

一、语言和环境
A、实现语言
Java
B、环境要求
JDK 8.0、Eclipse
二、功能要求
开发基于控制台的购书系统。具体要求如下:
(1)输出所有图书的信息:包括每本图书的图书编号、图书名称、图书单价和库存数量。
(2)顾客购买图书:根据提示输入图书编号来购买图书,并根据提示输入购买图书数量(用户必须连续购书三次)。
(3)购书完毕后输出顾客的订单信息:包括订单号、订单明细、订单总额和订单日期。

  1. List item

系统运行界面如图-1所示。

在这里插入图片描述
图-1 系统运行界面
三、类的设计
该系统中必须包括三个类,类名及属性设置如下。
图书类(Book)
 图书编号(bookId)
 图书名称(bookName)
 图书单价(price)
 库存数量(storage)
订单项类(OrderItem)
 图书名称(bookName)
 图书单价(price)
 购买数量(num)
订单类(Order):
 订单号(orderId)
 订单总额(total)
 订单日期(date)
 订单项列表(items)
四、具体要求及推荐实现步骤
1、创建图书类,根据业务需要提供需要的setter/getter方法。
2、创建订单项类,根据业务需要提供需要的setter/getter方法。
3、创建订单类,根据业务需要提供需要的setter/getter方法。
4、创建测试类Test,实现顾客购买图书。
A、获取所有图书信息并输出:创建至少三个图书对象并输出即可。
B、顾客购买图书:顾客通过输入图书编号来购买图书,并输入购买数量。
C、输出订单信息:包括订单号、订单明细、订单总额、订单日期。

在这里插入代码片

package sellBook;

public class Book {
	private int bookId;
	private String bookName;
	private double price;
	private int srotage;
	public int getBookId() {
		return bookId;
	}
	public void setBookId(int 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 getSrotage() {
		return srotage;
	}
	public void setSrotage(int srotage) {
		this.srotage = srotage;
	}
	
}

package sellBook;

import java.util.Date;

public class Order {
	private String orderId;
	private double total;
	private Date date;
	private OrderItem[] items;
	public String getOrderId() {
		return orderId;
	}
	public void setOrderId(String string) {
		this.orderId = string;
	}
	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;
	}
	
}

package sellBook;
;

public class OrderItem {
	private String bookName;
	private double price;
	private int num;
	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;
	}
	
}
package sellBook;


import java.util.Date;
import java.util.Scanner;

public class SystemMenu {
	private Book[] books = null;
	private Scanner in = new Scanner(System.in);
	public void init() {
	/*一个初始化方法
void说明没返回值,init是方法名
()里面是参数列表。这里没有参数。
函数体自己随便写,不过函数既然起的这个名字通常情况下是
用来写一些初始化的语句的。 
	 */
	
		books = new Book[50];
		//创建图书对象,并存入数组
		Book book1 = new Book();
		book1.setBookId(1);
		book1.setBookName("Java教程");
		book1.setPrice(30.6);
		book1.setSrotage(30);
		Book book2 = new Book();
		book2.setBookId(2);
		book2.setBookName("JSP指南");
		book2.setPrice(42.1);
		book2.setSrotage(40);
		Book book3 = new Book();
		book3.setBookId(3);
		book3.setBookName("SSH架构");
		book3.setPrice(47.3);
		book3.setSrotage(15);
		//存入数组
		books[0] = book1;
		books[1] = book2;
		books[2] = book3;
	}
	//输出图书信息
	public void show() {
		//init();//不建议这种方式,这样会让程序粘连性过强,不利于扩展
		System.out.println("\t\t图书列表");
		System.out.println("图书编号\t图书名称\t图书单价\t库存数量");
		System.out.println("----------------------------------");
		//遍历显示
		for (int i = 0; i < books.length; i++) {
			if(books[i] == null) {
				break;
			}
			System.out.println(books[i].getBookId()+"\t"+books[i].getBookName()+"\t"+books[i].getPrice()+"\t"+books[i].getSrotage());
			
		}
		System.out.println("----------------------------------");
	}
	
	public void buy() {
		OrderItem[] items = new OrderItem[3];
		double total = 0;
		for (int i = 0; i < 3; i++) {
			System.out.print("请输入图书编号选择图书:");
			int id = in.nextInt();
			//通过id获取图书信息
			Book book = getBookById(id);
			System.out.print("请输入购买图书数量:");
			int num = in.nextInt();
			//累加当前金额
			total += (num * book.getPrice());
			//创建订单项
			OrderItem item = new OrderItem();
			item.setBookName(book.getBookName());
			item.setNum(num);
			item.setPrice(book.getPrice());
			//将订单项存入数组
			items[i] = item;
			if(i < 2) {
				System.out.println("请继续购买图书");
			}
		}
		//创建图书订单
		Order order = new Order();
		order.setOrderId("00001");
		//获取订单总额
		order.setTotal(total);
		//存放订单项列表
		order.setItems(items);
		order.setDate(new Date());
		//输出图书订单
		showOrder(order);
		
	}
	//显示订单
	public void showOrder(Order order) {
		System.out.println("\t\t图书订单");
		System.out.println("图书订单号:"+order.getOrderId());
		System.out.println("图书名称\t购买数量\t图书单价");
		System.out.println("-------------------------------");
		OrderItem[] items = order.getItems();
		for (int i = 0; i < items.length; i++) {
			System.out.println(items[i].getBookName()+"\t"+items[i].getNum()+"\t"+items[i].getPrice());
		}
		System.out.println("-------------------------------");
		System.out.println("订单总额:\t\t\t"+order.getTotal());
		System.out.println("日期:"+order.getDate().toString());
	}
	//通过id获取图书对象
	public Book getBookById(int id) {
		Book book = null;
		for (int i = 0; i < books.length; i++) {
			if(books[i] == null) {
				break;
			}
			if(books[i].getBookId() == id) {//编号相等,就是需要查找的书籍
				book = books[i];
				break;//找到就结束查找
			}
		}
		return book;
	}
	public void start() {
		init();
		show();
		buy();
	}
}

在这里插入代码片

package sellBook;

public class test {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	
			SystemMenu menu = new SystemMenu();
			menu.start();
		}
	

}

猜你喜欢

转载自blog.csdn.net/qq_44700535/article/details/88039216