---
# System prepended metadata

title: yha

---

# yha
### Bibliotecas
import static java.lang.System.*;
import java.util.*;
import java.io.*;

### Dados globais
String msg; - para as mensagens

static Conta cont; -item da colecao

static List <Conta> lstcont = new ArrayList<>(); - coleçao de itens


String procura;

int id;

String pergunta [] = {"",""};

String filename;

## Carregar 
     public static List<Conta> Carregar (Object [][] ob) {
 
     //Dados
     List <Conta> l = new ArrayList<>();//Colecao de contas
     Conta C;//elemento simples da conta
 
     for (Object o[] : ob) {
 
     C = new Conta ((String)  o[0],
                    (String)  o[1],
                    (Data)    o[2],
                    (Float)   o[3]);
                
                
            nao esquecer -   l.add(C);//Junta a conta á colecao de contas
            }//end for
            out.printf("Foram carregadas %d contas",l.size());
 
     return l;
     }


    instanciar o metodo : 

      lstcont = CarregarConta(CONTA);
  
 ## Listar 
    public static void Listar(List <Conta> lc) {

    //titulo 
    out.printf("\n\t\tListar\n");
    
    //nome das Colunas
    out.printf("%5s %12s %12s %15s %15s %15s","Pos","Banco",Nome","Apelido","Data","Saldo")
    
    
    for (Conta C : lc)
    
    out.printf("\n\t%5s %12s %12s %15s %15s %15s",
    lc.indexOf(C),
    C.getBanco(),
    C.getNome(),
    C.getApelido,
    (C.getData()).toString(),
    C.getSaldo());
    
    out.printf("\n\n");
       }//end metodo
   
   
 
     Instanciar o metodo:
      ListarContas(lstcont);
  
  ---
  ## Listar por nome
  
      public static void ListarLevantamentospormes(List <Movimento> lm, int x) {
    //Titulo da tarefa
    out.printf("\n\t\t%s\n","Listagem de Levantamentos por nome");

    //Cabecalho das colunas da listagem
    out.printf("\n\t%5s  %10s %8s %15s %10s",
    "Pos","Nome","Apelido","Data" ,"Saldo");

    //corpo
     for (Movimento A: lm)
		if (A.getNome().equals(x))
     out.printf("\n\t%5s %10s %8s %15s %10s",
    lm.indexOf(A),
     A.getNome(),
     A.getApelido(),
     (A.getData()).toString(),
     A.getQuantia());

    out.printf("%s","\n\n");
      }//end metodo
   
   ---
  ## Listar por nome letra
   
    public static void ListarArtigosNome(List <Movimentos> lm) {
    String  x ;
	   //Titulo da Listagem
     System.out.printf("\n%5s %15s %15s %8s %10s %8s %8s %8s",
     "Pos","Artigo","Unidades","Preco","Quant.","Margem","Despesa","Receita");
     
     for (Movimentos M: lm)
		 if (M.getNome().startsWith(x))
     //Conteudo da listagem por colunas
     System.out.printf("\n%5d %15s %15s %8.2f %10.2f %8.2f %8.2f %8.2f",
      lm.indexOf(M),
      M.getNome(),
      M.getUnidade(),
      M.getPreco(),
      M.getQuantidade(),
      M.getMargem(),
      M.getDespesa(),
      M.getReceita());
     }
     System.out.println();
	}//end
   
   
   
   
       Instanciar o metodo:
   
       case 3: //Listagem Parcial Nome
		ListarArtigosNome(lstmovi, "Que") ;
		x = false; break;
   

 ---
 ## 
   
   
   
   
   
   
   
   

   ---
   #### Admitir String ou inteiro 
       public static String AdmitirString(String x)
                     ou int
       String devolve="";
       ou 
       int dev=0;
       
       out.printf("%s",x);
       devolve = sc.nextLine();
       ou
       dev = sc.nextInt();
   
       return devolve;
   
   ---
       Instanciar o metodo listar por nome:
      
        sc.nextLine();
	    procura = AdmitirString(msg4);
        ListarMovimentospornomedomes(lstmov, procura);
        
        
   ---     
   
  ## Admitir dados
      
        
        public static Conta AdmitirConta (String [] c) {
        Conta cont;//elemento da conta
        Object novo[] = new Object[5];
        int ct = 0;
        
        //se tiver data
        String str_dt [];
        int D[] = int new [3];
        //
        sc.nextLine();
        
        for (String X : c) {
        
        out.printf("\n\t%s",c[ct]); -mostrar as perguntas
        
        switch(ct) {
        
        case 0: 
            novo[0] = sc.nextLine();
            break;
        
        case 1:
            novo[1] = sc.nextLine();
        
        case 2 : 
            novo[2] = sc.nextLine()
            
        case 3 : 
            novo[3] = sc.nextLine();
        
            //se tiver data
            str_dt = ((String) novo[3]).split("-"); - decompor as tres strings
            
            Afectar os inteiros para a data
            D[0] = Integer.parseInt(str_dt[0]);
            D[1] = Integer.parseInt(str_dt[1]);
            D[2] = Integer.parseInt(str_dt[2]);
            //
            break;
            
        case 4 : 
            novo[4] = sc.nextFloat(); 
            break;
        }//end of switch
        ct++ //contador
        
        
        }//end for
        
        cont = new Conta ((String) novo[0],
                          (String) novo[1],
                          (String) novo[2],
                          (Data)   new Data (D[0],D[1],D[2]),
                          (Float)  novo[4]);
        
        return cont;
        
    
        }//end
        
       
---
       
## Inserir Dados

    public static void Inserir (List <Conta> lc,Conta C) {
    
    lc.add(A);
    
    }//end
    
 ---
     Instanciar o metodo:
 
     cont = Admitir(Perguntas);
     Inserir(lstconta,cont)
 
 
 ## Remover Dados
     public static void Remover (List <Conta> lc,int x) {
     
     
    lc.remove(x);
    
     }//end
     
--- 
        
    Instanciar o metodo
    //id é um inteiro qualquer.
 
    Listar(lstcont);
    id = AdmitirInt(msg2);
    Remover(lstcont,id);
    
    
---

## Gravar 
    
     public static void GravarFicheiroContas(String nm, List <Conta> lc) throws IOException {
	    FileWriter fw  = new FileWriter(nm);
	    PrintWriter pw = new PrintWriter(fw);

	    for (Conta a : lc) {
			pw.printf("%s,%s,%s,%s,%s\n",
			          a.getBanco(),
			          a.getNome(),
			          a.getApelido(),
			          a.getData(),
			          a.getSaldo());
		         
                     }//end

	     pw.close();
	     fw.close();

		    System.out.printf("\n\tO ficheiro foi gravado");
      }//end


    Instanciar o metodo:
    
    try {        
              GravarFicheiroContas(filename,lstcont);
              
	     }catch(IOException ioe) { ioe.printStackTrace(); }
         
            
---
## To string 
por causa da data
                
        public String toString() {

	 return String.format("%d-%d-%4d",			
     
     this.getDia(),
						 this.getMes(),
						 this.getAno());
    }//end
    }//end class
    
    
---