C语言——学籍管理系统(二)

该课程设计只供大家参考,里面仍有许多小问题,希望使用者自己查看修改,谢谢 

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>


void create();//创建链表函数
void print();//输出链表函数
void dele();//删除链表节点函数
void open_file();//文件打开函数
void save_file();//文件保存函数
void modify();//信息修改函数
void search();//信息查询函数
void sort();//排序函数
void excheng(struct student *pStra,struct student *pMidd);//交换函数

struct grade
{
	int Chin;
	int Math;
	int Eng;
	int chem;
	int sum;
	float ave;
};
struct grade score;

struct student 
{
	char num[12];
	char name[13];
	char sex[3];
	int age;
	struct grade score;
	struct student *next;
};


int iCount=0;
struct student *pHead=NULL;





main()
{
    int select=-1;

	char ff1[3];
//	char ff2[3];
	printf("系统初始化,是否打开磁盘中保存的文件(是/否)\n请选择:");
	gets(ff1);
	if(strcmp(ff1,"是")==0)  {open_file();  printf("文件打开成功,按任意键继续"); getch();}
	else  {printf("文件没有打开,按任意键继续"); getch();}

	while(select!=0)
	{
  	system("cls"); 
    printf("==============欢迎使用高校学生成绩管理系统V5.0==============\n");
	printf("\t\t=======请选择功能列表=======\n");
    printf("\t\t\t1.录入学生信息(lv4)\n");
    printf("\t\t\t2.修改学生信息(lv4)\n");
    printf("\t\t\t3.删除学生信息(lv4)\n");
    printf("\t\t\t4.查询学生信息(lv4)\n");
    printf("\t\t\t5.打印学生信息(lv4)\n");
    printf("\t\t\t6.学生信息排序(lv4)\n");
	printf("\t\t\t7.(打      开)(lv4)\n");
	printf("\t\t\t8.(保      存)(lv4)\n");
    printf("\t\t\t0.退出管理系统(lv4)\n");

    printf("请选择:");
    scanf("%d",&select);
    switch(select)
    {
      case 1:
          create();
        break;
      case 2:
          modify();
        break;
      case 3:
          dele();
        break;
      case 4:
          search();
        break;
      case 5:
		  print();
        break;
	  case 6:
          sort();
        break;
      case 7:
          open_file();
        break;
	  case 8:
          save_file();
        break;
      case 0:break;
      default:
        break;
    }
  }	
 // printf("你将要退出该系统,如果数据没有保存将会丢失,是否重新保存(是\否)\n请选择:");
	//gets(ff2);
	//if(strcmp(ff2,"是")==0)  
	//{
		save_file();  
	//	printf("文件保存成功,按任意键继续"); getch();}
//	else  {printf("文件没有重复,按任意键继续"); getch();}
}




