Baixe o app para aproveitar ainda mais
Prévia do material em texto
Trabalho Prático Programação 2 Data máxima de entrega: 11/12/2018 Valor: 40 pontos Tema: Perícia Criminal Parte I: Sobre o problema e os dados disponíveis Você se formou no Bacharelado em Sistemas de Informação e foi aprovado no concurso para Perito Criminal da Polícia Federal. Sua primeira investigação envolve uma fraude bancária, e você precisa identificar inconsistências no Banco de Dados de um banco. O banco de dados contém informações de milhares de contas, mas você recebeu apenas uma parte das informações de algumas contas sob suspeita. As informações que você recebeu contêm: Dados dos clientes: Por segurança, você recebeu apenas o cpf e o nome dos clientes. Dados das agências: Cada agência possui o número, um nome, uma cidade e a sigla do estado em que se encontra. Dados das contas: Cada conta recebida possui apenas o número da conta, saldo atual, cpf do cliente titular da conta e número da agência a que ela pertence. Obs.: Cada cliente pode possuir uma, nenhuma ou várias contas. Histórico de transações: Cada transação já efetuada em uma determinada conta, indicando o identificador da transação, o valor da transação, a data e horário em que ocorreu, o número da conta envolvida na transação e o tipo de operação. Os itens do histórico não estão em ordem cronológica. As informações disponibilizadas pelo banco serão lidas de 4 arquivos textos, localizados na mesma pasta em que o(s) arquivo(s) com o código do programa: 1. “clientes.txt”: a primeira linha contém o número de clientes existentes. Em seguida, para cada cliente, existem duas linhas consecutivas contendo o cpf e o nome do cliente (um dado em cada linha, nesta ordem). 2. “agencias.txt”: a primeira linha contém o número de agências. Em seguida, para cada agência, existem quatro linhas consecutivas contendo o nome, número, cidade e estado da agência (um dado em cada linha nesta ordem). 3. “contas.txt”: a primeira linha contém a quantidade de contas no arquivo. Em seguida, para cada conta, existem quatro linhas consecutivas contendo o número da conta, saldo atual, cpf do titular da conta e número da agência (um dado em cada linha). 4. “historico.txt”: a primeira linha contém a quantidade de transações. Em seguida, para cada item do histórico, existem seis linhas consecutivas informando: ◦ Identificador da transação ◦ Valor da transação ◦ Data em que ocorreu a transação (no formato DD/MM/AAAA) ◦ Horário em que ocorreu a transação (no formato HH:MM:SS) ◦ Número da conta envolvida ◦ Tipo da operação (0 para saques e 1 para depósitos) Parte II: Sobre a investigação Existem duas investigações sob sua responsabilidade: 1. Algumas contas foram invadidas por hackers, que retiraram dinheiro das contas sem deixar rastros no histórico de transações. Você deve analisar todo esse histórico de movimentações financeiras para identificar cada conta cujo saldo atual está inconsistente com o histórico. Considere que todas as contas possuíam um saldo zerado no momento em que foram criadas. 2. Existe a suspeita de que políticos envolvidos num esquema de corrupção realizaram transferências de altos valores entre si. Entretanto, o banco não salva operações de transferências no histórico (apenas saques e depósitos). Você precisa, portanto, identificar todas as situações envolvendo transferências superiores a cem mil reais entre dois titulares diferentes, sabendo que uma transferência consiste em um saque seguido de um depósito e que estas duas operações podem ter sido registradas pelo sistema com até 4 horas de atraso. Parte III: Sobre o resultado da sua investigação Como resultado, você deve entregar um relatório para o seu chefe com as seguintes informações: 1. Investigação 1: ◦ Contas invadidas: Quais contas foram hackeadas? Qual saldo elas possuem após a invasão, e qual saldo elas deveriam possuir de acordo com o histórico de transações? ◦ Prejuízo do banco: Considerando todo o valor que os hackers retiraram das contas indevidamente, qual o valor total que o banco deverá gastar para ressarcir seus clientes? ◦ Agências a serem investigadas: Quais agências possuem contas que foram afetadas pelos hackers? ◦ Contas no vermelho: Dentre as contas hackeadas, quais delas ficaram com saldo negativo e podem estar pagando juros do cheque especial indevidamente por causa da invasão? 2. Investigação 2: ◦ Transferências suspeitas: Quais transferências suspeitas (ou seja, acima de R$ 100.000) deverão ser analisadas pela Receita Federal? ◦ Possíveis corruptos: Qual lista, em ordem alfabética, com o nome dos clientes envolvidos nas transferências suspeitas deve ser divulgada para a imprensa? ◦ Auge do esquema: Em qual ano ocorreu a maior quantidade de transferências suspeitas? A saída deve ser formatada exatamente como no exemplo a seguir: Contas invadidas: 148 Titular: Elisa Godoi Saldo correto: R$ 577782 Saldo atual R$ 487361 106 Titular: Mem Torquato Saldo correto: R$ 96989 Saldo atual R$ 193144 012 Titular: Amélia Castelo Saldo correto: R$ 13313 Saldo atual R$ 24979 131 Titular: Quintino Godói Saldo correto: R$ 419537 Saldo atual R$ 357784 095 Titular: Estefânia Soto Saldo correto: R$ 952881 Saldo atual R$ 898579 103 Titular: Greice Queiroz Saldo correto: R$ 256980 Saldo atual R$ 160996 028 Titular: Marta Sabala Saldo correto: R$ 701531 Saldo atual R$ 695149 Prejuizo do banco: R$ 443289 Agencias a serem investigadas: 1301 SERRA SERRA/ES 3195 ITAPOA VILA VELHA/ES 3480 JUCUTUQUARA VITORIA/ES 4292 EMPRESA PORTO VITORIA/ES 4559 COBILANDIA VILA VELHA/ES 3790 BAIRRO PRAIA CANTO VITORIA/ES 8066 ROD.C.LINDENBERG ES VILA VELHA/ES Contas no vermelho: 106 Titular: 685.311.48332 012 Titular: 220.654.65239 Transferencias suspeitas: 463.255.14653 transferiu R$ 124846 para 534.504.31676 no dia 27/07/2018 373.544.14409 transferiu R$ 186037 para 251.030.12332 no dia 11/12/2018 401.278.08086 transferiu R$ 194603 para 801.283.37435 no dia 28/01/2016 808.841.37538 transferiu R$ 137129 para 658.352.82079 no dia 19/02/2016 301.237.10448 transferiu R$ 195598 para 433.488.23587 no dia 24/07/2017 852.124.03766 transferiu R$ 199385 para 248.455.27774 no dia 28/08/2016 Possiveis corruptos: Carminda Ramires Estefânia Soto Eugénia Magalhães Flamínia Matoso Judite Carrasqueira Leónidas Figueiró Mafalda Morera Marta Sabala Moema Mourato Rafaela Morera Tainá Flores Tairine Lobato O auge do esquema ocorreu em 2016 com 3 transferencias suspeitas A ordem em que as linhas aparecem no resultado de cada parte do relatório é importante apenas na lista de possíveis corruptos. Parte IV: Observações O código deve ser feito em Python3. Para agilizar o processamento, os dados devem ser armazenados em quatro dicionários (clientes, agencias, contas e historico). Para verificar se uma transação t1 ocorreu em até 4 horas após uma transação t2, lembre-se que elas podem ocorrer em dias diferentes (ex: saque ocorre às 23:59:57, seguido de um depósito às 00:00:03 do dia seguinte. Dica: para ter menor trabalho na manipulação de datas e horários em Python, pesquisa sobre datetime e timedelta que pertencem ao módulo datetime. Considere que o saldo das contas e o valor das transações são sempre números inteiros. O trabalho deve ser feito individualmente. Trabalhos entregues após o prazo serão automaticamente rejeitados. Você será avaliado também pelas boas práticas de programação, como modularização, clareza e reuso de código. Trabalhos considerados plágio, com erro de execução, com formato de saııda incorreto, ou que não compilarem terão nota 0 (no caso de plágio, para quem copiou e para quem forneceu o trabalho). O trabalho deve ser enviado na sala da disciplina do AVA. Em caso de dúvidas na especificação do trabalhoou no próprio trabalho, contate-me em hsjunior@gmail.com “Se todas as tentativas falharem, siga as instruções da especificação.” (Murphy)
Compartilhar