Updated for student details and add goto label for enter course units again

This commit is contained in:
Sambo Chea 2020-08-02 19:29:14 +07:00
parent 9aa3dc2919
commit aabb594c70
2 changed files with 37 additions and 5 deletions

View File

@ -5,4 +5,25 @@ Computer
88 88
98 98
52 52
95 95
SS
323
SC
3
2
4
2
Sambo2
73823
MSK2
3
3
54
2
SS
SS3
212
3
5
3
2

View File

@ -2,6 +2,7 @@
#include "stdlib.h" #include "stdlib.h"
#define BUFFER_SIZE 128 #define BUFFER_SIZE 128
#define MAX_NO_OF_UNITS 4
const char *FILE_STUDENT_DATA_PATH = "./data/students.test.txt"; const char *FILE_STUDENT_DATA_PATH = "./data/students.test.txt";
@ -15,7 +16,7 @@ struct course_tag
{ {
char course_name[20]; char course_name[20];
int no_of_units; int no_of_units;
int marks[4]; int marks[MAX_NO_OF_UNITS];
float avg; float avg;
}; };
@ -41,7 +42,7 @@ void read_file();
void quite(); void quite();
// Linked list functions // Linked list functions
void add_student(char student_name[20], char student_id[10], char course_name[20], int no_of_units, int marks[4]); void add_student(char student_name[20], char student_id[10], char course_name[20], int no_of_units, int marks[MAX_NO_OF_UNITS]);
int count(); int count();
// util functions // util functions
@ -110,10 +111,13 @@ void display_students()
return; return;
} }
printf("\n================ Student Details ================\n");
print_student(student); print_student(student);
while (student->next != NULL) while (student->next != NULL)
{ {
printf("\n");
student = student->next; student = student->next;
print_student(student); print_student(student);
} }
@ -145,7 +149,7 @@ void display_menu()
printf("(6) Quit program\n\n"); printf("(6) Quit program\n\n");
} }
void add_student(char student_name[20], char student_id[10], char course_name[20], int no_of_units, int marks[4]) void add_student(char student_name[20], char student_id[10], char course_name[20], int no_of_units, int marks[MAX_NO_OF_UNITS])
{ {
STUDENT *temp, *iterator; STUDENT *temp, *iterator;
temp = (struct student_tag *)malloc(sizeof(struct student_tag)); temp = (struct student_tag *)malloc(sizeof(struct student_tag));
@ -312,7 +316,7 @@ void update_file()
char id[10]; char id[10];
char course_name[20]; char course_name[20];
int no_of_units; int no_of_units;
int marks[4]; int marks[MAX_NO_OF_UNITS];
printf("Enter student name: "); printf("Enter student name: ");
scanf("%s", &name); scanf("%s", &name);
@ -323,9 +327,16 @@ void update_file()
printf("Enter course name: "); printf("Enter course name: ");
scanf("%s", &course_name); scanf("%s", &course_name);
again:
printf("Enter no of units: "); printf("Enter no of units: ");
scanf("%d", &no_of_units); scanf("%d", &no_of_units);
if (no_of_units > MAX_NO_OF_UNITS) {
printf("you cannot input the units bigger than %d\n", MAX_NO_OF_UNITS);
getchar();
goto again;
}
for (int i = 0; i < no_of_units; i++) for (int i = 0; i < no_of_units; i++)
{ {
printf("Enter mark[%d]: ", i + 1); printf("Enter mark[%d]: ", i + 1);