1、附录程序
#include"stdio.h"
#include
2、 int shuru(Student stud[],int n)/*输入若干条统计*/ { int i=0; char sign,x[10]; double a=0.0; while(sign!='n'&&sign!='N') { printf("输入学生学号:"); scanf("%s",stu[n+i].num); printf("输入学生姓名:"); scanf("%s",stu[n+i].name);
3、 printf("输入学生语文、数学、英语、电路分数:"); scanf("%d%d%d%d",&stu[n+i].chinese,&stu[n+i].math,&stu[n+i].english,&stu[n+i].dianlu); a=1.0*(stu[n+i].chinese+stu[n+i].math+stu[n+i].english+stu[n+i].dianlu)/4; stu[n+i].aver=a; gets(x); /*清除多出输入*/ printf("是否继续输入?(Y/N):\n"); scanf("%c",&sign); i++
4、 } return(n+i); } void xianshi(Student stud[],int n) /*显示全部统计*/ { int i ; printf("----------------------------------------------------------\n"); /*格式头*/ printf("学号 姓名 语文 数学 英语 电路 平均成绩 \n"); printf("---------------------------------------------
5、\n");
for(i=0;i 6、int i=0,choice=1;
char x[10];
while(choice!=0)
{ printf("请输入您要修改学生学号:\n");
scanf("%s",x);
for(i=0;;i++)
{
if(strcmp(stu[i].num,x)==0) break;
}
printf("请选择您要修改内容:\n");
printf(" ---------------------- \n");
printf("| 姓名 请 7、按 1 |\n");
printf("| 语文 请按 2 |\n");
printf("| 数学分数 请按 3 |\n");
printf("| 英语分数 请按 4 |\n");
printf("| 电路 请按 5 |\n");
printf("| 退出 请按 0|\n");
printf("+----------------------+\n");
printf("请输入您选择:");
s 8、canf("%d", &choice);
switch(choice)
{
case 0:break;
case 1:
printf("请输入新姓名:");
scanf("%s", stu[i].name);
break;
case 2: 9、
printf("请输入新语文分数:");
scanf("%d", &stu[i].chinese);
break;
case 3:
printf("请输入新数学分数:");
scanf("%d",&stu[i].math);
break;
case 4:
printf(" 10、请输入新英语分数:");
scanf("%d", &stu[i].english);
break;
case 5:
printf("请输入新电路分数:");
scanf("%d", &stu[i].dianlu);
break;
11、 default:
printf("\n无效选项!");
break;
} break;
}
return;
}
int shanchu(Student stud[],int n) /*按姓名查找,删除一条统计*/
{ char s[20];
int i;
int j;
i=0;
printf("输入要删除统计姓名 12、");
scanf("%s",s);
while(strcmp(stu[i].name,s)!=0&&i 13、chinese=stu[j+1].chinese;
stu[j].math=stu[j+1].math;
stu[j].english=stu[j+1].english;
stu[j].dianlu=stu[j+1].dianlu;
stu[j].aver=stu[j+1].aver;
}
printf("Delete Successed!\n");
return(n-1);
}
void chaxun_xingming(Student stud[],int n) /*按姓名查找并显示一个统计*/
{ char s[20]; 14、
int i=0;
printf("输入姓名:");
scanf("%s",s);
while(strcmp(stu[i].name,s)!=0&&i 15、i].math,stu[i].english,stu[i].dianlu,stu[i].aver);
}
void chaxun_pingjun(Student stud[],int n) /*按平均成绩查找并显示一个统计*/
{ double s;
int i=0;
printf("输入平均成绩:");
scanf("%lf",&s);
while(stu[i].aver!=s && i 16、 printf("not find!\n"); /*输入失败信息*/
return;
}
printf("她学号是:%s\n",stu[i].num); /*输出该学生信息*/
printf("她姓名是:%s\n",stu[i].name);
printf("她语文、数学、英语、电路分数是:%d %d %d %d \n",stu[i].chinese,stu[i].math,stu[i].english,stu[i].dianlu);
}
void pai 17、xu_xuehao(Student stud[],int n) /*按学号排序*/
{ int i,j,p,q,r,w;
double y;
char x[20],t[10];
for(i=0;i 18、stud[j].name);
strcpy(stud[j].name,stud[j+1].name);
strcpy(stud[j+1].name,x);
y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;
p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p;
q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;
r=stu[j].english; 19、stu[j].english=stu[j+1].english;stu[j+1].english=r;
w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w;
}
return;
}
void paixu_pingjun(Student stud[],int n) /*按平均成绩排序*/
{ int i,j,p,q,r,w;
double y;
char x[20],t[10];
for(i=0;i 20、j++)
if(stu[j].aver>stu[j+1].aver)
{ y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;
p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p;
q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;
r=stu[j].english;stu[j].english=stu[j+1].englis 21、h;stu[j+1].english=r;
w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w;
strcpy(x,stu[j].name);
strcpy(stu[j].name,stu[j+1].name);
strcpy(stu[j+1].name,x);
strcpy(t,stu[j].num);
strcpy(stu[j].num,stu[j+1].num);
strcpy(stu[j+1].num 22、t);
}
return;
}
void paixu_chinese(Student stud[],int n) /*按语文成绩排序*/
{ int i,j,p,q,r,w;
double y;
char x[20],t[10];
for(i=0;i 23、aver;stu[j+1].aver=y;
p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p;
q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;
r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r;
w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dian 24、lu=w;
strcpy(x,stu[j].name);
strcpy(stu[j].name,stu[j+1].name);
strcpy(stu[j+1].name,x);
strcpy(t,stu[j].num);
strcpy(stu[j].num,stu[j+1].num);
strcpy(stu[j+1].num,t);
}
return;
}
void paixu_english(Student stud[],int n) /*按英语成绩排 25、序*/
{ int i,j,p,q,r,w;
double y;
char x[20],t[10];
for(i=0;i 26、1].chinese=p;
q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;
r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r;
w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w;
strcpy(x,stu[j].name);
strcpy(stu[j].name,stu[j+1].name);
27、 strcpy(stu[j+1].name,x);
strcpy(t,stu[j].num);
strcpy(stu[j].num,stu[j+1].num);
strcpy(stu[j+1].num,t);
}
return;
}
void paixu_math(Student stud[],int n) /*按数学成绩排序*/
{ int i,j,p,q,r,w;
double y;
char x[20],t[10];
for(i=0;i 28、序*/
for(j=0;j 29、lish;stu[j].english=stu[j+1].english;stu[j+1].english=r;
w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w;
strcpy(x,stu[j].name);
strcpy(stu[j].name,stu[j+1].name);
strcpy(stu[j+1].name,x);
strcpy(t,stu[j].num);
strcpy(stu[j].num,stu[j+ 30、1].num);
strcpy(stu[j+1].num,t);
}
return;
}
void paixu_dianlu(Student stud[],int n) /*按电路成绩排序*/
{ int i,j,p,q,r,w;
double y;
char x[20],t[10];
for(i=0;i 31、stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;
p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p;
q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;
r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r;
w=stu[j].dianlu;stu[j].dian 32、lu=stu[j+1].dianlu;stu[j+1].dianlu=w;
strcpy(x,stu[j].name);
strcpy(stu[j].name,stu[j+1].name);
strcpy(stu[j+1].name,x);
strcpy(t,stu[j].num);
strcpy(stu[j].num,stu[j+1].num);
strcpy(stu[j+1].num,t);
}
return;
}
void tongji(S 33、tudent stud[],int n)//按分数段统计人数
{ int i,j,a,max,min,k,l,q,p,w;
k=0,l=0,p=0,q=0,w=0;
printf("你想统计哪科成绩: 1语文 2数学 3英语 4电路 5平均 \n");
scanf("%d",&j);
printf("input 2 score:\n");
scanf("%d%d",&max,&min);
if(max 34、
if(j==1)
{
for(i=0;i<99;i++)
{
if(stu[i].chinese>min&&stu[i].chinese 35、else if(j==3)
{
for(i=0;i<99;i++)
{
if(stu[i].english>min&&stu[i].english 36、w);
}
else if(j==5)
{
for(i=0;i<99;i++)
{
if(stu[i].aver>min&&stu[i].aver 37、
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename); /*输入文件名*/
if((fp=fopen(filename,"rb"))==NULL) /*打开文件*/
{ printf("\t\t\tcann't open the file\n"); /*打开失败信息*/
printf("\t\t\t");
system("pause");
return(n);
}
fscanf(fp,"%d",&num); /*读入总统计量*/
while(i 38、
fscanf(fp,"%s %s %d %d %d %d %lf\n",stu[n+i].num,stu[n+i].name,&stu[n+i].chinese,&stu[n+i].math,&stu[n+i].english,&stu[n+i].dianlu,&stu[n+i].aver);
i++;
}
n+=num;
fclose(fp); /*关闭文件*/
printf("\t\t\tSuccessed!\n");
printf("\t\t\t");
system("pause");
return(n);
}
void wenjian1(Stude 39、nt stud[],int n) /*将全部统计写入文件*/
{
int i=0;
FILE *fp; /*定义文件指针*/
char filename[20]; /*定义文件名*/
printf("Input the filename:");/*输入文件名*/
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL) /*打开文件*/
{
40、 printf("cann't open the file\n");
return;
}
fprintf(fp,"%d\n",n); /*循环写入数据*/
while(i 41、lose(fp); /*关闭文件*/
printf("Successed!\n"); /*返回成功信息*/
}
int menu() /*菜单函数*/
{
int c;
do{
printf("\t\t****学生信息管理系统菜单****\n");
printf("\t\t 1. 编辑 \n");
printf("\t\t 2. 显示 \n");
print 42、f("\t\t 3. 查询 \n");
printf("\t\t 4. 排序\n");
printf("\t\t 5. 统计\n");
printf("\t\t 6. 文件 \n");
printf("\t\t 0. 退出 \n");
printf("************************************************************\n");
printf("\t\t\t请选择(0-6):");
scanf("%d",&c);
}while(c<0||c>6);
43、return(c-0); /*返回选择*/
}
int bianji()
{
printf("\t\t 1. 录入\n");
printf("\t\t 2 .修改\n");
printf("\t\t 3. 删除 \n");
printf("\t\t 按其它数字键退出 \n");
int i;
scanf("%d",&i);
return i;
}
int chaxun()
{
printf("\t\t 1. 按姓名查询\n");
printf("\t\t 2 .按平均成绩查询\n");
printf("\t\ 44、t 按其它数字键退出\n");
int i;
scanf("%d",&i);
return i;
}
int paixu()
{
printf("\t\t 1. 按学号\n");
printf("\t\t 2 .按语文成绩\n");
printf("\t\t 3 .按数学成绩\n");
printf("\t\t 4 .按英语成绩\n");
printf("\t\t 5 .按电路成绩\n");
printf("\t\t 6 .按平均成绩\n");
printf("\t\t按其它数字键退出\n") 45、
int i;
scanf("%d",&i);
return i;
}
int wenjian()
{
printf("\t\t 1. 从文件中读入数据\n");
printf("\t\t 2 .将全部统计写入文件\n");
printf("\t\t 按其它数字键退出 \n");
int i;
scanf("%d",&i);
return i;
}
void main() /*主函数*/
{
int n=0;
for(;;)
{
for(;;)
{ 46、
switch(menu())
{
case 1: switch(bianji())
{
case 1:n=shuru(stu,n);xianshi(stu,n); break;
case 2:xiugai(stu ,n);xianshi(stu,n); break;
case 3:shanchu(stu ,n);xianshi(stu,n); break;
} break;
case 2:xianshi(stu,n);break;
47、
case 3:
switch(chaxun())
{
case 1:chaxun_xingming(stu,n);break;
case 2:chaxun_pingjun(stu ,n);break;
} break;
case 4: switch(paixu())
{
case 1:paixu_xuehao(stu,n);xianshi(stu,n); break ;
48、 case 2:paixu_chinese(stu ,n);xianshi(stu,n);break;
case 3:paixu_math(stu ,n);xianshi(stu,n); break;
case 4:paixu_english(stu ,n);xianshi(stu,n); break;
case 5:paixu_dianlu(stu ,n);xianshi(stu,n); break;
case 6:paixu_pingjun(stu ,n);xianshi(stu,n); break;
49、 } break;
case 5:tongji(stu,n);break;
case 6:
switch(wenjian())
{
case 1:n=wenjian2(stu,n);break;
case 2:wenjian1(stu ,n);break;
} break;
case 0:
exit(0); /*结束程序*/
}
}
}
}






