Question: Please fix, this is incomplete: #include #include #include #define MAX _ LENGTH 1 0 typedef struct dataRecord { int courseID; char course [ MAX _

Please fix, this is incomplete:
#include
#include
#include
#define MAX_LENGTH 10
typedef struct dataRecord {
int courseID;
char course[MAX_LENGTH+1];
int numSeats;
int numRegistered;
} RECORD_TYPE;
int menu();
void loadDatabase(FILE * infile, RECORD_TYPE ** database, int *numRecords);
void processChoice(FILE * infile, FILE * outfile, int choice, RECORD_TYPE ** database, int numRecords);
void displayDatabase(RECORD_TYPE ** database, int numRecords);
void searchDatabase(RECORD_TYPE ** database, int numRecords);
void writeReport(FILE * outfile, RECORD_TYPE ** database, int numRecords);
int main(){
char * infilename = "registrar.txt";
char * outfilename = "report.txt";
FILE * infile;
FILE * outfile;
int numRecords;
RECORD_TYPE ** database;
infile = fopen(infilename,"r");
if (infile == NULL){
printf("Error: Unable to open input file.
");
return 1;
}
outfile = fopen(outfilename,"w");
if (outfile == NULL){
printf("Error: Unable to open output file.
");
fclose(infile);
return 1;
}
fscanf(infile,"%d", &numRecords);
database =(RECORD_TYPE **)malloc(numRecords * sizeof(RECORD_TYPE *));
loadDatabase(infile, database, &numRecords);
int choice;
do {
choice = menu();
processChoice(infile, outfile, choice, database, numRecords);
} while (choice !=4);
fclose(infile);
fclose(outfile);
free(database);
return 0;
}
void loadDatabase(FILE * infile, RECORD_TYPE ** database, int *numRecords){
int i, courseID, numSeats, numRegistered;
char course[MAX_LENGTH+1];
for (i =0; i <*numRecords; i++){
fscanf(infile,"%d%s%d%d", &courseID, course, &numSeats, &numRegistered);
database[i]=(RECORD_TYPE *)malloc(sizeof(RECORD_TYPE));
strcpy(database[i]->course, course);
database[i]->courseID = courseID;
database[i]->numSeats = numSeats;
database[i]->numRegistered = numRegistered;
}
}
int menu(){
int choice;
printf("
1) Display contents of database.
");
printf("2) Search the database.
");
printf("3) Write report.
");
printf("4) Quit.
");
printf("Enter your choice: ");
scanf("%d", &choice);
return choice;
}
void processChoice(FILE * infile, FILE * outfile, int choice, RECORD_TYPE ** database, int numRecords){
switch (choice){
case 1:
displayDatabase(database, numRecords);
break;
case 2:
searchDatabase(database, numRecords);
break;
case 3:
writeReport(outfile, database, numRecords);
break;
case 4:
printf("Bye!
");
break;
default:
printf("Error: Invalid choice.
");
}
}
void displayDatabase(RECORD_TYPE ** database, int numRecords){
int i;
printf("
COURSE ID COURSE NUM SEATS NUM REGISTERED
");
for (i =0; i < numRecords; i++){
printf("%10d %-8s %10d %14d
", database[i]->courseID, database[i]->course, database[i]->numSeats, database[i]->numRegistered);
}
}
void searchDatabase(RECORD_TYPE ** database, int numRecords){
char course[MAX_LENGTH+1];
int i;
printf("Enter course name: ");
scanf("%s", course);
for (i =0; i < numRecords; i++){
if (strcmp(database[i]->course, course)==0){
printf("
COURSE ID COURSE NUM SEATS NUM REGISTERED
");
printf("%10d %-8s %10d %14d
", database[i]->courseID, database[i]->course, database[i]->numSeats, database[i]->numRegistered);
break;
}
}
if (i == numRecords){
printf("Error: Course not found.
");
}
}
void writeReport(FILE * outfile, RECORD_TYPE ** database, int numRecords){
int i;
fprintf(outfile,"
COURSE ID COURSE NUM SEATS NUM REGISTERED
");
for (i =0; i < numRecords; i++){
fprintf(outfile,"%10d %-8

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Programming Questions!