Johanncf / DEVinBank

DEVinHouse - Modulo 2 - Projeto 1

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

DEVinBank - Projeto 1 - Módulo 2 - DEVinHouse

Descrição do Projeto

Durante as últimas semanas aprendemos muito sobre a linguagem C#, e em muitas ocasiões nossas práticas e exercícios tinham características do que a indústria de software se refere como back-end, aprendendo sobre tipos de dados, variáveis, Arrays, Listas, e Conceitos aplicados à Programação Orientada a Objetos. Que tal construir um sisteminha 100% funcional, sem depender de nenhuma outra tecnologia para exibição?! Vamos construir uma pequena fintech.

Requisitos da Aplicação

A aplicação deve contemplar os seguintes requisitos:

  • O sistema deverá ser desenvolvido em C#;
  • O sistema deve seguir o Roteiro da Aplicação;
  • O desenvolvimento das mensagens de saída da fintech, esperando pela ação do usuário;
  • Captura da interação do usuário via entrada padrão;
  • O sistema deverá ser apresentado diretamente na linha de comando;

Roteiro da Aplicação

A fintech DEVinBank deseja automatizar todo o seu sistema de armazenamento de informações referentes aos seus clientes. O sistema deve conter os seguintes tipos de contas, cada uma com suas características:

  • Conta corrente
    • Na conta corrente o cliente tem direito ao cheque especial, ou seja, poderá ficar negativo durante um período de tempo. O sistema deve definir o total do cheque especial, conforme a renda mensal do correntista (10% da renda mensal).
    • Extrato das transações.
  • Conta poupança
    • Na conta poupança o cliente não tem direito ao cheque especial.
    • Na conta poupança, o cliente poderá simular quanto o seu valor renderá em um determinado tempo, para isso, o cliente deve informar a quantidade de tempo (em meses) e a rentabilidade anual da poupança.
    • Extrato das transações.
  • Conta investimento
    • Neste tipo de conta, o cliente poderá escolher um tipo de investimento e o sistema deve apresentar o rendimento anual do investimento solicitado, conforme os valores abaixo:
      • LCI: 8% ao ano.
        • Tempo mínimo de aplicação: 6 meses
      • LCA: 9% ao ano.
        • Tempo mínimo de aplicação: 12 meses
      • CDB: 10% ao ano.
        • Tempo mínimo de aplicação: 18 meses
    • O cliente pode realizar uma simulação do valor aplicado, para isso, ele deve indicar:
      • Valor que será aplicado.
      • Tempo que ficará aplicado o valor (em meses).
      • Ao final da simulação deve-se apresentar uma mensagem para o cliente perguntando se ele deseja efetuar o investimento.
    • Extrato das transações. Neste caso, sempre que o cliente efetuar uma transação deve-se armazenar:
      • Valor aplicado.
      • Tipo da aplicação.
      • Data da aplicação
      • Data da retirada do valor.

Regras de Negócio

  • A fintech também deseja manter um histórico das transferências, que deverá armazenar (utilizar conceitos de composição):
    • Dados Conta Origem.
    • Dados Conta Destino.
    • Valor.
    • Data (pegar a data e hora do sistema).
  • O sistema também deverá apresentar os seguintes relatórios:
    • Listar todas as contas.
    • Contas com saldo negativo.
    • Total do valor investido.
    • Todas as transações de um determinado cliente.
  • É importante que algumas transações não possam ser executadas em caso de problemas percebidos em suas operações:
    • Transferência entre contas cujo montante supera o saldo acrescido do limite do cheque especial da conta de origem.
    • Operações em momentos anteriores ao dia/hora da transação.
    • Transferências durante o final de semana (sábado ou domingo).
    • Não é possível fazer transferências para si próprio.

Observações

O sistema deve iniciar no dia do seu sistema operacional e você deve pegar essa informação de forma automática. Para simular os valores de investimentos, faça uma função que adiante o tempo no seu algoritmo. Por exemplo: Adiantar em 1 ano o sistema bancário.

Detalhes da implementação

  • A aplicação é iniciada através da classe SistemaFinanceiro. Esta classe centraliza o menu de interação com o usuário e possui dependências localizadas nas classes Engines. Tais dependências são injetadas no início da classe Project (código de entrada da aplicação).
  • O projeto utiliza o padrão de design Repositories. Toda a manipulação de dados de contas e transações se apoiam nos repositórios das respectivas classes. Os repositórios são classes de dependência paras as engines do sistema, e suas injeções também são realizadas no início da classe Program.
  • As operações bancárias estão dividas entre:
    • Operações realizadas pelo sistema, ou seja, não dependem necessariamente de uma conta de partida. Essas operações são executadas através do menu principal da aplicação. Exs.: "Listar contas negativadas", "Total de investimentos no DEVinBank", "Depósito".
    • Operações realizadas por uma conta específica. São executadas a partir do menu "Minha Conta", que pede o número da conta para o acesso. Exs.: "Saque", "Transferência", "Depósito" (depósito é a única operação que pode ser realizada por ambas as rotas).
  • As operações de investimento, das contas Investimento, estão separadas nas categorias de aplicação LCI, LCA e CDB, como descrito no roteiro. A escolha do modo de investimento está implícido no tempo de aplicação determinado pelo usuário. Ex.: Uma aplicação com duração de 15 meses, será obrigatoriamente da categoria LCA, uma vez que ultrapassa o mínimo exigido para LCA, porém não alcança a duração mínima de uma aplicação CDB.

🛠 Tecnologias

As seguintes ferramentas foram usadas na construção do projeto:

About

DEVinHouse - Modulo 2 - Projeto 1


Languages

Language:C# 100.0%