Google Answers Logo
View Question
 
Q: a car park system made in java ( Answered 5 out of 5 stars,   0 Comments )
Question  
Subject: a car park system made in java
Category: Computers > Programming
Asked by: mizinnocent-ga
List Price: $70.00
Posted: 14 Aug 2003 10:48 PDT
Expires: 13 Sep 2003 10:48 PDT
Question ID: 244765
i am currently trying to make a car park system in java which records
which cars ar currently parkd and where only registered cars can enter
as well as which cars are parked at a given time.  Also it should be
able to indicate if the car park is full or not.  Can anyone help me
please with this.

Request for Question Clarification by answerguru-ga on 14 Aug 2003 13:25 PDT
Hi mizinnocent-ga,

I'd definitely like to help you with this system, but the more details
you provide, the better I can assist you :)

Could you please provide as much detail as you can about this system,
and also let me know just what type of 'help' you are seeking? (ie.
talk about design aspect, coding, etc.)

Thanks,
answerguru-ga

Request for Question Clarification by rhansenne-ga on 19 Aug 2003 02:11 PDT
Hi,

If you need help coding, I'm willing to assist as well, but we'll
definitely need a more detailed description of the application.

btw, is this a swing application, applet or command line program?

Regards,

rhansenne-ga.

Clarification of Question by mizinnocent-ga on 20 Aug 2003 14:23 PDT
sorry about the delay in trying to clarify my question i couldnt
access my account.  All i need to do is have a simple program that
runs in a GUI frame is a swing application its the coding that really
messed me up.  All the program needs to do is only let registered
users in tell when the car park is full and what cars are parked at a
given time.  I willing to pay extra if someone can help me plz its
really important thank you.

Request for Question Clarification by answerguru-ga on 20 Aug 2003 15:08 PDT
Hi again,

I've started the basic code design to meet your requirements, but I
still have a few questions:

1. How do you identify a "regsitered user"? Since there doesn't seem
to be any functionality for adding and removing these registered
users, is there a predefined list that needs to be used?

2. What is the size of the car lot (in terms of the number of cars it
can accomodate)?

3. How should the parking stalls be labelled?

4. Is a registered user assigned a specific stall or can they occupy
any spot in the lot?

I will continue to do as much as I can while leaving the code open
such that I can incorporate your responses to the above questions.
Looking forward to hearing from you :)

answerguru-ga

Clarification of Question by mizinnocent-ga on 20 Aug 2003 15:57 PDT
Hi
1. The system needs to know the registered user that can only be done
by having the read and write system.  What i had thought but i dont
know if it can be done is having already stored about 10 people on the
system and only they were allowed to enter. the system for the car
park doent havent to be big about 10 cars should be enough.
2. The user can park anywhere they want to they dont have to park in 
a certain place but if u want to do that u can.
3.  About labelling the car stalls i dont have a clue.
I really appreciate u doing this for me.  I am willing to pay extra is
there anyway it can be done for friday morning London (UK)time for
that i can pay $110. Thanks

Request for Question Clarification by answerguru-ga on 20 Aug 2003 19:16 PDT
OK, I will try to have it done by the deadline you've requested. Would
it be fair to say that if I make your deadline then you just add a $40
tip?

answerguru-ga

Clarification of Question by mizinnocent-ga on 21 Aug 2003 00:43 PDT
re u trying to say that its not fair u have to o in in a short space
of time or that its to less wat i am going to pay if its done on time.

Request for Question Clarification by answerguru-ga on 21 Aug 2003 02:42 PDT
I wasn't saying either of those, I was simply agreeing with your
statement that you would be willing to provide an incentive if the
program was complete by a certain time. My apologies for the
misunderstanding - does the incentive offer still stand?

answerguru-ga

Clarification of Question by mizinnocent-ga on 21 Aug 2003 07:31 PDT
Yeah the offer still stands i am willing to pay wat i said theres only
 little extra if u could do for me that is explain the coding once its
done plz thanks

Clarification of Question by mizinnocent-ga on 21 Aug 2003 15:05 PDT
hi i just wanted to know how the coding is going and weather or not it
will be done by tomorrow morning uk time.  Also if u could explain the
coding to me thanks

Request for Question Clarification by answerguru-ga on 21 Aug 2003 15:56 PDT
It's going well - I'm about 85% complete. As far as "explaining the
coding" I will coment my code so you understand what is happening.

