Untitled

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

union format
{
    int marks;
    float cgpa;
};

enum tagtype
{
    MARK = 1,
    CGPA
};

enum display
{
    take_input = 1,
    show_info,
    end
};
typedef struct
{
    int ID;
    char name[100];
    union format result;
    int type;
    char gender[6];
    char division[30];
} studentinfo;

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)
        {
            FILE *infofile = fopen("D:\\CSE101 ASSIGNMENT\\output\\studatabase.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: ");
            fgets(student.name, sizeof(student.name), stdin);
            student.name[strcspn(student.name, "\n")] = 0;
            printf("MARKS OR CGPA? (1 FOR MARKS, 2 FOR CGPA): ");
            scanf("%d", &option);
            if (option == 1)
                student.type = 1;
            if (option == 2)
                student.type = 2;
            if (student.type == 1)
            {
                printf("ENTER MARKS: ");
                scanf("%d", &student.result.marks);
            }
            if (student.type == 2)
            {
                printf("ENTER CGPA: ");
                scanf("%f", &student.result.cgpa);
            }
            printf("ENTER THE GENDER OF THE STUDENT: ");
            scanf("%s", student.gender);
            printf("ENTER THE DIVISION OF THE RESIDENCE: ");
            scanf("%s", student.division);
            getchar();
            fprintf(infofile, "%d %s %d ", student.ID, student.name, student.type);
            if (student.type == 1)
            {
                fprintf(infofile, "%d", student.result.marks);
            }
            if (student.type == 2)
            {
                fprintf(infofile, "%f ", student.result.cgpa);
            }
            fprintf(infofile, "%s %s\n", student.gender, student.division);
            fclose(infofile);
        }
        if (choose == show_info)
        {
            printf("ENTER AN ID: ");
            scanf("%d", &id);
            FILE *infofile = fopen("D:\\CSE101 ASSIGNMENT\\output\\studatabase.txt", "r");
            assert(infofile);
            int got = 0;
            studentinfo student;
            // int show=student.result_type;
            while (fscanf(infofile, "%d %s %d %d %f %s %s",
                          &student.ID, student.name, &student.type, &student.result.marks, &student.result.cgpa, student.gender, student.division) != EOF)
            {
                if (student.ID == id)
                {
                    printf("\nID NUMBER: %d\n", student.ID);
                    printf("NAME: %s\n", student.name);
                    if (student.type == 1)
                        printf("MARKS: %d\n", student.result.marks);
                    if (student.type == 2)
                        printf("CGPA: %.2f\n", student.result.cgpa);
                    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);
        }
        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