-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDriver.java
More file actions
135 lines (114 loc) · 4.91 KB
/
Driver.java
File metadata and controls
135 lines (114 loc) · 4.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
import java.util.List;
import java.util.Scanner;
public class Driver {
public static void main(String[] args) {
String fileName = "dataset/data.csv";
List<Book> books = DatasetReader.readBooksFromCSV(fileName);
if (books.isEmpty()) {
System.out.println("No books were loaded. Please check your CSV file.");
return;
}
System.out.println("Successfully loaded " + books.size() + " books from the dataset.");
BookAnalyzer analyzer = new BookAnalyzer(books);
Scanner scanner = new Scanner(System.in);
boolean running = true;
while (running) {
displayMenu();
System.out.print("Enter your choice (1-7): ");
try {
int choice = scanner.nextInt();
scanner.nextLine();
switch (choice) {
case 1:
handleTotalBooksByAuthor(scanner, analyzer);
break;
case 2:
analyzer.printAllAuthors();
break;
case 3:
handleBooksByAuthor(scanner, analyzer);
break;
case 4:
handleBooksByRating(scanner, analyzer);
break;
case 5:
handleBooksAndPricesByAuthor(scanner, analyzer);
break;
case 6:
analyzer.printDatasetSummary();
break;
case 7:
running = false;
System.out.println("Thank you for using the Book Analyzer!");
break;
default:
System.out.println("Invalid choice. Please enter a number between 1 and 7.");
}
if (running) {
System.out.println("\nPress Enter to continue...");
scanner.nextLine();
}
} catch (Exception e) {
System.out.println("Invalid input. Please enter a valid number.");
scanner.nextLine();
}
}
scanner.close();
}
private static void displayMenu() {
System.out.println("\n" + "=".repeat(50));
System.out.println(" AMAZON BESTSELLERS ANALYZER");
System.out.println("=".repeat(50));
System.out.println("1. Get total number of books by an author");
System.out.println("2. Display all authors in the dataset");
System.out.println("3. Get all books by an author");
System.out.println("4. Get books by user rating");
System.out.println("5. Get book prices by an author");
System.out.println("6. Display dataset summary");
System.out.println("7. Exit");
System.out.println("=".repeat(50));
}
private static void handleTotalBooksByAuthor(Scanner scanner, BookAnalyzer analyzer) {
System.out.print("Enter author name: ");
String authorName = scanner.nextLine().trim();
if (!authorName.isEmpty()) {
int totalBooks = analyzer.getTotalBooksByAuthor(authorName);
System.out.println("\nAuthor: " + authorName);
System.out.println("Total books: " + totalBooks);
} else {
System.out.println("Author name cannot be empty.");
}
}
private static void handleBooksByAuthor(Scanner scanner, BookAnalyzer analyzer) {
System.out.print("Enter author name: ");
String authorName = scanner.nextLine().trim();
if (!authorName.isEmpty()) {
System.out.println();
analyzer.printBooksByAuthor(authorName);
} else {
System.out.println("Author name cannot be empty.");
}
}
private static void handleBooksByRating(Scanner scanner, BookAnalyzer analyzer) {
System.out.print("Enter user rating (e.g., 4.7): ");
try {
double rating = scanner.nextDouble();
scanner.nextLine();
System.out.println();
analyzer.printBooksByRating(rating);
} catch (Exception e) {
System.out.println("Invalid rating format. Please enter a decimal number.");
scanner.nextLine();
}
}
private static void handleBooksAndPricesByAuthor(Scanner scanner, BookAnalyzer analyzer) {
System.out.print("Enter author name: ");
String authorName = scanner.nextLine().trim();
if (!authorName.isEmpty()) {
System.out.println();
analyzer.printBooksAndPricesByAuthor(authorName);
} else {
System.out.println("Author name cannot be empty.");
}
}
}