Compare commits
No commits in common. "227c5e896d4a4ce42144da83ef32931307ef4f9c" and "ba3a1df3a447c5696c73bf59eb0c363f7be95764" have entirely different histories.
227c5e896d
...
ba3a1df3a4
@ -0,0 +1,25 @@
|
|||||||
|
My Third Book
|
||||||
|
Zero 1
|
||||||
|
000-000-111
|
||||||
|
My Fouth Book
|
||||||
|
1 Zero
|
||||||
|
111-000-000
|
||||||
|
My Fifth Book
|
||||||
|
2 Zero
|
||||||
|
222-000-000My Third Book
|
||||||
|
Zero 1
|
||||||
|
000-000-111
|
||||||
|
My Fouth Book
|
||||||
|
1 Zero
|
||||||
|
111-000-000
|
||||||
|
My Fifth Book
|
||||||
|
2 Zero
|
||||||
|
222-000-000My Third Book
|
||||||
|
Zero 1
|
||||||
|
000-000-111
|
||||||
|
My Fouth Book
|
||||||
|
1 Zero
|
||||||
|
111-000-000
|
||||||
|
My Fifth Book
|
||||||
|
2 Zero
|
||||||
|
222-000-000
|
@ -1,16 +0,0 @@
|
|||||||
Jon
|
|
||||||
1101825
|
|
||||||
Computer
|
|
||||||
4
|
|
||||||
88
|
|
||||||
98
|
|
||||||
52
|
|
||||||
95
|
|
||||||
Jon
|
|
||||||
1101825
|
|
||||||
Computer
|
|
||||||
4
|
|
||||||
88
|
|
||||||
98
|
|
||||||
52
|
|
||||||
95
|
|
@ -230,9 +230,8 @@ void print_data(BOOK *book)
|
|||||||
while (temp->next != NULL)
|
while (temp->next != NULL)
|
||||||
{
|
{
|
||||||
temp = temp->next;
|
temp = temp->next;
|
||||||
printf("\n\n============ %s ============\n", temp->title);
|
printf("\nBook title: %s\n", temp->title);
|
||||||
printf("Book title: %s\n", temp->title);
|
printf("Book title: %s\n", temp->title);
|
||||||
printf("Book author: %s\n", temp->author);
|
printf("Book title: %s", temp->title);
|
||||||
printf("Book isbn: %s", temp->isbn);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
181
work1/single.c
181
work1/single.c
@ -1,10 +1,6 @@
|
|||||||
#include "stdio.h"
|
#include "stdio.h"
|
||||||
#include "stdlib.h"
|
#include "stdlib.h"
|
||||||
|
|
||||||
#define BUFFER_SIZE 128
|
|
||||||
|
|
||||||
const char *FILE_STUDENT_DATA_PATH = "./data/students.test.txt";
|
|
||||||
|
|
||||||
struct person_tag
|
struct person_tag
|
||||||
{
|
{
|
||||||
char name[20];
|
char name[20];
|
||||||
@ -24,12 +20,7 @@ struct student_tag
|
|||||||
struct person_tag student_info;
|
struct person_tag student_info;
|
||||||
struct course_tag course_info;
|
struct course_tag course_info;
|
||||||
struct student_tag *next;
|
struct student_tag *next;
|
||||||
} * head;
|
};
|
||||||
|
|
||||||
// typedef for declared to use as data type
|
|
||||||
typedef struct person_tag PERSON;
|
|
||||||
typedef struct course_tag COURSE;
|
|
||||||
typedef struct student_tag STUDENT;
|
|
||||||
|
|
||||||
// core functions
|
// core functions
|
||||||
void display_students();
|
void display_students();
|
||||||
@ -40,189 +31,27 @@ void update_file();
|
|||||||
void read_file();
|
void read_file();
|
||||||
void quite();
|
void quite();
|
||||||
|
|
||||||
// Linked list functions
|
|
||||||
void add_student(char *student_name, char *student_id, char *course_name, int no_of_units, int *marks);
|
|
||||||
int count();
|
|
||||||
|
|
||||||
// util functions
|
// util functions
|
||||||
void display_menu();
|
void display_menu();
|
||||||
void read_student_to_data();
|
|
||||||
void print_welcome();
|
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
// variable use for menu selected
|
// varibales
|
||||||
int selected;
|
int selected;
|
||||||
|
|
||||||
print_welcome();
|
printf("Welcome!\n");
|
||||||
|
|
||||||
display_menu();
|
display_menu();
|
||||||
|
|
||||||
display_students();
|
|
||||||
|
|
||||||
int c = count();
|
|
||||||
|
|
||||||
printf("Count: %d", c);
|
|
||||||
|
|
||||||
printf("\nGoodbye!");
|
printf("\nGoodbye!");
|
||||||
}
|
}
|
||||||
|
|
||||||
void print_welcome()
|
|
||||||
{
|
|
||||||
printf("Welcome!\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
void display_students()
|
|
||||||
{
|
|
||||||
read_student_to_data();
|
|
||||||
}
|
|
||||||
|
|
||||||
void display_menu()
|
void display_menu()
|
||||||
{
|
{
|
||||||
printf("\n(1) Display students’ details\n");
|
printf("(1) Display students’ details\n");
|
||||||
printf("(2) Search for a student’s mark\n");
|
printf("(2) Search for a student’s mark\n");
|
||||||
printf("(3) Find the details of student with the largest average\n");
|
printf("(3) Find the details of student with the largest average\n");
|
||||||
printf("(4) Find the details of failed students\n");
|
printf("(4) Find the details of failed students\n");
|
||||||
printf("(5) Add new student to the record\n");
|
printf("(5) Add new student to the record\n");
|
||||||
printf("(6) Quit program\n\n");
|
printf("(6) Quit program\n");
|
||||||
}
|
|
||||||
|
|
||||||
void add_student(char *student_name, char *student_id, char *course_name, int no_of_units, int *marks)
|
|
||||||
{
|
|
||||||
STUDENT *temp, *iterator;
|
|
||||||
temp = (struct student_tag *)malloc(sizeof(struct student_tag));
|
|
||||||
PERSON info = {student_name, student_id};
|
|
||||||
COURSE course = {course_name, no_of_units, marks};
|
|
||||||
int sum = 0;
|
|
||||||
for (int i = 0; i < no_of_units; i++)
|
|
||||||
{
|
|
||||||
sum += marks[i];
|
|
||||||
}
|
|
||||||
course.avg = sum / no_of_units;
|
|
||||||
temp->student_info = info;
|
|
||||||
temp->course_info = course;
|
|
||||||
// reference in head
|
|
||||||
iterator = head;
|
|
||||||
|
|
||||||
if (head == NULL)
|
|
||||||
{
|
|
||||||
head = temp;
|
|
||||||
head->next = NULL;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
while (iterator->next != NULL)
|
|
||||||
{
|
|
||||||
iterator = iterator->next;
|
|
||||||
}
|
|
||||||
temp->next = NULL;
|
|
||||||
iterator->next = temp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void update_file()
|
|
||||||
{
|
|
||||||
FILE *file;
|
|
||||||
file = fopen(FILE_STUDENT_DATA_PATH, "a");
|
|
||||||
}
|
|
||||||
|
|
||||||
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[BUFFER_SIZE];
|
|
||||||
char student_id[BUFFER_SIZE];
|
|
||||||
char course_name[BUFFER_SIZE];
|
|
||||||
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 d[BUFFER_SIZE];
|
|
||||||
|
|
||||||
fgets(d, sizeof d, file);
|
|
||||||
sscanf(d, "%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 n = 1;
|
|
||||||
STUDENT *temp;
|
|
||||||
temp = head;
|
|
||||||
if (head == NULL)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (temp->next != NULL)
|
|
||||||
{
|
|
||||||
n++;
|
|
||||||
temp = temp->next;
|
|
||||||
}
|
|
||||||
|
|
||||||
return n;
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user