Code:
*/
This program requires three command arguments: The text file name,
the number of entries to be scanned from the input file, and the input
file name. The program will scan the input file's entries into a
structured array and sort the arrays. It will also print the unsorted and
sorted arrays. Lasltly, it will allow the user to run queries for certain
entries using the SSN.
*****************************************************************************/
/* Preprocessing Directives */
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#define LEN 30
#define NUM 10
typedef struct
{
int month;
int day;
int year;
} BDATE;
typedef struct
{
char firstName[LEN];
char lastName[LEN] ;
int grade;
char SSN [10];
BDATE bDate;
} STUDENT;
void displayName ();
bool openFile (char *argv[], FILE* *pfpIn);
bool readFile (char *argv[], FILE* afpIn, STUDENT stud[]);
void displayFile (char *argv[], STUDENT stud[]);
void sortName (char *argv[], STUDENT stud[]);
void displaySortName (char *argv[], STUDENT stud[]);
void sortSSN ();
void displaySortSSN ();
void binSearch ();
// Function main calls other functions and returns control back to OS.
int main (int argc, char *argv[])
{
int quant = atoi (argv[1]);
STUDENT stud[NUM];
FILE* afpIn;
displayName ();
if (argc == 3 && quant > 1 && quant < 10)
{
printf("\nNumber of command arguments: %d", argc);
printf("\nNumber of strings to scan from file: %s", argv[1]);
printf("\nName of input file: %s", argv[2]);
if ( openFile (argv, &afpIn) && readFile(argv, afpIn, stud) )
{
displayFile(argv, stud);
sortName(argv, stud);
displaySortName(argv, stud);
}
}
else
("\nPlease try again later\n");
return 0;
}
// Function displayName displays the Programmer's name.
void displayName()
{
printf("\nThomas Ciocco\n");
}
// Function openFile opens the input file
bool openFile (char *argv[], FILE* *pfpIn)
{
bool openFileSuccess = false;
if ((*pfpIn = fopen (argv[2], "r")) != NULL)
{
openFileSuccess = true;
printf ("\nFile open success\n\n");
}
else
printf("\nFile did not open successfully\n");
return openFileSuccess;
}
// Function readFile scans the input file data into a structured array
bool readFile (char *argv[], FILE* afpIn, STUDENT stud[])
{
bool readFileSuccess = true;
int counter;
int quant = atoi (argv[1]);
char* tempMonth[quant][LEN];
char* tempDay[quant][LEN];
char* tempYear[quant][LEN];
for (counter = 0; counter < quant ; counter++)
{
fscanf(afpIn, "%s %s %d %s %s %s %s",
stud[counter].firstName, stud[counter].lastName,
&stud[counter].grade, stud[counter].SSN,
tempMonth[counter], tempDay[counter], tempYear[counter]);
}
// Converts file month strings to ints and fills bDate.month
for (counter = 0; counter < quant; counter++)
{
if(!strcmp(tempMonth[counter],"January"))
{
stud[counter].bDate.month = 1;
}
if(!strcmp(tempMonth[counter],"February"))
{
stud[counter].bDate.month = 2;
}
if(!strcmp(tempMonth[counter],"March"))
{
stud[counter].bDate.month = 3;
}
if(!strcmp(tempMonth[counter],"April"))
{
stud[counter].bDate.month = 4;
}
if(!strcmp(tempMonth[counter],"May"))
{
stud[counter].bDate.month = 5;
}
if(!strcmp(tempMonth[counter],"June"))
{
stud[counter].bDate.month = 6;
}
if(!strcmp(tempMonth[counter],"July"))
{
stud[counter].bDate.month = 7;
}
if(!strcmp(tempMonth[counter],"August"))
{
stud[counter].bDate.month = 8;
}
if(!strcmp(tempMonth[counter],"September"))
{
stud[counter].bDate.month = 9;
}
if(!strcmp(tempMonth[counter],"October"))
{
stud[counter].bDate.month = 10;
}
if(!strcmp(tempMonth[counter],"November"))
{
stud[counter].bDate.month = 11;
}
if(!strcmp(tempMonth[counter],"December"))
{
stud[counter].bDate.month = 12;
}
}
// Converts string days and months to ints and fills bDate.day and year
for (counter = 0; counter < quant; counter++)
{
stud[counter].bDate.day = atoi(tempDay[counter]);
stud[counter].bDate.year = atoi(tempYear[counter]);
}
return readFileSuccess;
}
// Function displayFile prints the file data
void displayFile (char *argv[], STUDENT stud[])
{
int counter;
int quant;
quant = atoi (argv[1]);
printf(" Name");
printf(" Level");
printf(" SSN");
printf(" BirthDate\n");
printf(" ----");
printf(" -----");
printf(" ---");
printf(" ---------\n");
for (counter = 0; counter < quant; counter++)
{
printf("%10s %10s %7d %15s %5d/%d/%d \n",
stud[counter].firstName, stud[counter].lastName,
stud[counter].grade, stud[counter].SSN,
stud[counter].bDate.month, stud[counter].bDate.day,
stud[counter].bDate.year);
}
}
// Function sortName sorts the array by Name data
void sortName (char *argv[], STUDENT stud[])
{
int quant = atoi (argv[1]);
int last;
int current;
int walk;
int smallest;
int tempData;
STUDENT temp[quant];
}
// Function displaySortName prints the array sorted by name
void displaySortName(char *argv[], STUDENT stud[])
{
int counter;
int quant;
int last;
STUDENT temp;
STUDENT* pCurrent;
STUDENT* pWalker;
STUDENT* pSmallest;
quant = atoi (argv[1]);
last = quant + 1;
for (counter= 0; counter < last; counter++)
{
;
}
}
// Function sortSSN sorts the array by the SSN
void sortSSN ( )
{
}
// Function displaySortSSN prints the array sorted by SSN
void displaySortSSN ( )
{
}
// Function binSearch allows user to search database for entry via SSN
void binSearch ( )
{
}