web dev
107 / 93 / 9
Регистрация: 23.09.2010
Сообщений: 737
1

Класс Employee, проблемы реализации

20.08.2011, 21:19. Показов 6008. Ответов 33
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задание:
Создайте класс с именем Employee («служащий»), включающий в качестве
элементов данных три информационных пункта: имя (тип string), фамилию (тип
string) и месячную зарплату (тип int). Ваш
класс должен иметь конструктор, инициализирующий три элемента данных.
Предусмотрите set- и get -функции для каждого элемента данных.
Если зарплата не
положительна, устанавливайте ее равной 0. Напишите тестовую программу,
демонстрирующую возможности класса Employee. Создайте два объекта Employee и
выведите годовую зарплату для каждого объекта. Затем поднимите зарплату каждого
из «служащих» на 10% и снова выведите их годовую зарплату.


Запнулся и не знаю как реализовать выделенное жирным шрифтом

Вот что я сделал:

Employee.h - интерфейс

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Employee
{
public:
    string Name(string);
    string SurName(string);
    int zarplata();
 
    void setName(string);
    void setSurName(string);
    void setZarplata(string);
 
    string getName();
    string getSurName();
    string getZarplata();
};
Employee.cpp - файл реализации
C++
1
2
3
4
5
6
7
8
9
10
11
#include "stdafx.h"
#include <iostream>
#include "Employee.h"
 
using namespace std;
 
//следующие три строчки кода вообще лубуда какая то не правильная (
Employee::Name(string)
{
        
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.08.2011, 21:19
Ответы с готовыми решениями:

Производный класс Employee и базовый класс Person
Класс Person содержит информацию о человеке - firstName - lastName - age - address -...

Класс Employee
Выдает ошибку, не могу понять в чем дело. Писал код в qt employee.h #ifndef EMPLOYEE_H...

Класс Employee
Создал класс, все работает, но опять одно из значений не корректно отображается в консоли.. а...

Создать класс employee
Создайте класс employee, который содержит имя (объект класса string) и но- мер (типа long)...

33
14 / 14 / 6
Регистрация: 26.11.2010
Сообщений: 235
26.10.2011, 11:33 21
Author24 — интернет-сервис помощи студентам
но у меня возникла проблема как поднять з/п на 10 %???
Умножить текущую на 1,1)
0
0 / 0 / 0
Регистрация: 29.07.2011
Сообщений: 17
26.10.2011, 14:18 22
Цитата Сообщение от Sick2 Посмотреть сообщение
Умножить текущую на 1,1)
Нужно значение без плавающей точки.
0
fasked
26.10.2011, 14:20
  #23

Не по теме:

Цитата Сообщение от nova555 Посмотреть сообщение
Нужно значение без плавающей точки.
Так вот честные люди потом и не досчитываются своих зарплат :D

0
0 / 0 / 0
Регистрация: 29.07.2011
Сообщений: 17
26.10.2011, 14:24 24
Цитата Сообщение от Sick2 Посмотреть сообщение
Умножить текущую на 1,1)
Может я ни так задачу понял, видимо после того как протестировать класс Employee, нужно в самой программе подставить формулу расчета 10%?

Добавлено через 54 секунды
Цитата Сообщение от fasked Посмотреть сообщение

Не по теме:


Так вот честные люди потом и не досчитываются своих зарплат :D

))))Я еще не дошел до плавающих точек.
0
Эксперт С++
5043 / 2622 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
26.10.2011, 14:25 25
nova555, найдите 10 процентов от зарплаты и сложите с текущей. Десять процентов можно найти, если разделить текущую зарплату на 10
0
0 / 0 / 0
Регистрация: 29.07.2011
Сообщений: 17
26.10.2011, 14:27 26
Цитата Сообщение от fasked Посмотреть сообщение
nova555, найдите 10 процентов от зарплаты и сложите с текущей. Десять процентов можно найти, если разделить текущую зарплату на 10
Это понятно, но я не понимаю расчет этих 10% нужно сделать в программе или тупо к годовой в программе прибавить посчитанные на листочке 10%?
0
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
26.10.2011, 16:19 27
C++
1
emp1.setZarplata( emp1.getZarplata() + ( emp1.getZarplata() / 100 ) * 10 )
ну или если только для 10% то
C++
1
emp1.setZarplata( emp1.getZarplata() + emp1.getZarplata() / 10 )
0
0 / 0 / 0
Регистрация: 29.07.2011
Сообщений: 17
26.10.2011, 16:48 28
Цитата Сообщение от Toshkarik Посмотреть сообщение
C++
1
emp1.setZarplata( emp1.getZarplata() + ( emp1.getZarplata() / 100 ) * 10 )
ну или если только для 10% то
C++
1
emp1.setZarplata( emp1.getZarplata() + emp1.getZarplata() / 10 )
Это нужно в main.cpp прописывать?
0
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
26.10.2011, 16:49 29
Ну да :/
0
0 / 0 / 0
Регистрация: 29.07.2011
Сообщений: 17
26.10.2011, 16:53 30
Toshkarik,
Смотри вот мой код.
Код Employee.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//Employee.h ôàéë ñîäåðæèò îïðåäåëåíèå êëàññà Employee è åãî 
//ïðîòîòèïû ôóíêöèé.
#include <iostream>
#include <string>
using std::string;
 
