Segundo parcial


InterfazLineasTelefonicas
package LineasTelefonicas;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.GridLayout;
import javax.swing.JOptionPane;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;
import Unidades.LineasTelefonicas.Mundo.Empresa;
public class InterfazLineasTelefonicas extends JFrame {

            //private static final String getPreferredSize = null;
           
            private Empresa empresa;
            private PanelImagen panelImagen;
            private PanelTotales panelTotales;
            private PanelLineasTelefonicas panelLinea1;
            private PanelLineasTelefonicas panelLinea2;
            private PanelLineasTelefonicas panelLinea3;
            private PanelExtension panelExtension;
            private JPanel contentPane;
            private PanelImagen panelImagen1;
           
                        public InterfazLineasTelefonicas() {
                        empresa=new Empresa();
                        empresa.inicializar();
                        getContentPane().setLayout(new BorderLayout());
                        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                       
                        //this.setSize(new Dimension(500,500));
                        //this.setMinimumSize(new Dimension(500,500));
                        setTitle("----LINEAS TELEFONICAS ---");
                       
           
                        JPanel panelSuperior=new JPanel();
                        panelSuperior.setLayout(new BorderLayout());
                        getContentPane().add(panelSuperior,BorderLayout.NORTH);
           
        panelImagen=new PanelImagen();
        panelSuperior.add(panelImagen,BorderLayout.WEST);
 
       
        panelTotales= new PanelTotales();
        panelSuperior.add(panelTotales,BorderLayout.CENTER);
       
                        JPanel panelContenedor=new JPanel();
                        panelContenedor.setLayout(new GridLayout(1,3));
                        getContentPane().add(panelContenedor,BorderLayout.CENTER);
                       
                        panelLinea1=new PanelLineasTelefonicas(this,1);
                        panelContenedor.add(panelLinea1);
                       
                       
                        panelLinea2=new PanelLineasTelefonicas(this ,2);
                        panelContenedor.add(panelLinea2);
                       
                       
                        panelLinea3=new PanelLineasTelefonicas(this ,3);
                        panelContenedor.add(panelLinea3);
       
                        panelExtension=new PanelExtension(this);
               getContentPane().add(panelExtension,BorderLayout.SOUTH);
               pack();
               setResizable(false);
            }

            public void agregarLlamada(int numeroLinea)
            {
                        String minutos=JOptionPane.showInputDialog(this,"Numero de minutos hablados");
                        try{
                                   if (minutos!=null)
                                   {
                                               int min=Integer.parseInt(minutos);
                                               if(min<=0)
                                               {
                                                           JOptionPane.showMessageDialog(this,"Elnumero de minutos debe ser mayor a cero","Error",JOptionPane.ERROR_MESSAGE);
                                                           return;
                                               }
                                               Object[]possibilities={"Local","Larga distancia","Celular"};
                                               String tipo=(String)JOptionPane.showInputDialog(this,"Tipo de llamada:","Tipo ",JOptionPane.QUESTION_MESSAGE, null,possibilities,"Local");
                                               if(tipo!=null)
                                                           {
                                                           if(numeroLinea==1)
                                                           {
                                                                       if("Local".equals(tipo))
                                                                       {
                                                           empresa.agregarLlamadaLocalLinea1(min);
                                                           }
                                                           else if ("Larga distancia".equals(tipo))
                                                           {
                                                           empresa.agregarLlamadaLargaDistanciaLinea1(min);
                                                           }
                                                           else if("Celular".equals(tipo))
                                                           {
                                                           empresa.agregarLlamadaCelularLinea1(min);
                                                           }
                                               }
                                   else if(numeroLinea==2)
                                   {
                                               if("Local".equals(tipo))
                                               {
                                                           empresa.agregarLlamadaLocalLinea2(min);
                                               }
                                               else if("Larga distancia".equals(tipo))
                                               {
                                                           empresa.agregarLlamadaLargaDistanciaLinea2(min);
                                                           }
                                               else if("Celular".equals(tipo))
                                  
                                               {
                                   empresa.agregarLlamadaCelularLinea2(min);
                                               }
                                   }
                                   else if(numeroLinea==3)
                                   {
                                               if("Local".equals(tipo))
                                               {
                                                           empresa.agregarLlamadaLocalLinea3(min);
                                               }
                                               else if("Larga distancia".equals(tipo))
                                               {
                                                           empresa.agregarLlamadaLargaDistanciaLinea3(min);
                                                           }
                                               else if("Celular".equals(tipo))
                                  
                                               {
                                   empresa.agregarLlamadaCelularLinea3(min);
                                               }
                                   }
                                               actualizar();
                        }       
                                   }
        }
                 catch (NumberFormatException e)
                 {
                         JOptionPane.showMessageDialog(this,"El número de minutos es inválido","Error",JOptionPane.ERROR_MESSAGE);
                 }
                 }                
                 public void reiniciar()
                 {
                         empresa.reiniciar();
                         actualizar();
            }
                 private void actualizar()
                 {
                         panelTotales.actualizar(empresa);
                         panelLinea1.actualizar(empresa.darLinea1());
                         panelLinea2.actualizar(empresa.darLinea2());
                         panelLinea3.actualizar(empresa.darLinea3());
                                   }
                 public void reqFuncOption1()
                 {
                         String resultado=empresa. metodo1();
                         JOptionPane.showMessageDialog(this, resultado,"Respuesta",JOptionPane.INFORMATION_MESSAGE);
                 }
                 public void reqFuncOption2()
                 {
                         String resultado=empresa. metodo2();
                         JOptionPane.showMessageDialog(this, resultado,"Respuesta",JOptionPane.INFORMATION_MESSAGE);
                 }
                 public static void main (String[]arg){
                         InterfazLineasTelefonicas interfaz=new InterfazLineasTelefonicas();
                         interfaz.setVisible(true);
                 }
                       

            }



