answerguru-ga
Answer  
Subject: Re: a car park system made in java
Answered By: answerguru-ga on 21 Aug 2003 22:31 PDT
Rated:5 out of 5 stars
 
Hello mizinnocent-ga,

As promised, I am delivering the source code for the GUI application
as you requested before your deadline time. Below is all the code -
you will need to place it all in a file called CarFrame.java, save it
in a new folder, and then compile it with the following command:

> javac CarFrame.java

The program also depends on a text file (the contents of which is also
listed below). Place this information in a file called carData.txt and
save it to the same folder where you saved your source code.

---------------BEGIN SOURCE CODE--------------------


// importing all required libraries

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

/*

The CarFrame class is an implementation of the JFrame and 
also contains the main method. Usage:

> java CarFrame

Note that the file carData.txt must be in the same directory as
all compiled code.

*/

public class CarFrame extends JFrame 
{
	public static JTabbedPane index;
	public static CarLot myCarLot;
	
	public CarFrame()
        {
		// setting window properties

		this.setSize(Toolkit.getDefaultToolkit().getScreenSize());
		this.setDefaultCloseOperation(3);
		this.setTitle("Car Park System");
		this.setResizable(false);

		Color newColor = new Color(0.2f, 0.1f, 0.8f, 0.1f);

		// creating Car Lot object
		myCarLot = new CarLot(15, "carData.txt");

		// building tabbed panel display
		index = new JTabbedPane();
		index.setBackground(newColor);
		final JPanel statusTab = Status.startup();
		final JPanel addOrRemoveCarTab = AddOrRemoveCar.startup();

		// adding tabs to tabbed panel
		index.addTab("Lot Status", statusTab);
		index.addTab("Add Or Remove Cars", addOrRemoveCarTab);

		// setting content pane
		this.getContentPane().add(index);
    }

	public static void main(String[] args) 
	{
		// initialize frame and set visible
		CarFrame main = new CarFrame();
		main.setVisible(true);
	}
}

class CarLot
{
	// class variables
	private Vector registeredDrivers;
	private Vector parkingStalls;
	private String dataFile;
	private int maxLotSize;
	
	// constructor
	public CarLot(int maxSize, String fileName)
	{
		registeredDrivers = new Vector();
		parkingStalls = new Vector();
		maxLotSize = maxSize;
		dataFile = fileName;
		loadData();
	}

	public String getDataFileName()
	{
		return dataFile;
	}

	public int getMaxSize()
	{
		return maxLotSize;
	}

	public int carCount()
	{
		return parkingStalls.size();
	}

	// Input: license plate number
	// Output: Stall number in parking lot
	// Error State: returned String is ""
	public String findStallLocation(String licenseNum)
	{
		String currentStall = "";
		String returnVal = "";

		for(int i = 0; i < parkingStalls.size(); i++)
		{
			currentStall = (String)parkingStalls.elementAt(i);

			if(licenseNum.equals(currentStall))
			{
				returnVal = Integer.toString(i);
				break;
			}			
		}

		return returnVal;
	}

	// Loads data from file (maintain persistence upon close)
	public int loadData()
	{
		// each row in the data file represents a registered car
		// format:  
		// licensePlateNum|currentlyParked

		FileReader file;
		BufferedReader buffer;
		StringTokenizer tokens;
		String currentLine = "";
		String licensePlate = "";
		String currentlyParked = "";
		
		try
		{
			file = new FileReader(dataFile);
			buffer = new BufferedReader(file);

			// read and parse each line in the file
			while((currentLine = buffer.readLine()) != null)
			{
				int returnVal = 0;
				tokens = new StringTokenizer(currentLine, "|");
				licensePlate = tokens.nextToken();
				currentlyParked = tokens.nextToken();

				// load all registered drivers
				registeredDrivers.addElement(licensePlate);

				// load car into stall if status is "Y"
				if(currentlyParked.equals("Y"))
				{
				   if(parkingStalls.size() < maxLotSize)
				   {
					 parkingStalls.addElement(licensePlate);
				   }
				   else
				   {
						returnVal = -1;
				   }
				}
			}	
		}
		catch(FileNotFoundException f)
		{
			return -1;
		}
		catch(IOException io)
		{
			return -1;
		}		
		
		return 0;
	}

