Projeto 3 - Gerenciamento de Funcionários
Componentes: Rian Anthony Santos Ribeiro
Objetivos: O objetivo deste projeto é desenvolver um sistema de gerenciamento de funcionários para diferentes departamentos dentro de uma empresa.
O sistema permite realizar o cadastro desses funcionários, Inclusão de novos, permitindo definir se são funcionários gerais ou gerentes. Exibição dos funcionários cadastrados por departamento, modificação dos dados dos funcionários existentes, remoção de funcionários do sistema e verificação de usuários por meio de um sistema de login para garantir que apenas usuários autorizados e criados pelo administrador possam acessar e modificar os dados.
Metodologia de desenvolvimento: A metodologia de desenvolvimento utilizada foi a Programação Orientada a Objetos, com a linguagem python. A POO é um paradigma de programação que utiliza "objetos" para representar dados e métodos, promovendo a modularidade, reutilização de código e manutenção.
Passos de Desenvolvimento:
Definição das Classes:
Pessoa: Classe base que representa uma pessoa com atributos nome, idade e endereço.
Funcionario: Subclasse de Pessoa, que adiciona o atributo salário.
Gerente: Subclasse de Funcionario, que adiciona o atributo departamento.
Departamento: Classe que representa um departamento, contendo uma lista de funcionários e métodos para gerenciar essa lista.
Encapsulamento:
Uso de atributos privados (prefixados com __) e métodos públicos (get e set) para acessar e modificar esses atributos.
Herança:
Funcionario herda de Pessoa.
Gerente herda de Funcionario.
Composição:
A classe Departamento contém uma lista de objetos do tipo Funcionario (ou suas subclasses).
Implementação das Funcionalidades:
Métodos para cadastrar, listar, alterar e excluir funcionários.
Função para verificar login dos usuários.
Interface de Usuário:
Implementação de um menu interativo via console para interagir com o sistema, permitindo operações de criar, ler, alterar e deletar funcionários.
Projeto 3 - código fonte
class Pessoa:
def __init__(self, nome, idade, endereco):
self.__nome = nome
self.__idade = idade
self.__endereco = endereco
def get_nome(self):
return self.__nome
def set_nome(self, nome):
self.__nome = nome
def get_idade(self):
return self.__idade
def set_idade(self, idade):
self.__idade = idade
def get_endereco(self):
return self.__endereco
def set_endereco(self, endereco):
self.__endereco = endereco
def exibir_informacoes(self):
return f"Nome: {self.__nome}, Idade: {self.__idade}, Endereço: {self.__endereco}"
class Funcionario(Pessoa):
def __init__(self, nome, idade, endereco, salario):
super().__init__(nome, idade, endereco)
self.__salario = salario
def get_salario(self):
return self.__salario
def set_salario(self, salario):
self.__salario = salario
def exibir_informacoes(self):
return f"{super().exibir_informacoes()}, Salário: {self.__salario}"
class Gerente(Funcionario):
def __init__(self, nome, idade, endereco, salario, departamento):
super().__init__(nome, idade, endereco, salario)
self.__departamento = departamento
def get_departamento(self):
return self.__departamento
def set_departamento(self, departamento):
self.__departamento = departamento
def exibir_informacoes(self):
return f"{super().exibir_informacoes()}, Departamento: {self.__departamento}"
class Departamento:
def __init__(self, nome):
self.__nome = nome
self.__funcionarios = []
def adicionar_funcionario(self, funcionario):
if isinstance(funcionario, Funcionario):
self.__funcionarios.append(funcionario)
def remover_funcionario(self, nome):
for i, funcionario in enumerate(self.__funcionarios):
if funcionario.get_nome() == nome:
del self.__funcionarios[i]
return True
return False
def listar_funcionarios(self):
return [funcionario.exibir_informacoes() for funcionario in self.__funcionarios]
def get_nome(self):
return self.__nome
def set_nome(self, nome):
self.__nome = nome
usuarios_senhas = {
'usuario1': 'senha123',
'usuario2': 'abc123',
'usuario3': 'abc321',
}
def verificar_login(usuario, senha):
if usuario in usuarios_senhas and usuarios_senhas[usuario] == senha:
return True
else:
return False
def cadastrar_funcionario():
print("Cadastro de novo funcionário:")
nome = input("Nome do funcionário: ")
print(f"Funcionário '{nome}' cadastrado com sucesso!")
def cadastrar_funcionario(departamentos):
nome = input("Nome: ")
idade = int(input("Idade: "))
endereco = input("Endereço: ")
salario = float(input("Salário: "))
tipo = input("Tipo (Funcionario/Gerente): ")
if tipo.lower() == "gerente":
departamento_nome = input("Departamento para adicionar o gerente: ")
funcionario = Gerente(nome, idade, endereco, salario, departamento_nome)
else:
funcionario = Funcionario(nome, idade, endereco, salario)
departamento_nome = input("Departamento para adicionar o funcionário: ")
for departamento in departamentos:
if departamento.get_nome() == departamento_nome:
departamento.adicionar_funcionario(funcionario)
print("Funcionário cadastrado com sucesso!")
return
print("Departamento não encontrado.")
def listar_funcionarios(departamentos):
for departamento in departamentos:
print(f"Departamento: {departamento.get_nome()}")
for info in departamento.listar_funcionarios():
print(info)
def alterar_funcionario(departamentos):
nome = input("Nome do funcionário a alterar: ")
for departamento in departamentos:
for funcionario in departamento._funcionarios:
if funcionario.get_nome() == nome:
novo_nome = input("Novo Nome: ")
nova_idade = int(input("Nova Idade: "))
novo_endereco = input("Novo Endereço: ")
novo_salario = float(input("Novo Salário: "))
funcionario.set_nome(novo_nome)
funcionario.set_idade(nova_idade)
funcionario.set_endereco(novo_endereco)
funcionario.set_salario(novo_salario)
print("Dados do funcionário alterados com sucesso!")
return
print("Funcionário não encontrado.")
def excluir_funcionario(departamentos):
nome = input("Nome do funcionário a excluir: ")
for departamento in departamentos:
if departamento.remover_funcionario(nome):
print("Funcionário excluído com sucesso!")
return
print("Funcionário não encontrado.")
def main():
usuarios = []
x = []
departamentos = [
Departamento("Recursos Humanos"),
Departamento("Vendas"),
Departamento("TI"),
Departamento("Financeiro")
]
while True:
usuario = input("Digite o nome de usuário: ")
senha = input("Digite a senha: ")
if verificar_login(usuario, senha):
print("Login bem-sucedido!\n")
usuarios.append(usuario)
break
else:
print("Usuário ou senha incorretos. Tente novamente.\n")
while True:
print("\nMenu")
print("-" * 30)
print("1. Cadastrar Funcionário")
print("-" * 30)
print("2. Listar Funcionários")
print("-" * 30)
print("3. Alterar Funcionário")
print("-" * 30)
print("4. Excluir Funcionário")
print("-" * 30)
print("5. Sair")
print("-" * 30)
opcao = int(input("Escolha uma opção: "))
if opcao == 1:
cadastrar_funcionario(departamentos)
elif opcao == 2:
listar_funcionarios(departamentos)
elif opcao == 3:
alterar_funcionario(departamentos)
elif opcao == 4:
excluir_funcionario(departamentos)
elif opcao == 5:
break
else:
print("Opção inválida, tente novamente.")
if __name__ == "__main__":
main()