Compare commits

..

No commits in common. "b3ddc907866ef463d6a6a9429d06d72b72f93145" and "5d13eb0e385900a7f82e803ce98f481af03c8179" have entirely different histories.

3 changed files with 61 additions and 97 deletions

View File

@ -1,5 +0,0 @@
{
"files.associations": {
"typeinfo": "c"
}
}

View File

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

View File

@ -1,10 +1,8 @@
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#define BUFFER_SIZE 128
#define MAX_NO_OF_UNITS 4
#define NAME_SIZE 20
const char *FILE_STUDENT_DATA_PATH = "./data/students.test.txt";
@ -38,8 +36,6 @@ typedef struct student_tag STUDENT;
void display_menu();
void print_welcome();
void print_student(STUDENT *student);
void release(STUDENT *data);
STUDENT *search_student_by_name_or_id(char search_key[NAME_SIZE]);
// core functions
void display_students();
@ -104,9 +100,13 @@ void print_welcome()
void display_students()
{
printf("\n");
read_file();
STUDENT *student = head;
STUDENT *student;
student = head;
if (student == NULL)
{
@ -114,15 +114,20 @@ void display_students()
return;
}
printf("\n================ Student Details ================\n");
print_student(student);
while (student->next != NULL)
{
printf("\n");
student = student->next;
print_student(student);
}
}
void print_student(STUDENT *student)
{
printf("\n================ Student Details ================\n");
while (student != NULL)
{
printf("\n");
printf("Student Name: %s\n", student->student_info.name);
printf("Student ID: %s\n", student->student_info.id);
printf("Course Name: %s\n", student->course_info.course_name);
@ -135,13 +140,6 @@ void print_student(STUDENT *student)
}
printf("]\n");
printf("Avg: %.2f\n", student->course_info.avg);
student = student->next;
}
// clean up the memory
// after output the data
// because we don;t need it anymore after output
release(student);
}
void display_menu()
@ -159,11 +157,11 @@ void add_student(char student_name[20], char student_id[10], char course_name[20
STUDENT *temp, *iterator;
temp = (struct student_tag *)malloc(sizeof(struct student_tag));
PERSON info;
memcpy(info.name, student_name, 20);
memcpy(info.id, student_id, 10);
strncpy(info.name, student_name, 20);
strncpy(info.id, student_id, 10);
COURSE course;
memcpy(course.course_name, course_name, 20);
strncpy(course.course_name, course_name, 20);
course.no_of_units = no_of_units;
// memcpy(course.marks, marks);
@ -217,36 +215,7 @@ int count()
void search_student()
{
char search_key[NAME_SIZE];
printf("Enter student name or id to search: ");
scanf("%s", &search_key);
STUDENT *found_student = search_student_by_name_or_id(search_key);
if (found_student == NULL)
{
printf("No student found!");
return;
}
print_student(found_student);
}
STUDENT *search_student_by_name_or_id(char search_key[NAME_SIZE])
{
STUDENT *temp = head;
while (temp != NULL)
{
if (strcmp(temp->student_info.name, search_key) == 0 || strcmp(temp->student_info.id, search_key) == 0)
{
printf("\nSearch found with key: %s\n", search_key);
return temp;
}
temp = temp->next;
}
return NULL;
printf("\nNot implement yet!");
}
void find_maximum()
@ -283,9 +252,9 @@ again:
printf("Enter no of units: ");
scanf("%d", &no_of_units);
if (no_of_units > MAX_NO_OF_UNITS && no_of_units <= 0)
if (no_of_units > MAX_NO_OF_UNITS)
{
printf("you cannot input the units bigger than %d or less than 0\n", MAX_NO_OF_UNITS);
printf("you cannot input the units bigger than %d\n", MAX_NO_OF_UNITS);
getchar();
goto again;
}
@ -325,10 +294,10 @@ again:
void read_file()
{
// release nodes
// we need to clean up the memory
if (head != NULL)
{
// 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)
{
@ -336,7 +305,6 @@ void read_file()
head = head->next;
free(temp);
}
}
FILE *file;
file = fopen(FILE_STUDENT_DATA_PATH, "r");
@ -408,23 +376,3 @@ void quite()
printf("\nGoodbye!");
exit(EXIT_SUCCESS);
}
void release(STUDENT *data)
{
if (data == NULL)
{
return;
}
// 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 (data != NULL)
{
temp = data;
data = data->next;
free(temp);
}
}