Compare commits
4 Commits
aabb594c70
...
5d13eb0e38
Author | SHA1 | Date | |
---|---|---|---|
5d13eb0e38 | |||
ff0e21d42b | |||
909f55f621 | |||
632b863ff9 |
181
work1/single.c
181
work1/single.c
@ -32,6 +32,11 @@ typedef struct person_tag PERSON;
|
|||||||
typedef struct course_tag COURSE;
|
typedef struct course_tag COURSE;
|
||||||
typedef struct student_tag STUDENT;
|
typedef struct student_tag STUDENT;
|
||||||
|
|
||||||
|
// util functions
|
||||||
|
void display_menu();
|
||||||
|
void print_welcome();
|
||||||
|
void print_student(STUDENT *student);
|
||||||
|
|
||||||
// core functions
|
// core functions
|
||||||
void display_students();
|
void display_students();
|
||||||
void search_student();
|
void search_student();
|
||||||
@ -45,11 +50,6 @@ void quite();
|
|||||||
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]);
|
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
|
|
||||||
void display_menu();
|
|
||||||
void read_student_to_data();
|
|
||||||
void print_welcome();
|
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
// variable use for menu selected
|
// variable use for menu selected
|
||||||
@ -57,6 +57,9 @@ int main(void)
|
|||||||
|
|
||||||
print_welcome();
|
print_welcome();
|
||||||
|
|
||||||
|
// init the read data from the file
|
||||||
|
read_file();
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
display_menu();
|
display_menu();
|
||||||
@ -99,7 +102,7 @@ void display_students()
|
|||||||
{
|
{
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
read_student_to_data();
|
read_file();
|
||||||
|
|
||||||
STUDENT *student;
|
STUDENT *student;
|
||||||
|
|
||||||
@ -191,88 +194,6 @@ void add_student(char student_name[20], char student_id[10], char course_name[20
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void read_student_to_data()
|
|
||||||
{
|
|
||||||
// init head to null
|
|
||||||
head = NULL;
|
|
||||||
|
|
||||||
FILE *file;
|
|
||||||
file = fopen(FILE_STUDENT_DATA_PATH, "r");
|
|
||||||
|
|
||||||
if (file == NULL)
|
|
||||||
{
|
|
||||||
printf("cannot read file: %s", FILE_STUDENT_DATA_PATH);
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
char student_name[20];
|
|
||||||
char student_id[10];
|
|
||||||
char course_name[20];
|
|
||||||
int no_of_units;
|
|
||||||
int marks[4];
|
|
||||||
|
|
||||||
int i;
|
|
||||||
while (!feof(file))
|
|
||||||
{
|
|
||||||
char no[BUFFER_SIZE];
|
|
||||||
|
|
||||||
fgets(student_name, sizeof student_name, file);
|
|
||||||
fgets(student_id, sizeof student_id, file);
|
|
||||||
fgets(course_name, sizeof course_name, file);
|
|
||||||
fgets(no, sizeof no, file);
|
|
||||||
|
|
||||||
i = 0;
|
|
||||||
while (student_name[i] != '\n')
|
|
||||||
{
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
|
|
||||||
student_name[i] = '\0';
|
|
||||||
|
|
||||||
i = 0;
|
|
||||||
while (student_id[i] != '\n')
|
|
||||||
{
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
|
|
||||||
student_id[i] = '\0';
|
|
||||||
|
|
||||||
i = 0;
|
|
||||||
while (course_name[i] != '\n')
|
|
||||||
{
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
|
|
||||||
course_name[i] = '\0';
|
|
||||||
|
|
||||||
// printf("Student Name: %s\n", student_name);
|
|
||||||
// printf("Student ID: %s\n", student_id);
|
|
||||||
// printf("Course Name: %s\n", course_name);
|
|
||||||
// printf("No of units: %s", no);
|
|
||||||
|
|
||||||
no_of_units = atoi(no);
|
|
||||||
for (int j = 0; j < no_of_units; j++)
|
|
||||||
{
|
|
||||||
char mark[BUFFER_SIZE];
|
|
||||||
|
|
||||||
fgets(mark, sizeof mark, file);
|
|
||||||
sscanf(mark, "%d", &marks[j]);
|
|
||||||
}
|
|
||||||
|
|
||||||
// printf("Marks: [ ");
|
|
||||||
// for (int x = 0; x < no_of_units; x++)
|
|
||||||
// {
|
|
||||||
// printf("%d ", marks[x]);
|
|
||||||
// }
|
|
||||||
// printf("]\n\n");
|
|
||||||
|
|
||||||
// add into linked list
|
|
||||||
add_student(student_name, student_id, course_name, no_of_units, marks);
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose(file);
|
|
||||||
}
|
|
||||||
|
|
||||||
int count()
|
int count()
|
||||||
{
|
{
|
||||||
int n = 1;
|
int n = 1;
|
||||||
@ -327,11 +248,12 @@ void update_file()
|
|||||||
printf("Enter course name: ");
|
printf("Enter course name: ");
|
||||||
scanf("%s", &course_name);
|
scanf("%s", &course_name);
|
||||||
|
|
||||||
again:
|
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) {
|
if (no_of_units > MAX_NO_OF_UNITS)
|
||||||
|
{
|
||||||
printf("you cannot input the units bigger than %d\n", MAX_NO_OF_UNITS);
|
printf("you cannot input the units bigger than %d\n", MAX_NO_OF_UNITS);
|
||||||
getchar();
|
getchar();
|
||||||
goto again;
|
goto again;
|
||||||
@ -365,11 +287,88 @@ void update_file()
|
|||||||
fclose(file);
|
fclose(file);
|
||||||
|
|
||||||
printf("\nSaved");
|
printf("\nSaved");
|
||||||
|
|
||||||
|
// reload data into linked list again
|
||||||
|
read_file();
|
||||||
}
|
}
|
||||||
|
|
||||||
void read_file()
|
void read_file()
|
||||||
{
|
{
|
||||||
printf("\nNot implement yet!");
|
// free the nodes
|
||||||
|
// because it can be use in memory
|
||||||
|
// we need to clear it first
|
||||||
|
// before we re-initailize the new data
|
||||||
|
STUDENT *temp;
|
||||||
|
while (head != NULL)
|
||||||
|
{
|
||||||
|
temp = head;
|
||||||
|
head = head->next;
|
||||||
|
free(temp);
|
||||||
|
}
|
||||||
|
|
||||||
|
FILE *file;
|
||||||
|
file = fopen(FILE_STUDENT_DATA_PATH, "r");
|
||||||
|
|
||||||
|
if (file == NULL)
|
||||||
|
{
|
||||||
|
printf("cannot read file: %s", FILE_STUDENT_DATA_PATH);
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
char student_name[20];
|
||||||
|
char student_id[10];
|
||||||
|
char course_name[20];
|
||||||
|
int no_of_units;
|
||||||
|
int marks[4];
|
||||||
|
|
||||||
|
int i;
|
||||||
|
while (!feof(file))
|
||||||
|
{
|
||||||
|
char no[BUFFER_SIZE];
|
||||||
|
|
||||||
|
fgets(student_name, sizeof student_name, file);
|
||||||
|
fgets(student_id, sizeof student_id, file);
|
||||||
|
fgets(course_name, sizeof course_name, file);
|
||||||
|
fgets(no, sizeof no, file);
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
while (student_name[i] != '\n')
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
student_name[i] = '\0';
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
while (student_id[i] != '\n')
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
student_id[i] = '\0';
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
while (course_name[i] != '\n')
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
course_name[i] = '\0';
|
||||||
|
|
||||||
|
no_of_units = atoi(no);
|
||||||
|
for (int j = 0; j < no_of_units; j++)
|
||||||
|
{
|
||||||
|
char mark[BUFFER_SIZE];
|
||||||
|
|
||||||
|
fgets(mark, sizeof mark, file);
|
||||||
|
sscanf(mark, "%d", &marks[j]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// add into linked list
|
||||||
|
add_student(student_name, student_id, course_name, no_of_units, marks);
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
void quite()
|
void quite()
|
||||||
|
Loading…
Reference in New Issue
Block a user