校际运动会管理系统(报告+源代码)
校运动会管理系统报告C语言(含完整代码)

目录陈一、程序分析与设计 (2)二、流程图 (4)三、源程序清单 (4)四、调试过程 (15)五、程序有待改进的地方 (19)六、本次实习的收获和建议 (19)附录......................................................... 错误!未定义书签。
一、程序分析与设计(标题四号宋体加黑,正文五号宋体,行间距-固定值18,首行缩进2字符)1.题目描述初始化输入:N-参赛院系总数,M-男子竞赛项目数,W-女子竞赛项目数;即要求输入一些基础数据,如院系名称,每个院系参赛选手及选手编号。
竞赛项目名称与代号。
这些数据存储在文本文件中,不需要每次都单条录入。
各项目名次取法有如下几种:取前4名:第1名得分6,第2名得分4,第3名得分2,第4名得分1;由程序提醒用户填写比赛结果,输入各项目获奖运动员的信息。
所有信息记录完毕后,用户可以查询各个院系或个人的比赛成绩,生成团体总分报表,查看参赛院系信息、获奖运动员、比赛项目信息等。
2.需求分析根据题目要求应提供键盘式菜单实现功能选择,还应提供信息的输入操作,由于在程序中提供查询功能所以应有显示、查找等操作。
3.总体设计根据上面的需求分析,可以将这个系统的设计分为1、信息输入模块 2、比赛结果录入模块 3、查询模块。
具体校际运动会管理系统分为信息的输入、结果的输入、学校各个项目的得分的查寻、总体报表的生成。
4.详细设计(1)主函数主函数一般设计的比较简洁,只提供输入,处理和输出部分的函数调用。
其中功能模块用菜单方式选择。
(2)密码登陆函数首先进入欢迎界面,提示用户输入密码进入系统,密码输入次数限制为三次,三次输入错误则退出系统,登陆成功显示菜单栏(3)菜单函数提醒用户根据要求选择功能,以及多次功能选取(4)输入函数进入该功能后提醒用户输入相应信息,即数据结构,数据结构采用结构体的形式,选手结构体成员包括选手的姓名、编号、各项目的成绩排名、选手所在学院等。
校际运动会管理系统

《校际运动会管理系统》程序设计基础课程设计报告二OO八年七月二十九日目录1.课程设计目的 (2)2.课程设计题目描述和要求 (2)3.课程设计报告内容 (3)3.1sport类(lei) (4)3.2 主类及其子类 (4)4.算法描述 (4)5.运算结果 (4)6.源程序及流程图 (5)7.课程设计总结 (20)1:课程设计的目的本程序主要学习类的使用,以及子类的调用,了解函数体的调用case语句使用,for循环,函数的调用,进一步加深对语言程序设计的了解,解决一些简单的程序应用,综合实现程序的利用。
2:校际运动会管理系统2:问题描述(1)初始化输入:N-参赛学校总数,M-男子竞赛项目数,W-女子竞赛项目数;各项目名次取法有如下几种:取前5名:第1名得7分,第2名得5分,第3名得3分,第4名得2分,第5名得1分;取前三名:第一名得5分,第二名得3分,第三名得2分;用户自定义:各名次权值有用户定义。
(2)由程序提醒用户填写比赛结果,输入各项目获奖运动员的信息。
(3)所有信息记录完毕后,用户可以查询各个学校的比赛成绩,生成团体总分报表,查看参赛学校信息和比赛项目信息等。
3:课程设计的基本要求:根据规定的题目,编写程序设计的说明(程序设计文当),程序设计说明包括以下内容:设计简要说明1)程序运行的软硬件环境2)程序的组成模块及每个模块的基本功能3)每个模块的流程图4)程序的使用方法5)源程序的清单6)总结与体会3.课程设计报告内容3.1 第一个程序有一个Point类,该类共有12个函数3.2 第一个程序的类中各个函数作用分别为:void Menu( ); //显示选单void Set1( );//设置竞赛项目总数void Set2( );//设置某项目名次的取法及每一名次的分值void Find( );//查询功能void Set3( );//设置竞赛项目信息void Put( );//打印竞赛项目信息void Set4( );//为某个竞赛项目设定比赛结果信息void List( );//按学校打印成绩void GetReport();//生成报表void Quit( );//退出功能4.算法描述该程序主要采用类的结构,及其应用,公有10函数,在函数中实现嵌套,连接,指针的传递,数组等简单的程序结构。
C语言课程设计校际运动会管理系统

