quarta-feira, 16 de junho de 2010

Java + exemplo de Modularização



Algoritmo proposto : 


Desenvolva um algoritmo modularizado que receba o valor da compra de um produto e, 
a partir de um menu de opções, permita ao usuário escolher entre:

a. calcular e retornar o pagamento a vista com 20% de desconto; (função com parâmetros) 
b. calcular e mostrar o pagamento em duas vezes com entrada e com 10% de desconto; 
(procedimento com parâmetros) 
c. calcular e retornar o pagamento a vista no cartão com 15% de desconto; (função com 
parâmetros) 
d. calcular e mostrar o pagamento em duas vezes no cartão com 5% de desconto; (função 
com parâmetros) 
e. calcular e mostrar o pagamento a prazo em duas vezes sem entrada com acréscimo de 
5%; (procedimento com parâmetros) 
f.calcular e retornar o pagamento a prazo em três vezes sem entrada com acréscimo de 
10%. (função com parâmetros) 
Obs1.: após a chamada das funções, mostrar o resultado. 
Obs2.: uma das opções do menu deve ser a de sair do programa.

/*
  Professor : Lucy Mary    
  Version 2.0 
Created by Mario Cezzare mcezzare@gmail.com  on   Wed Jun  2 03:15:41 on ttys000
Faculdade Veris IBTA : Turma 1ADSI / 2010
revisado para 2.0 on  Thu Jun 10 04:56:28 on ttys000
detalhes da revisão: Tratamento de Erro, e apenas pede o Valor se a opção for != de 7/Sair  
// 
 * Apostila XXXX
 * ALG n : 2
 * CAPITULO:9 
 * PAGINA :  XXXX
 * EXERCICIO : XXX
 * XXX. Desenvolva um algoritmo modularizado que receba o valor da compra de um produto e, 
a partir de um menu de opções, permita ao usuário escolher entre:

a. calcular e retornar o pagamento a vista com 20% de desconto; (função com parâmetros) 
b. calcular e mostrar o pagamento em duas vezes com entrada e com 10% de desconto; 
(procedimento com parâmetros) 
c. calcular e retornar o pagamento a vista no cartão com 15% de desconto; (função com 
parâmetros) 
d. calcular e mostrar o pagamento em duas vezes no cartão com 5% de desconto; (função 
com parâmetros) 
e. calcular e mostrar o pagamento a prazo em duas vezes sem entrada com acréscimo de 
5%; (procedimento com parâmetros) 
f.calcular e retornar o pagamento a prazo em três vezes sem entrada com acréscimo de 
10%. (função com parâmetros) 
Obs1.: após a chamada das funções, mostrar o resultado. 
Obs2.: uma das opções do menu deve ser a de sair do programa. 
*/
import javax.swing.*;
class bim2_hot_cap9_ex_13_v2{
       
    
    static double Pag_Vista_desc_20 (double x) /* a. calcular e retornar 
    o pagamento a vista com 20% de desconto; (função com parâmetros) */
    {
  return x - (x * 0.2);
    }
    static void Pag_2x_desc_10 (double x) /*b. calcular e mostrar o pagamento em duas vezes com
     entrada e com 10% de desconto; (procedimento com parâmetros) */ 
    {
double res,fim;
res = (x / 2);
fim = res - (res*0.1); // 10% desconto
System.out.println("Valor Final: Entrada de R$"+ fim +"  + 1 parcela de: R$"+fim);
    }
    
    static void Pag_Vista_Cartao (double x, double desc) /*c. calcular e retornar o pagamento a vista no cartão
     com 15% de desconto; (função com parâmetros)*/
    {
double perc,fim,aux;
//int desc = 15;
/*
fim = x - (x * 0.15);
System.out.println(perc);
System.out.println(aux);*/
perc = (desc/100);
aux = (x * perc);
fim = x - aux ;// 15% desconto
System.out.println("Valor Final: a Vista R$"+ fim + " com " + desc + "% de Desconto" );
    }
    
