Assignment 4: Encryption

There is a small mistake in the 'CaesarCyphter' function
discussed in class - please try to find it, I will post a correction
on the weekend.

We have discussed in class two data encyption mechanisms, Caesar's Cypher and Substitution Encryption/Decryption. For this assignment, I want you to write one or more programs to do the following:

encode and decode a text file according to Caesar's Cypher
encode and decode a text file according to the Substitution method

Your program(s) should take an input text file, either encode or decode it, and write the output to another text file. The program should prompt you for the input and output file names. The "Shift" for Caesar's Cypher and the "KeyTable" for the Substitution coding should be part of your program, and do not have to entered by the user.

You could choose either one of the following approaches:

one program with a menu to handle the four choices encoding (Caesar), decoding (Caesar), encoding (Substitution), and decoding (Substitution)
two programs, one to handle encoding and decoding using Caesar's cypher, the other one to handle encoding and decoding using the substitution table
four programs, one each for encoding (Caesar), decoding (Caesar), encoding (Substitution), and decoding (Substitution)

To make matters somewhat more interesting, I have encoded a few files that you can look at here:

This is part of a well-known English text. It was encoded using Caesar's shift. Click here to see the encoded version. If you can decode it and tell me what the original text is, you will receive 10 extra points. Note that you actually have written a program before that can act as a code breaker to Caesar's shift encoding.
This is part of my program to do the encryption. Again, I have used Caesar's shift, with the same number as shift as in the previous text. Click here to see the encoded version. Note that if you have solved the previous problem, you should know the shift number, and therefore it should be easy to decode this file. Do it and you have part of your assignment right here.
This is my entire program. It uses a menu and handles both methods for encoding and decoding. Click here to see the encoded version. If you can decode it, you can use it for your assignment and turn it in as it is (in decoded form, of course). I have first used a Caesar's shift, then the substitution method to encode this file.