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

📄 common.c

📁 一个c语言实现的球员管理系统
💻 C
字号:
#include"common.h"
pInfoHead loadFromFile()
{
	FILE *pFile;
	pInfoHead phead;
	int role;
	pMEMBER pnewMember,ptailMember;
	phead=(pInfoHead)malloc(sizeof(info));
	if(NULL==phead)
	{
		fprintf(stderr,"警告:内存申请不成功!\a\a\a\n");
		getch();
		exit(1);
	}
	ptailMember=phead->next=NULL;
	pFile=fopen(FILENAME,"rb");
	if(NULL==pFile)
	{
		pFile=fopen(FILENAME,"wb");
		for(role=0;role<5;role++)
			phead->total[role]=0;              //初始化 教练数量 前锋数量 中锋数量 后卫数量 守门员数量
		phead->totalMember=0;                  //初始化 总人数
		phead->totalAge=0;                     //总年龄(不包括教练) 初始化
		phead->totalSalary=0;                  //总年薪(包括教练在内) 初始化
		phead->sortStyle='0';                  //初始化 排序方式为 按编号升序
		fwrite(phead,sizeof(info),1,pFile);    //将初始信息写入文件保存
		fclose(pFile);
		return phead;
	}
	fread(phead,sizeof(info),1,pFile);       //从文件中读取头部信息
	while(!feof(pFile))
	{
		pnewMember=(pMEMBER)malloc(_SIZE_);
		if(NULL==pnewMember)
		{
			fprintf(stderr,"警告:内存申请不成功!\a\a\a\n");
			fclose(pFile);
			getch();
			exit(1);
		}
		if(fread(pnewMember,_SIZE_,1,pFile)==0)
		{
			free(pnewMember);
			break;
		}
		pnewMember->next=NULL;
		if(NULL==ptailMember)
		{
			ptailMember=pnewMember;
			phead->next=ptailMember;
		}
		else
		{
			ptailMember->next=pnewMember;
			ptailMember=ptailMember->next;
		}
	}
	fclose(pFile);
	return phead;
}

void writeToFile(pInfoHead phead)
{
	FILE *pFile;
	pMEMBER ptempMember;
	pFile=fopen(FILENAME,"wb");
	fwrite(phead,sizeof(info),1,pFile);
	ptempMember=phead->next;
	while(ptempMember!=NULL)
	{
		fwrite(ptempMember,_SIZE_,1,pFile);
		ptempMember=ptempMember->next;
	}
	fclose(pFile);
}

bool insertMember(pInfoHead phead,pMEMBER inMember)
{
	pMEMBER pfrontMember,prearMember;
	prearMember=phead->next;
	pfrontMember=prearMember;
	switch(phead->sortStyle)
	{
	case '0'://编号升序
		while(prearMember!=NULL && strcmpi(inMember->number,prearMember->number)>0)
		{
			if(pfrontMember!=prearMember)
				pfrontMember=pfrontMember->next;
			prearMember=prearMember->next;			
		}
		break;			
	case '1'://编号降序
		while(prearMember!=NULL && strcmpi(inMember->number,prearMember->number)<0)
		{
			if(pfrontMember!=prearMember)
				pfrontMember=pfrontMember->next;
			prearMember=prearMember->next;			
		}
		break;	
	case '2'://姓名升序
		while(prearMember!=NULL && strcmpi(inMember->name,prearMember->name)>0)
		{
			if(pfrontMember!=prearMember)
				pfrontMember=pfrontMember->next;
			prearMember=prearMember->next;
		}
		break;
	case '3'://姓名降序
		while(prearMember!=NULL && strcmpi(inMember->name,prearMember->name)<0)
		{
			if(pfrontMember!=prearMember)
				pfrontMember=pfrontMember->next;
			prearMember=prearMember->next;			
		}
		break;
	case '4'://薪水升序
		while(prearMember!=NULL && (inMember->salary>prearMember->salary))
		{
			if(pfrontMember!=prearMember)
				pfrontMember=pfrontMember->next;
			prearMember=prearMember->next;
		}
		break;
	case '5'://薪水降序
		while(prearMember!=NULL && (inMember->salary<prearMember->salary))
		{
			if(pfrontMember!=prearMember)
				pfrontMember=pfrontMember->next;
			prearMember=prearMember->next;
		}
		break;

	}
	inMember->next=prearMember;
	if(phead->next==prearMember)
		phead->next=inMember;
	else
		pfrontMember->next=inMember;
	return true;
}




void freeList(pInfoHead phead)
{
	pMEMBER ptempMember,pfront;
	pfront=phead->next;	
	free(phead);
	while(NULL!=pfront)
	{
		ptempMember=pfront;
		pfront=pfront->next;
		free(ptempMember);
	}
}

⌨️ 快捷键说明

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