PanelExtension
package LineasTelefonicas;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.border.TitledBorder;

public class PanelExtension extends JPanel implements ActionListener {
           
            private static final String REINICIAR= "REINICIAR";
           
            private static final String OPCION_1= "OPCION_1";
           
            private static final String OPCION_2= "OPCION_2";
           
            private InterfazLineasTelefonicas principal;
           
            private JButton btnReiniciar;
           
            private JButton btnOpcion1;
           
            private JButton btnOpcion2;
           
            public PanelExtension(InterfazLineasTelefonicas elPadre){
                        principal=elPadre;
                        setBorder(new TitledBorder("Opciones"));
                        setLayout(new GridLayout(1,3));
                       
                        btnReiniciar= new JButton("Reiniciar");
                        btnReiniciar.setActionCommand("REINICIAR");
                        btnReiniciar.addActionListener(this);
                        add(btnReiniciar);
                       
                        btnOpcion1=new JButton("Opción 1");
                        btnOpcion1.setActionCommand("OPCION_1");
                        btnOpcion1.addActionListener(this);
                        add(btnOpcion1);
                       
                        btnOpcion2=new JButton("Opción 2");
                        btnOpcion2.setActionCommand("OPCION_2");
                        btnOpcion2.addActionListener(this);
                        add(btnOpcion2);
            }
           
            public void actionPerformed(ActionEvent e){
                        if(OPCION_1.equals(e.getActionCommand())){
                                   principal.reqFuncOption1();
                        }
                        else if (OPCION_2.equals(e.getActionCommand())){
                                   principal.reqFuncOption2();
                        }
                        else if (REINICIAR.equals(e.getActionCommand())){
                                   principal.reiniciar();
                        }
            }
           
}

























PanelLineasTelefonicas
package LineasTelefonicas;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DecimalFormat;
import java.text.NumberFormat;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.TitledBorder;

import Unidades.LineasTelefonicas.Mundo.LineaTelefonica;

public class PanelLineasTelefonicas  extends JPanel implements ActionListener{
           
            private static final String AGREGAR="AGREGAR";
            private InterfazLineasTelefonicas principal;
            private int numeroLinea;
            private JLabel etiquetaImagen;
            private JLabel etiquetaCosto;
            private JLabel etiquetaNumeroLlamadas;
            private JLabel etiquetaMinutos;
            private JButton btnAgregar;
           
            public PanelLineasTelefonicas(InterfazLineasTelefonicas laPrincipal,int elNumeroLinea){
                       
                        principal = laPrincipal;
                        numeroLinea= elNumeroLinea;
                        setBorder(new TitledBorder("Línea #"+numeroLinea));
                        setLayout(new GridBagLayout());
                        setPreferredSize(new Dimension(260,220));
                       
                        ImageIcon icono= new ImageIcon(getClass().getResource("58119.jpg"));
                        etiquetaImagen=new JLabel("");
                        etiquetaImagen.setIcon(icono);
                        etiquetaImagen.setBorder(new TitledBorder(""));
                       
                       
                        etiquetaCosto=new JLabel (formatearValor(0));
                        etiquetaCosto.setForeground(Color.blue.darker());
                        etiquetaCosto.setFont(new Font ("calibri",Font.BOLD,18));
                       
                        etiquetaNumeroLlamadas=new JLabel ("Número llamadas: 0 ");
                       
                        etiquetaMinutos= new JLabel ("Número de minutos: 0");
                       
                        btnAgregar=new JButton ("Agregar llamadas");
                        btnAgregar.setPreferredSize(new Dimension(150,25));
                        btnAgregar.setActionCommand(AGREGAR);
                        btnAgregar.addActionListener(this);
                       
                        GridBagConstraints posicion= new GridBagConstraints (0,0,2,2,0,0,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(5,5,5,5),0,0);
                        add (etiquetaImagen,posicion);
                       
                        posicion= new GridBagConstraints (2,0,4,2,0,0,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(5,5,5,5),0,0);
                        add (etiquetaCosto,posicion);
                       
                        posicion= new GridBagConstraints (0,2,6,2,0,0,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(5,5,5,5),0,0);
                        add (etiquetaNumeroLlamadas,posicion);
                       
                        posicion= new GridBagConstraints (0,4,6,2,0,0,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(5,5,5,5),0,0);
                        add (etiquetaMinutos,posicion);
           
                        posicion= new GridBagConstraints (0,6,6,2,0,0,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(5,5,5,5),0,0);
                        add (btnAgregar,posicion);
            }
            public void actualizar(LineaTelefonica linea)
            {
                       
                        etiquetaCosto.setText(formatearValor(linea.darCostoLlamadas()));
                        etiquetaNumeroLlamadas.setText("Numero Llamadas: "+formatearValorEntero(linea.darNumeroLlamadas()));
                        etiquetaMinutos.setText("Numero de Minutos: "+formatearValorEntero(linea.darNumeroMinutos()));
                        }
            private String formatearValor(double valor){
                        DecimalFormat df =(DecimalFormat)NumberFormat.getInstance();
                        df.applyPattern("$ ###,###.##");
                        df.setMinimumFractionDigits(2);
                        return df.format(valor);
            }
            private String formatearValorEntero (int valor){
                        DecimalFormat df =(DecimalFormat)NumberFormat.getInstance();
                        df.applyPattern("###,###");
                        df.setMinimumFractionDigits(0);
                        return df.format(valor);
            }
            public void actionPerformed(ActionEvent e){
                        if (AGREGAR.equals(e.getActionCommand()))
                        {
                                   principal.agregarLlamada(numeroLinea);
                        }
            }
}


LineaTelefonica
package Unidades.LineasTelefonicas.Mundo;

public class LineaTelefonica {
     
      private int numeroLlamadas;
     
      private int numeroMinutos;
     
      private double costoLlamadas;
     
      public void inicializar(){
           
            numeroLlamadas= 0;
            numeroMinutos= 0;
            costoLlamadas= 0;
      }
      public void reiniciar(){
            numeroLlamadas= 0;
            numeroMinutos= 0;
            costoLlamadas= 0;
      }
     
      public double darCostoLlamadas(){
            return costoLlamadas;
      }
     
      public int darNumeroLlamadas(){
            return numeroLlamadas;
      }
     
      public int darNumeroMinutos(){
            return numeroMinutos;
      }
     
      public void agregarLlamadaLocal(int minutos){
           
            numeroLlamadas=numeroLlamadas +1;
           
            numeroMinutos=numeroMinutos+ minutos;
           
            costoLlamadas= costoLlamadas+ (minutos*2);
      }
     
      public void agregarLlamadaLargaDistancia(int minutos){
           
            numeroLlamadas=numeroLlamadas +1;
           
            numeroMinutos=numeroMinutos+ minutos;
           
            costoLlamadas= costoLlamadas+ (minutos*10);
      }
     
      public void agregarLlamadaCelular(int minutos){
           
            numeroLlamadas=numeroLlamadas +1;
           
            numeroMinutos=numeroMinutos+ minutos;
           
            costoLlamadas= costoLlamadas+ (minutos*15);
      }
}




























PanelTotales
package LineasTelefonicas;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.TitledBorder;
import Unidades.LineasTelefonicas.Mundo.Empresa;

