Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d0c66deb9e | ||
|
|
54c46eea29 |
@@ -0,0 +1,11 @@
|
|||||||
|
===== PRODUCT CATALOG =====
|
||||||
|
1,Apple iPhone 16,999.99
|
||||||
|
2,Samsung Galaxy S24,899.99
|
||||||
|
3,Google Pixel 7,799.99
|
||||||
|
4,OnePlus 11,699.99
|
||||||
|
5,Sony WH-1000XM5 Headphones,349.99
|
||||||
|
6,Apple MacBook Air,1199.99
|
||||||
|
7,Dell XPS 13 Laptop,1099.99
|
||||||
|
8,Amazon Echo Dot,49.99
|
||||||
|
9,Fitbit Charge 5,129.99
|
||||||
|
===========================
|
||||||
@@ -24,6 +24,21 @@ public class Main {
|
|||||||
|
|
||||||
// NOTE
|
// NOTE
|
||||||
// - The data in products.csv is guaranteed to be valid.
|
// - The data in products.csv is guaranteed to be valid.
|
||||||
|
while (scanner.hasNextLine()) {
|
||||||
|
String line = scanner.nextLine();
|
||||||
|
|
||||||
|
String[] elements = line.split(",");
|
||||||
|
|
||||||
|
int productId = Integer.parseInt(elements[0]);
|
||||||
|
String name = elements[1];
|
||||||
|
double price = Double.parseDouble(elements[2]);
|
||||||
|
|
||||||
|
Product product = new Product(productId, name, price);
|
||||||
|
productCatalog.add(product);
|
||||||
|
}
|
||||||
|
|
||||||
|
scanner.close();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args)
|
public static void main(String[] args)
|
||||||
@@ -42,5 +57,8 @@ public class Main {
|
|||||||
System.out.println("=== Order file processed");
|
System.out.println("=== Order file processed");
|
||||||
reportGenerator.saveReport();
|
reportGenerator.saveReport();
|
||||||
System.out.println("=== Report saved as report.txt");
|
System.out.println("=== Report saved as report.txt");
|
||||||
|
//additional
|
||||||
|
reportGenerator.saveProductCatalog();
|
||||||
|
System.out.println("=== Product catalog saved");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,6 +55,50 @@ public class ReportGenerator {
|
|||||||
// - increment totalInvalidLines
|
// - increment totalInvalidLines
|
||||||
// - skip the line and continue processing the next line
|
// - skip the line and continue processing the next line
|
||||||
// 12. Close all file resources
|
// 12. Close all file resources
|
||||||
|
|
||||||
|
try(java.util.Scanner sc = new java.util.Scanner(new java.io.File(ordersFilePath))){
|
||||||
|
while(sc.hasNextLine()) {
|
||||||
|
String line = sc.nextLine();
|
||||||
|
String[] elements = line.split(",");
|
||||||
|
|
||||||
|
try {
|
||||||
|
int productId = Integer.parseInt(elements[0]);
|
||||||
|
int quantity = Integer.parseInt(elements[1]);
|
||||||
|
int discountPercent = Integer.parseInt(elements[2]);
|
||||||
|
|
||||||
|
if (productId <= 0 || quantity <= 0 || discountPercent < 0 || discountPercent > 99) {
|
||||||
|
totalInvalidLines++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
Product foundProduct = null;
|
||||||
|
|
||||||
|
for (Product pro : productList) {
|
||||||
|
if (pro.getProductID() == productId) {
|
||||||
|
foundProduct = pro;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (foundProduct == null) {
|
||||||
|
totalInvalidLines++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
double subtotal = quantity * foundProduct.getPrice();
|
||||||
|
double discountValue = subtotal * discountPercent / 100.0;
|
||||||
|
double finalCost = subtotal - discountValue;
|
||||||
|
totalQuantity += quantity;
|
||||||
|
totalFinalCost += finalCost;
|
||||||
|
totalDiscountValue += discountValue;
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
totalInvalidLines++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(java.io.IOException e) {
|
||||||
|
System.err.println("Error reading order file: " + ordersFilePath);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void saveReport()
|
public void saveReport()
|
||||||
@@ -79,5 +123,36 @@ public class ReportGenerator {
|
|||||||
Invalid Rows: 3
|
Invalid Rows: 3
|
||||||
================================
|
================================
|
||||||
*/
|
*/
|
||||||
|
String report = "========= SALES REPORT =========\n" + "Total Quantity Sold: " + totalQuantity + "\n" + "Total Final Cost: $" + String.format("%.2f", totalFinalCost) + "\n" + "Total Discount Value: $" + String.format("%.2f", totalDiscountValue) + "\n" + "Invalid Rows: " + totalInvalidLines + "\n" + "================================";
|
||||||
|
|
||||||
|
try(java.io.PrintWriter writer = new java.io.PrintWriter(new java.io.FileWriter("report.txt"))) {
|
||||||
|
writer.println(report);
|
||||||
}
|
}
|
||||||
|
catch(java.io.IOException e) {
|
||||||
|
System.err.println("Error writing report file");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
//additional
|
||||||
|
public void saveProductCatalog() {
|
||||||
|
try (java.io.PrintWriter writer =
|
||||||
|
new java.io.PrintWriter(new java.io.FileWriter("product_catalog.txt"))) {
|
||||||
|
|
||||||
|
writer.println("===== PRODUCT CATALOG =====");
|
||||||
|
|
||||||
|
for (Product product : productList) {
|
||||||
|
writer.println(
|
||||||
|
product.getProductID() + "," +
|
||||||
|
product.getProductName() + "," +
|
||||||
|
String.format("%.2f", product.getPrice())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
writer.println("===========================");
|
||||||
|
|
||||||
|
} catch (java.io.IOException e) {
|
||||||
|
System.err.println("Error writing product catalog file");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Binary file not shown.
Reference in New Issue
Block a user