#include
#include
#include
void showdata();
void writedata();
typedef struct node
{
int i_num;/*学号*/
char name[12];
int ac;/*成绩*/
}
student;
void showdata()/*显示内容*/
{
FILE *fp;
getchar();
if((fp=fopen("data.txt","rb"))==NULL)
{
printf("打开文件错误!");
exit(0);
}
else
{
while(feof(fp)==0)
{
student temp;
if (fread(&temp,sizeof(student),1,fp)==0 )
break;
else
{
printf("学号:%d ",temp.i_num);
printf("姓名:%s ",temp.name);
printf("成绩:%d",temp.ac);
printf("\n");
}
}
fclose(fp);
}
}
void adddata()/*追加数据*/
{
FILE *fp;
student temp;
getchar();
printf("请输入\n学号 姓名 成绩\n");
scanf("%d%s%d",&temp.i_num,temp.name,&temp.ac);
if((fp=fopen("data.txt","ab"))==NULL)
{
printf("写入文件错误!");
exit(0);
}
else
{
fwrite(&temp,sizeof(student),1,fp);
fclose(fp);
printf("写入成功!");
}
}
void inputdata() /*第一次输入数据*/
{
FILE *fp;
student temp;
int i,n;
getchar();
printf("请输入要输入学生的个数:");
scanf("%d",&n);
if((fp=fopen("data.txt","wb"))==NULL)
{
printf("写入文件错误!");
exit(0);
}
else
{
for(i=0;i
{
printf("请输入\n学号 姓名 成绩\n");
scanf("%d%s%d",&temp.i_num,temp.name,&temp.ac);
fwrite(&temp,sizeof(student),1,fp);
}
fclose(fp);
}
printf("写入成功!\n");
}
void del( )
{
student stu[100],temp;
FILE *fp;
int flag=0,i_count,dd,i=0,j=0;/* count*/
getchar( );
printf("请输入删除的学号: ");
scanf("%d",&dd);
if((fp=fopen("data.txt","rb"))==NULL)
{
printf("文件打开错误!");
exit(0);
}
else
{
while(feof(fp)==0)
{
if((fread(&temp,sizeof(student),1,fp))==0) /*count*/
{
/*printf("结束!");*/
break;
}
else
{
stu[i].i_num=temp.i_num;
strcpy(stu[i].name,temp.name);
stu[i].ac=temp.ac;
i++;
}
}
i_count=i-1; /*存放读入数组个数*/
/* for(j=0;j<=i;j++)
{
printf("\n# %d #",stu[j].i_num);
printf("\n# %s #\n",stu[j].name);
} */
fclose(fp);
}
/*查找并去掉节点*/
for(i=0;i<=i_count;i++)
{
if(stu[i].i_num ==dd)
{
flag=1;
break;
}
}
if(flag==1)
{
i_count-=1; /*数组个数减1*/
for(j=0;j<=i_count;j++)
{
if(j==i)
{
stu[j].i_num=stu[j+1].i_num;
strcpy(stu[j].name,stu[j+1].name);
stu[j].ac=stu[j+1].ac;
}
}
/*重新写入*/
if((fp=fopen("data.txt","wb"))==NULL)
{
printf("文件打开错误!删除不成功!\n");
exit(0);
}
else
{
for(i=0;i<=i_count;i++)
{
fwrite(&stu[i],sizeof(student),1,fp);
}
fclose(fp);
}
}
else
{
printf("删除不成功,没有找到该学号!\n");
return;
}
}
void modify() /*修改数据*/
{
student stu[100],temp,temp1;
FILE *fp;
int flag=0,i_count,dd,i=0,j=0;
getchar();
printf("请输入要修改学号: ");
scanf("%d",&dd);
printf("请输入\n学号 姓名 成绩\n");
scanf("%d%s%d",&temp1.i_num,temp1.name,&temp1.ac);
if((fp=fopen("data.txt","rb"))==NULL)
{
printf("文件打开错误!");
exit(0);
}
else
{
while(feof(fp)==0)
{
if((fread(&temp,sizeof(student),1,fp))==0)
{
/*printf("结束!");*/
break;
}
else
{
stu[i].i_num=temp.i_num;
strcpy(stu[i].name,temp.name);
stu[i].ac=temp.ac;
i++;
}
}
i_count=i-1; /*存放读入数组个数*/
/* for(j=0;j<=i;j++)
{
printf("\n# %d #",stu[j].i_num);
printf("\n# %s #\n",stu[j].name);
} */
fclose(fp);
}
/*查找并去掉节点*/
for(i=0;i<=i_count;i++)
{
if(stu[i].i_num ==dd)
{
flag=1;
break;
}
}
if(flag==1)
{
for(j=0;j<=i_count;j++)
{
if(j==i)
{
stu[j].i_num=temp1.i_num;
strcpy(stu[j].name,temp1.name);
stu[j].ac=temp1.ac;
}
}