运动会管理系统c语言n-s流程图,设计一个运动会管理系统.ppt

设计一个运动会管理系统

设计一个运动会管理系统 组员: 题目:设计一个运动会管理系统 系统功能的基本要求: (1)初始化输入:N-参赛学校总数,M-男子竞赛项目数,W-女子竞赛项目数; 各项目名次取法有如下几种: ① 取前6名:第1名得分 7,第2名得分 5,第3名得分4,第4名得分3,第5名得分2,第5名得分1 ② 取前3名:第1名得分 5,第2名得分 3,第3名得分2; ③ 用户自定义:各名次权值由用户指定。 (2)由程序提醒用户填写比赛结果,输入各项目获奖运动员的信息。 (3)所有信息记录完毕后,用户可以查询各个学校的比赛成绩,生成团体总分报表,查看参赛学校信息和比赛项目信息等。 系统分为几个模块: 主菜单模块 信息输入模块 信息查询模块 运动员信息输入 比赛项目信息输入 参赛学校信息输入 运动员信息查询 比赛项目信息查询 参赛学校信息查询 进入退出模块 参赛运动员成绩录入 本设计所涉及的三个类:student类、match类、school类。 class Student //学生类 { public: char name[10]; char sex; char college[10]; char item[10]; int position; int score; int age; }; class Match //比赛类 { public: int number; char call[10]; char time[10]; char place[20]; }; class school //学校类 {public: char sname[20]; char address[20]; int pnumber; }; 1、主菜单模块 void menu() //主菜单 { int n; cout<>n; if(n==1) writein(); else if(n==2) search(); else if(n==3) { exit();} else { cout<>j; switch(j) { case 1:writen1();break; case 2:writen2();break; case 3:writen3();break; case 4:writen4();break; case 5:menu();break; default:cout<>stu[i].name; loop_1:cout<>stu[i].sex; if(stu[i].sex!='m'&&stu[i

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目 录 摘 要 2 第1章 需求分析 2 第2章 概要设计 2 2.1系统总体设计框架 2 2.2系统功能模块 3 第3章 详细设计 6 第4章 主要源程序代码 7 第5章 调试分析过程描述 17 第6章 总结 19 参考文献 19 学生课程设计报告评分表 20 校际运动会管理系统 摘 要 本文介绍了利用C语言对校际运动会管理系统进行设计的过程,从系统总体框架,功 能分析,模块设计与分析,类的设计与分析,功能测试等环节通过Microsoft Visual C++ 6.0对校际运动会管理系统进行详细的设计,并介绍了校际运动会管理系统如何运用,本 次设计是基于C语言的程序设计,利用了C语言的强大功能,设计出的程序运行良好,可 以在校际运动会管理系统等方面进行良好的运用。 关键词:C语言,班级档案管理系统,Microsoft Visual C++ 6.0 一、需求分析 (1)信息初始化 输入:N 参赛学校总数,M 男子竞赛项目数, W 女子竞赛项目数; 各项目名次取法有以下几种: 取前5名:第一名得分 7,第二名得分5,第三名得分3,第四名得分2,第五名得分1; 取前3名:第一名得分5,第二名得分3,第三名得分2; 用户自定义:各名次权值由用户指定。 (2)提醒用户填写比赛结果,输入各项目获奖运动员信息。 (3)所有信息记录完毕后,用户可以查询各个学校的比赛成绩,生成团体总分报表,察 看参赛学校信息和比赛项目信息等。 二、概要设计 分析整个系统,根据以上的需求分析及设计要求,可将整个系统的设计分为以下五个 模块:信息输入、录入比赛结果、查询信息、退出. 1. 系统总体设计框架 2. 系统功能模块 各功能模块设计模块 信息输入模块 一是参赛学校信息,二是参赛运动员信息,三是比赛项目信息,分别输入并保存 void Information() { int n,w ; do { puts("\n\n\n"); puts("\t\t***^__^ Welcome to load 信息录入 system! ^__^***\n"); puts("\t\t*************************MENU*************************\n"); puts("\t\t******** 1.saveathlete **********\n"); puts("\t\t******** 2.saveschool **********\n"); puts("\t\t******** 3.saveprogram() **********\n"); puts("\t\t******** 4.back **********\n"); puts("\t\t***************************************\n"); printf("Choic your number(1-4):[ ]\b\b"); scanf("%d",&n); if (n<1""n>4) { w=1; getchar(); } else w=0; } while (w==1); switch(n) { case 1 : saveathlete(); break;// 保存运动员信息子函数 case 2 : saveschool(); break;//保存学校信息子函数 case 3 : saveprogram();break;//保存项目比赛信息子函数 case 4 : exit(0); } } 结果录入模块 (3)查询信息模块 [分析] 查询信息模块提供按不同方式查询各种信息机返回功能,其中各功能模块用菜单方式 选择。菜单部分也可写成函数。 3. 详细设计 1.主函数 主函数一般设计的较为简洁,只提供输入、功能处理和输出部分的函数调用。其中各 功能模块用菜单方式选择。另外菜单部分也可以写成函数。 2.流程图 [程序] void main() { menu(); } void menu() { int n,w1; do { puts("\t\t***^__^ Welcome to load sports system! ^__^***\n"); puts("\t\t************************MENU*************************\n"); puts("\t\t******** 1.Enter the information **************\n"); puts("\t\t******** 2.Score 比赛结果录入 **************\n"); puts("\t\t******** 3.Search **************\n"); puts("\t\t*******
以下是生成校际运动会管理系统C语言代码: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_SCHOOLS 50 // 参赛学校总数最大值 #define MAX_EVENTS 10 // 竞赛项目数最大值 #define MAX_ATHLETES 100 // 运动员数最大值 // 定义结构体:运动员信息 typedef struct { char name[20]; // 姓名 int school_id; // 学校编号 int event_id; // 项目编号 int rank; // 名次 float score; // 成绩 } Athlete; // 定义结构体:学校信息 typedef struct { char name[20]; // 学校名称 float score; // 总分 } School; // 定义结构体:项目信息 typedef struct { char name[20]; // 项目名称 int method; // 取名次方法:1-前5名,2-前3名,3-用户自定义 float scores[5]; // 前5名得分或前3名得分 } Event; int main() { int N, M, W; // 参赛学校总数,男子竞赛项目数,女子竞赛项目数 int i, j, k, l; // 循环计数器 Athlete athletes[MAX_ATHLETES]; // 运动员数组 School schools[MAX_SCHOOLS]; // 学校数组 Event events[MAX_EVENTS]; // 项目数组 int athlete_count = 0; // 运动员数量 // 初始化输入 printf("请输入参赛学校总数、男子竞赛项目数、女子竞赛项目数:"); scanf("%d %d %d", &N, &M, &W); // 初始化项目 for (i = 0; i < M + W; i++) { printf("请输入第%d个项目名称:", i + 1); scanf("%s", events[i].name); printf("请选择第%d个项目取名次方法(1-前5名,2-前3名,3-用户自定义):", i + 1); scanf("%d", &events[i].method); if (events[i].method == 1) { events[i].scores[0] = 7; events[i].scores[1] = 5; events[i].scores[2] = 3; events[i].scores[3] = 2; events[i].scores[4] = 1; } else if (events[i].method == 2) { events[i].scores[0] = 5; events[i].scores[1] = 3; events[i].scores[2] = 2; } else if (events[i].method == 3) { printf("请依次输入第%d个项目前5名得分:", i + 1); for (j = 0; j < 5; j++) { scanf("%f", &events[i].scores[j]); } } } // 输入比赛结果 printf("请输入比赛结果:\n"); for (i = 0; i < M + W; i++) { printf("请输入第%d个项目的前%d名:\n", i + 1, events[i].method == 3 ? 5 : events[i].method); for (j = 0; j < (events[i].method == 3 ? 5 : events[i].method); j++) { printf("请输入第%d名运动员所在学校编号、姓名和成绩:", j + 1); scanf("%d %s %f", &athletes[athlete_count].school_id, athletes[athlete_count].name, &athletes[athlete_count].score); athletes[athlete_count].event_id = i; athletes[athlete_count].rank = j + 1; athlete_count++; } } // 计算学校得分 for (i = 0; i < N; i++) { schools[i].score = 0; for (j = 0; j < M + W; j++) { float score_sum = 0; int count = 0; for (k = 0; k < athlete_count; k++) { if (athletes[k].school_id == i && athletes[k].event_id == j) { count++; if (athletes[k].rank <= (events[j].method == 3 ? 5 : events[j].method)) { score_sum += events[j].scores[athletes[k].rank - 1]; } } } if (count > 0) { schools[i].score += score_sum / count; } } } // 查询功能 int option; do { printf("\n请选择操作:\n"); printf("1. 查询各个学校的比赛成绩\n"); printf("2. 生成团体总分报表\n"); printf("3. 查看参赛学校信息\n"); printf("4. 查看比赛项目信息\n"); printf("5. 退出\n"); printf("请选择:"); scanf("%d", &option); switch (option) { case 1: // 查询各个学校的比赛成绩 printf("学校编号\t学校名称\t总分\n"); for (i = 0; i < N; i++) { printf("%d\t\t%s\t\t%.2f\n", i, schools[i].name, schools[i].score); } break; case 2: // 生成团体总分报表 printf("团体总分报表如下:\n"); printf("学校名称"); for (i = 0; i < M + W; i++) { printf("\t%s", events[i].name); } printf("\t总分\n"); for (i = 0; i < N; i++) { printf("%s", schools[i].name); float event_scores[MAX_EVENTS] = {0}; for (j = 0; j < M + W; j++) { float score_sum = 0; int count = 0; for (k = 0; k < athlete_count; k++) { if (athletes[k].school_id == i && athletes[k].event_id == j) { count++; if (athletes[k].rank <= (events[j].method == 3 ? 5 : events[j].method)) { score_sum += events[j].scores[athletes[k].rank - 1]; } } } if (count > 0) { event_scores[j] = score_sum / count; } printf("\t%.2f", event_scores[j]); schools[i].score += event_scores[j]; } printf("\t%.2f\n", schools[i].score); } break; case 3: // 查看参赛学校信息 printf("学校编号\t学校名称\n"); for (i = 0; i < N; i++) { printf("%d\t\t%s\n", i, schools[i].name); } break; case 4: // 查看比赛项目信息 printf("项目编号\t项目名称\t取名次方法\t得分\n"); for (i = 0; i < M + W; i++) { printf("%d\t\t%s\t\t%d\t\t", i, events[i].name, events[i].method); for (j = 0; j < (events[i].method == 3 ? 5 : events[i].method); j++) { printf("%.2f ", events[i].scores[j]); } printf("\n"); } break; case 5: // 退出 break; default: // 无效操作 printf("无效操作!\n"); break; } } while (option != 5); return 0; } ``` 注意:以上代码仅为示例,仍有改进空间。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值