1、需求分析

  • 问题阐述:

(1)在”学校运动会管理系统”中,设有n个单位参加比赛(单位可是学院、系、年级等,应可设置),学院与个人可以选择参加项目,运动员参加项目应有限制,如最多参加3项。

(2)各项目名次应可设置,随系统环境环境而变化,如:

参赛人数超过6人,取前5名:第一名7分,第二名5分,第三名3分,第四名2分,第五名1分;

参赛人数不超过6人,取前3名:第一名5分,第二名3分,第三名2

参赛项目人数不足4人则取消项目

(3)系统设置内容

参赛单位名称

比赛项目设置

运动员参赛项目限制

选取名次设置

  1. 基本要求:

    1. 数据备份
    2. 比赛成绩自动统计
    3. 比赛成绩查询
    4. 秩序册生成
    5. 参赛信息查询
    6. 运动员报名登记
    7. 参赛项目发布

2、概要设计

通过使用数据结构的知识,将对应的信息存储在对应数组和……中,并写入txt文件达到数据备份的作用,再通过数组中值的比较实现信息查询、修改等功能。

3、详细设计

菜单:通过switch case语句调用对应方法实现菜单界面功能选择

录入信息:打开data.txt文件,在判定文件状态后,通过scanf语句将数据写入结构数组对应位置,关闭文件

信息查询:打开data.txt文件,在判定文件状态后,通过比对所输入的数据与结构数组中的数据,将其对应的结构数据的其他数据一同输出,关闭文件

信息修改:打开data.txt文件,在判定文件状态后,通过比对所输入的数据与结构数组中的数据,将其对应的结构数据进行修改,关闭文件

秩序册项目集:将项目相关信息以及相关选手信息进行排列输出,得到整体的校运会项目时间秩序册。

定义结构体DATA(姓名、学院、项目、成绩)来传递对象信息,用FORMAT格式化输出,定义文件指针变量,实现打开关闭文件写入读出数据进行数据存储。

4、用户手册

  1. 输入密码123456按回车后进入运动会管理系统
  2. 进入界面之后通过文字便可以了解逐步的操作
  3. 显示所有信息指显示目前已经录入的所有运动员的信息
  4. 查询单一项目信息指显示一个项目的选手的相关信息
  5. 查询单一学院信息指显示一个学院的选手的相关信息
  6. 项目表是运动会的项目表
  7. 秩序册是运动会流程大致展示

5、测试结果

界面展示:

选项一:

将信息录入data.txt 文件中:

6、源代码

