#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#define FILENAME "studentInfo.dat"
struct student
{
    char id[13];
    char name[50];
    char sex;
    int age;
    struct
    {
        float c;
        float en;
        float math;
    } grade;
};
void show_students(void)
{
    struct student stu;
    FILE *fp = fopen(FILENAME, "rb");
    system("cls");
    if (fp == NULL)
    {
        puts("文件不存在或打不開!");
        getch();
        return;
    }
    puts("學號\t\t姓名\t性別\t年齡\tC語言\t英語\t高數");
    while (fread(&stu, sizeof(stu), 1, fp))
        printf("%-16s%-8s%-8c%-8d%-8.1f%-8.1f%-8.1f\n", stu.id, stu.name, stu.sex, stu.age, stu.grade.c, stu.grade.en, stu.grade.math);
    fclose(fp);
    getch();
}
void add_student(void)
{
    struct student stu;
    FILE *fp;
    system("cls");
    printf("請輸入學號: ");
    fflush(stdin);
    gets(stu.id);
    printf("請輸入姓名: ");
    fflush(stdin);
    gets(stu.name);
    
    printf("請輸入性別(M或F): ");
    fflush(stdin);
    stu.sex = getchar();
    printf("請輸入年齡: ");
    scanf("%d", &stu.age);
    printf("請輸入C語言成績: ");
    scanf("%f", &stu.grade.c);
    printf("請輸入英語成績: ");
    scanf("%f", &stu.grade.en);
    printf("請輸入高數成績: ");
    scanf("%f", &stu.grade.math);
    fp = fopen(FILENAME, "ab");
    if (fp == NULL)
        puts("錄入失敗, 文件打不開!");
    else
    {
        fwrite(&stu, sizeof(stu), 1, fp);
        fclose(fp);
        puts("已錄入數據!");
    }
    getch();
}
int main(void)
{
    int i = 0;
    while (i != 3)
    {
        system("cls");
        printf("1: 查看\n2: 添加\n3: 退出\n請輸入: ");
        scanf("%d", &i);
        switch (i)
        {
        case 1:
            show_students();
            break;
        case 2:
            add_student();
            break;
        }
    }
    return 0;
}            
                      

