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