本文目录一览:
C++运动会比赛计分系统!求助!
#includestdio.h
#includestdlib.h
#define n 2 //参赛学校数
#define m 1 //男子竞赛项目数
#define w 1 //女子竞赛项目数
typedef struct sco
{
int mark[5];//分数
int itmnum;//项目编号
char name[10];//运动员姓名
int l; //获奖名次数
int range[5];//排名
}sc;
typedef struct node
{
int sclnum;//学校编号
sc a[m+w];
int mscore;//男子团体总分
int wscore;//女子团体总分
int sum;//学校项目总分
struct nd *next;
}nd;
nd *p,*q,*head,*g,*s,*u;//全局指针变量
/*****************************************************************************************************************************************************************/
/***********************************************************************菜 单 函 数****************************************************************************/
menu()
{
system("cls");
printf("★================运动会比赛计分系统=================★\n");
printf("*********************** welcome *********************\n");
printf("********************* 金建业 编制 ********************\n");
printf("** 1-------------------键盘输入 **\n");
printf("** 2-------------------文件读入 **\n");
printf("** 3---------------------输出 **\n");
printf("** 4---------------------查询 **\n");
printf("** 5---------------------退出 **\n");
printf("**男子前五名依次得分:7分 5分 3分 2分 1分**\n");
printf("**女子前三名依次得分:5分 3分 2分 **\n");
printf("*******************************************************\n");
printf("=======================================================\n");//菜单
}
/*****************************************************************************************************************************************************************/
/********************************************************************计 分 函 数****************************************************************************/
void compute(int i,int x,int k)
{
if(k==3) //女子项目取前三名
{
switch(p-a[x].range[i])
{
case 0: p-a[x].mark[p-a[x].range[i]]=0;break;
case 1: p-a[x].mark[p-a[x].range[i]]=5;break;
case 2: p-a[x].mark[p-a[x].range[i]]=3;break;
case 3: p-a[x].mark[p-a[x].range[i]]=2;break;
default: puts("输入有误!");exit(0);
}
}
else
{
switch(p-a[x].range[i]) //男子项目取前五名
{
case 0: p-a[x].mark[p-a[x].range[i]]=0;break;
case 1: p-a[x].mark[p-a[x].range[i]]=7;break;
case 2: p-a[x].mark[p-a[x].range[i]]=5;break;
case 3: p-a[x].mark[p-a[x].range[i]]=3;break;
case 4: p-a[x].mark[p-a[x].range[i]]=2;break;
case 5: p-a[x].mark[p-a[x].range[i]]=1;break;
default: puts("输入有误!");break;
}
}
}
/*****************************************************************************************************************************************************************/
/******************************************************************输 入 函 数***************************************************************************/
nd *input() //创建链表输入函数
{
int i,x,y=1,k;
p=(nd*)malloc(sizeof(nd));
/*************************************************************************************/
{ //头结点的初始化
printf("\n**按如下格式输入(相同学校编号不重复输入)**\n");
printf("**项目编号有:111---男子 222---女子 **\n");
printf("**学校编号\n**项目编号获得名次数名次姓名\n");
p-mscore=0;p-wscore=0;
scanf("%d",p-sclnum);
for(x=0;xm+w;x++)
{
scanf("%d",p-a[x].itmnum); //项目编号
scanf("%d",p-a[x].l);
for(i=0;ip-a[x].l;i++)
{
scanf("%d",p-a[x].range[i]);
scanf("%s",p-a[x].name);
}
if(p-a[x].itmnum==222)
k=3;
else
k=5;
for(i=0;ip-a[x].l;i++)
{ compute(i,x,k);
if(p-a[x].itmnum==222 ) //共俩个项目: 111(男子项目) 222(女子项目)
p-wscore+=p-a[x].mark[p-a[x].range[i]];
else
p-mscore+=p-a[x].mark[p-a[x].range[i]];
}
}
p-sum=p-mscore+p-wscore; //求学校总成绩
head=p;
q=p;
}
/****************************************************************************************/
while(yn) //创建新节点
{
y++; //计数:控制输入学校的个数
p=(nd*)malloc(sizeof(nd));
p-mscore=0;
p-wscore=0;
scanf("%d",p-sclnum);
for(x=0;xm+w;x++)
{
scanf("%d",p-a[x].itmnum);
scanf("%d",p-a[x].l);
for(i=0;ip-a[x].l;i++)
{
scanf("%d",p-a[x].range[i]);
scanf("%s",p-a[x].name);
}
if(p-a[x].itmnum==222)
k=3;
else
k=5;
for(i=0;ip-a[x].l;i++)
{
compute(i,x,k);
if(p-a[x].itmnum==222)
p-wscore+=p-a[x].mark[p-a[x].range[i]];
else
p-mscore+=p-a[x].mark[p-a[x].range[i]];
}
}
p-sum=p-mscore+p-wscore;
q-next=p;
q=p;
}
/*****************************************************************************************/
p-next=NULL;
menu();
return head;
}
/*****************************************************************************************************************************************************************/
/***********************************************************************输 出 函 数**********************************************************************/
void output(nd *head) //输出成绩
{
nd *q=head;
int i,x,y=1,k;
FILE *fp;
int co;
printf("****1---------不输出,存入文件\n");
printf("****2---------输出,不存入文件\n");
scanf("%d",co);
switch(co)
{
case 1:
{
fp=fopen("d:\\abc.txt","w+");
if(fp==NULL)
{printf("无法打开文件!");exit(0);}
while(q!=NULL)
{
fprintf(fp,"%d\n",q-sclnum);
for(x=0;xm+w;x++)
{
fprintf(fp,"%d\t\n",q-a[x].itmnum);
fprintf(fp,"%d\t\n",q-a[x].l);
for(i=0;iq-a[x].l;i++)
fprintf(fp,"%d\t",q-a[x].range[i]);
fprintf(fp,"\n");
}
q=q-next;
}
fclose(fp);
}break;
case 2:
//system("cls");
while(q!=NULL)
{
printf("===================================\n");
printf(" 学校编号:\t");
printf("%d\n",q-sclnum);
for(x=0;xm+w;x++)
{
printf(" 项目编号:\t");
printf("%d\t\n",q-a[x].itmnum);
printf(" 有%d个获奖名次:\t",q-a[x].l);
for(i=0;iq-a[x].l;i++)
{
printf("第%d名\t",q-a[x].range[i]);
}
printf("\n\n");
}printf("男子团体项目总分:\t%d\n",q-mscore);
printf("女子团体项目总分:\t%d\n",q-wscore);
printf(" 学校项目总得分:\t%d\n\n",q-sum);
printf("\n");
q=q-next;
}break;
default :
puts("输入有误!");exit(0);
}
}
/**********************************************************************************************/
/**************************************文 件 读 入 函 数***************************************/
nd *read()
{
FILE *fpa=NULL;
int i,x,y=1,k;
p=(nd *)malloc(sizeof(nd));
p-mscore=0;p-wscore=0;
fpa=fopen("d:\\abc.txt","r+");//打开文件
if(fpa==NULL)
{puts("对不起,无法打开文件!");exit(0);}
fscanf(fpa,"%d",p-sclnum);
for(x=0;xm+w;x++)
{
printf("已读入%d个项目\n",x+1);
fscanf(fpa,"%d%d",p-a[x].itmnum,p-a[x].l);
for(i=0;ip-a[x].l;i++)
fscanf(fpa,"%d",p-a[x].range[i]);
if(p-a[x].itmnum==222)
k=3;
else
k=5;
for(i=0;ip-a[x].l;i++)
{
compute(i,x,k);
if(p-a[x].itmnum==222)
p-wscore+=p-a[x].mark[p-a[x].range[i]];
else
p-mscore+=p-a[x].mark[p-a[x].range[i]];
}
}
p-sum=p-mscore+p-wscore;
head=p;
q=p;
while(yn)//控制输入学校个数
{
y++;
p=(nd *)malloc(sizeof(nd));
p-mscore=0;
p-wscore=0;
fscanf(fpa,"%d",p-sclnum);
for(x=0;xm+w;x++)
{
printf("已读入%d个项目\n",x+1);
fscanf(fpa,"%d",p-a[x].itmnum);
fscanf(fpa,"%d",p-a[x].l);
for(i=0;ip-a[x].l;i++)
fscanf(fpa,"%d",p-a[x].range[i]);
if(p-a[x].itmnum==222)
k=3;
else
k=5;
for(i=0;ip-a[x].l;i++)
{
compute(i,x,k);
if(p-a[x].itmnum==222)
p-wscore+=p-a[x].mark[p-a[x].range[i]];
else
p-mscore+=p-a[x].mark[p-a[x].range[i]];
}
}
p-sum=p-wscore+p-mscore;
q-next=p;
q=p;
}
p-next=NULL;
fclose(fpa);//关闭文件
return head;
}
/******************************************************************************************************************************************************************/
/*********************************************************************查 找 函 数*************************************************************************/
void find(nd *head)
{
nd *q=head;
int num,x,i,flag=0;
printf("请输入你要查询的学校编号:");
scanf("%d",num);
while(q!=NULL)
{
if(num==q-sclnum)
{
printf("===================================\n");
printf("学校编号\n");
printf("%d\n",q-sclnum);
for(x=0;xm+w;x++)
{
printf("项目编号\n");
printf("%d\t\n",q-a[x].itmnum);
printf("有%d个获奖名次:\t",q-a[x].l);
for(i=0;iq-a[x].l;i++)
{
printf("第%d名\t",q-a[x].range[i]);
}
printf("\n\n");
}
printf("男子团体项目总分:%d\n",q-mscore);
printf("女子团体项目总分:%d\n",q-wscore);
printf(" 学校项目总得分:%d\n\n",q-sum);
printf("\n");
flag=1;
printf("\n");
}
q=q-next;
}
if(flag==0)
puts("对不起!没有您要查询的对象");
}
/*****************************************************************************************************************************************************************/
/********************************************************************主 函 数*******************************************************************************/
void main() //主函数
{
int ch;
menu();
while(1)
{
printf("请选择\t");
scanf("%d",ch);
switch(ch)
{
case 1: menu();g=input(); break;
case 2: menu();g=read(); break;
case 3: menu();output(g); break;
case 4: menu();find(g); break;
case 5: menu();puts("*********************谢谢您的使用!");exit(0);
default: menu();puts("对不起!输入有误");exit(0);
}
}
}
/*******************************************************************************************************************************************************************/
这个是我用C语言做的 刚提交过 答辩也过了 你看看行不行 相信稍作修改您就能够用了!
用C语言帮我编个运动会计分系统小程序 高分急求
这个用C难度过大。即使用VB.NET去写,工作量也很打。首先数据库的设计,需求、功能、模式等,编码前需要考虑的问题就非常多。而后在具体编码中肯定又多少会遇到些难题。我觉得这不应该是一个个人项目,应该以小组课程设计比较恰当。 这个任务量很大,会很花时间,不然也不会作为你们的学期作业。 这个我建议你还是多向身边同学寻求帮助,同时能够踏实参与完成若干课程设计,对你的问题分析个编码能力都有很大的提高。
用C语言设计开发学校运动会管理系统。
#includestdio.h#includeconio.h#includestdlib.h#includestring.h
#define SIZE 16#define N 4#define WM 3
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[5]; char name[16]; char prog[15]; char mingci[5]; int score; int age[16];} 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("欢迎进入信息录入功能!\n"); puts("目录\n"); puts("1.录入运动员信息\n"); puts("2.录入系信息\n"); puts("3.录入项目信息()\n"); puts("4.后退\n"); puts("\n"); printf("选择功能(1-4):[ ]\b\b"); scanf("%d",n); if (n1||n4) { 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); }}
void saveathlete() //保存运动员信息子函数
{ printf("\n请输入各项目获奖运动员的信息:"); for(i=0; iSIZE; i++) { printf("\n请输入第%d个运动员的信息:\n",i+1); printf("姓名:"); scanf("%s",at[i].name); printf("年龄: "); scanf("%d",at[i].age); 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; iSIZE; i++) { if(fwrite(at[i],sizeof(struct athlete),1,fp1)!=1) printf("错误!\n"); } fclose(fp1); fp1=fopen("ath","r for(i=0; iSIZE; i++)"); printf("\n现在各运动员的信息如下:\n\n"); printf("姓名 年龄 系别 项目 名次 得分\n");
{ fread(at[i],sizeof(struct athlete),1,fp1); printf("%-10%ds%-10s%-18s%-10s%d\n",at[i].name,at[i].age,at[i].univ,at[i].prog,at[i].mingci,at[i].score); } fclose(fp1); printf_back();}
void saveschool() //保存系信息子函数
{ printf("\n请输入各参赛系别的信息:"); for(i=0; iN; 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; iN; i++) { if(fwrite(xx[i],sizeof(struct xuexiao),1,fp3)!=1) printf("错误!\n"); } fclose(fp3); printf_back();}
void saveprogram() //保存项目比赛信息子函数{ printf("\n请输入关于比赛项目的信息:"); for(i=0; iWM; i++) { printf("\n请输入第%d项比赛的信息:\n",i+1); printf("项目:"); scanf("%s",pro[i].prog); printf("取分情况:"); scanf("%d",pro[i].quming); printf("参赛者:"); scanf("%s",pro[i].ath1); printf("所属学校:"); scanf("%s",pro[i].univ1); printf("参赛者:"); scanf("%s",pro[i].ath2); printf("所属学校:"); scanf("%s",pro[i].univ2); }
fp4=fopen("pr","w"); for(i=0; iN; i++) { if(fwrite(pro[i],sizeof(struct program),1,fp4)!=1) printf("错误!\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; iN; 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; iN; i++) { if(fwrite(zf[i],sizeof(struct zongfen),1,fp2)!=1) printf("错误!\n"); } fclose(fp2); printf_back();}
void Search(){ int n,w2; do { puts("欢迎进入查询功能!\n"); puts("目录\n"); puts("1.查询团体总分\n");//查看团体总分 puts("2.查询参赛学校信息\n");//查看参赛学校信息! puts("3.查询比赛项目信息\n");//查看比赛项目信息! puts("4.退出\n");//退出 puts("\n"); printf("选择功能(1-4):[ ]\b\b"); scanf("%d",n); if (n1||n4) { w2=1; 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; iN; 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; iN; 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; iN; 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("欢迎进入运动会管理系统!\n"); puts("目录\n"); puts("1.输入信息\n"); puts("2.比赛结果录入\n"); puts("3.查询\n"); puts("4.退出\n"); puts("\n"); printf("选择功能(1-4):[ ]\b\b"); scanf("%d",n); if (n1||n4) { w1=1; 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();}
C语言 运动会计分系统 急求!!
#include "stdio.h"
#pragma warning(disable:4996)
struct School {
char name;
int totalScore;
struct Item* next;
};
struct School* sch[5];
struct Item {
char id;
int score;
struct Item* next;
};
int atoi(char c)
{
return c - '0';
}
int DataValidation(char* str)
{
int tmpItem[10], tmpScore[100], a, b, c,i;
for (i = 0; i 10; i++)
{
tmpItem[i] = tmpScore[i] = 0;
}
for (i = 0; i 27; i += 3)
{
a = atoi(str[i]);
b = atoi(str[i + 1]);
c = atoi(str[i + 2]);
if ((a 1 || a3) || (b 1 || b5) || (c != 5 c != 3 c != 1 c != 0))
{
return 0;
}
else
{
tmpItem[a]++;
tmpScore[a] += c;
}
}
for (i = 1; i = 3; i++)
{
if (tmpItem[i] != 3)
{
return 0;
}
}
for (i = 1; i = 3; i++)
{
if (tmpScore[i] != 9)
return 0;
}
return 1;
}
void insert(char itemId, char schoolId, int score)
{
int i;
for (i = 0; i 5; i++)
{
if (sch[i]-name == schoolId)
{
struct Item *item = (struct Item*)malloc(sizeof(struct Item));
item-id = itemId;
item-score = score;
item-next = sch[i]-next;
sch[i]-next = item;
}
}
}
void updateTotalScore()
{
int i = 0;
struct Item *tmp;
for (i = 0; i 5; i++)
{
tmp = sch[i]-next;
while (tmp != NULL)
{
sch[i]-totalScore += tmp-score;
tmp = tmp-next;
}
}
}
void sort()
{
int i, j;
struct School* tmp;
for (i = 0; i 5; i++)
{
for (j = 0; j i; j++)
{
if (sch[i]-totalScore sch[j]-totalScore)
{
tmp = sch[i];
sch[i] = sch[j];
sch[j] = tmp;
}
}
}
}
void print()
{
int i;
struct Item *tmp;
for (i = 0; i 5; i++)
{
printf("college%d : %2d ", sch[i]-name, sch[i]-totalScore);
tmp = sch[i]-next;
while (tmp != NULL)
{
printf("item%c(%d) ", tmp-id,tmp-score);
tmp = tmp-next;
}
printf("\n");
}
}
int main()
{
int i;
char str[50], tmp1, tmp2;
for (i = 0; i 5; i++)
{
sch[i] = (struct School*)malloc(sizeof(struct School));
sch[i]-name = i + 1+'0';
sch[i]-next = NULL;
sch[i]-totalScore = 0;
}
for (i = 0; i 27; i++)
{
scanf("%c", str[i]);
}
str[27] = '\0';
while (DataValidation(str) == 0)
{
printf("输入的数据不合法,请全部重新输入\n");
for (i = 0; i 27; i++)
{
scanf("%c", str[i]);
}
}
for (i = 1; i = 25; i = i + 3)
{
int convert = atoi(str[i + 1]);
insert(str[i - 1], str[i], convert);
}
updateTotalScore();
sort();
print();
while (1);
return 0;
}