📄 mainfile.c
字号:
/*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 + -