예제 #1
0
        static void Main(string[] args)
        {
            try{
                Clientes clientes = new Clientes();

                //Variável que contém o caminho do arquivo
                string origem = "BD_DadosClientes.txt";
                //Caminho do arquivo com Gastos de cada cliente no mês
                string caminhoGastosMensal = "BD_GastosClientes.txt";

                //Objeto do tipo StreamReader para manipulação de leitura de arquivos
                StreamReader dadosClientes = new StreamReader(origem);
                //StreamReader de Gastos Mensais
                StreamReader gastoMensal = new StreamReader(caminhoGastosMensal);

                string linha; //Variável para guardar cada linha

                //Laço while que pega linha por linha do arquivo de dadosClientes para tratamento
                while ((linha = dadosClientes.ReadLine()) != null)
                {
                    string[] dado = linha.Split("|");   //Cria um vetor à partir da divisão de elementos da linha

                    Telefone telefone = new Telefone(); //Feito criação de objeto Telefone

                    //As linha abaixo pegam cada dado do vetor e instanciam em variáveis específicas
                    int    id    = int.Parse(dado[0]);
                    string nome  = dado[1];
                    string email = dado[2];
                    telefone.addTelefone(dado[3]); //É adicionado ao objeto telefone
                    string rua    = dado[4];
                    string numero = dado[5];
                    string cidade = dado[6];

                    Endereco endereco = new Endereco(rua, numero, cidade);
                    Cliente  cliente  = new Cliente(id, nome, email, endereco, telefone);

                    clientes.addCliente(cliente);

                    string linha2;                                    //Variável para verificar linhas do segundo arquivo
                    while ((linha2 = gastoMensal.ReadLine()) != null) //Verifica cada linha do arquivo
                    {
                        string[] valores = linha2.Split(";");
                        if (valores[0] == id.ToString())                         //Verifica se o numero de Id do segundo arquivo bate com o Id do cliente no primeiro arquivo
                        {
                            for (int i = 0; i < cliente.GastoMensal.Length; i++) //Enquanto i for menor que o tamanho do vetor de GastoMensal será definido para cada posição do GastoMensal um valor de valores
                            {
                                cliente.GastoMensal[i] = double.Parse(valores[i + 1], CultureInfo.InvariantCulture);
                            }
                        }
                    }
                    cliente.gastoAnual(); //Executado método para cálculo do gasto anual de um cliente

                    Console.WriteLine(cliente);
                    Console.WriteLine("Gasto anual: " + cliente.GastoAnual.ToString("F2", CultureInfo.InvariantCulture) + "\n");

                    //Verificado na documentação oficial que as seguintes linhas reiniciam a leitura do StreamReader
                    gastoMensal.DiscardBufferedData();                //Limpa o buffer
                    gastoMensal.BaseStream.Seek(0, SeekOrigin.Begin); //Define de onde iniciar e como será o restante da leitura
                }
                clientes.totalGastos();                               //Executado método para deferir o total de gastos de todos os clientes

                //System.Console.WriteLine("Teste");

                dadosClientes.Close();
                gastoMensal.Close();

                Console.Write("GASTO TOTAL DOS CLIENTES: R$" + clientes.GastoTotal.ToString("F2", CultureInfo.InvariantCulture) + "\n");
            }
            catch (Exception m) {
                Console.WriteLine("Ocorreu um erro: \n");
                Console.WriteLine(m.Message);
            }
        }