	// Saves status data upon request to data file
	public int saveData()
	{
		FileWriter writer = null;
		PrintWriter printer = null;
		String currentRecord = "";
		String licensePlate = "";
		String parkedPlates = "";
		String currentlyParked = "";

		try
		{
			writer = new FileWriter(dataFile);
			printer = new PrintWriter(writer);

			// build data record by parsing Vectors
			for(int i = 0; i < registeredDrivers.size(); i++)
			{
			  licensePlate = (String)registeredDrivers.elementAt(i);
			  currentlyParked = "N";

			  for(int j = 0; j < parkingStalls.size(); j++)
			  {
			    parkedPlates = (String)parkingStalls.elementAt(j);

			    if(parkedPlates.equals(licensePlate))
			    {
			      currentlyParked = "Y";
			      break;
			    }
			  }

			  currentRecord = licensePlate + "|" + currentlyParked;

			  // output record to file
			  printer.println(currentRecord);
			}

			// close output streams
			writer.close();
			printer.close();
		}
		catch(IOException io)
		{
			
			return -1;
		}	

		return 0;
	}

	public boolean carEnter(String licenseNum)
	{
		String parkedCar = "";
		boolean alreadyHere = false;
		
		// Check stalls to see if car is already parked
		for(int i = 0; i < parkingStalls.size(); i++)
		{
			parkedCar = (String)parkingStalls.elementAt(i);

			if(parkedCar.equals(licenseNum))
			{
				alreadyHere = true;
			}			
		}
		
		// car is not already parked
		if(!alreadyHere)
		{
			// space is still available
			if(!lotFull())
			{
				parkingStalls.addElement(licenseNum);
				return true;
			}
			// space not available
			else
			{
				return false;
			}
		}
		// car already parked in lot
		else
		{
			return false;
		}
	}

	public boolean carExit(String licenseNum)
	{
		boolean returnVal = false; //default return value
		String parkedCar = "";

		// searching for car in stalls
		for(int i = 0; i < parkingStalls.size(); i++)
		{
			parkedCar = (String)parkingStalls.elementAt(i);

			// car found
			if(parkedCar.equals(licenseNum))
			{
				parkingStalls.removeElementAt(i);
				returnVal = true;
				break;
			}			
		}

		return returnVal;
	}

	public boolean lotFull()
	{
		// compare stalls occupied to max lot size
		if(parkingStalls.size() == maxLotSize)
		{
			return true;
		}
		else
		{
			return false;
		}
	}
}

/*
Provides the graphical layout for the Status tab
*/
class Status
{
	public static JPanel statusTab = new JPanel();
	public static JPanel statusScreen1;

	static JTextField licensePlateField = new JTextField(20);

	// retrieves Status panel and sets visible
	static JPanel startup()
	{	
		statusScreen1 = Status.getStatusScreen1();
		statusTab.add(statusScreen1);

		statusScreen1.setVisible(true);

		return statusTab;

	}

