Stoll, Set Theory and Logic (pg 165): Logic for P->Q and P<->Q Conditional P->Q: If P is True, then Q is also True.
Truth table
P Q P->Q
T T T
T F F
F T T
F F T

BiConditional P<->Q: If P is True, then Q is also True; If Q is True, 
then P is also True.
P Q P<->Q
T T T
T F F
F T F
F F T


The motivation for the truth-value assignments made for the
  con-ditional is the fact that, as intuitively understood, P->Q is
  true if Q is deducible from P in some sort of way.
So, if P is true and Q is false, we want P->Q to be false, which accounts for the second line of the table.

My understanding of this is as follows: We are asserting that 
IF P is TRUE then Q also is TRUE; therefore if Q happens to be False for a True P, then our assertion is FALSE. But remember here that we are giving/inserting real values to P and Q and then determining/evaluating the validity of P->Q (our assertion).

Next, suppose that Q is true. Then, independently of P and its truth
  value, it is plausible to assert that P->Q is true. This reasoning sug-
  gests the assignments made in the first and third lines of the table. 

Wo! How?? What reasoning!!! He hasn't reasoned anything! The weasel! He just made a supposition and then a bloody assertion!

To justify the fourth line, consider the statement (P A Q) -> P. We expect
  this to be true regardless of the choice of P and Q. But, if P and Q are
  both false, then P A Q is false, and we are led to the conclusion that
  if both antecedent and consequent are false, a conditional is true.

What? He's saying: IF (P AND Q is TRUE) then P is also true. How the heck can that statement be independent of the values assigned to P and Q?? Still he says "We expect this to be true.." I don't expect it!! What's going on!!

I tried thinking of this another way:
P->Q implies: IF P is TRUE then Q also is TRUE
P<->Q implies: IF P is TRUE then Q also is TRUE; AND
               IF Q is TRUE then P also is TRUE  

Let's say we make an assertion P->Q = [IF P is TRUE then Q also is TRUE]
If we insert values:
 T T then our assertion P->Q is T
 T F then our assertion P->Q is False
 F T Not Applicable since we can't derive a Q value from a False P!
 F F Not Applicable since we can't derive a Q value from a False P!

For the Biconditional (making our assertion in both directions)
T T T
T F F
F T F
F F Not Applicable since we can't determine if both values are False

Why is Stoll right?????
 A: You would agree, surely, from your experience with arithmetic that the following is true?

If $x=1$, then $x+1 = 2$

But wait, you don't actually know that $x=1$. Maybe $x$ is 2, or seventeen!
The way I like to justify the truth table is by looking at how we can use truth values to make inferences. Here are some exercises to try given Stoll's values for the truth table, and again for any other definition you choose.

1. Suppose you know that $A \to B$ is true.


*

*Can $A$ be false?

*Can $B$ be false?


If your answer to both of these questions is "no", then what you have in mind is "A and B", not "if A then B".
2. Suppose you know that $A \to B$ is true. Suppose you also know that $B$ is true. Can $A$ be false?
If your answer to this question is "no", then you have the conditional backwards: you have in mind "if B then A", or equivalently "A if B".
3. Suppose you know that $A \to B$ is true. Suppose you also know that $A$ is true. Can $B$ be false?

The answers "yes and yes, yes, no" collectively determine that the truth table must be of the form Stoll describes.
A: As a comment ( don't have enough points yet), maybe this would help:
http://en.wikipedia.org/wiki/Material_conditional
A: A common assumption goes that we can determine the truth value of a compound statement from atomic components.  In other words, if we input truth values for its components, then we will get a truth value for the compound statement.  For example, if we have some binary connective X and we input truth values for "p" and "q" in (pXq), we will get some truth value for (pXq).  Additionally, the other common assumption goes that we have a constant, fixed truth set for both atomic statements and compound statements.  Since we assume that we only have two truth values, this means all compound statements will take on some truth value in {true, false}.  Without these assumptions, you end up studying something different than what Stoll is talking about.
Now, given the above assumptions what are "<->" and "->".  Well, if "(p<->q)" holds true, then "p" and "q" have the same truth value, and if "p" and "q" have the same truth value, then (p<->q) holds true.  Consequently, if p holds true, and so does q, then (p<->q) holds true.  If p is false, and q is true, then (p<->q) is false.  If p is true, and q is false, then (p<->q) is false.  If p is false, and q is false, then (p<->q) is true.  Thus, what Stoll has <-> makes sense.
Now, you've agreed that if p is true, and q is true, then (p->q) is true.  Also, you've agreed that if p is true, and q is false, then (p->q) is false.  Consequently, we have four possibilities for ->.
1:
 A  f  t
 f  f  f
 t  f  t

2:
 B  f  t
 f  f  t
 t  f  t

3:   
 C  f  t
 f  t  f
 t  f  t

4:   
 D  f  t
 f  t  t
 t  f  t

Now 3 is <->.  So, it can't be ->, since we already think these distinct.  1 is logical conjunction.  So, similarly we can reason that it can't be ->.  Could -> be 2?  Well, if it did work out that way, then (p->p) would NOT be a tautology.  So, if you want (p->p) as a tautology, then -> cannot be 2.  This leaves us with -> as 4 or operation D.
