atm-admin/src/main.cpp

81 lines
2.7 KiB
C++
Raw Normal View History

2025-05-26 09:40:01 +00:00
#include <iostream>
#include <cctype>
#include "Errorseal.h"
#include "AtmAdmin.h"
std::string changeAccountPin() {
std::string newPin{};
std::cout << "Enter new pin: ";
std::cin >> newPin;
Error::ignoreLine();
if (newPin.size() != 4) {
std::cout << "The pin has to be 4 digits long.\n";
std::cout << "Press enter to continue...";
std::cin.get();
return "invalid";
}
return newPin;
}
bool handleUserInformation(char choice, std::string& information) {
std::string tempInformation{};
switch (choice) {
case '1':
2025-05-28 09:14:16 +00:00
// Implement a proper function for entering a new pin.
// The function should have a somewhat complex algorithm that forces the pin to be secure and unique.
2025-05-28 09:14:16 +00:00
// It should also enforce 4 numbers.
// The code below is a placeholder.
tempInformation = changeAccountPin();
if (tempInformation != "invalid") {
information = tempInformation;
return true;
}
break;
case '2':
2025-05-28 09:14:16 +00:00
// Implement a function for entering a new username.
// The function should check if the name isn't already taken. If it is, return to start.
// It will also use an algorithm to check if it's a valid username
// This includes no spaces and no starting numbers.
// Ensure that the name is also converted to fully lowercase.
// The code below is a placeholder
2025-05-28 09:14:16 +00:00
std::cout << "Enter your new username: ";
std::cin >> information;
break;
case '3':
2025-05-28 09:14:16 +00:00
// Simply a way to cheat, very straight-forward.
// The code below is a placeholder
2025-05-28 09:14:16 +00:00
std::cout << "Enter the amount you wish to have: ";
std::cin >> information;
break;
case 'q':
return false;
default:
std::cout << "Invalid choice.\n";
}
return true;
}
2025-05-26 09:40:01 +00:00
int main() {
bool continueLoop{true};
while (continueLoop) {
// startup() presents the user with the choices below, which are then stored and used by other functions.
// The other functions should handle invalid choices.
// ((1. Change pin || 2. Change money || 3. Change account name || Q. Exit the program))
char userChoice{AtmAdmin::startup()};
// userInformation will later store information for the XML entry to save.
std::string userInformation{};
// Always returns true unless 'Q' is entered
continueLoop = handleUserInformation(static_cast<char>(std::tolower(userChoice)), userInformation);
std::cout << userInformation << '\n'; // DEBUG
}
2025-05-26 09:40:01 +00:00
}