前言
这篇文章主要讲述C语言代码实现教务系统的学生信息管理。
一、代码
#include<string.h>
#include<stdio.h>
int main()
{
char f;
printf("下面将对n个学生m门成绩进行操作");
FILE *fp;
fp=fopen("d:\\text.txt","w+");
struct people
{ char a[100];
char b[100];
int c[100];
int sum;
double ave;
};
struct people A[1000],temp;
int n,m,count=0,i,j,a,k;
char e[1000]={"0"};
printf("请输入学生数n,课程数m\n");
scanf("%d%d",&n,&m);
for(i=0;i<1000;i++)
{
A[i].sum=0;
A[i].ave=0;
}
printf("请输入这n个学生的信息,顺序为:学号、姓名(英文)、m门成绩\n");
for(i=0;i<n;i++)
{
scanf("%s%s",&A[i].a,&A[i].b);
for(j=0;j<m;j++)
{
scanf("%d",&A[i].c[j]);
A[i].sum=A[i].sum+A[i].c[j];
}
A[i].ave=A[i].sum/m;
}
printf("请根据以下菜单选择您想要执行的操作(选项2和5会追加显示总分和平均分,且文件中追加保留总分和平均分)");
printf("\n");
printf("Management for Students's score(学生成绩管理)");
printf("\n");
printf("1.Append record(追加学生信息)");
printf("\n");
printf("2.List record(列出全部学生信息)");
printf("\n");
printf("3.Delete record(删除某学生信息)");
printf("\n");
printf("4.Modify record(修改某学生信息");
printf("\n");
printf("5.search record(搜索某学生信息)");
printf("\n");
printf("6.Sort in descending order by sum(以总分降序排序)");
printf("\n");
printf("7.Sort in ascending order by sum(以总分升序排序)");
printf("\n");
printf("8.Sort in descending order by num(以学号降序排序)");
printf("\n");
printf("9.Sort in ascending order by num(以学号升序排序)");
printf("\n");
scanf("%d",&a);
switch (a)
{
case 1:printf("请输入想要追加的学生信息,顺序为:学号、姓名(英文)、m门成绩\n");
scanf("%s%s",&A[n].a,&A[n].b);
for(j=0;j<m;j++)
{
scanf("%d",&A[n].c[j]);
A[n].sum=A[n].sum+A[n].c[j];
}
A[n].ave=A[n].sum/m;
for(i=0;i<n+1;i++)
{fprintf(fp,"%s %s ",A[i].a,A[i].b);
for(j=0;j<m;j++)
fprintf(fp,"%d ",A[i].c[j]);
fprintf(fp,"%d %.0lf \n",A[i].sum,A[i].ave);}
fclose(fp);
return 0;
case 2: for(i=0;i<n;i++)
{ printf("%s %s ",A[i].a,A[i].b);
for(j=0;j<m;j++)
printf("%d ",A[i].c[j]);
printf("%d %.0lf \n",A[i].sum,A[i].ave);
}
break;
case 3: printf("请输入想要删除的学生学号\n");
scanf("%s",e);
for(i=0;i<n;i++)
{if(strcmp(A[i].a,e)==0);
k=i;
break;
}
for(i=0;i<k;i++)
{ fprintf(fp,"%s %s ",A[i].a,A[i].b);
for(j=0;j<m;j++)
fprintf(fp,"%d ",A[i].c[j]);
fprintf(fp,"%d %.0lf \n",A[i].sum,A[i].ave);}
for(i=k+1;i<n;i++)
{ fprintf(fp,"%s %s ",A[i].a,A[i].b);
for(j=0;j<m;j++)
fprintf(fp,"%d ",A[i].c[j]);
fprintf(fp,"%d %.0lf \n",A[i].sum,A[i].ave);}
fclose(fp);
return 0;
case 4: printf("请输入需要更改的学生学号\n");
scanf("%s",e);
for(i=0;i<n;i++)
{ if(strcmp(A[i].a,e)==0);
k=i;
break;}
printf("请输入更改后的学生信息,顺序为:学号、姓名(英文)、m门成绩\n");
scanf("%s%s",&temp.a,&temp.b);
for(j=0;j<m;j++)
{
scanf("%d",&temp.c[j]);
temp.sum=temp.sum+temp.c[j]; }
temp.ave=temp.sum/m;
A[k]=temp; break;
case 5:printf("请输入想要搜索学生的学号 \n");
scanf("%s",e);
for(i=0;i<n;i++)
{ if(strcmp(A[i].a,e)==0);
k=i;
break;}
printf("%s %s ",A[k].a,A[k].b);
for(j=0;j<m;j++)
printf("%d ",A[k].c[j]);
printf("%d %.0lf ",A[k].sum,A[k].ave); break;
case 6:for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
{if (A[j].sum<A[j+1].sum)
{ temp=A[j];
A[j]=A[j+1];
A[j+1]=temp;
}
}
break;
case 7 :for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
{
if (A[j].sum>A[j+1].sum )
{ temp=A[j];
A[j]=A[j+1];
A[j+1]=temp;
}
} break;
case 8: for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
{
if (strcmp(A[j].a,A[j+1].a)<0 )
{ temp=A[j];
A[j]=A[j+1];
A[j+1]=temp;
}
} break;
case 9 : for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
{
if (strcmp(A[j].a,A[j+1].a)>0 )
{ temp=A[j];
A[j]=A[j+1];
A[j+1]=temp;
}
} break;
}
for(i=0;i<n;i++)
{fprintf(fp,"%s %s ",A[i].a,A[i].b);
for(j=0;j<m;j++)
fprintf(fp,"%d ",A[i].c[j]);
fprintf(fp,"%d %.0lf \n",A[i].sum,A[i].ave);}
fclose(fp);
return 0;
}
总结
代码运行成功,就完成了对于学生信息管理系统的编写。