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