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

📄 main.c

📁 题目:参加运动会的N个学校编号为1~N.比赛分成M个男子项目和W个女子项目,项目编号分别为1~M和M+1~M+W.由于个项目参加人数差别较大,有些项目取前5名,得分顺序为7,5,3,2,1 还有些项目
💻 C
字号:
/*****************************************************************

编辑环境:vc6.0
*****************************************************************/

/*****main.c*****/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "sqlist.h"
#include "structs.h"


#define ASCII_NUM_X 48


int flag=0;



void PrintMenu();
void Init();

void AddSchool();
void AddSubject();
void AddStudent();
void ListSchool();
void ListSubject();
void GetSchoolScore();
void GetAllScore();
void Exit();

void (*funarray[])()={
	AddSchool,
		AddSubject,
		AddStudent,
		ListSchool,
		ListSubject,
		GetSchoolScore,
		GetAllScore,
		Exit
};

MakeSqlist(SUBJECT,subjectlist);
MakeSqlist(SCHOOL,schoollist);
MakeSqlist(STUDENT,studentlist);

int main()
{
	int key;
	Init();	
	

	while(flag==0)
	{
		PrintMenu();
		key=getchar();
		getchar();  /*receive enter*/
		funarray[key-ASCII_NUM_X-1]();
		printf("按回车键继续\n");
		getchar();  /*receive enter*/
	}

	return 1;
}

void PrintMenu()
{
	char *menu="运动会分数统计程序\n"
		"1---添加学校\n"
		"2---添加项目\n"
		"3---对指定项目添加学生\n"
		"4---学校列表\n"
		"5---项目列表\n"
		"6---查看指定学校的成绩\n"
		"7---查看团体总分报表\n"
		"8---退出\n";
	printf(menu);
	
}

void Init()
{
	SqlistInit(SCHOOL,schoollist);
	SqlistInit(SUBJECT,subjectlist);
	SqlistInit(STUDENT,studentlist);
}

void AddSchool()
{
	SCHOOL s;
	printf("请输入学校号码\n");
	scanf("%d",&s.num);
	printf("请输入学校名称\n");
	scanf("%s",s.name);
	getchar();  /*receive enter*/
	SqlistInsertback(SCHOOL,schoollist,s,school_copy);

}

void AddSubject()
{
	SUBJECT s;
	printf("请输入项目号码\n");
	scanf("%d",&s.num);
	printf("请输入项目名称\n");
	scanf("%s",s.name);
	getchar();  /*receive enter*/
	printf("请输入你要添加项目的性别类型,0为男,1为女\n");
	scanf("%d",&s.sex);
	printf("请输入项目的计分方法,0为前3名有分,1为前5名有分\n");
	scanf("%d",&s.scoring_kind);
	SqlistInsertback(SUBJECT,subjectlist,s,subject_copy);
}

void AddStudent()
{
	int n,i,subjectnum;
	
	
	printf("请输入你要添加学生所属的项目号\n");
	scanf("%d",&subjectnum);

	for(i=0;i<subjectlist.length;i++)
	{
		if(subjectlist.elem[i].num==subjectnum)
		{
			n=subjectlist.elem[i].scoring_kind==1?5:3;
			break;
		}
	}

	printf("项目的计分方法为%d\n",subjectlist.elem[i].scoring_kind);
	printf("你总共要输入%d个学生的资料\n",n);

	for(i=0;i<n;i++)
	{
		STUDENT s;

		s.subject_num=subjectnum;
		
		printf("请输入第%d个学生的姓名\n",i+1);
		scanf("%s",&s.name);
		getchar();  /*receive enter*/
		
		printf("请输入第%d个学生所属的学校号\n",i+1);
		scanf("%d",&s.school_num);
		
		printf("请输入第%d个学生的排名\n",i+1);
		scanf("%d",&s.place);

		SqlistInsertback(STUDENT,studentlist,s,student_copy);
	}
}

void ListSchool()
{
	int i;
	for(i=0;i<schoollist.length;i++)
	{
		printf("%d \t 学校号码:%d \t 学校名称:%s\n",
			i,schoollist.elem[i].num,schoollist.elem[i].name);
	}
}

void ListSubject()
{
	int i;
	for(i=0;i<subjectlist.length;i++)
	{
		printf("%d \t 项目号码:%d \t 项目名称:%s \t 项目计分方法:%d\n",
			i,subjectlist.elem[i].num,subjectlist.elem[i].name,subjectlist.elem[i].scoring_kind);
	}
}

void GetSchoolScore()
{
	int i;
	int schoolnum;
	
	printf("请输入你要查看的学校号");
	scanf("%d",&schoolnum);

	for(i=0;i<studentlist.length;i++)
	{
		if(studentlist.elem[i].school_num==schoolnum)
		{
			int score[]={5,3,2,7,5,3,2,1};
			/*get subject*/
			int j;
			for(j=0;i<subjectlist.length;j++)
			{
				if(subjectlist.elem[j].num==studentlist.elem[j].subject_num)
				{
					break;
				}
			}
			
			printf("取得成绩的项目号:%d \t 名次:%d \t 姓名:%s \t\t 得分:%d\n",
				studentlist.elem[i].subject_num,
				studentlist.elem[i].place,
				studentlist.elem[i].name,
				score[studentlist.elem[i].place-1+subjectlist.elem[j].scoring_kind*3]);				
		}
	}
}

void GetAllScore()
{
	int i,j;
	for(i=0;i<schoollist.length;i++)
	{
		int malescore=0,femalescore=0;
		for(j=0;j<studentlist.length;j++)
		{
			if(studentlist.elem[j].school_num==schoollist.elem[i].num)
			{
				int score[]={5,3,2,7,5,3,2,1};
				/*get subject*/
				int k;
				for(k=0;k<subjectlist.length;k++)
				{
					if(subjectlist.elem[k].num==studentlist.elem[j].subject_num)
					{
						break;
					}
				}
				if(subjectlist.elem[k].sex==0)
				{
					malescore+=
						score[studentlist.elem[j].place-1+subjectlist.elem[k].scoring_kind*3];
				}
				else
				{
					femalescore+=
						score[studentlist.elem[j].place-1+subjectlist.elem[k].scoring_kind*3];
				}

			}
		}
		printf("学校号:%d \t 男子团体总分:%d \t 女子团体总分:%d \t 团体总分:%d\n",
			schoollist.elem[i].num,malescore,femalescore,malescore+femalescore);
	}
}

void Exit()
{
	/*clear allocated memory*/
	free(subjectlist.elem);
	free(schoollist.elem);
	free(studentlist.elem);
	
	flag=1;
}

⌨️ 快捷键说明

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