⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 match.c

📁 拿“优”的数据结构课程设计:运动会分数统计。 里头包括源代码、exe文件、课程设计报告
💻 C
📖 第 1 页 / 共 2 页
字号:
{
    int i, j;
    int temp;
    int sort[MAX_NUM];
    int maxSchool;
    //统计学校数量
    for (maxSchool=0; (*School)[maxSchool].id; maxSchool++);//for
    //将学校id存入辅助数组
    for (i=0; i<maxSchool; i++)
    {
        sort[i] = i;
    }//for
    //冒泡法排序
    for (i=1; i<=maxSchool; i++)//冒泡法排序
    {
        for (j=0; j<maxSchool-i; j++)
        {
            if ((*School)[sort[j]].score < (*School)[sort[j+1]].score)
            {
                temp = sort[j];
                sort[j] = sort[j+1];
                sort[j+1] = temp;
            }
        }//for
    }//for
    //输出排名信息
    printf("按团体总分顺序排名\n\n");
    printf("│ 名次 │学校编号/名称 │ 团体总分 │ 男子总分 │ 女子总分 │\n");
    for (i=0; i<maxSchool; i++)
    {
        printf("│  %2d  ",i+1);
        printf("│ %3d %s  ",sort[i]+1,(*School)[sort[i]].name);
        printf("│   %3d    ",(*School)[sort[i]].score);
        printf("│   %3d    ",(*School)[sort[i]].mscore);
        printf("│   %3d    │\n",(*School)[sort[i]].wscore);
    }//for
    printf("\n\n");
    system("pause");
    system("cls");
    return OK;
}//按学校总分顺序排名

//按男子总分顺序排名
Status PrintAsMScore(school *School)
{
    int i, j;
    int temp;
    int sort[MAX_NUM];
    int maxSchool;
    //统计学校数量
    for (maxSchool=0; (*School)[maxSchool].id; maxSchool++);//for
    for (i=0; i<maxSchool; i++)
    {
    sort[i] = i;
    }//for
    //冒泡法排序
    for (i=1; i<=maxSchool; i++)
    {
        for (j=0; j<maxSchool-i; j++)
        {
            if ((*School)[sort[j]].mscore < (*School)[sort[j+1]].mscore)
            {
                temp = sort[j];
                sort[j] = sort[j+1];
                sort[j+1] = temp;
            }//if
        }//for
    }//for
    //输出排名信息
    printf("按男子总分顺序排名\n\n");
    printf("│ 名次 │  学校编号/名称  │ 团体总分 │ 男子总分 │ 女子总分 │\n");
    for (i=0; i<maxSchool; i++)
    {
        printf("│  %2d  ",i+1);
        printf("│  %3d %s   ",sort[i]+1,(*School)[sort[i]].name);
        printf("│   %3d    ",(*School)[sort[i]].score);
        printf("│   %3d    ",(*School)[sort[i]].mscore);
        printf("│   %3d    │\n",(*School)[sort[i]].wscore);
    }//for
    printf("\n\n");
    system("pause");
    system("cls");
    return OK;
}//按男子总分顺序排名

//按女子总分顺序排名
Status PrintAsWScore(school *School)
{
    int i, j;
    int temp;
    int sort[MAX_NUM];
    int maxSchool;
    //统计学校数量
    for (maxSchool=0; (*School)[maxSchool].id; maxSchool++);//for
    for (i=0; i<maxSchool; i++)
    {
        sort[i] = i;
    }//for
    //冒泡法排序
    for (i=1; i<=maxSchool; i++)
    {
        for (j=0; j<maxSchool-i; j++)
        {
            if ((*School)[sort[j]].wscore < (*School)[sort[j+1]].wscore)
            {
                temp = sort[j];
                sort[j] = sort[j+1];
                sort[j+1] = temp;
            }//if
        }//for
    }//for
    //输出排名信息
    printf("按女子总分顺序排名\n\n");
    printf("│ 名次 │  学校编号/名称  │ 团体总分 │ 男子总分 │ 女子总分 │\n");
    for (i=0; i<maxSchool; i++)
    {
        printf("│  %2d  ",i+1);
        printf("│  %3d %s   ",sort[i]+1,(*School)[sort[i]].name);
        printf("│   %3d    ",(*School)[sort[i]].score);
        printf("│   %3d    ",(*School)[sort[i]].mscore);
        printf("│   %3d    │\n",(*School)[sort[i]].wscore);
    }//for
    printf("\n\n");
    system("pause");
    system("cls");
    return OK;
}//按女子总分顺序排名

