// 8:12

public class UpcReceiptCalc
{
public static void main()
{
    (new UpcReceiptCalc()).calculateSalesReceipt();
}

public void calculateSalesReceipt()
{
    readProductDB();
    processUPCs();
    assembleSalesReceipt();
    showInvalidList();
}

public void readProductDB()
{    
}
public void processUPCs()
{
    lookupProduct();
    countProduct();
    computeTotal();
}
public void assembleSalesReceipt()
{
}
public void showInvalidList()
{
}
public void lookupProduct()
{
    verifyUPC();
}
    
public void countProduct()
{
}
public void computeTotal()
{
}
public void verifyUPC()
{
}
// Data Structures
// List of products.
List<Product> productDB;
// List of products and itemcounts, in order of arrival.
List<ProductCount> purchaseList;
// List of invalid items, in order of arrival.
List<InvalidItem> invalidList;

String rawUPC;
String verifiedUPC;
String productName;
String price;
int quantityPurchased;
int subtotal;
int totalPrice;
int totalItems;

class Product
{
    String upc;
    String productName;
    int price; // in cents
}

class ProductCount
{
    Product item;
    int itemCount;
}

class InvalidItem
{
    String upc;
    String message;
}
}

// 8:25