package v2_3;
public class Item implements Comparable<Item>
{
private String number; //编号
private String name;
private double price;
private double quantity;
public Item(String number, String name, double price, double quantity) {
super();
this.number = number;
this.name = name;
this.price = price;
this.quantity = quantity;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
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 double getQuantity() {
return quantity;
}
public void setQuantity(double quantity) {
this.quantity = quantity;
}
public double getAmount() //计算小计金额
{
return price*quantity;
}
public String getDescription()
{
return "";
}
@Override
public int compareTo(Item other) {
if(price!=other.price)
{
return (int) (price - other.price);
}
return 0;
}
}
父类
package v2_3;
public class ClothItem extends Item
{
private String size;
public ClothItem(String number, String name, double price, double quantity,String size)
{
super(number, name, price, quantity);
this.size = size;
}
public String getSize() {
return size;
}
public void setSize(String size) {
this.size = size;
}
public String getDescription()
{
return "尺码:"+size;
}
}
package v2_3;
public class FruitItem extends Item
{
private String origin; //产地
public FruitItem(String number, String name, double price, double quantity, String origin)
{
super(number, name, price, quantity);
this.origin = origin;
}
public String getOrigin() {
return origin;
}
public void setOrigin(String origin) {
this.origin = origin;
}
public String getDescription()
{
return "产地:"+origin;
}
}
package v2_3;
import java.util.ArrayList;
import java.util.Arrays;
public class Receipt
{
public static int nextId = 1;
private int id;
private ArrayList<Item> itemList;
private String status;
//constructor
public Receipt()
{
id = nextId;
nextId++;
itemList = new ArrayList<Item>();
status = "unexcecuted";
}
public void addItem(Item it)
{
itemList.add(it);
}
public void removeItem(int n)
{
int i;
if(n>itemList.size() || n<=0)
System.out.println("Input error!");
else
itemList.remove(n-1);
}
private double calTotalAmount()
{
int i;
double amount = 0;
for(i=0;i<itemList.size();i++)
amount += itemList.get(i).getAmount();
return amount;
}
public void printReceipt()
{
int i;
Item[] list = new Item[itemList.size()];
itemList.toArray(list);
Arrays.sort(list);
System.out.println("Receipt No. "+id);
System.out.println("编号 名称 单价(元) 数量(公斤) 小计金额(元) 描述");
for(i=0;i<list.length;i++)
System.out.println(list[i].getNumber()+" "+list[i].getName()+" "+list[i].getPrice()+" "+list[i].getQuantity()
+" "+list[i].getAmount()+" "+list[i].getDescription());
System.out.println("Total amount: " + calTotalAmount());
System.out.println();
}
}
package v2_3;
import java.util.Scanner;
public class ReceiptTest
{
private static Item[] productInfo = new Item[5];
public static void main(String[] args)
{
productInfo[0] = new FruitItem("1","Apple",6.7,1,"天水");
productInfo[1]= new ClothItem("2","Tshirt",80,1,"XL");
productInfo[2] = new FruitItem("3","Orange",8, 1,"海南");
productInfo[3]= new FruitItem("4","Pear",10, 1,"陕西");
productInfo[4] = new ClothItem("5","skirt",150,1,"L");
Receipt myReceipt;
Scanner in = new Scanner(System.in);
String barCode;
String judge;
do
{
myReceipt = new Receipt();
System.out.println("请扫描商品添加至购物列表:");
barCode = in.next();
while(barCode.equals("E")==false)
{
for(int i=0;i<5;i++)
{
if(barCode.equals(productInfo[i].getNumber()))
{
myReceipt.addItem(productInfo[i]);
System.out.println("商品成功添加!");
break;
}
}
barCode = in.next();
}
myReceipt.printReceipt();
System.out.println();
System.out.println("继续购物吗?Y/N:");
judge = in.next();
}while(judge.equals("Y")==true);
System.out.println("购物体验结束,谢谢参与!");
in.close();
}
}
结束