编程序时遇到这个问题,求大神解答,小白一个。代码:
#include"stdio.h"
#include
#include
#include"process.h"
#include"ctype.h"
typedef struct
{
char num[10];
char name[10];
int physics;
int math;
int english;
int chemistry;
int art;
double aver;
}Student;
Student stu[99];
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);
printf("输入物理、数学、英语、化学、美术分数:");
scanf("%d%d%d%d",&stu[n+i].physics,&stu[n+i].math,&stu[n+i].english,&stu[n+i].chemistry,&stu[n+i].art);
a=1.0*(stu[n+i].chinese+stu[n+i].math+stu[n+i].english+&stu[n+i].chemistry+&stu[n+i].art)/5;
stu[n+i].aver=a;
gets(x);
printf("继续输入?(Y/N):\n");
scanf("%c",&sign);
i++;
}
return(n+i);
}
void xianshi(Student stud[],int n)
{
int i ;
printf("----------------------------------------------------------\n");
printf("学号 姓名 物理 数学 英语 化学 美术 平均成绩 \n");
printf("----------------------------------------------------------\n");
for(i=0;i<n;i++)
{
printf("%-10s%-10s%-10d%-10d%-10d%-10d%-10.2lf\n",stu[i].num,stu[i].name,stu[i].physics,stu[i].math,stu[i].english,stu[i].chemistry,stu[i].art,stu[i].aver);
}
}
void chaxun_xingming(Student stud[],int n)
{ char s[20];
int i=0;
printf("输入姓名:");
scanf("%s",s);
while(strcmp(stu[i].name,s)!=0&&i<n) i++;
if(i==n)
{printf("not find!\n");
return; }
printf("他的姓名、学号是:%s %s\n",stu[i].name,stu[i].num);
printf("物理 数学 英语 化学 美术 平均成绩是:%d,%d,%d,%d,%d,%lf\n",stu[i].physics,stu[i].math,stu[i].english,stu[i].chemistry,stu[i].art,stu[i].aver);
}
void chaxun_pinjun(Student stud[],int n)
{ double s;
int i=0;
printf("输入平均成绩:");
scanf("%lf",&s);
while(stu[i].aver!=s && i<n) i++;
if(i==n)
{ printf("not find!\n");
return;
}
printf("他的学号是:%s\n",stu[i].num);
printf("他的姓名是:%s\n",stu[i].name);
printf("他的物理、数学、英语、化学、美术分数是:%d %d %d %d %d \n",stu[i].physics,stu[i].math,stu[i].english,stu[i].chemistry,stu[i].art);
}
void paixu_xuehao(Student stud[],int n)
{ int i,j,p,q,r,w,z;
double y;
char x[20],t[10];
for(i=0;i
for(j=0;j
if(strcmp(stud[j].num,stud[j+1].num)>0)
{ strcpy(t,stud[j].num);
strcpy(stud[j].num,stud[j+1].num);
strcpy(stud[j+1].num,t);
strcpy(x,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].physics;stu[j].physics=stu[j+1].physics;stu[j+1].physics=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].chemistry;stu[j].chemistry=stu[j+1].chemistry;stu[j+1]chemistry=w;
z=stu[j].art;stu[j].art=stu[j+1].art;stu[j+1].art=z;
}
return;
}
void paixu_pingjun(Student stud[],int n)
{ int i,j,p,q,r,w,z;
double y;
char x[20],t[10];
for(i=0;i
for(j=0;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].physics;stu[j].physics=stu[j+1].physics;stu[j+1].physics=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].chemistry;stu[j].chemistry=stu[j+1].chemistry;stu[j+1]chemistry=w;
z=stu[j].art;stu[j].art=stu[j+1].art;stu[j+1].art=z;
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_physics(Student stud[],int n)
{ int i,j,p,q,r,w,z;
double y;
char x[20],t[10];
for(i=0;i
for(j=0;j
if(stu[j].physics>stu[j+1].physics)
{
y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;
p=stu[j].physics;stu[j].physics=stu[j+1].physics;stu[j+1].physics=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].chemistry;stu[j].chemistry=stu[j+1].chemistry;stu[j+1]chemistry=w;
z=stu[j].art;stu[j].art=stu[j+1].art;stu[j+1].art=z;
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)
{ int i,j,p,q,r,w,z;
double y;
char x[20],t[10];
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(stu[j].english>stu[j+1].english)
{
y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;
p=stu[j].physics;stu[j].physics=stu[j+1].physics;stu[j+1].physics=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].chemistry;stu[j].chemistry=stu[j+1].chemistry;stu[j+1]chemistry=w;
z=stu[j].art;stu[j].art=stu[j+1].art;stu[j+1].art=z;
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_math(Student stud[],int n)
{ int i,j,p,q,r,w;
double y;
char x[20],t[10];
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(stu[j].math>stu[j+1].math)
{
y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;
p=stu[j].physics;stu[j].physics=stu[j+1].physics;stu[j+1].physics=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].chemistry;stu[j].chemistry=stu[j+1].chemistry;stu[j+1]chemistry=w;
z=stu[j].art;stu[j].art=stu[j+1].art;stu[j+1].art=z;
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_chemistry(Student stud[],int n)
{ int i,j,p,q,r,w,z;
double y;
char x[20],t[10];
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(stu[j].chemistry>stu[j+1].chemistry)
{
y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;
p=stu[j].physics;stu[j].physics=stu[j+1].physics;stu[j+1].physics=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].chemistry;stu[j].chemistry=stu[j+1].chemistry;stu[j+1]chemistry=w;
z=stu[j].art;stu[j].art=stu[j+1].art;stu[j+1].art=z;
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);
}
void paixu_art(Student stud[],int n)
{ int i,j,p,q,r,w,z;
double y;
char x[20],t[10];
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(stu[j].art>stu[j+1].art)
{
y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;
p=stu[j].physics;stu[j].physics=stu[j+1].physics;stu[j+1].physics=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].chemistry;stu[j].chemistry=stu[j+1].chemistry;stu[j+1]chemistry=w;
z=stu[j].art;stu[j].art=stu[j+1].art;stu[j+1].art=z;
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;
}
int wenjian2(Student stud[],int n)
{ int i=0,num;
FILE *fp;
char filename[20];
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<num)
{
fscanf(fp,"%s %s %d %d %d %d %d %lf\n",stu[n+i].num,stu[n+i].name,&stu[n+i].physics,&stu[n+i].math,&stu[n+i].english,&stu[n+i].chemistry,&stu[n+i].art,&stu[n+i].aver);
i++;
}
n+=num;
fclose(fp);
printf("\t\t\tSuccessed!\n");
printf("\t\t\t");
system("pause");
return(n);
}
void wenjian1(Student stud[],int n)
{
int i=0;
FILE *fp;
char filename[20];
printf("Input the filename:");
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL)
{
printf("cann't open the file\n");
return;
}
fprintf(fp,"%d\n",n);
while(i<n)
{
fprintf(fp,"%s %s %d %d %d %d %lf\n",stu[i].num,stu[i].name,stu[i].physics,stu[i].math,stu[i].english,stu[i].chemistry,stu[i].art,stu[i].aver);
i++;
}
fclose(fp);
printf("Successed!\n");
}
int menu()
{
int c;
do{
printf("\t\t****学生信息管理系统菜单****\n");
printf("\t\t 1. 编辑 \n");
printf("\t\t 2. 显示 \n");
printf("\t\t 3. 排序\n");
printf("\t\t 4. 文件 \n");
printf("\t\t 0. 退出 \n");
printf("************************************************************\n");
printf("\t\t\t请选择(0-6):");
scanf("%d",&c);
}while(c4);
return(c-0);
}
int bianji()
{
printf("\t\t 1. 录入\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\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 7 .按平均成绩\n");
printf("\t\t按其它数字键退出\n");
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(;;)
{
switch(menu())
{
case 1: switch(bianji())
{
case 1:n=shuru(stu,n);xianshi(stu,n); break;
} break;
case 2:xianshi(stu,n);break;
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 ;
case 2:paixu_physics(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_chemistry(stu ,n);xianshi(stu,n); break;
case 6:paixu_art(stu ,n);xianshi(stu,n); break;
} break;
case 5:
switch(wenjian())
{
case 1:n=wenjian2(stu,n);break;
case 2:wenjian1(stu ,n);break;
} break;
case 0:
exit(0);
}
}
}
}