create basic students to json file function & clean course_selection_data.csv

This commit is contained in:
SowinskiBraeden committed 2024-10-01 21:37:24 -07:00
1 parent ee903dc698
commit 80e980358f
2 files changed
+49 -7

No files matched your search

+45 -3
View File
@@ -38,7 +38,7 @@ typedef struct {
int count_lines(char data_dir[]) {
FILE *stream = fopen(data_dir, "r");
if (!stream) {
fputs("Failed to open CSV file", stderr);
fputs("Failed to open CSV file\n", stderr);
return -1;
}
char buff[MAX_CHAR];
@@ -54,7 +54,7 @@ CSV_LINE *csvReader(char data_dir[], size_t size) {
FILE *stream = fopen(data_dir, "r");
if (!stream) {
fputs("Failed to open CSV file", stderr);
fputs("Failed to open CSV file\n", stderr);
return NULL;
}
@@ -250,6 +250,48 @@ COURSE *getCourses(CSV_LINE *lines, size_t lines_len, UNIQUE_COURSES unique_cour
return courses;
}
/*** DEFINE JSON FUNCTION HANDLERS ***/
int writeStudentsToJson(STUDENT *students, size_t numberOfStudents, char output_dir[]) {
FILE *stream = fopen(output_dir, "w");
if (!stream) {
fputs("Failed to open students output file", stderr);
return -1;
}
/*
TODO: expand this function to handle schedule and remainingAlts when data is provided
*/
fprintf(stream, "[\n");
for (size_t i = 0; i < numberOfStudents; i++) {
fprintf(stream, " {\n");
fprintf(stream, " \"pupilNum\": %d,\n", students[i].pupilNum);
fprintf(stream, " \"requests\": [\n");
for (size_t j = 0; j < students[i].requestsLen; j++) {
fprintf(stream, " {\n");
fprintf(stream, " \"crsNo\": \"%s\",\n", students[i].requests[j].crsNo);
fprintf(stream, " \"description\": \"%s\",\n", students[i].requests[j].description);
fprintf(stream, " \"alternate\": %s\n", students[i].requests[j].alternate ? "true" : "false");
fprintf(stream, " }%s\n", j == students[i].requestsLen - 1 ? "" : ",");
}
fprintf(stream, " ],\n");
fprintf(stream, " \"schedule\": [],\n");
fprintf(stream, " \"expectedClasses\": %d,\n", students[i].expectedClasses);
fprintf(stream, " \"classes\": %d,\n", students[i].classes);
fprintf(stream, " \"remainingAlts\": [],\n");
fprintf(stream, " \"grade\": %d\n", students[i].grade);
fprintf(stream, " }%s\n", i == numberOfStudents - 1 ? "" : ",");
}
fprintf(stream, "]");
fclose(stream);
return 0;
}
int main(int argc, char **argv) {
/*
@@ -287,7 +329,7 @@ int main(int argc, char **argv) {
- start algorithm
*/
// if (writeStudentsToJson(students, students_info.numberOfStudents, "output/students.json") == -1) return -1;
if (writeStudentsToJson(students, students_info.numberOfStudents, "output/students.json") == -1) return -1;
// if (writeCoursesToJson(courses, courses_info.numberOfCourses) == -1) return -1;
// Algorithm here