📄 match.c
字号:
{
int i, j;
int temp;
int sort[MAX_NUM];
int maxSchool;
//统计学校数量
for (maxSchool=0; (*School)[maxSchool].id; maxSchool++);//for
//将学校id存入辅助数组
for (i=0; i<maxSchool; i++)
{
sort[i] = i;
}//for
//冒泡法排序
for (i=1; i<=maxSchool; i++)//冒泡法排序
{
for (j=0; j<maxSchool-i; j++)
{
if ((*School)[sort[j]].score < (*School)[sort[j+1]].score)
{
temp = sort[j];
sort[j] = sort[j+1];
sort[j+1] = temp;
}
}//for
}//for
//输出排名信息
printf("按团体总分顺序排名\n\n");
printf("│ 名次 │学校编号/名称 │ 团体总分 │ 男子总分 │ 女子总分 │\n");
for (i=0; i<maxSchool; i++)
{
printf("│ %2d ",i+1);
printf("│ %3d %s ",sort[i]+1,(*School)[sort[i]].name);
printf("│ %3d ",(*School)[sort[i]].score);
printf("│ %3d ",(*School)[sort[i]].mscore);
printf("│ %3d │\n",(*School)[sort[i]].wscore);
}//for
printf("\n\n");
system("pause");
system("cls");
return OK;
}//按学校总分顺序排名
//按男子总分顺序排名
Status PrintAsMScore(school *School)
{
int i, j;
int temp;
int sort[MAX_NUM];
int maxSchool;
//统计学校数量
for (maxSchool=0; (*School)[maxSchool].id; maxSchool++);//for
for (i=0; i<maxSchool; i++)
{
sort[i] = i;
}//for
//冒泡法排序
for (i=1; i<=maxSchool; i++)
{
for (j=0; j<maxSchool-i; j++)
{
if ((*School)[sort[j]].mscore < (*School)[sort[j+1]].mscore)
{
temp = sort[j];
sort[j] = sort[j+1];
sort[j+1] = temp;
}//if
}//for
}//for
//输出排名信息
printf("按男子总分顺序排名\n\n");
printf("│ 名次 │ 学校编号/名称 │ 团体总分 │ 男子总分 │ 女子总分 │\n");
for (i=0; i<maxSchool; i++)
{
printf("│ %2d ",i+1);
printf("│ %3d %s ",sort[i]+1,(*School)[sort[i]].name);
printf("│ %3d ",(*School)[sort[i]].score);
printf("│ %3d ",(*School)[sort[i]].mscore);
printf("│ %3d │\n",(*School)[sort[i]].wscore);
}//for
printf("\n\n");
system("pause");
system("cls");
return OK;
}//按男子总分顺序排名
//按女子总分顺序排名
Status PrintAsWScore(school *School)
{
int i, j;
int temp;
int sort[MAX_NUM];
int maxSchool;
//统计学校数量
for (maxSchool=0; (*School)[maxSchool].id; maxSchool++);//for
for (i=0; i<maxSchool; i++)
{
sort[i] = i;
}//for
//冒泡法排序
for (i=1; i<=maxSchool; i++)
{
for (j=0; j<maxSchool-i; j++)
{
if ((*School)[sort[j]].wscore < (*School)[sort[j+1]].wscore)
{
temp = sort[j];
sort[j] = sort[j+1];
sort[j+1] = temp;
}//if
}//for
}//for
//输出排名信息
printf("按女子总分顺序排名\n\n");
printf("│ 名次 │ 学校编号/名称 │ 团体总分 │ 男子总分 │ 女子总分 │\n");
for (i=0; i<maxSchool; i++)
{
printf("│ %2d ",i+1);
printf("│ %3d %s ",sort[i]+1,(*School)[sort[i]].name);
printf("│ %3d ",(*School)[sort[i]].score);
printf("│ %3d ",(*School)[sort[i]].mscore);
printf("│ %3d │\n",(*School)[sort[i]].wscore);
}//for
printf("\n\n");
system("pause");
system("cls");
return OK;
}//按女子总分顺序排名
//按学校id和项目id查找该学校在该项目的成绩
Status SearchAsSchool(item *Item, school *School)
{
int i;
int schoolid, itemid;
int maxItem, maxSchool;
//统计学校和项目数量
for (maxItem=0; (*Item)[maxItem].id; maxItem++);//for
for (maxSchool=0; (*School)[maxSchool].id; maxSchool++);//for
//输入要查找的学校和项目编号
printf("请输入要查找的学校编号:");
scanf("%d",&schoolid);
while (schoolid<1 || schoolid>maxSchool)
{
printf("您输入学校编号超出范围,请重新输入:");
scanf("%d",&schoolid);
}//while
printf("请输入要查找的项目编号:");
scanf("%d",&itemid);
while (itemid<1 || itemid>maxItem)
{
printf("您输入项目编号超出范围,请重新输入:");
scanf("%d",&itemid);
}//while
for (i=0; i<(*Item)[itemid-1].type; i++)
{
if ((*Item)[itemid-1].schoolid[i] == schoolid)
{
printf("\n\n%s在",(*School)[schoolid-1].name);
printf("%s项目中取得第%d名。\n\n\n",(*Item)[itemid-1].name,i+1);
system("pause");
system("cls");
return OK;
} //if
}//for
printf("\n\n%s在",(*School)[schoolid-1].name);
printf("%s项目中没有取得名次。\n\n\n",(*Item)[itemid-1].name);
system("pause");
system("cls");
return FALSE;
}//按学校id和项目id查找该学校在该项目的成绩
//按照项目id查找该项目的情况
Status SearchAsItem(item *Item, school *School)
{
int i;
int itemid;
int maxItem;
//统计项目数量
for (maxItem=0; (*Item)[maxItem].id; maxItem++);//for
//输入要查找的项目编号
printf("请输入要查找的项目编号:");
scanf("%d",&itemid);
while (itemid<1 || itemid>maxItem)
{
printf("您输入项目编号超出范围,请重新输入:");
scanf("%d",&itemid);
}//while
//输出该项目的情况
printf("\n\n%s项目 第%d名",(*Item)[itemid-1].name,1);
printf(" %s\n",(*School)[(*Item)[itemid-1].schoolid[0]-1].name);
for (i=1; i<(*Item)[itemid-1].type; i++)
{
printf(" 第%d名 ",i+1);
printf("%s\n",(*School)[(*Item)[itemid-1].schoolid[i]-1].name);
}//for
printf("\n\n");
system("pause");
system("cls");
return OK;
}//按照项目id查找该项目的情况
//显示菜单
Status PrintMenu()
{
printf("\n\n ********************************************\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(" * 8.按项目编号查找该项目成绩。 *\n");
printf(" * 9.将数据写入到文件中。 *\n");
printf(" * 0.退出程序 *\n");
printf(" * *\n");
printf(" ********************************************\n");
printf(" 请选择一项操作:");
return OK;
}//显示菜单
//选择操作
Status Chose(item *Item, school *School, int i)
{
switch(i)
{
case 1: if (ReadDat(Item, School))
{
printf("文件读取成功!\n\n");
}
else
{
printf("文件读取失败!\n\n");
}
SumScore(Item, School);
return OK; //选择1从文件中读取数据
case 2: InPutData(Item, School);
SumScore(Item, School);
return OK; //选择2重新输入数据
case 3: PrintAsSchoolid(School);
return OK; //选择3按学校编号输出
case 4: PrintAsScore(School);
return OK; //选择4按学校总分输出
case 5: PrintAsMScore(School);
return OK; //选择5按男子总分输出
case 6: PrintAsWScore(School);
return OK; //选择6按女子总分输出
case 7: SearchAsSchool(Item, School);
return OK; //选择7按学校编号查找该学校某项目成绩
case 8: SearchAsItem(Item, School);
return OK; //选择8按项目编号查找该项目成绩
case 9: if (WriteDat(Item, School))
{
printf("文件写入成功!\n\n");
}
else
{
printf("文件写入失败!\n\n");
}
return OK; //选择9将数据写入到文件中
case 0: return FALSE; //选择0退出程序
}
return OK;
}//选择操作
main()
{
item *item;
school *school;
int i;
Init(&item, &school);
while(1)
{
PrintMenu();
scanf("%d",&i);
while (i<0 || i>9)
{
printf("您输入选项超出范围,请重新输入:");
scanf("%d",&i);
}//while
system("cls");
if (!Chose(item, school, i)) break;
}//while
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -