程序.docx
- 文档编号:28358231
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:16
- 大小:17.02KB
程序.docx
《程序.docx》由会员分享,可在线阅读,更多相关《程序.docx(16页珍藏版)》请在冰豆网上搜索。
程序
#include
#include
#include
#defineMAX50
typedefstructnode1{
intschool;/*学校编号*/
intrecord;/*项目成绩*/
structnode1*next;/*链域存储指针*/
}Schools;
typedefstruct{
intitem;/*项目编号*/
Schools*firstschool;/*链域指向链表中第一个结点*/
}ITEM;
typedefstruct{
intz;/*项目总数*/
ITEMa[MAX];
}ALLitems;
typedefstructnode2{
intitem;/*该学校获奖的项目*/
intrecord;/*项目成绩*/
structnode2*next;/*链域*/
}Items;
typedefstruct{
intschool;/*学校编号*/
intscore;/*学校总分*/
intboys;/*男团体总分*/
intgirls;/*女团体总分*/
Items*firstitem;/*链域指向链表中第一个获奖项目的结点*/
}SCHNode;
typedefstruct{
intn;/*学校总数*/
SCHNodeb[MAX];
}ALLNode;
ALLitems*g1;
ALLNode*g2;
FILE*fp1;
voidsave()
{FILE*fp1,*fp2;
fp1=(FILE*)malloc(sizeof(FILE));
fp2=(FILE*)malloc(sizeof(FILE));
if((fp1=fopen("D:
//sports1.dat","w+"))==NULL)
{printf("cannotopenfile.\n");
return;
}
if(fwrite(g1,sizeof(ALLitems),1,fp1)!
=1)
printf("filewriteerror.\n");
fclose(fp1);
if((fp2=fopen("D:
//sports2.dat","w+"))==NULL)
{printf("cannotopenfile.\n");
return;
}
if(fwrite(g2,sizeof(ALLNode),1,fp2)!
=1)
printf("filewriteerror.\n");
fclose(fp2);
}
voidreadfile()//文件读取函数用于打开已有的二进制数据文件
{
//此处输入为文件的路径
if((fp1=fopen("D:
//sports1.dat","r+"))==NULL)
{
printf("\ncan'topenthefile:
\n");
exit(0);
}
fclose(fp1);
}
voidfunct1(ALLitems*g1,ALLNode*g2)
{
Schools*p1;
Items*p2;
inti,j,k,m,w,h,x;
p1=(Schools*)malloc(sizeof(Schools));
p2=(Items*)malloc(sizeof(Items));
printf("******输入各个项目信息******\n");
printf("输入男子项目总数m:
");
scanf("%d",&m);
if(m<0||m>20)
{printf("\n输入有误,m是20以内的整数,请重新输入:
");
scanf("%d",&m);
}
printf("\n输入女子项目总数w:
");
scanf("%d",&w);
if(w<0||w>20)
{printf("\n输入有误,w是20以内的整数,请重新输入:
");
scanf("%d",&w);
}
printf("\n输入参加运动会的学校总数n:
");
scanf("%d",&g2->n);
if(g2->n<0||g2->n>20)
{printf("\n输入有误,n是20以内的整数,请重新输入:
");
scanf("%d",&g2->n);
}
g1->z=m+w;
printf("则项目编号为男子1-%d,女子%d-%d",m,m+1,g1->z);
printf("\n\n****记录运动会成绩****");
printf("\n\n(输入0标志结束)\n");
for(k=1;k<=g1->z;k++)
{g1->a[k].item=k;
g1->a[k].firstschool=NULL;
}
for(k=1;k<=g2->n;k++)
{g2->b[k].school=k;
g2->b[k].firstitem=0;
g2->b[k].score=0;
g2->b[k].boys=0;
g2->b[k].girls=0;
}
g2->b[0].score=0;
g2->b[0].boys=0;
g2->b[0].girls=0;
while(i!
=0)
{printf("\n项目:
");
scanf("%d",&i);
if(i!
=0)
{printf("1.前三名2.前五名\n");
printf("请选择:
");
scanf("%d",&j);
if(j!
=1&&j!
=2)
{printf("输入有误,请重新选择:
");
scanf("%d",&j);
}
if(j==1)
{h=3;
do{printf("第%d名:
学校(学校编号为数字)",h);
scanf("%d",&x);
p1=(Schools*)malloc(sizeof(Schools));
p1->school=x;
p2=(Items*)malloc(sizeof(Items));
p2->item=i;
if(h==3)p2->record=p1->record=2;
if(h==2)p2->record=p1->record=3;
if(h==1)p2->record=p1->record=5;
p1->next=g1->a[i].firstschool;
g1->a[i].firstschool=p1;
p2->next=g2->b[x].firstitem;
g2->b[x].firstitem=p2;
g2->b[x].score=g2->b[x].score+p2->record;/*累计总分*/
if(i<=m)g2->b[x].boys=g2->b[x].boys+p2->record;/*累计男团体总分*/
elseg2->b[x].girls=g2->b[x].girls+p2->record;/*累计女团体总分*/
h--;
}while(x!
=0&&h!
=0);
}
if(j==2)
{h=5;
do{printf("第%d名:
学校(学校编号为数字)",h);
scanf("%d",&x);
p1=(Schools*)malloc(sizeof(Schools));
p1->school=x;
p2=(Items*)malloc(sizeof(Items));
p2->item=i;
if(h==5)p2->record=p1->record=1;
if(h==4)p2->record=p1->record=2;
if(h==3)p2->record=p1->record=3;
if(h==2)p2->record=p1->record=5;
if(h==1)p2->record=p1->record=7;
p1->next=g1->a[i].firstschool;
g1->a[i].firstschool=p1;
p2->next=g2->b[x].firstitem;
g2->b[x].firstitem=p2;
g2->b[x].score=g2->b[x].score+p2->record;/*累计总分*/
if(i<=m)g2->b[x].boys=g2->b[x].boys+p2->record;/*累计男团体总分*/
elseg2->b[x].girls=g2->b[x].girls+p2->record;/*累计女团体总分*/
h--;
}while(x!
=0&&h!
=0);
}
}
}
}
voidfunct2(ALLNode*g2)/*输出各学校总分*/
{intk;
readfile();
printf("\n\n******输出各学校总分******\n");
printf("学校编号\t总分\n");
for(k=1;k<=g2->n;k++)
printf("%d\t\t\t%d\n",k,g2->b[k].score);
printf("\n");
printf("按任意键结束。
。
。
。
。
");
fflush(stdin);
getchar();
}
voidfunct3(ALLNode*g2)/*按学校编号排序输出*/
{
intk;
Items*p2;
readfile();
p2=(Items*)malloc(sizeof(Items));
printf("\n\n******按学校编号排序输出******\n");
printf("学校编号\t\t\t获奖情况\n");
getchar();
for(k=1;k<=g2->n;k++)
{
p2=g2->b[k].firstitem;
printf("\t\t\t%d\t\t\t",k);
while(p2!
=NULL)
{printf("项目%d:
得%d分",p2->item,p2->record);
p2=p2->next;
}
printf("\n");
}
printf("\n");
printf("按任意键结束。
。
。
。
。
");
fflush(stdin);
getchar();
}
voidfunct4(ALLNode*g2)/*按学校总分排序输出*/
{inti,j,k;
Items*p2;
readfile();
printf("\n\n******按学校总分排序输出******\n");
printf("输入要查询的项目编号:
");
scanf("%d",&k);
printf("学校编号\t\t总分\n");
for(i=2;i<=g2->n;i++)
{
p2=g2->b[k].firstitem;
printf("\n");
g2->b[0].score=g2->b[i].score;
g2->b[0].boys=g2->b[i].boys;
g2->b[0].girls=g2->b[i].girls;
g2->b[0].school=g2->b[i].school;
j=i-1;
while(g2->b[0].score
{g2->b[j+1].score=g2->b[j].score;
g2->b[j+1].boys=g2->b[j].boys;
g2->b[j+1].girls=g2->b[j].girls;
g2->b[j+1].school=g2->b[j].school;
j--;
}
g2->b[j+1].score=g2->b[0].score;
g2->b[j+1].boys=g2->b[0].boys;
g2->b[j+1].girls=g2->b[0].girls;
g2->b[j+1].school=g2->b[0].school;
}
for(k=1;k<=g2->n;k++)
printf("\t%d\t\t%d\n",g2->b[k].school,g2->b[k].score);
printf("按任意键结束。
。
。
。
。
");
fflush(stdin);
getchar();
}
voidfunct5(ALLNode*g2)/*按男团体总分排序输出*/
{inti,j,k;
Items*p2;
readfile();
p2=(Items*)malloc(sizeof(Items));
printf("\n\n******按男团体总分排序输出******\n");
printf("输入要查询的学校编号:
");
scanf("%d",&k);
printf("学校编号\t\t男团体总分\n");
for(i=2;i<=g2->n;i++)
{
p2=g2->b[k].firstitem;
printf("\n");
g2->b[0].score=g2->b[i].score;
g2->b[0].boys=g2->b[i].boys;
g2->b[0].girls=g2->b[i].girls;
g2->b[0].school=g2->b[i].school;
j=i-1;
while(g2->b[0].boys
{g2->b[j+1].score=g2->b[j].score;
g2->b[j+1].boys=g2->b[j].boys;
g2->b[j+1].girls=g2->b[j].girls;
g2->b[j+1].school=g2->b[j].school;
j--;
}
g2->b[j+1].score=g2->b[0].score;
g2->b[j+1].boys=g2->b[0].boys;
g2->b[j+1].girls=g2->b[0].girls;
g2->b[j+1].school=g2->b[0].school;
}
for(k=1;k<=g2->n;k++)
printf("\t%d\t\t%d\n",g2->b[k].school,g2->b[k].boys);
printf("按任意键结束。
。
。
。
。
");
fflush(stdin);//暂停等待
getchar();
}
voidfunct6(ALLNode*g2)/*按女团体总分排序输出*/
{inti,j,k;
Items*p2;
readfile();
p2=(Items*)malloc(sizeof(Items));
printf("\n\n******按女团体总分排序输出******\n");
printf("输入要查询的项目编号:
");
scanf("%d",&k);
printf("学校编号\t\t女团体总分\n");
for(i=2;i<=g2->n;i++)
{
p2=g2->b[k].firstitem;
printf("\n");
g2->b[0].score=g2->b[i].score;
g2->b[0].boys=g2->b[i].boys;
g2->b[0].girls=g2->b[i].girls;
g2->b[0].school=g2->b[i].school;
j=i-1;
while(g2->b[0].girls
{g2->b[j+1].score=g2->b[j].score;
g2->b[j+1].boys=g2->b[j].boys;
g2->b[j+1].girls=g2->b[j].girls;
g2->b[j+1].school=g2->b[j].school;
j--;
}
g2->b[j+1].score=g2->b[0].score;
g2->b[j+1].boys=g2->b[0].boys;
g2->b[j+1].girls=g2->b[0].girls;
g2->b[j+1].school=g2->b[0].school;
}
for(k=1;k<=g2->n;k++)
printf("\t%d\t\t%d\n",g2->b[k].school,g2->b[k].girls);
printf("按任意键结束。
。
。
。
。
");
fflush(stdin);
getchar();
}
voidfunct7(ALLNode*g2)/*按学校编号查询学校某个项目情况*/
{inti,j;
Items*p2;
readfile();
printf("\n******按学校编号查询学校某个项目情况******\n");
printf("输入要查询的学校编号:
");
scanf("%d",&i);
printf("输入要查询的项目编号:
");
scanf("%d",&j);
p2=g2->b[i].firstitem;
while(p2!
=NULL)
{if(p2->item==j)
printf("学校编号:
%d\t项目%d:
得%d分\n",i,p2->item,p2->record);
p2=p2->next;
}
printf("\n");
printf("按任意键结束。
。
。
。
。
");
fflush(stdin);
getchar();
}
voidfunct8(ALLitems*g1)/*按项目编号查询取得名次的学校*/
{inti;
Schools*p1;
readfile();
printf("\n***按项目编号查询取得名次的学校***\n");
printf("输入要查询的项目编号:
");
scanf("%d",&i);
printf("项目编号\t\t\t取得名次的学校\n");
printf("%d\t",i);
p1=g1->a[i].firstschool;
while(p1!
=NULL)
{printf("学校%d:
得%d分",p1->school,p1->record);
p1=p1->next;
}
printf("\n\n");
printf("按任意键结束。
。
。
。
。
");
fflush(stdin);
getchar();
}
voidmain()
{intt;
g2=(ALLNode*)malloc(sizeof(ALLNode));
g1=(ALLitems*)malloc(sizeof(ALLitems));
system("color74");
for(;;)
{
printf("\t\t&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n");
printf("\t\t运动会分数统计系统\n");
printf("\t\t&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n");
printf("\t\t*1.输入各个项目成绩并存储文件*\t\n");
printf("\t\t*2.统计各学校总分*\t\n");
printf("\t\t*3.按学校编号输出*\t\n");
printf("\t\t*4.按学校总分输出*\n");
printf("\t\t*5.按男团体总分输出*\t\n");
printf("\t\t*6.按女团体总分输出*\t\n");
printf("\t\t*7.按学校编号查询学校某个项目情况*\t\n");
printf("\t\t*8.按项目编号查询取得名次的学校*\n");
printf("\t\t*0.退出*\n");
printf("\t\t&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n");
printf("\n\n\n\n\n");
printf("\t\t请选择(0-8):
");
scanf("%d",&t);
system("cls");
switch(t)
{case1:
funct1(g1,g2);save();break;
case2:
funct2(g2);break;
case3:
funct3(g2);break;
case4:
funct4(g2);break;
case5:
funct5(g2);break;
case6:
funct6(g2);break;
case7:
funct7(g2);break;
case8:
funct8(g1);break;
case0:
exit(0);
default:
printf("输入有误,请重新选择:
");
}//clrscr();
system("cls");
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序