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
|
||||
// - 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)
|
||||
@@ -42,5 +57,8 @@ public class Main {
|
||||
System.out.println("=== Order file processed");
|
||||
reportGenerator.saveReport();
|
||||
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
|
||||
// - skip the line and continue processing the next line
|
||||
// 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()
|
||||
@@ -79,5 +123,36 @@ public class ReportGenerator {
|
||||
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