双非普通一本大一学生学期末课设——运动会比赛计分系统
双非普通一本大一学生学期末课设——运动会比赛计分系统
双非普通一本大一学生学期末课设——运动会比赛计分系统
并没有做文件系统…只能将就的看一下,也没有结构体
做的很粗糙,很烂,就是发出来纪念一下。
感觉有点像堆出来的一坨屎,但是好歹是自己儿子,为我的代码自豪
题目要求:初始化输入: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上学到了那么多东西,无以为报,只希望通过把平时做的一些微不足道的小东西发上来,也许哪怕就对只能一个人能有那么一点点的帮助,那我也很开心了
最新文章
- html5border设置彩色,css中border颜色不同怎么设置?
- Excel转Html(一)
- DataGridView.BorderStyle 属性
- rowid与rownum的含义是什么?
- winrar v3.8 的注册码
- MindSpore实现语音指令识别(迁移tf入门教程)
- 服务器iis短文件名漏洞,IIS短文件名漏洞分析及一个实例
- 通过软件架构来达到易用性
- 职场交流
- IIS的安全配置
- Gallery3D
- ext2与ext3的区别
- 对前途迷茫时多看看
- SAR成像系列:【5】合成孔径雷达(SAR)成像算法
- Hashtable简述
- 中国剩余定理 (51nod 1079)
- 小程序 订单倒计时系列
- MFCCList使用
- Python爬虫爬取动态网页
- 机器学习中的数据简介