Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8170
  • 博文数量: 8
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 80
  • 用 户 组: 普通用户
  • 注册时间: 2015-01-20 13:38
个人简介

Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules.

文章分类

全部博文(8)

文章存档

2015年(8)

我的朋友
最近访客

分类: C/C++

2015-02-09 17:31:57

/*==========================*/
//Database.cpp对员工信息的各种操作

点击(此处)折叠或打开

  1. //实现Database类
  2. #include <iostream>
  3. #include <string>

  4. #include "Database.h"

  5. using namespace std;


  6.   Database::Database()
  7.   {
  8.     mNextSlot = 0;
  9.     mNextEmployeeNumber = kFirstEmployeeNumber;
  10.   }
  11.   Database::~Database()
  12.   {
  13.   }
  14. //建立一个新的员工信息
  15.   Employee& Database::addEmployee(string inName)
  16.   {
  17.     if (mNextSlot >= kMaxEmployees) {
  18.       cout << "There is no more room to add the new employee!" << endl;
  19.     }

  20.     Employee& theEmployee = mEmployees[mNextSlot++];
  21.     theEmployee.setName(inName);
  22.     theEmployee.setEmployeeNumber(mNextEmployeeNumber++);
  23.     theEmployee.hire();

  24.     return theEmployee;
  25.   }
  26. //查询某个员工信息by number
  27.   Employee& Database::getEmployee(int inEmployeeNumber)
  28.   {
  29.     for (int i = 0; i < mNextSlot; i++) {
  30.       if (mEmployees[i].getEmployeeNumber() == inEmployeeNumber) {
  31.     return mEmployees[i];
  32.       }
  33.     }

  34.     cout<< "No employee with employee number " << inEmployeeNumber << endl;
  35.   }
  36. //查询某个员工信息by name
  37.   Employee& Database::getEmployee(string inName)
  38.   {
  39.     for (int i = 0; i < mNextSlot; i++) {
  40.       if (mEmployees[i].getName() == inName) {
  41.     return mEmployees[i];
  42.       }
  43.     }

  44.     cout << "No match with name " << inName << endl;
  45.   
  46.   }
  47. //输出所有员工信息
  48.   void Database::displayAll()
  49.   {
  50.     for (int i = 0; i < mNextSlot; i++) {
  51.       mEmployees[i].display();
  52.     }
  53.   }
  54. //输出所有雇用员工信息getIsHired()返回为ture
  55.   void Database::displayCurrent()
  56.   {
  57.     for (int i = 0; i < mNextSlot; i++) {
  58.       if (mEmployees[i].getIsHired()) {
  59.     mEmployees[i].display();
  60.       }
  61.     }
  62.   }
/*===============================*/
//database.h定义员工信息相关接口


点击(此处)折叠或打开

  1. #include <iostream>
  2. #include "Employee.h"

  3.   const int kMaxEmployees = 100;
  4.   const int kFirstEmployeeNumber = 1000;
  5.     class Database
  6.       {
  7.       public:
  8.     Database();
  9.     ~Database();

  10.     Employee& addEmployee(std::string inName);
  11.     Employee& getEmployee(int inEmployeeNumber);
  12.     Employee& getEmployee(std::string inName);
  13.     void displayAll();
  14.     void displayCurrent();
  15.       protected:
  16.     Employee mEmployees[kMaxEmployees];//储存employee的队列
  17.     int mNextSlot;//下个对象在队列中的位置
  18.     int mNextEmployeeNumber;//下个队列的number
  19.       };
/*===============================*/
//employee.cpp

点击(此处)折叠或打开

  1. #include <iostream>
  2. #include <string>

  3. #include "Employee.h"

  4. using namespace std;

  5.   Employee::Employee()
  6.   {
  7.     mName = "";
  8.     mEmployeeNumber = -1;
  9.     mSalary = kDefaultStartingSalary;
  10.     fHired = false;
  11.   }
  12.   
  13. //增加或降低工资
  14.   void Employee::promote(int inRaiseAmount)
  15.   {
  16.     setSalary(getSalary() + inRaiseAmount);
  17.   }

  18.   void Employee::demote(int inDemeritAmount)
  19.   {
  20.     setSalary(getSalary() - inDemeritAmount);
  21.   }
  22. //雇用或解雇
  23.   void Employee::hire()
  24.   {
  25.     fHired = true;
  26.   }

  27.   void Employee::fire()
  28.   {
  29.     fHired = false;
  30.   }
  31. //输出单个员工信息
  32.   void Employee::display()
  33.   {
  34.     cout << "Employee: " << getName()<< endl;
  35.     cout << "-------------------------" << endl;
  36.     cout << (fHired ? "Current Employee" : "Former Employee") << endl;
  37.     cout << "Employee Number: " << getEmployeeNumber() << endl;
  38.     cout << "Salary: $" << getSalary() << endl;
  39.     cout << endl;
  40.   }
  41. //成员变量的操作
  42.   void Employee::setName(string inName)
  43.   {
  44.     mName = inName;
  45.   }

  46.   string Employee::getName()
  47.   {
  48.     return mName;
  49.   }

  50.   void Employee::setEmployeeNumber(int inEmployeeNumber)
  51.   {
  52.     mEmployeeNumber = inEmployeeNumber;
  53.   }

  54.   int Employee::getEmployeeNumber()
  55.   {
  56.     return mEmployeeNumber;
  57.   }

  58.   void Employee::setSalary(int inSalary)
  59.   {
  60.     mSalary = inSalary;
  61.   }

  62.   int Employee::getSalary()
  63.   {
  64.     return mSalary;
  65.   }

  66.   bool Employee::getIsHired()
  67.   {
  68.     return fHired;
  69.   }