//创建链表函数
void create()
{   
	//页面优化
	system("cls");
	printf("\n\n\t\t\t\t===================1.信息录入系统==================="); 

	struct student *pEnd,*pNew;
	struct student *p;
    pEnd=pNew=(struct student *)malloc(sizeof(struct student));


	printf("\n\n\n\n请输入学生信息(退出学号输0):");

	//录入学号,学号不可以重复
    int flag1=1,flag2,n;                         //11
	int i,j,k;
	struct student *pTemp;
	printf("\n\n----------------录入第%d个人的信息----------------\n",iCount+1);
	printf("学号:");
    scanf("%s",pNew->num);
    while(flag1)
	{
		if(strcmp(pNew->num,"0")==0)  
		{
			flag1=1;
			break;
		}

		else
		{
			pTemp=pHead;
			n=iCount;
			flag2=1;

			while(n&&flag2)
			{
			   if(strcmp(pTemp->num,pNew->num)==0)  flag2=0;
	           pTemp=pTemp->next;
		       n=n-1;
			}	
			
			if(flag2==0) 
			{ 
				printf("请重新输入,学号%s存在!(退出请按0):\n",pNew->num);
				printf("学号:"); 
				scanf("%s",pNew->num); 
				flag1=1;
			}

			if(flag2==1) flag1=0;
		}
	}
	
	//录入其他信息,如果flag1=0,则表明要退出,那么其他信息不用再录
    if(flag1!=1)
	{	
		i=1;j=1;k=1;
		printf("姓名:");
	    scanf("%s",pNew->name);
 
		//性别只能输入男或女,否则是不规范的
		while(i)
		{
		  printf("性别:");
	      scanf("%s",pNew->sex);
		  if(strcmp(pNew->sex,"男")==0||strcmp(pNew->sex,"女")==0) i=0;
		  else printf("性别输入不规范,请核对后重输!\n");
		}
        
		//成绩输入在0-150以外或其他格式是不规范的
		while(j)
		{
		   printf("年龄:");
	       scanf("%d",&pNew->age);
		   if(pNew->age>=0&&pNew->age<=150) j=0;
		   else printf("年龄输入不规范,请核对后重输!\n");
		}

		printf("请输入成绩信息:\n");
		while(k)
		{
		   printf("语文:");
	       scanf("%d",&pNew->score.Chin);
		   if(pNew->score.Chin>=0&&pNew->score.Chin<=150) k=0;
		   else printf("语文成绩输入不规范,请核对后重输!\n");
		}

		i=1;j=1;k=1;
		while(i)
		{
		   printf("数学:");
	       scanf("%d",&pNew->score.Math);
		   if(pNew->score.Math>=0&&pNew->score.Math<=150) i=0;
		   else printf("数学成绩输入不规范,请核对后重输!\n");
		}

		while(j)
		{
		   printf("英语:");
	       scanf("%d",&pNew->score.Eng);
		   if(pNew->score.Eng>=0&&pNew->score.Eng<=150) j=0;
		   else printf("英语成绩输入不规范,请核对后重输!\n");
		}

		while(k)
		{
		   printf("化学:");
	       scanf("%d",&pNew->score.chem);
		   if(pNew->score.chem>=0&&pNew->score.chem<=150) k=0;
		   else printf("化学成绩输入不规范,请核对后重输!\n");
		}

		
        
		//平均成绩
		pNew->score.sum=pNew->score.Chin+pNew->score.Math+pNew->score.Eng+pNew->score.chem;
		pNew->score.ave=pNew->score.sum/4.0;

		  printf("\n你录入第%d个人的信息如下,按任意键继续!\n",iCount+1);
	      printf("学  号    姓  名   性 别   年 龄   语 文   数 学   英 语   化 学   总 分   平均成绩\n");
	      printf("%-10s%-10s%-8s%-8d%-8d%-8d%-8d%-8d%-8d%-8.2f\n",pNew->num,pNew->name,pNew->sex,pNew->age,pNew->score.Chin,pNew->score.Math,pNew->score.Eng,pNew->score.chem,pNew->score.sum,pNew->score.ave);
	      getch();


		
	}                                                     //11




	while(strcmp(pNew->num,"0")!=0)
	{
		iCount++;
		
	    if(pHead==NULL)
	//	{
			{
			 pNew->next=NULL;
			 pEnd=pNew;
			 pHead=pNew;
			}
		//}
	
		else
		{	
		 p=pHead; 
	
		while(p&&p->next!=NULL) p=p->next;
		{
	      p->next=pNew;
		  pNew->next=NULL;
		}
		}
      pNew=(struct student *)malloc(sizeof(struct student));


      printf("\n\n----------------录入第%d个人的信息----------------\n",iCount+1);
	  printf("学号:");                          //22
      scanf("%s",pNew->num);
      flag1=1;//每次循环结束flag1=1退出;flag1=0则继续,所以要值0
      while(flag1)
	  {
		if(strcmp(pNew->num,"0")==0)  
		{
			flag1=1;
			break;
		}

		else
		{
			pTemp=pHead;
			n=iCount;
			flag2=1;

			while(n&&flag2)
			{
			   if(strcmp(pTemp->num,pNew->num)==0)  flag2=0;
	           pTemp=pTemp->next;
		       n=n-1;
			}	
			
			if(flag2==0) 
			{ 
				printf("请重新输入,学号%s存在!(退出请按0):\n",pNew->num);
				printf("学号:"); 
				scanf("%s",pNew->num); 
				flag1=1;
			}

			if(flag2==1) flag1=0;
		}
	}
	
	//录入其他信息,如果flag1=0,则表明要退出,那么其他信息不用再录
    if(flag1!=1)
	{	
		i=1;j=1;k=1;
		printf("姓名:");
	    scanf("%s",pNew->name);
 
		//性别只能输入男或女,否则是不规范的
		while(i)
		{
		  printf("性别:");
	      scanf("%s",pNew->sex);
		  if(strcmp(pNew->sex,"男")==0||strcmp(pNew->sex,"女")==0) i=0;
		  else printf("性别输入规范,请核对后重输!\n");
		}
        
		//成绩输入在0-150以外或其他格式是不规范的
		while(j)
		{
		   printf("年龄:");
	       scanf("%d",&pNew->age);
		   if(pNew->age>=0&&pNew->age<=150) j=0;
		   else printf("年龄输入不规范,请核对后重输!\n");
		}

		printf("请输入成绩信息(输入数字):\n");
		while(k)
		{
		   printf("语文:");
	       scanf("%d",&pNew->score.Chin);
		   if(pNew->score.Chin>=0&&pNew->score.Chin<=150) k=0;
		   else printf("语文成绩输入不规范,请核对后重输!\n");
		}

		i=1;j=1;k=1;
		while(i)
		{
		   printf("数学:");
	       scanf("%d",&pNew->score.Math);
		   if(pNew->score.Math>=0&&pNew->score.Math<=150) i=0;
		   else printf("数学成绩输入不规范,请核对后重输!\n");
		}

		while(j)
		{
		   printf("英语:");
	       scanf("%d",&pNew->score.Eng);
		   if(pNew->score.Eng>=0&&pNew->score.Eng<=150) j=0;
		   else printf("英语成绩输入不规范,请核对后重输!\n");
		}

		while(k)
		{
		   printf("化学:");
	       scanf("%d",&pNew->score.chem);
		   if(pNew->score.chem>=0&&pNew->score.chem<=150) k=0;
		   else printf("化学成绩输入不规范,请核对后重输!\n");
		}

		  //平均成绩
		  pNew->score.sum=pNew->score.Chin+pNew->score.Math+pNew->score.Eng+pNew->score.chem;
		  pNew->score.ave=pNew->score.sum/4.0;

		  printf("\n你录入第%d个人的信息如下,按任意键继续!\n",iCount+1);
	      printf("学  号    姓  名   性 别   年 龄   语 文   数 学   英 语   化 学   总 分   平均成绩\n");
	      printf("%-10s%-10s%-8s%-8d%-8d%-8d%-8d%-8d%-8d%-8.2f\n",pNew->num,pNew->name,pNew->sex,pNew->age,pNew->score.Chin,pNew->score.Math,pNew->score.Eng,pNew->score.chem,pNew->score.sum,pNew->score.ave);
	      getch();

        
		
	}                                          //22
		
	}

	free(pNew);
	printf("\n信息录入结束,按任意键退出!");
	getch();
}





