• C++学习(c++17)——1.3 一个小程序(part1.Employee类)



    前言

    今天是reStudy的第三天。我准备利用毕(假)生(期)所学来试试写点东西。——说实话,假期看网课的时候虽然也想实践,但看视频和敲代码切换来切换去,很快就感觉厌烦了。还是拿着文档时候能静下心来学习。结束了前面的概述,现在来尝试用对象的思想做一个真正有用的程序(指课设,顺带吐槽一下上学期的面向过程的学生管理系统代码敲得是真的烂)。

    要求

    管理公司雇员记录的程序应该灵活并具有有效的功能。这个程序包含的功能有:

    • 添加雇员
    • 解雇雇员
    • 雇员晋升
    • 查看所有雇员(包括过去和现在的)
    • 查看所有当前雇员
    • 查看所有以前(已解雇)雇员

    思路

    整体包含 雇员 这个类,用类写一个仿数据库来储存数据,还有用户界面提供程序的接口

    (致初学者:此章涉及知识点:

    • [x] 命名空间

    • [x] const、string、cin、cout的用法

    • [x] 面向对象的思想

    • [x] 初始化列表


    实现

    Employee.h

    #pragma once
    #include <string>
    
    namespace Records {
    	const int kDefaultStartingSalary = 30000;
    
    	class Employee
    	{
    	public:
    		Employee();
    		Employee(const std::string fisrtName, const std::string lastName);
    
    		void promote(int raiseAmount);//增薪,减薪,雇佣,炒鱿鱼
    		void demote(int demeritAmount);
    		void hire();
    		void fire();
    
    		void setSalary(int newSalary);//对fistName,lastName,employeeNumber,Salary的get和set
    		const int getSalary();
    
    		void setFirstName(const std::string newFirstName);
    		const std::string getFirstName();
    
    		void setLastName(const std::string newLastName);
    		const std::string getLastName();
    
    		void setEmployeeNumber(int employeeNumber);
    		const int getEmployeeNumber();
    
    		const bool isHired();//查看是否被炒
    
    		void display();//显示  某职员信息
    	private://初始化职员的默认资料
    		std::string mFirstName;
    		std::string mLastName;
    		int mEmployeeNumber = -1;
    		int mSalary = kDefaultStartingSalary;
    		bool mHired = false;
    	};
    
    }
    

    Employee.cpp

    #include <iostream>
    #include "Employee.h"
    
    using namespace std;
    
    namespace Records {
    	Employee::Employee(const string firstName, const string lastName)//引用与否
    		:mFirstName(firstName), mLastName(lastName) {
    	}
    	void Employee::setSalary(int newSalary){
    		mSalary = newSalary;
    	}
    
    	const int Employee::getSalary(){//const位置
    		return mSalary;
    	}
    
    	void Employee::promote(int raiseAmount) {
    		setSalary(getSalary() + raiseAmount);
    	}
    	void Employee::demote(int demeritAmount) {
    		setSalary(getSalary() - demeritAmount);
    	}
    	void Employee::hire() {
    		mHired = true;
    	}
    	void Employee::fire() {
    		mHired = false;
    	}
    	void Employee::setFirstName(const std::string newFirstName) {
    		mFirstName = newFirstName;
    	}
    	const std::string Employee::getFirstName() {
    		return mFirstName;
    	}
    	void Employee::setLastName(const std::string newLastName) {
    		mLastName = newLastName;
    	}
    	const std::string Employee::getLastName() {
    		return mLastName;
    	}
    	void Employee::setEmployeeNumber(int employeeNumber) {
    		mEmployeeNumber = employeeNumber;
    	}
    	const int Employee::getEmployeeNumber() {
    		return mEmployeeNumber;
    	}
    	const bool Employee::isHired() {
    		return mHired;
    	}
    	void Employee::display() {
    		cout << "Employee: " << getFirstName() << ", " << getLastName() << endl;
    		cout << "--------------------" << endl;
    		cout << (isHired() ? "Current Employee" : "Former Employee") << endl;
    		cout << "Employee Number: " << getEmployeeNumber() << endl;
    		cout << "Salary: " << getSalary() << endl;
    		cout << endl;
    	}
    }
    

    main函数测试

    #include "Employee.h"
    #include <iostream>
    
    using namespace std;
    using namespace Records;
    int main()
    {
    
        Employee emp("John","Daw");
        emp.setSalary(900);
        emp.setEmployeeNumber(1);
        emp.hire();
        emp.promote(50);
        emp.demote(25);
        emp.display();
        return 0;
    }
    

    Employee.png

    成功了,虽然是很基础的一个程序。

  • 相关阅读:
    测试工具PerfDog的使用
    1.人工智能解读与Python简介
    如何提高百度网盘下载速度小技巧(亲测有效!)
    学习方法
    字符串换行工具类/每隔几位插入指定字符串
    java对pdf文件加文字水印 itextpdf
    centos 7.6 安装jdk8
    1 elk软件的安装
    Springboot 2.2.1 与activeMq 集成2 topic 发布者,订阅者
    Springboot 2.2.1 与activeMq 集成2 queue 消息
  • 原文地址:https://www.cnblogs.com/ranbom/p/12662054.html
Copyright © 2020-2023  润新知