校园一卡通设计,结构体的运用

程序功能:程序对校园—卡通信息进行管理。以结构体数组方式管理一卡通信息, 结构体数据成员包含卡号char cno[7],密码char
pwd[9],余额float money,是否在册is等成员。要求:
(1)设计readfle 函数(说明如下),函数从filename文件中读入学生的一卡通信息,保存到word数组中,返回读入学生的个数。
函数声明:int readfile(char *filename, Word word[]);
参数说明:filename为文件名,word[]为一卡通结构体数组。
返回值:函数返回读入的学生个数,文件打开失败时返回0。
(2)设计函数 void showdata(Word word[], int n),用于显示所有信息
(3)设计 write_file 函数(说明如下),函数将所有在册的学生一卡通信息写入到filename文件中。
函数声明:void write_file(char filename[], Word word[],int n);
参数说明:filename为文件名,word[]为一卡通结构体数组,n为学生个数
(4) 设计主函数,主函数调用子函数,实现从文件data1.txt中读取数据,并显示在屏幕上。最后将在册学生信息写入到data2.txt中。

部分如下#includeInclude#includeIdetine MAX_LEN 50 typedet struct node
char cno[7]:char pwd[9]:float money:Char is;
}Word;
int readfile(char filename[]. Word word[])
//补充函数体
1/补充其他函数
int main(void)
Word t,s[3]:int choice float money:char cno[7]:int n;
1/补充代码
return o:

(1)

int readfile(char* filename, Word* word)
{
    FILE* fp = fopen(filename, "r");
    if (fp == NULL)
        return 0; // return 0 if file opening fails

    int count = 0;
    while (fread(&word[count], sizeof(Word), 1, fp) == 1)
        count++;

    fclose(fp);
    return count; // return number of students read from the file
}

(2)

void showdata(Word* word, int n)
{
    for (int i = 0; i < n; i++)
    {
        printf("Card number: %s\n", word[i].cno);
        printf("Password: %s\n", word[i].pwd);
        printf("Balance: %f\n", word[i].money);
        printf("Enrolled: %c\n", word[i].is);
        printf("\n");
    }
}

(3)

void write_file(char* filename, Word* word, int n)
{
    FILE* fp = fopen(filename, "w");
    if (fp == NULL)
        return; // return if file opening fails

    for (int i = 0; i < n; i++)
    {
        if (word[i].is == 'Y') // write only enrolled students
        {
            fwrite(&word[i], sizeof(Word), 1, fp);
        }
    }

    fclose(fp);
}

(4)

int main(void)
{
    Word t, s[3];
    int choice, n;
    float money;
    char cno[7];

    // read student information from data1.txt
    n = readfile("data1.txt", s);
    if (n == 0)
    {
        printf("Error: Unable to open file\n");
        return 1;
    }

    // show all student information
    showdata(s, n);

    // write enrolled student information to data2.txt
    write_file("data2.txt", s, n);

    return 0;
}