标题:学生成绩管理系统(代码写得比较low不要介意)还有点小错误望帮忙修改
只看楼主
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
改进了一下~

程序代码:
/*
老师要求:
(1)键盘录入成绩
(2)课程的总分和平均分
(3)成绩从高到低名次表
(4)成绩从低到高名次表
(5)学号从小到大成绩表
(6)姓名字典顺序成绩表
(7)输入学号或者姓名查询学生成绩及排名
(8)统计优良中差类别所占百分比
*/

#include<stdio.h>
#include<string.h>
#include<windows.h>
#include<conio.h>
#define s 3
struct student
{
    char name[20];
    int num;
    int score[3];
    float av;
    int sum;

} p[s];
int i,j,r,t;
int flag=0;
r=0;
int main()
{
    void (*p)()=NULL;
    void menu();
    void scan();
    void sumandav();
    void sort3();
    void sort4();
    void sort5();
    void sort6();
    void search7();
    void count8();

    char ch=0;

    while (1)
    {
        r=0;/*排名要重置啊~*/
        menu();
        printf("请选择功能%c:\n",032);
        
        switch(ch=getch()-'0')
        {
            case 1 :
                p=scan;
                break;
            case 2:
                p=sumandav;
                break;
            case 3:
                p=sort3;
                break;
            case 4:
                p=sort4;
                break;
            case 5:
                p=sort5;
                break;
            case 6:
                p=sort6;
                break;
            case 7:
                p=search7;
                break;
            case 8:
                p=count8;
                break;
            case 9:
                exit(0);
            default:
                p=NULL;
                break;
        }
        if ((flag!=0||p==scan)&&(ch>0&&ch<10))
        {
            system("cls");
            (*p)();
            system("pause");
        }
        else if (ch>0&&ch<10&&flag==0)
        {
            system("cls");
            puts("请先初始化数据");
            system("pause");
        }
    }
    return 0;
}
void menu()
{
    system("cls");
    printf("\t *学生成绩管理系统100.0版*  \n");
    printf("\t       功能      \n");
    printf("\t1,键盘录入成绩\n");
    printf("\t2,课程的总分和平均分\n");
    printf("\t3,成绩从高到低名次表\n");
    printf("\t4,成绩从低到高名次表\n");
    printf("\t5,学号从小到大成绩表\n");
    printf("\t6,姓名字典顺序成绩表\n");
    printf("\t7,输入学号或者姓名查询学生成绩及排名\n");
    printf("\t8,统计优良中差类别所占百分比\n");
    printf("\t9,都不喜欢拜拜%c!\n",001);
}
void scan()
{
    for(j=0; j<s; j++)
    {
        printf("请输入第%d个学生的(学号-姓名-科目1-科目2-科目3):\n",j+1);
        scanf("%d%s%d%d%d",&p[j].num,p[j].name,&p[j].score[0],&p[j].score[1],&p[j].score[2]);

        p[j].av=(float )(p[j].score[0]+p[j].score[1]+p[j].score[2])/3;
        p[j].sum=p[j].score[0]+p[j].score[1]+p[j].score[2];
    }

    flag=1;

    printf("输入成功,即将执行下一步操作\n");
}
void sumandav()
{
   // scan();
    printf(" 学号 姓名 高数 c语言 英语 总分 平均分 \n");
    for(j=0; j<s; j++)
    {
        printf("%-5d%-5s%-5d%-5d%-5d%-5d%-7.1f\n",p[j].num,p[j].name,p[j].score[0],p[j].score[1],p[j].score[2],p[j].sum,p[j].av);

    }
}
void sort3()
{
    struct student t={0};
    for(j=0; j<s-1; j++)
    {
        for(i=0; i<s-1-j; i++)
        {
            if(p[i].sum<p[i+1].sum)
            {
                t=p[i];
                p[i]=p[i+1];
                p[i+1]=t;
            }
        }
    }
    printf(" 学号 姓名 高数 c语言 英语 总分 平均分 排名(总分down)\n");
    for(j=0; j<s; j++)
    {
        r++;
        printf("%-5d%-5s%-5d%-5d%-5d%-5d%-7.1f%-5d\n",p[j].num,p[j].name,p[j].score[0],p[j].score[1],p[j].score[2],p[j].sum,p[j].av,r);


    }
}
void sort4()
{
  //  void scan();
    struct student t={0};
  //  scan();
    for(j=0; j<s-1; j++)
    {
        for(i=0; i<s-1-j; i++)
        {
            if(p[i].sum<p[i+1].sum)//////////
            {
                t=p[i];
                p[i]=p[i+1];
                p[i+1]=t;
            }
        }
    }
    printf("学号 姓名 高数 c语言 英语 总分 平均分 排名(总分up)\n");
    for(j=0,r=4; j<s; j++)/////////////////
    {
        r--;
        printf("%-5d%-5s%-5d%-5d%-5d%-5d%-7.1f%-5d\n",p[j].num,p[j].name,p[j].score[0],p[j].score[1],p[j].score[2],p[j].sum,p[j].av,r);

    }
}
void sort5()
{
   // void scan();
    struct student t={0};
  //  scan();
    for(j=0; j<s-1; j++)
    {
        for(i=0; i<s-1-j; i++)
        {
            if(p[i].num>p[i+1].num)
            {
                t=p[i];
                p[i]=p[i+1];
                p[i+1]=t;
            }
        }
    }
    printf("学号 姓名 高数 c语言 英语 总分 平均分 排名(学号)\n");
    for(j=0,r=4; j<s; j++)
    {
        r--;
        printf("%-5d%-5s%-5d%-5d%-5d%-5d%-7.1f%-5d\n",p[j].num,p[j].name,p[j].score[0],p[j].score[1],p[j].score[2],p[j].sum,p[j].av,r);


    }
}
void sort6()
{
    char t1[20]={0};
    struct student t={0};
  //  scan();
    for(j=0; j<s-1; j++)
    {
        for(i=0; i<s-1-j; i++)
        {
            if(strcmp(p[i].name,p[i+1].name)>0)
            {
                t = p[i];          //strcpy(t1,p[i].name);
                p[i] = p[i+1];             //strcpy(p[i].name,p[i+1].name);
                p[i+1] = t;          //strcpy(p[i+1].name,t1);
            }
        }
    }
    printf("学号 姓名 高数 c语言 英语 总分 平均分 排名(姓名)\n");
    for(j=0; j<s; j++)
    {
        r++;
        printf("%-5d%-5s%-5d%-5d%-5d%-5d%-7.1f%-5d\n",p[j].num,p[j].name,p[j].score[0],p[j].score[1],p[j].score[2],p[j].sum,p[j].av,r);

    }
}
void search7()
{
    void my_sort();
    char name3[20];
    int num1;
    int rr[3]={0};
    int i=0;
    int j=0;


 //   scan();
    my_sort();

    printf("您想查找的学生的学号或者姓名:\n");
    scanf("%d%s",&num1,name3);/////////////
    for(i=0; i<s; i++)
    {
        if((strcmp(name3,p[i].name)==0)||(num1==p[i].num))
        {
            printf("高数 c语言 英语 总分 排名\n");
            printf("%-5d%-5d%-5d%-5d%-5d\n",p[i].score[0],p[i].score[1],p[i].score[2],p[i].sum,i+1);
            break;
        }
    }
}