public class PanelTotales extends JPanel {
            private JLabel etiquetaNumeroLlamadas;
            private JLabel etiquetaCosto;
            private JLabel etiquetaMinutos;
            private JLabel etiquetaCostoPromedio;
            public PanelTotales (){
                        setBorder( new TitledBorder("Totales"));
                        setLayout(new GridBagLayout());
                        etiquetaCosto= new JLabel(formatearValor(0));
                        etiquetaCosto.setForeground(Color.BLUE.darker());
                        etiquetaCosto.setFont(new Font("Calibri", Font.BOLD, 40));
                       
                        etiquetaNumeroLlamadas=new JLabel("Total de llamadas: 0");
                       
                        etiquetaMinutos=new JLabel("Total minutos: 0");
                       
                        etiquetaCostoPromedio= new JLabel("Costo promedio por minuto: N/A");
                       
                        GridBagConstraints posicion= new GridBagConstraints (2,2,1,15,1,15,GridBagConstraints.CENTER, GridBagConstraints.VERTICAL, new Insets(5,5,5,5),0,0);
                        add (etiquetaCosto,posicion);
                       
                        posicion= new GridBagConstraints (2,17,1,1,1,1,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(5,5,5,5),0,0);
                        add (etiquetaNumeroLlamadas,posicion);
                       
                        posicion= new GridBagConstraints (2,18,1,1,1,1,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(5,5,5,5),0,0);
                        add (etiquetaMinutos,posicion);
                       
                        posicion= new GridBagConstraints (2,19,1,1,1,1,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(5,5,5,5),0,0);
                        add (etiquetaCostoPromedio,posicion);
            }
public void actualizar(Empresa empresa)
{
            etiquetaCosto.setText(formatearValor(empresa.darTotalCostoLlamadas()));
            etiquetaNumeroLlamadas.setText("Total de minutos: "+fomtaearValorEntero(empresa.darTotalNumeroLlamadas()));
            etiquetaMinutos.setText("Total de Minutos"+fomtaearValorEntero(empresa.darTotalMinutos()));
            if(!Double.isNaN(empresa.darCostoPromedioMinuto())){
                        etiquetaCostoPromedio.setText("Costo promedio por minuto: "+formatearValor(empresa.darCostoPromedioMinuto()));
            }
            else{
                        etiquetaCostoPromedio.setText(" Costo promedio por minuto: N/A");
            }
}
private String formatearValor(double valor){
            DecimalFormat df=(DecimalFormat)NumberFormat.getInstance();
            df.applyPattern("$ ###,###.##");
            df.setMinimumFractionDigits(2);
            return df.format(valor);
}
private String fomtaearValorEntero(int valor){
            DecimalFormat df=(DecimalFormat)NumberFormat.getInstance();
            df.applyPattern("###,###");
            df.setMinimumFractionDigits(0);
            return df.format(valor);
}
            }








Empresa
package Unidades.LineasTelefonicas.Mundo;

public class Empresa {
private LineaTelefonica linea1;
private LineaTelefonica linea2;
private LineaTelefonica linea3;
public void inicializar(){
      linea1 =new LineaTelefonica();
      linea1.inicializar();
     
      linea2 =new LineaTelefonica();
      linea2.inicializar();
     
      linea3 =new LineaTelefonica();
      linea3.inicializar();
}
public LineaTelefonica darLinea1(){
      return linea1;
}
public LineaTelefonica darLinea2(){
      return linea2;
}
public LineaTelefonica darLinea3(){
      return linea3;
}


public void agregarLlamadaLocalLinea1(int minutos)
{
      linea1.agregarLlamadaLocal(minutos);
}
public void agregarLlamadaLocalLinea2(int minutos)
{
      linea2.agregarLlamadaLocal(minutos);
}
public void agregarLlamadaLocalLinea3(int minutos)
{
      linea3.agregarLlamadaLocal(minutos);
}


public void agregarLlamadaLargaDistanciaLinea1(int minutos)
{
      linea1.agregarLlamadaLargaDistancia(minutos);
}
public void agregarLlamadaLargaDistanciaLinea2(int minutos)
{
      linea2.agregarLlamadaLargaDistancia(minutos);
}
public void agregarLlamadaLargaDistanciaLinea3(int minutos)
{
      linea3.agregarLlamadaLargaDistancia(minutos);
}

public void agregarLlamadaCelularLinea1(int minutos)
{
      linea1.agregarLlamadaCelular(minutos);
}
public void agregarLlamadaCelularLinea2(int minutos)
{
      linea2.agregarLlamadaCelular(minutos);
}
public void agregarLlamadaCelularLinea3(int minutos)
{
      linea3.agregarLlamadaCelular(minutos);
}
public int darTotalNumeroLlamadas(){
      int total =linea1.darNumeroLlamadas()+linea2.darNumeroLlamadas()+linea3.darNumeroLlamadas();
      return total;
}
public int darTotalMinutos() {
      int total =linea1.darNumeroMinutos()+linea2.darNumeroMinutos()+linea3.darNumeroMinutos();
      return total;
}
public double darTotalCostoLlamadas(){
      double total =linea1.darCostoLlamadas()+linea2.darCostoLlamadas()+linea3.darCostoLlamadas();
      return total;
}
public double darCostoPromedioMinuto(){
      double promedio=darTotalCostoLlamadas()/darTotalMinutos();
      return promedio;
}
public void reiniciar() {
      linea1.reiniciar();
      linea2.reiniciar();
      linea3.reiniciar();
}
public String metodo1() {
      return "Respuesta 1";
}
public String metodo2() {
      return "Respuesta 2";
}
}





No hay comentarios:

Publicar un comentario