//输出链表函数
void print()
{
	//页面优化
	system("cls");
	printf("\n\n\t\t\t\t===================5.打印报表系统==================="); 

	struct student *pTemp;
	printf("\n\n\n\n-----------------本名单中共有%d个学生:-----------------\n\n",iCount);
	pTemp=pHead;

	//没录入信息输出信息提示
	if(iCount==0)  printf("暂无数据,按任意键退出!\n");

    else
	{
	   printf("学  号    姓  名   性 别   年 龄   语 文   数 学   英 语   化 学   总 分   平均成绩\n");
	   while(pTemp!=NULL)  
	   {
		printf("%-10s%-10s%-8s%-8d%-8d%-8d%-8d%-8d%-8d%-8.2f\n",pTemp->num,pTemp->name,pTemp->sex,pTemp->age,pTemp->score.Chin,pTemp->score.Math,pTemp->score.Eng,pTemp->score.chem,pTemp->score.sum,pTemp->score.ave);
		pTemp=pTemp->next;
	   }
	}

   if(iCount!=0)  printf("\n信息公示完毕,按任意键退出!");
   getch();
}




//信息查询函数
void search()
{
	//页面优化
	system("cls");
	printf("\n\n\t\t\t\t===================4.查询系统==================="); 

//    int result;
	int select=-1;
	while(select!=0)
	{
       printf("\n\t\t=======请选择功能列表=======\n");
       printf("\t\t\t1.按学号查询(lv4)\n");
       printf("\t\t\t2.按姓名查询(lv1)\n");
       printf("\t\t\t0.退出此页面(lv4)\n");
  
       printf("请选择:");
       scanf("%d",&select);
    
       
	   int flag=1,flag1=1;
	   char number[12];
	   char name[12];
	   struct student *pTemp=pHead;

	   //按学号查询
	   if(select==1)
	   {
	   printf("请输入你要查找的学号:");
	   scanf("%s",number);
	       while(pTemp!=NULL&&flag)
		   {
		     if(strcmp(pTemp->num,number)==0)
			 { 
				printf("%s找到了,具体信息如下\n",number);
				 printf("学  号    姓  名   性 别   年 龄   语 文   数 学   英 语   化 学   总 分   平均成绩\n");
				printf("%-10s%-10s%-8s%-8d%-8d%-8d%-8d%-8d%-8d%-8.2f\n",pTemp->num,pTemp->name,pTemp->sex,pTemp->age,pTemp->score.Chin,pTemp->score.Math,pTemp->score.Eng,pTemp->score.chem,pTemp->score.sum,pTemp->score.ave);
				flag=0; 
			 }
	         pTemp=pTemp->next;
		   }
	   if(flag==1)  printf("学号%s不存在!\n",number);
	   }

	   //按姓名查询
	   if(select==2)
	   {
	   printf("请输入你要查找的姓名:");
	   scanf("%s",name);
	       while(pTemp!=NULL&&flag)
		   {
		     if(strcmp(pTemp->name,name)==0) 
			 { 
				 printf("%s找到了,具体信息如下\n",name);   
				  printf("学  号    姓  名   性 别   年 龄   语 文   数 学   英 语   化 学   总 分   平均成绩\n");
				 printf("%-10s%-10s%-8s%-8d%-8d%-8d%-8d%-8d%-8d%-8.2f\n",pTemp->num,pTemp->name,pTemp->sex,pTemp->age,pTemp->score.Chin,pTemp->score.Math,pTemp->score.Eng,pTemp->score.chem,pTemp->score.sum,pTemp->score.ave);
				flag=0;  
			 }
	         pTemp=pTemp->next;
		   }
	   if(flag==1)  printf("姓名%s不存在!",name);
	   }

	//getch();
	}
}


