📄 mainfile.c
字号:
}
return _TRUE;
}
/************************************************************************/
/* 填充参赛学校信息 */
/************************************************************************/
Bool SetSchoolInfo(int* pnTotalNmOfSch)
{
int i=0;
if (!SetSchoolTotalNum(pnTotalNmOfSch)) {
printf("\nerr!");
return _FALSE;
}
else{
g_school.nTotalNmOfSch=*pnTotalNmOfSch;
for(i=0;i<g_school.nTotalNmOfSch;i++)
{
g_school.schInfoArray[i].SchoolNum=i+1;
printf("\n请输入编号为%d的学校名称:",i+1);
scanf("%s",g_school.schInfoArray[i].schoolName);
g_school.schInfoArray[i].schoolName[MAXLENGTH-1]='\0';/*截断多余字符*/
}
}
return _TRUE;
}
/************************************************************************/
/* 打印参赛学校信息 */
/************************************************************************/
Bool GetSchoolInfo()
{
int i=0;
printf("\n共有%d个学校参赛",g_school.nTotalNmOfSch);
for(i=0;i<g_school.nTotalNmOfSch;i++)
{
printf("\n学校编号:%d",g_school.schInfoArray[i].SchoolNum);
printf(" 校名:%s",g_school.schInfoArray[i].schoolName);
}
return _TRUE;
}
/************************************************************************/
/*为某个竞赛项目设定比赛结果信息 */
/************************************************************************/
void SetPositionForOneSport(int sportNum/*项目编号-1*/)
{
int i=0,j=0;
Bool err=_FALSE;
printf("\n--------- ------------ --------- ------");
printf("\n填写项目%d的比赛结果",sportNum+1);
for(i=0;i<g_sport.sportInfoArray[sportNum].scrInfo.total;i++)
{
ptrNew=(pPosition)malloc(LEN);
if (ptrHead==(pPosition)NULL)
{
ptrHead=ptrThis=ptrNew;
}
else
{
ptrThis=ptrHead;
while (ptrThis->ptrNext!=(pPosition)NULL)
{
ptrThis=ptrThis->ptrNext;
}
ptrThis->ptrNext=ptrNew;
ptrThis=ptrNew;
}
/*项目编号*/
ptrThis->sportNum=sportNum+1;
printf("\n输入获得第%d名的学生信息",i+1);
/*姓名*/
printf("\n姓名:");
scanf("%s",ptrThis->name);
/*学校编号*///检查编号合法性
do {
printf("\n学校编号:");
scanf("%d",&ptrThis->schoolNum);
if (ptrThis->schoolNum<=0||ptrThis->schoolNum>g_school.nTotalNmOfSch) {
printf("\n学校编号必须大于0小于等于%d",g_school.nTotalNmOfSch);
err=_FALSE;
}
else
{
err=_TRUE;
}
} while(err==_FALSE);
/*名次*/
ptrThis->score=i+1;
ptrThis->ptrNext=(pPosition)NULL;
}
}
/************************************************************************/
/* 填充所有竞赛项目结果信息 */
/************************************************************************/
void SetPositionForAllSports()
{
int i=0;
for(i=0;i<g_sport.nTotalNmOfFSprt+g_sport.nTotalNmOfMSprt;i++)
{
system("cls");
SetPositionForOneSport(i);
}
return;
}
/************************************************************************/
/* 根据竞赛项目编号获得对应项目名称 */
/************************************************************************/
char* GetSportName(int sportNum)
{
int i=0;
for(i=0;i<g_sport.nTotalNmOfFSprt+g_sport.nTotalNmOfMSprt;i++)
{
if (sportNum==g_sport.sportInfoArray[i].sportNum) {
break;
}
}
if (i==g_sport.nTotalNmOfFSprt+g_sport.nTotalNmOfMSprt) {
return NULL;
}
return g_sport.sportInfoArray[i].sportName;
}
/************************************************************************/
/*获取指定竞赛项目的某一名次所对应的分值 */
/************************************************************************/
int GetPower(int sportNum/*项目编号*/,int score/*名次*/)
{
int i=0;
for(i=0;i<g_sport.nTotalNmOfFSprt+g_sport.nTotalNmOfMSprt;i++)
{
if (sportNum==g_sport.sportInfoArray[i].sportNum) {
break;
}
}
if (i==g_sport.nTotalNmOfFSprt+g_sport.nTotalNmOfMSprt) {
return (int)-1;
}
return g_sport.sportInfoArray[i].scrInfo.power[score-1];
}
/************************************************************************/
/* 按学校打印成绩 */
/************************************************************************/
void GetScoreBySchool()
{
int schnum;/*学校编号*/
if (g_school.nTotalNmOfSch<=0)
{
printf("\n没有学校参加比赛");
return;
}
printf("\n请输入您想查询的学校编号:");
scanf("%d",&schnum);
if (schnum>g_school.nTotalNmOfSch||schnum<=0)
{
printf("\n学校编号必须大于0小于等于%d",g_school.nTotalNmOfSch);
return;
}
if(ptrHead==(pPosition)NULL)
{
printf("\n没有比赛结果");
return;
}
ptrThis=ptrHead;
printf("\n学校编号:%d 校名:%s",schnum,g_school.schInfoArray[schnum-1].schoolName);
printf("\n\n 项目号 项目名称 名次 姓名 得分");
printf("\n ---------- --------------- ---- ---------------- ----");
do {
if (ptrThis->schoolNum==schnum)
{
printf("\n%5d",ptrThis->sportNum);/*项目号*/
printf("%20s",GetSportName(ptrThis->sportNum));/*项目名称*/
printf("%5d",ptrThis->score);/*名次*/
printf("%20s",ptrThis->name);/*姓名*/
printf("%5d",GetPower(ptrThis->sportNum,ptrThis->score));
}
ptrThis=ptrThis->ptrNext;
} while(ptrThis!=(pPosition)NULL);
}
/************************************************************************/
/* 生成报表 */
/************************************************************************/
void GetReport()
{
int i,j,manTotal=0,womTotal=0,Total=0;/*男子团体总分,女子团体总分,团体总分*/
if(ptrHead==(pPosition)NULL)
{
printf("\n没有比赛结果");
return;
}
ptrThis=ptrHead;
printf("\n团体总分报表:");
printf("\n\n学校编号 学校校名 男子团体总分 女子团体总分 团体总分");
printf("\n--------- ---------------- ------------- ----------- -----------");
for(i=0;i<g_school.nTotalNmOfSch;i++)
{
manTotal=0;womTotal=0;Total=0;
ptrThis=ptrHead;
do {
if(ptrThis->schoolNum==g_school.schInfoArray[i].SchoolNum)/*同一学校*/
{
for(j=0;j<g_sport.nTotalNmOfFSprt+g_sport.nTotalNmOfMSprt;j++)
{
if (ptrThis->sportNum==g_sport.sportInfoArray[j].sportNum) {/*某一竞赛项目*/
if (g_sport.sportInfoArray[j].sprtTyp==_MAN) {
manTotal+=g_sport.sportInfoArray[j].scrInfo.power[ptrThis->score-1];
}
else{
womTotal+=g_sport.sportInfoArray[j].scrInfo.power[ptrThis->score-1];
}
}
}
}
ptrThis=ptrThis->ptrNext;
} while(ptrThis!=(pPosition)NULL);
Total+=manTotal+womTotal;
printf("\n%5d",g_school.schInfoArray[i].SchoolNum);
printf("%20s",g_school.schInfoArray[i].schoolName);
printf("%10d",manTotal);
printf("%15d",womTotal);
printf("%15d\n",Total);
}
}
/************************************************************************/
/* 打印竞赛项目信息 */
/************************************************************************/
void GetSportInfo()
{
int i,j;
system("cls");
printf("\n您输入的比赛项目信息如下:");
printf("\n----- -------- ------- -------");
for(i=0;i<g_sport.nTotalNmOfFSprt+g_sport.nTotalNmOfMSprt;i++)
{
printf("\n项目编号:%d 项目名称:%s",g_sport.sportInfoArray[i].sportNum,GetSportName(g_sport.sportInfoArray[i].sportNum));
for(j=0;j<g_sport.sportInfoArray[i].scrInfo.total;j++)
{
printf("\n 第%d名 得分:%d",j+1,g_sport.sportInfoArray[i].scrInfo.power[j]);
}
}
printf("\n按任意键继续");
getch();
}
/************************************************************************/
/* 打印名次链表信息 */
/************************************************************************/
void GetList()
{
int i=0,j;
int n=0;
if(ptrHead==(pPosition)NULL)
{
printf("\n没有比赛结果");
return;
}
ptrThis=ptrHead;
do {
printf("\n第%d个结点:",n++);
for(i=0;i<g_sport.nTotalNmOfFSprt+g_sport.nTotalNmOfMSprt;i++)
{
if (ptrThis->sportNum==g_sport.sportInfoArray[i].sportNum) {
break;
}
}
if (i==g_sport.nTotalNmOfFSprt+g_sport.nTotalNmOfMSprt) {
return;
}
printf("\n 项目编号:%d",ptrThis->sportNum);
for(j=0;j<g_sport.sportInfoArray[i].scrInfo.total;j++)
{
printf("\n名次:%d 分值%d",j+1,g_sport.sportInfoArray[i].scrInfo.power[j]);
}
ptrThis=ptrThis->ptrNext;
} while(ptrThis!=(pPosition)NULL);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -