|
3鱼币
在网上借鉴了一个学生成绩管理系统的源代码,可运行的时间在排序成绩那一块 总有问题,就是进去无论选哪种排序方式它都会返回主菜单,求大神 帮看程序问题出哪了{:1_1:}{:1_1:}- #include<stdio.h>
- #include<string.h>
- #include<windows.h>
- #include<conio.h>
- void homepage(); //主界面
- void input(); //录入 插入
- void display(); //显示全部成绩
- void del(); //删除记录
- void sort(); //排序
- void waiting(); //等待界面
- void quit(); //退出界面
- struct student
- {
- int num;
- char name[15];
- float score[3];
- float avg;
- };
- int count=0; //当前学生个数
- int sort_type=0; //当前排序类型
- struct student stu[10];
- void main()
- {
- int i,k=0;
- char username[15],pwd[6];
- system("color 3d");
- printf("\n\n");
- printf(" \t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
- printf(" \t┃**********************************************************┃\n");
- printf(" \t┃***┏━━━━━━━━━━━━━━━━━━━━━━━━┓***┃\n");
- printf(" \t┃***┃************************************************┃***┃\n");
- printf(" \t┃***┃*** ****┃***┃\n");
- printf(" \t┃***┃*** *^__^*欢迎使用班级成绩管理系统*^__^* ****┃***┃\n");
- printf(" \t┃***┃*** ****┃***┃\n");
- printf(" \t┃***┃*** O(∩_∩)O江西师范大学O(∩_∩)O ****┃***┃\n");
- printf(" \t┃***┃*** ****┃***┃\n");
- printf(" \t┃***┃*** 软件工程 李新 ****┃***┃\n");
- printf(" \t┃***┃*** ****┃***┃\n");
- printf(" \t┃***┃*** 2013.12.31 ****┃***┃\n");
- printf(" \t┃***┃*** ****┃***┃\n");
- printf(" \t┃***┃************************************************┃***┃\n");
- printf(" \t┃***┗━━━━━━━━━━━━━━━━━━━━━━━━┛***┃\n");
- printf(" \t┃**********************************************************┃\n");
- printf(" \t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
-
- for(i=0;i<3;i++)
- {
- printf("\n请输入管理员账号:");
- gets(username);
- printf("\n请输入6位密码:");
- gets(pwd);
- if((strcmp(username,"lixin")==0)&&(strcmp(pwd,"123456")==0))
- {
- printf("\n您已经成功登录\n");
- k=1;
- for(i=0;i<20;i++)
- {
- printf(".");
- Sleep(100);
- }
- system("cls");
- homepage();
- break;
- }
- else
- printf("\n用户名或密码无效 请重新输入:\n");
- continue;
- }
- if(k==0)
- printf("\n连续输入错误3次 将退出程序\n");
- Sleep(2000);
- quit();
- }
- void homepage()
- {
- char n;
- printf("\n\n");
- printf("\t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
- printf("\t┃************************************************************┃\n");
- printf("\t┃* * *┃\n");
- printf("\t┃* 1.录入成绩 * 2.显示成绩 *┃\n");
- printf("\t┃* * *┃\n");
- printf("\t┃************************************************************┃\n");
- printf("\t┃* * *┃\n");
- printf("\t┃* 3.删除记录 * 4.排序成绩 *┃\n");
- printf("\t┃* * *┃\n");
- printf("\t┃************************************************************┃\n");
- printf("\t┃* *┃\n");
- printf("\t┃* 0.退出程序 *┃\n");
- printf("\t┃* *┃\n");
- printf("\t┃************************************************************┃\n");
- printf("\t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
- while ((n!='1')&&(n!='2')&&(n!='3')&&(n!='4')&&(n!='0'))
- {
- printf("\n请选择:");
- fflush(stdin);
- scanf("%c",&n);
- switch(n)
- {
- case '1':
- input();
- break;
- case '2':
- if(count<10)
- display();
- else
- {
- printf("记录数已满\n");
- Sleep(2000);
- system("cls");
- homepage();
- }
- break;
- case '3':
- del();
- break;
- case '4':
- sort();
- case '0':
- quit();
- break;
- default:
- printf("\n选项错误\n");
- }
- }
- }
- void display()
- {
- int i;
- char c;
- system("cls");
- switch(sort_type)
- {
- case 0:
- printf("\t\t未排序:\n\n");
- break;
- case 1:
- printf("\t\t按学号排序:\n\n");
- break;
- case 2:
- printf("\t\t按c语言成绩排序:\n\n");
- break;
- case 3:
- printf("\t\t按数学成绩排序:\n\n");
- break;
- case 4:
- printf("\t\t按英语成绩排序:\n\n");
- break;
- case 5:
- printf("\t\t按平均成绩排序:\n\n");
- break;
- }
- printf("\t学号\t姓名\tc语言\t数学\t英语\t平均成绩\n");
- for(i=0;i<count;i++)
- {
- printf("\t%d\t%s\t%5.2f\t%5.2f\t%5.2f\t%5.2f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].avg);
- }
- printf("\n\n按任意键返回\n");
- c=getch();
- system("cls");
- homepage();
- }
- void input()
- {
- int i,numcheck;
- char c;
- system ("cls");
- do
- {
- printf("学号:\n");
- scanf("%d",&stu[count].num);
- numcheck=1;
- if(stu[count].num<0)
- printf("请输入正整数:\n");
- for(i=0;i<count;i++)
- {
- if(stu[count].num==stu[i].num)
- {
- numcheck=0;
- printf("学号重复,重新输入:\n");
- }
- }
- }while(!numcheck);
- printf("姓名:\n");
- fflush(stdin);
- gets(stu[count].name);
- for(i=0;i<3;i++)
- {
- printf("第%d门课成绩:\n",i+1);
- scanf("%f",&stu[count].score[i]);
- }
- stu[count].avg=(stu[count].score[0]+stu[count].score[1]+stu[count].score[2])/3;
- printf("是否继续输入(y/n):\n");
- do
- {
- c=getchar();
- if(c=='y'||c=='Y')
- {
- count++;
- if(count<10)
- input();
- else
- {
- printf("记录数已满\n");
- Sleep(2000);
- system("cls");
- homepage();
- }
- }
- else if(c=='n'||c=='N')
- {
- count++;
- system("cls");
- homepage();
- }
- else;
- }while((c!='y')&&(c!='n')&&(c!='Y')&&(c!='N'));
- }
- void del()
- {
- int i,j,del_num,match=0;
- char c;
- system("cls");
- printf("请输入要删除的学生学号:\n");
- scanf("%d",&del_num);
- waiting();
- for(i=0;i<count;i++)
- {
- if(stu[i].num==del_num)
- {
- match=1;
- for(j=i;j<count;j++)
- /* {
- stu[j].num=stu[j+1].num;
- strcpy(stu[j].name,stu[j+1].name);
- stu[j].score[0]=stu[j+1].score[0];
- stu[j].score[1]=stu[j+1].score[1];
- stu[j].score[2]=stu[j+1].score[2];
- stu[j].avg=stu[j+1].avg;
- }*/
- stu[j]=stu[j+1];
- }
- }
- if(!match)
- printf("没有要找的学号.\n");
- printf("是否继续删除?(y/n)");
- fflush(stdin);
- do
- {
- c=getchar();
- if(c=='y'||c=='Y')
- {
- count--;
- del();
- }
- else if(c=='n'||c=='N')
- {
- count--;
- system("cls");
- homepage();
- }
- else;
- }while((c!='y')&&(c!='n'));
- }
- void sort()
- {
- int i,j;
- int choice;
- struct student temp;
- system("cls");
- printf("\t\t请选择排序功能:\n");
- printf("\t1.按学号排序\n");
- printf("\t2.按c语言成绩排序\n");
- printf("\t3.按数学成绩排序\n");
- printf("\t4.按英语成绩排序\n");
- printf("\t5.按平均成绩排序\n");
- do
- {
- scanf("%d",&choice);
- }while((choice!=1)&&(choice!=2)&&(choice!=3)&&(choice!=4)&&(choice!=5));
- switch(choice)
- {
- case 1:
- {
- for(i=0;i<count-1;i++)
- {
- for(j=0;j<count-i-1;j++)
- {
- if(stu[j].num>stu[j+1].num)
- {
- temp=stu[j];
- stu[j]=stu[j+1];
- stu[j+1]=temp;
- }
- }
- }
- sort_type=1;
- break;
- }
- case 2:
- {
- for(i=0;i<count-1;i++)
- {
- for(j=0;j<count-i-1;j++)
- {
- if(stu[j].score[0]<stu[j+1].score[0])
- {
- temp=stu[j];
- stu[j]=stu[j+1];
- stu[j+1]=temp;
- }
- }
- }
- sort_type=2;
- break;
- }
- case 3:
- {
- for(i=0;i<count-1;i++)
- {
- for(j=0;j<count-i-1;j++)
- {
- if(stu[j].score[1]<stu[j+1].score[1])
- {
- temp=stu[j];
- stu[j]=stu[j+1];
- stu[j+1]=temp;
- }
- }
- }
- sort_type=3;
- break;
- }
- case 4:
- {
- for(i=0;i<count-1;i++)
- {
- for(j=0;j<count-i-1;j++)
- {
- if(stu[j].score[2]<stu[j+1].score[2])
- {
- temp=stu[j];
- stu[j]=stu[j+1];
- stu[j+1]=temp;
- }
- }
- }
- sort_type=4;
- break;
- }
- case 5:
- {
- for(i=0;i<count-1;i++)
- {
- for(j=0;j<count-i-1;j++)
- {
- if(stu[j].avg<stu[j+1].avg)
- {
- temp=stu[j];
- stu[j]=stu[j+1];
- stu[j+1]=temp;
- }
- }
- }
- sort_type=5;
- break;
- }
- }
- system("cls");
- waiting();
- homepage();
- }
- void waiting()
- {
- int i;
- printf("\n\t请稍侯...........");
- for(i=0;i<25;i++)
- {
- switch(i%4)
- {
- case 1:printf("\b\");break;
- case 2:printf("\b-");break;
- case 3:printf("\b/");break;
- case 0:printf("\b|");break;
- }
- Sleep(100);
- }
- system("cls");
- }
- void quit()
- {
- system("cls");
- printf("\n\n");
- printf("\t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
- printf("\t┃************************************************************┃\n");
- printf("\t┃* *┃\n");
- printf("\t┃* *^__^* 谢谢使用班级成绩管理系统 *^__^* *┃\n");
- printf("\t┃* *┃\n");
- printf("\t┃* *^__^* 开心每一天 *^__^* *┃\n");
- printf("\t┃* *┃\n");
- printf("\t┃* 江西师范大学 *┃\n");
- printf("\t┃* 软件工程软件技术四班 李新 *┃\n");
- printf("\t┃************************************************************┃\n");
- printf("\t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n\n");
-
- }
复制代码
|
最佳答案
查看完整内容
排序完不显示结果,回到主菜单之后选择2显示成绩,就会看到排序后的结果。。。
PS:想排序完直接显示结果,可以自己在排序完调用display。。。。
|