如何实现将各类信息存储在文件中并且能够查询?

 

先定义一个结构体数组,然后赋值进去。

录入及保存参考:

/*成绩输入*/
void input()
{
    int i = 0; //学生人数初始化//
    char c;
    FILE * fp; //定义一个文件指针fp//
    count(); //实时检测总数n//
    fp = fopen("students.txt", "at+"); //以"追加"方式打开students文本文件
    do
    {
        printf("请输入学生的个人信息:\n");
        printf("\n请输入第%d学生的信息:\n", n + 1);
        printf("请输入学生的学号:");
        scanf("%d", &student[i].num);
        printf("请输入学生的姓名:");
        scanf("%s", student[i].name);
        printf("请输入学生的语文成绩:");
        scanf("%d", &student[i].chinese);
        printf("请输入学生的数学成绩:");
        scanf("%d", &student[i].math);
        printf("请输入学生的英语成绩:");
        scanf("%d", &student[i].english);
		
        student[i].sum = student[i].chinese + student[i].math + student[i].english;
        student[i].ave = student[i].sum / 3;
		
        fwrite( & student[i], sizeof(struct students), 1, fp); //以方式将其写入students文本文件
        i++;
        n++;
        printf("\n\n\t\t\t\t是否继续输入(Y/N):");
        getchar(); //提示是否继续,从键盘获得一个字符
        scanf("%c", &c);
    }
    while ( c == 'y' || c == 'Y');
    fclose(fp);
}
/*成绩输出*/
void output()
{
    int i;
    char c;
    FILE * fp; //定义一个文件指针fp
    fp = fopen("students.txt", "rt"); //以"读取的" 方式打开students文本文件
    system("cls"); //清屏//
    getchar();
    printf("|#学号\t姓名\t语文\t数学\t英语\t总成绩\t平均分\t#|\n");
    do {
        for (i = 0; i < n; i++)
        {
            fread(&student[i], sizeof(struct students), 1, fp);
            printf(" %d ", student[i].num);
            printf(" %s ", student[i].name);
            printf(" %d ", student[i].chinese);
            printf(" %d ", student[i].math);
            printf(" %d ", student[i].english);
            printf(" %d ", student[i].sum);
            printf(" %d \n", student[i].ave);
        }
        printf("\n\n\t\t\t\t是否继续其它操作(Y/N):"); //提示是否继续
        scanf("%c", &c);
        c = getchar();
    } while ( c == 'y' || c == 'Y');
    fclose(fp); //关闭文件//
}