C语言实现学生管理信息系统

这是一个使用C语言实现的学生信息管理系统,具备输入、删除、修改、查询及排序等功能。系统采用结构体来存储学生信息,并通过枚举定义操作选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <stdio.h>
#include <stdlib.h>
#define SIZE 100

enum
{
    SYSEXIT,
    INPUTSTUDENT,
    DELETESTUDENT,
    UPDATESTUDENT,
    SEARCHSTUDENT,
    SORTSTUDENT
};
struct SCORE
{
    float math;
    float chinese;
    float english;
};
struct STUDENT
{
    int     num;
    char    name[10];
    char    adr[10];
    char    sex[4];
    struct  SCORE score;
    
}Student[SIZE] ={0};

 

void InputStudent()
{
    int count,choice;
    for(count =0; count <SIZE; count++)
    {
        if(Student[count].num ==0)
            break;
    }
    if(count >=SIZE)
    {
        printf("数据存储已满!\n");
        return;
    }
    for(;count <SIZE ;count++)
    {
        printf("请输入第%d个学生的学号:\n",count+1);scanf("%d",&Student[count].num);
        printf("请输入第%d个学生的姓名:\n",count+1);scanf("%s",&Student[count].name);
        printf("请输入第%d个学生的性别:\n",count+1);scanf("%s",&Student[count].sex);
        printf("请输入第%d个学生的地址:\n",count+1);scanf("%s",&Student[count].adr);
        printf("请输入第%d个学生的数学成绩:\n",count+1);scanf("%f",&Student[count].score.math);
        printf("请输入第%d个学生的语文成绩:\n",count+1);scanf("%f",&Student[count].score.chinese);
        printf("请输入第%d个学生的英语成绩:\n",count+1);scanf("%f",&Student[count].score.english);
        printf("是否继续输入学生信息?\n1.YES\n0.NO\n");
        scanf("%d",&choice);
        if(choice ==0)
            break;
    }
}
 
