I'm using Microsoft Visual Studio 2017 Community and was curious about something. How do you properly end a program with a switch function? I know that programmers have certain no-no's like exit(). I have tried using return 0; in different places like in function goodbye and in the switch but haven't had any luck, it just ends the function or switch, but the problem is it does not quit or close the program. Also feel free to correct me on anything that might be wrong or could be done better. I'm really new to c++ and this is my first program. Note: Tried to avoid making username a global variable but it is used in several functions, so I went ahead and made it global.
Here is my example:
#include <iostream> #include <string> #include <fstream> ///////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////// //// Switch does not end program on QUIT :( //// ///////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////// void welcome(); int options_menu(); void register_username(); std::string register_password(); void save_user(const std::string &password); void user_login(); void display_file(); void clock_in_hour(); void clock_in_minute(); void clock_out_hour(); void clock_out_minute(); void test(); void goodbye(); std::string username; template <typename T> T get_input(const std::string &strQuery) { std::cout << strQuery << "\n> "; T out = T(); while (!(std::cin >> out)) { std::cin.clear(); std::cin.ignore(std::numeric_limits <std::streamsize>::max(), '\n'); std::cout << "Error!" "\n"; std::cout << strQuery << "\n> "; } return out; } int main() { welcome(); options_menu(); test(); return 0; } void welcome() { std::cout << "Welcome to the Time Card Calculator Pro V1.0 \n\n"; } int options_menu() { int menu = 0; std::cout << "Please type an option number and press enter to continue: \n\n"; std::cout << "[1] Register \n"; std::cout << "[2] Login \n"; std::cout << "[3] Quit \n\n"; menu = get_input <int>("Please type an option number and press enter to continue \n"); switch (menu) { case 1: std::cout << "\n"; std::cout << "You chose to register \n\n"; register_username(); break; case 2: std::cout << "\n"; std::cout << "You chose to login \n\n"; user_login(); break; case 3: std::cout << "\n"; std::cout << "You chose to quit \n\n"; goodbye(); break; default: std::cout << "\n"; std::cout << "Error! Invalid option \n\n"; options_menu(); break; } } void register_username() { std::string username; std::cout << "Please enter your full name: "; //ask user to create username... std::cin.ignore(); std::getline(std::cin, username); while (get_input <int>("Confirm? [0|1]") != 1) { std::cout << "Please enter your full name: "; std::cin.ignore(); std::getline(std::cin, username); } std::ifstream file(username + ".txt"); //check if user file exists... if (file.is_open()) { std::cout << "Error! Username already taken \n\n"; options_menu(); } else //ask user to create a password... { register_password(); } } std::string register_password() { std::cout << "Now please create a password \n"; std::string ask_password = get_input<std::string>("Password may not have any spaces "); std::string password = get_input<std::string>("Please re-enter the password "); if (ask_password == password) { save_user(password); } else { std::cout << "Error: Passwords did not match \n"; register_password(); } return password; } void save_user(const std::string &password) { std::cout << "Saving user info... \n"; std::ofstream file(username + ".txt"); file << password << "\n"; std::cout << "Username: " << username << "\n"; std::cout << "Password: " << password << "\n"; } void user_login() { std::cout << "Please enter your username "; std::cin.ignore(); std::getline(std::cin, username); std::cout << "Searching for file... \n"; std::ifstream file(username + ".txt"); //look for user file... if (file.is_open()) //if user file is found... { std::cout << "File found \n"; display_file(); } else { std::cout << "Error: Username not registered \n"; std::cout << "Please register username \n"; options_menu(); } } void display_file() { std::string line; int numberoflines = 0; std::cout << "Searching for user file " << username << "\n"; std::ifstream file(username + ".txt"); while (std::getline(file, line)) { std::cout << line << "\n"; numberoflines++; } } void test() { std::cout << "This is a test \n"; } void goodbye() { std::cout << "Thank you for using the Time Card Calculator Pro V1.0 \n"; std::cout << "Good bye \n"; }