Proofs of the structure theorem for finitely generated modules over a PID I'm looking for different proofs (references or sketch of main ideas) of the structure theorem for finitely generated modules over a PID. 
If possible, a comparison in terms of clarity, elegance or usefulness would be appreciated.
 A: Fred Goodman has a freely downloadable algebra text that contains this result in section 8.5.  Unfortunately, I am not knowledgeable enough to offer a useful comparison to other references.  But hey, it's free!
(I studied draft versions of this material as it was being written.  I was taking a class from the author, and I found it useful.  It became "Edition 2.5" with substantial additions because the 2nd Edition didn't have enough to cover the full first-year graduate level algebra sequence at Iowa.)
A: I started from Goodman (2.6/e), then Jacobson, then Weintraub.
I completely agree rschwieb's opinion.


*

*These three books not only proof the structure theorem, 
but also apply the structure theorem on F[x]-module and get the Rational Canonical Form and Jordan canonical form and give some computational examples.
Most books just only give you the abstract proof, 
you still don't know how to compute the rational form and Jordan form after you read the proof.
That's why I choose these books.

*If you don't understand the proof of a theorem in Jacobson, 
you can refer Goodman's proof. 
For example, the proof of the existence of the smith normal form (Jacobson's Theorem 3.8 or Goodman's Corollary 8.4.6).

*The proof of Goodman is more readable than Jacobson's. 
Because Goodman uses a homomorphism $f$ from a free module of rank $n$ to the module (over a PID) which generated by $n$ elements (Section 8.5). Then we can use the theorem about the submodule $\ker{f}$ of a free module (Goodman's Theorem 8.4.12 or Jacobson's Theorem 3.7). But this approach cause confusion when I compute the Rational Canonical Form (Exercise 8.6.3). 

*Jacobson's proof is a little hard to read (for me).
But it will clear when you read it second time. 
A disadvantage of Jacobson is that he doesn't specify the index of the summation in the proof of the structure theorem.

*In my experience, 
you can skip the proof of the uniqueness of the structure theorem when you learn the theorem first time.
Because I always don't know where am I after I proved the uniqueness.
If you want to know that which lemma is necessarily for proving the existence, 
this chart maybe helpful. (Goodman's proof.)

A: Warm up
Basically, this theorem says that such modules break down into a direct sum of cyclic (sub)modules and (possibly) a free module.
$$\text{R-module} \cong C_1 \oplus \cdots \oplus C_k \oplus L  $$
Each $C_i$ is a cyclic R-module. A cyclic module means that only one element is needed to generate it. We pick one element $v$ of a module. Then take all elements of ring R, multiply them by this element $v$, and get the whole of submodule $C_i$.
Cyclic modules are so called because similar to cyclic groups, only one element is needed to generate it by composing with elements of the ring it is based on. Unlike cyclic groups, a cyclic R-module has two operations. One is multiplication by elements of ring R, the other is addition of elements. 
The task of the proof is to show that the representation as a direct sum becomes possible for two reasons. One is the structure of the module, ie it is finitely generated. The other is the properties of the ring R it is based on. 
I will use Artin's Algebra as a reference. 
Idea of the theorem
As for the properties of the module, we need a finite set of generators. This means this module has a basis. 
In vector spaces, we may multiply basis elements by scalars and span the whole space. Basis elements are independent, this is sufficient to break down a vector space into direct sum of subspaces, each spanned by a basis vector.
In a finitely generated module, we may attempt to do the same. But we need to make sure the ring R is well behaved. That is, we need to put additional structure on ring R to make sure the spans of basis elements are "separate". 
For example, we need to make sure that if we pick some module element $c_1 \in C_1$ above, multiply it by some ring element $r \in R$, we do not get an element of a different submodule $C_k$.
$$r c_1 = c_k \in C_k$$
The structure on ring R might be the Division algorithm, or P.I.D. (principal ideal domain). Both mean that ring R is noetherian, and our module based on such a ring has a finite set of relations. This in turn allows us to arrange relations in a relations matrix, and then rearrange this matrix into a diagonal form using the Division algorithm, see 14.4.6 page 419 in Artin. 
It is exactly this property, the diagonal form of the relations matrix together with a finite basis for our module V, allows for a direct sum decomposition.
The relations matrix looks like this
$$\begin{pmatrix}
g_1 & &\\
&\ddots & \\
& &g_k
\end{pmatrix}$$
In this matrix each $g_i \in R$, is a ring element. Its diagonal form tells us that the basis elements, generators of our module are independent in a sense that only the zero ring element or a multiple of $g_i$ composed with a basis element of $C_i$ equals zero, the spans of basis elements of R-module intersect only in the zero element of the module. 
Direct sum decomposition allows for a free submodule L. It is in the first expression above. It means it is not part of any relations, that is only the composition of the zero ring element and any of its elements result in zero, i.e. $0_r$, $a \in L$ and $0_V \in V$
$$0_r \times a = 0_V$$
Conclusion
Any finitely generated module based on some ring R has a basis, but this property is not enough for a direct sum decomposition. We need specific properties of ring R. This is the main idea of this theorem.
