我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C语言实现运动会管理系统

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C语言实现运动会管理系统

本文实例为大家分享了C语言实现运动会管理系统的具体代码,供大家参考,具体内容如下

问题描述:

(1) 初始化输入:N-参赛院系总数,M-男子竞赛项目数,W-女子竞赛项目数;

(2) 各项目名次取法有如下几种:

取前5名:第1名得分 7,第2名得分 5,第3名得分3,第4名得分2,第5名得分 1;         

(3) 由程序提醒用户填写比赛结果,输入各项目获奖运动员的信息。

(4) 所有信息记录完毕后,用户可以查询各个院系或个人的比赛成绩,生成团体总分报表,查看参赛院系信息、获奖运动员、比赛项目信息等。

C语言实现程序如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
typedef struct stunode
{
    char sport[20];
    char sex[10];
    char name[10];
    char college[20];
    char grade[10]; 
    int rank;
    struct stunode *next;
}STU;               
STU head;        
char stu[20][20];         
void maininterface();
void createList();
void printall();
void findperson();
void findcollege();
void freelist();
void findcollogescore();
void modify();
void allscore();
void getprize(); 
int getscore();
int N,M,W;        
int k=0;         
int main(int argc, char *argv[])
 {
     int i;
    int select;
    head.next=NULL;         
    printf("\t\t\t------------------------\n");
    printf("\t\t\t*******系统初始化*******\n");
    printf("\t\t\t1.请输入参赛院系总数:");
    scanf("%d",&N);    
    printf("\t\t\t2.请输入男子竞赛项目数:");
    scanf("%d",&M);
    printf("\t\t\t3.请输入女子竞赛项目数:");
    scanf("%d",&W);
    printf("\t\t\t4.请输入参赛的院系名:");
    for(i=0;i<N;i++)
    {
        scanf("%s",&stu[i])    ;
    }
    printf("\n\t\t\t-----------------------\n");
    printf("\t\t\t  运动会参赛学院有:");
    for(i=0;i<N;i++)
    {
        printf("%s ",stu[i])    ;
    }
    printf("\n\t\t\t");
    system("pause");
    while(1)
    {
        maininterface();
        printf("\n*请选择需要的操作:");
        scanf("%d",&select);
        fflush(stdin);     
        switch(select)     
        {
            case 1:createList();break;
            case 2:findperson();break;
            case 3:findcollege();break;
            case 4:findcollogescore();break;
            case 5:allscore();break;
            case 6:getprize();break;
            case 7:modify();break;
            case 8:printall();break;
            case 0:freelist();exit(0);
            default:printf("输入错误!\n");
        } 
        system("pause");
    }
    return 0;
}
 
void maininterface()
{
    system("cls");     
    printf("\t\t--------------------------\n");
    printf("\t\t******运动会管理系统******\n");
    printf("\t\t1.输入项目获奖信息\n"); 
    printf("\t\t2.查询个人的比赛成绩\n"); 
    printf("\t\t3.查询院系的比赛信息\n");
    printf("\t\t4.查询院系的比赛成绩\n");
    printf("\t\t5.生成团体总分报表\n");
    printf("\t\t6.查看各项目获奖运动员信息\n");
    printf("\t\t7.修改项目信息\n");
    printf("\t\t8.显示所有信息\n");
    printf("\t\t0.退出\n");
    printf("\t\t--------------------------\n");
    return;
}

