陳Sir不是阿Sir 2022-12-20 09:12 采纳率: 66.7%
浏览 33
已结题

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

程序功能:程序对校园—卡通信息进行管理。以结构体数组方式管理一卡通信息, 结构体数据成员包含卡号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中。

部分如下#include <stdio.>Include<stdlib.h>#include <string.h>Idetine 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条回答 默认 最新

  • |__WhoAmI__| 2022-12-20 09:35
    关注

    (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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月28日
  • 已采纳回答 12月20日
  • 创建了问题 12月20日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。