校级运动会管理系统c语言程序
- 格式:doc
- 大小:41.00 KB
- 文档页数:13
运动会管理系统C语言程序设计
简介
运动会管理系统是一个用C语言编写的程序,用于管理学校或机构举办的各类
运动会活动。
该系统能够帮助组织者有效地安排赛程、记录成绩以及生成相关报表,提高管理效率和赛事质量。
功能模块
1. 用户登录
•提供管理员和裁判员两类用户登录选项
•管理者可以对比赛项目、队伍信息进行管理
•裁判员可以录入比赛成绩
2. 赛事管理
•管理者可以添加、编辑、删除赛事项目
•每个赛事项目包括项目名称、参赛队伍、赛程安排等信息
3. 队伍管理
•管理者可以添加、编辑、删除参赛队伍
•每个参赛队伍包括队名、队员信息等
4. 成绩录入
•裁判员可以录入每个队伍在各个项目中的成绩
•系统可以自动计算并显示队伍的总成绩
5. 报表生成
•系统可以根据录入的成绩数据生成成绩报表
•报表可以按照项目、队伍等不同维度展示成绩数据
技术实现
该系统基于C语言编写,采用了结构体、文件读写、数据处理等基本功能和技术。
通过数据结构的设计和文件操作,实现了用户登录、赛事管理、队伍管理、成绩录入、报表生成等功能。
系统优势
•界面简洁明了,操作便捷高效
•数据处理准确可靠,确保成绩数据的准确性
•面向对象的设计,方便扩展和维护
结语
运动会管理系统C语言程序设计为学校或机构举办运动会提供了一种高效的管理方式,使赛事组织更加顺畅和专业化。
通过不断的优化和改进,该系统能够更好地满足不同运动会的管理需求,为相关活动的顺利进行提供有力支持。
c语言管理系统设计源代码以下是一个简单的C语言管理系统示例,用于管理学生信息。
该系统可以添加、删除、修改和查找学生信息。
c复制代码#include<stdio.h>#include<stdlib.h>#include<string.h>struct student {char name[50];int roll;float marks;};struct student students[100];int count = 0;void add_student() {struct student new_student;printf("Enter name: ");scanf("%s", new_);printf("Enter roll number: ");scanf("%d", &new_student.roll);printf("Enter marks: ");scanf("%f", &new_student.marks);students[count] = new_student;count++;}void delete_student() {int index;printf("Enter index of student to delete: ");scanf("%d", &index);for (int i = index; i < count - 1; i++) {students[i] = students[i + 1];}count--;}void modify_student() {int index;struct student new_student;printf("Enter index of student to modify: "); scanf("%d", &index);printf("Enter new name: ");scanf("%s", new_);printf("Enter new roll number: ");scanf("%d", &new_student.roll);printf("Enter new marks: ");scanf("%f", &new_student.marks);students[index] = new_student;}void find_student() {char name[50];printf("Enter name of student to find: "); scanf("%s", name);for (int i = 0; i < count; i++) {if (strcmp(students[i].name, name) == 0) { printf("Roll number: %d\n", students[i].roll); printf("Marks: %.2f\n", students[i].marks); return;}}printf("Student not found.\n");}int main() {int choice;do {printf("\nMenu:\n");printf("1. Add student\n");printf("2. Delete student\n");printf("3. Modify student\n");printf("4. Find student\n");printf("5. Exit\n");printf("Enter choice: ");scanf("%d", &choice);switch (choice) {case1: add_student(); break;case2: delete_student(); break;case3: modify_student(); break;case4: find_student(); break;case5: exit(0); break; // exit the program here, otherwise the loop will keep running indefinitely, as it is in the do-while loop above. We are not returning, but rather exiting the program completely, so we do not need to return anything. The return value of main is always 0, and this is how the program exits. If you want to return a value other than 0, you can do so like this: return 1; or return -1; or return any other integer value you want to represent an error condition. The operating system will interpret this as the program's exit status. In this case, it will be seen as successful, as it is returning 0. The return value of main is not used for anything in this program, but it can be used in other programs to determine whether the program exited successfully or with an error. For example, if you were writing a shell script that executed this program and needed to know if it was successful or not, you could check the return value of the program and act accordingly. This is a common practice in programming, and it is important to understand how it works so that you can use it effectively in your own programs.。
运动会管理系统源代码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; /* 进入下一结点 */ }}}。
1 一元稀疏多项式的运算问题描述:设有两个带头指针的单链表表示两个一元稀疏多项式A、B,实现两个一元稀疏多项式的处理.实现要求:⑴输入并建立多项式;⑵输出多项式,输出形式为整数序列:n,c1,e1,c2,e2……cn,en,其中n是多项式的项数,ci,ei分别为第i项的系数和指数。
序列按指数降序排列;⑶多项式A和B相加,建立多项式A+B,输出相加的多项式;⑷多项式A和B相减,建立多项式A-B,输出相减的多项式;⑸多项式A和B相乘,建立多项式A×B,输出相乘的多项式;⑹设计一个菜单,至少具有上述操作要求的基本功能。
测试数据:(1) (2x+5x8-3.1x11)+(7—5x8+11x9)(2) (6x-3—x+4。
4x2-1。
2x9)-(-6x-3+5.4x2+7。
8x15)(3)(x+x2+x3)+0(4)(x+x3)—(-x—x-3)2 成绩排序假设某年级有4个班,每班有45名同学。
本学期有5门课程考试,每门课程成绩是百分制。
假定每个同学的成绩记录包含:学号、姓名各门课程的成绩共7项,其中学号是一个10位的字符串,每个学生都有唯一的学号,并且这4个班的成绩分别放在4个数组中,完成以下操作要求:⑴编写一个成绩生成函数,使用随机数方法,利用随机函数生成学生的各门课程的成绩(每门课程的成绩都是0∽100之间的整数),通过调用该函数生成全部学生的成绩;⑵编写一个平均成绩计算函数,计算每个同学的平均成绩并保存在成绩数组中;⑶用冒泡排序法对4个班的成绩按每个同学的平均成绩的以非递增方式进行班内排序;⑷用选择排序法对4个班的成绩按每个同学的平均成绩的以非递增方式进行班内排序;⑸对已按平均成绩排好序的4个班的同学的构造一个所有按平均成绩的以非递增方式排列的新的单链表;⑹设计一个菜单,至少具有上述操作要求的基本功能。
(本题⑸由2人完成)3 迷宫问题问题描述:以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。
(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语言课程设计体育管理一、课程目标知识目标:1. 理解C语言在体育管理中的应用,掌握基本的数据结构和算法。
2. 学习使用C语言实现体育数据的存储、查询和统计功能。
3. 了解体育管理系统的基本框架和设计思路。
技能目标:1. 能够运用C语言编写简单的体育管理程序,如运动员信息录入、比赛成绩统计等。
2. 掌握基本的编程技巧,如变量定义、条件语句、循环语句等。
3. 能够分析体育管理需求,设计合适的算法和数据结构解决问题。
情感态度价值观目标:1. 培养学生对C语言编程的兴趣,激发学生主动探索精神。
2. 培养学生的团队合作意识,学会与他人共同解决问题。
3. 增强学生对体育管理工作的认识,提高社会责任感。
课程性质:本课程为实践性较强的课程,以项目为导向,结合体育管理实际需求,培养学生运用C语言解决实际问题的能力。
学生特点:学生已具备一定的C语言基础,具有一定的编程能力,但对体育管理方面的知识了解较少。
教学要求:结合学生特点和课程性质,将课程目标分解为具体的学习成果,注重实践操作,提高学生的编程能力和解决问题的能力。
在教学过程中,注重启发式教学,引导学生主动思考,培养学生独立分析和解决问题的能力。
同时,关注学生的情感态度价值观培养,使学生在掌握知识技能的同时,形成积极向上的价值观。
二、教学内容1. C语言基础知识回顾:数据类型、运算符、控制语句(章节1.1-1.3)- 简要回顾C语言基础知识,为后续编程打下基础。
2. 函数与模块化编程:函数定义、调用、参数传递(章节2.1-2.3)- 学习如何将程序划分为多个函数,提高代码的可读性和可维护性。
3. 数组与字符串:数组定义、操作、字符串处理(章节3.1-3.3)- 掌握数组的使用,为处理体育数据(如运动员信息、比赛成绩)打下基础。
4. 指针与动态内存管理:指针概念、操作、动态内存分配(章节4.1-4.3)- 理解指针在编程中的重要性,为高效处理体育数据提供支持。
5. 结构体与文件操作:结构体定义、使用、文件读写(章节5.1-5.3)- 学习使用结构体存储复杂数据,以及如何读写文件,实现数据的持久化。
#include<stdio.h>#include<conio.h>#include<stdlib.h>#include<string.h>#define SIZE 9#define N 3#define WM 3void bsxm(); //比赛项目void csxx(); //参赛学校void ttzf() ; //团体总分void Information();void main();void menu();void printf_back();void saveathlete();void saveprogram();void saveschool();void savescore();void Search();int i;FILE *fp1,*fp2,*fp3,*fp4;struct athlete //定义运动员信息{char univ[5];char name[8];char prog[15];char mingci[5];int score;}at[SIZE];struct xuexiao //定义学校信息{char univ[5];char prog[15];int num_athlete;}xx[N];struct program //定义项目信息{char prog[5];int quming;char ath1[5];char ath2[5];char univ1[5];char univ2[5];}pro[WM];struct zongfen //定义学校得分信息{char univ[5];char prog1[5];char prog2[5];char prog3[5];int score1;int score2;int score3;int total_score;}zf[N];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;printf("\n\n\t\t----------------------DATAERROR!----------------------\n\n\n");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);}}void saveathlete() //保存运动员信息子函数{printf("\n请输入各项目获奖运动员的信息:");for(i=0;i<SIZE;i++){printf("\n请输入第%d个运动员的信息:\n",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<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].score);}fclose(fp1);printf_back();}void saveschool() //保存学校信息子函数{printf("\n请输入各参赛学校的信息:");for(i=0;i<N;i++){printf("\n请输入第%d个学校的信息:\n",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++){if(fwrite(&xx[i],sizeof(struct xuexiao),1,fp3)!=1) printf("File write error!\n");}fclose(fp3);printf_back();}void saveprogram() //保存项目比赛信息子函数{printf("\n请输入关于比赛项目的信息:");for(i=0;i<WM;i++){printf("\n请输入第%d项比赛的信息:\n",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<N;i++){if(fwrite(&pro[i],sizeof(struct program),1,fp4)!=1)printf("File write error!\n");}fclose(fp4);printf_back();}void savescore() //保存学校得分情况子函数{printf("N-参赛学校总数,M-男子竞赛项目数,W-女子竞赛项目数。
\n");printf("W.100-女子一百米比赛,M.100-男子一百米,M.200-男子两百米。
\n");printf("\n各项名次得分权值如下:\n");printf("取前三名:第一名5分第二名3分第三名2分\n");printf("\n请输入各学校的得分情况:");for(i=0;i<N;i++){printf("\n请输入第%d个学校的得分情况:\n",i+1);printf("学校:");scanf("%s",zf[i].univ);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() //进入查询系统子函数{int n,w2;do{puts("\t\t***^__^ Welcome to load search system! ^__^***\n");puts("\t\t*************************MENU*************************\n");puts("\t\t******** 1.search ttzf **************\n");//查看团体总分puts("\t\t******** 2.search csxx **************\n");//查看参赛学校信息!puts("\t\t******** 3.search bsxm **************\n");//查看比赛项目信息!puts("\t\t******** 4.Exit **************\n");//退出puts("\t\t***************************************\n");printf("Choose your number(1-4):[ ]\b\b");scanf("%d",&n);if (n<1||n>4){w2=1;printf("\n\n\t\t----------------------DATAERROR!----------------------\n\n\ n");getchar();}else w2=0;}while (w2==1);switch(n){case 1: ttzf();break;case 2: csxx();break;case 3: bsxm();break;case 4: exit(0);break;default: printf("未进行任何操作!");}}void ttzf() //查看学校团体总分子函数{fp2=fopen("zfen","r");printf("\n各学校的团体总分情况如下:\n\n");printf("学校参赛项目总分\n");for(i=0;i<N;i++){fread(&zf[i],sizeof(struct zongfen),1,fp2);printf("%-8s%s,%s,%-12s%-12d\n",zf[i].univ,zf[i].prog1,zf[i].prog2,zf[i].prog3, zf[i].total_score);}fclose(fp2);printf_back();}void csxx() //查看参赛学校信息子函数{fp3=fopen("xxiao","r");printf("\n各参赛学校的情况如下:\n\n");printf("学校参赛项目参赛者数\n");for(i=0;i<N;i++){fread(&xx[i],sizeof(struct xuexiao),1,fp3);printf("%-8s%-20s%-12d\n",xx[i].univ,xx[i].prog,xx[i].num_athlete);}fclose(fp3);printf_back();}void bsxm() //查看比赛项目子函数{fp4=fopen("pr","r");printf("\n各比赛项目的信息如下:\n\n");printf("项目取分情况参赛者1 所属学校参赛者2 所属学校\n");for(i=0;i<N;i++){fread(&pro[i],sizeof(struct program),1,fp4);printf("%-12s%-10d%-10s%-12s%-10s%-12s\n",pro[i].prog,pro[i].quming,pro[i].ath1 ,pro[i].univ1,pro[i].ath2,pro[i].univ2);}fclose(fp4);printf_back();}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******** 4.Exit **************\n");//退出 puts("\t\t******************************************************\n");printf("Choose your number(1-4):[ ]\b\b");scanf("%d",&n);if (n<1||n>4){w1=1;printf("\n\n\t\t----------------------DATAERROR!----------------------\n\n\n");getchar();}else w1=0;}while (w1==1);switch(n){case 1:Information();break; //输入信息case 2:savescore();break;//比赛结果录入case 3:Search();break;//查询模块case 4:exit(0);}}//公共函数void printf_back(){int w;printf("\n\n\tSUCCESSFUL!\n\n");printf("What do you want to do next?\n\n\t1).exit \t2).menu:[ ]\b\b");scanf("%d",&w);if(w==1)exit(0);else menu();}如有侵权请联系告知删除,感谢你们的配合!。