Program banko - nie dopisuje wpłaty do pliku .dat

0

oto kod źródłowy programu.... mam button withdraw-wyplata i lodge-wplata, program jesli odczytuje plik .dat prawidlowo. Lecz jesli chce wplacic na konto albo wyplacic to niestety nie dziala - oczywiscie brakuje mi kodu. Jest to w pliku Read.... .java. Nigdy tez nie tworzylem - laczylem dwoch plikow w jeden ... tak aby classy Read... i Write byly razem i uruchamialy sie z menu....

Plik 1


import javax.swing.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
 
public class WriteRandomFile extends Frame implements ActionListener
{
    private JTextField accountField, firstNameField,
                        lastNameField, balanceField, overdraftlimitField;
 
    private JButton enter,
                    done;
 
    private RandomAccessFile output;
    private Record data;
 
    public WriteRandomFile()
    {
        super("Write to random access file");
 
        data = new Record();
 
        try {
            output = new RandomAccessFile("credit.dat","rw");
        }
        catch ( IOException e ) {
            System.err.println(e.toString() );
            System.exit(1);
        }
 
        setSize(350,150);
        setLayout(new GridLayout(6,2));
 
        setLayout(new GridLayout(6,2));
 
        add(new JLabel("Account Number"));
        accountField = new JTextField();
        add(accountField);
 
        add(new JLabel("First Name"));
        firstNameField = new JTextField(20);
        add(firstNameField);
 
        add(new JLabel("Last Name"));
        lastNameField = new JTextField(20);
        add(lastNameField);
 
        add(new JLabel("Balance"));
        balanceField = new JTextField(20);
        add(balanceField);
 
        add(new JLabel("Overdraftlimit"));
        overdraftlimitField = new JTextField(20);
        add(overdraftlimitField);
 
 
        enter = new JButton("Enter");
        enter.addActionListener(this);
        add(enter);
 
        done = new JButton("Done");
        done.addActionListener(this);
        add(done);
 
        setVisible(true);
}
 
public void addRecord()
{
    int accountNumber = 0;
    Double d, db;
 
    if ( ! accountField.getText().equals("")) {
 
        try{
            accountNumber =
            Integer.parseInt(accountField.getText());
 
            if ( accountNumber > 0 && accountNumber <= 1000) {
                data.setAccount(accountNumber);
                data.setFirstName(firstNameField.getText());
                data.setLastName(lastNameField.getText());
                d = new Double(balanceField.getText());
                data.setBalance(d.doubleValue());
                output.seek(
                    (long) (accountNumber-1) * Record.size());
                    data.write(output);
                db = new Double(overdraftlimitField.getText());
                        data.setOverdraftlimit(db.doubleValue());
                        output.seek(
                        (long) (accountNumber-1) * Record.size());
                        data.write(output);
 
                }
 
                accountField.setText("");
                firstNameField.setText("");
                lastNameField.setText("");
                balanceField.setText("");
                overdraftlimitField.setText("");
            }
            catch (NumberFormatException nfe) {
                System.err.println(
                    "You must enter an integer account number");
                }
                catch ( IOException io){
                    System.err.println(
                        "Error during write to file\n" +
                        io.toString());
                        System.exit(1);
                    }
                }
            }
 
            public void actionPerformed( ActionEvent e)
            {
                addRecord();
 
                if (e.getSource() == done) {
                    try {
                        output.close();
                    }
                    catch ( IOException io ) {
                        System.err.println("File not closed properly\n" +
                        io.toString());
                    }
                    System.exit(0);
                }
            }
 
            public static void main(String args[])
            {
                new WriteRandomFile();
            }
        }

plik 2:


import javax.swing.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.text.DecimalFormat;

public class ReadRandomFile extends Frame implements ActionListener {
    private JTextField accountField, firstNameField, lastNameField,
            balanceField, overdraftlimitField, withdrawField, lodgementField;

    private JButton next, done, withdraw, lodge, delete;

    private RandomAccessFile input;
    private Record data;

    private RandomAccessFile output;

