Guest User

Untitled

a guest
Apr 22nd, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 23.72 KB | None | 0 0
  1. /* Main.java */
  2.  
  3. package elcarritomagico;
  4. /*
  5.  *  Class: Main
  6.  *  Extends: Ninguno
  7.  *  Implements: Ninguno
  8.  *  Ayuda: Programa principal, arranque del sistema
  9.  */
  10. public class Main {
  11.  
  12.     public static void main(String[] args) {
  13.         Menu _menu = new Menu();
  14.     }
  15.  
  16. }
  17.  
  18. /* Menu.java */
  19.  
  20. package elcarritomagico;
  21.  
  22. import java.util.Calendar;
  23. import java.util.GregorianCalendar;
  24. /*
  25.  *  Class: Menu
  26.  *  Extends: Helpers
  27.  *  Implements: Ninguno
  28.  *  Ayuda: Menú general para el inicio del sistema
  29.  */
  30. public final class Menu extends Helpers{
  31.     /*
  32.      * Clase: Database
  33.      * Objeto: _database
  34.      */
  35.     Database _database = new Database();
  36.     /*
  37.      * Clase: GregorianCalendar
  38.      * Objeto: _date
  39.      * Adicional: Relacionados a la fecha y hora
  40.      */
  41.     Calendar _date = new GregorianCalendar();
  42.     String day, month, year, fullDate, fullHour;
  43.     int hour, minute, seconds;
  44.     //Variable para el nombre del supermercado
  45.     String _name = "";
  46.     //Variable para el nombre de la persona que atiende
  47.     String  _vendorName = "";
  48.     //Variable del RFC
  49.     String _rfc = "";
  50.     //Variable para la dirección
  51.     String _address = "";
  52.     //Variable para el teléfono
  53.     String _phone = "";
  54.     //Arreglo para la información del Software
  55.     String[] _softwareData = new String[3];
  56.     //Variable para el reinicio del sistema
  57.     boolean restart = false;
  58.     //Variable para la cantidad de objetos comprados
  59.     int totalItems = 0;
  60.     //Variable para la salida de ventas
  61.     String finishSell = "";
  62.     //Variable para buscar el código del objeto a comprar
  63.     String itemToSearch = "";
  64.     //Variable para la selección de la categoría
  65.     int category = 0;
  66.     //Variable para conocer si fue o no encontrado el objeto
  67.     String _finded = "";
  68.     //Variable para los objetos comprados
  69.     String buyedItems = "";
  70.     //Variable para el análisis de los objetos comprados
  71.     String _items = "";
  72.     //Variable especial para el folio
  73.     int _folio = 00001;
  74.     //Arreglo de información para ventas. Y variables de uso
  75.     String sellsInfo[][] = new String[100][5];
  76.     int _count = 0;
  77.     /*
  78.      * Método: __construct();
  79.      * Parámetros:
  80.      * @Param: Ninguno
  81.      * @Return: Ninguno
  82.      * Ayuda: Constructor principal para configuraciones y valores iniciales
  83.      */
  84.     public void __construct()
  85.     {
  86.         _name = "El Carrito Mágico";
  87.         _rfc = "LOOM 640924 IL1";
  88.         _address = "Bartolome de las casas #97 Colonia Centro\n Morelia Michoacán México";
  89.         _phone = "(443) 312 07 20";
  90.         _vendorName = _getStringData("Introduzca el nombre del vendedor:");
  91.         _softwareData[0] = "0.0.3";
  92.         _softwareData[1] = "Equipo 7a";
  93.         _softwareData[2] = "05/Diciembre/2011";
  94.         //-------------------//
  95.         day = Integer.toString(_date.get(Calendar.DATE));
  96.         month = Integer.toString(_date.get(Calendar.MONTH) + 1);
  97.         year = Integer.toString(_date.get(Calendar.YEAR));
  98.         fullDate = day+"/"+month+"/"+year;
  99.         hour = _date.get(Calendar.HOUR_OF_DAY);
  100.         minute = _date.get(Calendar.MINUTE);
  101.         seconds = _date.get(Calendar.SECOND);
  102.         fullHour = hour+":"+minute+":"+seconds;
  103.     }
  104.     /*
  105.      * Método: Menu();
  106.      * Parámetros:
  107.      * @Param: Ninguno
  108.      * @Return: Ninguno
  109.      * Ayuda: Constructor secundario, menú general que inicia el trabajo del sistema
  110.      */
  111.     Menu()
  112.     {
  113.         __construct();
  114.         //Opción del menú escogida por el usuario
  115.         int _menuOption = 0;
  116.         //Se estará realizando todo dentro de un proceso hasta que "_menuOption" sea
  117.         //diferente de 10.
  118.         do
  119.         {
  120.             //Obtenemos desde un menú la selección
  121.             _menuOption = _getIntFromStringData("Control de Supermercado: " + _name
  122.                     + "\n1) Realizar una nueva venta"
  123.                     + "\n2) Imprimir última venta"
  124.                     + "\n3) "
  125.                     + "\n4) "
  126.                     + "\n5) Imprimir información del día"
  127.                     + "\n8) Reiniciar el Sistema"
  128.                     + "\n9) Información del Software"
  129.                     + "\n10) Salir");
  130.             //Si no fue el valor esperado (entero) se demuestra un error
  131.             if(_menuOption == 400 || empty(_menuOption) || _menuOption > 10)
  132.                 _print("Por favor, selecciona una opción válida.");
  133.             else
  134.             {
  135.                 //Dependiendo a la selección, llamaremos la información
  136.                 switch(_menuOption)
  137.                 {
  138.                     //Realizar venta
  139.                     case 1:
  140.                         //Incremento de una venta, por lo que se creará un ticket para ella y el folio
  141.                         //aumentará para dar un nuevo folio por cada venta
  142.                         _folio++;
  143.                         //Se reinicia por cada nueva compra toda la información
  144.                         for(int i = 0; i < 100; i++)
  145.                         {
  146.                             for(int j = 0; j < 5; j++)
  147.                             {
  148.                                 if(sellsInfo[i][j] == null)
  149.                                     sellsInfo[i][j] = "";
  150.                                 else
  151.                                     sellsInfo[i][j] = "";
  152.                             }
  153.                         }
  154.                         do
  155.                         {
  156.                            category = _getIntFromStringData("Categoría:"
  157.                                    + "\n1) Electrónicos"
  158.                                    + "\n2) Línea blanca"
  159.                                    + "\n3) Muebles"
  160.                                    + "\n4) Blancos"
  161.                                    + "\n5) Hogar"
  162.                                    + "\n6) Discos y Películas"
  163.                                    + "\n7) Revistas y Libros"
  164.                                    + "\n8) Ferretería"
  165.                                    + "\n9) Perfumería"
  166.                                    + "\n10) Farmacia"
  167.                                    + "\n11) Papelería"
  168.                                    + "\n12) Jardinería"
  169.                                    + "\n13) Juguetería"
  170.                                    + "\n14) Deportes"
  171.                                    + "\n15) Regalos"
  172.                                    + "\n16) Ropa"
  173.                                    + "\n17) Frutas y Verduras"
  174.                                    + "\n18) Pescados y Mariscos"
  175.                                    + "\n19) Carnes"
  176.                                    + "\n20) Salchichonería"
  177.                                    + "\n21) Panadería"
  178.                                    + "\n22) Tortillería"
  179.                                    + "\n23) Cremas y Quesos"
  180.                                    + "\n24) Lácteos"
  181.                                    + "\n25) Salir");
  182.                            //Si la selección de la categoría fue mala, se dará un aviso
  183.                            if(category >= 26)
  184.                                category = 26;
  185.                            //Si la selección de la categoría fue "25" se saldrá
  186.                            if(category == 25)
  187.                                break;
  188.                            //En caso contrario, pedirá el código
  189.                            else
  190.                                //Se obtiene el código del objeto introducido por el usuario
  191.                                itemToSearch = _getStringData("Código:");
  192.                            finishSell = itemToSearch;
  193.                            switch(category)
  194.                            {
  195.                                //Electrónicos
  196.                                case 1:
  197.                                     //Se busca el código en las bases de datos
  198.                                    _finded = _database.electronics(itemToSearch);
  199.                                    //Se convierte a mayúsculas por cualquier caso necesario
  200.                                    _finded.toUpperCase();
  201.                                    //Si no fue encontrado,el retorno de el método es "" (vacío)
  202.                                    //Adicional, el código deberá ser diferente de "s1" ya que "s1" es el comando
  203.                                    //para salir de la venta.
  204.                                    if(_finded.equalsIgnoreCase("") && !itemToSearch.equalsIgnoreCase("s1"))
  205.                                        _print("Objeto no encontrado");
  206.                                    else
  207.                                    {
  208.                                        //Si el código introducido fue "s1" se rompe el búcle
  209.                                        if(itemToSearch.equalsIgnoreCase("s1"))
  210.                                            break;
  211.                                        else
  212.                                        {
  213.                                            int quantity = 0;
  214.                                             itemToSearch.toUpperCase();
  215.                                             _items = _database.electronics(itemToSearch);
  216.                                             buyedItems = _getItemName(_items);
  217.                                             quantity = _getIntFromStringData("Cantidad: ");
  218.                                             if(quantity == 400)
  219.                                                 quantity = _getIntFromStringData("La cantidad solo pueden ser valores enteros, introduzca una nueva cantidad:");
  220.                                              _print("Se compró: " + buyedItems
  221.                                                      + "\nCantidad: " + quantity
  222.                                                      + "\nPrecio: $" + (_getPriceValue(_items) * quantity));
  223.                                              sellsInfo[_count][0] = quantity + "";
  224.                                              sellsInfo[_count][1] = buyedItems;
  225.                                              sellsInfo[_count][2] = "0%";
  226.                                              sellsInfo[_count][3] = (_getPriceValue(_items) * quantity) + "";
  227.                                             _count++;
  228.                                             totalItems += quantity;
  229.                                        }
  230.                                    }
  231.                                    break;
  232.                                //Línea blanca
  233.                                case 2:
  234.                                    break;
  235.                                //Muebles
  236.                                case 3:
  237.                                    break;
  238.                                case 4:
  239.                                    break;
  240.                                case 5:
  241.                                    break;
  242.                                case 6:
  243.                                    break;
  244.                                case 7:
  245.                                    break;
  246.                                case 8:
  247.                                    break;
  248.                                case 9:
  249.                                    break;
  250.                                case 10:
  251.                                    break;
  252.                                case 11:
  253.                                    break;
  254.                                case 12:
  255.                                    break;
  256.                                case 13:
  257.                                    break;
  258.                                case 14:
  259.                                    break;
  260.                                case 15:
  261.                                    break;
  262.                                case 16:
  263.                                    break;
  264.                                case 17:
  265.                                    break;
  266.                                case 18:
  267.                                    break;
  268.                                case 19:
  269.                                    break;
  270.                                case 20:
  271.                                    break;
  272.                                case 21:
  273.                                    break;
  274.                                case 22:
  275.                                    break;
  276.                                case 23:
  277.                                    break;
  278.                                case 24:
  279.                                    break;
  280.                                case 26:
  281.                                    _print("Categoría no encontrada");
  282.                                    break;
  283.                            }
  284.                         }while(!finishSell.equalsIgnoreCase("s1"));
  285.                         break;
  286.                     //Imprimir la venta
  287.                     case 2:
  288.                         String sell = "";
  289.                         double totalPrice = 0;
  290.                         for(int i = 0; i < sellsInfo.length; i++)
  291.                         {
  292.                             for(int j = 0; j < sellsInfo[i].length; j++)
  293.                             {
  294.                                 if(sellsInfo[i][j].equalsIgnoreCase(""))
  295.                                     break;
  296.  
  297.                                 if(j == 3)
  298.                                 {
  299.                                     sell += sellsInfo[i][j];
  300.                                     totalPrice += convertToDouble(sellsInfo[i][j]);
  301.                                     sell += "\n";
  302.                                 }
  303.                                 else
  304.                                 {
  305.                                     sell += sellsInfo[i][j];
  306.                                     sell += " | ";
  307.                                 }
  308.                             }
  309.                         }
  310.                         double totalCash = _getDoubleFromStringData("Total a pagar: $" + totalPrice
  311.                                 + "\nEfectivo total: ");
  312.                                 if(totalCash == 400.0)
  313.                                     totalCash = _getDoubleFromStringData("El efectivo introducido no es válido, introduzca nuevamente el efectivo: ");
  314.                         _print(_name
  315.                            + "\nLe atendió: " + _vendorName
  316.                            + "\nRFC: " + _rfc
  317.                            + "\nDirección: " + _address
  318.                            + "\nTeléfono: " + _phone
  319.                            + "\n====================================================="
  320.                            + "\nFolio: " + _folio
  321.                            + "\nFecha: " + fullDate
  322.                            + "\nHora: " + fullHour
  323.                            + "\n====================================================="
  324.                            + "\n Cantidad | Nombre | Descuento | Total"
  325.                            + "\n " + sell
  326.                            + "\nSubtotal: $" + totalPrice
  327.                            + "\nMonedero: 0.00"
  328.                            + "\nDescuento: 0.0%"
  329.                            + "\nCargo: $0.00"
  330.                            + "\nTotal: $" + totalPrice
  331.                            + "\nEfectivo: $" + totalCash
  332.                            + "\nCambio: $" + (totalCash - totalPrice)
  333.                            + "\n¡Gracias por su preferencia, Vuelva pronto!"
  334.                            + "\nEste no es un comprobante fiscal"
  335.                            + "\nControl de Supermercados v" + _softwareData[0]
  336.                            );
  337.                         break;
  338.                     //
  339.                     case 3:
  340.                         break;
  341.                     case 4:
  342.                         break;
  343.                     case 5:
  344.                         //Se imprime la información del día
  345.                         _print(_name
  346.                                 + "\nInformación del Día: " + fullDate
  347.                                 + "\n====================================================="
  348.                                 + "\nCantidad total de compradores: " + ((_folio)-1) );
  349.                         break;
  350.                     case 6:
  351.                         break;
  352.                     //Reinicio global del sistema
  353.                     case 8:
  354.                         int _restart = _getIntFromStringData("¿Desea reiniciar el sistema?"
  355.                                 + "\n1) Si"
  356.                                 + "\n2) No");
  357.                                 //Si la opción elegida fue 1, es que se reiniciará el sistema
  358.                                 if(_restart == 1)
  359.                                     restart = true; //Se usa el valor booleano solamente para posibles referencias.
  360.                                 else
  361.                                     restart = false; //Si la opción elegida fue diferente de 1, es que no se quiere reiniciar el sistema
  362.                                        //Ya que sabemos que si se desea reiniciar, lo hacemos
  363.                                 if(restart == true)
  364.                                 {
  365.                                     //Por cualquier referencia generamos una nueva variable
  366.                                     String vendorName = _getStringData("Ingrese el nombre del vendedor nuevo:");
  367.                                     //Se almacena en la variable global _vendorName el nuevo nombre.
  368.                                     _vendorName = vendorName;
  369.                                   }
  370.                                    else
  371.                                         //Se reinicia
  372.                                          _restart = 0;
  373.                         break;
  374.                     //Información del Sistema
  375.                     case 9:
  376.                         _print("Versión del Software: " + _softwareData[0]
  377.                            + "\nDesarrollado por: "     + _softwareData[1]
  378.                            + "\nÚltima actualización: " + _softwareData[2]);
  379.                         break;
  380.                 }
  381.             }
  382.         }while(_menuOption != 10);
  383.     }
  384. }
  385.  
  386. /* Helpers.java */
  387.  
  388. /*
  389.  *  Control de Supermercado
  390.  */
  391. package elcarritomagico;
  392.  
  393. import javax.swing.JOptionPane;
  394. /*
  395.  *  Class: Helpers
  396.  *  Extends: Ninguno
  397.  *  Implements: Ninguno
  398.  *  Ayuda: Métodos de ayuda para la creación del programa
  399.  */
  400. public class Helpers {
  401.     /*
  402.      * Método: _getIntData(String Value);
  403.      * Parámetros:
  404.      * @Param = (String) Value;
  405.      * @Return = (Int) _returnInt;
  406.      * Ayuda: Retorna el valor de una String introducida (por el usuario)
  407.      * y la convierte a entero.
  408.      */
  409.     public int _getIntFromStringData(String Value)
  410.     {
  411.         try
  412.         {
  413.             int _returnInt = Integer.parseInt(JOptionPane.showInputDialog(Value));
  414.             return _returnInt;
  415.         }
  416.         catch(NumberFormatException ex)
  417.         {
  418.             //Si no fue introducido un valor "entero", se mostrará un error.
  419.             int _returnInt = 400; //El error es marcado con un valor de "400"_vendorName
  420.             return _returnInt;
  421.         }
  422.     }
  423.  
  424.     public double _getDoubleFromStringData(String Value)
  425.     {
  426.         try
  427.         {
  428.             double _returnDouble = Double.parseDouble(JOptionPane.showInputDialog(Value));
  429.             return _returnDouble;
  430.  
  431.         }
  432.         catch(NumberFormatException ex)
  433.         {
  434.             double _returnDouble = 400;
  435.             return _returnDouble;
  436.         }
  437.     }
  438.     /*
  439.      * Método: _getStringData(String Value);
  440.      * Parámetros:
  441.      * @Param = (String) Value;
  442.      * @Return = (String) _returnString;
  443.      * Ayuda: Retorna el valor de una String
  444.      */
  445.     public String _getStringData(String Value)
  446.     {
  447.         String _returnString = JOptionPane.showInputDialog(Value);
  448.         return _returnString;
  449.     }
  450.     /*
  451.      * Método: _print(String Value);
  452.      * Parámetros:
  453.      * @Param = (String) Value;
  454.      * @Return = Ninguno;
  455.      * Ayuda: Imprime una String
  456.      */
  457.     public void _print(String Value)
  458.     {
  459.         JOptionPane.showMessageDialog(null, Value);
  460.     }
  461.     /*
  462.      * Método: _print(int Value);
  463.      * Parámetros:
  464.      * @Param = (int) Value;
  465.      * @Return = Ninguno;
  466.      * Ayuda: Imprime un entero.
  467.      */
  468.     public void _print(int Value)
  469.     {
  470.         JOptionPane.showMessageDialog(null, Value);
  471.     }
  472.     /*
  473.      * Método: empty(String Value);
  474.      * Parámetros:
  475.      * @Param = (String) Value;
  476.      * @Return = true/false;
  477.      * Ayuda: Mide el tamaño de el valor introducido, si es 0, está vacío
  478.      * y por lo tanto retorna verdadero, en caso contrario, retorna falso
  479.      */
  480.     public boolean empty(String Value)
  481.     {
  482.         if(Value.length() == 0)
  483.             return true;
  484.         else
  485.             return false;
  486.     }
  487.     /*
  488.      * Método: empty(int Value);
  489.      * Parámetros:
  490.      * @Param = (int) Value;
  491.      * @Return = true/false;
  492.      * Ayuda: Mide el tamaño de el valor introducido, si es 0, está vacío
  493.      * y por lo tanto retorna verdadero, en caso contrario, retorna falso
  494.      */
  495.     public boolean empty(int Value)
  496.     {
  497.         String _Value = Value+"";
  498.         if(_Value.length() == 0)
  499.             return true;
  500.         else
  501.             return false;
  502.     }
  503.     /*
  504.      * Método: _getItemName(String Value);
  505.      * Parámetros:
  506.      * @Param = (String) Value;
  507.      * @Return = _itemName;
  508.      * Ayuda: Retorna el nombre del objeto comprado eliminando el costo
  509.      */
  510.     public String _getItemName(String Value)
  511.     {
  512.         String _separedItemName[] = Value.split(",");
  513.         String _itemName = _separedItemName[0];
  514.             return _itemName;
  515.     }
  516.     /*
  517.      * Método: _getPriceValue(String Value);
  518.      * Parámetros:
  519.      * @Param = (String) Value;
  520.      * @Return = _itemPrice;
  521.      * Ayuda: Retorna el costo de un objeto comprado.
  522.      */
  523.     public double _getPriceValue(String Value)
  524.     {
  525.         double _itemPrice = 0.00;
  526.         String _separedPriceFromItemName[] = Value.split(",");
  527.         String itemPrice = _separedPriceFromItemName[1];
  528.             _itemPrice = Double.parseDouble(itemPrice);
  529.         return _itemPrice;
  530.     }
  531.  
  532.     public int convertToInt(String Value)
  533.     {
  534.         int _converted = 0;
  535.         _converted = Integer.parseInt(Value);
  536.         return _converted;
  537.     }
  538.  
  539.     public double convertToDouble(String Value)
  540.     {
  541.         double _converted = 0.00;
  542.         _converted = Double.parseDouble(Value);
  543.         return _converted;
  544.     }
  545. }
  546.  
  547. /* Database.java */
  548.  
  549. package elcarritomagico;
  550. /*
  551.  *  Class: Database
  552.  *  Extends: Helpers
  553.  *  Implements: Ninguno
  554.  *  Ayuda: Base de datos con los métodos que incluyen la información
  555.  *  con la cual podrá ser buscado un producto por categorías
  556.  */
  557. public class Database extends Helpers{
  558.     /*
  559.      * Método: electronics(String Value);
  560.      * Parámetros:
  561.      * @Param = (String) Value;
  562.      * @Return = (String) _returnData;
  563.      * Ayuda: Retorna el valor de una String introducida (por el usuario)
  564.      * y la convierte a entero.
  565.      */
  566.     public String electronics(String Value)
  567.     {
  568.         String _returnData = "";
  569.         //j = 0 | Nombre del producto
  570.         //j = 1 | Costo del producto
  571.         //j = 2 | Código del producto
  572.         //j = 3 | Campo adicional
  573.         String _electronics[][] = {
  574.                                     {"Televisión LG Modelo 42LW650 3D", "12000", "42LW650", ""},//i = 0
  575.                                     {"Televisión LG Modelo 42LV3550 3D", "13000", "42LV3550", ""}, //i = 1
  576.                                     {"Estereo Sony Modelo SFX250", "6500", "SFX250", ""}, //i = 2
  577.                                   };
  578.            //Método de búsqueda
  579.             for(int i = 0; i < _electronics.length; i++)
  580.             {
  581.                 //Si se encontró el artículo, se retorna el artículo, si no, se retorna vacío
  582.                 if(Value.equalsIgnoreCase(_electronics[i][2]))
  583.                     _returnData = _electronics[i][0]+","+_electronics[i][1];
  584.             }
  585.         return _returnData;
  586.     }
  587. }
Add Comment
Please, Sign In to add comment