Intro I’m a newbie in the Linux world but this dotfiles thing it’s AWESOME. So, as the law says, one must create a...
“Vending Machine” – 3 de ∞ | Report de Vendas
Uma das funcionalidades pedidas no enunciado é que o programa mostre um report de vendas desde que a máquina está ligada. Esta opção é a numero 7 do menu de gestão.
A função que vos trago hoje é a de report de vendas, ou seja, uma tabela igual a esta:
Para que se use a função que vou demonstrar tem de estar declarado duas variáveis globais, eu pelo menos usei duas.
A primeira será a que vai guardar os produtos que foram vendidos desde o arranque da máquina e a outra será a data e hora que ela arrancou:
static Integer[][][] produtosVendidos = new Integer[5][4][1]; static String dataArranque = "";
A primeira vou iniciar a zeros e a segunda vou iniciar com o seguinte código:
SimpleDateFormat dateformat = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"); Date newDate = new Date(); String newdate = dateformat.format(newDate); dataArranque=newdate;
De seguida tenho de garantir no código que sempre que se vende um produto é registado no array produtosVendidos com a quantidade vendida. Após isso, basta usar a seguinte função para fazer parte da opção 7 do menu de gestão.
private static String Produtos_Tabela_Geral_Vendidos() { String qnt,letra,texto=""; double ValorPrdVendidos=0; int qntPrdVendidos=0,qnt2=0;; double preco; System.out.println("Estatísticas de vendas do período que se iniciou a "+dataArranque+""); System.out.println("+-------------------------------------------------+"); System.out.println("| a b c d |"); System.out.println("+---+---------------------------------------------+"); for(int i=1;i<=(linhas-4);i++){ System.out.print("| "+i+" | "); for(int j=0;j<(colunas-1);j++){ letra=produtos[(i - 1)][j][0].substring(0, 1); qnt = produtos[(i - 1)][j][1]; preco =Double.valueOf(produtos[(i - 1)][j][2]); System.out.print(""+letra+""+qnt+" "); System.out.print(""+preco+" "); System.out.print(" "); } System.out.println("|"); System.out.print("|u/€| "); for(int j=0;j<(colunas-1);j++){ preco =Double.valueOf(produtos[(i - 1)][j][2]); qnt2 =Integer.valueOf(produtosVendidos[(i - 1)][j][0]); qntPrdVendidos=qntPrdVendidos+produtosVendidos[(i - 1)][j][0]; ValorPrdVendidos=ValorPrdVendidos+(qnt2 * preco); System.out.print(""+produtosVendidos[(i - 1)][j][0]+""); System.out.print(" "); System.out.print(""+(qnt2 * preco)+" "); System.out.print(" "); } System.out.println("|"); System.out.print("| | "); for(int j=0;j<(colunas-1);j++){ if(produtos[(i - 1)][j][0].length()>11){ System.out.print(""+produtos[(i - 1)][j][0].substring(0, 11)+""); }else{ System.out.print(""+produtos[(i - 1)][j][0]+""); for(int k=produtos[(i - 1)][j][0].length();k<11;k++){ System.out.print(" "); } } } System.out.println("|"); if(i<(linhas-4)){ System.out.println("+~~~+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+"); } } System.out.println("+---+---------------------------------------------+"); System.out.println(" "); System.out.println("Valor das vendas neste período: "+ValorPrdVendidos+"€ "); System.out.println("Total de produtos vendidos: "+qntPrdVendidos+" "); System.out.println(" "); return texto; }
Esta pode não ser a forma mais eficiente/bonita/etc que se consiga arranjar, mas foi assim que fiz. Agora já têm uma das partes que vale mais na tabela classificativa do trabalho, toca a fazer o resto. 🙂
Para o que é até é pouco código 🙄
Tem uma interface muito bonita 😛
Cumps,
(MetalWeirdo)
Olá, tu consegues imprimir isso para o ficheiro de relatório???
Consigo, mas essa só mostra para ecrã, para ficheiro tem de levar umas modificações.
Eu estou colocando a informação dentro de um arraylist e depois imprimo o array