    public ReadRandomFile() {
        super("Read Client File");

        try {
            input = new RandomAccessFile("credit.dat", "rw");
        } catch (IOException e) {
            System.err.println(e.toString());
            System.exit(1);
        }

        try {
            output = new RandomAccessFile("credit.dat", "rw");
        } catch (IOException e) {
            System.err.println(e.toString());
            System.exit(1);
        }

        data = new Record();

        setSize(350, 150);
        setLayout(new GridLayout(10, 4));

        add(new JLabel("Account Number"));
        accountField = new JTextField();
        accountField.setEditable(false);
        add(accountField);

        add(new JLabel("First Name"));
        firstNameField = new JTextField(20);
        firstNameField.setEditable(false);
        add(firstNameField);

        add(new JLabel("last Name"));
        lastNameField = new JTextField(20);
        lastNameField.setEditable(false);
        add(lastNameField);

        add(new JLabel("Balance"));
        balanceField = new JTextField(20);
        balanceField.setEditable(false);
        add(balanceField);

        add(new JLabel("Overdraftlimit"));
        overdraftlimitField = new JTextField(20);
        overdraftlimitField.setEditable(false);
        add(overdraftlimitField);

        next = new JButton("Next");
        next.addActionListener(this);
        add(next);

        done = new JButton("Done");
        done.addActionListener(this);
        add(done);

        add(new JLabel("Withdraw"));
        withdrawField = new JTextField(20);
        withdrawField.setEditable(true);
        add(withdrawField);

        add(new JLabel("Lodgement"));
        lodgementField = new JTextField(20);
        lodgementField.setEditable(true);
        add(lodgementField);

        withdraw = new JButton("Withdraw");
        withdraw.addActionListener(new ActionListener() // anonymous inner class
                {
                    // event handler called when WithdrawalJButton is pressed
                    public void actionPerformed(ActionEvent event) {
                        Withdrawal(event);
                    }

                } // end anonymous inner class

                ); // end call to addActionListener
        add(withdraw);

        lodge = new JButton("Lodge");
        lodge.addActionListener(new ActionListener() // anonymous inner class
                {
                    // event handler called when WithdrawalJButton is pressed
                    public void actionPerformed(ActionEvent event) {
                        Lodgement(event);
                    }

                } // end anonymous inner class

                ); // end call to addActionListener
        add(lodge);

        setVisible(true);

        delete = new JButton("Delete Record");
        delete.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                DeleteRecord(event);
            }

        });
        add(delete);

    }

    public void actionPerformed(ActionEvent e) {
        int accountNumber;

        if (e.getSource() == next)
            readRecord();
        else
            closeFile();

    }

    public void readRecord() {
        DecimalFormat twoDigits = new DecimalFormat("0.00");

        try {
            do {
                data.read(input);
            } while (data.getAccount() == 0);

            accountField.setText(String.valueOf(data.getAccount()));
            firstNameField.setText(data.getFirstName());
            lastNameField.setText(data.getLastName());
            balanceField.setText(String.valueOf(twoDigits.format(data
                    .getBalance())));

            overdraftlimitField.setText(String.valueOf(twoDigits.format(data
                    .getOverdraftlimit())));

        } catch (EOFException eof) {
            closeFile();
        } catch (IOException e) {
            System.err.println("error during read from file\n" + e.toString());
            System.exit(1);
        }
    }

    private void closeFile() {
        try {
            input.close();
            System.exit(0);
        } catch (IOException e) {
            System.err.println("Error closing file\n" + e.toString());
            System.exit(1);
        }
    }

    public static void main(String args[]) {
        new ReadRandomFile();
    }

    private void Withdrawal(ActionEvent event) {
        double Balance = Double.parseDouble(balanceField.getText());
        double o = 0;

        if (Balance > o)

            balanceField.setText(String.valueOf(Double.parseDouble(balanceField
                    .getText())
                    - Double.parseDouble(withdrawField.getText())));
        withdrawField.setText("");

        if (Balance <= o) {
            JOptionPane.showMessageDialog(null,
                    "You Have Insufficant Funds to Request an Overdraft",
                    "Insufficant Funds", JOptionPane.ERROR_MESSAGE); // display
            // error
            // message
            // if
            // user
            // enters
            // invalid
            // input
            balanceField.setText("0");
        }

        int accountNumber = 0;
        Double d, db;

        {

            try {
                accountNumber = Integer.parseInt(accountField.getText());

                {
                    data.setAccount(accountNumber);
                    data.setFirstName(firstNameField.getText());
                    data.setLastName(lastNameField.getText());
                    d = new Double(balanceField.getText());
                    data.setBalance(d.doubleValue());
                    output.seek((long) (accountNumber - 1) * Record.size());
                    data.write(output);
                    db = new Double(overdraftlimitField.getText());
                    data.setOverdraftlimit(db.doubleValue());
                    output.seek((long) (accountNumber - 1) * Record.size());
                    data.write(output);

                }

            }

            catch (IOException io) {

                System.exit(1);
            }
        }

    } // end method SubmitJButtonActionPerformed

    private void Lodgement(ActionEvent event) {
        balanceField.setText(String.valueOf(Double.parseDouble(lodgementField
                .getText())
                + Double.parseDouble(balanceField.getText())));
        lodgementField.setText("");

        int accountNumber = 0;
        Double d, db;

        {

            try {
                accountNumber = Integer.parseInt(accountField.getText());

                {
                    data.setAccount(accountNumber);
                    data.setFirstName(firstNameField.getText());
                    data.setLastName(lastNameField.getText());
                    d = new Double(balanceField.getText());
                    data.setBalance(d.doubleValue());
                    output.seek((long) (accountNumber - 1) * Record.size());
                    data.write(output);
                    db = new Double(overdraftlimitField.getText());
                    data.setOverdraftlimit(db.doubleValue());
                    output.seek((long) (accountNumber - 1) * Record.size());
                    data.write(output);

                }

            }

            catch (IOException io) {

                System.exit(1);
            }
        }

    }

    private void DeleteRecord(ActionEvent event) {

    }

}

Mam nadzieje, ze nie sknocilem tym razem :)

0

Nie no, wrecz rewelacyjna pomoc .... :) Troche pod górke i amen. Na prosciutkie pytanie full odpowiedzi... DZIEKI

0

No wiem tak napisałem.... tak więc do tej chwili nie oddałem tej pracy poniewaz jest nie skonczona.... urwal mi sie watek... a mam egzamin z CISCO.... takze robie wszytko na raz
Marcin....

1 użytkowników online, w tym zalogowanych: 0, gości: 1