void my_sort()
{
    int i=0;
    int j=0;
    struct student t={0};

    for(j=0; j<s-1; j++)
    {
        for(i=0; i<s-1-j; i++)
        {
            if(p[i].sum<p[i+1].sum)
            {
                t=p[i];
                p[i]=p[i+1];
                p[i+1]=t;
            }
        }
    }
}
void count8()
{
    float k=0,q=0,x=0,f=0;
    float m,n,sb,xsb;

 //   void scan();

 //   scan();
    for(i=0; i<s; i++)
    {
        if(p[i].sum<180)
        {
            k++;
        }
        else if(p[i].sum>=180&&p[i].sum<=210)
        {
            q++;
        }
        else if(p[i].sum>210&&p[i].sum<=240)
        {
            x++;
        }
        else if(p[i].sum>240&&p[i].sum<=300)
        {
            f++;
        }
    }
    m=f/s;
    n=x/s;
    sb=q/s;
    xsb=k/s;
    printf("优:%.1f 良:%.1f 中:%.1f 差:%.1f\n",m,n,sb,xsb);
}

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-03-04 12:55
白衣柳相
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:142
专家分:168
注 册:2016-12-23
得分:0 
回复 11楼 九转星河
嗯  ()

什么最重要,学习!!!! 我要你们无话可说!我想要的东西自己去拿
2017-03-04 17:50



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-474281-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.101972 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved