Your ignore statments are causing the problems
The reason you are having skipping problems and also needing to hit enter twice is that your ignore statments are incorrect. when you have an ignore and nothing is in the buffer it waits until you hit enter. you should only need ignore statments on the long and int values which are the zip code and the id the rest are all chars so you shouldn't need an ignore for those.
Also for the Id and zip code you need to validate the input. if you enter a letter instead of a number it will crash because cin will be in a fail state. Search the boards and check the faqs and tutorials for input with cin.
[edit]
Just an added tidbit. Since this is a student ID it would be better to keep the number as a char since you would need to preserve the leading 0's. otherwise you can use
What this does is set the base value to decimal. If you want to set it back to oct or hex just repeat the above statment and replace with whichever base you need. It will still strip the leading 0 from the number if you want to padd the value to left or right justify then you can use
Code:
cout.width(x);
cout.fill('0');
cout<<dec;
cout<<number;
but only if you know the number has a fixed width.
[/edit]