C语言学习日志3--学生信息管理系统

前言

这篇文章主要讲述C语言代码实现教务系统的学生信息管理。

一、代码

#include<string.h>
#include<stdio.h>
int main()
{
	char f;
	printf("下面将对n个学生m门成绩进行操作"); 
	 FILE *fp;
	 fp=fopen("d:\\text.txt","w+");
	 struct people
 	{  char a[100];
 	   char b[100];
 	   int  c[100];
 	   int  sum;
 	   double ave;	
 	};
	 struct people A[1000],temp;
	 int n,m,count=0,i,j,a,k;
	 char e[1000]={"0"};
     printf("请输入学生数n,课程数m\n");
	 scanf("%d%d",&n,&m);
	 for(i=0;i<1000;i++)
    {
 	 A[i].sum=0;	
 	 A[i].ave=0;	
 	}	
	 printf("请输入这n个学生的信息,顺序为:学号、姓名(英文)、m门成绩\n");
	 for(i=0;i<n;i++)
	 {
 		scanf("%s%s",&A[i].a,&A[i].b);
 		for(j=0;j<m;j++)
 		{
		 scanf("%d",&A[i].c[j]);
		 A[i].sum=A[i].sum+A[i].c[j];	
	    }
	     A[i].ave=A[i].sum/m;		
 	  }
 	  printf("请根据以下菜单选择您想要执行的操作(选项2和5会追加显示总分和平均分,且文件中追加保留总分和平均分)");
 	  printf("\n");
 	  printf("Management for Students's score(学生成绩管理)");
 	  printf("\n");
 	  printf("1.Append record(追加学生信息)");
 	  printf("\n");
 	  printf("2.List record(列出全部学生信息)");
 	  printf("\n");
 	  printf("3.Delete record(删除某学生信息)");
 	  printf("\n");
 	  printf("4.Modify record(修改某学生信息");
 	  printf("\n");
 	  printf("5.search record(搜索某学生信息)");
 	  printf("\n");
 	  printf("6.Sort in descending order by sum(以总分降序排序)");
 	  printf("\n");
 	  printf("7.Sort in ascending order by sum(以总分升序排序)");
 	  printf("\n");
      printf("8.Sort in descending order by num(以学号降序排序)");
      printf("\n");
      printf("9.Sort in ascending order by num(以学号升序排序)");
      printf("\n");
      scanf("%d",&a);
      switch (a)
      {
       case 1:printf("请输入想要追加的学生信息,顺序为:学号、姓名(英文)、m门成绩\n");
	          scanf("%s%s",&A[n].a,&A[n].b);
	          for(j=0;j<m;j++)
 		     {
		     scanf("%d",&A[n].c[j]);
		     A[n].sum=A[n].sum+A[n].c[j];	
	         }
	         A[n].ave=A[n].sum/m;
			 for(i=0;i<n+1;i++)
			 {fprintf(fp,"%s %s ",A[i].a,A[i].b);
			  for(j=0;j<m;j++)
			  fprintf(fp,"%d ",A[i].c[j]);
			  fprintf(fp,"%d %.0lf \n",A[i].sum,A[i].ave);}
			  fclose(fp);
			  return 0; 
			  
	    case 2: for(i=0;i<n;i++)
              { printf("%s %s ",A[i].a,A[i].b);
              for(j=0;j<m;j++)
              printf("%d ",A[i].c[j]);
             printf("%d %.0lf \n",A[i].sum,A[i].ave);      		
           	  } 
           	  break;
           	
    	case 3: printf("请输入想要删除的学生学号\n");
    	      scanf("%s",e);
    	      for(i=0;i<n;i++)
    	      {if(strcmp(A[i].a,e)==0);
    	      k=i;
    	      break;
		      }
  	          for(i=0;i<k;i++)
  	          { fprintf(fp,"%s %s ",A[i].a,A[i].b);
		      for(j=0;j<m;j++)
		      fprintf(fp,"%d ",A[i].c[j]);
		        fprintf(fp,"%d %.0lf \n",A[i].sum,A[i].ave);}
   	      
 	           for(i=k+1;i<n;i++)
  	          { fprintf(fp,"%s %s ",A[i].a,A[i].b);
		      for(j=0;j<m;j++)
		      fprintf(fp,"%d ",A[i].c[j]);
		      fprintf(fp,"%d %.0lf \n",A[i].sum,A[i].ave);}
	          fclose(fp);
		      return 0; 
		   
	   case 4: printf("请输入需要更改的学生学号\n");
	 	    scanf("%s",e);
    	    for(i=0;i<n;i++)
    	    { if(strcmp(A[i].a,e)==0);
    	    k=i;
    	     break;}
		    printf("请输入更改后的学生信息,顺序为:学号、姓名(英文)、m门成绩\n");	 
		    scanf("%s%s",&temp.a,&temp.b); 
		    for(j=0;j<m;j++)
 		    {
		    scanf("%d",&temp.c[j]);
		    temp.sum=temp.sum+temp.c[j];	}
		    temp.ave=temp.sum/m;
		    A[k]=temp;	break;	 
      
        case 5:printf("请输入想要搜索学生的学号 \n");
		    scanf("%s",e); 
		    for(i=0;i<n;i++)
    	    { if(strcmp(A[i].a,e)==0);
    	    k=i;
    	     break;}
    	     printf("%s %s ",A[k].a,A[k].b);
              for(j=0;j<m;j++)
              printf("%d ",A[k].c[j]);
             printf("%d %.0lf ",A[k].sum,A[k].ave); break;
		
		case  6:for(i=0;i<n-1;i++)
		        for(j=0;j<n-1-i;j++)
				{if (A[j].sum<A[j+1].sum)
				{   temp=A[j];
					A[j]=A[j+1];
					A[j+1]=temp;
				}
				}
		         break;
    
	 	case 7 :for(i=0;i<n-1;i++)
		        for(j=0;j<n-1-i;j++)
				{
				if  (A[j].sum>A[j+1].sum	)
				{   temp=A[j];
					A[j]=A[j+1];
					A[j+1]=temp;
				}		
		        }  break;
        case 8: for(i=0;i<n-1;i++)
		        for(j=0;j<n-1-i;j++)
				{
				if  (strcmp(A[j].a,A[j+1].a)<0	)
				{   temp=A[j];
					A[j]=A[j+1];
					A[j+1]=temp;
				}		
		        }  break;
        case 9 : for(i=0;i<n-1;i++)
		        for(j=0;j<n-1-i;j++)
				{
				if  (strcmp(A[j].a,A[j+1].a)>0	)
				{   temp=A[j];
					A[j]=A[j+1];
					A[j+1]=temp;
				}		
		        }  break;
	}
	     for(i=0;i<n;i++)
			 {fprintf(fp,"%s %s ",A[i].a,A[i].b);
			  for(j=0;j<m;j++)
			  fprintf(fp,"%d ",A[i].c[j]);
			  fprintf(fp,"%d %.0lf \n",A[i].sum,A[i].ave);}
			  fclose(fp);
			  return 0; 
	}
  

总结

代码运行成功,就完成了对于学生信息管理系统的编写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@白圭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值