求两门成绩平均c语言,学生成绩管理 C语言源代码

#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;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值