在网上借鉴了一个学生成绩管理系统的源代码,可运行的时间在排序成绩那一块 总有问题,就是进去无论选哪种排序方式它都会返回主菜单,求大神 帮看程序问题出哪了{: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");
}
|