功能函数如下:

 
void createList()
{
    int i,n,j=0;
    int a,b;
    float c;
    int grade1[60],grade2[60]; 
    int place[60];
    char sport4[20]="跳高",sport5[20]="跳高",sport6[20]="铅球"; 
    STU *p,*tail,*p3;
    if(k==0)         
    {
        k++;
        if(head.next!=NULL)
        {
            printf("项目获奖链表已创建!\n");
            return;
        }
        tail=&head;             
        printf("*请输入参赛人数:");
        scanf("%d",&n);
        printf("\n------------------------\n");
        for(i=1;i<=n;i++)         
        {
            p=(STU *)malloc(sizeof(STU));         
            if(p==NULL)
            {
                printf("建立链表时内存分配失败!\n");
                return; 
            }
            printf("项目 性别 姓名 学院 成绩\n");
            scanf("%s%s%s%s%f",p->sport,p->sex,p->name,p->college,&p->grade);
             
            p->rank=0;
            grade1[j]=p->grade;
            j++;
            tail->next=p;        
            p->next=NULL;        
            tail=p;
        }
        if(strcmp(p->sport,sport4)==0||strcmp(p->sport,sport5)==0||strcmp(p->sport,sport6)==0)
        {
            for(i=0;i<j;i++)        
            {
                place[i]=0;
                grade2[i]=0;
            }
            for(i=0;i<j;i++)
            {
                grade2[i]=grade1[i];
            }
            for(a=0;a<j-1;a++)        
            {
                for(b=0;b<j-a-1;b++)
                {
                    if(grade2[b]<grade2[b+1])
                    {
                        c=grade2[b];        
                        grade2[b]=grade2[b+1];
                        grade2[b+1]=c;
                    }
                }
            }
            for(i=0;i<j;i++)        
            {
                for(a=0;a<j;a++)
                {
                    if(grade2[i]==grade1[a])
                    {
                        place[a]=i+1;
                    }
                }
            }
            p3=head.next;
            for(i=0;i<j;i++)
            {
                p3->rank=place[i];
                p3=p3->next;
            }
        }else{
            for(i=0;i<j;i++)        
            {
                place[i]=0;
                grade2[i]=0;
            }
            for(i=0;i<j;i++)
            {
                grade2[i]=grade1[i];
            }
            for(a=0;a<j-1;a++)        
            {
                for(b=0;b<j-a-1;b++)
                {
                    if(grade2[b]>grade2[b+1])
                    {
                        c=grade2[b];        
                        grade2[b]=grade2[b+1];
                        grade2[b+1]=c;
                    }
                }
            }
            for(i=0;i<j;i++)        
            {
                for(a=0;a<j;a++)
                {
                    if(grade2[i]==grade1[a])
                    {
                        place[a]=i+1;
                    }
                }
            }
            p3=head.next;
            for(i=0;i<j;i++)
            {    
                p3->rank=place[i];
                p3=p3->next;
            }
        }
        return;
    }
    if(k==1)         
    {
        j=0;
        STU *p1,*p2,*p5;
        p1=&head;
        while(1)
        {
            if(p1->next==NULL)break;         
            p1=p1->next;         
        }
        p5=&head;
        while(1)
        {
            if(p5->next==NULL)break;         
            p5=p5->next;         
        }
        printf("请输入参赛人数:");
        scanf("%d",&n);
        for(i=1;i<=n;i++){
            p2=(STU*)malloc(sizeof(STU));        
            if(p2==NULL)
            {
                printf("动态内存分配失败!");
                return;
            }
            printf("项目 性别 姓名 学院 成绩\n");
            scanf("%s%s%s%s%f",p2->sport,p2->sex,p2->name,p2->college,&p2->grade);
            p2->rank=0;
            grade1[j]=p2->grade;
            j++;
            p2->next=p1->next;         
            p1->next=p2;             
            for(i=0;i<j;i++)         
            {
                place[i]=0;
                grade2[i]=0;
            }
            a=0;
            b=0;
            c=0;
            if(strcmp(p2->sport,sport4)==0||strcmp(p2->sport,sport5)==0||strcmp(p2->sport,sport6)==0)
            {
                for(i=0;i<j;i++)         
                {
                    place[i]=0;
                    grade2[i]=0;
                }
                for(i=0;i<j;i++)
                {
                    grade2[i]=grade1[i];
                }
                for(a=0;a<j-1;a++)        
                {
                    for(b=0;b<j-a-1;b++)
                    {
                        if(grade2[b]<grade2[b+1])
                        {
                            c=grade2[b];        
                            grade2[b]=grade2[b+1];
                            grade2[b+1]=c;
                        }
                    }
                }
                for(i=0;i<j;i++)        
                {
                    for(a=0;a<j;a++)
                    {
                        if(grade2[i]==grade1[a])
                        {
                            place[a]=i+1;
                        }
                    }
                }
                p3=p5;
                for(i=0;i<j;i++)
                {
                    p3=p3->next;
                    p3->rank=place[i];
                    
                }
            }else{
                for(i=0;i<j;i++)         
                {
                    place[i]=0;
                    grade2[i]=0;
                }
                for(i=0;i<j;i++)
                {
                    grade2[i]=grade1[i];
                }
                for(a=0;a<j-1;a++)        
                {
                    for(b=0;b<j-a-1;b++)
                    {
                        if(grade2[b]<grade2[b+1])
                        {
                            c=grade2[b];        
                            grade2[b]=grade2[b+1];
                            grade2[b+1]=c;
                        }
                    }
                }
                for(i=0;i<j;i++)        
                {
                    for(a=0;a<j;a++)
                    {
                        if(grade2[i]==grade1[a])
                        {
                            place[a]=i+1;
                        }
                    }
                }
                p3=p5;
                for(i=0;i<j;i++)
                {    
                    p3=p3->next;
                    p3->rank=place[i];
                     
                }
            }
        }        
        return;
    }
}
 