//
//   created by stu_kk on 2022/05/01
//
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define L sizeof(ID)
#define FORMAT "\t\t\t%-12s%-\t\t%-15s%-\t\t%-15s%-\t\t%-60s"
#define DATA ids[i].name, ids[i].xy, ids[i].xm,ids[i].score
int n;
int i = 0;
int j = 0;
int c;
int k;
FILE *p; //定义指向FILE类型文件的指针变量
char name[12];
typedef struct
{char name[12]; //姓名char xy[15];    //学院 char xm[15];    //项目 char score[60]; //成绩
} ID;               //声明新的类型名ID 代表上面结构体类型
ID ids[100];
void menu() //菜单
{system("cls");printf("\n\n\n");printf("\t\t\t\t|------------------------------------------------------|\n");printf("\t\t\t\t|------------------------------------------------------|\n");printf("\t\t\t\t|                                                      |\n");printf("\t\t\t\t|                校运会信息管理系统                    |\n");printf("\t\t\t\t|                                                      |\n");printf("\t\t\t\t|     1.录入运动员信息         2.查询运动员信息        |\n");printf("\t\t\t\t|                                                      |\n");printf("\t\t\t\t|     3.修改运动员信息         4.删除运动员信息        |\n");printf("\t\t\t\t|                                                      |\n");printf("\t\t\t\t|     5.显示所有信息           6.查询单一项目信息      |\n");printf("\t\t\t\t|                                                      |\n");printf("\t\t\t\t|     7.查询单一学院信息       8.项目表                |\n");printf("\t\t\t\t|                                                      |\n");printf("\t\t\t\t|     9.查看秩序册             0.退出系统              |\n");printf("\t\t\t\t|                                                      |\n");printf("\t\t\t\t|------------------------------------------------------|\n");printf("\t\t\t\t|------------------------------------------------------|\n");printf("\t\t\t\t|请在(0-9)选择要进行的操作!\n"); //菜单的主页面
}void all() //全部运动员信息展示
{system("cls"); //清屏printf("\n\n\n\n");p = fopen("data.txt", "rb"); //打开文件并将fopen函数的返回值赋给指针变量pj = 0;while (!feof(p))                    //判断p指向的文件是否结束if (fread(&ids[j], L, 1, p) == 1) //将p指向的文件中读入结构体数组ids的一个元素 每次读入一个 则读入成功 其返回值为1j++;                       //每读一个 j就加1fclose(p);                           //把p指向的文件关闭 以后p不再指向该文件if (j == 0){printf("\t\t\t\t目前没有运动员信息\n\t\t\t");system("pause");return;}printf("\t\t\t姓名\t\t\t学院\t\t\t项目\t\t\t成绩\n");for (i = 0; i < j; i++) //输出运动员信息{printf(FORMAT, DATA);printf("\n");}printf("\t\t\t输入任意键返回主界面\n\t");system("pause");
}void input()
{system("cls"); //清屏printf("\n\n\n");if ((p = fopen("data.txt", "a+")) == NULL) //打开文件,先检查是否有错,有错则输出无法打开文件{printf("\t\t\t\t\t无法打开文件\n\t\t\t\t\t");system("pause");return;}while (!feof(p)) //判断p指向的文件是否结束{if (fread(&ids[j], L, 1, p) == 1) //将p指向的文件中读入结构体数组ids的一个元素 每次读入一个 则读入成功 其返回值为1j++;}fclose(p); //把p指向的文件关闭 以后p不再指向该文件if (j == 0)printf("\t\t\t\t\t目前没有运动员\n");else{system("cls"); //清屏printf("\n\n\n\n");all();}if ((p = fopen("data.txt", "wb")) == NULL) //打开文件,先检查是否有错,有错则输出无法打开文件,p指向该文件{printf("\t\t\t\t\t文件无法打开\n\t\t\t\t\t");system("pause");return;}for (i = 0; i < j; i++) //建立运动员信息fwrite(&ids[i], L, 1, p);printf("\t\t\t\t\t输入1开始建立运动员信息 输入0结束\n\t\t\t\t\t");scanf("%d", &c);while (c){printf("\t\t\t\t\t输入运动员姓名\n\t\t\t\t\t");scanf("%s", &ids[j].name);for (i = 0; i < j; i++)if (strcmp(ids[j].name, ids[i].name) == 0){printf("\t\t\t\t\t该运动员已存在\n\t\t\t\t\t");system("pause");fclose(p);return;}printf("\t\t\t\t\t学院:\n\t\t\t\t\t");scanf("%s", &ids[j].xy);printf("\t\t\t\t\t项目:\n\t\t\t\t\t");scanf("%s", &ids[j].xm);printf("\t\t\t\t\t成绩:\n\t\t\t\t\t");scanf("%s", &ids[j].score);if (fwrite(&ids[j], L, 1, p) != 1){printf("\t\t\t\t\t写入失败\n\t\t\t\t\t");system("pause");return;}else{printf("\t\t\t\t\t运动员信息 %s 写入成功\n", &ids[j].name);j++;}printf("\t\t\t\t\t是否继续输入?输入1继续 输入0结束\n\t\t\t\t\t");scanf("%d", &c);}fclose(p);printf("\t\t\t\t\t已关闭文件\n");printf("\t\t\t\t\t任意键返回主界面\n\t\t\t\t\t");system("pause");
}void search()
{system("cls");printf("\n\n\n\n");if ((p = fopen("data.txt", "rb")) == NULL){printf("\t\t\t\t\t打开文件失败\n\t\t\t\t\t");system("pause");return;}while (!feof(p))if (fread(&ids[j], L, 1, p) == 1)j++;fclose(p);if (j == 0){printf("\t\t\t\t\t目前没有运动员信息\n\t\t\t\t\t");system("pause");return;}printf("\t\t\t\t\t请输入要查找的运动员姓名\n\t\t\t\t\t");scanf("%s", name);for (i = 0; i < j; i++)if (strcmp(ids[i].name, name) == 0){printf("\t\t\t\t\t已找到运动员\n");printf("\t\t\t\t\t是否显示此运动员? 输入1显示 输入0不显示\n\t\t\t\t\t");scanf("%d", &c);if (c){printf("\t\t\t姓名\t\t\t学院\t\t\t项目\t\t\t成绩\t\t\t\t\n");printf(FORMAT, DATA);}break;}if (i == j)printf("\t\t\t\t\t未查询到该运动员\n");printf("\t\t\t\t\t任意键返回主页面\n\t\t\t\t\t");system("pause");
}void updata()
{system("cls");printf("\n\n\n\n");if ((p = fopen("data.txt", "rb")) == NULL){printf("\t\t\t\t\t无法打开文件\n\t\t\t\t\t");system("pause");return;}while (!feof(p)){if (fread(&ids[j], L, 1, p) == 1)j++;}if (j == 0){printf("\t\t\t\t\t目前还没有运动员\n");fclose(p);return;}fclose(p);all();printf("\t\t\t\t\t输入你想修改的运动员信息\n");printf("\t\t\t\t\t姓名:");scanf("%s", name);for (i = 0; i < j; i++){if (strcmp(name, ids[i].name) == 0){printf("\t\t\t\t\t已找到该运动员,请修改\n");printf("\t\t\t\t\t姓名:");scanf("%s", &ids[i].name);printf("\t\t\t\t\t学院:");scanf("%s", &ids[i].xy);printf("\t\t\t\t\t项目:");scanf("%s", &ids[i].xm);printf("\t\t\t\t\t成绩:");scanf("%s", &ids[i].score);fopen("data.txt", "wb");for (c = 0; c < j; c++)if (fwrite(&ids[c], L, 1, p) != 1){printf("\t\t\t\t\t没有成功保存\n");system("pause");return;}printf("\t\t\t\t\t运动员 %s 的信息修改成功\n", name);fclose(p);break;}}if (i == j)printf("\t\t\t\t\t没有找到该运动员\n");printf("\t\t\t\t\t输入任意键返回主界面\n\t\t\t\t\t");system("pause");
}
void dlt()
{system("cls");printf("\n\n\n\n");if ((p = fopen("data.txt", "r+")) == NULL){printf("\t\t\t\t\t目前没有文件\n\t\t\t\t\t");system("pause");return;}j = 0;while (!feof(p)){if (fread(&ids[j], L, 1, p) == 1){j++;}}fclose(p);if (j == 0){printf("\t\t\t\t\t目前没有运动员信息\n\t\t\t\t\t");system("pause");return;}printf("\t\t\t\t\t输入你想删除的运动员姓名: ");scanf("%s", name);for (i = 0; i < j; i++){if (strcmp(name, ids[i].name) == 0){printf("\t\t\t\t\t已找到该运动员,是否删除 1 确定 0 取消\n");printf("\t\t\t姓名\t\t\t学院\t\t\t项目\t\t\t成绩\t\t\t\t\n");printf(FORMAT, DATA);printf("\n\t\t\t");scanf("%d", &k);if (k){for (n = i; n < j; n++){ids[n] = ids[n + 1];}j -= 1;}break;}}fopen("data.txt", "wb");for (i = 0; i < j; i++){if (fwrite(&ids[i], L, 1, p) != 1){printf("\t\t\t\t\t没有修改成功\n");system("pause");return;}}printf("\t\t\t\t\t运动员 %s 的信息删除成功\n", name);fclose(p);printf("\t\t\t\t\t输入任意键返回主界面\n\t\t\t\t\t");system("pause");
}void chaxunxiangmu()
{system("cls");printf("\n\n\n\n");char proname[15];int i; if ((p = fopen("data.txt", "r+")) == NULL){printf("\t\t\t\t\t目前没有文件\n\t\t\t\t\t");system("pause");return;}j = 0;while (!feof(p)){if (fread(&ids[j], L, 1, p) == 1){j++;}}fclose(p);if (j == 0){printf("\t\t\t\t\t目前没有项目信息\n\t\t\t\t\t");system("pause");return;}printf("\t\t\t\t\t请输入任意一个项目的名称以获取相关的信息\n"); scanf("%s", proname);while(!feof(p)){int m; int p=0;if(strcmp(proname, ids[m].xm) == 0&&p==0){printf("\t\t\t姓名\t\t\t学院\t\t\t项目\t\t\t成绩\t\t\t\t\n");p=1;}if(strcmp(proname, ids[m].xm) == 0){printf("\t\t\t%s\t\t\t%s\t\t\t%s\t\t\t%s\t\t\t\t\n",ids[m].name,ids[m].xy,ids[m].xm,ids[m].score);printf("\n");}m++;   }printf("\t\t\t\t\t项目 %s 的信息查找成功\n", proname);printf("\t\t\t\t\t输入任意键返回主界面\n\t\t\t\t\t");system("pause");
}void chaxunxueyuan()
{system("cls");printf("\n\n\n\n");char proname[15];int i; if ((p = fopen("data.txt", "r+")) == NULL){printf("\t\t\t\t\t目前没有文件\n\t\t\t\t\t");system("pause");return;}j = 0;while (!feof(p)){if (fread(&ids[j], L, 1, p) == 1){j++;}}fclose(p);if (j == 0){printf("\t\t\t\t\t目前没有项目信息\n\t\t\t\t\t");system("pause");return;}printf("\t\t\t\t\t请输入任意一个学院的名称以获取相关的信息\n"); scanf("%s", proname);while(!feof(p)){int m; int p=0;if(strcmp(proname, ids[m].xy) == 0&&p==0){printf("\t\t\t姓名\t\t\t学院\t\t\t项目\t\t\t成绩\t\t\t\t\n");p=1;}if(strcmp(proname, ids[m].xy) == 0){printf("\t\t\t%s\t\t\t%s\t\t\t%s\t\t\t%s\t\t\t\t\n",ids[m].name,ids[m].xy,ids[m].xm,ids[m].score);printf("\n");}m++;   }fopen("data.txt", "wb");printf("\t\t\t\t\t学院 %s 的信息查找成功\n", proname);fclose(p);printf("\t\t\t\t\t输入任意键返回主界面\n\t\t\t\t\t");system("pause");}void xmxx(){system("cls");printf("\n\n\n");printf("\t\t\t\t|----------------------------------------------|\n");printf("\t\t\t\t|----------------------------------------------|\n");printf("\t\t\t\t|                                              |\n");printf("\t\t\t\t|                项目信息                      |\n");printf("\t\t\t\t|田赛:                                        |\n");printf("\t\t\t\t|铅球投掷(预赛、决赛)                          |\n");printf("\t\t\t\t|跳高    (预赛、决赛)                          |\n");printf("\t\t\t\t|----------------------------------------------|\n");printf("\t\t\t\t|径赛:                                        |\n");printf("\t\t\t\t|100m跑  (预赛、决赛)                          |\n");printf("\t\t\t\t|200m跑  (预赛、决赛)                          |\n");printf("\t\t\t\t|400m跑  (预赛、决赛)                          |\n");printf("\t\t\t\t|800m跑  (预赛、决赛)                          |\n");printf("\t\t\t\t|----------------------------------------------|\n");printf("\t\t\t\t|----------------------------------------------|\n");printf("\t\t\t\t\t输入任意键返回主界面\n\t\t\t\t\t");system("pause");}
void zhixuce(){system("cls");printf("\n\n\n");printf("\t\t\t\t|----------------------------------------------|\n");printf("\t\t\t\t|----------------------------------------------|\n");printf("\t\t\t\t|                                              |\n");printf("\t\t\t\t|                运动会秩序册                  |\n");printf("\t\t\t\t|运动会第一天                                  |\n");printf("\t\t\t\t|上午:                                        |\n");printf("\t\t\t\t|   时间              项目                     |\n");printf("\t\t\t\t|8:00~8:40         100m跑  (预赛)            |\n");printf("\t\t\t\t|9:00~10:40        200m跑  (预赛)            |\n");printf("\t\t\t\t|11:00~11:40       400m跑  (预赛)            |\n");printf("\t\t\t\t|----------------------------------------------|\n");printf("\t\t\t\t|下午:                                        |\n");printf("\t\t\t\t|   时间              项目                     |\n");printf("\t\t\t\t|14:00~14:40       800m跑  (预赛)            |\n");printf("\t\t\t\t|15:00~15:40       立定跳远(预赛)            |\n");printf("\t\t\t\t|16:00~16:40       三级跳远(预赛)            |\n");printf("\t\t\t\t|17:00~17:40       铅球投掷(预赛)            |\n");printf("\t\t\t\t|17:00~17:40       跳高    (预赛)            |\n");printf("\t\t\t\t|----------------------------------------------|\n");printf("\t\t\t\t|运动会第二天                                  |\n");printf("\t\t\t\t|上午:                                        |\n");printf("\t\t\t\t|   时间              项目                     |\n");printf("\t\t\t\t|8:00~8:40         100m跑  (决赛)            |\n");printf("\t\t\t\t|9:00~10:40        200m跑  (决赛)            |\n");printf("\t\t\t\t|11:00~11:40       400m跑  (决赛)            |\n");printf("\t\t\t\t|----------------------------------------------|\n");printf("\t\t\t\t|下午:                                        |\n");printf("\t\t\t\t|   时间              项目                     |\n");printf("\t\t\t\t|14:00~14:40       800m跑  (决赛)            |\n");printf("\t\t\t\t|15:00~15:40       立定跳远(决赛)            |\n");printf("\t\t\t\t|16:00~16:40       三级跳远(决赛)            | \n");printf("\t\t\t\t|17:00~17:40       铅球投掷(决赛)            |\n");printf("\t\t\t\t|18:00~18:40       跳高    (决赛)            | \n");printf("\t\t\t\t|----------------------------------------------|\n");printf("\t\t\t\t|----------------------------------------------|\n");system("pause");
}
main()
{char s[20];printf("\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t请输入密码以进入系统:");scanf("%s", s);if (strcmp(s, "123456") == 0)   //密码{void menu();void input();void search();void updata();void dlt();void all();repeat:menu();scanf("%d", &n);while (n){switch (n){case 1:input();break;case 2:search();break;case 3:updata();break;case 4:dlt();break;case 5:all();break;case 6:chaxunxiangmu(); break; case 7:chaxunxueyuan(); break;case 8:xmxx(); break; case 9:zhixuce();break; }goto repeat;}}elseprintf("密码输入错误!系统已关闭!");return 0;
}

选项二:

选项三:

选项四:

删除后如选项五所示

选项五:

数据结构与算法(C语言版)----运动会管理系统相关推荐

  1. 《数据结构与算法 C语言版》—— 3.8习题

    本节书摘来自华章出版社<数据结构与算法 C语言版>一 书中的第3章,第3.8节,作者:徐凤生,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 3.8习题 1名 ...

  2. 《数据结构与算法 C语言版》—— 2.5上机实验

    本节书摘来自华章出版社<数据结构与算法 C语言版>一 书中的第2章,第2.5节,作者:徐凤生,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2.5上机实验 实 ...

  3. 《数据结构与算法 C语言版》—— 2.7习题

    本节书摘来自华章出版社<数据结构与算法 C语言版>一 书中的第2章,第2.7节,作者:徐凤生,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2.7习题 1描 ...

  4. 【数据结构与算法——C语言版】1. 数据结构与算法简介

    概念 数据结构:"一组数据的存储结构" 算法:"操作数据的一组方法" 数据结构是为算法服务的,算法是要作用再特定的数据结构上的. 简言之,在编程实践中,我们可能 ...

  5. 数据结构与算法C语言版—绪论

    1.基本概念和术语 1.数据(data):所有能输入到计算机中去的描述客观事物的符号 数值性数据 非数值性数据(多媒体信息处理) 2.数据元素(data element):数据的基本单位,也称结点(n ...

  6. c语言数据结构算法设计题,数据结构题集(C语言版)算法设计题答案[].doc

    数据结构题集(C语言版)算法设计题答案[].doc 第一章 绪论 1.16 void print_descending(int x,int y,int z)// 按从大到小顺序输出三个数 { scan ...

  7. 《数据结构与算法 Python语言描述》 读书笔记

    已经发布博客 <数据结构与算法 Python语言描述> 读书笔记 第二章 抽象数据类型和Python类 2.1 抽象数据类型abstract data type:ADT 2.1.1 使用编 ...

  8. 数据结构c语言版题库编程,数据结构习题库(c语言版)

    <数据结构习题库(c语言版)>由会员分享,可在线阅读,更多相关<数据结构习题库(c语言版)(104页珍藏版)>请在人人文库网上搜索. 1.wages in arrears. 2 ...

  9. java递归单链表查找中间元素_《数据结构与算法——C语言描述》答案 3.11 查找单链表中的特定元素(递归)...

    转载请注明出处:http://blog.csdn.net/xdz78 #include #include //查找单链表中的特定元素,<数据结构与算法--c语言描述> 3.11 答案 in ...

  10. 数据结构与算法python描述_数据结构与算法——Python语言描述.pdf

    数据结构与算法--Python语言描述.pdf 欢迎加入非盈利Python编学习交流程QQ群783462347,群里免费提供500+本Python书籍! 欢迎加入非盈利Python编程学习交流程QQ群 ...

最新文章

  1. unity球体添加光源_Unity渲染路径——光源种类
  2. DayDayUp:微软最有价值专家MVP申请表格、准备条件、流程等详细攻略
  3. inspinia前端模板怎样修改图标
  4. SSM整合支付宝支付功能
  5. 全面认识Docker和基本指令
  6. linux下僵尸进程(Defunct进程)的产生与避免
  7. Windows下快速删除上万个文件和子目录
  8. java.lang.NumberFormatException: null
  9. 删除win10开始菜单中程序的目录
  10. ROS 教程之 network:多台计算机之间网络通信(1)
  11. java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader couldn‘t find “libtinyWRAP.so“
  12. mac原版镜像下载 macos官方镜像下载
  13. Matlab创建M文件以及程序控制
  14. 超市火灾烟气蔓延及人员疏散的matlab仿真模拟
  15. 以时间作为文件名的后缀
  16. autocad 二次开发 拆分图纸_谈谈AUTOCAD.NET二次开发的一些经验(一)
  17. excel中常用函数index、match、row、column的用法
  18. java 模拟天眼查登陆,scrapy,我想模拟登陆天眼查网站,那个网站要滑动对齐验证,我能怎么办才能模拟登陆成功呢?...
  19. android 清除通知栏,android startForeground去除通知栏
  20. 基本DOS命令---6.关机重启操作命令

热门文章

  1. 长波红外线灯的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  2. AUTOSAR技术分析报告
  3. Unity Monetization 3.0 部分接入文档内容
  4. IMSI、MSISDN、MEID、IMEI
  5. 教大家电脑重装系统后硬盘消失要如何解决
  6. 网络协议和浏览器到网络简单攻防实现的探索(二)
  7. 新手入门电脑和S7 200Smart PLC 的自由口通信
  8. 推荐几个阿里,百度大佬的订阅号给大家
  9. 论文图片格式要求具体有哪些?
  10. 如何通俗地解释什么是网桥?