Nhập xuất danh sách sinh viên bằng con trỏ

// Nếu bạn bị lỗi thư viện conio.h => Do bạn dùng C++ bản mới.

// Hãy kéo xuống comment và lấy code update nhé.

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

struct SinhVien{

    char ten[30];

    char gt[5];

    int age;

    float dT, dL, dH;

    float dtb = 0;

};

typedef SinhVien SV;

void nhap(SV &sv);

void nhapN(SV a[], int n);

void xuat(SV sv);

void xuatN(SV a[], int n);

void tinhDTB(SV &sv);

void sapxep(SV a[], int n);

void xeploai(SV a);

void xeploaiN(SV a[], int n);

void xuatFile(SV a[], int n, char fileName[]);

int main(){

    int key;

    char fileName[] = "DSSV.txt";

    int n;

    bool daNhap = false;

    do{

        printf("\nNhap so luong SV: "); scanf("%d", &n);

    }while(n <= 0);

    SV a[n];

    while(true){

        system("cls");

        printf("******************************************\n");

        printf("**    CHUONG TRINH QUAN LY SINH VIEN    **\n");

        printf("**      1. Nhap du lieu                 **\n");

        printf("**      2. In danh sach sinh vien       **\n");

        printf("**      3. Sap xep sinh vien theo DTB   **\n");

        printf("**      4. Xep loai sinh vien           **\n");

        printf("**      5. Xuat DS sinh vien            **\n");

        printf("**      0. Thoat                        **\n");

        printf("******************************************\n");

        printf("**       Nhap lua chon cua ban          **\n");

        scanf("%d",&key);

        switch(key){

            case 1:

                printf("\nBan da chon nhap DS sinh vien!");

                nhapN(a, n);

                printf("\nBan da nhap thanh cong!");

                daNhap = true;

                printf("\nBam phim bat ky de tiep tuc!");

                getch();

                break;

            case 2:

                if(daNhap){

                    printf("\nBan da chon xuat DS sinh vien!");

                    xuatN(a, n);

                }else{

                    printf("\nNhap DS SV truoc!!!!");

                }

                printf("\nBam phim bat ky de tiep tuc!");

                getch();

                break;

            case 3:

                if(daNhap){

                    printf("\nBan da chon sap xep SV theo STB!");

                    sapxep(a, n);

                    xuatN(a, n);

                }else{

                    printf("\nNhap DS SV truoc!!!!");

                }

                printf("\nBam phim bat ky de tiep tuc!");

                getch();

                break;

            case 4:

                if(daNhap){

                    printf("\nBan da chon thoat xep loai SV!");

                    xeploaiN(a, n);

                }else{

                    printf("\nNhap DS SV truoc!!!!");

                }

                printf("\nBam phim bat ky de tiep tuc!");

                getch();

                break;

            case 5:

                if(daNhap){

                    printf("\nBan da chon xuat DS SV!");

                    xuatFile(a, n, fileName);

                }else{

                    printf("\nNhap DS SV truoc!!!!");

                }

                printf("\nXuat DSSV thanh cong vao file %s!", fileName);

                printf("\nBam phim bat ky de tiep tuc!");

                getch();

                break;

            case 0:

                printf("\nBan da chon thoat chuong trinh!");

                getch();

                return 0;

            default:

                printf("\nKhong co chuc nang nay!");

                printf("\nBam phim bat ky de tiep tuc!");

                getch();

                break;

        }

    }

}

void tinhDTB(SV &sv){

    sv.dtb = (sv.dH + sv.dL + sv.dT)/3;    

}

void nhap(SV &sv){

    printf("\nNhap ten: "); fflush(stdin); gets(sv.ten);

    printf("\nNhap gioi tinh: "); gets(sv.gt);

    printf("\nNhap tuoi: "); scanf("%d", &sv.age);

    printf("\nNhap diem 3 mon: "); scanf("%f%f%f", &sv.dT, &sv.dL, &sv.dH);

    tinhDTB(sv);

}

void nhapN(SV a[], int n){

    printf("\n____________________________________\n");

    for(int i = 0; i< n; ++i){

        printf("\nNhap SV thu %d:", i+1);

        nhap(a[i]);

    }

    printf("\n____________________________________\n");

}

void xuat(SV sv){

    printf("\nHo ten SV: %s", sv.ten);

    printf("\nGioi tinh: %s", sv.gt);

    printf("\nTuoi SV  : %d", sv.age);

    printf("\nDiem Toan - Ly - Hoa: %.2f - %.2f - %.2f", sv.dT, sv.dL, sv.dH);

    printf("\nDiem TB: %.2f", sv.dtb);

}

void xuatN(SV a[], int n){

    printf("\n____________________________________\n");

    for(int i = 0;i < n;++i){

        printf("\nThong tin SV thu %d:", i+1);

        xuat(a[i]);

    }

    printf("\n____________________________________\n");

}

void sapxep(SV a[], int n){

    //Sap xep theo DTB tang dan

    SV tmp;

    for(int i = 0;i < n;++i){

        for(int j = i+1; j < n;++j){

            if(a[i].dtb > a[j].dtb){

                tmp = a[i];

                a[i] = a[j];

                a[j] = tmp;

            }

        }

    }

}

void xeploai(SV sv){

    if(sv.dtb >= 8) printf("Gioi");

    else if(sv.dtb >= 6.5) printf("Kha");

    else if(sv.dtb >= 4) printf("Trung binh");

    else printf("Yeu");

}

void xeploaiN(SV a[], int n){

    printf("\n____________________________________\n");

    for(int i = 0;i < n;++i){

        printf("\nXep loai cua SV thu %d la: ", i+1);

        xeploai(a[i]);

    }

    printf("\n____________________________________\n");

}

void xuatFile(SV a[], int n, char fileName[]){

    FILE * fp;

    fp = fopen (fileName,"w");

    fprintf(fp, "%20s%5s%5s%10s%10s%10s%10s\n", "Ho Ten","GT", "Tuoi", "DT", "DL", "DH", "DTB");

    for(int i = 0;i < n;i++){

        fprintf(fp, "%20s%5s%5d%10f%10f%10f%10f\n", a[i].ten,a[i].gt, a[i].age, a[i].dT, a[i].dL, a[i].dH, a[i].dtb);

    }

    fclose (fp);

}