//îïðåäåëåíèå êëàññà
class Employee
{
    public:
        Employee( string thisName , string thisSurname, int thisSalary);
        void setName( string );
        string getName();
        void setSurname( string );//ôàìèëèÿ
        string getSurname();
        void setSalary( int );// çàðïëàòà
        int getSalary();
    private:
        string name;
        string surname;
        int salary;
    };
Код Employee.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//Employee.cpp Ôàéë ñîäåðæèò ýëåìåíò ôóíêöèè êëàññà Employee.
#include <iostream>
#include "Employee.h"
 
using std::cout;
using std::endl;
 
Employee::Employee( string thisName, string thisSurname, int thisSalary )
{
    setName( thisName );
    setSurname( thisSurname );
    setSalary( thisSalary );
}
 
void Employee::setName( string thisName )
{
    name = thisName;
}
 
string Employee::getName()
{
    return name;
}
 
void Employee::setSurname( string thisSurname)
{
    surname = thisSurname;
}
 
string Employee::getSurname()
{
    return surname;
}
 
void Employee::setSalary( int thisSalary )
{
    
    if(thisSalary < 0 )
    cout << "Çàðïëàòà íå ìîæåò áûòü îòðèöàòåëüíîé, çàðïëàòà óñòàíîâëåíà íà 0" << endl;
    salary = 0;
    
    if(thisSalary > 0 )
    salary = thisSalary * 12;
}
 
int Employee::getSalary()
{
    return salary;
}
Код main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
using std::cout;
using std::endl;
 
#include "Employee.h"
 
 
int main()
{
    setlocale(LC_ALL, "rus");
    Employee emp1("Ñåðãåé","Ì", 32000);
    Employee emp2("Åâãåíèÿ","Ì", 25000);
    
    
 
    cout << "Ãîäîâîé çàðàáîòîê ñîòðóäíèêà" << " " << emp1.getName() << " " << emp1.getSurname() 
    << " " << emp1.getSalary() << endl;
    cout << "Ãîäîâîé çàðàáîòîê ñîòðóäíèêà" << " " << emp2.getName() << " " << emp2.getSurname() 
    << " " << emp2.getSalary() << endl;  
    system("PAUSE");
    return 0;
}
Если вставлю то там суммы крупные получаются
0
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
26.10.2011, 17:10 31
C++
1
emp1.setSalary( emp1.getSalary() + (( emp1.getSalary() / 100) * 10));
Должно получится 35400 в emp1 и 27500 в emp2. Не такие цифры разве?

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
 
using std::cout;
using std::endl;
 
#include "Employee.h"
 
 
int main()
{
    setlocale(LC_ALL, "rus");
    Employee emp1("Сергей","М", 32000);
    Employee emp2("Евгения","М", 25000);
    
    
 
    cout << "Годовой заработок сотрудника" << " " << emp1.getName() << " " << emp1.getSurname() 
    << " " << emp1.getSalary() << endl;
    cout << "Годовой заработок сотрудника" << " " << emp2.getName() << " " << emp2.getSurname() 
    << " " << emp2.getSalary() << endl;
    
    emp1.setSalary( emp1.getSalary() + (( emp1.getSalary() / 100) * 10));
    emp2.setSalary( emp2.getSalary() + (( emp2.getSalary() / 100) * 10));
 
    cout << "Годовой заработок сотрудника" << " " << emp1.getName() << " " << emp1.getSurname() 
    << " " << emp1.getSalary() << endl;
    cout << "Годовой заработок сотрудника" << " " << emp2.getName() << " " << emp2.getSurname() 
    << " " << emp2.getSalary() << endl;
 
    system("PAUSE");
    return 0;
}
1
0 / 0 / 0
Регистрация: 29.07.2011
Сообщений: 17
27.10.2011, 09:04 32
Цитата Сообщение от Toshkarik Посмотреть сообщение
C++
1
emp1.setSalary( emp1.getSalary() + (( emp1.getSalary() / 100) * 10));
Должно получится 35400 в emp1 и 27500 в emp2. Не такие цифры разве?

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
 
using std::cout;
using std::endl;
 