void printall()
{
    STU *p;
    if(head.next==NULL)
    {
        printf("未创建学生链表!\n");
        return;
    }
    p=head.next;         
    printf("-------------------------------------\n");
    printf("项目\t性别\t姓名\t学院\t成绩\t名次\n");
    while(p!=NULL)         
    {
        printf("%s\t%s\t%s\t%s\t%.2f\t%d\n",p->sport,p->sex,p->name,p->college,p->grade,p->rank);
        p=p->next;         
    }
    return;
}
 
void findperson()
{
    int tatal,goal;
    char name1[10];
    printf("*请输入查询的运动员姓名:");
    scanf("%s",&name1);
    printf("--------------------------------------------\n");
    printf("项目\t性别\t姓名\t学院\t名次\t成绩\t得分\n");
    STU *p3;
    p3=head.next;         
    while(p3!=NULL)        
    {
        
        if(strcmp(p3->name,name1)==0)
        {
            goal=getscore(p3->rank);         
            printf("%s\t%s\t%s\t%s\t%.2f\t%d\t%d\n",p3->sport,p3->sex,p3->name,p3->college,p3->grade,p3->rank,goal);
            tatal+=goal;
        }    
        p3=p3->next;         
        
    } 
    printf("总分:%d\n",tatal);
    return;
    
}
 
void freelist()
{
    STU *p;
    p=head.next;             
    while(p!=NULL)            
    {
        head.next=p->next;
        free(p);             
        p=head.next;         
    }
    return;
}

void findcollege()
{
    STU *p4;
    p4=head.next;        
    char college1[10];
    printf("*请输入查询的学院:");
    scanf("%s",&college1);
    printf("-------------------------------------\n");
    printf("项目\t性别\t姓名\t学院\t成绩\t名次\n");
    while(p4!=NULL)
    {
        if(strcmp(p4->college,college1)==0)         
        {
            printf("%s\t%s\t%s\t%s\t%.2f\t%d\n",p4->sport,p4->sex,p4->name,p4->college,p4->grade,p4->rank);
        }
        p4=p4->next;        
    }
    return;
}

int getscore(score1)
{
    int n=0;
    if(score1==1)
    {
        n=7;
        return n; 
    }else if(score1==2)
    {
        n=5;
        return n;
    }else if(score1==3)
    {
        n=3;
        return n;
    }else if(score1==4)
    {
        n=2;
        return n;
    }else if(score1==5)
    {
        n=1;
        return n;
    }else
    {
        n=0;
        return n;
    }
    return;
}

void findcollogescore()
{
    int tatal,goal;
    char name1[20];
    printf("*请输入查询的学院:");
    scanf("%s",&name1);
    printf("--------------------------------------------\n");
    printf("项目\t性别\t姓名\t学院\t成绩\t名次\t得分\n");
    STU *p3;
    p3=head.next;         
    while(p3!=NULL)
    {
        
        if(strcmp(p3->college,name1)==0)        
        {
            goal=getscore(p3->rank);
            printf("%s\t%s\t%s\t%s\t%.2f\t%d\t%d\n",p3->sport,p3->sex,p3->name,p3->college,p3->grade,p3->rank,goal);
            tatal+=goal;
        }    
        p3=p3->next;        
        
    } 
    printf("总分:%d\n",tatal);
    return;
    
}
 
