求助,我写的学生成绩管理程序缺一段文件存储和读取功能,不知怎么写文件函数
程序代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#define N 20
int new_id=0;
struct student
{ long id;
char name[20];
float csheji;
float gaoshu;
float yingyu;
float daishu;
int mingci;
float average;
};
struct student stu[20];
void input();
void display();
void add();
void modify();
void del();
void find();
void average();
void sort();
void tongji();
void tongji()//分数段统计
{
int i;float sum=0.00,float a1,a2,a3,a4;
char m;
do
{
for (i=0;i<new_id;i++)
{
sum+=stu[i].csheji;
a1=sum/(i+1);
}
sum=0.00;
for (i=0;i<new_id;i++)
{
sum+=stu[i].gaoshu;
a2=sum/(i+1) ;
}
sum=0;
for (i=0;i<new_id;i++)
{
sum+=stu[i].yingyu;
a3=sum/(i+1);
}
sum=0;
for (i=0;i<new_id;i++)
{
sum+=stu[i].daishu;
a4=sum/(i+1);
}
int k,q=0,w=0,e=0,r=0,t=0;
for(k=0;k<new_id;k++)
{
if(stu[k].csheji>=90)
q++;
else if(stu[k].csheji>=80)
w++;
else if(stu[k].csheji>=70)
e++;
else if (stu[k].csheji>=60)
r++;
else
t++;
}
printf("C程序设计 100-90 %d人,89-80 %d人,79-70 %d人,69-60 %d人,60以下 %d人 平均分%.2f\n",q,w,e,r,t,a1);
for(k=0,q=0,w=0,e=0,t=0,r=0;k<new_id;k++)
{
if(stu[k].gaoshu>=90)
q++;
else if(stu[k].gaoshu>=80)
w++;
else if(stu[k].gaoshu>=70)
e++;
else if (stu[k].gaoshu>=60)
r++;
else
t++;
}
printf(" 高等数学 100-90 %d人,89-80 %d人,79-70 %d人,69-60 %d人,60以下 %d人 平均分%.2f\n",q,w,e,r,t,a2);
for(k=0,q=0,w=0,e=0,r=0,t=0;k<new_id;k++)
{
if(stu[k].yingyu>=90)
q++;
else if(stu[k].yingyu>=80)
w++;
else if(stu[k].yingyu>=70)
e++;
else if (stu[k].yingyu>=60)
r++;
else
t++;
}
printf(" 英语 100-90 %d人,89-80 %d人,79-70 %d人,69-60 %d人,60以下 %d人 平均分%.2f\n",q,w,e,r,t,a3);
for(k=0,q=0,w=0,e=0,r=0,t=0;k<new_id;k++)
{
if(stu[k].daishu>=90)
q++;
else if(stu[k].daishu>=80)
w++;
else if(stu[k].daishu>=70)
e++;
else if (stu[k].daishu>=60)
r++;
else
t++;
}
printf(" 线性代数 100-90 %d人,89-80 %d人,79-70 %d人,69-60 %d人,60以下 %d人 平均分%.2f\n",q,w,e,r,t,a4);
scanf("%c",&m);
}
while(!m);
}
void input()
{ int i=0;
char ch;
do
{ printf("\t\t\t\t\n输入第%d个学员的信息\n",i+1);
printf("\n输入学生学号:");
scanf("%d",&stu[i].id);
printf("\n输入学员姓名:");
scanf("%s",&stu[i].name);
printf("\n输入c程序设计成绩:");
{scanf("%f",&stu[i].csheji);}
if(stu[i].csheji<0||stu[i].csheji>100)
{
printf("\n输入错误,请重新输入\n");
continue;
}
printf("\n输入高数成绩:");
scanf("%f",&stu[i].gaoshu);
if(stu[i].gaoshu<0||stu[i].gaoshu>100)
{
printf("\n输入错误,请重新输入\n");
continue;
}
printf("\n输入英语成绩:");
scanf("%f",&stu[i].yingyu);
if(stu[i].yingyu<0||stu[i].yingyu>100)
{
printf("\n输入错误,请重新输入\n");
continue;
}
printf("\n输入线性代数成绩:");
scanf("%f",&stu[i].daishu);
if(stu[i].daishu<0||stu[i].daishu>100)
{
printf("\n输入错误,请重新输入\n");
continue;
}
printf("\n\n");
i++;
new_id=i;
printf("是否继续输入?(Y/N)");
printf("\n\n");
ch=getch();
}
while(ch!='n'&&ch!='N');
}
void display()//显示
{
int i;
char k;
average();
sort();
do
{
printf("\t\t\t班级学员信息列表\n");
printf("学号 姓名 c程序设计 高数 英语 线性代数 平均值 名次\n");
for(i=0;i<new_id&&stu[i].name[0];i++)
printf("%d %s %.2f %.2f %.2f %.2f %.2f %d\n",stu[i].id,stu[i].name,stu[i].csheji,stu[i].gaoshu,stu[i].yingyu,stu[i].daishu,stu[i].average,stu[i].mingci);
printf("\n\n");
scanf("%c",&k);
}
while(!k);
}
void add()//添加
{ char ch;
do
{
printf("\n\t\t输入新插入学员信息\n");
printf("\n输入学生号:");
scanf("%d",&stu[new_id].id);
printf("\n输入学员姓名:");
scanf("%s",&stu[new_id].name);
printf("\n输入c语言成绩:");
scanf("%f",&stu[new_id].csheji);
if(stu[new_id].csheji<0||stu[new_id].csheji>100)
{
printf("\n输入错误,请重新输入\n");
continue;
}
printf("\n输入高数成绩:");
scanf("%f",&stu[new_id].gaoshu);
if(stu[new_id].gaoshu<0||stu[new_id].gaoshu>100)
{
printf("\n输入错误,请重新输入\n");
continue;
}
printf("\n输入英语成绩:");
scanf("%f",&stu[new_id].yingyu);
if(stu[new_id].yingyu<0||stu[new_id].yingyu>100)
{
printf("\n输入错误,请重新输入\n");
continue;
}
printf("\n输入线性代数成绩:");
scanf("%f",&stu[new_id].daishu);
if(stu[new_id].daishu<0||stu[new_id].daishu>100)
{
printf("\n输入错误,请重新输入\n");
continue;
}
printf("\n\n");
new_id=new_id+1;
average();
sort();
printf("是否继续输入?(Y/N)");
printf("\n\n");
ch=getch();
}
while(ch!='n'&&ch!='N');
}
void modify()//修改
{ int i;
char str[20];
printf("输入要修改的学生姓名:");
scanf("%s",str);
for(i=0;i<N;i++)
if(!strcmp(stu[i].name,str))
{ printf("\n 输入新插入学员的信息\n");
printf("\n 输入学生学号:");
scanf("%d",&stu[i].id);
printf("\n 输入c语言成绩:");
scanf("%f",&stu[i].csheji);
if(stu[i].csheji<0||stu[i].csheji>100)
{
printf("\n输入错误,请重新输入\n");
continue;
}
printf("\n 输入高数成绩:");
scanf("%f",&stu[i].gaoshu);
if(stu[i].gaoshu<0||stu[i].gaoshu>100)
{
printf("\n输入错误,请重新输入\n");
continue;}
printf("\n 输入英语成绩:");
scanf("%f",&stu[i].yingyu);
if(stu[i].yingyu<0||stu[i].yingyu>100)
{
printf("\n输入错误,请重新输入\n");
continue;
}
printf("\n 输入线性代数成绩:");
scanf("%f",&stu[i].daishu);
if(stu[i].daishu<0||stu[i].daishu>100)
{
printf("\n输入错误,请重新输入\n");
continue;
}
printf("\n\n");
sort();
break;
}
}
void del()//删除
{ int iid,i;
printf("输入要删除学员的学号:");
scanf("%d",&iid);
for(i=0;i<new_id;i++)
{
if(stu[i].id==iid)
{
if(i==new_id)
new_id-=1;
else
{ stu[i]=stu[new_id-1];
new_id-=1;
}
sort();
break;
}
}
}
void find()//查询
{ int i;
char str[20],k;
do
{ printf("输入要查询的学生姓名:");
scanf("%s",str);
for(i=0;i<N;i++)
if(!strcmp(stu[i].name,str))
{ average();
sort();
printf("学号 姓名 c程序设计 高数 英语 线性代数 平均值 名次\n");
printf("%d %s %.1f %.1f %.1f %.1f %.1f %d\n",stu[i].id,stu[i].name,stu[i].csheji,stu[i].gaoshu,stu[i].yingyu,stu[i].daishu,stu[i].average,stu[i].mingci);
}
k=getch();
}
while(!k);
}
void sort()//排名
{ struct student t;
int i,j;
float k;
average();
for(i=0;i<N-1;i++)
{ k=1;
for(j=1;j<N-i;j++)
if(stu[j-1].average<stu[j].average)
{ t=stu[j];
stu[j]=stu[j-1];
stu[j-1]=t;
}
for(j=0;j<N;j++)
{ stu[j].mingci=k;
++k;
}
}
}
void average()//平均分
{ int i;
float t;
for(i=0;i<N;i++)
{ t=stu[i].csheji+stu[i].gaoshu+stu[i].yingyu+stu[i].daishu;
stu[i].average=t/4;
}
}
void main()
{ int k,t=1;
first: printf("\n 欢迎使用学生成绩管理系统 \n\n\n");
do
{ printf(" 1.录入学生成绩 \n");
printf(" 2.显示学生成绩 \n");
printf(" 3.添加学生成绩 \n");
printf(" 4.修改学生成绩 \n");
printf(" 5.删除学生成绩 \n");
printf(" 6.查询学生成绩 \n");
printf(" 7.成绩分数段 \n");
printf(" 8.退出 \n");
printf(" 请选择:\n\n");
printf(" 制作者:孟丹青 \n");
scanf("%d",&k);
if(k>8||k<1)
printf("输入有误,请重新输入^_^\n\n");
switch(k)
{ case 1:system("cls");input();system("cls");break;
case 2:system("cls");display();break;
case 3:system("cls");add();system("cls");break;
case 4:system("cls");modify();system("cls");break;
case 5:system("cls");del();system("cls");break;
case 6:system("cls");find();break;
case 7:system("cls");tongji();break;
case 8:system("exit");exit(0);
}
}while(t);
}






