//源码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 3 //参与运动会的学院数目
//定义一个结构体
typedef struct project
{char xiangmu[40];     //比赛项目名称char name[N][40];     //学院名称float score[N];       //单项成绩int no[N];            //单项名次struct project *next; //指向下一节点的指针
} Proj;typedef struct sumno
{char name[40];float sum;
} SumNo;
//函数声明放在这里
void ListCreate(Proj *L, int n); //创建链表节点
void ListSearch(Proj *L);        //查找某个运动会项目信息
void ListModify(Proj *L);        //修改某个运动会项目信息
void ListDelete(Proj *L);        //删除某个运动会项目信息
void Input(Proj *p, int i);      //输入运动会项目信息
void Output(Proj *L);            //输出每个运动会项目的学院成绩排名信息
void PerRank(Proj *L);           //计算每个运动会项目的学院成绩排名并输出
void SumRank(Proj *L);           //所有项目每个学院的总成绩和排名
void Menu();                     //校运动会项目管理系统的菜单//校运动会项目管理系统的主函数入口
int main()
{int item, n;                      //item用于接收输入的命令,n用于接收输入的项目数Proj *L = NULL;                   //初始化一个头节点L = (Proj *)malloc(sizeof(Proj)); //为头节点开辟内存空间L->next = NULL;                   //将头节点的指针域置空do{Menu(); //菜单printf("请输入相应的数字,进行相应的操作:\n");scanf("%d", &item);system("cls");switch (item){case 1:printf("请输入您要录入的项目数目:");scanf("%d", &n);ListCreate(L, n); //创建项目链表节点getchar();printf("\n请按任意键返回主菜单\n");getchar();system("cls");break;case 2:ListSearch(L); //查找项目的相关信息getchar();printf("\n请按任意键返回主菜单\n");getchar();system("cls");break;case 3:ListModify(L); //修改项目信息getchar();printf("\n请按任意键返回主菜单\n");getchar();system("cls");break;case 4:ListDelete(L); //删除项目的信息getchar();printf("\n请按任意键返回主菜单\n");getchar();system("cls");break;case 5:PerRank(L); //计算每个运动会项目的学院成绩排名Output(L);  //输出每个运动会项目的学院成绩排名信息getchar();printf("\n请按任意键返回主菜单\n");getchar();system("cls");break;case 6:SumRank(L); //所有项目每个学院的总成绩和排名getchar();printf("\n请按任意键返回主菜单\n");getchar();system("cls");break;case 0:printf("即将退出校运动会项目管理系统....."); //退出校运动会项目管理系统exit(0);default:printf("您输入的指令不正确,请重新输入");}printf("\n\n");} while (item);return 0;
}//创建链表,将新生成的节点插入到链表的表头
void ListCreate(Proj *L, int n)
{int i;for (i = 0; i < n; i++){Proj *p;//将新生成的节点插入到链表中p = NULL;p = (Proj *)malloc(sizeof(Proj));Input(p, i);p->next = L->next;L->next = p;}
}//查找项目信息
void ListSearch(Proj *L)
{int k;char n[40];Proj *p = L->next;if (p == NULL)printf("数据为空,无法查找!");else{printf("请输入您要查找的项目名称:");scanf("%s", n);while (strcmp(p->xiangmu, n) != 0){p = p->next;if (p == NULL){printf("没有找到相关信息\n");return;}}PerRank(L);printf("该项目的相关信息如下:\n");printf("学院名称\t单项成绩\t单项名次\n\n");for (k = 0; k < N; k++){printf("%s\t\t", *((p->name) + k));printf("%.2f\t\t", *((p->score) + k));printf("%d\t\n", *((p->no) + k));}printf("\n\n");}
}//修改项目的相关信息
void ListModify(Proj *L)
{int item, k, a;char n[40], m[40];Proj *p = L->next;if (p == NULL)printf("数据为空,无法修改!");else{printf("请输入您要修改的项目名称:");scanf("%s", n);while (strcmp(p->xiangmu, n) != 0){p = p->next;if (p == NULL){printf("没有找到相关信息\n");return;}}printf("您是否需要修改项目名称(是输入1,不是输入0):");scanf("%d", &a);if (a == 1){printf("请输入您修改后的项目名称:");scanf("%s", m);strcpy(p->xiangmu, m);printf("修改成功!");}else if (a == 0){printf("请输入您要修改的学院:");scanf("%s", n);for (k = 0; k < N; k++){if (strcmp(*((p->name) + k), n) == 0)break;}printf("请输入你要修改的项目信息类型:\n");printf("1、学院名称\n2、该学院该项目的成绩\n");scanf("%d", &item);switch (item){case 1:printf("请输入修改后的学院名称:");scanf("%s", m);strcpy(*((p->name) + k), m);printf("修改成功");break;case 2:printf("请输入您修改后的该学院该项目的成绩:");scanf("%f", (p->score) + k);printf("修改成功");break;default:printf("您输入的指令错误!");break;}}elseprintf("您输入错误!");}
}//删除项目的相关信息
void ListDelete(Proj *L)
{char n[40];Proj *p = L->next, *pre = L; //定义p指针指向头节点的指向,定义pre指向头节点,pre始终指向p的前驱节点if (p == NULL)printf("数据为空,无法删除!");else{printf("请输入您要删除的项目名称:");scanf("%s", n);while (strcmp(p->xiangmu, n) != 0){pre = p;p = pre->next;if (p == NULL){printf("没有找到相关信息,无法删除\n");return;}}pre->next = p->next;free(p);printf("删除成功");}
}//计算每个运动会项目的学院成绩排名
void PerRank(Proj *L)
{int i, j, k;float t;char na[40] = {' '};Proj *p = L->next;if (p == NULL)printf("数据为空,无法排序!");else{while (p != NULL){for (i = 0; i < N; i++){for (j = 0; j < N - i - 1; j++){if (*((p->score) + j) < *((p->score) + j + 1)){t = *((p->score) + j);*((p->score) + j) = *((p->score) + j + 1);*((p->score) + j + 1) = t;strcpy(na, *((p->name) + j));strcpy(*((p->name) + j), *((p->name) + j + 1));strcpy(*((p->name) + j + 1), na);}}}for (k = 0; k < N; k++)*((p->no) + k) = k + 1;p = p->next;}}
}//所有项目每个学院的总成绩和排名;
void SumRank(Proj *L)
{int i, j, k;float t;SumNo s[N],s0;Proj *p = L->next;for (i = 0; i < N; i++){strcpy(s[i].name, *((p->name) + N - i - 1));s[i].sum = 0;}if (p == NULL)printf("数据为空!");else{while (p != NULL){for(i=0;i<N;i++)s[i].sum += *((p->score) + i);p = p->next;}for (j = 0; j < N; j++){for (k = 0; k < N - j - 1; k++){if(s[k].sum>s[k+1].sum){s0 = s[k];s[k] = s[k + 1];s[k + 1]= s0;}}}p = L->next;printf("学院名称\t总成绩\t\t总排名\n");for (i = N - 1; i >= 0; i--){printf("%s\t\t", s[i].name);printf("%.2f\t\t", s[i].sum);printf("%d\t\t", N - i);printf("\n");}}
}
//输入项目的相关信息
void Input(Proj *p, int i)
{int j;printf("请输入第%d个比赛项目名称:", i + 1);scanf("%s", p->xiangmu);for (j = 0; j < N; j++){printf("请输入第%d个学院的名称:", j + 1);scanf("%s", (p->name) + j);printf("请输入该学院的该项目的成绩:");scanf("%f", (p->score) + j);}
}//输出全部项目信息
void Output(Proj *L)
{int k;Proj *p = L->next;while (p != NULL){printf("\t\t项目:%s\n\n", p->xiangmu);printf("学院名称\t单项成绩\t单项名次\n\n");for (k = 0; k < N; k++){printf("%s\t\t", *((p->name) + k));printf("%.2f\t\t", *((p->score) + k));printf("%d\t\n", *((p->no) + k));}printf("\n\n");p = p->next;}
}
//校运动会项目管理系统的菜单
void Menu()
{printf("\n\n");printf("\t\t\t===================校运动会项目管理系统==================\n");printf("\t\t\t* 作者:XXX  班级:人工智能XXXX  学号:XXXXXXXXX            *\n");printf("\t\t\t*                                                       *\n");printf("\t\t\t*          1>. 录入运动会项目信息                       *\n");printf("\t\t\t*          2>. 查找某个运动会项目信息                   *\n");printf("\t\t\t*          3>. 修改某个运动会项目信息                   *\n");printf("\t\t\t*          4>. 删除某个运动会醒目信息                   *\n");printf("\t\t\t*          5>. 每个运动会项目的学院成绩排名             *\n");printf("\t\t\t*          6>. 所有项目每个学院的总成绩和排名           *\n");printf("\t\t\t*          0>. 退出管理系统                             *\n");printf("\t\t\t*                                        欢迎使用本系统!*\n");printf("\t\t\t=========================================================\n");printf("\t\t\t输入选项,按回车进入选项:                                \n");
}

//主菜单截图

C语言实现校运动会项目管理系统相关推荐

  1. [内附完整源码和文档] 基于C语言的校运动会项目管理系统

    前言 随着计算机技术的普及与提高,越来越多的人使用计算机,计算机以其强大的性能价格优势给人们的工作.学习和生活带来极大的方便.计算机代替人工处理一些事务已成为必然.整个人类社会已进入高度信息化,人们对 ...

  2. C/C++校运动会成绩管理系统

    C/C++校运动会成绩管理系统 该系统可以记录校运动会全部运动项目的成绩.得分和排名情况,系统功能项以菜单形式显示.项目包括50米.100米.200米.400米.1500米.各接力项目.跳高.立定跳远 ...

  3. 校运动会c语言程序编写,校运动会管理系统报告C语言(含完整代码)

    <校运动会管理系统报告C语言(含完整代码)>由会员分享,可在线阅读,更多相关<校运动会管理系统报告C语言(含完整代码)(20页珍藏版)>请在人人文库网上搜索. 1.目 录陈一. ...

  4. c语言学生请假系统项目总结,学生管理系统项目总结.doc

    学生管理系统项目总结.doc 学生管理系统项目总结 作为软件工程经常出现的课题学生信息管理系统,完成 这个系统后培训老师一般要我们写一份总结报告,那么这份 总结报告怎么写?下面为你带来学生管理系统项目 ...

  5. 基于C语言编程的职工工资管理系统项目的设计与开发

    文章目录 基于C语言编程的职工工资管理系统项目的设计与开发 一.需求分析 二.项目环境 2.1.项目创建过程 2.2.向项目添加头文件与源文件 三.职工工资管理系统模块功能 3.1.系统总体设计框图 ...

  6. JAVA计算机毕业设计运动会成绩管理系统Mybatis+源码+数据库+lw文档+系统+调试部署

    JAVA计算机毕业设计运动会成绩管理系统Mybatis+源码+数据库+lw文档+系统+调试部署 JAVA计算机毕业设计运动会成绩管理系统Mybatis+源码+数据库+lw文档+系统+调试部署 本源码技 ...

  7. java毕业生设计运动会成绩管理系统计算机源码+系统+mysql+调试部署+lw

    java毕业生设计运动会成绩管理系统计算机源码+系统+mysql+调试部署+lw java毕业生设计运动会成绩管理系统计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目架构:B/S架构 ...

  8. 免费开源的工程师项目管理系统

    EngineerCMS就是专门为工程师打造的项目管理系统,资料管理平台,协作平台,知识管理平台-- 在线demo:EngineerCMS 系统特点: 采用go语言开发,运行文件为编译后的二进制exe文 ...

  9. 基于SSM体育竞赛运动会成绩管理系统JAVA毕业设计源码介绍

    这是新款的基于B/S和Web开发的JavaWeb的SSM(Spring+SpringMVC+MyBatis)源码,包含源码数据库论文答辩ppt等,开发工具Idea支持eclipse,MySQL功能也比 ...

  10. 【免费赠送源码】Springboot科研项目管理系统3lk11计算机毕业设计-课程设计-期末作业-毕设程序代做

    [免费赠送源码]Springboot科研项目管理系统3lk11计算机毕业设计-课程设计-期末作业-毕设程序代做 [免费赠送源码]Springboot科研项目管理系统3lk11计算机毕业设计-课程设计- ...

最新文章

  1. 安装ORACLE RAC时修改ssh端口导致CRS无法安装
  2. php循环语句for while do while的用法
  3. 一张图说明我们为什么要关注 HTML5
  4. java 小题目_java一个小题目
  5. 【elasticsearch】ES启动报错 uncaught exception in thread [main]org.elasticsearch.bootstrap.Startup
  6. MyISAM的key_buffer_size和InnoDB的innodb_buffer_pool_size
  7. 合并排序时间复杂度推导
  8. C++ PostMessage 模拟键盘鼠标
  9. eclipse卸载插件
  10. 30余种加密编码类型的密文特征分析(建议收藏)
  11. 美国佐治亚理工学院计算机博士,大神offer | 恭喜G同学全奖录取佐治亚理工学院-数学博士!...
  12. 换个角度来看看C++中的左值、右值、左值引用、右值引用
  13. GUARDED_BY(c) 和 PT_GUARDED_BY(c)
  14. JS网页特效实例:让网页前进和后退
  15. 面矢量栅格化(python)
  16. ubuntu 18.04下greenplum安装笔记(二)安装Greenplum的失败的尝试
  17. 【智能优化算法】鸡群算法 (Chicken Swarm Optimization, CSO),2014
  18. 自媒体:公众号内容可以同步到头条吗
  19. 计算机图形剪裁程序说明,计算机图形学实验报告实验2裁剪算法实验
  20. pd安装win10错误-安全启动功能发现未经授权更改固件

热门文章

  1. java+junit百科_JUnit介绍
  2. springboot整合rpc远程调用_SpringBoot—-JsonRpc跨语言远程调用协议 - Java天堂
  3. python中dir函数的作用_【Python】Python内置函数dir详解
  4. 模拟SAP ALV下载XLSX文件
  5. 查看微信小程序网页源代码
  6. Go语言之 下载安装及第一个代码
  7. 记录免费的学习资源-视频教程
  8. Hero传奇引擎47个疑难问题解答
  9. c语言程序设计2020年版,2020年新版c语言程序设计题库.docx
  10. Android底层开发实战PDF