⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kaohe.cpp

📁 用链表做的学生成绩管理程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:

  system("cls");

  return (phead);
}

//--------------高数排名---------------
void range1(struct Student *phead)
{   
	
	int i;
    int j;
	int n1=0;
    struct Student *pnew[34];
    struct Student*p;
    struct Student*temp;

    p=phead;

    for(i=0; i<34; i++)
	{ 
	   if(p != NULL)
	   {
	      pnew[i]=p;
	      p=p->next;
	      n1++;
	   }
	}	   

   for(i=0; i<n1-1; i++)
   {
	   for(j=i+1; j<n1; j++)
	   {
		   if(pnew[j]->math < pnew[i]->math)
		   {   
			   temp=pnew[j];
			   pnew[j]=pnew[i];
			   pnew[i]=temp;
		   }
	   }
   } 

   printf("高数成绩排名如下:\n\n");
   printf("\n排名   姓名        高数成绩\n\n");

   for(i=0; i<n1; i++)
   {
       printf(" %d   %s        %4d\n", i+1, pnew[i]->name, pnew[i]->math);	   
   }
}
 
//---------------英语排名------------
void range2(struct Student *phead)
{   
	int i;
    int j;
	int n1=0;
    struct Student *pnew[34];
    struct Student*p;
    struct Student*temp;

    p=phead;

    for(i=0; i<34; i++)
	{ 
	   if(p != NULL)
	   {
	      pnew[i]=p;
	      p=p->next;
	      n1++;
	   }
	}	   

   for(i=0; i<n1-1; i++)
   {
	   for(j=i+1; j<n1; j++)
	   {
		   if(pnew[j]->English < pnew[i]->English)
		   {   
			   temp=pnew[j];
			   pnew[j]=pnew[i];
			   pnew[i]=temp;
		   }
	   }
   }

   printf("英语成绩排名如下:\n\n");
   printf("\n排名      姓名         英语成绩\n\n");

   for(i=0; i<n1; i++)
   {
       printf(" %d     %s       %5d\n", i+1, pnew[i]->name, pnew[i]->English);
   }
}
 
//=============C语言排名
void range3(struct Student *phead)
{   
	int i;
    int j;
	int n1=0;
    struct Student *pnew[34];
    struct Student*p;
    struct Student*temp;

    p=phead;

    for(i=0; i<34; i++)
	{ 
	   if(p != NULL)
	   {
	      pnew[i]=p;
	      p=p->next;
	      n1++;
	   }
	}	   

    for(i=0; i<n1-1; i++)
    {
	   for(j=i+1; j<n1; j++)
	   {
		   if(pnew[j]->c < pnew[i]->c)
		   {   
			   temp=pnew[j];
			   pnew[j]=pnew[i];
			   pnew[i]=temp;
		   }
	   }
	} 

   printf("c成绩排名如下:\n\n");
   printf("\n排名     姓名          c成绩\n\n");
   for(i=0; i<n1; i++)
   {
       printf(" %d     %s      %5d\n", i+1, pnew[i]->name, pnew[i]->c);	   
   }
}

//---------------线代排名------------------
void range4(struct Student *phead)
{   
	int i;
    int j;
	int n1=0;
    struct Student *pnew[34];
    struct Student*p;
    struct Student*temp;

  p=phead;

  for(i=0; i<34; i++)
  {
	if(p != NULL)
	{
	   pnew[i]=p;
	   p=p->next;
	   n1++;
	}
  } 	   

   for(i=0; i<n1-1; i++)
   {
	   for(j=i+1; j<n1; j++)
	   {
		   if(pnew[j]->xiandai < pnew[i]->xiandai)
		   {   
			   temp=pnew[j];
			   pnew[j]=pnew[i];
			   pnew[i]=temp;
		   }
	   }
   }

   printf("线代成绩排名如下:\n\n");
   printf("\n排名    a 姓名        线代成绩\n\n");
   for(i=0; i<n1; i++)
   {
       printf(" %d   %s      %3d\n", i+1, pnew[i]->name, pnew[i]->xiandai);	  
   }
}