//信息修改函数
void modify()
{
	//页面优化
	system("cls");
	printf("\n\n\t\t\t\t===================2.修改系统==================="); 

	int post;
	int flag=1,flag1;
	char number[12];
	struct student *pTemp=pHead,*pPre=pTemp
		;
	printf("\n请输入你要修改的学号:");
	scanf("%s",number);
	
	while(pTemp!=NULL&&flag)
	{

		if(strcmp(pTemp->num,number)==0) 
		{
			printf("将要删除的学号%s具体信息如下\n",number);
			 printf("学  号    姓  名   性 别   年 龄   语 文   数 学   英 语   化 学   总 分   平均成绩\n");
			printf("%-10s%-10s%-8s%-8d%-8d%-8d%-8d%-8d%-8d%-8.2f\n",pTemp->num,pTemp->name,pTemp->sex,pTemp->age,pTemp->score.Chin,pTemp->score.Math,pTemp->score.Eng,pTemp->score.chem,pTemp->score.sum,pTemp->score.ave);
			flag=0; 
		}
        pPre=pTemp;//保存pTemp
	    pTemp=pTemp->next;
	}
	if(flag==1)  printf("你要修改的学号%s不存在!",number);
	else 
	{
		printf("确认修改请按1,放弃请按任意数字键!\n请选择:");
		scanf("%d",&post);
		while(post==1)
		{
			printf("请选择你要修改的项目(1.姓名 2.性别 3.年龄 4.语文 5.数学 6.英语 7.化学 8.修改全部)\n");
			scanf("%d",&flag1);

           if(flag1==1)
		   {
			   printf("新姓名:");
			   scanf("%s",pPre->name);
			   printf("修改完成,按任意键退出!");
		   }

		   if(flag1==2)
		   {
			   printf("新性别:");
			   scanf("%s",pPre->sex);
			   printf("修改完成,按任意键退出!");
		   }

		   if(flag1==3)
		   {
			   printf("新年龄:");
			   scanf("%d",&pPre->age);
			   printf("修改完成,按任意键退出!");
		   }

		   if(flag1==4)
		   {
			   printf("新语文:");
			   scanf("%d",&pPre->score.Chin);
			   printf("修改完成,按任意键退出!");
		   }

		   if(flag1==5)
		   {
			   printf("新数学:");
			   scanf("%d",&pPre->score.Math);
			   printf("修改完成,按任意键退出!");
		   }

		   if(flag1==6)
		   {
			   printf("新英语:");
			   scanf("%d",&pPre->score.Eng);
			   printf("修改完成,按任意键退出!");
		   }

		   if(flag1==7)
		   {
			   printf("新化学:");
			   scanf("%d",&pPre->score.chem);
			   printf("修改完成,按任意键退出!");
		   }

		   if(flag1==8)
		   {
			   printf("新姓名:");
			   scanf("%s",pPre->name);

			   printf("新性别:");
			   scanf("%s",pPre->sex);

			   printf("新年龄:");
			   scanf("%d",&pPre->age);

			   printf("新语文:");
			   scanf("%d",&pPre->score.Chin);

			   printf("新数学:");
			   scanf("%d",&pPre->score.Math);

			    printf("新英语:");
			    scanf("%d",&pPre->score.Eng);

			   printf("新化学:");
			   scanf("%d",&pPre->score.chem);
			   printf("修改完成!");
		   }
           
         pPre->score.sum=pPre->score.Chin+pPre->score.Math+pPre->score.Eng+pPre->score.chem;
		 pPre->score.ave=pPre->score.sum/4.0;

		 printf("\n继续修改请按1,退出请按0\n请选择:");
		 scanf("%d",&post);
		 if(post==0)   break;
		}
	}

	getch();

}





