My First C++ Program in Professional C++
来源:互联网 发布:华为软件市场 编辑:程序博客网 时间:2024/05/08 07:58
//employee.h#ifndef EMPLOYEE_H#define EMPLOYEE_H#include<string>#include<iosfwd>namespace Records{int const kDefaultStartingSalary=30000;class Employee{public:Employee();void promote(int inRaiseAmount=1000);void demote(int inDemeritAmount=1000);void hire();//Hires or rehires the employeevoid fire();//Dismiss the employeevoid display();//Outputs employee info//Accessors and settersvoid setFirstName(std::string inFirstName);std::string getFirstName();void setLastName(std::string inLastName);std::string getLastName();void setEmployeeNumber(int inEmployeeNumber);int getEmployeeNumber();void setSalary(int inNewSalary);int getSalary();bool getIsHired();private:std::string mFirstName;std::string mLastName;int mEmployeeNumber;int mSalary;bool fHired;};}#endif
//employee.cpp#include<iostream>#include"employee.h"#include<string>using namespace std;namespace Records{Employee::Employee():mFirstName(""),mLastName(""),mEmployeeNumber(-1),mSalary(kDefaultStartingSalary),fHired(false){}void Employee::promote(int inRaiseAmount){setSalary(getSalary()+inRaiseAmount);}void Employee::demote(int inDemeritAmount){setSalary(getSalary()-inDemeritAmount);}void Employee::hire(){fHired=true;}void Employee::fire(){fHired=false;}void Employee::display(){cout<<"Employee: "<<getLastName()<<","<<getFirstName()<<endl;cout<<"--------------------------------"<<endl;cout<<(fHired?"Current Employee":"Former Employee")<<endl;cout<<"Employee Number: "<<getEmployeeNumber()<<endl;cout<<"Salary: $"<<getSalary()<<endl;cout<<endl;}//Accessors and settersvoid Employee::setFirstName(string inFirstName){mFirstName=inFirstName;}string Employee::getFirstName(){return mFirstName;}void Employee::setLastName(string inLastName){mLastName=inLastName;}string Employee::getLastName(){return mLastName;}void Employee::setEmployeeNumber(int inEmployeeNumber){mEmployeeNumber=inEmployeeNumber;}int Employee::getEmployeeNumber(){return mEmployeeNumber;}void Employee::setSalary(int inSalary){mSalary=inSalary;}int Employee::getSalary(){return mSalary;}bool Employee::getIsHired(){return fHired;}}
//database.h#ifndef DATABASE#define DATABASE#include<iostream>#include"employee.h"#include<string>namespace Records{int const kMaxEmployee=100;const int kFirstEmployeeNumber=1000;class Database{public:Database();~Database();Employee &addEmployee(std::string inFirstName,std::string inLastName);Employee &getEmployee(int inEmployeeNumber);Employee &getEmployee(std::string inFirstName,std::string inLastName);void displayAll();void displayCurrent();void displayFormer();protected:Employee mEmployees[kMaxEmployee];int mNextSlot;int mNextEmployeeNumber;};}#endif
//database.cpp#include<iostream>#include<stdexcept>#include"database.h"using namespace std;namespace Records{Database::Database(){mNextSlot=0;mNextEmployeeNumber=kFirstEmployeeNumber;}Database::~Database(){}Employee& Database::addEmployee(string inFirstName,string inLastName){if(mNextSlot >= kMaxEmployee){cerr<<"There is no more room to add the new employee";throw exception();}Employee &theEmployee=mEmployees[mNextSlot++];theEmployee.setFirstName(inFirstName);theEmployee.setLastName(inLastName);theEmployee.setEmployeeNumber(mNextEmployeeNumber++);theEmployee.hire();return theEmployee;}Employee &Database::getEmployee(int inEmployeeNumber){for(int i=0;i<mNextSlot;++i){if(mEmployees[i].getEmployeeNumber()==inEmployeeNumber)return mEmployees[i];}cerr<<"No employee with employee number"<<inEmployeeNumber<<endl;throw exception();}Employee &Database::getEmployee(string inFirstName,string inLastName){for(int i=0;i<mNextSlot;++i){if(mEmployees[i].getFirstName()==inFirstName &&mEmployees[i].getLastName()==inLastName){return mEmployees[i];}}cerr<<"No match with name "<<inFirstName<<" "<<inLastName<<endl;throw exception();}void Database::displayAll(){for(int i=0;i<mNextSlot;++i){mEmployees[i].display();}}void Database::displayCurrent(){for(int i=0;i<mNextSlot;++i){if(mEmployees[i].getIsHired()){mEmployees[i].display();}}}void Database::displayFormer(){for(int i=0;i<mNextSlot;++i){if(!mEmployees[i].getIsHired()){mEmployees[i].display();}}}}
//userInterface.cpp#include<iostream>#include<stdexcept>#include"database.h"using namespace std;using namespace Records;int displayMenu();void doHire(Database &inDB);void doFire(Database &inDB);void doPromote(Database &inDB);int main(int argc,char **argv){Database employeeDB;bool done=false;while(!done){int selection=displayMenu();switch(selection){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;case 0:done =true;break;default:cerr<<"Unknow command."<<endl;}}return 0;}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 previous employees"<<endl;cout<<"0) Quit"<<endl;cout<<"---> "<<endl;cin>>selection;return selection;}void doHire(Database &inDB){string firstName;string lastName;cout<<"First name?";cin>>firstName;cout<<"Last name?";cin>>lastName;try{inDB.addEmployee(firstName,lastName);}catch(std::exception ex){cerr<<"unable to add new employee!"<<endl;}}void doFire(Database &inDB){int employeeNumber;cout<<"Employee number? ";cin>>employeeNumber;try{Employee &emp=inDB.getEmployee(employeeNumber);emp.fire();cout<<"Employee "<<employeeNumber<<" has been teminated."<<endl;}catch(std::exception ex){cerr<<"Unable to teminate employee!"<<endl;}}void doPromote(Database &inDB){int employeeNumber;int raiseAmount;cout<<"Employee number? ";cin>>employeeNumber;cout<<"How much of a raise? ";cin>>raiseAmount;try{Employee &emp=inDB.getEmployee(employeeNumber);emp.promote(raiseAmount);}catch(std::exception){cerr<<"unable to promote employee!"<<endl;}}
0 0
- My First C++ Program in Professional C++
- first step in order to optimization of my C program
- QuickSort(C#) -- My First C# Program
- My first c in Ubuntu
- first program by c
- My first program in Verilog HDL
- My first program written in Python
- my first C
- linux系统下的c编程——my first program
- My First RMI Program
- My First Java Program...
- MY FIRST C++ PROGRAM
- my first java program
- My First Akka Program
- my first C++ program
- This is my first program
- My First Game Cheating Program
- My first OPENGL little program
- 初始化函数列表
- Android 实现拍照 获取相册 图片压缩 图片旋转 图片转存
- sar 命令详解
- [leetcode 13] Roman to Integer
- CreateIoCompletionPort和完成端口
- My First C++ Program in Professional C++
- CSS 中 !important的用法总结
- FreeRTOS vApplicationSetupHardware()
- 微信电商生态化初现端倪
- Java数据类型和MySql数据类型对应表
- android开发方案类视频教程免费看
- 网狐6603架设教程
- 学习笔记linux autotools创建makefile文件(续)
- 关于重定向