Untitled

 avatar
unknown
plain_text
4 months ago
4.1 kB
4
Indexable
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#include <string.h>

enum tagtype
{
    MARK = 1,
    CGPA
};

enum display
{
    take_input = 1,
    show_info,
    end
};
typedef struct
{
    int ID;
    char name[100];
    enum tagtype result_type;
    int cs;
    int math;
    int physics;
    int econ;
    float cgpa_maths;
    float cgpa_cs;
    float cgpa_physics;
    float cgpa_econ;
    char gender[6];
    char division[30];
} studentinfo;
void takeinfo()
{
    FILE *infofile = fopen("database.txt", "a");
    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.math);
        printf("ENTER MARKS FOR PHYSICS: ");
        scanf("%d", &student.physics);
        printf("ENTER MARKS FOR COMPUTER SCIENCE: ");
        scanf("%d", &student.cs);
        printf("ENTER MARKS FOR ECONOMICS: ");
        scanf("%d", &student.econ);
    }
    if (student.result_type == CGPA)
    {
        printf("ENTER CGPA FOR MATHS: ");
        scanf("%f", &student.cgpa_maths);
        printf("ENTER CGPA FOR PHYSICS: ");
        scanf("%f", &student.cgpa_physics);
        printf("ENTER CGPA FOR COMPUTER SCIENCE: ");
        scanf("%f", &student.cgpa_cs);
        printf("ENTER CGPA FOR ECONOMICS: ");
        scanf("%f", &student.cgpa_econ);
    }
    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.txt", "r");
    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.math, student.physics, student.cs, student.econ);
            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.cgpa_maths, student.cgpa_physics, student.cgpa_cs, student.cgpa_econ);
            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