//删除链表节点函数
void dele()
{
	//页面优化
	system("cls");
	printf("\n\n\t\t\t\t===================3.删除信息系统==================="); 

    if(iCount==0)  printf("\n\n暂无数据无法进行此操作,按任意键退出!\n");
	else
    {                                                              //33

	char number[12];
	int  i,flag=1;
	char option;
	struct student *pTemp;
	struct student *pPre;
	pTemp=pHead;

	int iIndex=0;
	printf("\n请输入要删除学生的学号\n");
    scanf("%s",number);

	while(pTemp!=NULL&&flag)
	{
		if(strcmp(pTemp->num,number)==0)
		{
			printf("\n%s找到了,具体信息如下\n",number);
			//显示将要删除人的信息
			 printf("学  号    姓  名   性 别   年 龄   语 文   数 学   英 语   化 学   总 分   平均成绩\n");
			printf("%-10s%-10s%-8s%-8d%-8d%-8d%-8d%-8d%-8d%-8.2f\n",pTemp->num,pTemp->name,pTemp->sex,pTemp->age,pTemp->score.Chin,pTemp->score.Math,pTemp->score.Eng,pTemp->score.chem,pTemp->score.sum,pTemp->score.ave);
			flag=0; 
			printf("确认删除请输1,否则按任意数字键退出\n");
			scanf("%d",&option);
		}


	    pTemp=pTemp->next;
		iIndex++;
	}
	if(flag==1)  {printf("学号%s不存在!",number);  return;}



       if(option==1)
	   {
	    pTemp=pHead;
    	pPre=pTemp;//可能多余
	    //printf("----------删除第%d个学生----------\n",iIndex);

	   if(iIndex!=1)
	   {
	       for(i=1;i<iIndex;i++)
		   {
		   pPre=pTemp;
		   pTemp=pTemp->next;
		   }

        	pPre->next=pTemp->next;

	   }


	  if(iIndex==1)	pHead=pTemp->next;
	  free(pTemp);
      iCount--;
	  printf("删除成功按任意键退出!");
	}
   else  printf("删除失败按任意键退出!");
	}                                                               //33
    
	
	getch();

}





//文件打开函数
void open_file()
{
	FILE *fp;
	printf("\n输入该班的数据;\n");
	fp=fopen("d:\\code\\test.txt","r");
	
	if(fp==NULL)
	{
		printf("不能打开此文件,按任意键退出!");
		getch();
		exit(1);
	}

   else
   {
	   fclose(fp);
	   fp=fopen("d:\\code\\test.txt","at+");
       printf("该班数据为:\n");
	    printf("学  号    姓  名   性 别   年 龄   语 文   数 学   英 语   化 学   总 分   平均成绩\n");
	
	   struct student *pNew,*pEnd;
	   pEnd=pNew=(struct student *)malloc(sizeof(struct student));
             
	   
	   while(fscanf(fp,"%s     %s     %s     %d     %d     %d     %d     %d     %d     %f\n",pNew->num,pNew->name,pNew->sex,&pNew->age,&pNew->score.Chin,&pNew->score.Math,&pNew->score.Eng,&pNew->score.chem,&pNew->score.sum,&pNew->score.ave)!=EOF)
	   {
		   if(iCount==0)
		   {
		     pNew->next=NULL;
			 pEnd=pNew;
			 pHead=pNew;
	         printf("%-10s%-10s%-8s%-8d%-8d%-8d%-8d%-8d%-8d%-8.2f\n",pNew->num,pNew->name,pNew->sex,pNew->age,pNew->score.Chin,pNew->score.Math,pNew->score.Eng,pNew->score.chem,pNew->score.sum,pNew->score.ave);
			
		   }

		   else
		   {
			pNew->next=NULL;
			pEnd->next=pNew;
			pEnd=pNew;
			printf("%-10s%-10s%-8s%-8d%-8d%-8d%-8d%-8d%-8d%-8.2f\n",pNew->num,pNew->name,pNew->sex,pNew->age,pNew->score.Chin,pNew->score.Math,pNew->score.Eng,pNew->score.chem,pNew->score.sum,pNew->score.ave);
			
		   }

	         iCount++;
			 pNew=(struct student *)malloc(sizeof(struct student));
	   }

	   free(pNew);
   
   }


  fclose(fp);
  getch();

}





//文件保存函数
void save_file()
{
	FILE *fp;
	fp=fopen("d:\\code\\test.txt","w");
	
	if(fp==NULL)
	{
		printf("不能打开此文件,按任意键退出!");
		getch();
		exit(1);
	}

   else
   {
	   fclose(fp);
	   fp=fopen("d:\\code\\test.txt","w");
             
	   struct student *pTemp;
       pTemp=pHead;

       while(pTemp!=NULL)
	   {
		 fprintf(fp,"%-10s%-10s%-8s%-8d%-8d%-8d%-8d%-8d%-8d%-8.2f\n",pTemp->num,pTemp->name,pTemp->sex,pTemp->age,pTemp->score.Chin,pTemp->score.Math,pTemp->score.Eng,pTemp->score.chem,pTemp->score.sum,pTemp->score.ave);
	  	 pTemp=pTemp->next;
	   }
   }

  fclose(fp);
  printf("数据保存成功,按任意键退出!");
  getch();

}



//交换函数
void excheng(struct student *pStra,struct student *pMidd)
{
	int t;
	struct student *pTemp;
	pTemp=(struct student *)malloc(sizeof(struct student));

	strcpy(pTemp->num,pStra->num);
	strcpy(pStra->num,pMidd->num);
    strcpy(pMidd->num,pTemp->num);

	strcpy(pTemp->name,pStra->name);
    strcpy(pStra->name,pMidd->name);
	strcpy(pMidd->name,pTemp->name);

	strcpy(pTemp->sex,pStra->sex);
    strcpy(pStra->sex,pMidd->sex);
	strcpy(pMidd->sex,pTemp->sex);

	t=pMidd->age;
	pMidd->age=pStra->age;
	pStra->age=t;

	t=pMidd->score.Chin;
	pMidd->score.Chin=pStra->score.Chin;
	pStra->score.Chin=t;

	t=pMidd->score.Math;
	pMidd->score.Math=pStra->score.Math;
	pStra->score.Math=t;

	t=pMidd->score.Eng;
	pMidd->score.Eng=pStra->score.Eng;
	pStra->score.Eng=t;

	t=pMidd->score.chem;
	pMidd->score.chem=pStra->score.chem;
	pStra->score.chem=t;

	t=pMidd->score.ave;
	pMidd->score.ave=pStra->score.ave;
	pStra->score.ave=t;

	free(pTemp);

	
}


//排序函数
void sort()
{
	
	//页面优化
	system("cls");
	printf("\n\n\t\t\t\t===================4.排序系统==================="); 

    int i,j;
	struct student *pStra,*pMidd;

	int result;
	int select=-1;
	while(select!=0)
	{
       printf("\n\t\t=======请选择功能列表=======\n");
       printf("\t\t\t1.按学号升序排序(lv4)\n");
       printf("\t\t\t2.按姓名升序排序(lv1)\n");
       //printf("\t\t\t3.按成绩升序排序(lv1)\n\n");
	   printf("\t\t\t4.按学号降序排序(lv4)\n");
       printf("\t\t\t5.按姓名降序排序(lv1)\n");
       //printf("\t\t\t6.按成绩降序排序(lv1)\n");
       printf("\t\t\t0.退出此页面(lv4)\n");
  
       printf("请选择:");
       scanf("%d",&select);


	switch(select)
	  {
      case 1:
		  result=1;  
        break;
      case 2:
		  result=2;
        break;
      case 3:
          result=3;
        break;
	  case 4:
		  result=4;  
        break;
      case 5:
          result=5;
        break;
      case 6:
          result=6;
        break;
	  default :result=0;
		break;
	}

	


	
	if(iCount!=0&&result!=0)
	{                                      //1222222

	pStra=pHead;
	pMidd=pStra->next;
	
	        if(result==1) printf("你的选择是按学号升序排序\n");
			else if(result==2)  printf("你的选择是按姓名升序排序\n");
			//else if(result==3)  printf("你的选择是按成绩升序排序\n");
		    else if(result==4)  printf("你的选择是按学号降序排序\n");
			else if(result==5)  printf("你的选择是按姓名降序排序\n");
			//else if(result==6)  printf("你的选择是按成绩降序排序\n");
  
     for(i=0;i<iCount;i++)
	 {
		pStra=pHead;
	    pMidd=pStra->next;

		  for(j=0;j<iCount-i-1&&pMidd!=NULL;j++)
		  {
			  if(result==1)  {if(strcmp(pStra->num,pMidd->num)>0)           excheng(pStra,pMidd);}
			  else if(result==2)  {if(strcmp(pStra->name,pMidd->name)>0)    excheng(pStra,pMidd);}
			  //else if(result==3)  {if(pStra->score.sum>pMidd->score.sum)    excheng(pStra,pMidd);}
			  else if(result==4)  {if(strcmp(pStra->num,pMidd->num)<0)      excheng(pStra,pMidd);}
			  else if(result==5)  {if(strcmp(pStra->name,pMidd->name)<0)    excheng(pStra,pMidd);}
			  //else if(result==6)  {if(pStra->score.sum<pMidd->score.sum)    excheng(pStra,pMidd);}
			pStra=pMidd;
			pMidd=pMidd->next;
		  }                               
	 }

 printf("\n排序成功,按任意键退出!");
 
  
 }

else printf("排序失败按任意键继续!");
	break;
	}
	getch();
}

发布了30 篇原创文章 · 获赞 47 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_44040023/article/details/103284156
今日推荐