优化策略:根据测试结果进 行代码优化、性能优化等
测试目的:确保系统在各种 情况下都能正常运行
优化效果:提高系统稳定性、 响应速度和用户体验
07
系统部署与维护
系统部署方案与实施
硬件需求:服 务器、网络设 备、存储设备
等
软件需求:操 作系统、数据 库管理系统、 Web服务器等
部署步骤:安 装操作系统、 安装数据库管 理系统、安装 Web服务器、 部署应用程序
系统安全测试与优化
安全测试:对 系统进行安全 漏洞扫描,确
保系统安全
优化措施:加 强系统安全防 护,提高系统
安全性能
安全策略:制 定安全策略, 确保系统安全
运行
安全培训:对 系统管理人员 进行安全培训, 提高安全意识
和技能
系统可用性测试与优化
测试方法:黑盒测试、白盒 测试、灰盒测试等
测试内容:功能测试、性能 测试、兼容性测试等
单击此处添加副标题
C语言课程设计校际运动
会管理系统
汇报人:
目录
01 02 03 04 05 06
添加目录项标题 系统概述
系统需求分析 系统设计 系统实现
系统测试与优化
01
添加目录项标题
02
系统概述
系统的目标和意义
提高校际运动会 的管理效率
方便学生、教师 和管理人员查询 比赛信息
提供实时的比赛 成绩和排名
测试方法: 黑盒测试、 白盒测试、 灰盒测试
测试内容: 功能测试、 性能测试、 兼容性测 试、安全 性测试
测试工具:
JMeter、
Seleniu
m
、
Appium
等
测试结果 分析:找 出问题, 提出优化 方案
运动会管理系统源代码

运动会管理系统源代码include<stdio.h>#include<stdlib.h>#include<string.h>struct student /* 定义链表 */{long num;char name[10];char danwei[10];int xiangmu;int chengji;struct student *next;};struct student *creat(struct student *h); /*s 输入函数 */struct student *findstudent(struct student *h); /* 查找函数 */struct student *sort(struct student *h); /* 排序函数 */main(){int b,c=1;struct student *head,*p,*f; /* 定义表头指针 */head=NULL; /* 创建一个空表 */printf("\t\t\t**********************\n");printf("\t\t\t****运动会管理系统****\t\t\n");printf("\t\t\t**********************\n");do /* 循环使用系统中的功能 */{printf("*************************************************************************\n");printf("\t\t请输入1或2或3进行功能选择\n");printf("\t\t输入1---------------------进行输入功能\n");printf("\t\t输入2---------------------进行查找功能\n");printf("\t\t输入3---------------------进行排序功能\n");printf("*************************************************************************\n"); scanf("%d",&b);switch(b) /* 进入函数 */{case 1:head=creat(head);break;case 2:p=findstudent(head);break;case 3:f=sort(head);break;default:printf("输入错误,请从新输入");}printf("*************************************************************************\n");printf("否进行其他功能?\n");printf("是输入------1,否输入------2:\n");scanf("%d",&c);}while(c==1);}/* 输入功能 */struct student *creat(struct student *h){struct student *p1,*p2; /* 定义链表指针 */p1=p2=(struct student*)malloc(sizeof(struct student)); /* 申请新结点*/printf("\n-------------------------------------------------------\n");printf("请依次输入运动员的号码、姓名、单位、项目(run为1,jump为2,swim为3)、成绩\n学号输入0时,结束输入!\n");printf("\n-------------------------------------------------------\n");if(p2!=NULL)printf("请输入号码:");scanf("%ld",&p2->num); /* 输入结点的值 */if(p2->num!=0){getchar();printf("请输入姓名:");gets(p2->name);printf("请输入单位:");scanf("%s",&p2->danwei);printf("请输入项目 run则输入1 jump则输入2 swim则输入3:");scanf("%d",&p2->xiangmu);printf("请输入成绩:");scanf("%d",&p2->chengji);p2->next=NULL; /* 新结点指针成员的赋值为空 */printf("---------------------------------------------------\n");}while(p2->num!=0){if(h==NULL)h=p2; /* 若为空表,接入表头 */elsep1->next=p2; /* 若为非空表,接入表尾 */p1=p2;p2=(struct student*)malloc(sizeof(struct student)); /* 申请下一个新结点 */if(p2!=NULL){printf("请输入号码:");scanf("%ld",&p2->num); /* 输入结点的值 */if(p2->num!=0){getchar();printf("请输入姓名:");gets(p2->name);printf("请输入单位:");scanf("%s",&p2->danwei);printf("请输入项目 run则输入1 jump则输入2 swim则输入3:");scanf("%d",&p2->xiangmu);printf("请输入成绩:");scanf("%d",&p2->chengji);p2->next=NULL; /* 新结点指针成员的赋值为空 */printf("-----------------------------------------------\n");}}}return h;}/* 查找功能 */struct student *findstudent(struct student *h){int a;struct student *q; /* 定义链表指针 */q=(struct student*)malloc(sizeof(struct student));q=h; /* 接入表头 */printf("输入运动项目:run则输入1 jump则输入2 swim则输入3:\n");scanf("%d",&a);while(q!=NULL){if(a==1) /* 若项目为run则进行查找输出 */{if(q->xiangmu==1){printf("------------------------------------------------\n");printf("查找结果为:\n");printf("学生号码\t学生姓名\t学生单位\t学生项目\t学生成绩\t\n");printf("%ld\t\t%s\t\t%s\t\t%d\t\t%d\t\n",q->num,q->name,q->danwei,q->xiangmu,q->chengji); q=q->next; /* 进入下一结点 */}elseq=q->next; /* 进入下一结点 */}else if(a==2) /* 若项目为jump则进行查找输出 */{if(q->xiangmu==2){printf("------------------------------------------------\n");printf("查找结果为:\n");printf("学生号码\t学生姓名\t学生单位\t学生项目\t学生成绩\t\n");printf("%ld\t\t%s\t\t%s\t\t%d\t\t%d\t\n",q->num,q->name,q->danwei,q->xiangmu,q->chengji); q=q->next; /* 进入下一结点 */}elseq=q->next; /* 进入下一结点 */}else /* 若项目为swim则进行查找输出 */ {if(q->xiangmu==3){printf("------------------------------------------------\n");printf("查找结果为:\n");printf("学生号码\t学生姓名\t学生单位\t学生项目\t学生成绩\t\n");printf("%ld\t\t%s\t\t%s\t\t%d\t\t%d\t\n",q->num,q->name,q->danwei,q->xiangmu,q->chengji); q=q->next; /* 进入下一结点 */}elseq=q->next; /* 进入下一结点 */ }}}/* 排序功能 */struct student *sort(struct student *h){int d;int g1=0,e1=0,i1,j1,temp1,a[60];int g2=0,e2=0,i2,j2,temp2,b[60];int g3=0,e3=0,i3,j3,temp3,c[60];struct student *s; /* 定义链表指针 */s=h;printf("按项目排序:\n");printf("请输入项目,run----输入1,jump----输入2,swim----输入3:\n");scanf("%d",&d);printf("-----------------------------------------------------------------\n");printf("学生排序结果为:\n");printf("学生号码\t学生姓名\t学生单位\t学生项目\t学生成绩\t\n");if(d==1) /* 对项目为run的运动员进行排序 */{while(s!=NULL) /* 计算e1大小也就是项目为run的运动员的多少 */ {if(s->xiangmu==1){a[e1]=s->chengji;e1=e1+1;s=s->next; /* 进入下一结点 */}elses=s->next; /* 进入下一结点 */}for(i1=1;i1<e1;i1++) /* 冒泡法开始 */{for(j1=e1-1;j1>=1;j1--){if(a[j1]<a[j1-1]){temp1=a[j1-1];a[j1-1]=a[j1];a[j1]=temp1;}}} /* 冒泡结束 */s=h;while(g1<e1) /* 循环从小到大输出项目为run的运动员的信息 */{if(s->xiangmu==1){if(s->chengji==a[g1]){printf("%ld\t\t%s\t\t%s\t\t%d\t\t%d\t\n",s->num,s->name,s->danwei,s->xiangmu,s->chengji); s=h;g1=g1+1;}elses=s->next; /* 进入下一结点 */}elses=s->next; /* 进入下一结点 */}}else if(d==2) /* 若项目为jump则进行排序 */{while(s!=NULL) /* 计算e2大小也就是项目为jump的运动员的多少 */ {if(s->xiangmu==2){b[e2]=s->chengji;e2=e2+1;s=s->next; /* 进入下一结点 */}elses=s->next; /* 进入下一结点 */ }for(i2=1;i2<e2;i2++) /* 冒泡开始 */{for(j2=e2-1;j2>=1;j2--){if(b[j2]<b[j2-1]){temp2=b[j2-1];b[j2-1]=b[j2];b[j2]=temp2;}}} /* 冒泡结束 */s=h;while(g2<e2) /* 循环从小到大输出项目为jump的运动员的信息*/{if(s->xiangmu==2){if(s->chengji==b[g2]){printf("%ld\t\t%s\t\t%s\t\t%d\t\t%d\t\n",s->num,s->name,s->danwei,s->xiangmu,s->chengji);s=h;g2=g2+1;}elses=s->next; /* 进入下一结点 */}elses=s->next; /* 进入下一结点 */}}else /* 若项目为swim则进行排序 */{while(s!=NULL) /* 计算e3大小也就是项目为swim的运动员的多少*/{if(s->xiangmu==3){c[e3]=s->chengji;e3=e3+1;s=s->next; /* 进入下一结点 */}elses=s->next; /* 进入下一结点 */}for(i3=1;i3<e3;i3++) /* 冒泡开始 */{for(j3=e3-1;j3>=1;j3--){if(c[j3]<c[j3-1]){temp3=c[j3-1];c[j3-1]=c[j3];c[j3]=temp3;}}} /* 冒泡结束 */s=h;while(g3<e3) /* 循环从小到大输出项目为swim的运动员的信息 */{if(s->xiangmu==3){if(s->chengji==c[g3]){printf("%ld\t\t%s\t\t%s\t\t%d\t\t%d\t\n",s->num,s->name,s->danwei,s->xiangmu,s->chengji);s=h;g3=g3+1;}elses=s->next; /* 进入下一结点 */}elses=s->next; /* 进入下一结点 */ }}}。
C课程设计--校际运动会管理系统

{ printf("%13d%12d\n",de[i].ke,de[i].num); } } void nvzong() { struct nod { int ke; int num; }; int ha; struct nod *de; de=(struct nod *)malloc(sizeof(struct nod)*a+1); printf(" 按女子团体总分排序输出\n\n"); printf(" 学校代号 女子团体总分\n\n"); for(i=1;i<=a;i++) { de[i].ke=i; de[i].num=f[i][c+d+2].num; } for(i=1;i<=a;i++) { for(b=i;b<=a;b++) { if(de[b].num>de[i].num) { ha=de[b].ke; de[b].ke=de[i].ke; de[i].ke=ha; ha=de[b].num; de[b].num=de[i].num; de[i].num=ha; } } } for(i=1;i<=a;i++) { printf("%15d%13d\n",de[i].ke,de[i].num); } } void xuexiao() { int dr,dt;
{ if(ae==get[b]) { printf(" 同一个学校不能在同一项目中有两个名次 , 请重新输入第 %d 名的学校代号! ! !\n",g); goto alw; } else get[b]=ae; } f[ae][0].num=f[ae][0].num+af; f[ae][ab].num=af; if(ab<=c) f[ae][c+d+1].num=f[ae][c+d+1].num+af; else f[ae][c+d+2].num=f[ae][c+d+2].num+af; if(af>3) af=af-2; else af--; g++; } } else goto al; printf("\n\n 输入完成 ! ! ! ! \n"); } void each() { printf("\n 对应的格式为:\n 学校代号:团体总成绩\n\n "); for(i=1;i<=a;i++) { printf("%2d:%3d ",i,f[i][0].num); if(i%3==0) printf("\n "); } } void biaohao() { printf("\n 项目代号 "); for(i=1;i<=c+d;i++) { if(i>9) printf("%4d ",i);
C语言课程程序设计——校际运动会管理系统

课程设计报告课程设计报告题目:校际运动会管理系统姓名:xx学号:XXXXX专业:XXXXX班级:XXXXX指导教师:XXXXX职称:XXXXX2012年06 月20 日目录摘要 (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)所有信息记录完毕后,用户可以查询各个学校的比赛成绩,生成团体总分报表,察看参赛学校信息和比赛项目信息等。
二、概要设计分析整个系统,根据以上的需求分析及设计要求,可将整个系统的设计分为以下五个模块:信息输入、录入比赛结果、查询信息、退出.2. 系统功能模块图各功能模块设计模块(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);}}(2)结果录入模块(3)查询信息模块[分析]查询信息模块提供按不同方式查询各种信息机返回功能,其中各功能模块用菜单方式选择。
C语言实现校运动会项目管理系统

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;}}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");}主菜单截图以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
(完整word版)C语言课程设计----运动会分数统计系统源代码

源代码:#include<stdio.h>#include<math.h>#include <conio.h>#include <process.h>#define n 2//学校数目#define m 1//男子项目数目#define w 1//女子项目数目#define null 0typedef struct{int itemnum; //项目编号int top; //取名次的数目int range[5]; //名次int mark[5]; //分数}itemnode; //定义项目结点的类型typedef struct{int schoolnum; //学校编号int score; //学校总分int mscore; //男团体总分int wscore; //女团体总分itemnode c[m+w]; //项目数组}headnode;//定义头结点类型headnode h[n];//定义一个头结点数组void inputinformation() //输入信息,建立系统{int i,j,k,s;for(i=0;i<n;i++){h[i].score=0;h[i].mscore=0;h[i].wscore=0;} //初始化头结点for(i=0;i<n;i++){printf("*****学校编号:");scanf("%d",&h[i].schoolnum); //输入头结点信息for(j=0;j<m+w;j++){printf("*****项目编号:");scanf("%d",&h[i].c[j].itemnum);printf("*****取前3名or前5名:");scanf("%d",&h[i].c[j].top);printf("*****获得几个名次:");scanf("%d",&k); //输入项目信息for(s=0;s<5;s++)h[i].c[j].range[s]=0, h[i].c[j].mark[s]=0; //初始化排名和分数for(s=0;s<k;s++){printf("*****名次:");scanf("%d",&h[i].c[j].range[s]); //输入所获名次信息if(h[i].c[j].top==3)switch(h[i].c[j].range[s]){case 0: h[i].c[j].mark[s]=0; break;case 1: h[i].c[j].mark[s]=5; break;case 2: h[i].c[j].mark[s]=3; break;case 3: h[i].c[j].mark[s]=2; break;}elseswitch(h[i].c[j].range[s]){case 0: h[i].c[j].mark[s]=0; break;case 1: h[i].c[j].mark[s]=7; break;case 2: h[i].c[j].mark[s]=5; break;case 3: h[i].c[j].mark[s]=3; break;case 4: h[i].c[j].mark[s]=2; break;case 5: h[i].c[j].mark[s]=1; break;}h[i].score=h[i].score+h[i].c[j].mark[s];//按取前三名还是取前五名分别记分if(j<=m-1)h[i].mscore=h[i].mscore+h[i].c[j].mark[s];//是男子项目则记到男子分数里面去elseh[i].wscore=h[i].wscore+h[i].c[j].mark[s];//是女子项目则记到女子项目里面去}printf("\n");}}}void output() //输出函数{int choice,i,j,k;int remember[n];int sign;do{printf("*******************1.按学校编号输出.*******************\n");printf("*******************2.按学校总分输出.*******************\n");printf("*******************3.按男团总分输出.*******************\n");printf("*******************4.按女团总分输出.*******************\n");printf("\n\n******************* 请选择编号*************************\n\n:");scanf("%d",&choice);switch(choice){case 1:for(i=0;i<n;i++){printf("\n\n*****学校编号:%d\n",h[i].schoolnum);printf("*****学校总分:%d\n" ,h[i].score);printf("*****男团总分:%d\n",h[i].mscore);printf("*****女团总分: %d\n\n\n",h[i].wscore);} //按编号顺序输出break;case 2:for(i=0;i<n;i++)remember[i]=i;for(i=0;i<n;i++){for(j=i+1;j<n;j++)if(h[remember[i]].score<h[j].score)k=remember[i];remember[i]=remember[j],remember[j]=k;} // 用冒泡排序方法,用辅助数组记住头结点下标for(i=0;i<n;i++){printf("\n\n*****学校编号:%d\n",h[remember[i]].schoolnum);printf("*****学校总分:%d\n" ,h[remember[i]].score);printf("*****男团总分:%d\n",h[remember[i]].mscore);printf("*****女团总分: %d\n\n\n",h[remember[i]].wscore);//按所记下标顺序输出} //按学校总分输出break;case 3:for(i=0;i<n;i++)remember[i]=i;for(i=0;i<n;i++){for(j=i+1;j<n;j++)if(h[remember[i]].mscore<h[j].mscore)k=remember[i];remember[i]=remember[j];remember[j]=k;}for(i=0;i<n;i++){printf("\n\n*****学校编号:%d\n",h[remember[i]].schoolnum);printf("*****学校总分:%d\n" ,h[remember[i]].score);printf("*****男团总分:%d\n",h[remember[i]].mscore);printf("*****女团总分: %d\n\n\n",h[remember[i]].wscore);} //按男团总分输出break;case 4:for(i=0;i<n;i++)remember[i]=i;for(i=0;i<n;i++){for(j=i+1;j<n;j++)if(h[remember[i]].wscore<h[j].wscore)k=remember[i];remember[i]=remember[j];remember[j]=k;}for(i=0;i<n;i++){printf("\n\n*****学校编号:%d\n",h[remember[i]].schoolnum);printf("*****学校总分:%d\n" ,h[remember[i]].score);printf("*****男团总分:%d\n",h[remember[i]].mscore);printf("*****女团总分: %d\n\n\n",h[remember[i]].wscore);}break; //按女团总分输出}printf("请选择 2 继续,0 跳出\n");scanf("%d",&sign);}while(sign==2); //循环执行输出语句}void inquiry() //查询函数{int choice;int i,j,k,s;printf("\n*****1:按学校编号查询\n");printf("\n*****2:按项目编号查询\n");printf("\n\n*****请选择查询方式:"); //提供两种查询方式scanf("%d",&choice);switch(choice){case 1:do{printf("要查询的学校编号:");scanf("%d",&i);if(i>n)printf("错误:这个学校没有参加此次运动会!\n\n\n");else{printf("要查询的项目编号:");scanf("%d",&j);if(j>m+w||j==0)printf("此次运动会没有这个项目\n\n\n");//学校编号超出范围,则输出警告else{printf("这个项目取前%d名,该学校的成绩如下:\n", h[0].c[j-1].top);for(k=0;k<5;k++)if(h[i-1].c[j-1].range[k]!=0)printf("名次:%d\n",h[i-1].c[j-1].range[k]);//输出要查询学校项目的成绩}}printf("请选择2 继续, 0 跳出\n");scanf("%d",&s);printf("\n\n\n");}while(s==2); //循环执行输出语句break;case 2:do{printf("要查询的项目编号:");scanf("%d",&s);if(s>m+w||s==0)printf("此次运动会不包括这个项目.\n\n\n");//项目编号超出范围则输出警告else{printf("该项目取前%d名,取得名次的学校\n",h[0].c[s-1].top);for(i=0; i<n;i++)for(j=0;j<5;j++)if(h[i].c[s-1].range[j]!=0)printf("学校编号:%d,名次:%d\n",h[i].schoolnum,h[i].c[s-1].range[j]);} //输出该项目取得名次学校的成绩printf("\n\n\n继续2,跳出0\n");scanf("%d",&i);printf("\n\n\n");}while(i==2);break;}}void writedata() //把数据存储在文件中{FILE *report;int i;if((report=fopen("sportsdata.txt","w"))==null){printf("不能打开文件\n");exit(1);}for(i=0;i<n;i++)fwrite(&h[i],sizeof(headnode),1,report);fclose(report);} //按头结点块写入void readdata() //读出文件中数据的函数{FILE *report;int i,j,k,s;if((report=fopen("sportsdata.txt","r"))==null){printf("file can not be opened\n");exit(1);}for(i=0;i<n;i++){printf("******学校编号:");fread(&k,sizeof(int),1,report);printf("%d\n",k);printf("******学校总分:");fread(&k,sizeof(int),1,report);printf("%d\n",k);printf("******男团总分:");fread(&k,sizeof(int),1,report);printf("%d\n",k);printf("******女团总分:");fread(&k,sizeof(int),1,report);printf("%d\n",k);printf("\n\n\n");getch();for(j=0;j<m+w;j++){printf("******项目编号:");fread(&k,sizeof(int),1,report);printf("%d\n",k);printf("******所取名次数量:");fread(&k,sizeof(int),1,report);printf("%d\n",k);for(s=0;s<5;s++){fread(&k,sizeof(int),1,report);if(k!=0)printf("******名次:"),printf("%d\n",k);}for(s=0;s<5;s++){fread(&k,sizeof(int),1,report);if(k!=0) printf("******分数:"),printf("%d\n",k);}}printf("\n\n\n");getch();}fclose(report); //关闭文件} //按照读一个数据就输出一个数据的方式显示数据内容void main(){int choice;printf("======================欢迎使用======================\n"); printf("\n\n*****************运动会分数统计系统********************\n");printf("\n\n********************1.输入信息*************************\n");printf("********************2.输出信息*************************\n");printf("********************3.查询信息*************************\n");printf("********************4.调用信息*************************\n");printf("********************5.退出系统*************************\n\n\n");printf("================================================\n\n");printf("********请选择要实现步骤的编号:\n\n");scanf("%d",&choice);switch(choice){case 1:inputinformation();writedata();readdata();main();case 2:output();main();case 3:inquiry();main();case 4:readdata();main();case 5:exit(0);default:exit(0);}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、题目要求设计校际运动会管理系统,实现学校、运动员信息和运动项目的录入,比赛结果的输入,各个学校比赛结果的查询,生成团体总分报表,查看参赛学校信息和比赛项目信息。
要求功能选择用菜单实现。
二、需求分析根据题目要求应提供键盘式菜单实现功能选择,还应提供信息的输入操作,由于在程序中提供查询功能所以应有显示、查找等操作。
三、总体设计根据上面的需求分析,可以将这个系统的设计分为1、信息输入模块2、比赛结果录入模块3、查询模块。
具体校际运动会管理系统分为信息的输入、结果的输入、学校各个项目的得分的查寻、总体报表的生成。
四、详细设计1、主函数主函数一般设计的比较简洁,只提供输入,处理和输出部分的函数调用。
其中功能模块用菜单方式选择。
流程图[程序]main(){menu();/*menu 是菜单函数*/}菜单函数程序如下:menu(){ int o,n;do{ puts("\t\t*****************MENU********************");puts("\n\n\t\t 1.The information to writein\n");puts("\t\t 2.The race result records to writein\n");puts("\t\t 3.Search the information\n");puts("\t\t 4.Exit\n");puts("\n\t\t*****************************************");puts("\n\nChoice you number:");scanf("%d",&n);if(n<1||n>4){o=1;getchar();} /*对选择的数字进行判断*/else o=0;}while(o==1); /*选择功能*/switch(n){ case 1:writein();break; /*信息输入模块*/case 2:resultin();break; /*比赛结果输入模块*/case 3:search();break; /*查询模块*/case 4:exit(0); /*退出*/}}各个模块的设计1、信息输入[数据结构]数据结构采用结构体的形式,包括学校、项目、运动员三个结构体。
比如学校结构体成员包括学校校名、竞赛项目、得分;项目结构体成员包括项目名、权值。
struct student{ char shool[10];char name[10];char item[10];char sex;int position;int mark;}stu[C]; /*stu[N]中每个数组元素对应一个学生*/struct item{ char name[10];char sex;int mark;}it[C]; /*it[C]中每个数组元素对应一个项目*/struct shool{ char name[10];char item[10];int mark;}sho[C] /* sho[C]每个数组元素对应一个学校;*/[信息输入模块]根据题意把与运动员的学校、名字、项目、性别、名次、分数作为结构体成员,如果要存放若干个运动员的信息就用结构体数组。
struct student{ char shool[10];char name[10];char item[10];char sex;int position;int mark;}stu[C]; /*stu[C]中每个数组元素对应一个运动员*/stu[C]中的C为运动员的个数,程序中采用宏定义的方式定义C=100,C的值可随时在源程序中改变。
图2 输入模块流程图/******************输入模块*****************/writein() /*输入模块*/{ int t,r,i=0;extern j;char F,M;y=1;printf("\nPlease writein the student's name:\t");scanf("%s",&stu[i].name); /*输入名字*/printf("\nPlease writein the student's shool:\t");scanf("%s",&stu[i].shool); /*输入学校*/printf("\nPlease writein the student's item:\t");scanf("%s",&stu[i].item); /*输入项目*/loop_1: printf("\nPlease writein the student's sex(W or M):\t");scanf("%s",&stu[i].sex); /*输入性别*/if(stu[i].sex!='W'&&stu[i].sex!='M')goto loop_1; /*选择函数*/ printf("\nPleasewritein the student's position:\t");scanf("%d",&stu[i].position);mark(j,i);loop_2:printf("\n\nDo again?\t1).Yes\t2).No\t");scanf("%d",&t);if(t!=2&&t!=1)goto loop_2; /*调用goto结构*/if(t==2)menu();i++;if(t==1);f=1;printf("Success\nPress any key+enter to menu..");scanf("%d",&r); /*返回主函数*/menu();}[结果录入模块]该模块的功能是输入男女运动员的成绩,并由用户选择或定义各名次的分数。
[流程图]提醒用户先输入运动员信息输入学校的代号、男女运动项目的代号用户选择或定义各名次的分数输入成绩并反回主函数[程序]/**********************结果录入模块*********************/resultin() /******结果录入模块*****/{ int h,r; extern N,M,W,y;if(y==0){ printf("Please establish system first!!\nPress any key +enter to menu.. ");scanf("%d",&r); /******提醒用户输入运动员的基本信息*******/menu();}printf("\nThe number of shool attended is:");scanf("%d",&N);printf("\nThe number of men item is:");scanf("%d",&M);printf("\nThe number of women item is:");scanf("%d",&W); /****输入学校的代号、男女运动项目的代号****/printf("\nThere are three form of marked you can choice:");printf("\n\n\t1).1th--7,2th--5,3th--3,4th--2,5th--1.");printf("\n\n\t2).1th--5,2th--3,3th--1.");printf("\n\n\t3).Define by youself."); /*****用户自定义********/loop: printf("\n\nChoice the number(1--3):");scanf("%d",&h);if(h>0&&h<4)switch(h){case 1:j=1;break;case 2:j=2;break;case 3:define_mark();} /*******选择积分模式*********/else goto loop; /*******输入错误重新选择*******/printf("Success\nPress any key+enter to menu..");scanf("%d",&r);menu(); /*******返回主函数*******/}[查询模块]该模块的功能是所有信息记录完毕后用户可以查询学校比赛成绩,查看参赛学校信息和比赛项目信息等。
[流程图]选择查询模式并选择查询项目学校查询程序项目查询程序返回主菜单[程序]/*****************查询模块*****************/search(){ int e;char c;extern f;loop:printf("\nThe form of searching you want to choice:\n\t1).By school\n\t2).Bt item\n\t3).To menu\t"); /************选择查询模式**************/scanf("%d",&e);switch(e){ case 1:search_school();break;case 2:search_item();break;case 3:menu();}if(e>4||e<1)goto loop;printf("Press any key+enter to menu..");scanf("%s",&c);menu();}search_school() /**********学校查询程序***********/{ int x,sum=0,w=0;struct student s;printf("\nPlease enter the name of the school that you want to search:");scanf("%s",&s.shool);printf_face();for(x=0;x<C;x++)if(strcmp(s.shool,stu[x].shool)==0) /***********调用stu结构体************/ { sum+=stu[x].mark;printf_one(x);w=1;} /***********读出结构体的数据*********/ printf_sum(sum);if(w==0){printf("\n\n*The name is wrong,press again!");search_school();}}search_item() /*********项目查询程序********/ { int x,sum=0,w=0;struct student s;printf("\nPlease enter the name of the item that you want to search:");scanf("%s",&s.item);printf_face(); /********数据输入*********/for(x=0;x<C;x++)if(strcmp(s.item,stu[x].item)==0) / ********调用stu数组******/ { sum+=stu[x].mark;printf_one(x);w=1;}printf_sum(sum); /*******数据输出*********/if(w==0){ printf("\n\n*The name is wrong,press again!");search_item();}}[程序中调用的函数]记分的函数即用来确定不同的名次所得的不同分数。