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

📄 insert.c

📁 这是一个用C语言写的球队成员管理系统
💻 C
字号:
#include"common.h"
void insert(MEM*head,MEM*newNod,int style)/*style是用于排序的参数*/
{  	
	
	 switch(style)
{ 
	 case 0:             {	MEM *back,*front;
							front=head;
							back=head->next;
							if(head->next==null)
							head->next=newNod;
							else{
/*比较字符串长度*/			while((strcmp(newNod->number,back->number)>0)&&(back->next!=null))
							 {front=back;
							 back=back->next;}
								if(strcmp(newNod->number,back->number)>0)
							{ back->next=newNod;
							 newNod->next=null;}
								else{ front->next=newNod;
								newNod->next=back;}
								}
								
						}

                         break;
	 case 1:			{	MEM *back,*front;
							front=head;
							back=head->next;
							if(head->next==null)
							head->next=newNod;
							else{
							 while((strcmp(newNod->name,back->name)>0)&&(back->next!=null))
							 {front=back;
							 back=back->next;}
								if(strcmp(newNod->name,back->name)>0)
							{ back->next=newNod;
							 newNod->next=null;}
								else{ front->next=newNod;
								newNod->next=back;}
								}
							
						}

                         break;
	 
	 case 2:              {    MEM *back,*front;
								front=head;
								back=head->next;
								 if(head->next==null)
								 head->next=newNod;
								else{
								while((strcmp(newNod->number,back->number)>0)&&(back->next!=null))
								{front=back;
								 back=back->next;}
								if(strcmp(newNod->number,back->number)>0)
								{ back->next=newNod;
								newNod->next=null;}
								 else{ front->next=newNod;
								 newNod->next=back;}
									}
								 
							}

			           break;
     case 3:{					MEM *back,*front;
								front=head;
								back=head->next;
								 if(head->next==null)
								 head->next=newNod;
								else{
								while(newNod->salary>back->salary&&back->next!=null)
								{front=back;
								 back=back->next;}
								if(newNod->salary>back->salary)
								{ back->next=newNod;
								newNod->next=null;}
								 else{ front->next=newNod;
								 newNod->next=back;}
									}
								 
							}
		               break;

	  default : printf("无效数字!\n");break;

}
}

void list(MEM *head){/*显示所有成员信息*/
	int c;
	MEM *p;
	p=head->next;
	printf("\n%3s%9s%9s%9s%10s%10s%11s%16s\n","编号","姓名","位置","年龄","身高","体重","工资","加入日期");

		while(p!=null){
			  c=p->role;
			 switch(c)
			 { case 0:printf("%3s%10s%9s%9d%10.2f%10.0f%11.0f%10d-%d-%d\n",p->number,p->name,"门将",p->age,p->high,p->weight,p->salary,p->joindate.year,p->joindate.month,p->joindate.day);break;
			   case 1:printf("%3s%10s%9s%9d%10.2f%10.0f%11.0f%10d-%d-%d\n",p->number,p->name,"中场",p->age,p->high,p->weight,p->salary,p->joindate.year,p->joindate.month,p->joindate.day);break;
			   case 2:printf("%3s%10s%9s%9d%10.2f%10.0f%11.0f%10d-%d-%d\n",p->number,p->name,"后卫",p->age,p->high,p->weight,p->salary,p->joindate.year,p->joindate.month,p->joindate.day);break;
			   case 3:printf("%3s%10s%9s%9d%10.2f%10.0f%11.0f%10d-%d-%d\n",p->number,p->name,"前锋",p->age,p->high,p->weight,p->salary,p->joindate.year,p->joindate.month,p->joindate.day);break;
			   default : break;
			 }
			p=p->next;
		}
		printf("\n");
}

void writeToFile(MEM *head){/*把信息保存到文件*/
	FILE *fp;
	MEM *p;
	if(head==null){
		printf("向文件写入链表时,链表为空!\n");
		return;
	}
	fp=fopen(FILENAME,"wb");/*以写的方式打开*/
	p=head->next;
	while(p!=null){
		fwrite(p,sizeof(MEM),1,fp);/*把p中的信息写入到fp所指向的文件*/
		p=p->next;
	}
	fclose(fp);/*关闭文件*/
}

MEM *loadFromFile(int style){
	MEM *head,*node;
	FILE *fp;
	char c;
	fp=fopen(FILENAME,"rb");/*以读的方式打开文件*/
	if(fp==null){
					printf("文件不存在或者打开不成功\n");
					printf("需要新建此文件么?y/n\n");
				    c=getchar();
				
				    if((c=='n')||(c=='N'))
					{
					printf("程序即将结束\n");
					exit(1);
					}
				else if((c=='y')||(c=='Y'))
					{	fp=fopen(FILENAME,"wb");//以写方式打开文件时,若文件不存在,则自动生成同名文件
						fclose(fp);
						fp=fopen(FILENAME,"rb");
					}
				else {
					 printf("输入有错误请重新输入\n");
						}		
					} 
			   
		head=(MEM *)malloc(sizeof(MEM));/*动态开辟空间*/
		head->next=null;
		node=(MEM *)malloc(sizeof(MEM));
		
		if(fread(node,sizeof(MEM),1,fp)==0)
			printf("文件中没有数据\n");
		else{
			node->next=null;
			insert(head,node,style);
			while(feof(fp)==0)//读到文件尾的时候返回值是1,未到是0
			{
				node=(MEM *)malloc(sizeof(MEM));
				
				if(fread(node,sizeof(MEM),1,fp)==1){
					node->next=null;
					insert(head,node,style);
					}
				else free(node);
			}
		}
	
	fclose(fp);
	return head;
}

void showAll(MEM *head){
list(head);
}		

⌨️ 快捷键说明

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