📄 成绩查询系统2.txt
字号:
case 3:printf("你要修改1.英语成绩\t2.数学成绩\t3.计算机成绩");
printf("请选择:");
scanf("%d",&x);
if(x==1) {printf("输入正确的英语成绩:");
scanf("%f",&fen);
p1->english=fen;
}
else if(x==2) {printf("输入正确的数学成绩:");
scanf("%f",&fen);
p1->math=fen;
}
else if(x==3) {printf("输入正确的计算机成绩:");
scanf("%f",&fen);
p1->computer=fen;
}
}
p1->sum=p1->english+p1->math+p1->computer;
p1->average=p1->sum/3;
}
else printf("%s不存在此学生!\n",na);
printf("输入要查询的学生的学号,");
scanf("%s",na);
}
printf("已经退出了!\n");
}
else if(i==0) printf("推出!\n");
return(head);
}
void taxi(files *head) /*定义排序函数。此函数带回一个指向链表头的指针*/
{files *p,*max;
int i,j,x;
long a;
float fen,num;
char na[20];
if(head==NULL) printf("\n没有任何学生资料,请先建立链表!\n"); /*链表为空*/
max=p=head;
for(i=0;i<80;i++)
printf("=");
printf("1.按英语成绩升序排序\t2.按数学成绩升序排序\t3.按计算机升序成绩排序\n");
printf("4.按英语成绩降序排序\t5.按数学成绩降序排序\t6.按计算机降序成绩排序\n");
for(i=0;i<80;i++)
printf("=");
printf("请选择操作:");
scanf("%d",&x);/*选择操作*/
switch(x)
{case 1 :for(i=1;i<n;i++)
{for(j=i+1;j<=n;j++)
{max=p;
p=p->next;
if(max->english>p->english) /*按英语成绩升序排序*/
{num=max->number;
max->number=p->number;
p->number=num; /*交换前后结点中的学号值,使得学号大者移到后面的结点中*/
strcpy(na,max->name);
strcpy(max->name,p->name);
strcpy(p->name,na); /*交换前后结点中的姓名,使之与学号相匹配*/
fen=max->english;
max->english=p->english;
p->english=fen; /*交换前后结点中的英语成绩,使之与学号相匹配*/
fen=max->math;
max->math=p->math;
p->math=fen; /*交换前后结点中的数学成绩,使之与学号相匹配*/
fen=max->computer;
max->computer=p->computer;
p->computer=fen; /*交换前后结点中的计算机成绩,使之与学号相匹配*/
fen=max->computer;
max->computer=p->computer;
p->computer=fen; /*交换前后结点中的总成绩,使之与学号相匹配*/
fen=max->sum;
max->sum=p->sum;
p->sum=fen; /*交换前后结点中的平均成绩,使之与学号相匹配*/
a=max->rank;
max->rank=p->rank;
p->rank=a; /*交换前后结点中的名次,使之与学号相匹配*/
}
}
max=head;
p=head;/*重新使max,p指向链表头*/
}
break;
case 2 :for(i=1;i<n;i++)
{for(j=i+1;j<=n;j++)
{max=p;
p=p->next;
if(max->math>p->math) /*按数学成绩升序排序*/
{num=max->number;
max->number=p->number;
p->number=num;
strcpy(na,max->name);
strcpy(max->name,p->name);
strcpy(p->name,na);
fen=max->english;
max->english=p->english;
p->english=fen;
fen=max->math;
max->math=p->math;
p->math=fen;
fen=max->computer;
max->computer=p->computer;
p->computer=fen;
fen=max->computer;
max->computer=p->computer;
p->computer=fen;
fen=max->sum;
max->sum=p->sum;
p->sum=fen;
a=max->rank;
max->rank=p->rank;
p->rank=a;
}
}
p=head;
max=head;
}
break;
case 3 :for(i=1;i<n;i++)
{for(j=i+1;j<=n;j++)
{max=p;
p=p->next;
if(max->computer>p->computer) /*按计算机成绩升序排序*/
{num=max->number;
max->number=p->number;
p->number=num;
strcpy(na,max->name);
strcpy(max->name,p->name);
strcpy(p->name,na);
fen=max->english;
max->english=p->english;
p->english=fen;
fen=max->math;
max->math=p->math;
p->math=fen;
fen=max->computer;
max->computer=p->computer;
p->computer=fen;
fen=max->computer;
max->computer=p->computer;
p->computer=fen;
fen=max->sum;
max->sum=p->sum;
p->sum=fen;
a=max->rank;
max->rank=p->rank;
p->rank=a;
}
}
p=head;
max=head;
}
break;
case 4:for(i=1;i<n;i++)
{for(j=i+1;j<=n;j++)
{max=p;
p=p->next;
if(max->english<p->english) /*按英语成绩降序排序*/
{num=max->number;
max->number=p->number;
p->number=num;
strcpy(na,max->name);
strcpy(max->name,p->name);
strcpy(p->name,na);
fen=max->english;
max->english=p->english;
p->english=fen;
fen=max->math;
max->math=p->math;
p->math=fen;
fen=max->computer;
max->computer=p->computer;
p->computer=fen;
fen=max->computer;
max->computer=p->computer;
p->computer=fen;
fen=max->sum;
max->sum=p->sum;
p->sum=fen;
a=max->rank;
max->rank=p->rank;
p->rank=a;
}
}
p=head;
max=head;
}
break;
case 5:for(i=1;i<n;i++)
{for(j=i+1;j<=n;j++)
{max=p;
p=p->next;
if(max->math<p->math) /*按数学成绩降序排序*/
{num=max->number;
max->number=p->number;
p->number=num;
strcpy(na,max->name);
strcpy(max->name,p->name);
strcpy(p->name,na);
fen=max->english;
max->english=p->english;
p->english=fen;
fen=max->math;
max->math=p->math;
p->math=fen;
fen=max->computer;
max->computer=p->computer;
p->computer=fen;
fen=max->computer;
max->computer=p->computer;
p->computer=fen;
fen=max->sum;
max->sum=p->sum;
p->sum=fen;
a=max->rank;
max->rank=p->rank;
p->rank=a;
}
}
p=head;
max=head;
}
break;
case 6:for(i=1;i<n;i++)
{for(j=i+1;j<=n;j++)
{max=p;
p=p->next;
if(max->computer<p->computer) /*按计算机成绩降序排序*/
{num=max->number;
max->number=p->number;
p->number=num;
strcpy(na,max->name);
strcpy(max->name,p->name);
strcpy(p->name,na);
fen=max->english;
max->english=p->english;
p->english=fen;
fen=max->math;
max->math=p->math;
p->math=fen;
fen=max->computer;
max->computer=p->computer;
p->computer=fen;
fen=max->computer;
max->computer=p->computer;
p->computer=fen;
fen=max->sum;
max->sum=p->sum;
p->sum=fen;
a=max->rank;
max->rank=p->rank;
p->rank=a;
}
}
p=head;
max=head;
}
break;
}
print(head);
}
void stat(files *head) /*定义统计函数*/
{files *p1;
int b=0,i;
long a;
float f1,f2;
p1=head;
printf("选择你要统计的课程:1.英语\t2.数学\t3.计算机\n");
scanf("%d",&a);
if(a==1) {printf("输入你要统计的分数段的起,止分数:");
scanf("%f%f",&f1,&f2);
for(i=0;i<n;i++)
{if(p1->english>f1&&p1->english<f2) b++;
if(p1->next!=NULL) p1=p1->next;
}
printf("英语成绩在%f~%f之间的人数为%d",f1,f2,b);
}
else if(a==2) {printf("输入你要统计的分数段的起,止分数:");
scanf("%f%F",&f1,&f2);
for(i=0;i<n;i++)
{if(p1->math>f1&&p1->math<f2) b++;
if(p1->next!=NULL) p1=p1->next;
}
printf("数学成绩在%f~%f之间的人数为%d",f1,f2,b);
}
else if(a==2) {printf("输入你要统计的分数段的起,止分数:");
scanf("%f%f",&f1,&f2);
for(i=0;i<n;i++)
{if(p1->computer>f1&&p1->computer<f2) b++;
if(p1->next!=NULL) p1=p1->next;
}
printf("计算机成绩在%f~%f之间的人数为%d",f1,f2,b);
}
else printf("输入错误!");
}
void save(files *head) /*函数save功能:保存学生的资料*/
{FILE *fp;
files *p1,*max;
float fen,num;
char na[20];
int i,j;
long a=1;
for(i=1;i<n;i++)
{for(j=i+1;j<=n;j++)
{p1=head;
max=p1;
p1=p1->next;
if(max->sum<p1->sum)
{num=max->number;
max->number=p1->number;
p1->number=num;
strcpy(na,max->name);
strcpy(max->name,p1->name);
strcpy(p1->name,na);
fen=max->english;
max->english=p1->english;
p1->english=fen;
fen=max->math;
max->math=p1->math;
p1->math=fen;
fen=max->computer;
max->computer=p1->computer;
p1->computer=fen;
fen=max->computer;
max->computer=p1->computer;
p1->computer=fen;
fen=max->sum;
max->sum=p1->sum;
p1->sum=fen;
}
}
}
p1=head;
while(p1!=NULL)
{p1->rank=a++;
p1=p1->next; /*下移一个结点*/
}
if((fp=fopen("stu.txt","w"))==NULL) printf("不能打开文件!\n");
while(p1!=NULL)
{fprintf(fp,"%f%s%f%f%f%f%f%ld",p1->number,p1->name,p1->english,p1->math,p1->computer,p1->sum,p1->average,p1->rank);
p1=p1->next; /*下移一个结点*/
}
fclose(fp);
printf("文件已经保存!\n");
}
main()
{files *head=0,*stu=0;
int i,a;
while(1)
{
printf("\t\t\t\t学生成绩管理系统\n 学号:3106005748 姓名:蓝天然 \n please give high mark\n");
for(i=0;i<80;i++)
printf("=");
printf("\n");
for(i=0;i<80;i++)
printf("=");
printf("1.信息创建\t\t\t2.信息维护\t\t\t3.信息查询\n");
printf("4.信息统计\t\t\t5.信息排序\t\t\t0.退出系统\n");
printf("请选择你要进行的操作:");
scanf("%d",&k);
if(k==1){head=create();save(head);getchar();}
else if(k==2){system("cls");
printf("你可进行的操作:1.增加学生信息\t\t2.删除学生信息\t\t3.修改学生信息\t\t4.显示所有信息\n");
printf("请选择你进行的操作:");
scanf("%d",&a);
head=load(head);
switch(a)
{case 1:head=add(head,stu);save(head);break;
case 2:head=del(head);save(head);break;
case 3:head=correct(head);save(head);break;
case 4:print(head);break;
default:printf("错误选择\n");
}
}
else if(k==3){system("cls");search(head);}
else if(k==4){system("cls");stat(head);}
else if(k==5){system("cls");taxi(head);}
else if(k==0){exit(0);}
else printf("输入错误,请重试\n");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -