#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;
}