很基础的学生信息管理系统(仅用于记录自学)

#include<stdio.h>
#include<Windows.h>
#define N 100
int i, n;
void Readscore(int number[], float mathscore[], float chscore[]);//录入函数
int Addscore(int number[], float mathscore[], float chscore[]);//计算总分和平均分
void Swap(int number[], float mathscore[], float chscore[]);//由低到高排序同学成绩
void Static(int number[], float mathscore[], float chscore[]);//统计优秀同学个数
main()
{
    int c;

    printf("\t学生成绩管理系统V2.0\n\n");
    printf("\t1-录入每个学生的学号和考试成绩\n");
    printf("\t2-计算每个学生的总分和平均分\n");
    printf("\t3-按成绩由低到高排序\n");
    printf("\t4-统计优秀(90~100分)同学的个数\n");
    printf("\t0-结束使用\n");
HAN:
    {
        printf("\t请选择想要使用的功能\n\n");

        scanf_s("%d", &c);
    }
    int * number = (int *)malloc(sizeof(int)*c);
    float * mathscore = (float *)malloc(sizeof(float)*c);
    float * chscore = (float *)malloc(sizeof(float)*c);
    switch (c)
    {
    case 1:
        Readscore(number, mathscore, chscore);
        goto HAN;
    case 2:
        Readscore(number, mathscore, chscore);
        Addscore(number, mathscore, chscore);
        goto HAN;
    case 3:
        Swap(number, mathscore, chscore);
            goto HAN;
    case 4:
        Static(number, mathscore, chscore);
        goto HAN;
    case 0:
        printf("感谢使用!!!\n");
    default:
        printf("输入错误!!!\n");
        goto HAN;
    }

    system("pause");
    return 0;
}

//录入每个学生的学号和考试成绩
void Readscore(int number[], float mathscore[], float chscore[])
{
    int i = 0;
    printf("请问有多少名同学?");
    scanf_s("%d", &n);
    for (i = 0; i < n; ++i)
    {
        printf("请输入第%d个同学的学号:", i + 1);
        scanf_s("%d", &number[i]);
        printf("请输入第%d个同学的数学成绩:", i + 1);
        scanf_s("%f", &mathscore[i]);
        printf("请输入第%d个同学的语文成绩:", i + 1);
        scanf_s("%f", &chscore[i]);
    }
    return;
}
//求总分和平均分
int Addscore(int number[], float mathscore[], float chscore[])
{
    int i;
    float add, avrg;
    for (i = 0; i < n; ++i)
    {
        add = mathscore[i] + chscore[i];
        avrg = add / n;
        printf("学号为%d的学生的\n总分为:%f,平均分为:%f\n", number[i], add, avrg);
    }
    return 0;
}
//由低到高排序学生成绩
void Swap(int number[], float mathscore[], float chscore[])
{
    float temp1, add[N];
    int i, j, n, temp2;
    printf("请问有多少名同学?");
    scanf_s("%d", &n);
    for (i = 0; i < n; ++i)
    {
        printf("请输入第%d个同学的学号:", i + 1);
        scanf_s("%d", &number[i]);
        printf("请输入第%d个同学的数学成绩:", i + 1);
        scanf_s("%f", &mathscore[i]);
        printf("请输入第%d个同学的语文成绩:", i + 1);
        scanf_s("%f", &chscore[i]);
        add[i] = mathscore[i] + chscore[i];
    }
    for (i = 0; i < n - 1; ++i)
    {
        for (j = 0; j < n - 1 - i; ++j)
            if (add[j] > add[j + 1])
            {
                temp1 = add[j];
                add[j] = add[j + 1];
                add[j + 1] = temp1;
                temp2 = number[j];
                number[j] = number[j + 1];
                number[j + 1] = temp2;
            }
    }
    printf("由低到高排序后:\n");
    for (i = 0; i < n; ++i)
        printf("学号为:%d\n成绩为:%f\n", number[i], add[i]);
    return;
}
//统计优秀分数(90~100)同学的个数
void Static(int number[], float mathscore[], float chscore[])
{
    char ch;
    int i, j, p, q;
    printf("请问有多少名同学?");
    scanf_s("%d", &n);
    printf("请选择查询的科目:");
    scanf_s(" %c", &ch, 1);
    switch (ch)
    {
    case 'm':
        for (i = 0, p = 0; i < n; ++i)
        {
            printf("请输入第%d个同学的数学成绩:", i + 1);
            scanf_s("%f", &mathscore[i]);
            if (mathscore[i] >= 90 && mathscore[i] <= 100)
                p++;
        }
        printf("数学成绩为优秀的同学人数为:%d\n", p);
        break;
    case 'c':
        for (j = 0, q = 0; j < n; ++j)
        {
            printf("请输入第%d个同学的语文成绩:", j + 1);
            scanf_s("%f", &chscore[j]);
            if (chscore[j] >= 90 && chscore[j] <= 100)
                q++;
        }
        printf("语文成绩为优秀的同学人数为:%d\n", q);
        break;
    default:
        printf("输入错误!!!\n");
    }
    return;
}

猜你喜欢

转载自blog.csdn.net/qq_40425918/article/details/84952940