#include <iostream>
#include <string>
using namespace std;
class Loan {
protected:
int loanID;
double loanAmount;
double interestRate;
int loanTerm;
string borrowerName;
string loanStatus;
public:
Loan(int id, double amount, double rate, int term, string name)
: loanID(id), loanAmount(amount), interestRate(rate), loanTerm(term), borrowerName(name), loanStatus("Pending") {}
int getLoanID() const {
return loanID;
}
double getLoanAmount() const {
return loanAmount;
}
virtual void displayDetails() {
cout << "Loan ID: " << loanID << endl;
cout << "Borrower: " << borrowerName << endl;
cout << "Loan Amount: " << loanAmount << endl;
cout << "Interest Rate: " << interestRate << endl;
cout << "Loan Term: " << loanTerm << " months" << endl;
cout << "Loan Status: " << loanStatus << endl;
}
virtual void updateLoanStatus(string status) {
loanStatus = status;
}
virtual double calculatePayment() {
return loanAmount * (1 + (interestRate / 100) * loanTerm);
}
};
class PaymentSchedule : public Loan {
public:
PaymentSchedule(int id, double amount, double rate, int term, string name)
: Loan(id, amount, rate, term, name) {}
void displayDetails() override {
Loan::displayDetails();
cout << "Payment: " << calculatePayment() << endl;
}
};
class LoanManagementSystem {
private:
static const int MAX_LOANS = 100;
Loan* loans[MAX_LOANS];
int numLoans;
public:
LoanManagementSystem() : numLoans(0) {}
void addLoan(Loan* loan) {
if (numLoans < MAX_LOANS) {
loans[numLoans++] = loan;
cout << "Loan added successfully." << endl;
} else {
cout << "Loan limit reached. Cannot add more loans." << endl;
}
}
void displayLoans() {
for (int i = 0; i < numLoans; i++) {
loans[i]->displayDetails();
cout << endl;
}
}
void updateLoanStatus(int loanID, string newStatus) {
for (int i = 0; i < numLoans; i++) {
if (loans[i]->getLoanID() == loanID) {
loans[i]->updateLoanStatus(newStatus);
cout << "Loan status updated successfully." << endl;
return;
}
}
cout << "Loan not found." << endl;
}
void deleteLoan(int loanID) {
for (int i = 0; i < numLoans; i++) {
if (loans[i]->getLoanID() == loanID) {
delete loans[i];
loans[i] = loans[numLoans - 1];
numLoans--;
cout << "Loan deleted successfully." << endl;
return;
}
}
cout << "Loan not found." << endl;
}
void searchLoanByID(int loanID) {
for (int i = 0; i < numLoans; i++) {
if (loans[i]->getLoanID() == loanID) {
loans[i]->displayDetails();
return;
}
}
cout << "Loan not found." << endl;
}
void generateReports() {
double totalLoanAmount = 0.0;
double totalInterestPaid = 0.0;
cout << "Loan Reports" << endl;
cout << "============" << endl;
for (int i = 0; i < numLoans; i++) {
totalLoanAmount += loans[i]->getLoanAmount();
totalInterestPaid += loans[i]->calculatePayment() - loans[i]->getLoanAmount();
}
cout << "Total Number of Loans: " << numLoans << endl;
cout << "Total Loan Amount: " << totalLoanAmount << endl;
cout << "Total Interest Paid: " << totalInterestPaid << endl;
}
};
int main() {
LoanManagementSystem system;
while (true) {
cout << "Loan Management System" << endl;
cout << "1. Manage Loans" << endl;
cout << "2. Search Loans" << endl;
cout << "3. Reports of Loans" << endl;
cout << "4. Exit" << endl;
int choice;
cin >> choice;
switch (choice) {
case 1: {
cout << "1. Add Loans" << endl;
cout << "2. Update Loans" << endl;
cout << "3. Display Loans" << endl;
cout << "4. Delete Loans" << endl;
cout << "5. Exit" << endl;
int subChoice;
cin >> subChoice;
switch (subChoice) {
case 1: {
int id, term;
double amount, rate;
string name;
cout << "Enter Loan ID: ";
cin >> id;
cout << "Enter Borrower Name: ";
cin.ignore();
getline(cin, name);
cout << "Enter Loan Amount: ";
cin >> amount;
cout << "Enter Interest Rate: ";
cin >> rate;
cout << "Enter Loan Term (months): ";
cin >> term;
Loan* newLoan = new PaymentSchedule(id, amount, rate, term, name);
system.addLoan(newLoan);
break;
}
case 2: {
int loanID;
string newStatus;
cout << "Enter Loan ID: ";
cin >> loanID;
cout << "Enter new status: ";
cin.ignore();
getline(cin, newStatus);
system.updateLoanStatus(loanID, newStatus);
break;
}
case 3: {
system.displayLoans();
break;
}
case 4: {
int loanID;
cout << "Enter Loan ID to delete: ";
cin >> loanID;
system.deleteLoan(loanID);
break;
}
case 5:
cout << "Returning to main menu." << endl;
break;
default:
cout << "Invalid choice. Please select a valid option." << endl;
}
break;
}
case 2: {
int loanID;
cout << "Enter Loan ID to search: ";
cin >> loanID;
system.searchLoanByID(loanID);
break;
}
case 3: {
system.generateReports();
break;
}
case 4:
cout << "Exiting..." << endl;
return 0;
default:
cout << "Invalid choice. Please select a valid option." << endl;
}
}
return 0;
}


0 Comments