校际运动会管理系统(报告+源代码)
- 格式:doc
- 大小:125.00 KB
- 文档页数:19
目录陈一、程序分析与设计 (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函数,在函数中实现嵌套,连接,指针的传递,数组等简单的程序结构。
运动会管理系统源代码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; /* 进入下一结点 */ }}}。
课程设计报告课程设计报告题目:校际运动会管理系统姓名: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语⾔实现校运动会项⽬管理系统的具体代码,供⼤家参考,具体内容如下源码#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");}主菜单截图以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
源代码:#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、查询模块。
具体校际运动会管理系统分为信息的输入、结果的输入、学校各个项目的得分的查寻、总体报表的生成。
四、详细设计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、信息输入[数据结构]数据结构采用结构体的形式,包括学校、项目、运动员三个结构体。
2校际运动会管理系统-标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII校际运动会管理系统要求(1)信息初始化,输入:N-参赛学校总数,M-男子竞赛项目数,W-女子竞赛项目数各项目名次取法有下面几种:1 提前5名:第一名得分7,第二名得分5,第三名得分3,第四名得分2,第五名得分1。
2 提前3名:第一名得分5,第二名得分,第三名得分2。
3 用户字定义:各名次权值由用户指定。
(2)提醒用户填写比赛结果,输入各项获奖运动员的信息。
(3)所有信息记录完毕后,用户可以查询各个学校的比赛成绩,生成团队总分报表,查看参赛学校信息和比赛项目信息等。
提示(1)总体设计:系统设计为信息输入模块、比赛结果录入模块和查询模块3个模块(2)数据结构采用数据体数组,包括学校、项目、运动员三个结构体。
比如学校结构体成员包括学校校名、竞赛项目、得分;项目结构体成员包括项目名,权值。
报告包括下面几个源程序清单:(调试好的源程序代码)主要标识符说明:(源程序中主要标识符含义说明)实验结果:(程序运行结果)实验环境:(调试程序所使用的软硬件环境)这里设定姓名长度不超过20字符。
每个项目结束时,将其编号、类型符(区分取前3名还是前5名)输入,并按名次顺序输入运动员姓名、学校和成绩。
程序已做改动,增加了一些代码以提高程序的健壮性。
本题完整的c程序如下,在win-tc和Dev-c++下调试通过,运行正确。
#include <stdio.h>#include <stdlib.h>#include <malloc.h>#include <conio.h>#define n 5 /*设定,可更改*/#define m 3 /*设定,可更改*/#define w 2 /*设定,可更改*/struct achievement /* 定义表示成绩的结构体 */{int schoolnumber;/* 学校编号 */char name[20]; /* 姓名 */int mark; /* 分数 */int result;};struct pro /* 表示项目的结构体 */{int tag;/* 项目编号 */struct achievement ach[m+w];int number;};struct Node{struct pro date;struct Node *next;};main(){int i,j,t;int x[n]={0};int y[n]={0}; /* x[n]和y[n]分别表示男子和女子团体总分 */ struct Node *head;struct Node *p;struct Node *q;if((head=(struct Node*)malloc(sizeof(struct Node)))==NULL) exit(1); head->next=NULL; /* 初始化单链表 */p=head;for(i=0;i<m+w;i++) /* 输入成绩 */{j=i+1;printf("请输入第%d个项目的信息\n",j);p->date.number=j;printf("所取的名次数为:");scanf("%d",&p->date.tag);while(p->date.tag!=3&&p->date.tag!=5){ printf("输入有误,请重新输入!");getchar(); /*加入此函数避免输入错误时程序进入无限循环*/ getchar();printf("所取的名次数为:");scanf("%d",&p->date.tag);}t=1;while(t<=p->date.tag){printf("第%d名的名字:",t);scanf("%s",p->date.ach[t-1].name);printf("第%d名的学校:",t);scanf("%d",&p->date.ach[t-1].schoolnumber);printf("第%d名的分数:",t);scanf("%d",&p->date.ach[t-1].mark);p->date.ach[t-1].result=t;t++;}if(j!=m+w)/* 注意这里 */{q=(struct Node*)malloc(sizeof(struct Node)); /* 生成新结点 */ p->next=q;p=q;p->next=NULL;}}for(i=0;i<n;i++) /* 产生成绩单 */{j=i+1;printf("\n学校%d成绩单:\n",j);p=head;while(p!=NULL){t=1;while(t<=p->date.tag){if(p->date.ach[t-1].schoolnumber==j){printf("获奖项目:%d ",p->date.number);printf("名次:%d ",p->date.ach[t-1].result);printf("获奖人姓名:%s ",p->date.ach[t-1].name);printf("所得分数:%d \n",p->date.ach[t-1].mark);if(p->date.number<=m)x[i]=x[i]+p->date.ach[t-1].mark;elsey[i]=y[i]+p->date.ach[t-1].mark;}t++;}p=p->next;}printf("\n男子团体总分:%d ",x[i]);printf("女子团体总分:%d \n",y[i]);printf("团体总分:%d\n",x[i]+y[i]);}for(i=0;i<m+w;i++) /*释放申请的内存空间*/ {p=head->next;free(head);head=p;}getch();}。
运动会管理系统源代码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; /* 进入下一结点 */ }}}。
运动会成绩管理系统源代码#include#include#include#include#define S 4#define N 4#define M 4#define Y "123456"void yonghuming();void mima();void bsxm();void csxx();void Information();void main();void menu();void printf_back();void saveathlete();void saveprogram();void saveschool();void savescore();void Search();void ttzf() ;int i;FILE *fp1,*fp2,*fp3,*fp4;struct athlete //定义运动员信息{char univ[8];char name[8];char prog[8];char mingci[8];int score;}at[S];struct xuexiao //定义学校信息{ char univ[8];char prog[8];int num_athlete;}xx[N];struct program //定义项目信息{char prog[8];int quming;char ath1[8];char ath2[8];char univ1[8];char univ2[4];}pro[M];struct zongfen //定义学校得分信息{ char univ[8];char prog1[8];char prog2[8];char prog3[8];int score1;int score2;int score3;int total_score;}zf[N];//苏佳乐void main(){yonghuming ();}void yonghuming(){int i,flag;char person[20];printf("\\**********登录**********\"); printf("\\请输入用户名:");for(i=0;i<=3;i ++){char name[20] = "sml";gets(person);flag=strcmp(person,name);if(flag ==0)mima();else{printf("\\用户名错误!\\\\\请重新输入:"); }}}void mima(){char p[20],i=0;printf("\\请输入密码:");while(p[i]=getch()){if(p[i]==13) break;if(p[i]!='\\b'){printf("*");i++;}else{printf("\\b \\b");i--;}}p[i]='\\0';if(strcmp(p,Y)==0){printf("验证通过\\\");menu();}else{printf("\\\密码错误\");mima();}}//李瑞void menu(){int n,w1;do{printf("\\******** 校际运动会管理系统**************\");printf("\\**********************菜单****************************\");printf("\\******** 1.信息输入**************\");printf("\\******** 2.比赛结果录入**************\");printf("\\******** 3.信息查询**************\");printf("\\******** 4.退出**************\");printf("\\***************************************************** *\");printf("请选择:[ ]\\b\\b");scanf("%d",&n);if (n<1||n>4){w1=1;getchar();}elsew1=0;}while (w1==1);switch(n){case 1:Information();break; //输入信息case 2:savescore();break;//比赛结果录入case 3:Search();break;//查询模块case 4:exit(0);}}//米书馨void Information(){int n,w ;do{printf("\\\");printf("\\********** 欢迎进入信息输入系统! *********\"); printf("\\***********************菜单*********************\"); printf("\\********** 1.保存运动员信息**********\");printf("\\********** 2.保存学校信息**********\");printf("\\********** 3.保存项目信息**********\");printf("\\********** 4.退出**********\");printf("\\************************************************\"); printf("请选择[ ]\\b\\b");scanf("%d",&n);if (n<1 || n>4){w=1;}elsew=0;}while (w==1);switch(n){case 1 : saveathlete(); break;// 保存运动员信息子函数case 2 : saveschool(); break;//保存学校信息子函数case 3 : saveprogram();break;//保存项目比赛信息子函数case 4 : exit(0);}}void saveathlete() //保存运动员信息子函数{printf("\请输入各项目获奖运动员的信息:\");for(i=0;i<s;i++)< bdsfid="241" p=""></s;i++)<>{printf("\请输入第%d个运动员的信息:\",i+1);printf("姓名:");scanf("%s",&at[i].name);printf("学校(简称):");scanf("%s",&at[i].univ);printf("参赛项目:");scanf("%s",&at[i].prog);printf("名次:");scanf("%s",&at[i].mingci);printf("得分:");scanf("%d",&at[i].score);}fp1=fopen("ath","w");for(i=0;i<s;i++)< bdsfid="257" p=""></s;i++)<>{if(fwrite(&at[i],sizeof(struct athlete),1,fp1)!=1)//指向要输入数据的地址,size为要写的字节数,count为要进行写多少个size字节的数据项,fp1为文件指针printf("File write error!\");}fclose(fp1);fp1=fopen("ath","r");printf("\各运动员的信息如下:\\");printf("姓名学校项目名次得分\");for(i=0;i<s;i++)< bdsfid="267" p=""></s;i++)<>{fread(&at[i],sizeof(struct athlete),1,fp1);printf("%s,,%s,,%s,,%s,,%d\", at[i].name, at[i].univ, at[i].prog, at[i].mingci, at[i].score);}fclose(fp1);printf_back();}void saveschool() //保存学校信息子函数{printf("\请输入各参赛学校的信息:");for(i=0;i<n;i++)< bdsfid="279" p=""></n;i++)<> {printf("\请输入第%d个学校的信息:\",i+1);printf("学校:");scanf("%s",&xx[i].univ);printf("参赛项目:");scanf("%s",&xx[i].prog);printf("参赛人数:");scanf("%d",&xx[i].num_athlete);}fp3=fopen("xxiao","w");for(i=0;i<n;i++)< bdsfid="291" p=""></n;i++)<> {if(fwrite(&xx[i],sizeof(struct xuexiao),1,fp3)!=1) printf("文件错误!\");}fclose(fp3);printf_back();}void saveprogram() //保存项目比赛信息子函数{printf("\请输入关于比赛项目的信息:");for(i=0;i<m;i++)< bdsfid="303" p=""></m;i++)<> {printf("\请输入第%d个项目比赛的信息:\",i+1);printf("项目:");scanf("%s",pro[i].prog);printf("得分:");scanf("%d",&pro[i].quming);printf("参赛者1:");scanf("%s",pro[i].ath1);printf("所属学校:");scanf("%s",pro[i].univ1);printf("参赛者2:");scanf("%s",pro[i].ath2);printf("所属学校:");scanf("%s",pro[i].univ2);}fp4=fopen("pr","w");for(i=0;i<m;i++)< bdsfid="321" p=""></m;i++)<>{if(fwrite(&pro[i],sizeof(struct program),1,fp4)!=1)printf("文件错误!\");}fclose(fp4);printf_back();}//苏佳乐void savescore() //保存学校得分情况子函数{printf("\\\**********欢迎进入信息录入系统!**********\\\");printf("N-参赛学校总数,M-男子竞赛项目数,W-女子竞赛项目数。
#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>#define LEN sizeof(struct athlete)#define FORMAT "%-8d%-15s%-6s%-12s%-10.2f%-10.2f%-10.2f%-10.2f\n"#define DATA member[i].num,member[i].name,member[i].sex,member[i].faculty,member[i].run,member[i].bas ketball,member[i].football,member[i].totalstruct athlete //定义运动员信息{int num; //编号char name[15]; //运动员姓名char sex[6]; //运动员性别char faculty[12] ; //运动员所在院系float run; //跑步分数float basketball; //篮球分数float football; //足球分数float total; //该运动员总分数};struct athlete member[50]; //定义结构体数组void menu(); //主界面void in(); //录入运动员信息void show(); //显示运动员信息void del(); //删除运动员信息void modify(); //修改运动员信息void total(); //计算某一运动员的总分void search(); //查找运动员信息int main(){int n;menu();scanf("%d",&n); //输入数字选择功能while(n){switch(n){case 1:in(); //调用录入运动员信息函数break;case 2:search(); //查找运动员信息函数break;case 3:del(); //调用删除运动员信息函数break;case 4:modify(); //调用修改运动员信息函数break;case 5:total(); //调用汇总函数break;default:break;}printf("按任意键返回主菜单:\n");getch();menu(); //执行完功能再次显示菜单界面scanf("%d",&n);}return 0;}void menu(){system("cls");printf("|-------------------------------------------------------------------------------|\n");printf("|--------------------------------运动会比赛计分系统-----------------|\n");printf("| 0. 退出|\n");printf("| 1. 录入信息|\n");printf("| 2. 查找信息|\n");printf("| 3. 删除信息|\n");printf("| 4. 修改信息|\n");printf("| 5. 统计信息|\n");printf("|-------------------------------------------------------------------------------|\n");printf("选择(0-5):");}void in() //录入运动员信息{int i,m=0;char ch[2];FILE *fp;if((fp=fopen("运动会比赛计分系统","ab+"))==NULL){printf("不能打开文件!\n");return;}while(!feof(fp)){if(fread(&member[m] ,LEN,1,fp)==1)m++; //统计当前记录条数}fclose(fp);if(m==0)printf("没有找到!\n");else{//system("cls");show(); //调用show函数,显示原有信息}if((fp=fopen("运动会比赛计分系统","wb"))==NULL){printf("不能打开文件!\n");return;}for(i=0;i<m;i++)fwrite(&member[i] ,LEN,1,fp); //向指定的磁盘文件写入信息printf("是否输入?(y/n):");scanf("%s",ch);while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0) //判断是否要录入新信息{printf("编号:");scanf("%d",&member[m].num); //输入运动员编号for(i=0;i<m;i++)if(member[i].num == member[m].num){printf("该记录已经存在,按任意键继续!");getch();fclose(fp);return;}printf("运动员姓名:");scanf("%s",member[m].name); //输入运动员姓名printf("请输入性别:");scanf("%s",member[m].sex); //输入性别printf("请输入院系:");scanf("%s",member[m].faculty); //输入院系printf("请输入跑步分数:");scanf("%f",&member[m].run); //输入跑步分数printf("请输入篮球分数:");scanf("%f",&member[m].basketball); //输入篮球分数printf("请输入足球分数:");scanf("%f",&member[m].football); //输入足球分数member[m].total=member[m].run+member[m].basketball+member[m].football;if(fwrite(&member[m],LEN,1,fp)!=1) //将新录入的信息写入指定的磁盘文件{printf("不能保存!");getch();}else{printf("%s 已经保存!\n",member[m].name);m++;}printf("是否继续?(y/n):");scanf("%s",ch);}fclose(fp);printf("OK!\n");}void show(){FILE *fp;int i,m=0;fp=fopen("运动会比赛计分系统","ab+");while(!feof(fp)){if(fread(&member[m] ,LEN,1,fp)==1)m++;}fclose(fp);printf("编号姓名性别院系跑步分数篮球分数足球分数总分\t\n");for(i=0;i<m;i++){printf(FORMAT,DATA);}}void del(){FILE *fp;int snum,i,j,m=0;if((fp=fopen("运动会比赛计分系统","ab+"))==NULL){printf("不能打开文件\n");return;}while(!feof(fp))if(fread(&member[m],LEN,1,fp)==1)m++;fclose(fp);if(m==0){printf("没有记录!\n");return;}printf("请输入编号:");scanf("%d",&snum);for(i=0;i<m;i++)if(snum==member[i].num)break;if(i==m){printf("没有找到!");return;}printf("已经找到该记录,是否删除?(y/n)");scanf("%s",ch);if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0) //判断是否要进行删除{for(j=i;j<m;j++)member[j] = member[j+1]; //将后一个记录移到前一个记录的位置m--; //记录的总个数减1printf("成功删除!\n");}if((fp=fopen("运动会比赛计分系统","wb"))==NULL){printf("不能打开!\n");return;}for(j=0;j<m;j++) //将更改后的记录重新写入指定的磁盘文件中if(fwrite(&member[j] ,LEN,1,fp)!=1){printf("不能保存!\n");getch();}fclose(fp);}void search(){FILE *fp;int snum,i,m=0;char ch[2];if((fp=fopen("运动会比赛计分系统","ab+"))==NULL){printf("不能打开文件\n");return;}while(!feof(fp))if(fread(&member[m],LEN,1,fp)==1)m++;fclose(fp);if(m==0){printf("没有记录!\n");return;}printf("请输入编号:");scanf("%d",&snum);for(i=0;i<m;i++)if(snum == member[i].num){printf("已经找到该记录,是否显示?(y/n)");scanf("%s",ch);if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0){printf("编号姓名性别院系跑步分数篮球分数足球分数总分\t\n");printf(FORMAT,DATA);break;}elsereturn;}if(i==m)printf("没有找到相应的记录!\n");}void modify()FILE *fp;int i,j,m=0,snum;char ch[2];if((fp=fopen("运动会比赛计分系统","ab+"))==NULL){printf("不能打开文件!\n");return;}while(!feof(fp))if(fread(&member[m],LEN,1,fp)==1)m++;fclose(fp);if(m==0){printf("没有记录!\n");fclose(fp);return;}printf("请输入要修改的信息的编号!\n");scanf("%d",&snum);for(i=0;i<m;i++)if(snum==member[i].num) //检索记录中是否有要修改的信息{printf("已经找到该记录,是否修改?(y/n)\n");scanf("%s",ch);if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0){printf("运动员姓名:");scanf("%s",member[i].name); //输入运动员姓名printf("请输入性别:");scanf("%s",member[i].sex); //输入性别printf("请输入院系:");scanf("%s",member[i].faculty); //输入院系printf("请输入跑步分数:");scanf("%f",&member[i].run); //输入跑步分数printf("请输入篮球分数:");scanf("%f",&member[i].basketball); //输入篮球分数printf("请输入足球分数:");scanf("%f",&member[i].football); //输入足球分数member[i].total=member[i].run+member[i].basketball+member[i].football; //计算总分printf("保存成功!");}elsereturn;}else{printf("没有找到!");return;}if((fp=fopen("运动会比赛计分系统","wb"))==NULL){printf("不能打开文件!\n");return;}for(j=0;j<m;j++) //将新修改的信息写入指定的磁盘文件中if(fwrite(&member[j] ,LEN,1,fp)!=1){printf("不能保存!");}fclose(fp);}void total() // 统计{FILE *fp;int m=0;if((fp=fopen("运动会比赛计分系统","ab+"))==NULL){printf("不能打开记录!\n");return;}while(!feof(fp))if(fread(&member[m],LEN,1,fp)==1)m++; //统计记录个数if(m==0){printf("没有记录!\n");fclose(fp);return;}printf("一共有%d 条记录!\n",m); //将统计的个数输出fclose(fp); }。
(1)输入信息函数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); //输入学校成绩数组中下标为i的学校编号for(j=0;j<m+w;j++) //对每一个项目输入项目成绩{printf("*****项目编号:");scanf("%d",&h[i].c[j].itemnum); //输入学校成绩数组下标为i的学校成绩项中项目数组下标为j的项目编号printf("*****取前3名or前5名:");scanf("%d",&h[i].c[j].top); //输入学校成绩数组下标为i的学校成绩项中项目数组下标为j的取名次数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");}}}(2)输出函数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; //用remember数组记录下标值for(i=0;i<n;i++){for(j=i+1;j<n;j++) //总分进行比较if(h[remember[i]].score<h[remember[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[remember[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[remember[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); //循环执行输出语句}(3)查询函数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");{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");//项目编号超出范围则输出警告{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);} //按头结点块写入(把学校成绩逐一写入到程序中(4)数据存储与读出A.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);} //按头结点块写入(把学校成绩逐一写入到程序中B. 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); //关闭文件} //按照读一个数据就输出一个数据的方式显示数据内容(5)主函数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);}}。
校级运动会管理系统c语言程序文件编码(GHTU-UITID-GGBKT-POIU-WUUI-8968)#i n c l u d e<> #include<>#include<>#include<>#define SIZE 9#define N 3#define WM 3void bsxm(); ame);printf("学校:");scanf("%s",at[i].univ);printf("参赛项目:");scanf("%s",at[i].prog);printf("名次:");scanf("%s",at[i].mingci);printf("得分:");scanf("%d",&at[i].score);}fp1=fopen("ath","w");for(i=0;i<SIZE;i++){if(fwrite(&at[i],sizeof(struct athlete),1,fp1)!=1)printf("File write error!\n");}fclose(fp1);fp1=fopen("ath","r");printf("\n现在各运动员的信息如下:\n\n");printf("姓名学校项目名次得分\n");for(i=0;i<SIZE;i++){fread(&at[i],sizeof(struct athlete),1,fp1);printf("%-10s%-10s%-18s%-10s%d\n",at[i].name,at[i].univ,at[i].prog,at[i].mingci,at[i].sc ore);}fclose(fp1);printf_back();}void saveschool() niv);printf("参赛的项目:");scanf("%s",xx[i].prog);printf("参赛者数:");scanf("%d",&xx[i].num_athlete);}fp3=fopen("xxiao","w");for(i=0;i<N;i++){if(fwrite(&xx[i],sizeof(struct xuexiao),1,fp3)!=1)printf("File write error!\n");}fclose(fp3);printf_back();}void saveprogram() rog);printf("取分情况:");scanf("%d",&pro[i].quming);printf("参赛者1:");scanf("%s",pro[i].ath1);printf("所属学校:");scanf("%s",pro[i].univ1);printf("参赛者2:");scanf("%s",pro[i].ath2);printf("所属学校:");scanf("%s",pro[i].univ2);}fp4=fopen("pr","w");for(i=0;i<N;i++){if(fwrite(&pro[i],sizeof(struct program),1,fp4)!=1)printf("File write error!\n");}fclose(fp4);printf_back();}void savescore() niv);printf("参赛项目1:");scanf("%s",zf[i].prog1);printf("得分:");scanf("%d",&zf[i].score1);printf("参赛项目2:");scanf("%s",zf[i].prog2);printf("得分:");scanf("%d",&zf[i].score2);printf("参赛项目3:");scanf("%s",zf[i].prog3);printf("得分:");scanf("%d",&zf[i].score3);zf[i].total_score=zf[i].score1+zf[i].score2+zf[i].score3;}fp2=fopen("zfen","w");for(i=0;i<N;i++){if(fwrite(&zf[i],sizeof(struct zongfen),1,fp2)!=1)printf("File write error!\n");}fclose(fp2);printf_back();}void Search()niv,zf[i].prog1,zf[i].prog2,zf[i].prog3,zf[i].total_score);}fclose(fp2);printf_back();}void csxx() niv,xx[i].prog,xx[i].num_athlete);}fclose(fp3);printf_back();}void bsxm()rog,pro[i].quming,pro[i].ath1,pro[i].univ1,pro[i].ath2,pro [i].univ2);}fclose(fp4);printf_back();}void main(){menu();}void menu()xit \t2).menu:[ ]\b\b");scanf("%d",&w);if(w==1)exit(0);else menu();}。
C语言课程设计校际运动会管理系统C语言程序设计报告书一、C 语言程序设计的目的二、巩固已学习的内容, 复习程序设计和上机调试的基本方法方法。
通过学习一个综合程序的设计与编写, 使学生能够在较短的时间内掌握综合程序设计的基本步骤和方法。
通过学习课本上的习题, 举一反三, 学会构建程序的柜架以及部分常用的算法代码的收发室。
在加强的基础上, 动手两个程序的完整设计与编写。
三、课程设计报告正文(一)、题目(1)信息初始化, 输入:N-参赛学校总数, M-男子竞赛项目数, W-女子竞赛项目数;各项目名次取法有以下几种:《1》取前5名: 第1名得分7, 第2名得分5, 第3名得分3, 第4名得分2, 第5名得分1. 《2》取前3名: 第1名得分5, 第2名得分3, 第3名得分2.《3》用户自定义: 各名次权值由用户指定。
(2)提醒用户填写比赛结果, 输入各项目获奖运动员的信息。
(3)所有信息记录完毕后, 用户可以查询各个学校的比赛成绩, 生成团体总分报表, 查看参赛学校信息和比赛项目信息等。
[提示](1)总体设计: 系统设计为信息输入模块、比赛结果录入模块和查询模块三个模块。
(2)数据结构采用结构体数组, 包括学校、项目、运动员三个结构体。
比如学校结构体成员包括学校校名、竞赛项目、得分项目结构体成员包括项目名、权值。
(二)题目的总体要求是要建立三个模块: 信息输入模块、比赛结果录入模块以及查询模块。
在建立完之后, 要求该程序能够在用户将各种必要的信息记录之后, 用户可以查询所有学校的比赛成绩, 而且也可以生成团体总分表, 查看参赛学校信息和比赛项目信息等一切录入的信息, 为此, 要示编程人员能通过一些具体的程序将以上的功能加以实现。
在建立三个模块的大前提下, 我们将采用结构体, 循环体, 指针和各种函数来实现这种功能, 在数据结构体中, 要采用结构体数组, 其中包括学校、项目、运动员三个结构体。
学校结构体成员包括学校校名、竞赛项目、得分项目结构体成员包括项目名、权值。
运动会成绩管理系统源代码Prepared on 22 November 2020#include<>#include<>#include<>#include<>#defineS4#defineN4#defineM4#defineY"123456"voidyonghuming();voidmima();voidbsxm();voidcsxx();voidInformation();voidmain();voidmenu();voidprintf_back();voidsaveathlete();voidsaveprogram();voidsaveschool();voidsavescore();voidSearch();voidttzf() ;inti;FILE*fp1,*fp2,*fp3,*fp4;structathlete 息输入**************\n");printf("\t\t********2.比赛结果录入**************\n");printf("\t\t********3.信息查询**************\n");printf("\t\t********4.退出**************\n");printf("\t\t******************************************************\n"); printf("请选择:[]\b\b");scanf("%d",&n);if(n<1||n>4){w1=1;getchar();}elsew1=0;}while(w1==1);switch(n){case1:Information();break;存运动员信息**********\n");printf("\t\t**********2.保存学校信息**********\n");printf("\t\t**********3.保存项目信息**********\n");printf("\t\t**********4.退出**********\n");printf("\t\t************************************************\n");printf("请选择[]\b\b");scanf("%d",&n);if(n<1||n>4){w=1;}elsew=0;}while(w==1);switch(n){case1:saveathlete();break;ame);printf("学校(简称):");scanf("%s",&at[i].univ);printf("参赛项目:");scanf("%s",&at[i].prog);printf("名次:");scanf("%s",&at[i].mingci);printf("得分:");scanf("%d",&at[i].score);}fp1=fopen("ath","w");for(i=0;i<S;i++){if(fwrite(&at[i],sizeof(structathlete),1,fp1)!=1)ame,at[i].univ,at[i].prog,at[i].mi ngci,at[i].score);}fclose(fp1);printf_back();}voidsaveschool() niv);printf("参赛项目:");scanf("%s",&xx[i].prog);printf("参赛人数:");scanf("%d",&xx[i].num_athlete);}fp3=fopen("xxiao","w");for(i=0;i<N;i++){if(fwrite(&xx[i],sizeof(structxuexiao),1,fp3)!=1)printf("文件错误!\n");}fclose(fp3);printf_back();}voidsaveprogram() rog);printf("得分:");scanf("%d",&pro[i].quming);printf("参赛者1:");scanf("%s",pro[i].ath1);printf("所属学校:");scanf("%s",pro[i].univ1);printf("参赛者2:");scanf("%s",pro[i].ath2);printf("所属学校:");scanf("%s",pro[i].univ2);}fp4=fopen("pr","w");for(i=0;i<M;i++){if(fwrite(&pro[i],sizeof(structprogram),1,fp4)!=1)printf("文件错误!\n");}fclose(fp4);printf_back();}niv);printf("参赛项目1:");scanf("%s",zf[i].prog1);printf("得分:");scanf("%d",&zf[i].score1);printf("参赛项目2:");scanf("%s",zf[i].prog2);printf("得分:");scanf("%d",&zf[i].score2);printf("参赛项目3:");scanf("%s",zf[i].prog3);printf("得分:");scanf("%d",&zf[i].score3);zf[i].total_score=zf[i].score1+zf[i].score2+zf[i].score3;}fp2=fopen("zfen","w");for(i=0;i<N;i++){if(fwrite(&zf[i],sizeof(structzongfen),1,fp2)!=1)printf("文件错误!\n");}fclose(fp2);printf_back();}体总分查询*****************\n");校信息查询*****************\n");赛项目查询*****************\n");出*****************\n");niv,zf[i].prog1,zf[i].prog2,zf[i].prog3,zf[i].total_score);}fclose(fp2);printf_back();}voidcsxx() niv,xx[i].prog,xx[i].num_athlete);}fclose(fp3);printf_back();}voidbsxm()rog,pro[i].quming,pro[i].ath1,pro[i].univ1,pro[i].ath2,pro[i].univ2);}fclose(fp4);printf_back();}//公共函数voidprintf_back(){intw;printf("\n\n\t录入成功!\n\n");printf("下一步:\n\n\\:[]\b\b");scanf("%d",&w);switch(w){case1:exit(0);break;case2:menu();}}。
一、题目要求设计校际运动会管理系统,实现学校、运动员信息和运动项目的录入,比赛结果的输入,各个学校比赛结果的查询,生成团体总分报表,查看参赛学校信息和比赛项目信息。
要求功能选择用菜单实现。
二、需求分析根据题目要求应提供键盘式菜单实现功能选择,还应提供信息的输入操作,由于在程序中提供查询功能所以应有显示、查找等操作。
三、总体设计根据上面的需求分析,可以将这个系统的设计分为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();}}[程序中调用的函数]记分的函数即用来确定不同的名次所得的不同分数。