SophiaPretty

(5)

$14/per page/Negotiable

About SophiaPretty

Levels Tought:
Elementary,Middle School,High School,College,University,PHD

Expertise:
Accounting,Algebra See all
Accounting,Algebra,Applied Sciences,Architecture and Design,Art & Design,Biology,Business & Finance,Calculus,Chemistry,Communications,Computer Science,Economics,Engineering,English,Environmental science,Essay writing Hide all
Teaching Since: Jul 2017
Last Sign in: 305 Weeks Ago
Questions Answered: 15833
Tutorials Posted: 15827

Education

  • MBA,PHD, Juris Doctor
    Strayer,Devery,Harvard University
    Mar-1995 - Mar-2002

Experience

  • Manager Planning
    WalMart
    Mar-2001 - Feb-2009

Category > Computer Science Posted 02 Jan 2018 My Price 10.00

ATM GUI but I am having issues with some of the code.

I have written an ATM GUI but I am having issues with some of the code. Could someone please review my code and point out my errors? Thanks again. Attached are the requirements (instructions) and my code. Any help would be much appreciated. It looks as if the AtmGui.java file has all the errors, whereas the other 2 files appear good to go. I think the issue is with my two account objects (checking and savings) in the AtmGui.java but I am at a stand still at the moment. I am using NetBeans to write and compile the code. Any feedback is appreciated.

  • package my.project2;

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;


    /**
     * File: Accounts.java
     * Author:
     * Date: April 5, 2017
     * Purpose: Gives gives functions to the ATM GUI buttons.
     */
    class Accounts extends JFrame {
        // Variables
        private JButton withdrawButton;
        private JButton depositButton;
        private JButton transferButton;
        private JButton balanceButton;
        private JRadioButton chRadioButton;
        private JRadioButton savRadioButton;
        private JTextField inputTexField;
        private ButtonGroup accounts;
        private double cashChecking = 0;
        private double cashSavings = 0;
        private String chk;
        private String sav;
        private double temp1;
        private int countSur = 0;
        private double cashSur = 1.5;
       
        // ATM GUI constructor
        public Accounts(String AtmGui) {
            super(AtmGui);
            this.setLocationRelativeTo(null); //Invoke JFrame constructor
            setLayout(new FlowLayout()); //sets layout manager
           
            // Withdraw Button
            withdrawButton = new javax.swing.JButton("Withdraw");
            add(withdrawButton);
            // Adds amplifying info to button when cursor hovers over button
            withdrawButton.setToolTipText("Withdraws money from selected account");
           
            // Deposit Button
            depositButton = new javax.swing.JButton("Deposit");
            add(depositButton);
            // Adds amplifying info to button when cursor hovers over button
            depositButton.setToolTipText("Deposits money to selected account");
           
            // Transfer Button
            transferButton = new javax.swing.JButton("Transfer");
            add(transferButton);
            // Adds amplifying info to button when cursor hovers over button
            depositButton.setToolTipText("Transfers money to selected account");
           
            // Balance Button
            balanceButton = new javax.swing.JButton("Balance");
            add(balanceButton);
            // Adds amplifying info to button when cursor hovers over button
            balanceButton.setToolTipText("Displays current balance of "
                    + "selected account");
           
            accounts = new javax.swing.ButtonGroup();
           
            // Checking radio button
            chRadioButton = new javax.swing.JRadioButton("Checking");
            accounts.add(chRadioButton);
            add(chRadioButton);
            // Adds amplifying info to button when cursor hovers over button
            chRadioButton.setToolTipText("Selects Checking Account");
           
            // Savings radio button
            savRadioButton = new javax.swing.JRadioButton("Savings");
            accounts.add(savRadioButton);
            add(savRadioButton);
            // Adds amplifying info to button when cursor hovers over button
            savRadioButton.setToolTipText("Selects Savings Account");
           
            // Input Text Field
            inputTexField = new javax.swing.JTextField();
            add(inputTexField);
            inputTexField.setColumns(7);
            inputTexField.setToolTipText("Enter money amount here");
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
           
            // Action listener class
            buttonMath doMath = new buttonMath();
           
            withdrawButton.addActionListener(doMath);
            depositButton.addActionListener(doMath);
            transferButton.addActionListener(doMath);
            balanceButton.addActionListener(doMath);
            chRadioButton.addActionListener(doMath);
            savRadioButton.addActionListener(doMath);
            inputTexField.addActionListener(doMath);
                    
        }
       
        private class buttonMath implements ActionListener {
            @Override
            public void actionPerformed(ActionEvent event) {
               
                // Check for Savings Radio Button Selected
                // Performs math based on user inputs and buttons selected.
                // Number must be a multiple of 20
                if(savRadioButton.isSelected()) {
                   
                    // Withdraw from Savings
                    if(event.getActionCommand().equals("Withdraw")){
                        try {
                            String text = inputTexField.getText();
                            temp1 = Double.parseDouble(text);
                            // Makes sure amount is multiple of 20
                            // Withdraws if true
                            if(temp1 % 20 == 0 && cashSavings > temp1) {
                                cashSavings -= temp1;
                                countSur++;
                                if(countSur == 4 && cashSavings < cashSur) {
                                    // Displays Insufficient Funds
                                    JOptionPane.showMessageDialog(null,
                                            "Insufficent Funds");
                                    cashSavings += temp1;
                                    // Charges $1.50 fee
                                }else if (countSur == 4) {
                                    cashSavings = cashSur;
                                    JOptionPane.showMessageDialog(null,
                                            "$1.50 Transfer Fee hass been "
                                                    + "charged to Current Account");
                                    cashSur = 0;
                                }
                                inputTexField.setText("");
                                //Checks for multiples of 20
                            } else if (temp1 % 20 != 0 && cashSavings > temp1) {
                                JOptionPane.showMessageDialog(null,
                                        "Pleae enter amount in multiples of 20.");
                                inputTexField.setText("");
                            } else
                                JOptionPane.showMessageDialog(null,
                                        "Insufficient Funds");
                                inputTexField.setText("");
                            }catch (NumberFormatException ex) {
                                JOptionPane.showMessageDialog(null,
                                        "Error: Please enter a Numeric value.");
                                    inputTexField.setText("");
                                    }
                       
                        // Deposit savings
                        } else if(event.getActionCommand().equals("Deposit")) {
                            try {
                                String text = inputTexField.getText();
                                temp1 = Double.parseDouble(text);
                                if(temp1 % 20 == 0) {
                                  cashSavings += temp1; 
                                  inputTexField.setText("");
                                } else
                                    JOptionPane.showMessageDialog(null,
                                            "Please enter amount in multiples of 20.");
                                inputTexField.setText("");
                            } catch (NumberFormatException ex) {
                                JOptionPane.showMessageDialog(null,
                                        "Error: Please enter a Numeric value.");
                                    inputTexField.setText("");
                            }
                           
                            // Transfer savings
                        } else if (event.getActionCommand().equals("Transfer")) {
                            try {
                                String text = inputTexField.getText();
                                temp1 = Double.parseDouble(text);
                                if(temp1 % 20 == 0 && cashChecking >= temp1) {
                                    cashChecking -= temp1;
                                    cashSavings += temp1;
                                    inputTexField.setText("");
                                } else if (temp1 % 20 != 0 && cashChecking >= temp1){
                                    JOptionPane.showMessageDialog(null,
                                            "Please enter amount in multiples "
                                                    + "of 20.");
                                    inputTexField.setText("");
                                } else
                                    JOptionPane.showMessageDialog(null,
                                            "Insufficient Funds");
                            } catch (NumberFormatException ex) {
                                JOptionPane.showMessageDialog(null,
                                        "Error: Please enter a Numeric value.");
                                inputTexField.setText("");
                            }
                        }
                    }
               
                // Check for Checking Radio Button Selected
                // Performs math based on user inputs and buttons selected.
                // Number must be a multiple of 20
                if(event.getActionCommand().equals("Withdraw")) {
                   
                    // Withdraw Checking
                    try {
                        String text = inputTexField.getText();
                        temp1 = Double.parseDouble(text);
                        //Checks for multiples of 20 and withdraws amount if true
                        if (temp1 % 20 == 0 && cashChecking > temp1) {
                            cashChecking -= temp1;
                            countSur++;
                           
                        // Checks to see if can charges $1.50 fee
                            if(countSur == 4 && cashChecking < cashSur) {
                                JOptionPane.showMessageDialog(null,
                                        "Insufficient Funds");
                                cashChecking += temp1;
                            } else if(countSur == 4) {
                                cashChecking -= cashSur;
                                JOptionPane.showMessageDialog(null, "$1.50 fee "
                                        + "has been charged to Current account");
                                countSur = 0;
                            }
                            inputTexField.setText("");
                        } else if (temp1 % 20 != 0 && cashChecking > temp1) {
                            JOptionPane.showMessageDialog(null, "Please enter "
                                    + "amount in multiples of 20.");
                            inputTexField.setText("");
                        } else
                            JOptionPane.showMessageDialog(null,
                                    "Insufficient Funds");
                        inputTexField.setText("");
                    } catch (NumberFormatException ex) {
                        JOptionPane.showMessageDialog(null, "Error: Please enter "
                                + "a Numeric value.");
                        inputTexField.setText("");
                    }
                   
                    // Deposit Checking
                } else if (event.getActionCommand().equals("Deposit")) {
                    try {
                        String text = inputTexField.getText();
                        temp1 = Double.parseDouble(text);
                        if (temp1 % 20 == 0) {
                            cashChecking += temp1;
                            inputTexField.setText("");
                        } else
                            JOptionPane.showMessageDialog(null, "Pleae enter "
                                    + "amount in multiples of 20.");
                        inputTexField.setText("");
                    } catch (NumberFormatException ex) {
                        JOptionPane.showMessageDialog(null, "Error: Please "
                                + "enter a Numeric value.");
                        inputTexField.setText("");
                    }
                   
                // Transfer Checking account   
                } else if(event.getActionCommand().equals("Transfer")) {
                    try {
                        String text = inputTexField.getText();
                        temp1 = Double.parseDouble(text);
                        if (temp1 % 20 == 0 && cashSavings >= temp1) {
                            cashChecking += temp1;
                            cashSavings -= temp1;
                            inputTexField.setText("");
                        } else if (temp1 % 20 != 0 && cashSavings >= temp1) {
                            JOptionPane.showMessageDialog(null, "Please enter "
                                    + "amount in multiples of 20.");
                            inputTexField.setText("");
                    } else
                      JOptionPane.showMessageDialog(null, "Insufficient Funds");
                   
                } catch (NumberFormatException ex) {
                        JOptionPane.showMessageDialog(null, "Error: Please "
                                + "enter a Numeric value.");
                        inputTexField.setText("");
                }
            }
                // Account Balance
                if(event.getActionCommand().equals("Balance")) {
                    if(savRadioButton.isSelected()) {
                        sav = Double.toString(cashSavings);
                        JOptionPane.showMessageDialog(null, "Savings Balance: $"
                            + sav);
                        inputTexField.setText("");
                    }
                    if(chRadioButton.isSelected()) {
                        chk = Double.toString(cashChecking);
                        JOptionPane.showMessageDialog(null, "Checking Balance: $"
                            + chk);
                        inputTexField.setText("");
                    }
                }
            }
        }
    }
     

     /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package my.project2;

    import java.text.DecimalFormat;
    import javax.swing.JOptionPane;
    import javax.swing.*;


    /**
     * File: AtmGui.java
     * Author:
     * Date: April 4, 2017
     * Purpose: Creates the ATM GUI.
     */
    public class AtmGui extends javax.swing.JFrame {

        /**
         * Creates new form AtmGui
         */
        public AtmGui() {
            initComponents();
        }

        /**
         * This method is called from within the constructor to initialize the form.
         * WARNING: Do NOT modify this code. The content of this method is always
         * regenerated by the Form Editor.
         */
        @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
        private void initComponents() {

            withdrawButton = new javax.swing.JButton();
            depositButton = new javax.swing.JButton();
            transferButton = new javax.swing.JButton();
            balanceButton = new javax.swing.JButton();
            chRadioButton = new javax.swing.JRadioButton();
            savRadioButton = new javax.swing.JRadioButton();
            inputTexField = new javax.swing.JTextField();
            frame = new javax.swing.JOptionPane();

            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

            withdrawButton.setText("Withdraw");
            withdrawButton.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    withdrawButtonActionPerformed(evt);
                }
            });

            depositButton.setText("Deposit");

            transferButton.setText("Transfer to");

            balanceButton.setText("Balance");
            balanceButton.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    balanceButtonActionPerformed(evt);
                }
            });

            chRadioButton.setText("Checking");
            chRadioButton.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    chRadioButtonActionPerformed(evt);
                }
            });

            savRadioButton.setText("Savings");

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

            javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(layout.createSequentialGroup()
                            .addGap(98, 98, 98)
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                .addComponent(withdrawButton, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addComponent(chRadioButton)
                                .addComponent(transferButton, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                            .addGap(24, 24, 24)
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(savRadioButton)
                                .addComponent(depositButton)
                                .addComponent(balanceButton)))
                        .addGroup(layout.createSequentialGroup()
                            .addGap(76, 76, 76)
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(frame, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(inputTexField, javax.swing.GroupLayout.PREFERRED_SIZE, 224, javax.swing.GroupLayout.PREFERRED_SIZE))))
                    .addContainerGap(62, Short.MAX_VALUE))
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addGap(40, 40, 40)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(withdrawButton)
                        .addComponent(depositButton))
                    .addGap(18, 18, 18)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(transferButton)
                        .addComponent(balanceButton))
                    .addGap(18, 18, 18)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(chRadioButton)
                        .addComponent(savRadioButton))
                    .addGap(18, 18, 18)
                    .addComponent(inputTexField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 124, Short.MAX_VALUE)
                    .addComponent(frame, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap())
            );

            pack();
        }// </editor-fold>//GEN-END:initComponents

       
        //Checking and Savings objects
        private static Accounts ch = new Accounts().new chk();
        private static Accounts sav = new Accounts().new sav();
       
            // Makes accounts
        makeAccounts(checkingStartingBalance, savingsStartingBalance);
       
        // Method that will create checking and savings account
        // based on starting values
        public static void makeAccounts(double checkingStartingBalance,
                                        double savingsStartingBalance) {
            chk.setBalance(checkingStartingBalance);
            sav.setBalance(savingsStartingBalance);
        }
       
        // df for dollars
        private static DecimalFormat df = new DecimalFormat("$0.00");
       
       
       
        // Withdraw
        private void withdrawButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_withdrawButtonActionPerformed
          try {
              // check for increments of 20
              if (getInputValue() > 0 && getInputValue() % 20==0) {
                  // checks for radio button selection
                  if (chRadioButton.isSelected()) {
                      checking.withdraw(getInputValue());
                      JOptionPane.showMessageDialog(frame,
                              df.format(getInputValue()) +
                                      "withdrawn from Checking.");
                  } else if (savRadioButton.isSelected()) {
                      savings.withdraw(getInputValue());
                      JOptionPane.showMessageDialog(frame,
                              df.format(getInputValue()) +
                                      " withdrawn from Savings.");
                  }
                  clearInputValue();
              } else errorNumericValue();
              clearInputValue();
          } catch (InsufficientFunds insufficientFunds) {
              System.out.println("Insufficient Funds");
          }
        }//GEN-LAST:event_withdrawButtonActionPerformed
        // Error Checking; ensures value entered in text
        // field is numeric
        public void errorNumericValue() {
            JOptionPane.showMessageDialog(frame, "Invalid amount entered. Please "
                    + "enter a valid amount. If withdrawing, use increments"
                    + " of $20.");
        }
       
        // Deposit
        private void depositButtonActionPerformed(java.awt.event.ActionEvent evt) {
            // Checks for positive number
            if (getInputValue() > 0) {
                // Checks for checking or savings radio button
                if (chRadioButton.isSelected()) {
                    checking.deposit(getInputValue());
                    JOptionPane.showMessageDialog(frame,
                            df.format(getInputValue()) +
                                    " deposited into Checking.");
                } else if (savRadioButton.isSelected()) {
                    savings.deposit(getInputValue());
                    JOptionPane.showMessageDialog(frame,
                            df.format(getInputValue()) +
                                    " deposited into Savings.");
                }
                clearInputValue();
            } else errorNumericValue();
            clearInputValue();
        }
       
        // Transfer
        private void transferButtonActionPerformed(java.awt.event.ActionEvent evt) {
            // Checks for positive number
            if (getInputValue() > 0) {
                // Checks for radio button selection
                if (chRadioButton.isSelected()) {
                    savings.transferFrom(getInputValue());
                    checking.transferTo(getInputValue());
                    JOptionPane.showMessageDialog(frame,
                            df.format(getInputValue()) +
                                    " transferred from Savings to Checking.");
                } else if (savRadioButton.isSelected()) {
                    checking.transferFrom(getInputValue());
                    savings.transferTo(getInputValue());
                    JOptionPane.showMessageDialog(frame,
                            df.format(getInputValue()) +
                                    " transferred from Checking to Savings.");
                }
                clearInputValue();
            } else errorNumericValue();
            clearInputValue();
        } catch (InsufficientFunds insufficientFunds) {
            System.out.println("Caught in Insufficient Funds");
    }

       
        private void inputTexFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_inputTexFieldActionPerformed
            // TODO add your handling code here:
        }//GEN-LAST:event_inputTexFieldActionPerformed

        private void chRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chRadioButtonActionPerformed
            // TODO add your handling code here:
        }//GEN-LAST:event_chRadioButtonActionPerformed

        private void balanceButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_balanceButtonActionPerformed
            // Checks for radio selection
            if (chRadioButton.isSelected()) {
                JOptionPane.showMessageDialog(frame,
                        "Checking balance: " +
                                df.format(checking.getBalance()));
            } else if (savRadioButton.isSelected()) {
                JOptionPane.showMessageDialog(frame,
                        "Savings balance: " +
                                df.format(savings.getBalance()));
            } else errorNumericValue();
            clearInputValue();
        }//GEN-LAST:event_balanceButtonActionPerformed

        /**
         * @param args the command line arguments
         */
        public static void main(String args[]) {
            /* Set the Nimbus look and feel */
            //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
            /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
             * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
             */
            try {
                for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                    if ("Nimbus".equals(info.getName())) {
                        javax.swing.UIManager.setLookAndFeel(info.getClassName());
                        break;
                    }
                }
            } catch (ClassNotFoundException ex) {
                java.util.logging.Logger.getLogger(AtmGui.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                java.util.logging.Logger.getLogger(AtmGui.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                java.util.logging.Logger.getLogger(AtmGui.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (javax.swing.UnsupportedLookAndFeelException ex) {
                java.util.logging.Logger.getLogger(AtmGui.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            }
            //</editor-fold>

            /* Create and display the form */
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new AtmGui().setVisible(true);
                }
            });
           
            makeAccounts(checkingStartingBalnce, savingsStartingBalance);
        }

       
        // Methods   
        // Returns text in input text field as a double
        public double getInputValue() {
            try {
                return Double.parseDouble(inputTexField.getText());
            } catch (NumberFormatException e) {
                System.out.println("Caught in getInputValue");
                clearInputValue();
                return 0;
            }
        }
       
        // Clears text field
        public void clearInputValue() {
            inputTexField.setText("");
        }
       
        // Variables declaration - do not modify//GEN-BEGIN:variables
        private javax.swing.JButton balanceButton;
        private javax.swing.JRadioButton chRadioButton;
        private javax.swing.JButton depositButton;
        private javax.swing.JOptionPane frame;
        private javax.swing.JTextField inputTexField;
        private javax.swing.JRadioButton savRadioButton;
        private javax.swing.JButton transferButton;
        private javax.swing.JButton withdrawButton;
        // End of variables declaration//GEN-END:variables
    }package my.project2;

    import javax.swing.*;
    /**
     * File: InsufficientFunds.java
     * Author:
     * Date: April 7, 2017
     * Purpose: Create exception
     */
    public class InsufficientFunds extends Exception{
       
        public InsufficientFunds(){
        JOptionPane frame = new JOptionPane();
        JOptionPane.showMessageDialog(frame, "Insufficient Funds");
        }
       
    }



Attachments:

Answers

(5)
Status NEW Posted 02 Jan 2018 02:01 PM My Price 10.00

-----------  ----------- H-----------ell-----------o S-----------ir/-----------Mad-----------am ----------- Th-----------ank----------- yo-----------u f-----------or -----------you-----------r i-----------nte-----------res-----------t a-----------nd -----------buy-----------ing----------- my----------- po-----------ste-----------d s-----------olu-----------tio-----------n. -----------Ple-----------ase----------- pi-----------ng -----------me -----------on -----------cha-----------t I----------- am----------- on-----------lin-----------e o-----------r i-----------nbo-----------x m-----------e a----------- me-----------ssa-----------ge -----------I w-----------ill----------- be----------- qu-----------ick-----------ly

Not Rated(0)