Computer Science 2574
Intro to Data Structures & Soft Eng

CourseKeys.cpp

#include "CourseKeys.h"

//***********************************************************************************
// Function:	  CopyCrseInfo
// Parameters:	  NumStudents	-	integer value, number of students for test
//				  inFile		-	infile from which information is read and stored from
//
// Purpose:		  to read in course info
// Called By:	  EditMenu, BuildODB
// Calls:		  NONE
// Return Value:  void
// Authors:		  John W. Boyd III & Cullen J. Morris
// Version:		  1.1     
//***********************************************************************************

void CopyCrseInfo(int& NumStudents, ifstream &inFile,
						ofstream &outFile)
{

	char buffer[10],
		line[100];

	inFile.getline(line, 150);
	outFile << line << endl;

	inFile.getline(line, 150);
	outFile << line << endl;
	
	for(int i = 29; i < 40; i++)
	//get num students
	{
		if(isdigit(line[i]))
			break;
	}

	buffer[0] = line[i];

	int j = 0;
	for(i = i ; i < 40; i++)
	{
		if(!(isdigit(line[i])))
			break;
		buffer[j] = line[i];
		j++;
	}

	inFile.ignore(200, '\n');
	inFile.ignore(200, '\n');

	NumStudents = atoi(buffer);

} //end of CopyCrseInfo


//*******************************************************************************
// Function:	 getNumKeys
// Purpose:		 To count the number of keys
// Called By:	 BuildODB
// Calls:		 ResetMarker
// Parameters:	 NumKeys - integer value of Number of Keys, passes out so other 
//				    functions know how many keys
//				 inFileDecode - input file, Decodefile(raw)
// Return Value: int zero
// Authors:		 John W. Boyd III & Cullen J. Morris
// Version:		 1.1     			
//*******************************************************************************

int getNumKeys(int &NumKeys,ifstream &inFileDecode)
{
	char SocSecNum[SSLength];

	inFileDecode.get(SocSecNum, 10);

	while (strcmp(SocSecNum,"999999999") == 0)
	// makes sure it is a answer key
	{
		NumKeys++;
		inFileDecode.ignore(350,'\n');
		inFileDecode.get(SocSecNum, 10);
	}

	ResetMarker(inFileDecode);
	inFileDecode.ignore(350,'\n');
	inFileDecode.ignore(350,'\n');
	return 0;
}



//*******************************************************************************
// Function:	 getKeys
// Purpose:		 To read in the keys from the decode file.
// Called By:	 BuildODB
// Calls:		 NONE
// Parameters:	 outFile - output file, ODB file we create
//				 inFileDecode - input file to read in from the RAW decode file
//				 NumQuestions - Number of quetions on test
//
// Return Value: void
// Authors:		 John W. Boyd III & Cullen J. Morris
// Version:		 1.1     
//*******************************************************************************
#include "constants.h"

void getKeys(ofstream &outFile, ifstream &inFileDecode, int NumQuestions)
{

	char SocSecNum[SSLength],
		  FormCh,
		  GroupCh,
		  AnswerCh;

	while(inFileDecode) // until EOF
	{
		inFileDecode.get(SocSecNum, 10);

		if( strcmp(SocSecNum,"999999999") != 0)
		// makes sure it is an answer key
		{
			for(int i=8;i>=0;i--)
			// puts ssn back in infile
			{
				inFileDecode.putback(SocSecNum[i]);
			}
			break;
		}

		outFile << setw(9) << SocSecNum;

		inFileDecode.get(FormCh);
		switch (FormCh)
		// changes form ch from num. to letters
		{
			case ' ': FormCh = '9';
					 break;
			case '0': FormCh = 'A';
					 break;
			case '1': FormCh = 'B';
					 break;
			case '2': FormCh = 'C';
		}
		outFile << "  " << FormCh;

		inFileDecode.get(GroupCh);
		switch (GroupCh)
		// puts offset on groupch
		{
			case ' ': GroupCh = '-';
					 break;
			case '0': GroupCh = '1';
					 break;
			case '1': GroupCh = '2';
					 break;
			case '2': GroupCh = '3';
		}
		outFile << "  " << GroupCh << "  ";

		for (int i =0; i < NumQuestions; i++)
		// goes thru every answer
		{
		inFileDecode.get(AnswerCh);
			switch (AnswerCh)
			// takes care of omitted and double answered questions
			{
				case ' ': AnswerCh = '?';
						 break;
				case '*': AnswerCh = '*';
						 break;
			}

			outFile << AnswerCh;

		} //ends for loop

		inFileDecode.ignore(350,'\n');
		outFile << endl;
	
	} // ends while loop 

} //end of getKeys