#include "Employee.h"
 
 
int main()
{
    setlocale(LC_ALL, "rus");
    Employee emp1("Сергей","М", 32000);
    Employee emp2("Евгения","М", 25000);
    
    
 
    cout << "Годовой заработок сотрудника" << " " << emp1.getName() << " " << emp1.getSurname() 
    << " " << emp1.getSalary() << endl;
    cout << "Годовой заработок сотрудника" << " " << emp2.getName() << " " << emp2.getSurname() 
    << " " << emp2.getSalary() << endl;
    
    emp1.setSalary( emp1.getSalary() + (( emp1.getSalary() / 100) * 10));
    emp2.setSalary( emp2.getSalary() + (( emp2.getSalary() / 100) * 10));
 
    cout << "Годовой заработок сотрудника" << " " << emp1.getName() << " " << emp1.getSurname() 
    << " " << emp1.getSalary() << endl;
    cout << "Годовой заработок сотрудника" << " " << emp2.getName() << " " << emp2.getSurname() 
    << " " << emp2.getSalary() << endl;
 
    system("PAUSE");
    return 0;
}
В таком варианте выводит слишком огромные цифры.
0
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
28.10.2011, 18:18 33
В задании сказано, что нужно прибавить 10% к существующей зарплате. Проверил у себя, все работает отлично, при начальной зарплате 100, после прибавления получается 110.
0
4 / 4 / 1
Регистрация: 26.09.2012
Сообщений: 27
02.07.2013, 19:39 34
Может пригодится кому-нибудь

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
// заголовочный файл Employee.h
#include <iostream>
#include <string>
 
using std::cout;
using std::endl;
using std::string;
 
class Employee
{
private:
    string name; // элемент данных типа string ( имя служащего) 
    string sername; // элемент данных типа string ( фамилия служащего)
    int zarplata; // // элемент данных типа int ( фамилия зарплата)
 
public:
    Employee( string, string, int ); // конструктор инициализирующий три элемента данных
    void setName( string );
    void setSername( string );
    void setZarplata( int );
    string getName();
    string getSername();
    int getZarplata();
    int getGodovayZarplata();
    int getProcent();
};
 
 
// файл с исходным кодом Employee.cpp
#include <iostream>
#include <string>
#include "Employee.h"
 
using std::cout;
using std::endl;
using std::string;
 
Employee::Employee( string names, string sernames, int plata )
{
    setName( names );
    setSername( sernames );
    setZarplata( plata );
}
 
void Employee::setName( string names )
{
    name = names;
}
 
void Employee::setSername( string sernames )
{
    sername = sernames;
}
 
void Employee::setZarplata( int plata )
{
    zarplata = plata;
}
 
string Employee::getName()
{
    return name;
}
 
string Employee::getSername()
{
    return sername;
}
 
int Employee::getZarplata()
{
    if ( zarplata < 0)
        zarplata = 0;
 
    return zarplata;
}
 
int Employee::getGodovayZarplata()
{
    int summ;
    summ = zarplata * 12;
    return summ;
}
 
int Employee::getProcent()
{
    zarplata = (( zarplata / 100 ) * 10) + zarplata;
    return zarplata;
}
 
// файл main.cpp
#include <iostream>
#include <string>
#include <conio.h>
#include "Employee.h"
 
using std::cout;
using std::endl;
using std::string;
 
int main ()
{
    setlocale ( LC_ALL, "Russian" );
 
    Employee employee1 ( "Антон", "Шляпкин", 15000 );
    Employee employee2 ( "Федот", "Тапкин", 17000 );
 
    cout << "Имя служащего: " << employee1.getName() << endl;
    cout << "Фамилия служащего: " << employee1.getSername() << endl;
    cout << "Зарплата (в месяц): " << employee1.getZarplata() << endl;
    cout << "Зарплата (за год): " << employee1.getGodovayZarplata()<< endl;
    cout << "Повышение зарплаты (на 10%): " << employee1.getProcent() << endl;
    cout << "Зарплата (за год): " << employee1.getGodovayZarplata() << "\n\n" << endl;
 
    cout << "Имя служащего: " << employee2.getName() << endl;
    cout << "Фамилия служащего: " << employee2.getSername() << endl;
    cout << "Зарплата (в месяц): " << employee2.getZarplata() << endl;
    cout << "Зарплата (за год): " << employee2.getGodovayZarplata()<< endl;
    cout << "Повышение зарплаты (на 10%): " << employee2.getProcent() << endl;
    cout << "Зарплата (за год): " << employee2.getGodovayZarplata() << "\n\n" << endl;
     
 
    getch();
    return 0;
}
1
02.07.2013, 19:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.07.2013, 19:39
Помогаю со студенческими работами здесь

Изменить класс Employee
Всем доброго время суток. Второй день бьюсь. нужно создать класс Employee так чтобы можно было...

Поясните ошибки, класс employee
Здравствуйте. Поясните мои ошибки пожалуйста. Нужно создать класс employe, включив в него класс...

Создать абстрактный базовый класс Employee
МОЖНО ПОЖАЛУЙСТА ПОДРОБНО,Я ХОЧУ РАЗОБРАТЬСЯ 1. Создать абстрактный базовый класс Employee...

Создайте класс employee. Как написать программу?
Создайте класс employee. Класс должен включать поле (массив) типа char для хранения фамилии...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru