void Save(Student *pHead)//储存文档
{
Student *p=pHead->next;
FILE *fp;
char filename[30];
if(p==NULL)
puts("无学生信息,请先录入学生信息");
else
{
while(1)
{
puts("请输入你要保存文件的地址");
scanf("%s",&filename);
if((fp=fopen(filename,"w"))==NULL)
puts("无法打开文件");
else
{
while(p->next!=NULL)
{
fprintf(fp,"%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",
p->number,p->name,p->grade.Math,p->grade.English,p->grade.Clanguage,p->grade.average);
p=p->next;
}
fprintf(fp,"%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f",
p->number,p->name,p->grade.Math,p->grade.English,p->grade.Clanguage,p->grade.average);
puts("保存文件成功!");
fclose(fp);
break;
}
}
}
return ;
}
void Open(Student *pHead)//打开文档
{
Student *pNew,*pNext;
FILE *fp;
char filename[30];
puts("请输入你要打开文件的地址");
scanf("%s",&filename);
if((fp=fopen(filename,"r"))==NULL)
{
puts("无法打开文件");
fflush(stdin);
}
else
{
pNext=(Student *)malloc(sizeof(Student));
pHead->next=pNext;
fscanf(fp,"%d%s%f%f%f%f",
&pNext->number,pNext->name,&pNext->grade.Math,&pNext->grade.English,
&pNext->grade.Clanguage,&pNext->grade.average);
while(!feof(fp))
{
pNew=(Student *)malloc(sizeof(Student));
pNext->next=pNew;
pNext=pNew;
fscanf(fp,"%d%s%f%f%f%f",
&pNext->number,pNext->name,&pNext->grade.Math,&pNext->grade.English,
&pNext->grade.Clanguage,&pNext->grade.average);
}
pNext->next=NULL;
puts("导入数据成功!");
fclose(fp);
}
return ;
}
循环双向链表版:
void Save(Lnode *pHead)
{
Lnode *p=pHead->next;
FILE *fp;
char filename[30];
if(p==pHead)
puts("无学生信息,请先录入学生信息");
else
{
while(1)
{
puts("请输入你要保存文件的地址");
scanf("%s",&filename);
if((fp=fopen(filename,"w"))==NULL)
puts("无法打开文件");
else
{
while(p->next!=pHead)
{
fprintf(fp,"%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",
p->number,p->name,p->grade.Math,p->grade.English,p->grade.Clanguage,p->grade.average);
p=p->next;
}
fprintf(fp,"%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f",
p->number,p->name,p->grade.Math,p->grade.English,p->grade.Clanguage,p->grade.average);
puts("保存文件成功!");
fclose(fp);
break;
}
}
}
return ;
}
void Open(Lnode *pHead)
{
Lnode *pNew,*pNext;
FILE *fp;
char filename[normal];
puts("请输入你要打开文件的地址");
scanf("%s",&filename);
if((fp=fopen(filename,"r"))==NULL)
{
puts("无法打开文件");
fflush(stdin);
}
else
{
pNext=(Student *)malloc(sizeof(Student));
pHead->next=pNext;
fscanf(fp,"%d%s%f%f%f%f",
&pNext->number,pNext->name,&pNext->grade.Math,&pNext->grade.English,
&pNext->grade.Clanguage,&pNext->grade.average);
while(!feof(fp))
{
pNew=(Student *)malloc(sizeof(Student));
pNext->next=pNew;
pNew->prior=pNext;
pNext=pNew;
fscanf(fp,"%d%s%f%f%f%f",
&pNext->number,pNext->name,&pNext->grade.Math,&pNext->grade.English,
&pNext->grade.Clanguage,&pNext->grade.average);
}
pNext->next=pHead;
puts("导入数据成功!");
fclose(fp);
}
return ;
}