学生成绩管理系统

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 3
int n=0;//输入的人数 
int k;//输入的成绩科目总数 
struct student
{
     long num;               //学生学号
    char name[20];         //学生姓名
     float score[6];       //学生的3门成绩
     float sum;           //学生的总成绩
     float aver;         //学生的平均成绩 
}s[30];
void menu();
void input();              //输入学生成绩 
void add();                //增加一名学生成绩 
void browse();             //浏览学生信息 
void numsearch();            //学号查找信息 
void namesearch();           //姓名查找信息 
void zongfenjiangxu();        //总成绩从高到低排序 
void namepaixu();            //按姓名大小排序 
void shanchu();                //删除一名学生信息 
void xiugai();              //修改一名学生信息 
void tese();                //特色功能 超过总成绩及格线的人数 
int main()
{    
    int floag=1;
    while(floag==1)
    {
        
        menu();
        int shuzi;
        printf("输入数字运行以下程序\n");
        scanf("%d",&shuzi);
        switch(shuzi)
        {
            case 0:
                floag=0;
                break;
            case 1:
                input();
                break;
            case 2:
                add();
                break;
            case 3:
                browse();
                break;
            case 4:
                numsearch();
                break; 
            case 5:
                namesearch();
                break;
            case 6:
                zongfenjiangxu();
                break;
            case 7:
                namepaixu();
                break;
            case 8:
                shanchu();
                break;
            case 9:
                xiugai();
                break; 
            case 10:
                tese();
                break;
        }
    }
}
void menu()
{
 printf("学生成绩管理系统\n");
 printf("1.输入学生信息\n");
 printf("2.增加一名学生的信息\n");
 printf("3.学生信息浏览\n");
 printf("4.输入学号查询学生信息\n");
 printf("5.输入姓名查询学生信息\n");
 printf("6.成绩从高到低排序\n");
 printf("7.按姓名从低到高排序\n");
 printf("8.输入学号删除学生信息\n");
 printf("9.输入学号修改学生信息\n");
 printf("10.查询总成绩过线数\n");
 printf("0.退出\n"); 
}
void input()                            //录入学生信息 
{
    printf("请输入您要录入的人数");
    int shuzi;
    scanf("%d",&shuzi);
    n=shuzi;
    printf("请输入您要输入的科目总数\n");
    scanf("%d",&k);
    printf("请输入学生信息\n");
    int i,j;
    for(i=0;i<n;i++)
    {
        scanf("%ld%s",&s[i].num,s[i].name);
        for(j=0;j<k;j++)
        {
            scanf("%f",&s[i].score[j]);
        }
    }
        while (getchar() != '\n')
    {
        ;
    }
}
void add()                                    //增加一名学生信息 
{    if(n==0)
    {
        printf("请先摁1输入成绩\n");
    }
    else
    {
    
    printf("请输入您要增加的人数\n");
    int zenjia;
    scanf("%d",&zenjia);
    n=n+zenjia;
    printf("请输入您要增加的学生信息\n");
    int i,j;
         for(i=n-zenjia;i<n;i++)
    {
        scanf("%ld%s",&s[i].num,s[i].name);
        for(j=0;j<k;j++)
        {
            scanf("%f",&s[i].score[j]);
        }
    }
    
        while (getchar() != '\n')
    {
        ;
    }
    }
}
void browse()                                    //浏览学生信息 
{        if(n==0)
    {
        printf("请先摁1输入成绩\n");
    } 
        else
    {
        int i=0,j=0;
        for(i=0;i<n;i++)
        {    s[i].sum=0;
            for(j=0;j<k;j++)
            {
                s[i].sum+=s[i].score[j];
            }
        } 
        for(i=0;i<n;i++)
        {
            s[i].aver=s[i].sum/k;
        }
        for(i=0;i<n;i++)
        {
            printf("%ld %s ",s[i].num,s[i].name);
            for(j=0;j<k;j++)
            {
                printf("%.1f ",s[i].score[j]);
            }
            printf("%.1f %.1f\n",s[i].sum,s[i].aver);
    }
    
        while (getchar() != '\n')
    {
        ;
    }
    }
 } 
 void numsearch()                                            //学号查询学生信息 
{    if(n==0)
    {
        printf("请先摁1输入成绩\n");
    } 
    else
    {
         int i=0,j=0;
        for(i=0;i<n;i++)
        {    s[i].sum=0;
            for(j=0;j<k;j++)
            {
                s[i].sum+=s[i].score[j];
            }
        } 
        for(i=0;i<n;i++)
        {
            s[i].aver=s[i].sum/k;
        }
         printf("请输入您要查询的学号\n");
         long id;
         scanf("%ld",&id);
         for(i=0;i<n;i++)
         {
             if(s[i].num==id)
             {
                 printf("%ld %s ",s[i].num,s[i].name);
                 for(j=0;j<k;j++)
                {
                    printf("%.1f ",s[i].score[j]);
                }
                    printf("%.1f %.1f\n",s[i].sum,s[i].aver);
            }
     }
         while (getchar() != '\n')
        {
            ;
        }
    }
 }
 void namesearch()                                                    //姓名查找学生信息 
{        if(n==0)
    {
        printf("请先摁1输入成绩\n");
    } 
        else
    {
         int i=0,j=0;
        for(i=0;i<n;i++)
        {    s[i].sum=0;
            for(j=0;j<k;j++)
            {
                s[i].sum+=s[i].score[j];
                }
        } 
        for(i=0;i<n;i++)
        {
            s[i].aver=s[i].sum/k;
        }
         printf("请输入您要查询的名字\n");
         char xingming[15];
         scanf("%s",&xingming);
     
         for(i=0;i<n;i++)
         {
             if(strcmp(s[i].name,xingming)==0)
             {
                 printf("%ld %s ",s[i].num,s[i].name);
                 for(j=0;j<k;j++)
                {
                    printf("%.1f ",s[i].score[j]);
                }
                    printf("%.1f %.1f\n",s[i].sum,s[i].aver);
            }
        }
     
         while (getchar() != '\n')
        {
            ;
        }
    }
 }
 void zongfenjiangxu()                                //按总成绩从大到小排序 
{    if(n==0)
    {
        printf("请先摁1输入成绩\n");
    } 
        else
    {
         int i=0,j=0;
        for(i=0;i<n;i++)
        {    s[i].sum=0;
            for(j=0;j<k;j++)
            {
                s[i].sum+=s[i].score[j];
                }
        } 
        for(i=0;i<n;i++)
        {
            s[i].aver=s[i].sum/k;
        }
        float a[30];
        float t;
        for(i=0;i<n;i++)
        {
            a[i]=s[i].sum;
        }
        for(i=0;i<n-1;i++)
        {
            for(j=i+1;j<n;j++)
            {
                if(a[i]<a[j])
                {
                    t=a[i];
                    a[i]=a[j];
                    a[j]=t;
                }
            
            }
        }
        int m,c;
        for (i = 0, m = n; i < m; i++)
            {
                for (j = i + 1; j < m; j++)
                {
                    if (a[i] == a[j])
                    {
                        for (c = j; c < m; c++)
                            a[c] = a[c + 1];
                        j--;
                        m--;
                    }
                }
            }
        for(i=0;i<n;i++)
        {
            for(j=0;j<n;j++)
            {
                if(a[i]==s[j].sum)
                    {
                        printf("%ld %s ",s[j].num,s[j].name);
                        int jiang = 0;
                         for(jiang=0;jiang<k;jiang++)
                        {
                            printf("%.1f ",s[j].score[jiang]);
                        }
                            printf("%.1f %.1f\n",s[j].sum,s[j].aver);
                    }
            }
        }
        while (getchar() != '\n')
        {
            ;
        }
    }
 }
 void namepaixu()                                    //按姓名排序 
{    if(n==0)
    {
        printf("请先摁1输入成绩\n");
    } 
        else
    {
         int i=0,j=0;
        for(i=0;i<n;i++)
        {    s[i].sum=0;
            for(j=0;j<k;j++)
            {
                s[i].sum+=s[i].score[j];
              }
        } 
        for(i=0;i<n;i++)
        {
            s[i].aver=s[i].sum/k;
        }
        char jj[20][30];
        for(i=0;i<n;i++)
        {
            strcpy(jj[i],s[i].name);
        }
        for(i=0;i<n-1;i++)
        {
            for(j=i+1;j<n;j++)
            {
                if (strcmp(jj[i], jj[j]) > 0)
                    {
                        char ss[20];
                        strcpy(ss, jj[i]);
                        strcpy(jj[i], jj[j]);
                        strcpy(jj[j], ss);
                    }
            }
        }
        for(i=0;i<n;i++)
        {
            for(j=0;j<n;j++)
            {
                if(strcmp(jj[i], s[j].name)== 0)
                    {
                        printf("%ld %s ",s[j].num,s[j].name);
                        int jiang = 0;
                         for(jiang=0;jiang<k;jiang++)
                        {
                            printf("%.1f ",s[j].score[jiang]);
                        }
                            printf("%.1f %.1f\n",s[j].sum,s[j].aver);
                    }
            }
        }
            while (getchar() != '\n')
             {
                ;
            }
    }
 }
 void shanchu()                                                        //删除一名学生信息 
{    if(n==0)
    {
        printf("请先摁1输入成绩\n");
    } 
        else
    {
         printf("请输入您要删除学生成绩的学号\n");
         long id;
         scanf("%d",&id);
         int i,j=0;
         for(i=0;i<n;i++);
         {
             if(id==s[i].num)
             j=i;
        }
        for(i=j;i<n-1;i++)
        {
            s[i]=s[i+1];
        }
        n--;
            while (getchar() != '\n')
        {
            ;
        }
    }
 }
 void xiugai()
{    if(n==0)
    {
        printf("请先摁1输入成绩\n");
    } 
        else
    {
         int i,j;
         printf("请输入学生信息的学号\n");
         long id;
         scanf("%ld",&id);
         printf("请输入他修改后的所有成绩\n");
         for(i=0;i<n;i++)
         {
             if(id==s[i].num)
             {
                 for(j=0;j<k;j++)
                 {
                     scanf("%f",&s[i].score[j]);    
                }
             }
        }
         while (getchar() != '\n')//清理缓冲区
        {
            ;
        }
    }
 }
 void tese()                                       //总成绩过线数 
 {
     printf("请输入您要输入的总成绩的及格成绩\n");
     long qq;
     scanf("%ld",&qq);
     int i=0,j=0;
    for(i=0;i<n;i++)
    {    s[i].sum=0;
        for(j=0;j<k;j++)
        {
            s[i].sum+=s[i].score[j];
        }
    } 
    int a=0;
    for(i=0;i<n;i++)
    {
        if(s[i].sum>=qq)
        {
            a++;    
        }
    }
    printf("及格人数为%d\n",a);
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值