...

View Full Version : Help with arrays!



jakeroyl
03-27-2012, 07:00 PM
Okay, so these are the things that I need to do.

1 - create an array of customer records and stores them in a binary file.

2 - reads from the file and saves it in a 'anotherArray'

3 - Add a new customer record to the 'AnotherArray'

4 - reads the name,pin,withdraw and deposit amount from the user and uses the name & pin to find a match in the 'anotherArray' and if a match is found, then the balance should be deducted if a deposit is made or credited if a withdraw is made.

5 - write the 'anotherArray' in the same binary file after updating the balance

The array is in this format (name,pin,account,balance)

I've done a little, but I need help in the 4th and 5th part.





import java.io.Serializable;
import java.util.Scanner;

/**
Serialized class for data on endangered species.
Includes a main method.
*/
public class CustomerRecord implements Serializable
{
private String name;
private int pin;
private int account;
private static double balance;

public CustomerRecord( )
{
name = null;
pin = 0;
account = 0;
balance = 0.00;
}

public CustomerRecord(String initialName, int initialPin, int initialAccount, double initialBalance)
{
name = initialName;

if (initialPin >= 1111 && initialPin <= 9999)
pin = initialPin;
else
{
System.out.println("ERROR: Pin is not acceptable.");
System.exit(0);
}

if (initialAccount >= 400111 && initialAccount <= 500111)
account = initialAccount;
else
{
System.out.println("ERROR: Account number is not acceptable.");
System.exit(0);
}

if (initialBalance >= 0)
balance = initialBalance;
else
{
System.out.println("ERROR: Initial Balance is not acceptable.");
System.exit(0);
}
}

public String toString()
{
return ("Name = " + name
+ " Account = " + account
+ " Balance = " + "$" + balance + "\n");
}

public void setCustomerRecord( )
{
Scanner keyboard = new Scanner(System.in);
System.out.println("\nEnter new customer's name: ");
name = keyboard.nextLine( );

System.out.println("Enter new customer's pin: ");
pin = keyboard.nextInt( );
while (pin < 1111 || pin > 9999)
{
System.out.println("Pin should be in the range of 1111-9999.");
System.out.println("Reenter pin:");
pin = keyboard.nextInt( );
}

System.out.println("Enter new customer's account no: ");
account = keyboard.nextInt( );
while (account < 400111 || pin > 500111)
{
System.out.println("Account should be in the range of 400111-500111.");
System.out.println("Reenter account number:");
account = keyboard.nextInt( );
}

System.out.println("Enter new customer's initial balance: ");
balance = keyboard.nextDouble( );
while (balance < 0)
{
System.out.println("Initial balance should be positive or zero.");
System.out.println("Reenter initial balance:");
balance = keyboard.nextDouble( );
}
}

public void writeOutput( )
{
System.out.print("Name = " + name + "\t");
System.out.print("Account = " + account + "\t");
System.out.print("Balance = " + "$" + balance + "\n");
}

public String getName( )
{
return name;
}

public int getPin( )
{
return pin;
}

public int getAccount( )
{
return account;
}



public void setBalance(double amount)
{
balance = amount;
}

public static void deposit(double aDeposit)
{
balance = balance + aDeposit;
}
public static void withdraw(double aWithdraw)
{
if
( balance >= aWithdraw)
balance = balance - aWithdraw;
else
System.out.println("Cannot withdraw that amount. You do not sufficient balance.");
Scanner keyboard = new Scanner(System.in);
aWithdraw = keyboard.nextDouble();
return;
}
public double getBalance( )
{
return balance;
}
public boolean equal(CustomerRecord otherObject)
{
return (name.equalsIgnoreCase(otherObject.name) &&
(pin == otherObject.pin) &&
(account == otherObject.account) &&
(balance == otherObject.balance));
}
}

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Scanner;