    static void Pag_Cartao_parc(double x)/*d. calcular e mostrar o pagamento em duas vezes no cartão
     com 5% de desconto; (função com parâmetros)*/
    {
    double fim,perc;
    perc = 0.10;
fim = x - (x * perc );// 5% desconto
System.out.println("O valor fica em 2 de R$"+ (fim /2) );
    }
    static void Pag_Prazo_Acres_Parc(double val, double ac,int qt)/*e. calcular e mostrar o pagamento a prazo em duas vezes 
    sem entrada com acréscimo de 5%; (procedimento com parâmetros) 
    &  
    f.calcular e retornar o pagamento a prazo em três vezes sem entrada com acréscimo de    
     10%. (função com parâmetros)
    */
    { //val - total | ac - % de Acrescimo | qt - qtd de parcelas
    double res,fim,parc;
parc = (val / qt);
    fim = val + (val *(ac/100)); // %  de Acrescimo
System.out.print("Valor Final : " + fim + " em " + qt + " Parcelas de ");
System.out.format("%.2f%n",(fim/qt) );
    }
    
    public static void menu(){
    String initial = "Opcoes: \n1 - Pagamento a vista \n" +
"2 - 2x Entrada no Ato \n" + "3 - A vista no Cartão \n" + "4 - 2x no Cartão \n"
"5 - 2x Sem Entrada\n" + "6 - A Prazo Sem Entrada \n" + "7 - Sair \n" + "\n";
    System.out.print(initial);
    //JOptionPane.showMessageDialog(null,initial);
    JOptionPane.showMessageDialog(null, initial, "Bem Vindo, Veja as Opcoes Abaixo", 0,null );
    }

    public static void main(String args[]) {
    int desc,op;
    double val,valAux;
    menu();
    try {
    op = Integer.parseInt(JOptionPane.showInputDialog("Digite Opção"));
    if (op==7){
    val = 0;
    }else {
    val = Double.parseDouble(JOptionPane.showInputDialog("Digite o valor Total da Compra"));
    }
    switch(op)
    {
    case 1:
    valAux = Pag_Vista_desc_20(val);
    System.out.println("Valor Final: 1 parcela de R$ " + valAux);
    System.exit(0);
    break;
    
    case 2:
    Pag_2x_desc_10(val);
    System.exit(0);
       break;
    
    case 3:
    Pag_Vista_Cartao(val,15); // 15% desconto 
    System.exit(0);
       break;
    
    case 4:
    Pag_Cartao_parc(val);
    System.exit(0);
       break;
    
    case 5:
    int qtd;
    double acresc;
    qtd=Integer.parseInt(JOptionPane.showInputDialog("Qtd de Parcelas"));
    if (qtd>2){
    JOptionPane.showMessageDialog(null,"Escolha a opção 6 para + de 2 parcelas" );
    System.exit(0);
    }

    acresc = 5;
    Pag_Prazo_Acres_Parc(val,acresc,qtd);
    System.exit(0);
       break;
    
    case 6:
    int qtd2;
    double acresc2;
    qtd2=Integer.parseInt(JOptionPane.showInputDialog("Qtd de Parcelas"));
    acresc2 = 10;
    Pag_Prazo_Acres_Parc(val,acresc2,qtd2);
    System.exit(0);
    break;
    
    case 7:
    System.out.println("Obrigado. Fim do Programa");
    System.exit(0);
        break;
        
    default :
    System.out.println("Obrigado. Fim do Programa");
    System.exit(0);
        
    }    
    }
    catch(Exception e){
    System.out.println(e);
    System.out.println(e.getCause()); //--> java.lang.NumberFormatException: null
    if (e.getCause()==null){
    
    System.out.println("Escolha uma opção!");
    JOptionPane.showMessageDialog(null,"Escolha uma opção!" );
    }
    
    }
    
        
}
}

Nenhum comentário: