职工信息管理系统C++代码

职工信息管理系统C++代码相关文章推荐:1、C语言学生成绩管理系统源代码★★★★★2、C语言学籍管理系统源代码★★3、C语言学生成绩管理系统设计《C语言程序设计》实训报告★★★4、C语言学生信息管理系统源代码★★★★扫描上方二维码,回复999直接获取作者之前收藏的学习资源,谢谢网友们的分享。更多管理系统更新中,请注意关注!大学实训课学习到的一段源代码,职工信息管理系统c++项目源代码。#include<string>#include<iostre…

相关文章推荐:

1、 C语言学生成绩管理系统源代码 ★★★★★

2、 C语言学籍管理系统源代码 ★★

3、C语言学生成绩管理系统设计 《C语言程序设计》实训报告 ★★★

4、C语言学生信息管理系统源代码 ★★★★

职工信息管理系统C++代码

扫描上方二维码,回复 999 直接获取作者之前收藏的学习资源,谢谢网友们的分享。

职工信息管理系统C++代码

更多管理系统更新中,请注意关注!

大学实训课学习到的一段源代码,职工信息管理系统 c++项目源代码。

#include <string> 
#include <iostream> 
#include <fstream> 
#include <iomanip> 
#include <memory.h> 
#include <stdio.h> 
#include <conio.h> 
#include <stdlib.h> 
using namespace std; 

class employee  
{
public:
	string m_Code; 
	string m_Name; 
	unsigned short int m_Year; 
	string m_Sex; 
	string m_Post; 
	string m_Department; 
	unsigned int m_Wage; 
	//链表节点的指针域--- 
	employee* Next; 
public:
	employee* Create(employee* Head); 
	void Rel(employee* Head); 
	employee* Add(employee* Head); 
	bool Search(employee* Head); 
	employee* Search_Unique_Front(employee* Head); 
	void Display_List(employee* Head); 
	void Display_Node(employee* pNode); 
	employee* Modify(employee* Head); 
	employee* Del(employee* Head); 
	void Save_ByFile(employee* Head,fstream& ofile); 
	employee* Sort(employee* Head); 
};

employee* employee::Create(employee* Head) 
{//创建一个带头节点的空链表。 
	Head=new employee; 
	if(!Head) 
	{ 
		cout<<"分配内存失败!"<<endl; 
		return NULL; 
	} 
	Head->m_Code=""; 
	Head->m_Name=""; 
	Head->m_Year=0; 
	Head->m_Sex=""; 
	Head->m_Post=""; 
	Head->m_Department=""; 
	Head->m_Wage=0; 
	Head->Next=NULL; 
	
	return Head; 
} 

void employee::Rel(employee* Head) 
{//释放链表。 
	employee*  ptr;//声明一个操作用的指针。 
	while(Head!=NULL) 
	{ 
		ptr=Head; 
		Head=Head->Next; 
		delete ptr;//释放节点资源。 
	} 
} 

employee* employee::Add(employee*  Head) 
{//前插法添加数据。 
	employee*  pNew;// 声明一个新节点。 
	char again; 
	string code,name,sex,post,department; 
	unsigned short int year; 
	unsigned int wage; 
	do 
	{ 
		pNew=new employee; 
		//数据域。 
		cout<<"请输入职工代码:"; 
		cin>>code; 
		cout<<endl<<"请输入职工姓名:"; 
		cin>>name; 
		cout<<endl<<"请输入职工出生年份:"; 
		cin>>year; 
		while(cin.fail()) 
		{ 
			cout<<"请输入正确的年份格式。"<<endl; 
			cin.clear(); 
			fflush(stdin); 
			cin>>year; 
		} 
		cout<<endl<<"请输入职工性别:"; 
		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; 
		pNew->m_Code=code; 
		pNew->m_Name=name; 
		pNew->m_Year=year; 
		pNew->m_Sex=sex; 
		pNew->m_Post=post; 
		pNew->m_Department=department; 
		pNew->m_Wage=wage; 
		//指针域。 
		pNew->Next=Head->Next; 
		Head->Next=pNew; 
		cout<<"数据添加成功!是否继续添加?(Y/N)"<<endl; 
		cin>>again; 
	}while(again=='Y'||again=='y'); 
	return Head; 
} 

bool employee::Search(employee*  Head) 
{//查询同时满足“姓名”和“部门”的职工信息。 
	employee*  ptr; 
	string department; 
	string name; 
	ptr=Head->Next; 
	cout<<"请输入部门:"; 
	cin>>department; 
	cout<<endl<<"请输入姓名:"; 
	cin>>name; 
	cout<<endl<<"----------------查询结果------------------"<<endl; 
	while(ptr) 
	{ 
		if((ptr->m_Name==name)&&(ptr->m_Department==department)) 
		{ 
			Display_Node(ptr);//打印满足条件的节点。 
			return true; 
		} 
		ptr=ptr->Next;//查询下一节点。 
	} 
	cout<<"无此职工的信息。"<<endl; 
	return false; 
} 

employee* employee::Search_Unique_Front(employee* Head) 
{
	
	employee* ptr;
	string code;
	ptr= Head->Next;
	cout<<"请输入职工代码:";
	cin>>code;
	cout<<endl<<"----------------查询结果------------------"<<endl; 
	while(ptr)
	{
		if(ptr->m_Code==code)
			return ptr;
		ptr=ptr->Next;
	}
	return ptr;
} 

void employee::Display_List(employee*  Head) 
{ 
	employee*  ptr; 
	ptr=Head->Next; 
	cout<<"==================所有职工信息=================="<<endl; 
	while(ptr) 
	{ 
		Display_Node(ptr); 
		ptr=ptr->Next; 
	} 
} 

void employee::Display_Node(employee*  pNode) 
{//在标准输出设备上输出。 
	cout<<setw(10)<<left<<pNode->m_Code 
		<<setw(10)<<left<<pNode->m_Name 
		<<setw(10)<<left<<pNode->m_Year 
		<<setw(10)<<left<<pNode->m_Sex 
		<<setw(10)<<left<<pNode->m_Post 
		<<setw(10)<<left<<pNode->m_Department 
		<<setw(10)<<left<<pNode->m_Wage<<endl;//setw(10)表示占10个字符位置。 
} 

employee* employee::Modify(employee*  Head) 
{// 修改单一个节点。 
	employee*  ptr; 
	ptr=Search_Unique_Front(Head); 
	string code,name,sex,post,department; 
	unsigned short int year; 
	unsigned int wage; 
	if(ptr) 
	{ 
		cout<<"-------你现在可以修改此职工的信息了-------"<<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<<"请输入职工性别:"; 
		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->m_Code=code;
		ptr->m_Name=name; 
		ptr->m_Year=year; 
		ptr->m_Sex=sex; 
		ptr->m_Post=post; 
		ptr->m_Department=department; 
		ptr->m_Wage=wage; 
	} 
	else
	{
		cout<<"没找到此职工的记录,无法修改。"<<endl; 
	}
	return Head; 
} 

employee*  employee::Del(employee*  Head) 
{ 
	string code;
	employee*  parentptr; 
	employee*  ptr_front; 
	//ptr_front=Search_Unique_Front(Head); 
	cout<<"请输入职工代码:";
	cin>>code;
	parentptr= Head;
	ptr_front = Head->Next;
	while(ptr_front)
	{
		if(ptr_front->m_Code==code)
		{
			parentptr->Next = ptr_front->Next;
			delete ptr_front;
			return Head;
		}
		parentptr = ptr_front;
		ptr_front = ptr_front->Next;
		
	}
	return Head; 
}

void employee::Save_ByFile(employee*  Head,fstream& ofile) 
{ 
	employee*  pNode; 
	pNode=Head->Next; 
	ofile.clear();//清除文件结束状态。 
	while(pNode) 
	{ 
		ofile<<setw(10)<<left<<pNode->m_Code 
			<<setw(10)<<left<<pNode->m_Name 
			<<setw(10)<<left<<pNode->m_Year 
			<<setw(10)<<left<<pNode->m_Sex 
			<<setw(10)<<left<<pNode->m_Post 
			<<setw(10)<<left<<pNode->m_Department 
			<<setw(10)<<left<<pNode->m_Wage<<endl;//setw(10)表示占10个字符位置。 
		pNode=pNode->Next; 
	} 
	cout<<"数据文件保存成功!"<<endl; 
} 

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

int main() 
{ 
	employee* st = new employee();
	st=st->Create(st); 
	fstream iofile; 
	iofile.open("d:\\iofile.txt",ios_base::in|ios_base::out|ios_base::app);//文件以三种方式打开。 
	if(!iofile) 
	{ 
		cout<<"打开文件失败!"<<endl; 
		return -1; 
	} 
	int menu; 
	while(1) 
	{ 
		cout<<"*****************************************************"<<endl; 
		cout<<"*====================菜单选顶=======================*"<<endl; 
		cout<<"*                                                   *"<<endl; 
		cout<<"*    1.注册职工 2.修改信息 3.删除信息 4.信息查询    *"<<endl; 
		cout<<"*    5.保存文件 6.工资排行 7.信息显示 0.退出系统    *"<<endl; 
		cout<<"*                                                   *"<<endl;
		cout<<"*****************************************************"<<endl; 
		cout<<endl<<"请选择相应操作菜单项:"; 
		cin>>menu; 
		while(cin.fail()) 
		{ 
			cout<<"请选择正确的菜单选项。"<<endl; 
			cin.clear(); 
			fflush(stdin); 
			cin>>menu; 
		} 
		switch(menu) 
		{ 
		case 0: 
			cout<<"成功退出系统!"<<endl; 
			return 0; 
		case 1: 
			st=st->Add(st); 
			break; 
		case 2: 
			st=st->Modify(st); 
			break; 
		case 3: 
			st=st->Del(st); 
			break; 
		case 4: 
			st->Search(st); 
			break; 
		case 5: 
			st->Save_ByFile(st,iofile); 
			break; 
		case 6: 
			st->Sort(st); 
			break; 
		case 7: 
			st->Display_List(st); 
			break; 
		default: 
			cout<<"请选择正确的菜单项进行操作。多谢合作!"<<endl; 
		} 
	} 
	st->Rel(st); 
	iofile.close(); 
	return 0; 
} 

也希望能帮到正在做实训报告的你,欢迎留言区讨论。

分享:C语言学生成绩管理系统设计 《C语言程序设计》实训报告

扫描下方公众号,发送 成绩系统 4个字,获取下载实训源码

职工信息管理系统C++代码

感谢关注,共同进步!

今天的文章职工信息管理系统C++代码分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/30691.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注