//--------------------物理排名------------
void range5(struct Student *phead)
{   
    int i;
    int j;
	int n1=0;
    struct Student *pnew[34];
    struct Student*p;
    struct Student*temp;

    p=phead;

    for(i=0; i<34; i++)
	{ 
	   if(p != NULL)
	   {
	      pnew[i]=p;
	      p=p->next;
	      n1++;
	   }
	}	   

    for(i=0; i<n1-1; i++)
    {
	   for(j=i+1; j<n1; j++)
	   {
		   if(pnew[j]->physics < pnew[i]->physics)
		   {   
			   temp=pnew[j];
			   pnew[j]=pnew[i];
			   pnew[i]=temp;
		   }
	   }
	} 

   printf("物理成绩排名如下:\n\n");
   printf("\n排名    姓名         物理成绩\n\n");
   for(i=0; i<n1; i++)
   {
       printf(" %d   %s      %5d\n", i+1, pnew[i]->name, pnew[i]->physics);	  
   }
}

//-----------------查找学生信息------------------------
struct Student *find(struct Student *phead)
{
	int m;
	char stu[30];
	struct Student *p1;
    struct Student *p2;

	if(phead == NULL)
	{
		printf("此表为空...\n\n");
		return (phead);
	}

    printf("请输入您要查找人的姓名:\n");
	scanf("%s", stu);

	p1=phead;
	while( (m=strcmp(stu,p1->name) )!=0  &&  p1->next!=NULL)
	{
		p2=p1;
		p1=p1->next;
	}
	 
    if( (m=strcmp(stu,p1->name) ) == 0)
	{
		printf("\n                    \n");
		printf("姓名:  %s\n", p1->name);
	    printf("高数:  %d\n", p1->math);
	    printf("英语:  %d\n", p1->English);
    	printf("C语言: %d\n", p1->c);
	    printf("线代:  %d\n", p1->xiandai);
	    printf("物理:  %d\n", p1->physics);
	}
	else printf("没有您要查找的人的信息: \n\n");

	return (phead);
}

//----------------------超过两科不及格的学生名单---------------
struct Student *unget(struct Student *phead)
{	
	int n1=0;
    int n2=0;
	int n3=0;
	int n4=0;
	int n5=0;
	int n6=0;
    struct Student *p;

	p=phead;

    if(phead == NULL)
	{
		printf("此表为空...\n\n");
		return (phead);
	}

    printf("\n超过两科不及格的学生名单及其不及格的科目如下:\n\n");

    if(phead != NULL)
	{    
	   while(p != NULL)
	   {

		if(p->math < 60)
		{
			n1=1;
		}

		if(p->English < 60)
		{
			n2=1;
		}
        
		if(p->c < 60)
		{
			n3=1;
		}
  
        if(p->xiandai < 60)
		{
			n4=1;
		}

        if(p->physics  < 60)
		{
			n5=1;
		}

		n6=n1+n2+n3+n4+n5;

		if( n6 >= 2)
		{	
		    printf("%s", p->name );
			if(n1>0)
				printf("   高数 %d ", p->math );
			if(n2>0)
				printf("   英语 %d ", p->English );
		    if(n3>0)
				printf("   C语言 %d ", p->c );
		    if(n4>0)
				printf("   线代 %d ", p->xiandai );
		    if(n5>0)
				printf("   物理 %d ", p->physics );
		 
			printf("\n");		       		  
		} 

        n1=0, n2=0, n3=0, n4=0, n5=0, n6=0;
		p=p->next; 
	   }       
	} 
        
	return (phead);
} 
  
//---------------------修改学生信息----------------------
struct Student *modify(struct Student *phead)
{
	 
    int m;	
	int j;
    int i=1;
	char stu[30];
	struct Student *p1;
    struct Student *p2;

	if(phead == NULL)
	{
		printf("此表为空...\n");
		return (phead);
	}

    printf("请输入你要查找人的姓名:\n");
	scanf("%s", stu);

	p1=phead;

	while((m=strcmp(stu,p1->name))!=0  &&  p1->next!=NULL)
	{
		 p2=p1;
		p1=p1->next;
	}
	