/*==================================*/
//employee.h


点击(此处)折叠或打开

  1. #include <iostream>

  2.   const int kDefaultStartingSalary = 8000;//默认工资
  3.   class Employee
  4.     {
  5.     public:

  6.       Employee();

  7.       void promote(int inRaiseAmount = 1000);
  8.       void demote(int inDemeritAmount = 1000);
  9.       void hire(); // 雇用
  10.       void fire(); // 解聘
  11.       void display(); // 输出员工信息

  12.       void setName(std::string inName);
  13.       std::string getName();
  14.       void setEmployeeNumber(int inEmployeeNumber);
  15.       int getEmployeeNumber();
  16.       void setSalary(int inNewSalary);
  17.       int getSalary();
  18.       bool getIsHired();//雇用状态
  19.     private:
  20.       std::string mName;
  21.       int mEmployeeNumber;
  22.       int mSalary;
  23.       bool fHired;
  24.     };

/*================================*/
//UserInterface.cpp

点击(此处)折叠或打开

  1. #include<iostream>
  2. #include<string>

  3. #include "Database.h"

  4. using namespace std;
  5. //菜单栏实现
  6. int displayMenu()
  7. {
  8.   int selection;

  9.   cout << endl;
  10.   cout << "Employee Database" << endl;
  11.   cout << "-----------------" << endl;
  12.   cout << "1) Hire a new employee" << endl;
  13.   cout << "2) Fire an employee" << endl;
  14.   cout << "3) Promote an employee" << endl;
  15.   cout << "4) List all employees" << endl;
  16.   cout << "5) List all current employees" << endl;
  17.   cout << "6) Enter employee's number for get information"<<endl;
  18.   cout << "0) Quit" << endl;
  19.   cout << endl;
  20.   cout <<"*****************"<<endl;
  21.   cout <<" __by Roc"<<endl;
  22.   cout <<"*****************"<<endl;
  23.   cout << "---> ";
  24.   cin >> selection;

  25.   return selection;
  26. }

  27. void doHire(Database& inDB)
  28. {
  29.   string Name;

  30.   cout << "what employee's name? ";
  31.   cin >> Name;

  32.   inDB.addEmployee(Name);
  33. }

  34. void doFire(Database& inDB)
  35. {
  36.   int employeeNumber;

  37.   cout << "Employee number? ";
  38.   cin >> employeeNumber;

  39.   Employee& emp = inDB.getEmployee(employeeNumber);
  40.   emp.fire();
  41.   cout << "Employee " << employeeNumber << " has been terminated." << endl;
  42. }

  43. void doPromote(Database& inDB)
  44. {
  45.   int employeeNumber;
  46.   int raiseAmount;

  47.   cout << "Employee number? ";
  48.   cin >> employeeNumber;

  49.   cout << "How much of a raise? ";
  50.   cin >> raiseAmount;

  51.   Employee& emp = inDB.getEmployee(employeeNumber);
  52.   emp.promote(raiseAmount);
  53.   
  54. }

  55. int main()
  56. {
  57.   Database employeeDB;
  58.   bool done = false;
  59.   int num=0;

  60.   while (!done) {
  61.     int selection = displayMenu();

  62.     switch (selection) {
  63.     case 1:
  64.       doHire(employeeDB);
  65.       break;
  66.     case 2:
  67.       doFire(employeeDB);
  68.       break;
  69.     case 3:
  70.       doPromote(employeeDB);
  71.       break;
  72.     case 4:
  73.       employeeDB.displayAll();
  74.       break;
  75.     case 5:
  76.       employeeDB.displayCurrent();
  77.       break;
  78.     case 6:
  79.     {
  80.     cout<< "Enter employee's number:"<<endl;
  81.     cin>>num;
  82.           Employee *ptr=&employeeDB.getEmployee(num);
  83.     ptr->display();
  84.     break;
  85.         }
  86.     case 0:
  87.       done = true;
  88.       break;
  89.     default:
  90.       cout << "Unknown command." << endl;
  91.     }
  92.   }
  93. }

/*=========================*/
//makefie

点击(此处)折叠或打开

  1. objects=UserInterface.o Database.o Employee.o res
  2. edit:$(objects)
  3. g++ -o edit $(objects) UserInterface.o:UserInterface.cpp
  4. Database.o:Database.cpp Database.h
  5. Employee.o:Employee.cpp Employee.h
  6. .PHONY:clean
  7. clean: rm edit $(objects)



阅读(277) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~