mainmnu
unknown
java
2 years ago
5.4 kB
7
Indexable
package assignments.assignment3;
import java.util.ArrayList;
import java.util.NoSuchElementException;
import java.util.Scanner;
import assignments.assignment3.payment.DebitPayment;
import assignments.assignment3.payment.CreditCardPayment;
import assignments.assignment3.systemCLI.AdminSystemCLI;
import assignments.assignment3.systemCLI.CustomerSystemCLI;
import assignments.assignment3.systemCLI.UserSystemCLI;
public class MainMenu {
private static final Scanner input = new Scanner(System.in); // Keep this scanner open
private final LoginManager loginManager;
private static ArrayList<Restaurant> restaurants = new ArrayList<>();
private static ArrayList<User> users = new ArrayList<>();
public MainMenu(LoginManager loginManager) {
this.loginManager = loginManager;
initUsers();
}
public static void main(String[] args) {
AdminSystemCLI adminCLI = new AdminSystemCLI(restaurants);
CustomerSystemCLI customerCLI = new CustomerSystemCLI(restaurants, null);
LoginManager loginManager = new LoginManager(adminCLI, customerCLI);
new MainMenu(loginManager).run();
}
public void run() {
try {
printHeader();
boolean exit = false;
while (!exit) {
startMenu();
try {
int choice = Integer.parseInt(input.nextLine().trim());
switch (choice) {
case 1:
login();
break;
case 2:
exit = true;
System.out.println("Terima kasih telah menggunakan DepeFood!");
break;
default:
System.out.println("Pilihan tidak valid, silakan coba lagi.");
}
} catch (NumberFormatException e) {
System.out.println("Silakan masukkan angka yang valid.");
} catch (NoSuchElementException e) {
System.out.println("No further input available.");
exit = true; // Exit if no more input is available
}
}
} finally {
input.close(); // Ensure the scanner is closed only once when all operations are done
}
}
private void login() {
System.out.println("\nSilakan Login:");
System.out.print("Nama: ");
String name = input.nextLine();
System.out.print("Nomor Telepon: ");
String phone = input.nextLine();
User user = getUser(name, phone);
if (user != null) {
System.out.println("Selamat Datang " + user.getNama() + "!");
UserSystemCLI userSystem = loginManager.getSystem(user.getRole());
if (userSystem instanceof CustomerSystemCLI) {
((CustomerSystemCLI) userSystem).setUser(user);
}
userSystem.run();
} else {
System.out.println("Pengguna tidak ditemukan atau data salah.");
}
}
private User getUser(String name, String phone) {
return users.stream()
.filter(u -> u.getNama().equalsIgnoreCase(name) && u.getNomorTelepon().equals(phone))
.findFirst()
.orElse(null);
}
private static void printHeader() {
System.out.println("\n>>=======================================<<");
System.out.println("|| ___ ___ _ ||");
System.out.println("||| . \\ ___ ___ ___ | __>___ ___ _| |||");
System.out.println("||| | |/ ._>| . \\/ ._>| _>/ . \\/ . \\/ . |||");
System.out.println("|||___/\\___.| _/\\___.|_| \\___/\\___/\\___|||");
System.out.println("|| |_| ||");
System.out.println(">>=======================================<<");
}
private void startMenu() {
System.out.println("Selamat datang di DepeFood!");
System.out.println("--------------------------------------------");
System.out.println("Pilih menu:");
System.out.println("1. Login");
System.out.println("2. Keluar");
System.out.println("--------------------------------------------");
System.out.print("Pilihan menu: ");
}
private static void initUsers() {
users.add(new User("Thomas N", "9928765403", "thomas.n@gmail.com", "P", "Customer", new DebitPayment(), 500000));
users.add(new User("Sekar Andita", "089877658190", "dita.sekar@gmail.com", "B", "Customer", new CreditCardPayment(), 2000000));
users.add(new User("Sofita Yasusa", "084789607222", "sofita.susa@gmail.com", "T", "Customer", new DebitPayment(), 750000));
users.add(new User("Dekdepe G", "080811236789", "ddp2.gampang@gmail.com", "S", "Customer", new CreditCardPayment(), 1800000));
users.add(new User("Aurora Anum", "087788129043", "a.anum@gmail.com", "U", "Customer", new DebitPayment(), 650000));
users.add(new User("Admin", "123456789", "admin@gmail.com", "-", "Admin", new CreditCardPayment(), 0));
users.add(new User("Admin Baik", "9123912308", "admin.b@gmail.com", "-", "Admin", new CreditCardPayment(), 0));
}
}
Editor is loading...
Leave a Comment