void DeleteStudent()
{
    int count,choice,sign=0;
    int sno;
    for(count=0 ;count <SIZE; count ++)
    {
        if(Student[count].num !=0)
        {
            sign++;
        }
    }
    if(sign ==0)
    {
        printf("没有存储任何学生信息!\n");
        return ; 
    }
    printf("1.根据学号删除学上信息:\n");
    printf("2.删除全部学生信息:\n"); 
    printf("0.退出\n"); 
    printf("请输入功能选择\n"); 
    scanf("%d",&choice);
    if(choice ==0)
    {
        return;
    }
    else if(choice ==1)
    {
         printf("\n");
         printf("请输入要删除的学生学号:\n");  
         scanf("%d",&sno);
         count=sno-1;
         for(;count < SIZE-1; count ++)
         {
             Student[count] =Student[count+1];
         }
         printf("删除成功!\n\n"); 
    } 
    else if(choice ==2)
    {
        for(count =0; count <SIZE; count ++) 
        {
            Student[count].num=0;
        }
        printf("删除成功!\n\n"); 
    }
    else
        return;
      
}
void UodateStudent()
{
     int sign =0;int count;
     for(count=0 ; count <SIZE; count ++)
     {
        if(Student[count].num !=0)
        {
            sign++;
        }
     }
     if(sign ==0)
     {
        printf("没有存储任何学生信息!\n");
        return ; 
     }
     int choice ,sno;
     printf("1.修改学生的姓名:\n");
     printf("2.修改学生的数学成绩:\n");
     printf("0.退出:\n");
     printf("请输入你的选择:\n");
     scanf("%d",&choice);
     switch(choice)
     {
         case 1:
              {
                   printf("请输入要修改第几位学生的学号:\n");
                   scanf("%d",&sno);
                   printf("请输入修改后学生的姓名:\n");
                   scanf("%s",&Student[sno-1].name); 
                   printf("修改成功!\n"); 
                   break;
              }
         case 2:
              {
                   printf("请输入要修改学生的学号:\n");
                   scanf("%d",&sno);
                   for(count =0; count <SIZE; count++)
                   {
                       if(Student[count].num ==sno)
                           break;
                   }
                   printf("请输入修改后的数学成绩:");
                   scanf("%f",&Student[count].score.math);
                   printf("修改成功!\n"); 
                   
              }
         default :
                 break;
     }   
}
void SearchStudent()
{
     int sign=0,count;
     int  choice,sno;
     for(count=0 ;count <SIZE; count ++)
     {
        if(Student[count].num !=0)
        {
            sign++;
        }
     }
     if(sign ==0)
     {
        printf("没有存储任何学生信息!\n");
        return ; 
     }
     
     printf("1.根据学号查询学生信息:\n");
     printf("2.查询全部学生信息\n");
     printf("0.退出.\n");
     printf("请输入功能选择:\n");
     scanf("%d",&choice);
     if(choice ==0)
     {
         return;
     }
     else if(choice ==1)
     {
          printf("请输入学生学号:\n");
          scanf("%d",&sno);
          for(count =0; count <SIZE; count++)
          {
               if(Student[count].num ==sno)
                   break;
          }
          printf("学号   姓名   性别     地址     数学成绩   语文成绩    英语成绩\n");
          printf("%-8d",Student[count].num);
          printf("%-8s",Student[count].name);
          printf("%-8s",Student[count].sex);
          printf("%-8s",Student[count].adr);
          printf("%-12.2f",Student[count].score.math);
          printf("%-12.2f",Student[count].score.chinese);
          printf("%-12.2f",Student[count].score.english);
          printf("\n"); 
           
          
     }
     else if(choice ==2)
     {
          
          printf("学号   姓名   性别     地址     数学成绩   语文成绩    英语成绩\n");
          int count;
          for(count =0; count <SIZE; count++)
          {
              if(Student[count].num !=0)
              {
                  printf("%-8d",Student[count].num);
                  printf("%-8s",Student[count].name);
                  printf("%-8s",Student[count].sex);
                  printf("%-8s",Student[count].adr);
                  printf("%-12.2f",Student[count].score.math);
                  printf("%-12.2f",Student[count].score.chinese);
                  printf("%-12.2f",Student[count].score.english);
                  printf("\n"); 
              }
          }
     }
     else
         return;
     
}
void SortStudent()
{
    printf("1.根据学号进行排序:\n");
    printf("2.根据学生总成绩排序:\n");
    printf("0.退出:\n");
    printf("请输入功能选择:\n");
    int  count ,choice ,j;
    struct STUDENT temp;
    scanf("%d",&choice);
    if(choice ==0)
    {
        return;
    }
    else if(choice ==1)
    {
         int sign =0;
         for(count=0 ;count <SIZE; count ++)
         {
            if(Student[count].num !=0)
            {
                sign++;
            }
         }
         if(sign ==0)
         {
            printf("没有存储任何学生信息!\n");
            return ; 
         }
         for(count =0; count <SIZE-1; count ++)
         {
             for(j=0; j< SIZE-1-count; j++)
             {
                 if(Student[j].num > Student[j+1].num)
                 {
                     temp =Student[j];
                     Student[j] =Student[j+1];
                     Student[j+1] =temp;
                     
                 }
             }
         }
         printf("排序成功!\n");
         printf("学号   姓名   性别     地址     数学成绩   语文成绩    英语成绩\n");
         for(count =0; count <SIZE ;count ++)
         {
             if(Student[count].num !=0)
             {
                  printf("%-8d",Student[count].num);
                  printf("%-8s",Student[count].name);
                  printf("%-8s",Student[count].sex);
                  printf("%-8s",Student[count].adr);
                  printf("%-12.2f",Student[count].score.math);
                  printf("%-12.2f",Student[count].score.chinese);
                  printf("%-12.2f",Student[count].score.english);
                  printf("\n"); 
             }
         }
         
    }
    else if(choice ==2)
    {
         int sign=0;
         for(count=0 ;count <SIZE ;count ++)
         {
            if(Student[count].num !=0)
            {
                sign++;
            }
         }
         if(sign ==0)
         {
            printf("没有存储任何学生信息!\n");
            return ; 
         }
         for(j =0; j <SIZE -1;j ++)
         {
             for(count =0; count <SIZE-1-j ;count ++)
             {
                 if((Student[count].score.math+Student[count].score.chinese+Student[count].score.english)
                      >(Student[count+1].score.math+Student[count+1].score.chinese+Student[count+1].score.english))
                      
                 {
                     temp =Student[count];
                     Student[count] =Student[count+1];
                     Student[count+1] =temp;
                     
                 }
             }
         }
         printf("排序成功!\n");
         printf("学号   姓名   性别     地址     数学成绩   语文成绩    英语成绩\n");
         for(count =0; count <SIZE ;count ++)
         {
             if(Student[count].num !=0)
             {
                  printf("%-8d",Student[count].num);
                  printf("%-8s",Student[count].name);
                  printf("%-8s",Student[count].sex);
                  printf("%-8s",Student[count].adr);
                  printf("%-12.2f",Student[count].score.math);
                  printf("%-12.2f",Student[count].score.chinese);
                  printf("%-12.2f",Student[count].score.english);
                  printf("\n"); 
             }
         }
    }
    else
        return;
     
}

 

int main(int argc, char *argv[])
{
      int flag;
      printf("**学生信息管理系统**\n");
      while(1)
      {
          printf("1.输入学生信息:\n");
          printf("2.删除学生信息:\n");
          printf("3.修改学生信息:\n");
          printf("4.查询学生信息:\n");
          printf("5.排列学生信息:\n");
          printf("0.退出管理系统:\n");
          printf("请输入你的选择:\n");
          printf("\n");
          scanf("%d",&flag);
          switch(flag)
          {
              case SYSEXIT:
                   {
                        return;
                        
                   }
              case INPUTSTUDENT:
                   {
                        InputStudent();
                        break;
                   }
              case DELETESTUDENT:
                   {
                        DeleteStudent();
                        break;
                    }
              case UPDATESTUDENT:
                   {
                        UodateStudent();
                        break;
                   }
              case SEARCHSTUDENT:
                    {
                        SearchStudent();
                        break;
                    }
              case SORTSTUDENT:
                    {
                        SortStudent();
                        break;
                    }
              default :
                    {
                        printf("输入错误!\n\n");
                    }
          }
          printf("\n");
          
      }
      system("PAUSE"); 
      return 0;
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值