	if( ( m=strcmp(stu,p1->name) ) == 0)
	{
		printf("\n                    \n");
		printf("姓名:  %s\n", p1->name);
	    printf("高数:  %d\n", p1->math);
	    printf("英语:  %d\n", p1->English);
        printf("c语言: %d\n", p1->c);
        printf("线代:  %d\n", p1->xiandai);
        printf("物理:  %d\n", p1->physics);
	}
	else 
	{
		printf("没有您想找的人的信息:\n\n");
	    return (phead);
	}
    printf("\n\n");
    while(i)
	{
		printf(" 1.修改姓名       \n");
		printf(" 2.修改高数成绩   \n");
		printf(" 3.修改英语成绩   \n");
        printf(" 4.修改C语言成绩  \n");
		printf(" 5.修改线代成绩   \n");
		printf(" 6.修改物理成绩   \n");
	    printf(" 7.退出           \n");
   
		scanf("%d", &j);
        getchar();
        switch(j)
		{
        case 1:
		    printf("请输入修改后的姓名:\n");
		    gets(stu);
		    strcpy(p1->name, stu);
			break;

        case 2:
            printf("请输入修改后的高数成绩:\n");
		    scanf("%d", &p1->math);

		    while(p1->math<0 && p1->English>100) 
			{
               printf("输入错误,请重新输入:\n");
               getchar();
               scanf("%d", &p1->math);		  
			}

	        break;

        case 3:
            printf("请输入修改后的英语成绩:\n");
			scanf("%d", &p1->English);

          	while(p1->English<0 && p1->English>100) 
			{ 
		       printf("输入错误,请重新输入:\n");
               getchar();
               scanf("%d", &p1->English);	   
			}

	        break;

        case 4:
            printf("请输入修改后的C语言成绩:\n");
			scanf("%d", &p1->English);

          	while(p1->c<0 && p1->c>100) 
			{ 
		       printf("输入错误,请重新输入:\n");
               getchar();
               scanf("%d", &p1->c);	   
			}

            break;

        case 5:
            printf("请输入修改后的线代成绩:\n");
			scanf("%d", &p1->xiandai);

          	while(p1->xiandai<0 && p1->xiandai>100) 
			{ 
		       printf("输入错误,请重新输入:\n");
               getchar();
               scanf("%d", &p1->xiandai);	   
			}

            break;

        case 6:
            printf("请输入修改后的物理成绩:\n");
			scanf("%d", &p1->physics);

          	while(p1->physics<0 && p1->physics>100) 
			{ 
		       printf("输入错误,请重新输入:\n");
               getchar();
               scanf("%d", &p1->physics);	   
			}

            break;

        case 7:  
			    i=0;
				break;
		        return (phead);

	    default:
		        printf("输入错误,请重新输入\n\n");
		        break; 
		}

	printf("修改后的信息是:\n\n");
	printf("姓名             高数       英语       C语言       线代        物理  \n");
	printf("                                                                     \n");	   	   
	printf("%-15s%4d%10d%12d%12d%12d\n", p1->name, p1->math, p1->English, p1->c, p1->xiandai,p1->physics);		 	 

	}

	return (phead);     
}

void save(struct Student *phead)
{
	char file[15];
	struct Student *p;
	FILE *fp;
	int i;
	p=phead;
	printf("请输入要保存的文件名:");
	scanf("%s",file);
	if((fp=fopen("file","w+"))==NULL)
	{
		printf("cannot open file\n");
		return;
	}
	while(p!=NULL)
	{
		i=0;
		fwrite(p,sizeof(struct Student),1,fp);     		
		p=p->next;
		i++;
	}
	fclose(fp);
}

void read(struct Student *phead)
{
	char file[15];
	FILE *fp;
	struct Student *p1,*p2; 	
	printf("请输入您要打开的文件名:");
	scanf("%s",file);
	while((fp=fopen("file","r+"))==NULL)
	{
		printf("\n文件不存在!\n请重新输入:");
		scanf("%s",file);
	}

	fp=fopen("file","r+");	
	p1=(struct Student *)malloc(sizeof(struct Student));
	fread(p1,sizeof(struct Student),1,fp);
	phead=p1;
	    printf("姓名             高数       英语       C语言       线代        物理  \n");
	    printf("                                                                     \n");
	   	printf("%-15s%4d%10d%12d%12d%12d\n", p1->name, p1->math, p1->English, p1->c, p1->xiandai,p1->physics);
	while(p1->next!=NULL)
	{
		p2=p1;				
		p1=(struct Student *)malloc(sizeof(struct Student));
		fread(p1,sizeof(struct Student),1,fp);

	    
	    printf("                                                                     \n");
	   	printf("%-15s%4d%10d%12d%12d%12d\n", p1->name, p1->math, p1->English, p1->c, p1->xiandai,p1->physics);
				   
       //p1=p1->next;
		p2->next=p1;
	}
	fclose(fp);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -