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