⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainfile.c

📁 校际运动会管理程序,实现功能运动会管理的大部分功能。
💻 C
📖 第 1 页 / 共 2 页
字号:
/*include some head files*/
#include	"mainfile.h"
#include	"dos.h"
#include	"conio.h"
#include	"memory.h"

/*global variant define*/
int				N,							/*参赛学校数*/
				M,							/*男子项目数*/
				W;							/*女子项目数*/
static School   g_school;					/*参赛学校*/ 
static Sport	g_sport;					/*竞赛项目*/			
pPosition		ptrHead,ptrThis,ptrNew;		/*名次链表指针*/

/************************************************************************/
/* 主程序入口                                                           */
/************************************************************************/
void main()
{
	char ch;
	Bool err=_FALSE;
	
	memset(&g_school,0,sizeof(School));
	memset(&g_sport,0,sizeof(Sport));

	printf("\n===========================================================");
	printf("\n***********************************************************");
	printf("\n*                                                         *");
	printf("\n*             欢迎进入校际运动会信息管理系统              *");
	printf("\n*                                                         *");
	printf("\n***********************************************************");
	printf("\n===========================================================");
	printf("\n\n\n\n按“Q”键退出运行,\n其它任意键继续...");
	ch=toupper(getch());
	if (ch=='Q') {
		exit(0);
	}
	
	/*设置参赛学校信息*/
	if (SetSchoolInfo(&N)) {
		GetSchoolInfo();
	}
	else
	{
		printf("发生错误,程序将退出");			
		return;
	}

	printf("\n\n按任意健继续...");
	getch();
	system("cls");

	/*设置竞赛项目信息*/
	err=SetSportInfo();	
	
	/*打印竞赛项目信息*/
	GetSportInfo();

	/*填写竞赛结果信息*/
	SetPositionForAllSports();
	system("cls");
	
	/*主菜单*/
	while (1) {
		printf("\n**************************************************");
		printf("\n*                                                *");
		printf("\n*                 键入'q'退出程序                *");
		printf("\n*                 键入's'查询学校成绩            *");
		printf("\n*                 键入'r'生成报表                *");
		printf("\n*                 键入'i'查看参赛学校            *");
		printf("\n*                 键入'p'查看竞赛项目            *");
		printf("\n*                 键入'c'刷新屏幕                *");
		printf("\n*                                                *");
		printf("\n**************************************************");
		printf("\n请输入您的选择:");
		ch=toupper(getch());
		printf("\n");
		system("cls");	
		switch(ch)
		{
		case 'Q':			
			exit(0);
			break;
		case 'R':							/*生成报表*/
			GetReport();
			break;
		case 'S':							/*打印成绩*/
			GetScoreBySchool();
			break;
		case 'I':
			GetSchoolInfo();
			break;
		case 'P':
			GetSportInfo();
			break;
		case 'C':
			system("cls");
			break;
		default:
			printf("\n请键入一个正确的选择");			
		}			
	}
	return;
}

/************************************************************************/
/* 设置竞赛项目总数                                                     */
/************************************************************************/
Bool SetFMSportTotalNum(int* pnTotalNmOfFMSprt,int type/*0:男子;1:女子*/)
{
	if (pnTotalNmOfFMSprt==NULL) {
		return _FALSE;
	}
	system("cls");	
	printf("\n------- ------- -------- ----");
	if (type==0) {/*男子*/
		printf("\n请输入男子竞赛项目总数:");
		scanf("%d",pnTotalNmOfFMSprt);
		if (*pnTotalNmOfFMSprt<=0||*pnTotalNmOfFMSprt>MAX_M) {
			printf("\n学校总数必须大于0小于%d",MAX_M);
			return _FALSE;
		}
		else
			return _TRUE;
	}
	else{/*女子*/
		printf("\n请输入女子竞赛项目总数:");
		scanf("%d",pnTotalNmOfFMSprt);
		if (*pnTotalNmOfFMSprt<=0||*pnTotalNmOfFMSprt>MAX_W) {
			printf("\n学校总数必须大于0小于%d",MAX_W);
			return _FALSE;
		}
		else
			return _TRUE;
	}	
}

