Untitled
unknown
plain_text
a year ago
4.2 kB
9
Indexable
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#include <string.h>
union format{
int marks[4];
float cgpa[4];
};
enum tagtype
{
MARK = 1,
CGPA
};
enum display
{
take_input = 1,
show_info,
end
};
typedef struct
{
int ID;
char name[100];
union format result;
enum tagtype result_type;
char gender[6];
char division[30];
} studentinfo;
void takeinfo()
{
FILE *infofile = fopen("database.dat", "ab");
assert(infofile);
studentinfo student;
int option;
printf("ENTER THE ID OF THE STUDENT: ");
scanf("%d", &student.ID);
getchar();
printf("ENTER THE NAME OF THE STUDENT: ");
gets(student.name);
printf("MARKS OR CGPA? (1 FOR MARKS, 2 FOR CGPA): ");
scanf("%d", &option);
if (option == 1)
student.result_type = MARK;
if (option == 2)
student.result_type = CGPA;
if (student.result_type == MARK)
{
printf("ENTER MARKS FOR MATHS: ");
scanf("%d", &student.result.marks[0]);
printf("ENTER MARKS FOR PHYSICS: ");
scanf("%d", &student.result.marks[1]);
printf("ENTER MARKS FOR COMPUTER SCIENCE: ");
scanf("%d", &student.result.marks[2]);
printf("ENTER MARKS FOR ECONOMICS: ");
scanf("%d", &student.result.marks[3]);
}
if (student.result_type == CGPA)
{
printf("ENTER CGPA FOR MATHS: ");
scanf("%f", &student.result.cgpa[0]);
printf("ENTER CGPA FOR PHYSICS: ");
scanf("%f", &student.result.cgpa[1]);
printf("ENTER CGPA FOR COMPUTER SCIENCE: ");
scanf("%f", &student.result.cgpa[2]);
printf("ENTER CGPA FOR ECONOMICS: ");
scanf("%f", &student.result.cgpa[3]);
}
printf("ENTER THE GENDER OF THE STUDENT: ");
scanf("%s", student.gender);
printf("ENTER THE DIVISION OF THE RESIDENCE: ");
scanf("%s", student.division);
getchar();
fwrite(&student, sizeof(studentinfo), 1, infofile);
fclose(infofile);
}
void search(int id)
{
FILE *infofile = fopen("database.dat", "rb");
assert(infofile);
int got = 0;
studentinfo student;
// int show=student.result_type;
while (fread(&student, sizeof(studentinfo), 1, infofile))
{
if (student.ID == id)
{
printf("\nID NUMBER: %d\n", student.ID);
printf("NAME: %s\n", student.name);
if (student.result_type == MARK)
printf("MARKS FOR MATHS: %d\nMARKS FOR PHYSICS: %d\nMARKS FOR COMP SCI: %d\nMARKS FOR ECONOMICS: %d\n", student.result.marks[0], student.result.marks[1], student.result.marks[2], student.result.marks[3]);
if (student.result_type == CGPA)
printf("CGPA FOR MATHS: %g\nCGPA FOR PHYSICS: %g\nCGPA FOR COMP SCI: %g\nCGPA FOR ECONOMICS: %g\n", student.result.cgpa[0], student.result.cgpa[1], student.result.cgpa[2], student.result.cgpa[3]);
printf("GENDER: %s\n", student.gender);
printf("DIVISION OF RESIDENCE: %s\n", student.division);
got = 1;
break;
}
}
if (got == 0)
{
printf("THE PROVIDED ID IS NOT PRESENT HERE.\n");
}
fclose(infofile);
}
int main()
{
int choose, id;
while (1)
{
printf("Welcome to BUET CSE Student's Forum.\n\nChoose one of the options:\n");
printf("1. Take input for a student\n");
printf("2. Take ID to show information of a student\n");
printf("3. End program\n");
scanf("%d", &choose);
if (choose == take_input)
{
takeinfo();
}
if (choose == show_info)
{
printf("ENTER AN ID: ");
scanf("%d", &id);
search(id);
}
if (choose == end)
{
printf("PROGRAM TERMINATED, THANK YOU\n");
exit(0);
}
if (choose != take_input && choose != show_info && choose != end)
{
printf("INVALID CHOICE. RETRY\n");
}
}
return 0;
}Editor is loading...
Leave a Comment