双非普通一本大一学生学期末课设——运动会比赛计分系统

时间: 2023-08-22 admin IT培训

双非普通一本大一学生学期末课设——运动会比赛计分系统

双非普通一本大一学生学期末课设——运动会比赛计分系统

双非普通一本大一学生学期末课设——运动会比赛计分系统

并没有做文件系统…只能将就的看一下,也没有结构体

做的很粗糙,很烂,就是发出来纪念一下。
感觉有点像堆出来的一坨屎,但是好歹是自己儿子,为我的代码自豪

题目要求:初始化输入:N-参赛学校总数,M-男子竞赛项目数,W-女子竞赛项目数
各项目名次取法有如下几种:
取前5名:第一名得分7分,第二名得分5,第三名得分3,第四名得分2,第五名得分1;取前3名:第一名得分5,第二名得分3,第三名得分2;
功能要求:
(1)系统以菜单方式工作
(2)由程序提醒用户填写比赛结果,输入各项目获奖运动员信息。
(3)所有信息记录完毕后,用户可以查询各个学校的比赛成绩。
(4)查看参赛学校信息和比赛项目信息等。

#include<stdio.h>
#include <stdlib.h>
#include<string.h>
#include<stdlib.h>int MainMenu();				//主菜单显示与选择函数
int sca();					//输入函数 返回输入的值int N, M, W, choice;int YoN=0;char name[100][20];		//学校名称int i=1,j,k,q;			//一些常用的无关的变量char* p;				//定义关于name[100][20]的指针变量int *pp,*on,*tw,*th,*fo,*fi;		//定义获奖数量指针变量,对应12345名int points[100]={0};			//纪录积分int one[100]={0};				//第一名获奖数量int two[100]={0};				//第二名获奖数量int three[100]={0};				//第三名获奖数量int four[100]={0};				//第四名获奖数量int five[100]={0};				//第五名获奖数量char projectM[100][20]={0};		//男子项目名称 char projectW[100][20]={0};		//女子项目名称 int projectM_school[100][5]={0};		//男子项目获奖学校记录 int projectW_school[100][5]={0};		//女子项目名称学校记录 char *pM;						//男子项目名称指针char *pW;						//女子项目名称指针int modeM[100];					//男子项目计分模式纪录  0为取前三名,1为取前5名int modeW[100];					//女子项目计分模式纪录int main() {				//***********主函数************system("mode con cols=150 lines=50");	//调整控制台的长款 宽度150 高度30p = name[0];pp=points,on=one,tw=two,th=three,fo=four,fi=five;	//定义指针变量方便修改数组内的值pM=projectM[0];pW=projectW[0];printf("欢迎进入运动会比赛计分系统\n");		//欢迎界面标题system("pause");		//按任意键继续do{system("cls");		//清屏printf("请先分别输入参赛学校总数,男子竞赛项目数,女子竞赛项目数:");N = sca();			//输入参赛学校总数M = sca();			//输入男子竞赛项目数W = sca();			//输入女子竞赛项目数printf("输入后便不可更改,确定要继续吗?\n按1选择继续,按其他数字键选择重新输入:");scanf("%d",&YoN);}while(YoN!=1);choice = MainMenu();	//主菜单显示与选择函数while (choice <=3||choice>=1) {				//根据在主菜单里选择的数字进入相应的选项switch (choice) {//↓↓↓学校名称输入↓↓↓case 1: {system("cls");					//清屏printf("请依次输入学校名称\n");for (i = 0; i < N; i++) {		//依次输入学校名称printf("%d:", i + 1);		//学校名称前的序号gets(name[i]);				//通过循环依次输入学校的名字fflush(stdin);				//清除缓冲区剩余的内容,防止多输入}break;}//↑↑↑学校名称输入↑↑↑//↓↓↓男子项目获奖输入↓↓↓case 2: {system("cls");for(i=0;i<M;i++){if(i==0)printf("请依次输入男子项目奖项获得的学校\n");			//只在第一行输出这段话printf("男子第%d个项目:\n",i+1);		//项目显示编号比实际编号大1printf("请输入排名方式(1.三名制2.五名制):\n");int mode=1;			//定义控制三名制or五名制的变量scanf("%d",&mode);if(mode>2||mode<1){			//防止输入错误	printf("输入有误,请重新输入:\n");scanf("%d",&mode);}printf("请输入男子第%d个项目的名称:",i+1);fflush(stdin);				//清除缓冲区剩余的内容,防止多输入gets(projectM[i]);			//输入男子第i+1个项目的名称fflush(stdin);switch (mode) {case 1: {		//取前三名次制modeM[i]=0;for(j=0;j<3;j++){for (k = 0; k < N; k++) {			//依次显示学校名称printf("%-2d:",k+1);printf("%-20s", p + k * 20);	//+字符长度20即显示下一个名称if((k+1)%5==0)					//每行5个学校名字printf("\n");if((k+1)==N&&(k+1)%5==0)		//输出到最后一个学校换行,除了5的倍数printf("\n");}printf("请选择获得第%d名的学校是:",j+1);scanf("%d",&q);	//输入提示学校名称的头部编号int mlgb;mlgb=q-1;		//mlgb为实际的学校编号while(q>N||q<1){		//输错纠错printf("这也能输错?请输入正确的数");scanf("%d",&q);}if(j==0){				//第一名*(pp+mlgb)+=5;		//修改数组中的值-累加积分*(on+mlgb)+=1;		//累加获奖数量projectM_school[i][j]=mlgb;		//纪录获奖学校,重申:i为男子项目号,j为男子项目获奖名次,mlgb为选中的实际学校编号}else if(j==1){			//第二名*(pp+mlgb)+=3;*(tw+mlgb)+=1;projectM_school[i][j]=mlgb; }else{					//第三名*(pp+mlgb)+=2;*(th+mlgb)+=1;projectM_school[i][j]=mlgb; }}break;}case 2:{				//取前五名次制  和取前三名制的区别只有多输入2名modeM[i]=1;for(j=0;j<5;j++){for (k = 0; k < N; k++) {printf("%-2d:",k+1);printf("%-20s", p + k * 20);if((k+1)%4==0)printf("\n");if((k+1)==N)printf("\n");	}printf("请选择获得第%d名的学校是:",j+1);scanf("%d",&q);int mlgb;mlgb=q-1;while(q>N||q<1){printf("这也能输错?请输入正确的数");scanf("%d",&q);}if(j==0){				//可优化  但是这样简单直白*(pp+mlgb)+=7;*(on+mlgb)+=1;projectM_school[i][j]=mlgb;}else if(j==1){*(pp+mlgb)+=5;*(tw+mlgb)+=1;projectM_school[i][j]=mlgb;}else if(j==2){*(pp+mlgb)+=3;*(th+mlgb)+=1;projectM_school[i][j]=mlgb;}else if(j==3){*(pp+mlgb)+=2;*(fo+mlgb)+=1;projectM_school[i][j]=mlgb;}else if(j==4){*(pp+mlgb)+=1;*(fi+mlgb)+=1;projectM_school[i][j]=mlgb;}}}break;}}system("cls");break;}//↑↑↑男子项目获奖输入↑↑↑//↓↓↓女子项目获奖输入↓↓↓case 3: {			//和男子项目获奖输入的区别只有把所有M改成W----本项所有注释参照男子项目获奖输入system("cls");for(i=0;i<W;i++){if(i==0)printf("请依次输入女子项目奖项获得的学校\n");printf("女子第%d个项目:\n",i+1);printf("请输入排名方式(1.三名制2.五名制):");int mode=1;scanf("%d",&mode);if(mode>2||mode<1){printf("输入有误,请重新输入:\n");scanf("%d",&mode);}printf("请输入女子第%d个项目的名称:",i+1);fflush(stdin);gets(projectW[i]);fflush(stdin);switch (mode) {case 1: {			//取前三名次制modeW[i]=0;for(j=0;j<3;j++){			for (k = 0; k < N; k++) {		printf("%-2d:",k+1);printf("%-20s", p + k * 20);if((k+1)%4==0)printf("\n");if((k+1)==N)printf("\n");}printf("请选择获得第%d名的学校是:",j+1);scanf("%d",&q);int mlgb;mlgb=q-1;				while(q>N||q<1){printf("这也能输错?请输入正确的数");scanf("%d",&q);}if(j==0){				*(pp+mlgb)+=5;		*(on+mlgb)+=1;projectW_school[i][j]=mlgb;}else if(j==1){*(pp+mlgb)+=3;*(tw+mlgb)+=1;projectW_school[i][j]=mlgb;}else{*(pp+mlgb)+=2;*(th+mlgb)+=1;projectW_school[i][j]=mlgb;}}break;}case 2:{			//取前五名次制modeW[i]=1;for(j=0;j<5;j++){			for (k = 0; k < N; k++) {printf("%-2d:",k+1);printf("%-20s", p + k * 20);if((k+1)%4==0)printf("\n");if((k+1)==N)printf("\n");}printf("请选择获得第%d名的学校是:",j+1);scanf("%d",&q);int mlgb;mlgb=q-1;while(q>N||q<1){printf("这也能输错?请输入正确的数");scanf("%d",&q);}if(j==0){				*(pp+mlgb)+=7;*(on+mlgb)+=1;projectW_school[i][j]=mlgb;}else if(j==1){*(pp+mlgb)+=5;*(tw+mlgb)+=1;projectW_school[i][j]=mlgb;}else if(j==2){*(pp+mlgb)+=3;*(th+mlgb)+=1;projectW_school[i][j]=mlgb;}else if(j==3){*(pp+mlgb)+=2;*(fo+mlgb)+=1;projectW_school[i][j]=mlgb;}else if(j==4){*(pp+mlgb)+=1;*(fi+mlgb)+=1;projectW_school[i][j]=mlgb;}}}break;}}system("cls");break;}//↑↑↑女子项目获奖输入↑↑↑//↓↓↓学校积分榜↓↓↓case 4: {for (i = 0; i < N; i++) {	//依次显示学校名称if(i==0)printf("学校名称            积分  第一名  第二名  第三名  第三名  第五名\n");printf("%d:",i+1);		//字符串的长度为10printf("%-20s", p + i * 20);			//学校名称  字符长度20printf("%-6d",points[i]);				//积分printf("%-8d",one[i]);					//第一名数量printf("%-8d",two[i]);					//第二名数量printf("%-8d",three[i]);				//同上...printf("%-8d",four[i]);printf("%-8d",five[i]);printf("\n");}system("pause");break;}//↑↑↑学校积分榜↑↑↑//↓↓↓各学校获奖项目及获奖名次↓↓↓case 5: {		//查看各学校获奖项目及获奖名次system("cls");printf("请输入要查看学校的序号");for (k = 0; k < N; k++) {			//依次显示学校名称printf("%-2d:",k+1);printf("%-20s", p + k * 20);	//+字符长度20即显示下一个名称if((k+1)%5==0)					//每行5个学校名字printf("\n");if((k+1)==N&&(k+1)%5==0)		//输出到最后一个学校换行,除了5的倍数printf("\n");}scanf("%d",&q);int mlgb;mlgb=q-1;printf("男子项目:\n");for(i=0;i<M;i++){for(j=0;j<5;j++){if(projectM_school[i][j]==mlgb){		//i为项目号,j为名次编号,此为男子项目printf("%-20s",projectM[i]);printf("第%d名",j+1);}}}printf("女子项目:\n");for(i=0;i<W;i++){for(j=0;j<5;j++){if(projectW_school[i][j]==mlgb){		//i为项目号,j为名次编号,此为女子项目printf("%-20s",projectW[i]);printf("第%d名\n",j+1);}}}system("pause");break;}//↑↑↑各学校获奖项目及获奖名次↑↑↑//↓↓↓各项目获奖学校名次↓↓↓case 6: {		//查看各项目获奖学校名次--输入男子/女子项目编号来查看system("cls");printf("要查看男子或女子项目-男子请输入1,女子请输入2\n");scanf("%d",&q);			if(q>2||q<1){			//错误纠正printf("请输入正确的数:");scanf("%d",&q);}switch (q) {case 1:{for(q=0;q<M;q++){		//反正switch中的q用完就扔掉,懒得想了,重复利用,环保printf("%d:",q+1);printf("%-20s", pM + q * 20);		//输出男子项目的名称}printf("请输入要查看的项目编号\n");scanf("%d",&i);if(i>M||i<1){		//此处的i为项目真正编号+1printf("请输入正确的数:");scanf("%d",&i);}int mlgb;		//此变量为懒得想专属工具变量mlgb=i-1;//*********输出部分*********system("cls");if(modeM[mlgb]==0){printf("%s获奖情况\n", pM + mlgb * 20);printf("第一名:%s\n",name[projectM_school[mlgb][0]]);printf("第二名:%s\n",name[projectM_school[mlgb][1]]);printf("第三名:%s\n",name[projectM_school[mlgb][2]]);}else{printf("%s获奖情况\n", pM + mlgb * 20);printf("第一名:%s\n",name[projectM_school[mlgb][0]]);printf("第二名:%s\n",name[projectM_school[mlgb][1]]);printf("第三名:%s\n",name[projectM_school[mlgb][2]]);printf("第四名:%s\n",name[projectM_school[mlgb][3]]);printf("第五名:%s\n",name[projectM_school[mlgb][4]]);}system("pause");//*********输出部分*********break;}case 2:{		//和男子的区别只有把M改成Wfor(q=0;q<W;q++){		//输出女子项目的标号及名称printf("%d:",q+1);printf("%-20s", pW + q * 20);		}printf("请输入要查看的项目编号\n");scanf("%d",&i);if(i>W||i<1){printf("请输入正确的数:");scanf("%d",&i);}int mlgb;mlgb=i-1;system("cls");if(modeW[mlgb]==0){printf("%s获奖情况\n", pW + mlgb * 20);printf("第一名:%s\n",name[projectW_school[mlgb][0]]);printf("第二名:%s\n",name[projectW_school[mlgb][1]]);printf("第三名:%s\n",name[projectW_school[mlgb][2]]);}else{printf("%s获奖情况\n", pW + mlgb * 20);printf("第一名:%s\n",name[projectW_school[mlgb][0]]);printf("第二名:%s\n",name[projectW_school[mlgb][1]]);printf("第三名:%s\n",name[projectW_school[mlgb][2]]);printf("第四名:%s\n",name[projectW_school[mlgb][3]]);printf("第五名:%s\n",name[projectW_school[mlgb][4]]);}system("pause");break;}}break;}//↑↑↑各项目获奖学校名次↑↑↑case 7: {		//退出程序return 0;	}}choice = MainMenu();}return 0;
}int MainMenu() {		//主菜单显示与选择int choice;system("cls");printf("                   运动会比赛计分系统\n");printf("**************************主菜单****************************\n");printf("||               输入数字标号以进入相应选项               ||\n");printf("||                   1:录入学校名称                       ||\n");printf("||                   2:男子比赛结果录入                   ||\n");printf("||                   3:女子比赛结果录入                   ||\n");printf("||                   4:查看各学校积分及获奖数             ||\n");printf("||                   5:查看各学校获奖项目及获奖名次       ||\n");printf("||                   6:查看各项目获奖学校名次             ||\n");printf("||                   7:退出程序                           ||\n");printf("************************************************************\n");printf("选择相应数字进入>>>>");scanf("%d", &choice);		//输入选择的标号fflush(stdin);while (choice < 1 || choice > 7) {printf("错误,请输入正确的数\n");scanf("%d", &choice);fflush(stdin);}return choice;		//返回选择值后输入switch函数进去下一菜单
}int sca() {				//输入数的函数(其实并没有省掉很多工作量或者空间)int n;scanf("%d", &n);if(n<0){printf("输入有误,请重新输入");scanf("%d", &n);}return n;
}//先保留备用,看的清楚,一目了然//printf("%d\n",projectM_school[0][0]);//printf("%d\n",projectM_school[0][1]);//printf("%d\n",projectM_school[0][2]);//printf("%s\n",name[projectM_school[i][0]]);			//[projectM_school[i][j]]为纪录的项目排名的学校号//printf("%s\n",name[projectM_school[i][1]]);//printf("%s\n",name[projectM_school[i][2]]);//printf("%-20s", pM + i * 20);		//控制i来进一步控制projectM[100][20](男子项目名称)的输出//scanf("%d",&i);//printf("%-20s", pM + i * 20);

主要的功能是1.学校名称的输入2.按学校的比赛成绩录入3.比赛成绩的查看(包含按项目和按学校查看)

如果哪位大佬或者同样是要做这种课设同学看到了这篇文章,我会十分感动的。
哈哈哈哈哈哈感觉我这个代码也许蛮好懂的?
希望能为大家做出一点微薄的贡献,在CSDN上学到了那么多东西,无以为报,只希望通过把平时做的一些微不足道的小东西发上来,也许哪怕就对只能一个人能有那么一点点的帮助,那我也很开心了