新手C语言学生成绩管理系统。求高手改一下。。。
#include <stdio.h>#include <stdlib.h>
#include <string.h>
FILE *fp;
struct student
{
int num;
char name[20];
double score[4];
}stu[20];
void print();
void input();
void search();
void modiffy();
void del();
void paixu();
void xingming();
void xuehao();
void avg();
void main()
{
int n;
printf("你已进入学生基本信息管理系统.\n");
printf("1,学生信息录入\n");
printf("2,学生信息查询\n");
printf("3,学生信息删除\n");
printf("4,学生信息修改\n");
printf("5,学生信息排序\n");
printf("0,退出\n");
printf("请选择(0-5):");
do{
scanf("%d",&n);
switch(n)
{
case 1:input();break;
case 2:search();break;
case 3:del();break;
case 4:modiffy();break;
case 5:paixu();break;
}
if(n>5)
printf("选择错误!请重新选择\n");
}while(n!=0);
}
void input()
{
int i=0;
if((fp=fopen("name.txt","w"))==NULL)
{
printf("不能打开!");
exit (0);
}
printf("输入学生:学号 姓名 语文 数学 英语:\n");
scanf("%d%s%f%f%f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
stu[i].score[3]=(stu[i].score[0]+stu[i].score[1]+stu[0].score[2])/3.0;
do
{
printf("\n");
printf("输入学生学号 姓名 语文 数学 英语:(输入0退出)\n");
scanf("%d%s%f%f%f",&stu[i].num,stu[0].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
stu[i].score[3]=(stu[i].score[0]+stu[i].score[1]+stu[0].score[2])/3.0;
}while(stu[i].num!=0);
fclose(fp);
}
void search()
{
int num,i=0,k=0;
if((fp=fopen("name.txt","r"))==NULL)
{
printf("不能打开!");
exit(0);
printf("输入你要查询的学生学号信息:");
}
do{
scanf("%d",&num);
while(!feof(fp));
{
fscanf(fp,"%d%s%f%f%f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2],&stu[i].score[3]);
if(num==stu[i].num)
{
printf("%d %s %.1f %.1f %.1f %.1f",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3]);
k=1;
break;
}
}
if(k==0)
{printf("没有该学生信息!");
printf("请重新输入:(输入0退出)");
}
}while(num!=0);
fclose(fp);
}
void modiffy()
{
struct student stud;
int i=0;
if((fp=fopen("name.txt","r+"))==NULL)
{
printf("不能打开!");
exit(0);
}
printf("输入你要修改的学生学号信息:");
scanf("%d",stud.num);
while(!feof(fp))
{
fscanf(fp,"%d%s%f%f%f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2],&stu[i].score[3]);
if(stud.num==stu[i].num)
{printf("该学生原来信息:\n学号 姓名 语文 数学 英语 平均成绩 :\n");
printf("%d %s %.1f %.1f %.1f ",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3]);
break;
}
i++;
}
printf("输入你要修改的学生基本信息:\n姓名,语文,数学:\n");
scanf(" %s%f%1f",stud.name,&stud.score[0],&stud.score[1],&stud.score[2]);
strcpy(stu[i].name,stud.name);
stu[i].score[0]=stud.score[0];
stu[i].score[1]=stud.score[1];
stu[i].score[2]=stud.score[2];
stu[i].score[3]=(stud.score[0]+stud.score[1]+stud.score[2])/3.0;
fprintf(fp,"%d %s %.1f %.1f %.1f %.1f ",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3]);
fclose(fp);
}
void del()
{
int i=0,j=0,num,n=0,k=0;
if((fp=fopen("nmae.txt","r+"))==NULL)
{
printf("不能打开!");
exit(0);
}
while(!feof(fp))
{
k++;
}
printf("输入你要删除的学生学号:");
do{
scanf("%d",&num);
while(!feof(fp))
{fscanf(fp,"%d%s%f%f%f%f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2],&stu[i].score[3]);
i++;
}
i=0;
while(!feof(fp))
{
if(num==stu[i].num)
{
k=1;
for(j=i;j<n;j++)
{stu[j]=stu[j+1];
fprintf(fp,"%d %s %.1f %.1f %.1f %.1f ",stu[j].num,stu[j].name,stu[j].score[0],stu[j].score[1],stu[j].score[2],stu[j].score[3]);
}
}
i++;
}
if(k==0)
printf("没有该学生的信息:\n请重新输入:(输0退出)");
}while(num!=0);
fclose(fp);
}
void paixu()
{
if((fp=fopen("name.txt","r"))==NULL)
{
printf("不能打开!");
exit(0);
}
int n,k=0,i;
while(!feof(fp))
{
k++;
}
for(i=0;i<k;i++)
fscanf(fp,"%d%s%f%f%f%f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2],&stu[i].score[3]);
printf("1.按学号排序;2.按姓名排序;3按平均成绩排序\n;");
printf("请选择:");
do
{
scanf("%d",&n);
switch(n)
{case 1: void xuehao(); break;
case 2: void xingming(); break;
case 3: void avg(); break;
}if(n>3)
printf("选择错误,请重选!");
}while(n!=0);
fclose(fp);
}
void xuehao()
{
int i,n,k;
struct student stud;
int j;
if((fp=fopen("name.txt","r"))==NULL)
{
printf("不能打开!");
exit(0);
}
while(!feof(fp))
{
fscanf(fp,"%d%s%f%f%f%f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2],&stu[i].score[3]);
i++;
}
for(i=1;i<k;i++)
for(j=0;j<n-i;j++)
if(stu[j].num>stu[j+1].num)
{
stud=stu[j];
stu[j]=stu[j+1];
stu[j+1]=stud;
}
printf("排序为:\n");
printf("学号 语文 数学 英语 平均\n");
void printf();
fclose(fp);
}
void xingming()
{
struct student stud;
int k,n,i=0,j;
if((fp=fopen("name.txt","r"))==NULL)
{
printf("不能打开!");
exit(0);
}
while(!feof(fp))
{
fscanf(fp,"%d%s%f%f%f%f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2],&stu[i].score[3]);
i++;
}
for(i=1;i<k;i++)
for(j=0;j<n-i;j++)
if(strcmp(stu[j].name,stu[j+1].name)>0)
{
stud=stu[j];
stu[j]=stu[j+1];
stu[j+1]=stud;
}
printf("排序为:\n");
printf("学号 语文 数学 英语 平均\n");
void printf();
fclose(fp);
}
void avg()
{
struct student stud;
int j,i,k,n;
if((fp=fopen("name.txt","r"))==NULL)
{printf("不能打开!");
exit(0);}
while(!feof(fp))
{
fscanf(fp,"%d%s%f%f%f%f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2],&stu[i].score[3]);
i++;
}
for(i=1;i<k;i++)
for(j=0;j<n-i;j++)
if(stu[j].score[3]>stu[j+1].score[3])
{
stud=stu[j];
stu[j]=stu[j+1];
stu[j+1]=stud;
}
printf("排序为:\n");
printf("学号 语文 数学 英语 平均\n");
void printf();
fclose(fp);
}
void print()
{
int i=0;
if((fp=fopen("name.txt","r"))==NULL)
{printf("不能打开!");
exit(0);}
while(!feof(fp))
{
fscanf(fp,"%d%s%f%f%f%f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2],&stu[i].score[3]);
fprintf(fp,"%d %s %.1f %.1f %.1f %.1f \n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3]);
i++;
}
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
FILE *fp;
struct student
{
int num;
char name[20];
double score[4];
}stu[20];
void print();
void input();
void search();
void modiffy();
void del();
void paixu();
void xingming();
void xuehao();
void avg();
void main()
{
int n;
printf("你已进入学生基本信息管理系统.\n");
printf("1,学生信息录入\n");
printf("2,学生信息查询\n");
printf("3,学生信息删除\n");
printf("4,学生信息修改\n");
printf("5,学生信息排序\n");
printf("0,退出\n");
printf("请选择(0-5):");
do{
scanf("%d",&n);
switch(n)
{
case 1:input();break;
case 2:search();break;
case 3:del();break;
case 4:modiffy();break;
case 5:paixu();break;
}
if(n>5)
printf("选择错误!请重新选择\n");
}while(n!=0);
}
void input()
{
int i=0;
if((fp=fopen("name.txt","w"))==NULL)
{
printf("不能打开!");
exit (0);
}
printf("输入学生:学号 姓名 语文 数学 英语:\n");
scanf("%d%s%f%f%f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
stu[i].score[3]=(stu[i].score[0]+stu[i].score[1]+stu[0].score[2])/3.0;
do
{
printf("\n");
printf("输入学生学号 姓名 语文 数学 英语:(输入0退出)\n");
scanf("%d%s%f%f%f",&stu[i].num,stu[0].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
stu[i].score[3]=(stu[i].score[0]+stu[i].score[1]+stu[0].score[2])/3.0;
}while(stu[i].num!=0);
fclose(fp);
}
void search()
{
int num,i=0,k=0;
if((fp=fopen("name.txt","r"))==NULL)
{
printf("不能打开!");
exit(0);
printf("输入你要查询的学生学号信息:");
}
do{
scanf("%d",&num);
while(!feof(fp));
{
fscanf(fp,"%d%s%f%f%f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2],&stu[i].score[3]);
if(num==stu[i].num)
{
printf("%d %s %.1f %.1f %.1f %.1f",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3]);
k=1;
break;
}
}
if(k==0)
{printf("没有该学生信息!");
printf("请重新输入:(输入0退出)");
}
}while(num!=0);
fclose(fp);
}
void modiffy()
{
struct student stud;
int i=0;
if((fp=fopen("name.txt","r+"))==NULL)
{
printf("不能打开!");
exit(0);
}
printf("输入你要修改的学生学号信息:");
scanf("%d",stud.num);
while(!feof(fp))
{
fscanf(fp,"%d%s%f%f%f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2],&stu[i].score[3]);
if(stud.num==stu[i].num)
{printf("该学生原来信息:\n学号 姓名 语文 数学 英语 平均成绩 :\n");
printf("%d %s %.1f %.1f %.1f ",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3]);
break;
}
i++;
}
printf("输入你要修改的学生基本信息:\n姓名,语文,数学:\n");
scanf(" %s%f%1f",stud.name,&stud.score[0],&stud.score[1],&stud.score[2]);
strcpy(stu[i].name,stud.name);
stu[i].score[0]=stud.score[0];
stu[i].score[1]=stud.score[1];
stu[i].score[2]=stud.score[2];
stu[i].score[3]=(stud.score[0]+stud.score[1]+stud.score[2])/3.0;
fprintf(fp,"%d %s %.1f %.1f %.1f %.1f ",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3]);
fclose(fp);
}
void del()
{
int i=0,j=0,num,n=0,k=0;
if((fp=fopen("nmae.txt","r+"))==NULL)
{
printf("不能打开!");
exit(0);
}
while(!feof(fp))
{
k++;
}
printf("输入你要删除的学生学号:");
do{
scanf("%d",&num);
while(!feof(fp))
{fscanf(fp,"%d%s%f%f%f%f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2],&stu[i].score[3]);
i++;
}
i=0;
while(!feof(fp))
{
if(num==stu[i].num)
{
k=1;
for(j=i;j<n;j++)
{stu[j]=stu[j+1];
fprintf(fp,"%d %s %.1f %.1f %.1f %.1f ",stu[j].num,stu[j].name,stu[j].score[0],stu[j].score[1],stu[j].score[2],stu[j].score[3]);
}
}
i++;
}
if(k==0)
printf("没有该学生的信息:\n请重新输入:(输0退出)");
}while(num!=0);
fclose(fp);
}
void paixu()
{
if((fp=fopen("name.txt","r"))==NULL)
{
printf("不能打开!");
exit(0);
}
int n,k=0,i;
while(!feof(fp))
{
k++;
}
for(i=0;i<k;i++)
fscanf(fp,"%d%s%f%f%f%f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2],&stu[i].score[3]);
printf("1.按学号排序;2.按姓名排序;3按平均成绩排序\n;");
printf("请选择:");
do
{
scanf("%d",&n);
switch(n)
{case 1: void xuehao(); break;
case 2: void xingming(); break;
case 3: void avg(); break;
}if(n>3)
printf("选择错误,请重选!");
}while(n!=0);
fclose(fp);
}
void xuehao()
{
int i,n,k;
struct student stud;
int j;
if((fp=fopen("name.txt","r"))==NULL)
{
printf("不能打开!");
exit(0);
}
while(!feof(fp))
{
fscanf(fp,"%d%s%f%f%f%f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2],&stu[i].score[3]);
i++;
}
for(i=1;i<k;i++)
for(j=0;j<n-i;j++)
if(stu[j].num>stu[j+1].num)
{
stud=stu[j];
stu[j]=stu[j+1];
stu[j+1]=stud;
}
printf("排序为:\n");
printf("学号 语文 数学 英语 平均\n");
void printf();
fclose(fp);
}
void xingming()
{
struct student stud;
int k,n,i=0,j;
if((fp=fopen("name.txt","r"))==NULL)
{
printf("不能打开!");
exit(0);
}
while(!feof(fp))
{
fscanf(fp,"%d%s%f%f%f%f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2],&stu[i].score[3]);
i++;
}
for(i=1;i<k;i++)
for(j=0;j<n-i;j++)
if(strcmp(stu[j].name,stu[j+1].name)>0)
{
stud=stu[j];
stu[j]=stu[j+1];
stu[j+1]=stud;
}
printf("排序为:\n");
printf("学号 语文 数学 英语 平均\n");
void printf();
fclose(fp);
}
void avg()
{
struct student stud;
int j,i,k,n;
if((fp=fopen("name.txt","r"))==NULL)
{printf("不能打开!");
exit(0);}
while(!feof(fp))
{
fscanf(fp,"%d%s%f%f%f%f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2],&stu[i].score[3]);
i++;
}
for(i=1;i<k;i++)
for(j=0;j<n-i;j++)
if(stu[j].score[3]>stu[j+1].score[3])
{
stud=stu[j];
stu[j]=stu[j+1];
stu[j+1]=stud;
}
printf("排序为:\n");
printf("学号 语文 数学 英语 平均\n");
void printf();
fclose(fp);
}
void print()
{
int i=0;
if((fp=fopen("name.txt","r"))==NULL)
{printf("不能打开!");
exit(0);}
while(!feof(fp))
{
fscanf(fp,"%d%s%f%f%f%f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2],&stu[i].score[3]);
fprintf(fp,"%d %s %.1f %.1f %.1f %.1f \n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3]);
i++;
}
}