/************************************************************************/
/* 设置某项目名次的取法及每一名次的分值                                 */
/************************************************************************/
Bool SetScoreType(int n/*项目编号-1*/)
{
	char ch;
	Bool ret=_FALSE;
	Bool err=_FALSE;
	int totalPrv,i,power;
	do {
		system("cls");
		printf("\n请选择编号为%d的竞赛项目取名次类型\n(0:  取前5名; 1:  取前3名; 2:  用户自定义):",n+1);
		ch=toupper(getch());
		printf("\n");
		switch(ch) {
		case '0':/*取前5名*/
			g_sport.sportInfoArray[n].scrTyp=_FIVE;
			g_sport.sportInfoArray[n].scrInfo.total=5;
			if ((g_sport.sportInfoArray[n].scrInfo.power=(int*)malloc(sizeof(int)*5))==NULL) {
				printf("\n memory err");
				return _FALSE;
			}
			g_sport.sportInfoArray[n].scrInfo.power[0]=7;
			g_sport.sportInfoArray[n].scrInfo.power[1]=5;
			g_sport.sportInfoArray[n].scrInfo.power[2]=3;
			g_sport.sportInfoArray[n].scrInfo.power[3]=2;
			g_sport.sportInfoArray[n].scrInfo.power[4]=1;
			
			ret=_TRUE;
			break;
		case '1':/*取前3名*/
			g_sport.sportInfoArray[n].scrTyp=_THREE;
			g_sport.sportInfoArray[n].scrInfo.total=3;
			if ((g_sport.sportInfoArray[n].scrInfo.power=(int*)malloc(sizeof(int)*3))==NULL) {
				printf("\n memory err");
				return _FALSE;
			}
			g_sport.sportInfoArray[n].scrInfo.power[0]=5;
			g_sport.sportInfoArray[n].scrInfo.power[1]=3;
			g_sport.sportInfoArray[n].scrInfo.power[2]=2;
			
			ret=_TRUE;
			break;
		case '2':/*用户自定义类型*/
			g_sport.sportInfoArray[n].scrTyp=_CUSTOM;
			do {
				printf("\n请输入本项目取前多少名:");
				scanf("%d",&totalPrv);
				if (totalPrv<=0) {
					printf("\n输入有误。只能大于0");					
				}
				else
					err=_TRUE;
			} while(err==_FALSE);
			
			g_sport.sportInfoArray[n].scrInfo.total=totalPrv;
			if ((g_sport.sportInfoArray[n].scrInfo.power=(int*)malloc(sizeof(int)*totalPrv))==NULL) {
				printf("\n memory err");
				return _FALSE;
			}
			for(i=0;i<totalPrv;i++){
				err=_FALSE;
				do {
					printf("\n请输入该项目第%d名的分值:",i+1);
					scanf("%d",&power);
					if (power<=0) {
						printf("\n输入有误。只能大于0");
					}
					else
						err=_TRUE;

				} while(err==_FALSE);
				g_sport.sportInfoArray[n].scrInfo.power[i]=power;
			}
			ret=_TRUE;
			break;
		default:/*错误的输入*/
			printf("\n错误的选择!");
			ret=_FALSE;
		}		
	} while(ret==_FALSE);
	
	return ret;	
}
/************************************************************************/
/* 设置竞赛项目信息                                                     */
/************************************************************************/
Bool SetSportInfo()
{
	int i=0;
	Bool err=_FALSE;

	do {
		err=SetFMSportTotalNum(&M,0);
	} while(err==_FALSE);
	g_sport.nTotalNmOfMSprt=M;			/*男子项目总数*/
	
	
	do {
		err=SetFMSportTotalNum(&W,1);
	} while(err==_FALSE);
	g_sport.nTotalNmOfFSprt=W;			 /*女子项目总数*/
	
	for(i=0;i<g_sport.nTotalNmOfFSprt+g_sport.nTotalNmOfMSprt;i++)
	{
		g_sport.sportInfoArray[i].sportNum=i+1;/*项目编号*/

		/*项目类型:男子或女子项目*/
		if (i+1<=M) {
			g_sport.sportInfoArray[i].sprtTyp=_MAN;
		}
		else{
			g_sport.sportInfoArray[i].sprtTyp=_WOMAN;
		}

		system("cls");
		/*项目名称*/
		printf("\n请输入编号为%d的竞赛项目名称:",i+1);
		scanf("%s",g_sport.sportInfoArray[i].sportName);
		g_sport.sportInfoArray[i].sportName[MAXLENGTH-1]='\0'; 

		SetScoreType(i);		
	}
	return _TRUE;
}
/************************************************************************/
/* 设置学校总数                                                         */
/************************************************************************/
Bool SetSchoolTotalNum(int* pnTotalNmOfSch)
{
	Bool ret=_FALSE;
	if (pnTotalNmOfSch==NULL) {
		return _FALSE;
	}	
	while (ret==_FALSE) {
		system("cls");
		printf("\n--------- ----------- ------------- -------");
		printf("\n请输入参加运动会的学校总数:");
		scanf("%d",pnTotalNmOfSch);
		if (*pnTotalNmOfSch<=0||*pnTotalNmOfSch>MAX_N) {
			printf("\n学校总数必须大于0小于%d\n",MAX_N);
			printf("\n\n按任意健继续");
			getch();
			ret=_FALSE;
		}
		else
			ret=_TRUE;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -