For this project we are shifting our attention to pointers, structs and arrays of structs. The main focus of this project is to react to the storage demands of our program and "grow" our arrays when they are full.
Sit down and let me tell you a story; a story about a bank with terrible security. Every night Bank XYZ gets hacked. Every night an unknown attacker gains access to the main account file on the bank's computer. The attacker has the ability to modify the record in any way they wish. Luckily for us, this attacker attended a school other than VT and they are not aware of the signed hash code at the end of the record and they make no effort to hide their tracks. Mainly they are after the vast store of gold in each of the account holder's accounts.
So your job as the bank's main super hero, also known as the system admin, is to check each day for hacked records. When this occurs you then generate a report of which accounts were hacked, update their password, thus saving the account holders, and the bank, many thousands of lost pounds of gold. You also have the ability to add new accounts, remove old accounts, and of course save an updated account file.
The program you run each day responds to a series of commands. The commands may have options you can specify. The options depend on the command. The commands will be listed below. Each command has output. Some of the commands many not be successful and there are messages that correspond to those as well.