2020. május 22., péntek

Árukészlet nyílvántartás jáva programozási nyelven

/*
 * Arukeszlet.java
 *
 import java.util.*;
import javax.swing.*;

/
         ListIterator it = ll.listIterator();
        String element  = null;
        while (it.hasNext() ) {
            element = (String) it.next();
            ITT_VÉGZEM_EL_A_MŰVELETET
        }

public class Arukeszlet extends JFrame {

    /**
     * Konstruktor.
     */
    public Arukeszlet() {
        initComponents();
    }

    /**
     * A törlés művelete.
     */
    private void deleteButtonActionPerformed(java.awt.event.ActionEvent evt) {
        ListIterator it = ll.listIterator();
        String name        = nameTextField.getText();
        String price    = priceTextField.getText();
        String ammount  = ammountTextField.getText();

        final String toDelete = name + "; " + price +  "; " + ammount; // azért final, mert
                    // 10 esetben 8szor a == helyett = írok, és így rögton pampog a fordító,
                    // nem kell a futási időben keresgélni órákig, hogy mit rontottam el...

        String element  = null;
        while (it.hasNext() ) {
            element = (String) it.next();
            if (toDelete.equals(element) ) {
                sum -= Integer.parseInt(price)*Integer.parseInt(ammount);
                summaTextField.setText(String.valueOf(sum) );
                it.remove();
                list.setListData(ll.toArray() );

                nameTextField.setText("");
                priceTextField.setText("");
                ammountTextField.setText("");

                return;
            }
        }// while
    }// deleteButtonActionPerformed

    /**
     * String leellenőrzése, hogy szám-e.
     */
    protected boolean isSzam(String str) {
        for (int i=0; i < str.length(); i++) {
            if ( ! Character.isDigit(str.charAt(i)) ) {    // Végig kell menni a string minden
                JOptionPane.showMessageDialog(              // karakterén, és ellenőrizni, hogy
                    this,                                   // szám-e.
                    "Nem megfelelő adat!",
                    "Hiba!",
                    JOptionPane.ERROR_MESSAGE
                );
                return false; // Aztán kiugrunk ...
            }
        }
        return true;
    }// isSzam

        protected boolean llcontains(String str) {
        ListIterator it = ll.listIterator();
        String element = null;
        while (it.hasNext() ) {
            element = (String) it.next();
            String elementName = element.split(";")[0];
            if (elementName.equals(str) ) { // FONTOS! Stringek között nem működik a ==,
                                            // az equals() metódust KELL használni !!!
                JOptionPane.showMessageDialog(
                    this,
                    "Ez az áru már rögzítésre került!",
                    "Hiba!",
                    JOptionPane.ERROR_MESSAGE
                );
                return true; // Aztán kiugrunk ...
            }// if
        }// while
        return false;
    }// llcontains

 
    protected void listAddInAlphabeticOrder(String str) {
         ListIterator it = ll.listIterator();
        String element  = null;
        while (it.hasNext() ) {
            element = (String) it.next();
            if (element.compareTo(str) > 0) { // A lexografikus ellenőrzés (a TELJES stringre).
                ll.add(it.previousIndex(), str); // Ha nagyobb a vizsgált elem, akkor elé
                                                 // beszúrjuk az aktuálisat.
                return;  // Aztán kilépünk.
            }
        }
        ll.addLast(str);
    }// listAddInAlphabeticOrder

  

    /**
     * Új elem elhelyezése.
     */
    private void saveButtonActionPerformed(java.awt.event.ActionEvent evt) {

        String name    = nameTextField.getText();    // Olvashatóbb a kód,
        String price   = priceTextField.getText();   // ne keljen annyit írni,
        String ammount = ammountTextField.getText(); // meg szép is!

        // Az ellenőrzések:
        if (name.length() == 0 || price.length() == 0 || ammount.length() == 0) return;
        if ( llcontains(name) )  return;
        if ( ! isSzam(price) )   return;
        if ( ! isSzam(ammount) ) return;

        listAddInAlphabeticOrder(name + "; " + price +  "; " + ammount);
        sum += Integer.parseInt(price) * Integer.parseInt(ammount); // sum update
        summaTextField.setText(String.valueOf(sum) );

        nameTextField.setText("");
        priceTextField.setText("");
        ammountTextField.setText("");

        list.setListData(ll.toArray() );

    }// saveButtonActionPerformed

    /**
     * Std kilépés, ha minden OK.
     */
    private void exitForm(java.awt.event.WindowEvent evt) {
        System.exit(0);
    }// exitForm

    /**
     * @param args Indítási paraméterek.
     */
    public static void main(String args[]) {
        new Arukeszlet().show();
    }

    /**
     * Ezzel rakom össze a GUI-t. NetBeansIDE maradék...
     */
    private void initComponents() {
        leftPanel              = new javax.swing.JPanel();
        newProductLabel      = new javax.swing.JLabel();
        leftNamePanel          = new javax.swing.JPanel();
        nameLabelPanel          = new javax.swing.JPanel();
        nameLabel              = new javax.swing.JLabel();
        nameTextFieldPanel      = new javax.swing.JPanel();
        nameTextField          = new javax.swing.JTextField();
        leftPricePanel          = new javax.swing.JPanel();
        priceLabelPanel      = new javax.swing.JPanel();
        priceLabel              = new javax.swing.JLabel();
        priceTextFieldPanel  = new javax.swing.JPanel();
        priceTextField          = new javax.swing.JTextField();
        leftAmmountPanel      = new javax.swing.JPanel();
        ammountLabelPanel    = new javax.swing.JPanel();
        ammountLabel          = new javax.swing.JLabel();
        ammountTextAreaPanel = new javax.swing.JPanel();
        ammountTextField     = new javax.swing.JTextField();
        buttonsPanel          = new javax.swing.JPanel();
        saveButton              = new javax.swing.JButton();
        deleteButton          = new javax.swing.JButton();
        rightPanel              = new javax.swing.JPanel();
        list                  = new javax.swing.JList();
        leftLowerPanel          = new javax.swing.JPanel();
        summaLabel              = new javax.swing.JLabel();
        summaTextField          = new javax.swing.JTextField();

        getContentPane().setLayout(new java.awt.GridLayout(0, 2));

        leftPanel.setLayout(new java.awt.GridLayout(5, 0));

        newProductLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        newProductLabel.setText("új termék rögzítése:");
        leftPanel.add(newProductLabel);

        leftNamePanel.setLayout(new java.awt.GridLayout(0, 2));

        nameLabel.setText("Név:");
        nameLabelPanel.add(nameLabel);

        leftNamePanel.add(nameLabelPanel);

        nameTextField.setColumns(10);
        nameTextFieldPanel.add(nameTextField);

        leftNamePanel.add(nameTextFieldPanel);

        leftPanel.add(leftNamePanel);

        leftPricePanel.setLayout(new java.awt.GridLayout(0, 2));

        priceLabel.setText("Ár:");
        priceLabelPanel.add(priceLabel);

        leftPricePanel.add(priceLabelPanel);

        priceTextField.setColumns(10);
        priceTextFieldPanel.add(priceTextField);

        leftPricePanel.add(priceTextFieldPanel);

        leftPanel.add(leftPricePanel);

        leftAmmountPanel.setLayout(new java.awt.GridLayout(0, 2));

        ammountLabel.setText("Mennyiség:");
        ammountLabelPanel.add(ammountLabel);

        leftAmmountPanel.add(ammountLabelPanel);

        ammountTextField.setColumns(10);
        ammountTextAreaPanel.add(ammountTextField);

        leftAmmountPanel.add(ammountTextAreaPanel);

        leftPanel.add(leftAmmountPanel);

        saveButton.setText("Mentés");

        buttonsPanel.add(saveButton);

        deleteButton.setText("Törlés");
        buttonsPanel.add(deleteButton);

        leftPanel.add(buttonsPanel);

        getContentPane().add(leftPanel);

        rightPanel.setLayout(new java.awt.BorderLayout());

        rightPanel.add(list, java.awt.BorderLayout.CENTER);

        leftLowerPanel.setLayout(new java.awt.BorderLayout());

        summaLabel.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        summaLabel.setText("Summa:");
        leftLowerPanel.add(summaLabel, java.awt.BorderLayout.WEST);

        summaTextField.setEditable(false);
        summaTextField.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
        summaTextField.setToolTipText("A bolt árukészletének összértéke");
        leftLowerPanel.add(summaTextField, java.awt.BorderLayout.CENTER);

        rightPanel.add(leftLowerPanel, java.awt.BorderLayout.SOUTH);
        getContentPane().add(rightPanel);

        // Fontosabb dolgok:
        list.setListData(ll.toArray() );
        addListeners();
        pack();
    } // initComponents

    /**
     * Itt "akasztgatom" fel a szükséges figyelőket.
     */
    protected void addListeners() {
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        saveButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                saveButtonActionPerformed(evt);
            }
        });

        deleteButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                deleteButtonActionPerformed(evt);
            }
        });
    }// addListeners

    // Start : Variables
    protected LinkedList ll = new LinkedList(); // Az elemek tárolására
    protected int sum = 0;                        // Az összértékhez.
    // Start : Variables (GUI)
    private JPanel     ammountLabelPanel;
    private JPanel     ammountTextAreaPanel;
    private JPanel     buttonsPanel;
    private JPanel     leftAmmountPanel;
    private JPanel     leftLowerPanel;
    private JPanel     leftNamePanel;
    private JPanel     leftPanel;
    private JPanel     leftPricePanel;
    private JPanel     nameLabelPanel;
    private JPanel     nameTextFieldPanel;
    private JPanel     priceLabelPanel;
    private JPanel     priceTextFieldPanel;
    private JPanel     rightPanel;
    private JLabel     ammountLabel;
    private JLabel     summaLabel;
    private JLabel     nameLabel;
    private JLabel     newProductLabel;
    private JLabel     priceLabel;
    private JTextField summaTextField;
    private JTextField ammountTextField;
    private JTextField nameTextField;
    private JTextField priceTextField;
    private JButton    deleteButton;
    private JButton    saveButton;
    private JList      list;
    // EoF : Variables

}

Nincsenek megjegyzések:

Megjegyzés küldése