	//defines and retrieves Status panel
	static JPanel getStatusScreen1()
        {   
	  statusScreen1 = new JPanel(new FlowLayout());
          JPanel generalPanel = new JPanel();
	  generalPanel.setLayout(new BoxLayout(generalPanel,
BoxLayout.Y_AXIS));
	  generalPanel.add(Box.createVerticalStrut(170));

	  JPanel holderPanel = new JPanel(new BorderLayout());
	  holderPanel.setLayout(new BoxLayout(holderPanel,
BoxLayout.Y_AXIS));
	  JPanel criteriaPanel = new JPanel();
	  criteriaPanel.setLayout(new BoxLayout(criteriaPanel,
BoxLayout.X_AXIS));
	  JLabel licensePlateLabel = new JLabel("License Plate Number:");

		Font textFont = new Font("SanSerif", Font.PLAIN, 24);
		Font textFieldFont = new Font("Serif", Font.PLAIN, 20);

		licensePlateLabel.setFont(textFont);
		licensePlateField.setFont(textFieldFont);

		criteriaPanel.add(Box.createHorizontalStrut(40));
		criteriaPanel.add(licensePlateLabel);
		criteriaPanel.add(licensePlateField);
		criteriaPanel.add(Box.createHorizontalStrut(40));

		final JPanel buttonPanel = new JPanel();
	    buttonPanel.setLayout(new BoxLayout(buttonPanel,
BoxLayout.X_AXIS));
		JButton lotCapacityButton = new JButton("Check Lot Capacity");
		JButton saveStateButton = new JButton("Save Lot State");
		JButton findStallButton = new JButton("Locate Vehicle");

		JButton clearButton = new JButton(" Clear  ");

		lotCapacityButton.setFont(textFont);
		saveStateButton.setFont(textFont);
		findStallButton.setFont(textFont);
		clearButton.setFont(textFont);

		buttonPanel.add(Box.createHorizontalStrut(10));
		buttonPanel.add(lotCapacityButton);	
		buttonPanel.add(saveStateButton);
		buttonPanel.add(findStallButton);
		buttonPanel.add(clearButton);

		holderPanel.add(criteriaPanel);
		holderPanel.add(Box.createVerticalStrut(30));
		holderPanel.add(buttonPanel);
		generalPanel.add(holderPanel);
		statusScreen1.add(generalPanel);
		statusScreen1.add(Box.createHorizontalStrut(150));


		// button listener for lot capacity
        lotCapacityButton.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
		        {   
			 // Retrieve required information
		       String licensePlate = licensePlateField.getText().trim();

			 int totalCapacity = CarFrame.myCarLot.getMaxSize();
			 int currentlyOccupied = CarFrame.myCarLot.carCount();
			 int freeSpace = totalCapacity - currentlyOccupied;

			 // Print dialog box
			 JOptionPane.showMessageDialog((Component) buttonPanel, 
				"Total Capacity: " + totalCapacity +
				"\nCurrently Occupied: " + currentlyOccupied +
				"\nFree Space: " + freeSpace,
				"Current Car Lot Statistics", 
                                JOptionPane.INFORMATION_MESSAGE);
				
				// reset active tab and field data
				CarFrame.index.setSelectedIndex(0);
				licensePlateField.setText("");						
            }
		});

		// button listener for save state
		saveStateButton.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{   
				// perform save operation
				int result = CarFrame.myCarLot.saveData();

				// check if successful and report results
				if(result == 0)
				{
			JOptionPane.showMessageDialog((Component) buttonPanel, 
		"Data for all registered users has been updated in file: " +
			CarFrame.myCarLot.getDataFileName(),
		"Data Stored Successfully", JOptionPane.INFORMATION_MESSAGE);
				}
				else
				{
			JOptionPane.showMessageDialog((Component) buttonPanel, 
			        "Data could not be stored!",
			     "Data Extract Failure", JOptionPane.ERROR_MESSAGE);
				}

				// reset active tab and field data
				CarFrame.index.setSelectedIndex(0);
				licensePlateField.setText("");						
			}
		});

		// button listener for car location search
		findStallButton.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
		    {   
				// retrieve input and perform search
		       String licensePlate = licensePlateField.getText().trim();
	 String stallNumber =
CarFrame.myCarLot.findStallLocation(licensePlate);

			// check operation result and report using dialog boxes
			if(!stallNumber.equals(""))
			{
			 JOptionPane.showMessageDialog((Component) buttonPanel, 
				"Location of car #" + licensePlate + ":" +
				"\nStall " + stallNumber,
				"Car Location Found", 
                                JOptionPane.INFORMATION_MESSAGE);
			 }
			 else
			 {
			JOptionPane.showMessageDialog((Component) buttonPanel, 
				"Location of car #" + licensePlate + ":" 
                                + "Could not be found." + 
          "\nThe vehicle is either not registered or not currently
parked.",
			"Car Location Found", JOptionPane.ERROR_MESSAGE);
				}				
				
			// reset active tab and field data
			CarFrame.index.setSelectedIndex(0);
			licensePlateField.setText("");						
            }
		});		

		// button listener for clear
		clearButton.addActionListener(new ActionListener()
		{   public void actionPerformed(ActionEvent e)
		    {
				// reset license plate field
				licensePlateField.setText("");
			}
		});

		return statusScreen1;
    }
}

/*
Provides the graphical layout for the Add or Remove Car tab
*/
class AddOrRemoveCar
{
	public static JPanel addOrRemoveCarTab = new JPanel();
	public static JPanel addOrRemoveCarScreen1;

	static JTextField licensePlateField = new JTextField(20);

	// Retrieves and returns add/remove car panel
	static JPanel startup()
	{     addOrRemoveCarScreen1 =
AddOrRemoveCar.getAddOrRemoveCarScreen1();
		addOrRemoveCarTab.add(addOrRemoveCarScreen1);

		addOrRemoveCarScreen1.setVisible(true);

		return addOrRemoveCarTab;
	}

	// Defines and returns graphical components for screen
	static JPanel getAddOrRemoveCarScreen1()
    {   
		addOrRemoveCarScreen1 = new JPanel(new FlowLayout());
        JPanel generalPanel = new JPanel();
	generalPanel.setLayout(new BoxLayout(generalPanel,
BoxLayout.Y_AXIS));
		generalPanel.add(Box.createVerticalStrut(170));

		JPanel holderPanel = new JPanel(new BorderLayout());
	holderPanel.setLayout(new BoxLayout(holderPanel, BoxLayout.X_AXIS));
		JPanel criteriaPanel = new JPanel(new FlowLayout());
                JLabel licensePlateLabel = new JLabel("License Plate
Number:",
                                                    
SwingConstants.RIGHT);

		Font textFont = new Font("SanSerif", Font.PLAIN, 24);
		Font textFieldFont = new Font("Serif", Font.PLAIN, 20);

		licensePlateLabel.setFont(textFont);
		licensePlateField.setFont(textFieldFont);

		criteriaPanel.add(licensePlateLabel);
		criteriaPanel.add(licensePlateField);

		final JPanel buttonPanel = new JPanel(new FlowLayout());
	buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.X_AXIS));
		JButton addButton = new JButton("Add Car to Lot");
		JButton removeButton = new JButton("Remove Car from Lot");
		JButton clearButton = new JButton("Clear Data");

		addButton.setFont(textFont);
		removeButton.setFont(textFont);
		clearButton.setFont(textFont);

		buttonPanel.add(Box.createHorizontalStrut(10));
		buttonPanel.add(addButton);
		buttonPanel.add(removeButton);
		buttonPanel.add(clearButton);

		holderPanel.add(criteriaPanel);		
		generalPanel.add(holderPanel);
		holderPanel.add(Box.createVerticalStrut(75));
		generalPanel.add(buttonPanel);
		addOrRemoveCarScreen1.add(generalPanel);
		addOrRemoveCarScreen1.add(Box.createHorizontalStrut(100));


		// button listener for adding car to lot
        addButton.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
		    {   
		       String licensePlate = licensePlateField.getText().trim();

				// check validity of input
				if((licensePlate.length() == 0))
				{
		JOptionPane.showMessageDialog((Component) buttonPanel, 
                             "Please fill in the field and try again",
							"Blank Field", 
                                           
JOptionPane.ERROR_MESSAGE);
				}
				else
				{
					// perform enter operation
		boolean result = CarFrame.myCarLot.carEnter(licensePlate);

					// check outcome and report results
					if(!result)
					{
		JOptionPane.showMessageDialog((Component) buttonPanel, 
    "This license plate is either not registered or is already in the
lot. " +
     "Please try again.",
          "Invalid Operation", JOptionPane.ERROR_MESSAGE);
					}
					else
					{
	int another = JOptionPane.showConfirmDialog((Component)
buttonPanel,			"The car has been added. Add another car to the lot?",
                "Add Car",
        	JOptionPane.YES_NO_OPTION);

		// reset input field
		licensePlateField.setText("");
						
		// change tabs based on user input
		if(another == JOptionPane.NO_OPTION)
		{
							CarFrame.index.setSelectedIndex(0);
		}						
	 }					
	}
       }
       });

		// button listener for removing car from lot
		removeButton.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
		    {   
				// retrieve input data
		String licensePlate = licensePlateField.getText().trim();
				
				// check data validity
				if((licensePlate.length() == 0))
				{
					// invalid
	JOptionPane.showMessageDialog((Component) buttonPanel, 
                           "Please fill in the field and try again",
			   "Blank Field", JOptionPane.ERROR_MESSAGE);
				}
				else
				{
					// valid

					// perform exit operation
		boolean result = CarFrame.myCarLot.carExit(licensePlate);

					// check outcome and report results
					if(!result)
					{
	JOptionPane.showMessageDialog((Component) buttonPanel, 
   "This license plate is invalid or is already in the lot. Please try
again.",
            "Invalid Operation", JOptionPane.ERROR_MESSAGE);
					}
					else
					{
	int another = JOptionPane.showConfirmDialog((Component)
buttonPanel,			"The car has been removed. Remove another car?", "Add
Car",
                 JOptionPane.YES_NO_OPTION);

		licensePlateField.setText("");
						
		if(another == JOptionPane.NO_OPTION)
		{
							CarFrame.index.setSelectedIndex(0);
		}						
	}					
       }
      }
      });

		// button listener for clear button
		clearButton.addActionListener(new ActionListener()
		{   public void actionPerformed(ActionEvent e)
		    {
				// reset text field
				licensePlateField.setText("");
			}
		});

		return addOrRemoveCarScreen1;
    }
}

---------------END SOURCE CODE--------------------

---------------BEGIN DATA FILE--------------------
00000000|Y
11111111|N
22222222|Y
33333333|N
44444444|N
55555555|N
66666666|Y
77777777|N
88888888|Y
99999999|Y
10101010|N
11011011|Y
12012012|Y
13013013|N
14014014|Y
15015015|Y
16016016|N
17017017|N
18018018|Y
19019019|Y

---------------END DATA FILE--------------------

The content above (especially the source code) may have lines that are
broken as a result of being posted in this forum - something we have
to deal with. I have tried to write the code such that this is avoided
as much as possible :)

I have done my best to comment the code throughout so you shouldn't
have a problem following it, but let me know if you have a specific
concerns.

Cheers!
answerguru-ga

Request for Answer Clarification by mizinnocent-ga on 22 Aug 2003 06:01 PDT
Hello thank u very much for meeting my deadline i just have one
problem when i try to run the program i get this error messages on
very thng that is writtedn in blue "Unclosed character literal". what
doed that mean i have checked the line alot and it seems rite to me
but i dont know y it is there.  Also could i ask a fav could u tell me
what this proram does thats all thank you.

Clarification of Answer by answerguru-ga on 22 Aug 2003 13:40 PDT
Hi there,

If you read my commentary that I included with the message I stated
that some lines of code that are too long may be split up - when this
happens in the middle of defining a string you will get the unclosed
string literal error (there is nothing I can really do about this
since I cannot control how content is posted in the forum). Just make
sure that the line(s) where the error occurs has the entire string on
the same line. For example:

Good:
"Add Car"

Bad:
"Add
Car"

As you can see the opening and closing quotations for a string MUST be
on the same line.

I'm not sure what you want me to tell you as far as what the program
does since you told me what you wanted. The user interface is
basically made up of two tabs that the user can switch between. The
first one is a status tab where the user can get statistics about the
lot (like how much space is available and how many cars are currently
in the lot), save the current state of the lot to a text file, and
locate which stall a specific car is located within the lot.

The second tab allows the user to add cars to the lot, or remove cars
from the lot - a car cannot be added unless it is registered and not
already in the lot. A car cannot be removed unless it is already
parked in the lot.

Hopefully that is enough of a description for you - I would appreciate
if you could provide the $40 tip that we agreed upon earlier.

Thanks,
Chico

Request for Answer Clarification by mizinnocent-ga on 23 Aug 2003 17:33 PDT
hi thanks so much for the clarification it really helped. Its my first
time i am using this service can u tell me who i will pay the $40 plz
thanks sonia xXx

Clarification of Answer by answerguru-ga on 23 Aug 2003 19:19 PDT
Sonia,

You should have an option to provide a rating on how well I answered
your question (on a scale of 5 stars). At this time you can also
provide a tip - that is where I was anticipating you would add the
remaining $40.

Thanks,
answerguru-ga
mizinnocent-ga rated this answer:5 out of 5 stars and gave an additional tip of: $40.00

Comments  
There are no comments at this time.

Important Disclaimer: Answers and comments provided on Google Answers are general information, and are not intended to substitute for informed professional medical, psychiatric, psychological, tax, legal, investment, accounting, or other professional advice. Google does not endorse, and expressly disclaims liability for any product, manufacturer, distributor, service or service provider mentioned or any opinion expressed in answers or comments. Please read carefully the Google Answers Terms of Service.

If you feel that you have found inappropriate content, please let us know by emailing us at answers-support@google.com with the question ID listed above. Thank you.
Search Google Answers for
Google Answers  


Google Home - Answers FAQ - Terms of Service - Privacy Policy