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

Laila ·
更新时间:2024-11-13
· 1056 次阅读

本文实例为大家分享了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语言 运动

需要 登录 后方可回复, 如果你还没有账号请 注册新账号