public class BankCustomers
{
public static void main(String[] args)
{
//----------------------------------------------------------------
//part1: Create array of customer records and write them
//in the file customer_record.dat
CustomerRecord[] oneArray = new CustomerRecord[100];
oneArray[0] = new CustomerRecord("John Gray", 2222, 400222, 10000.00);
oneArray[1] = new CustomerRecord("Ann Black", 3333, 400333, 1500.00);
oneArray[2] = new CustomerRecord("Mary White", 4444, 400555, 16500.00);
oneArray[3] = new CustomerRecord("Jack Green", 7777, 400888, 100.00);

int index = 4;

String fileName = "customer_records.dat";
System.out.println("---Open file: " + fileName);
System.out.println("---Customer records written to file: " + fileName);
System.out.println("---Close file: " + fileName);
try
{
ObjectOutputStream outputStream =
new ObjectOutputStream(
new FileOutputStream(fileName));
outputStream.writeObject(oneArray);
outputStream.close( );
}
catch(IOException e)
{
System.out.println("Error writing to file " +
fileName + ".");
System.exit(0);
}
System.out.println("\n");


//-------------------------------------------------------------------
//Part2: Read from the file customer_record.dat and save
//the customer records in anotherArray
System.out.println("---Open file: " + fileName);
System.out.println("---Customer records read from file: " + fileName);
System.out.println("---Close file: " + fileName);
CustomerRecord[] anotherArray = null;
try
{
ObjectInputStream inputStream =
new ObjectInputStream(
new FileInputStream(fileName));
anotherArray = (CustomerRecord[])inputStream.readObject( );
inputStream.close( );
}
catch(Exception e)
{
System.out.println("Error reading file " +
fileName + ".");
System.exit(0);
}
//Print the records on screen
for (int i = 0; i < index; i++)
System.out.print(anotherArray[i]);


//------------------------------------------------
//Part3: Add a new customer record to anotherArray

anotherArray[index] = new CustomerRecord();
anotherArray[index].setCustomerRecord();
index++;
//Print the records on screen
for (int i = 0; i < index; i++)
System.out.print(anotherArray[i]);


//------------------------------------------------
//Part4: Find a customer record from anotherArray
//to do transaction(s) and update the record's balance

char repeat; // User control to repeat or quit
double balance;

do{
;

System.out.println("Enter the name");
String aName;
Scanner keyboard = new Scanner(System.in);
aName = keyboard.nextLine();

System.out.println("Enter the pin");
int aPin;
aPin = keyboard.nextInt();

System.out.println("Enter the amount you wish to withdraw");
double aWithdraw;
aWithdraw = keyboard.nextDouble();
CustomerRecord.withdraw(aWithdraw);

System.out.println("Enter the amount you wish to deposit");
double aDeposit;
aDeposit = keyboard.nextDouble();
CustomerRecord.deposit(aDeposit);

for
(int i = 0; i < anotherArray.length; i++) {
CustomerRecord record = anotherArray[i];
if( record.getName().equalsIgnoreCase(aName))
{
System.out.println(record);
record.getBalance();

}
else
{System.out.println("");}

}


System.out.println("\nAnother Transaction? (y for yes)");
repeat = keyboard.next().charAt(0);

}while(repeat == 'y' || repeat == 'Y');

//Print the records on screen
for (int i = 0; i < index; i++)
System.out.print(anotherArray[i]);

//------------------------------------------------
//Part5: Write the customer records from anotherArray
//in the file customer_record.dat

// *** MISSING CODE ***

//End of program
System.out.println("\n---End of program.");
}
}

alykins
03-28-2012, 01:56 PM
why not just append all that new data to the file using the filewriter? link (http://docs.oracle.com/javase/7/docs/api/java/io/FileWriter.html)
alternatively you could re-write the entire file. If all of the code up there is working I am confused- you seem to have done the more complex stuff- this is just appending the text on the end.

also can you separate you classes in the future- took a while to scan through and actually find where it was you were having issues; provided your other class is working as it should (which you've indicated) I could have flipped past it (still important to have as reference though :) )



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum