Determinación de precios para mayoristas o minoristas -- java campo con beginner campo con swing camp codereview Relacionados El problema

Determining prices for wholesalers or retailers


5
vote

problema

Español

Es mi primer año en la universidad y he diseñado un código usando prácticamente mi propio conocimiento básico. He diseñado un programa para resolver el precio de los artículos para mayoristas o minoristas. Los clientes especiales también reciben un descuento especial si deben hacer clic en el botón. Eche un vistazo a mi código y déme algún comentario sobre cómo puedo implementarlo. También avíseme si cree que he hecho un buen trabajo.

  import java.awt.Dimension; import java.text.NumberFormat; import java.util.ArrayList; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextArea;  public class packingcompany extends JPanel {      JTable jt;      public packingcompany() {         String[] columns = {"Wholesalers No.Units", "Wholesalers(£)", "Retailers No.Units", "Retailers (£)"};          String[][] data = {{"1-6", "£50", "1-4", "£60"},         {"7-11", "£40", "5-9", "£50"},         {"12-21", "£30", "10-15", "£40"},         {"22-60", "£20", "16-50", "£30"},         {"60+", "£15", "50+", "£25"}};          jt = new JTable(data, columns) {             public boolean isCellEditable(int data, int columns) {                 return false;             }         };          jt.setPreferredScrollableViewportSize(new Dimension(550, 80));         jt.setFillsViewportHeight(true);          JScrollPane jps = new JScrollPane(jt);         add(jps);     }      public static void main(String[] args) {         JFrame jf = new JFrame();         packingcompany t = new packingcompany();         jf.setTitle("The Packing Company");         jf.setSize(600, 150);         jf.setVisible(true);         jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);         jf.add(t);          String input, sinput, result;         int option, spec;         int wsquantity = 0, rtquantity = 0;         double wstotal = 0, rttotal = 0, special;          JTextArea display = new JTextArea();       //stating that i want a JText area            NumberFormat money = NumberFormat.getCurrencyInstance();         do {             ArrayList<String> buttonChoice = new ArrayList<String>();             buttonChoice.add("Wholesalers");             buttonChoice.add("Retailers");             buttonChoice.add("Exit");              Object[] options = buttonChoice.toArray(); // i am turning the arraylist to objects               option = JOptionPane.showOptionDialog(null, "Select Type of Service", "The Packing Company",                     JOptionPane.PLAIN_MESSAGE, JOptionPane.QUESTION_MESSAGE,                     null, options, buttonChoice.get(0));              switch (option) {                  case 0:                      do {                         sinput = JOptionPane.showInputDialog("Enter The Quantity You Require:");                         try {                             wsquantity = Integer.parseInt(sinput);                         } catch (Exception nfe) {                             JOptionPane.showMessageDialog(null, "We are not sure what you entered or did.");                         }                          if (wsquantity <= 6) {                             wstotal = wsquantity * 50;                         } else if (wsquantity <= 11) {                             wstotal = wsquantity * 40;                         } else if (wsquantity <= 21) {                             wstotal = wsquantity * 30;                         } else if (wsquantity <= 60) {                             wstotal = wsquantity * 20;                         } else if (wsquantity <= 500) {                             wstotal = wsquantity * 15;                         }                          if (wsquantity > 500) {                             JOptionPane.showMessageDialog(null, "We apologies but you can not order more than 500 units with us at once.");                          }                      } while (wsquantity > 500);                      ArrayList<String> Special = new ArrayList<String>();                     Special.add("Special Customer");                     Special.add("Standard Customer");                      Object[] specials = Special.toArray(); // i am turning the arraylist to objects                       spec = JOptionPane.showOptionDialog(null, "Which are you?", "The Packing Company",                             JOptionPane.PLAIN_MESSAGE, JOptionPane.QUESTION_MESSAGE,                             null, specials, Special.get(0));                      if (spec == 0) {                         special = wstotal - (wstotal / 100 * 10);                         result = "                      The Packing Company for Wholesalers"                                 + " ------------------------------------------------------------------------"                                 + "------------------"                                 + "  You Ordered " + wsquantity                                 + " Units" + " Original Price: " + money.format(wstotal) + "  Total for our Special Customers : " + money.format(special);                         JOptionPane.showMessageDialog(null, result);                         break;                     } else if (spec == 1) {                          result = "                      The Packing Company for Wholesalers"                                 + " ------------------------------------------------------------------------"                                 + "------------------"                                 + "  You Ordered " + wsquantity                                 + " Units" + " Total: " + money.format(wstotal)                                 + "    Want to find out how you can become a Special Customer?" + " Call Us Now! 0800 3453456";                         JOptionPane.showMessageDialog(null, result);                         break;                     }                 case 1:                     do {                         sinput = JOptionPane.showInputDialog("Enter The Quantity You Require:");                         try {                             rtquantity = Integer.parseInt(sinput);                         } catch (Exception nfe) {                             JOptionPane.showMessageDialog(null, "We are not sure what you entered.");                         }                         if (rtquantity <= 4) {                             rttotal = rtquantity * 60;                         } else if (rtquantity <= 9) {                             rttotal = rtquantity * 50;                         } else if (rtquantity <= 15) {                             rttotal = rtquantity * 40;                         } else if (rtquantity <= 50) {                             rttotal = rtquantity * 30;                         } else if (rtquantity <= 500) {                             rttotal = rtquantity * 25;                         }                          if (rtquantity > 500) {                             JOptionPane.showMessageDialog(null, "We apologies but you can not order more than 500 units with us at once.");                          }                         special = rttotal - (rttotal / 100 * 10);                      } while (rtquantity > 500);                      ArrayList<String> Special2 = new ArrayList<String>();                     Special2.add("Special Customer");                     Special2.add("Standard Customer");                      Object[] specials2 = Special2.toArray(); // i am turning the arraylist to objects                       spec = JOptionPane.showOptionDialog(null, "Which are you?", "The Packing Company",                             JOptionPane.PLAIN_MESSAGE, JOptionPane.QUESTION_MESSAGE,                             null, specials2, Special2.get(0));                      if (spec == 0) {                         special = rttotal - (rttotal / 100 * 10);                         result = "                      The Packing Company for Wholesalers"                                 + " ------------------------------------------------------------------------"                                 + "------------------"                                 + "  You Ordered " + rtquantity                                 + " Units" + " Original Price: " + money.format(rttotal) + "  Total for our Special Customers : " + money.format(special);                         JOptionPane.showMessageDialog(null, result);                         break;                      } else if (spec == 1) {                         result = "                       The Packing Company for Retailers"                                 + " ------------------------------------------------------------------------"                                 + "------------------"                                 + "  You Ordered " + rtquantity                                 + " Units" + " Total: " + money.format(rttotal)                                 + "    Want to find out how you can become a Special Customer?" + " Call Us Now! 0800 3453456";                         JOptionPane.showMessageDialog(null, result);                         break;                     }                 case 2:                     JOptionPane.showMessageDialog(null, "Thank you for your services." + " The Packing Company");                     System.exit(0);             }         } while (option != 2);     } }   
Original en ingles

It is my first year in college and I have designed a code using pretty much my own basic knowledge. I have designed a program to work out the price of items for wholesalers or retailers. Special customers also get a special discount if they are to click on the button. Please take a look at my code and give me any feedback on how I can implement it. Also let me know if you believe I have done a good job.

import java.awt.Dimension; import java.text.NumberFormat; import java.util.ArrayList; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextArea;  public class packingcompany extends JPanel {      JTable jt;      public packingcompany() {         String[] columns = {"Wholesalers No.Units", "Wholesalers(xc2xa3)", "Retailers No.Units", "Retailers (xc2xa3)"};          String[][] data = {{"1-6", "xc2xa350", "1-4", "xc2xa360"},         {"7-11", "xc2xa340", "5-9", "xc2xa350"},         {"12-21", "xc2xa330", "10-15", "xc2xa340"},         {"22-60", "xc2xa320", "16-50", "xc2xa330"},         {"60+", "xc2xa315", "50+", "xc2xa325"}};          jt = new JTable(data, columns) {             public boolean isCellEditable(int data, int columns) {                 return false;             }         };          jt.setPreferredScrollableViewportSize(new Dimension(550, 80));         jt.setFillsViewportHeight(true);          JScrollPane jps = new JScrollPane(jt);         add(jps);     }      public static void main(String[] args) {         JFrame jf = new JFrame();         packingcompany t = new packingcompany();         jf.setTitle("The Packing Company");         jf.setSize(600, 150);         jf.setVisible(true);         jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);         jf.add(t);          String input, sinput, result;         int option, spec;         int wsquantity = 0, rtquantity = 0;         double wstotal = 0, rttotal = 0, special;          JTextArea display = new JTextArea();       //stating that i want a JText area            NumberFormat money = NumberFormat.getCurrencyInstance();         do {             ArrayList<String> buttonChoice = new ArrayList<String>();             buttonChoice.add("Wholesalers");             buttonChoice.add("Retailers");             buttonChoice.add("Exit");              Object[] options = buttonChoice.toArray(); // i am turning the arraylist to objects               option = JOptionPane.showOptionDialog(null, "Select Type of Service", "The Packing Company",                     JOptionPane.PLAIN_MESSAGE, JOptionPane.QUESTION_MESSAGE,                     null, options, buttonChoice.get(0));              switch (option) {                  case 0:                      do {                         sinput = JOptionPane.showInputDialog("Enter The Quantity You Require:");                         try {                             wsquantity = Integer.parseInt(sinput);                         } catch (Exception nfe) {                             JOptionPane.showMessageDialog(null, "We are not sure what you entered or did.");                         }                          if (wsquantity <= 6) {                             wstotal = wsquantity * 50;                         } else if (wsquantity <= 11) {                             wstotal = wsquantity * 40;                         } else if (wsquantity <= 21) {                             wstotal = wsquantity * 30;                         } else if (wsquantity <= 60) {                             wstotal = wsquantity * 20;                         } else if (wsquantity <= 500) {                             wstotal = wsquantity * 15;                         }                          if (wsquantity > 500) {                             JOptionPane.showMessageDialog(null, "We apologies but you can not order more than 500 units with us at once.");                          }                      } while (wsquantity > 500);                      ArrayList<String> Special = new ArrayList<String>();                     Special.add("Special Customer");                     Special.add("Standard Customer");                      Object[] specials = Special.toArray(); // i am turning the arraylist to objects                       spec = JOptionPane.showOptionDialog(null, "Which are you?", "The Packing Company",                             JOptionPane.PLAIN_MESSAGE, JOptionPane.QUESTION_MESSAGE,                             null, specials, Special.get(0));                      if (spec == 0) {                         special = wstotal - (wstotal / 100 * 10);                         result = "                      The Packing Company for Wholesalers"                                 + "\n------------------------------------------------------------------------"                                 + "------------------"                                 + "\n\nYou Ordered " + wsquantity                                 + " Units" + "\nOriginal Price: " + money.format(wstotal) + "\n\nTotal for our Special Customers : " + money.format(special);                         JOptionPane.showMessageDialog(null, result);                         break;                     } else if (spec == 1) {                          result = "                      The Packing Company for Wholesalers"                                 + "\n------------------------------------------------------------------------"                                 + "------------------"                                 + "\n\nYou Ordered " + wsquantity                                 + " Units" + "\nTotal: " + money.format(wstotal)                                 + "\n\n\n\nWant to find out how you can become a Special Customer?" + "\nCall Us Now! 0800 3453456";                         JOptionPane.showMessageDialog(null, result);                         break;                     }                 case 1:                     do {                         sinput = JOptionPane.showInputDialog("Enter The Quantity You Require:");                         try {                             rtquantity = Integer.parseInt(sinput);                         } catch (Exception nfe) {                             JOptionPane.showMessageDialog(null, "We are not sure what you entered.");                         }                         if (rtquantity <= 4) {                             rttotal = rtquantity * 60;                         } else if (rtquantity <= 9) {                             rttotal = rtquantity * 50;                         } else if (rtquantity <= 15) {                             rttotal = rtquantity * 40;                         } else if (rtquantity <= 50) {                             rttotal = rtquantity * 30;                         } else if (rtquantity <= 500) {                             rttotal = rtquantity * 25;                         }                          if (rtquantity > 500) {                             JOptionPane.showMessageDialog(null, "We apologies but you can not order more than 500 units with us at once.");                          }                         special = rttotal - (rttotal / 100 * 10);                      } while (rtquantity > 500);                      ArrayList<String> Special2 = new ArrayList<String>();                     Special2.add("Special Customer");                     Special2.add("Standard Customer");                      Object[] specials2 = Special2.toArray(); // i am turning the arraylist to objects                       spec = JOptionPane.showOptionDialog(null, "Which are you?", "The Packing Company",                             JOptionPane.PLAIN_MESSAGE, JOptionPane.QUESTION_MESSAGE,                             null, specials2, Special2.get(0));                      if (spec == 0) {                         special = rttotal - (rttotal / 100 * 10);                         result = "                      The Packing Company for Wholesalers"                                 + "\n------------------------------------------------------------------------"                                 + "------------------"                                 + "\n\nYou Ordered " + rtquantity                                 + " Units" + "\nOriginal Price: " + money.format(rttotal) + "\n\nTotal for our Special Customers : " + money.format(special);                         JOptionPane.showMessageDialog(null, result);                         break;                      } else if (spec == 1) {                         result = "                       The Packing Company for Retailers"                                 + "\n------------------------------------------------------------------------"                                 + "------------------"                                 + "\n\nYou Ordered " + rtquantity                                 + " Units" + "\nTotal: " + money.format(rttotal)                                 + "\n\n\n\nWant to find out how you can become a Special Customer?" + "\nCall Us Now! 0800 3453456";                         JOptionPane.showMessageDialog(null, result);                         break;                     }                 case 2:                     JOptionPane.showMessageDialog(null, "Thank you for your services." + "\nThe Packing Company");                     System.exit(0);             }         } while (option != 2);     } } 
        

Lista de respuestas

3
 
vote

Algunos comentarios:

  • La convención para nombres de clase es un caso de camello con la primera palabra capitalizada; Por ejemplo, PackingCompany en lugar de PackingCompany, consulte Aquí Para detalles sobre las convenciones de nombres de Java < / p>

  • su clase de companización, para mí en cualquier caso, está haciendo demasiado; Para el diseño de OO, debe intentar seguir el principio de la responsabilidad única

  • En lugar de confiar en los números mágicos para readonly5 y readonly6 Buscar usando enums

 

A few comments:

  • The convention for class names is camel case with the first word Capitalized; eg PackingCompany instead of packingcompany - see here for details on java naming conventions

  • Your packingcompany class, for me at any rate, is doing too much; for OO design you should try and follow the single responsibility principle

  • Instead of relying on magic numbers for spec and option look at using enums

 
 

Relacionados problema

3  Escribiendo una calculadora en Java idiomático  ( Writing a calculator in idiomatic java ) 
Simplemente sumergí mis dedos de los pies en Java hoy (viniendo de C ++) e hice algunas cosas para aprenderlo. Las cosas estándar como Atari Breakout, Tic Tac...

4  Hangman en Java  ( Hangman in java ) 
Tengo el siguiente código en Java: HangmanFunctions Clase: import java.util.ArrayList; import java.util.Random; public class HangmanFunctions { pr...

8  Calculadora de entrada de 2 entradas Java GUI  ( Java gui 2 input calculator ) 
He escrito este código para una calculadora de dos entradas. ¿Hay algo que pueda hacer para que este código sea más eficiente? import javax.swing.*; impor...

5  Mouselistener Lag en el juego de azulejos de piano  ( Mouselistener lag in piano tiles game ) 
Estaba intentando escribir mi propia versión simple de la aplicación de juegos de piano azulejos en Java, así como un ejercicio divertido. gamelogic.java ...

7  Código de compactación para el remake del juego más duro del mundo  ( Compacting code for worlds hardest game remake ) 
Me preguntaba si alguien podría rozar rápidamente este para mí realmente rápido y decirme si hay algo Podría mejorar el código de código. Lo que tengo en es...

1  Diseños anidados - BoxLayout dentro de BorderLayout  ( Nested layouts boxlayout inside borderlayout ) 
Tengo este código: JPanel controlPanel = new JPanel(); controlPanel.setLayout(new BoxLayout(controlPanel, BoxLayout.PAGE_AXIS)); TitledBorder tb2 = BorderF...

7  Calculadora de Java usando swing  ( Java calculator using swing ) 
Esta es una calculadora simple donde el usuario puede escribir el cálculo y presionar ingresar y la calculadora determinaría si es un cálculo válido o no in...

11  Enfoque para construir programáticamente componentes gui jerárquicos  ( Approach to programmatically building hierarchical gui components ) 
En el trabajo, estoy desarrollando una aplicación usando el swing codificado a mano, y he encontrado que tengo un tiempo más fácil de leer, escribir y mantene...

0  Calculadora de java simple en columpio  ( Simple java calculator in swing ) 
¿Puedes revisar este código para mí? ¿Cómo lo hago mejor? //this is the calculator import java.awt.*; import java.awt.event.*; import javax.swing.*; import...

1  GUI simple utilizando pestañas para separar las ventanas de la aplicación  ( Simple gui using tabs to separate application windows ) 
Estoy diseñando una GUI simple que usa las pestañas para separar cada ventana "de la aplicación. Hay 3 pestañas principales, cada una con 2 sub-pestañas. En...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos