Untitled

 avatar
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