void allscore()
{
    int tatal[60],goal=0,i,man[60],women[60],pla[60],data[60],tatal2[60],man2[60],women2[60];
    STU *p3;
    
    char ma[10]={"男"};
    char wo[10]={"女"}; 
    printf("-------------------------------------\n");
    printf("院系\t男子\t女子\t总分\t排名\n");
    for(i=0;i<N;i++)
    {
        p3=head.next;        
        tatal[i]=0;
        man[i]=0;
        women[i]=0;
        while(p3!=NULL)
        {
            if(strcmp(p3->college,stu[i])==0&&strcmp(p3->sex,ma)==0)         
            {
                goal=getscore(p3->rank);
                man[i]+=goal;        
            }
            if(strcmp(p3->college,stu[i])==0&&strcmp(p3->sex,wo)==0)         
            {
                goal=getscore(p3->rank);
                women[i]+=goal;        
            }
            p3=p3->next;        
        }
        tatal[i]=man[i]+women[i];         
    }
    for(i=0;i<N;i++)
    {
            data[i]=tatal[i];
    }
    int a,b,c;
    for(a=0;a<N-1;a++)         
    {
        for(b=0;b<N-a-1;b++)
        {
            if(data[b]<data[b+1])
            {
                c=data[b];         
                data[b]=data[b+1];
                data[b+1]=c;
            }
        }
    }
    for(i=0;i<N;i++){         
        pla[i]=0;
         
    }
    for(i=0;i<N;i++)         
    {
        for(a=0;a<N;a++)
        {
            if(data[i]==tatal[a])
            {
                pla[a]=i+1;
            } 
        }
    }
    int p;
    
    for(p=0;p<N;p++)
    {
        p3=head.next;        
        man2[p]=0;
        women2[p]=0;
        while(p3!=NULL)
        {
            if(strcmp(p3->college,stu[p])==0&&strcmp(p3->sex,ma)==0)
            {
                goal=getscore(p3->rank);
                man2[p]+=goal;
            }
            if(strcmp(p3->college,stu[p])==0&&strcmp(p3->sex,wo)==0)
            {
                goal=getscore(p3->rank);
                
                women2[p]+=goal;
            }
            p3=p3->next;        
        }
        tatal2[p]=man2[p]+women2[p];
        printf("%s\t%d\t%d\t%d\t%d\n",stu[p],man2[p],women2[p],tatal2[p],pla[p]);
    }
    return;
    
}

 void getprize()
 {
     STU *p;
     int i,j;
     p=&head;
     printf("-------------------------------------\n");
     printf("各项目前三名信息如下:\n") ;
     printf("项目\t性别\t姓名\t学院\t成绩\t名次\n");
     while(p!=NULL)
     {
         if((p->rank)>=1&&(p->rank)<=3)        
         {
             printf("%s\t%s\t%s\t%s\t%.2f\t%d\n",p->sport,p->sex,p->name,p->college,p->grade,p->rank);
         }
         p=p->next;
     } 
     return;
 }
 
 void modify()
 {
     int n,i;
     char sport1[20],sex1[10],name1[10],college1[20];
     STU *p,*p1;
     p=head.next;        
     printf("请输入要修改位置的相关信息:\n");
     printf("项目 性别 姓名 学院\n"); 
     scanf("%s%s%s%s",&sport1,&sex1,&name1,&college1);
     if(head.next==NULL)
     {
         printf("未创建项目链表!");
         return; 
     }
     while(p!=NULL)
     {
         if(strcmp(p->sport,sport1)==0&&strcmp(p->sex,sex1)==0&&strcmp(p->name,name1)==0&&strcmp(p->college,college1)==0)
         {
             p1=p;
             break;
         }
         p=p->next;        
     }
     char sport2[10]="项目",sex2[10]="性别",name2[10]="姓名",college2[10]="学院",grade2[10]="成绩",rank2[10]="名次";
     char xiugai[10];
     printf("请输入要修改的信息:");
     scanf("%s",&xiugai); 
     if(xiugai[1]==sport2[1])
     {
         printf("请输入修改后的内容:") ;
         scanf("%s",p1->sport); 
         printf("修改成功!") ; 
     }else if(xiugai[1]==sex2[1])
     {
         printf("请输入修改后的内容:") ;
         scanf("%s",p1->sex); 
         printf("修改成功!") ; 
     }else if(xiugai[1]==name2[1])
     {
         printf("请输入修改后的内容:") ;
         scanf("%s",p1->name); 
         printf("修改成功!") ; 
     }else if(xiugai[1]==college2[1])
     {
         printf("请输入修改后的内容:") ;
         scanf("%s",p1->college); 
         printf("修改成功!") ; 
     }else if(xiugai[1]==grade2[1])
     {
         printf("请输入修改后的内容:") ;
         scanf("%f",p1->grade); 
         printf("修改成功!") ;
     }else if(xiugai[1]==rank2[1])
     {
         printf("请输入修改后的内容:") ;
         scanf("%d",&p1->rank); 
         printf("修改成功!") ;
     }
     return;
}

具体实现如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C语言实现运动会管理系统

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么用C语言实现校运动会项目管理系统

本篇内容主要讲解“怎么用C语言实现校运动会项目管理系统”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用C语言实现校运动会项目管理系统”吧!源码#include #inclu
2023-06-29

C语言如何实现会员管理系统

本文小编为大家详细介绍“C语言如何实现会员管理系统”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言如何实现会员管理系统”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。会员信息包括:会员号(6位数,唯一),姓名
2023-06-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录