online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code   
Language
#include <iostream> #include <stdexcept> #include <exception> //#include <format> #include <string> #include "Database.h" #include "Employee.h" using namespace std; using namespace Records; int displayMenu(); void doHire(Database& db); void doFire(Database & db); void doPromote(Database& db); int main() { Database employeeDB; bool done{ false }; while (!done) { int selection{ displayMenu() }; switch (selection) { case 0: done = true; break; case 1: doHire(employeeDB); break; case 2: doFire(employeeDB); break; case 3: doPromote(employeeDB); break; case 4: employeeDB.displayAll(); break; case 5: employeeDB.displayCurrent(); break; case 6: employeeDB.displayFormer(); break; default: cerr << "Unknown command." << endl; break; } } } int displayMenu() { int selection; cout << endl; cout << "Employee Database" << endl; cout << "-----------------" << endl; cout << "1) Hire a new employee" << endl; cout << "2) Fire an employee" << endl; cout << "3) Promote an employee" << endl; cout << "4) List all employees" << endl; cout << "5) List all current employees" << endl; cout << "6) List all former employees" << endl; cout << "0) Quit" << endl; cout << endl; cout << "---> "; cin >> selection; return selection; }
// Database.cpp #include <iostream> #include <stdexcept> #include "Database.h" using namespace std; namespace Records { Employee& Database::addEmployee(const string &firstName, const string &lastName) { Employee theEmployee{firstName, lastName}; theEmployee.setEmployeeNumber(m_nextEmployeeNumber++); theEmployee.hire(); m_employees.push_back(theEmployee); return m_employees.back(); } Employee& Database::getEmployee(int employeeNumber) { for (auto &employee : m_employees) { if (employee.getEmployeeNumber() == employeeNumber) { return employee; } } throw logic_error{"No employee found."}; } Employee& Database::getEmployee(const std::string& firstName, const std::string& lastName) { for (auto& employee : m_employees) { if (employee.getFirstName() == firstName && employee.getLastName() == lastName) { return employee; } } throw logic_error{ "No employee found." }; } void Database::displayAll() const { for (const auto& employee : m_employees) { employee.display(); } } void Database::displayCurrent() const { for (const auto& employee : m_employees) { if (employee.isHired()) { employee.display(); } } } void Database::displayFormer() const { for (const auto& employee : m_employees) { if (!employee.isHired()) { employee.display(); } } } }
#include "Employee.h" #include <iostream> using namespace std; namespace Records { Employee::Employee(const std::string &firstName, const std::string &lastName) : m_firstName(firstName), m_lastName(lastName), m_employeeNumber(-1), m_salary(DefaultStartingSalary), m_hired(false) { } void Employee::promote(int raiseAmount) { setSalary(getSalary() + raiseAmount); } void Employee::demote(int demeritAmount) { setSalary(getSalary() - demeritAmount); } void Employee::hire() { m_hired = true; } void Employee::fire() { m_hired = false; } void Employee::display() const { cout << "Employee: " << getLastName() << ", " << getFirstName() << endl; cout << "-------------------------" << endl; cout << (isHired() ? "Current Employee" : "Former Employee") << endl; cout << "Employee Number: " << getEmployeeNumber() << endl; cout << "Salary: $" << getSalary() << endl; cout << endl; } void Employee::setFirstName(const std::string &firstName) { m_firstName = firstName; } const std::string &Employee::getFirstName() const { return m_firstName; } void Employee::setLastName(const std::string &lastName) { m_lastName = lastName; } const std::string &Employee::getLastName() const { return m_lastName; } void Employee::setEmployeeNumber(int employeeNumber) { m_employeeNumber = employeeNumber; } int Employee::getEmployeeNumber() const { return m_employeeNumber; } void Employee::setSalary(int newSalary) { m_salary = newSalary; } int Employee::getSalary() const { return m_salary; } bool Employee::isHired() const { return m_hired; } } // namespace Records
// Database.h #pragma once #include <iostream> #include "Employee.h" #include "vector" #include "string" namespace Records { const int FirstEmployeeNumber{1'000}; class Database { public: Employee &addEmployee(const std::string &firstName, const std::string &lastName); Employee &getEmployee(int employeeNumber); Employee &getEmployee(const std::string &firstName, const std::string &lastName); void displayAll() const; void displayCurrent() const; void displayFormer() const; private: std::vector<Employee> m_employees; int m_nextEmployeeNumber{FirstEmployeeNumber}; }; }
#pragma once #include <string> namespace Records { const int DefaultStartingSalary{30'000}; const int DefaultRaiseAndDemeritAmount{1'000}; class Employee { public: Employee(const std::string &firstName, const std::string &lastName); void promote(int raiseAmount = DefaultRaiseAndDemeritAmount); void demote(int demeritAmount = DefaultRaiseAndDemeritAmount); void hire(); void fire(); void display() const; void setFirstName(const std::string &firstName); const std::string &getFirstName() const; void setLastName(const std::string &lastName); const std::string &getLastName() const; void setEmployeeNumber(int employeeNumber); int getEmployeeNumber() const; void setSalary(int newSalary); int getSalary() const; bool isHired() const; private: std::string m_firstName; std::string m_lastName; int m_employeeNumber; int m_salary; bool m_hired; }; } // namespace Records

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text
×

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue