我正在尝试撰写以下内容:
1)为名为Employee的类编写类定义,其名称和工资作为员工对象。该类包含两个成员函数:构造函数和允许程序将值赋给数据成员的函数。
2)向Employee类添加两个成员函数。一个成员函数应该允许任何使用employee对象的程序查看工资数据成员的内容。另一个成员函数应该允许程序查看员工姓名数据成员的内容。
3)向Employeeclass添加另一个成员函数。成员函数应根据程序使用该对象提供的提升百分比计算员工对象的新工资。在计算加注之前,成员函数应验证上升百分比是否大于或等于零。如果提升百分比小于零,则成员函数应显示错误消息。
4)编写一个main函数,它将创建一个employee对象数组,assign 对象的值,显示所有对象的名称和当前工资, 询问用户提高百分比,然后计算并显示新工资 对于所有对象。
我尝试使用以下代码:
#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
class EMPLOYEE
{
public:
EMPLOYEE();//
EMPLOYEE(string name, int salary);//
public:
string name;//name to be input
int salary;//salary to be input
public:
int enter_values();
int output_values();
int NEW_SALARY( int percentage_raise);
};
//default constructor
EMPLOYEE::EMPLOYEE()
{
name = "";
salary = 0;
}
//constructor with name/salary variables
EMPLOYEE::EMPLOYEE(string NAME, int SALARY)
{
name= NAME;
salary= SALARY;
}
//name and salary to be input...
int EMPLOYEE::enter_values()
{ cout<<"Enter name and salary: ";
cin>> name;
cin>>salary;
}
//output
int EMPLOYEE::output_values()
{ cout<<"Name: "<<name<<endl;
cout<<"Salary: "<<salary<<endl;
}
//
int EMPLOYEE::NEW_SALARY(int percentage_raise)
{
EMPLOYEE updated_salary;
if ( percentage_raise >= 0){salary= salary *(percentage_raise/100);
}
else if(percentage_raise< 0)
{ cout<<"Error Message"<<endl;
}
return percentage_raise;
}
int main()
{
EMPLOYEE employees[100];
EMPLOYEE.NEW_SALARY();
int percent= 0;
int i;
for(i =0 ;i<100 ; i++)
{ employees[i]=EMPLOYEE();
employees[i].enter_values();
employees[i].name;
employees[i].salary;
employees[i].output_values();
cout<<"How much should the salary be raised by?"<<endl;
cin>>percent;
cout<<EMPLOYEE.name<<"'s new salary is "<<percentage_raise<<endl;
}
}
但是,我无法访问将信息存储到main函数中的数组所需的部分,也不能在程序提示用户时应用百分比加注。 我很确定我有语法错误,我不知道。我并没有要求别人为我做任何事情,但我希望能朝着正确的方向前进。我不太了解课程以及如何将课程称为课程的不同部分。谢谢你的时间。
答案 0 :(得分:3)
你几乎所有事情都处于良好状态。
要解决的问题:
该行
if ( percentage_raise >= 0){salary= salary *(percentage_raise/100);
除非salary
大于zero
,否则会将percentage_raise
设置为100
。这是因为表达式(percentage_raise/100)
将是整数除法,并且将评估为zero
,除非pecentage_raise
大于100
。
你可以用以下方法修复它:
if ( percentage_raise >= 0)
{
int raise = (salary*percentage_raise)/100;
salary += raise;
}
该行
EMPLOYEE.NEW_SALARY();
将产生编译器错误,因为没有名为EMPLOYEE
的对象。
您可以安全地删除该行。它没有任何用途。
您在阅读输入后缺少设置百分比加注的调用。你需要一行
employees[i].NEW_SALARY(percent);
在您阅读percent
后。
以下行不正确。
cout<<EMPLOYEE.name<<"'s new salary is "<<percentage_raise<<endl;
因为没有名为EMPLOYEE
的对象。您可以将其替换为:
cout<<employees[i].name<<"'s new salary is "<<employees[i].salary<<endl;
答案 1 :(得分:1)
class Employee
{
public:
Employee();
int salary;
};
Employee::Employee() { salary = 10; }
int main()
{
Employee joe;
std::cout << "Joe Salary: " << joe.salary << std::endl;
joe.salary = 15;
std::cout << "Joe New Salary: " << joe.salary << std::endl;
}
通常,您希望您的数据成员是私有的,并使用访问器方法来提供数据成员的值,这些值也应该是私有的。