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

📄 sortmodify.cpp

📁 用C++编写的数据结构课程设计----职工信息管理系统。
💻 CPP
字号:
/*Link Modify(Link Head) 
{// 修改单一个节点。 
	Link ptr; 
	ptr=Search_Unique_Front(Head); 
	string code,name,sex,post,department; 
	//unsigned short int year; 
	//unsigned int wage;
	string year,wage;
	if(ptr->Next) 
	{ 
		cout<<"\n-----------你现在可以修改此职工的信息了----------"<<endl; 
		//数据域。
		cout<<"请输入职工编号:"; 
		cin>>code; 
		cout<<endl<<"请输入职工姓名:"; 
		cin>>name; 
		cout<<endl<<"请输入职工出生年份:"; 
		cin>>year; 
		while(cin.fail()) 
		{ 
			cout<<"请输入正确的年份格式。"<<endl; 
			cin.clear(); 
			fflush(stdin); 
			cin>>year; 
		} 
		cout<<endl<<"请输入职工性别(1.男/2.女):"; 
		cin>>sex; 
		cout<<endl<<"请输入职工职称:"; 
		cin>>post; 
		cout<<endl<<"请输入职工部门:"; 
		cin>>department; 
		cout<<endl<<"请输入职工工资:"; 
		cin>>wage; 
		while(cin.fail()) 
		{ 
			cout<<"请输入正确的工资数据。"<<endl; 
			cin.clear(); 
			fflush(stdin); 
			cin>>wage; 
		} 
		cout<<endl; 
		ptr->Next->m_Code=code;//因ptr是前趋节点,所以要用ptr->Next; 
		ptr->Next->m_Name=name; 
		ptr->Next->m_Year=year; 
		ptr->Next->m_Sex=sex; 
		ptr->Next->m_Post=post; 
		ptr->Next->m_Department=department; 
		ptr->Next->m_Wage=wage; 
		/*strcpy(ptr->Next->m_Code,code);//因ptr是前趋节点,所以要用ptr->Next; 
		strcpy(ptr->Next->m_Name,name); 
		strcpy(ptr->Next->m_Year,year); 
		strcpy(ptr->Next->m_Sex,sex); 
		strcpy(ptr->Next->m_Post,post); 
		strcpy(ptr->Next->m_Department,department); 
		strcpy(ptr->Next->m_Wage,wage); */
/*		cout<<"你的修改已经成功了!"<<endl;
	} 
	else
		cout<<"没找到此职工的记录,无法修改。"<<endl; 
	return Head; 
}*/





//修改职工信息函数

Link Modify(Link Head) 
{// 修改单一个节点。 
	string co;
	cout<<"输入你要修改的职工编号:"; cin>>co;
	Link ptr; 
	Link ptr_front; 
	ptr_front=Head;
	while(ptr_front){
		ptr=ptr_front->Next;
		if(ptr==NULL) break;
		else if(ptr->m_Code==co){ break;//找到,为ptr			
		}
		ptr_front=ptr_front->Next;
	}
	//string code,name,sex,post,department,year;
	//unsigned int wage;
	cout<<"找到一条记录如下:\n";
    cout<<"---------------------------------------------------------------\n";
	cout<<"职工编号  职工姓名  出生日期  性别\t职称\t  部门\t  工资\n";
	Display_Node(ptr);
    cout<<"---------------------------------------------------------------\n";
	cout<<"请输入你要修改的内容:\n";
	cout<<"            ╭------------------------------------╮"<<endl; 
	cout<<"            ∣1.职工编号        2.职工姓名        ∣"<<endl;   
	cout<<"            ∣3.出生日期        4.性    别        ∣"<<endl;
	cout<<"            ∣5.职工职称        6.部    门        ∣"<<endl; 
	cout<<"            ∣7.职工工资        0.取消修改        ∣ "<<endl;
	cout<<"            ╰------------------------------------╯"<<endl; 
	int choice;
    string again;
	int flag=0;
	do{
		cout<<endl<<"请选择:"; 
		cin>>choice;
		switch(choice){ 
		case 1:
			cout<<"请输入职工编号:"; 
			//cin>>code;
			cin>>ptr->m_Code;
			break;
		case 2:
			cout<<endl<<"请输入职工姓名:"; 
			//cin>>name;
			cin>>ptr->m_Name;
			break;
		case 3:
			cout<<endl<<"请输入职工出生日期:"; 
			//cin>>year;
			cin>>ptr->m_Year;
			break;
		case 4:
			cout<<"请输入职工性别(1.男/2.女):"; 
			//cin>>sex;
			cin>>ptr->m_Sex;
			break;
		case 5:
			cout<<"请输入职工职称:"; 
			//cin>>post; 
			cin>>ptr->m_Post;
			break;
		case 6:
			cout<<"请输入职工部门:"; 
			//cin>>department;
			cin>>ptr->m_Department;
			break;
		case 7:
			cout<<"请输入职工工资:"; 
			//cin>>wage;
			cin>>ptr->m_Wage;
			break;
		case 0:		return Head;
		default:
			cout<<"你的输入有误!请重新输入:";
		}
		cout<<"是否继续(y/n)?";
		while(1){
			cin>>again; 
			if(again=="N"||again=="n"){ flag=0;break;}
			else if(again=="Y"||again=="y"){ flag=1;break;}
			else cout<<"输入有误!请重新选择:";
		}
	}while(flag);
	cout<<"信息已成功修改,请注意保存!\n\n";
	return Head; 
}






//对职工信息进行排序(包括按工资排序和按姓名进行字典排序)

Link Sort(Link Head) 
{//我创建的是带头节点的链表。用直接插入法。 
	if((Head->Next==NULL)||(Head->Next->Next==NULL))//此步条件判断非常有价值。 
	{ 
		cout<<"数据节点数少于2个,不用排序!"<<endl; 
		return Head; 
	} 
	//-----------第二步; 
	Link ptr; 
	Link ptr_F; 
	Link ptr_N; 
	ptr=Head->Next->Next; 
	ptr_F=Head; 
	Head->Next->Next=NULL;//到此,分成了两个链表。 
	//第三步。 
	while(ptr) 
	{ 
		ptr_N=ptr->Next; 
		ptr_F=Head;//ptr_F的归位。 
		while(ptr_F->Next) 
		{ 
			if(ptr->m_Wage>ptr_F->Next->m_Wage) 
			{ 
				ptr->Next=ptr_F->Next; 
				ptr_F->Next=ptr; 
				break; 
				
			}//if 
			else 
			{ 
				ptr_F=ptr_F->Next; 
			} 
		}//while(ptr_F->Next) 
		if(ptr_F->Next==NULL) 
		{ 
			ptr->Next=ptr_F->Next; 
			ptr_F->Next=ptr;//表示插到有序链表的最后面了。 
		}		
		ptr=ptr_N;//归位,准备下一次排序。 
		
	}//while(ptr) 
	cout<<"\n从高到低,排序成功!信息如下:"<<endl; 
	Display_List(Head);
	return Head; 
}

//按姓名进行字典排序

Link Sort_byname(Link Head) 
{//我创建的是带头节点的链表。用直接插入法。 
	if((Head->Next==NULL)||(Head->Next->Next==NULL))//此步条件判断非常有价值。 
	{ 
		cout<<"数据节点数少于2个,不用排序!"<<endl; 
		return Head; 
	} 
	//-----------第二步; 
	Link ptr; 
	Link ptr_F; 
	Link ptr_N; 
	ptr=Head->Next->Next; 
	ptr_F=Head; 
	Head->Next->Next=NULL;//到此,分成了两个链表。 
	//第三步。 
	while(ptr) 
	{ 
		ptr_N=ptr->Next; 
		ptr_F=Head;//ptr_F的归位。 
		while(ptr_F->Next) 
		{ 
			if(ptr->m_Name<ptr_F->Next->m_Name) 
			{ 
				ptr->Next=ptr_F->Next; 
				ptr_F->Next=ptr; 
				break; 
				
			}//if 
			else 
			{ 
				ptr_F=ptr_F->Next; 
			} 
		}//while(ptr_F->Next) 
		if(ptr_F->Next==NULL) 
		{ 
			ptr->Next=ptr_F->Next; 
			ptr_F->Next=ptr;//表示插到有序链表的最后面了。 
		}		
		ptr=ptr_N;//归位,准备下一次排序。 
		
	}//while(ptr) 
	cout<<"\n按字典序排序如下:"<<endl; 
	Display_List(Head);
	return Head; 
}

⌨️ 快捷键说明

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