1. 程式人生 > >很基礎的學生資訊管理系統(僅用於記錄自學)

很基礎的學生資訊管理系統(僅用於記錄自學)

#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;
}