📄 common.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 + -