怎么用C语言实现校运动会项目管理系统
短信预约 -IT技能 免费直播动态提醒
本篇内容主要讲解“怎么用C语言实现校运动会项目管理系统”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用C语言实现校运动会项目管理系统”吧!
源码
#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; } } else printf("您输入错误!"); }}//删除项目的相关信息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语言实现校运动会项目管理系统”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341