java2
import java.util.ArrayList;
import java.util.Scanner;
class Customer {
private String ssnNo;
private String name;
private String email;
private String address;
private String contactNumber;
private String aadhaarNumber;
private String panNumber;
private String accountNumber;
private double balance;
public Customer(String ssnNo, String name, String email, String address, String contactNumber,
String aadhaarNumber, String panNumber, String accountNumber, double initialDeposit) {
this.ssnNo = ssnNo;
this.name = name;
this.email = email;
this.address = address;
this.contactNumber = contactNumber;
this.aadhaarNumber = aadhaarNumber;
this.panNumber = panNumber;
this.accountNumber = accountNumber;
this.balance = initialDeposit;
}
public String getAccountNumber() {
return accountNumber;
}
public double getBalance() {
return balance;
}
public void withdraw(double amount) throws Exception {
if (amount > balance) {
throw new Exception("Insufficient funds");
}
balance -= amount;
}
public String toString() {
return "Customer [SSN No=" + ssnNo + ", Name=" + name + ", Email=" + email + ", Address=" + address +
", Contact Number=" + contactNumber + ", Aadhaar Number=" + aadhaarNumber + ", PAN Number=" + panNumber +
", Account Number=" + accountNumber + ", Balance=" + balance + "]";
}
}
public class userStory2 {
private static ArrayList<Customer> customers = new ArrayList<>();
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("\nCustomer Management System");
System.out.println("1. Add Customer");
System.out.println("2. Remove Customer");
System.out.println("3. Retrieve Customer by Account Number");
System.out.println("4. Get Total Number of Customers");
System.out.println("5. View All Customers");
System.out.println("6. Withdraw Amount");
System.out.println("7. Exit");
System.out.print("Choose an option: ");
int choice = scanner.nextInt();
scanner.nextLine();
try {
switch (choice) {
case 1:
addCustomer(scanner);
break;
case 2:
removeCustomer(scanner);
break;
case 3:
retrieveCustomer(scanner);
break;
case 4:
System.out.println("Total number of customers: " + customers.size());
break;
case 5:
viewAllCustomers();
break;
case 6:
withdrawAmount(scanner);
break;
case 7:
System.out.println("Exiting...");
scanner.close();
System.exit(0);
default:
System.out.println("Invalid option. Please try again.");
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
private static void addCustomer(Scanner scanner) {
try {
String ssnNo = getInput(scanner, "Enter SSN No (7 digits): ", 7, 7, true);
String name = getInput(scanner, "Enter Name (max 50 characters): ", 1, 50, false);
String email = getInput(scanner, "Enter Email: ", 1, Integer.MAX_VALUE, false); // Email length is not restricted
String address = getInput(scanner, "Enter Address (max 100 characters): ", 1, 100, false);
String contactNumber = getInput(scanner, "Enter Contact Number (max 10 characters): ", 10, 10, true);
String aadhaarNumber = getInput(scanner, "Enter Aadhaar Number (12 characters): ", 12, 12, true);
String panNumber = getInput(scanner, "Enter PAN Number (10 characters): ", 10, 10, false);
String accountNumber = getInput(scanner, "Enter Account Number (max 20 characters): ", 1, 20, false);
double initialDeposit = getDoubleInput(scanner, "Enter Initial Deposit Amount: ");
Customer customer = new Customer(ssnNo, name, email, address, contactNumber, aadhaarNumber, panNumber, accountNumber, initialDeposit);
customers.add(customer);
System.out.println("Customer added successfully!");
} catch (Exception e) {
System.out.println("Error adding customer: " + e.getMessage());
}
}
private static void removeCustomer(Scanner scanner) {
System.out.print("Enter Account Number of the customer to remove: ");
String accountNumber = scanner.nextLine();
Customer customerToRemove = null;
for (Customer customer : customers) {
if (customer.getAccountNumber().equals(accountNumber)) {
customerToRemove = customer;
break;
}
}
if (customerToRemove != null) {
customers.remove(customerToRemove);
System.out.println("Customer removed successfully!");
} else {
System.out.println("Customer with account number " + accountNumber + " not found.");
}
}
private static void retrieveCustomer(Scanner scanner) {
System.out.print("Enter Account Number of the customer to retrieve: ");
String accountNumber = scanner.nextLine();
Customer customerFound = null;
for (Customer customer : customers) {
if (customer.getAccountNumber().equals(accountNumber)) {
customerFound = customer;
break;
}
}
if (customerFound != null) {
System.out.println(customerFound);
} else {
System.out.println("Customer with account number " + accountNumber + " not found.");
}
}
private static void viewAllCustomers() {
if (customers.isEmpty()) {
System.out.println("No customers in the system.");
} else {
for (Customer customer : customers) {
System.out.println(customer);
}
}
}
private static void withdrawAmount(Scanner scanner) {
System.out.print("Enter Account Number: ");
String accountNumber = scanner.nextLine();
Customer customer = null;
for (Customer c : customers) {
if (c.getAccountNumber().equals(accountNumber)) {
customer = c;
break;
}
}
if (customer != null) {
System.out.print("Enter amount to withdraw: ");
double amount = scanner.nextDouble();
scanner.nextLine(); // consume newline
try {
customer.withdraw(amount);
System.out.println("Withdrawal successful. New balance: " + customer.getBalance());
} catch (Exception e) {
System.out.println(e.getMessage());
}
} else {
System.out.println("Customer with account number " + accountNumber + " not found.");
}
}
private static String getInput(Scanner scanner, String prompt, int minLength, int maxLength, boolean isNumeric) {
String input;
while (true) {
System.out.print(prompt);
input = scanner.nextLine();
if (input.length() >= minLength && input.length() <= maxLength) {
if (isNumeric && input.matches("\d+")) {
break;
} else if (!isNumeric) {
break;
}
}
System.out.println("Invalid input. Please try again.");
}
return input;
}
private static double getDoubleInput(Scanner scanner, String prompt) {
double input;
while (true) {
System.out.print(prompt);
if (scanner.hasNextDouble()) {
input = scanner.nextDouble();
scanner.nextLine(); // consume newline
break;
} else {
System.out.println("Invalid input. Please enter a valid number.");
scanner.nextLine(); // consume invalid input
}
}
return input;
}
}