-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfunci.cpp
292 lines (248 loc) · 6.1 KB
/
funci.cpp
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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
#include <iostream>
#include <string>
#include <iomanip>
#include <vector>
using namespace std;
class Data{
public:
Data(int dia, int mes, int ano) : dia_{dia}, mes_{mes}, ano_{ano} {}
Data(Data const& d) : dia_{d.dia_}, mes_{d.mes_}, ano_{d.ano_} {}
Data() = default;
void leiaData() {
cout << " Dia: ";
cin >> dia_;
cout << " Mes: ";
cin >> mes_;
cout << " Ano: ";
cin >> ano_;
}
void mostreData() { cout << dia_ << "/" << mes_ << "/" << ano_ << endl; }
private:
int dia_;
int mes_;
int ano_;
};
class CPF{
public:
CPF(string cpf) : cpf_{cpf} {}
CPF(CPF const& c) : cpf_{c.cpf_} {}
CPF() = default;
void leiaCPF() {
cout << " Informe CPF: ";
cin >> cpf_;
}
void mostreCPF() { cout << " CPF: " << cpf_ << endl; }
string const& obterCPF() const {
return cpf_;
}
private:
string cpf_;
};
class CNPJ{
public:
CNPJ(string cnpj) : cnpj_{cnpj} {}
CNPJ(CNPJ const& c) : cnpj_{c.cnpj_} {}
CNPJ() = default;
void leiaCNPJ() {
cout << " Informe CNPJ: ";
cin >> cnpj_;
}
void mostreCNPJ() { cout << " CNPJ: " << cnpj_ << endl; }
string const& obterCNPJ() const {
return cnpj_;
}
private:
string cnpj_;
};
bool operator==(CPF const& cpf1, CPF const& cpf2){
return cpf1.obterCPF() == cpf2.obterCPF();
}
class RG{
public:
RG(string rg) : rg_{rg} {}
RG(RG const& r) : rg_{r.rg_} {}
RG() = default;
void leiaRG(){
cout << " Informe RG: ";
cin >> rg_;
}
void mostreRG() { cout << " RG: " << rg_ << endl; }
private:
string rg_;
};
class Telefone{
public:
Telefone(string tel) : tel_{tel} {}
Telefone(Telefone const& t) : tel_{t.tel_} {}
Telefone() = default;
void leiaTelefone(){
cout << " Informe Telefone: ";
getline(cin,tel_);;
}
void mostreTelefone() { cout << " Telefone: " << tel_ << endl; }
private:
string tel_;
};
class Endereco{
public:
Endereco(string numero, string rua, string bairro, string cep) : numero_{numero}, rua_{rua}, bairro_{bairro}, cep_{cep} {}
Endereco(Endereco const& e) : numero_{e.numero_}, rua_{e.rua_}, bairro_{e.bairro_}, cep_{e.cep_} {}
Endereco() = default;
void leiaEndereco() {
cout << " Número: ";
getline(cin,numero_);
cout << " Logradouro: ";
getline(cin,rua_);
cout << " Bairro: ";
getline(cin,bairro_);
cout << " CEP: ";
getline(cin,cep_);
}
void mostreEndereco() { cout << rua_ << " , Nº " << numero_ << "\n Bairro: " << bairro_ << ", " << cep_ << endl; }
private:
string numero_;
string rua_;
string bairro_;
string cep_;
};
class Pessoa{
public:
Pessoa(string nome, Endereco endereco, Telefone telefone)
: nome_{nome}, endereco_{endereco}, telefone_{telefone} {}
Pessoa(Pessoa const& p)
: nome_{p.nome_}, endereco_{p.endereco_}, telefone_{p.telefone_} {}
Pessoa() = default;
void leiaPessoa(){
cout << "Nome: ";
getline(cin, nome_);
cout << " Informe o endereco: \n";
endereco_.leiaEndereco();
cout << " Informe o telefone: \n";
telefone_.leiaTelefone();
}
void mostrePessoa(){
cout << " Nome: " << nome_ << "\n Endereco: ";
endereco_.mostreEndereco();
telefone_.mostreTelefone();
}
cinNome(){
cin >> nome_;
}
private:
string nome_;
Endereco endereco_;
Telefone telefone_;
};
class Pessoa_fisica : public Pessoa
{
public:
Pessoa_fisica(Pessoa pessoa, CPF cpf, RG rg) :
Pessoa{pessoa}, cpf_{cpf}, rg_{rg} {}
Pessoa_fisica() : Pessoa{}, cpf_{}, rg_{} {}
void leiaPessoa_F(){
Pessoa::leiaPessoa();
cout << " CPF: " << endl;
cpf_.leiaCPF();
cout << " RG: " << endl;
rg_.leiaRG();
}
void mostrePessoa_F(){
Pessoa::mostrePessoa();
cpf_.mostreCPF();
rg_.mostreRG();
}
CPF const& obterCPF() const{
return cpf_;
}
private:
CPF cpf_;
RG rg_;
};
class Pessoa_juridica : public Pessoa
{
public:
Pessoa_juridica(Pessoa pessoa, CNPJ cnpj, string razaosocial) :
Pessoa{pessoa}, cnpj_{cnpj}, razaosocial_{razaosocial} {}
Pessoa_juridica() : Pessoa{}, cnpj_{}, razaosocial_{} {}
void leiaPessoa_J(){
Pessoa::leiaPessoa();
cout << " CNPJ: " << endl;
cnpj_.leiaCNPJ();
cout << " Razao Social: " << endl;
cin >> razaosocial_;
}
void mostrePessoa_J(){
Pessoa::mostrePessoa();
cnpj_.mostreCNPJ();
cout << " Razao Social: " << razaosocial_ << endl;
}
CNPJ const& obterCNPJ() const{
return cnpj_;
}
private:
CNPJ cnpj_;
string razaosocial_;
};
class Funcionario : public Pessoa_fisica{
public:
_ Funcionario(Pessoa_fisica pessoa_f, Data dataContratacao, float salario) :
Pessoa_fisica{pessoa_f}, dataContratacao_{dataContratacao}, salario_{salario} {}
Funcionario() : Pessoa_fisica{}, dataContratacao_{}, salario_{0.0} {}
void leiaFuncionario(){
Pessoa_fisica::leiaPessoa_F();
cout << " Data de Contratacao: " << endl;
dataContratacao_.leiaData();
cout << " Salario: ";
cin >> salario_;
}
void mostreFuncionario(){
Pessoa_fisica::mostrePessoa_F();
cout << " Data de Contratacao: ";
dataContratacao_.mostreData();
cout << " Salario: R$ " << fixed << setprecision(2) << salario_ << endl;
}
float const obterSalario() const {
return salario_;
}
void buscarProdutos();
void adicionarCliente();
private:
Data dataContratacao_;
float salario_;
};
class Gerente : public Funcionario{
public:
Gerente(Funcionario funcionario) :
Funcionario{funcionario}{}
Gerente(): Funcionario{}{}
void leiaGerente(){
Funcionario::leiaFuncionario()
}
void adicionarVendedor(Funcionario funcionario){
funcionario.leiaFuncionario();
};
void modificarVendedor(Funcionario funci){
cout <<"O que você gostaria de alterar?";
cout<<"1 para nome\n2 endereco\n3 CPF";
if(var == 1){
cout<<"digite o novo nome:";
funci.pessoa_f.pessoa.cinNome();
}
void removerVendedor();
void adicionarProduto();
void modificarProduto();
void removerProduto();
void modificarCliente();
void removerCliente();
private:
vector<Funcionario> listaFuncionarios;
};
class ListaProdutos{
};
int main(){
Funcionario f;
f.leiaFuncionario();
cout << endl;
f.mostreFuncionario();
cout << endl;
}