Untitled
unknown
plain_text
4 months ago
4.2 kB
2
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