Here is my code and basically what I want to do is output it so that the output file is sorted by the reference number. The first case in this program takes the user info and outputs to a database file. The second case takes that database and outputs it to a report file. Now what I want to do is output the students by reference number. Lets say the user inputs one user's info with the reference number 111111, then 3 with 222222, then two more with 111111, then 4 more with 333333. How would I output it so that the first section of the page outputs the users info with 111111, then further down 222222, then further down 333333?
Code:
    ////////////////////
   //Daniel Pritchett//
  //   COP 1220     //
 //   11-2-02      //
////////////////////
/*
This program will first ask the user for the term, then it will present 3 choices
to pick from.  Either imput the information to a file, output the information
from the first file to a report, or quit.  This all is looped so that when the user is
finished with one choice, they will be able to re-chose again.
*/
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>

using namespace std;
int main ()
{

	string SSN, LastName, FirstName, semester ;
	int choice, students, ReferenceNum;
	int RefNum[3];
	
	RefNum[0] = 111111;
	RefNum[1] = 222222;
	RefNum[2] = 333333;

	ofstream outFile1;
	ofstream outFile2;
	ifstream inFile;
	if (!outFile2){
		outFile1.open("a:sdntnfo.dat", ios::out);}
	inFile.open("a:sdntnfo.dat", ios::in);
	outFile2.open("a:Record.txt", ios::out);

	cout << "Please enter the Class term";
	cin >> semester;
	//heading
	outFile2 << setw(6) << "Introduction to C"
			<< setw(5) <<"\nTerm:" << semester
			<< "\n\n\nSSN" << right << setw(20) << right << setw(20) << "Last"
			<< right << setw(20) << "First  " << right << setw(20) << "Reference Number\n";

	//loops so that the user can re-chose what operation they would like to do.
	do
	{
		cout << "\nWould you like to\n1: Enter Student information\n"
		<<"2: Read from file and create report"
		<< "\n3: Quit\n";
	cin >> choice;
	switch(choice)
	{
		//outputs the first file, student database
	case (1):
		cout << "\nHow many students are you entering?";
		cin >> students;
		while(students != 0)
		{

		cout << "\nEnter the student's nine digit ID number: ";
		cin >> SSN;
		outFile1 << SSN;
		cout << "\nEnter the student's Last then First name: ";
		cin >> LastName >> FirstName;
		outFile1 << " " << LastName << " " << FirstName;
		cout << "\nEnter the student's Reference number: "
			 <<"(note, only 111111, 222222, and 333333 are valid.\n)";
		cin >> ReferenceNum;

		//tests to see if number is correct
		while((ReferenceNum!=RefNum[0]) && (ReferenceNum!=RefNum[1]) && (ReferenceNum!=RefNum[2]))
		{
			cout << "\nYou have entered an invalid number, please enter a correct one: ";
			cin >> ReferenceNum;
		} 
		outFile1 << " " << ReferenceNum << endl;
		
		students--;
		}
		break;

		//generates reference number organized file
	case (2):
		
		while (!inFile.eof())
	{
	inFile >> SSN >> LastName >> FirstName >> ReferenceNum;
	outFile2 << right << SSN << right << setw(17) << LastName << right 
			<< setw(16) << FirstName << right << setw(20) << ReferenceNum;

	}
	outFile2.close();
    break;

	//quits
	case(3):
		exit(0);

	//default, exits switch and displays switch options 
	default:
		cout << "\nYou did not enter a valid choise, please enter correct choice!";
		break;
	}
	}
	while(choice != 3);

	outFile1.close();
	outFile2.close();
	inFile.close();

}
// in.seekg(0, ios::beg) OR  SeekToBegin() <----use to rewind to the beginning of the file.