//按学校id和项目id查找该学校在该项目的成绩
Status SearchAsSchool(item *Item, school *School)
{
    int i;
    int schoolid, itemid;
    int maxItem, maxSchool;
    //统计学校和项目数量
    for (maxItem=0; (*Item)[maxItem].id; maxItem++);//for
    for (maxSchool=0; (*School)[maxSchool].id; maxSchool++);//for
    //输入要查找的学校和项目编号
    printf("请输入要查找的学校编号:");
    scanf("%d",&schoolid);
    while (schoolid<1 || schoolid>maxSchool)
    {
        printf("您输入学校编号超出范围,请重新输入:");
        scanf("%d",&schoolid);
    }//while
    printf("请输入要查找的项目编号:");
    scanf("%d",&itemid);
    while (itemid<1 || itemid>maxItem)
    {
        printf("您输入项目编号超出范围,请重新输入:");
        scanf("%d",&itemid);
    }//while
    for (i=0; i<(*Item)[itemid-1].type; i++)
    {
        if ((*Item)[itemid-1].schoolid[i] == schoolid)
        {
            printf("\n\n%s在",(*School)[schoolid-1].name);
            printf("%s项目中取得第%d名。\n\n\n",(*Item)[itemid-1].name,i+1);
            system("pause");
            system("cls");
            return OK;
        } //if
    }//for
    printf("\n\n%s在",(*School)[schoolid-1].name);
    printf("%s项目中没有取得名次。\n\n\n",(*Item)[itemid-1].name);
    system("pause");
    system("cls");
    return FALSE;
}//按学校id和项目id查找该学校在该项目的成绩

//按照项目id查找该项目的情况
Status SearchAsItem(item *Item, school *School)
{
    int i;
    int itemid;
    int maxItem;
    //统计项目数量
    for (maxItem=0; (*Item)[maxItem].id; maxItem++);//for
    //输入要查找的项目编号
    printf("请输入要查找的项目编号:");
    scanf("%d",&itemid);
    while (itemid<1 || itemid>maxItem)
    {
        printf("您输入项目编号超出范围,请重新输入:");
        scanf("%d",&itemid);
    }//while
    //输出该项目的情况
    printf("\n\n%s项目 第%d名",(*Item)[itemid-1].name,1);
    printf(" %s\n",(*School)[(*Item)[itemid-1].schoolid[0]-1].name);
    for (i=1; i<(*Item)[itemid-1].type; i++)
    {
        printf("         第%d名 ",i+1);
        printf("%s\n",(*School)[(*Item)[itemid-1].schoolid[i]-1].name);
    }//for
    printf("\n\n");
    system("pause");
    system("cls");
    return OK;
}//按照项目id查找该项目的情况

//显示菜单
Status PrintMenu()
{
    printf("\n\n          ********************************************\n");
    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("          *    0.退出程序                            *\n");
    printf("          *                                          *\n");
    printf("          ********************************************\n");
    printf("            请选择一项操作:");
    return OK;
}//显示菜单

//选择操作
Status Chose(item *Item, school *School, int i)
{
    switch(i)
    {
        case 1: if (ReadDat(Item, School))
                {
                    printf("文件读取成功!\n\n");
                }
                else
                {
                    printf("文件读取失败!\n\n");
                }
                SumScore(Item, School);
                return OK; //选择1从文件中读取数据
        case 2: InPutData(Item, School);
                SumScore(Item, School);
                return OK; //选择2重新输入数据
        case 3: PrintAsSchoolid(School);
                return OK; //选择3按学校编号输出
        case 4: PrintAsScore(School);
                return OK; //选择4按学校总分输出
        case 5: PrintAsMScore(School);
                return OK; //选择5按男子总分输出
        case 6: PrintAsWScore(School);
                return OK; //选择6按女子总分输出
        case 7: SearchAsSchool(Item, School);
                return OK; //选择7按学校编号查找该学校某项目成绩
        case 8: SearchAsItem(Item, School);
                return OK; //选择8按项目编号查找该项目成绩
        case 9: if (WriteDat(Item, School))
                {
                    printf("文件写入成功!\n\n");
                }
                else
                {
                    printf("文件写入失败!\n\n");
                }
                return OK; //选择9将数据写入到文件中
        case 0: return FALSE; //选择0退出程序
    }
    return OK;
}//选择操作

main()
{
    item *item;
    school *school;
    int i;
    Init(&item, &school);
    while(1)
    {
        PrintMenu();
        scanf("%d",&i);
        while (i<0 || i>9)
        {
            printf("您输入选项超出范围,请重新输入:");
            scanf("%d",&i);
        }//while
        system("cls");
        if (!Chose(item, school, i)) break;
    }//while
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -