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.