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

📄 人员信息管理系统.cpp

📁 上学期做的一个实验
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<conio.h>
#include<iomanip>
#include<cstdlib>
#include<cstring>
#include<fstream>
#include"employee.h"
using namespace std;

void peoplemanage();
void datascan();
void datamanage();
void datastat();
void help();
void about();
void dataadd();
void datadel();
void delnum();
void delname();
void datarework();
void rework(int n,long t2);
long num(int &n);
long name(int &n);
void a_datasearch();
void s_datasearch();
void sexstat();
void peoplestat();
void jobstat();
void numsearch();
void namesearch();
void sexsearch();
void jobsearch();
/*void employee1();
void manage1();
void technician1();
void saleman1();



void schoolagestat();
void levelstat();
void departmentstat();*/

float isdigit1()									//判断是否为数字
{
	float n;
	char a[100];
	while(!scanf("%f",&n))
	{
		gets(a);
		cout<<"错误.请重新输入.";
	}
	return n;
}

template <class T>
long job1(T x,long y,int n)
{	
	long t1;
	x.SetIndividualEmpNo(n);
	ofstream ofile("data.txt",ios_base::in);
	ofile.seekp(y);
	char name[20];
	char sex[20];
	char schoolage[20];
	int grade;
	cout<<"请输入姓名:";
	cin>>name;
	x.SetName(name);
	cout<<"请输入性别(男,女):";
	cin>>sex;
	while(strcmp(sex,"男") &&strcmp(sex,"女"))
	{
		cout<<"错误.请重新输入.";
		cin>>sex;
	}
	x.SetSex(sex);
	cout<<"请输入学历:";
	cin>>schoolage;
	getchar();
	x.SetSchoolage(schoolage);
	cout<<"请输入级别:";
	grade=int(isdigit1());
	x.SetGrade(grade);	
	ofile<<setiosflags(ios_base::left)<<"编号:"<<setw(4)<<x.GetindividualEmpNo()<<"姓名:"<<setw(8)<<x.GetName()<<"性别:"<<setw(4)<<x.GetSex()
		<<"学历:"<<setw(8)<<x.GetSchoolage()<<"级别:"<<setw(2)<<x.GetGrade();
	t1=ofile.tellp();
	ofile.close();
	return t1;
}

template <class T>
void job(T x)
{	
	char   buf[1000]; 
	char n[10];
	int IndividualEmpNo;
	ifstream   f("data.txt", ios::binary);			//记录编号
	long   t1,t2,t3; 
	t1=f.tellg();
	f.getline(buf,1000);
	t2=f.tellg();
	f.getline(buf,1000);
	t3=f.tellg();
	while(f.good())   
	{   
		f.getline(buf,1000); 
		t1=t2;
		t2=t3;
		t3=f.tellg();  
	}   
	f.clear(ios::goodbit);							// 将当前状态重置为ios::goodbit
	f.seekg(t1);									//t1为最后行第一个位置的指针
	f.read(buf,sizeof("编号"));
	f>>n;
	IndividualEmpNo=atoi(n);
	x.SetIndividualEmpNo(++IndividualEmpNo);
	f.close();
	ofstream ofile("data.txt",ios_base::app);
	char name[20];
	char sex[20];
	char schoolage[20];
	int grade;
	cout<<"请输入姓名:";
	cin>>name;
	x.SetName(name);
	cout<<"请输入性别(男,女):";
	cin>>sex;
	while(strcmp(sex,"男") &&strcmp(sex,"女"))
	{
		cout<<"错误.请重新输入.";
		cin>>sex;
	}
	x.SetSex(sex);
	cout<<"请输入学历:";
	cin>>schoolage;
	getchar();
	x.SetSchoolage(schoolage);
	cout<<"请输入级别:";
	grade=int(isdigit1());
	x.SetGrade(grade);	
	ofile<<setiosflags(ios_base::left)<<"编号:"<<setw(4)<<x.GetindividualEmpNo()<<"姓名:"<<setw(8)<<x.GetName()<<"性别:"<<setw(4)<<x.GetSex()
		<<"学历:"<<setw(8)<<x.GetSchoolage()<<"级别:"<<setw(2)<<x.GetGrade();
	ofile.close();
}

void main()
{
	peoplemanage();
}

void peoplemanage()									//主界面选项
{
	int i=0;
	char a[100];
	while(1)
	{
		system("cls");
		cout<<"欢迎使用人员信息管理系统!"<<endl;
		cout<<"请选择你要做的事情:"<<endl;
		cout<<"1.人员信息浏览."<<endl;
		cout<<"2.人员管理."<<endl;
		cout<<"3.人员统计."<<endl;
		cout<<"4.帮助."<<endl;
		cout<<"5.关于."<<endl;
		cout<<"6.退出."<<endl;
		cout<<"请选择操作:"<<endl;
	//	cin>>i;	
		scanf("%d",&i);
		gets(a);
		switch(i)
		{
		case 1:
			datascan();
			break;
		case 2:
			datamanage();
			break;
		case 3:
			datastat();
			break;
		case 4:
			help();
			break;
		case 5:
			about();
			break;
		case 6:
			exit(1);
		default:
			cout<<"错误.请重新输入."<<endl;
			getch();
			break;
		}
	}
}
void datascan()									//人员信息浏览
{
	int i=0;
	char a[100];
	while(1)
	{
		system("cls");
		cout<<"人员信息浏览."<<endl;
		cout<<"1.全体信息浏览."<<endl;
		cout<<"2.单类信息浏览."<<endl;
		cout<<"3.返回上一步."<<endl;
		cout<<"4.退出系统."<<endl;
		cout<<"请选择操作:"<<endl;
	//	cin>>i;
		scanf("%d",&i);
		gets(a);
		switch(i)
		{
		case 1:
			a_datasearch();
			break;
		case 2:
			s_datasearch();
			break;
		case 3:
			peoplemanage();
			break;
		case 4:
			exit(1);
		default:
			cout<<"错误.请重新输入."<<endl;
			getch();
			break;
		}
	}
}

void datamanage()									//人员管理
{
	int i=0;
	char a[100];
	while(1)
	{
		system("cls");
		cout<<"人员管理."<<endl;
		cout<<"1.增加人员信息."<<endl;
		cout<<"2.删除人员信息."<<endl;
		cout<<"3.修改人员信息."<<endl;
		cout<<"4.返回上一步."<<endl;
		cout<<"5.退出系统."<<endl;
		cout<<"请选择操作:"<<endl;
	//	cin>>i;
		scanf("%d",&i);
		gets(a);
		switch(i)
		{
		case 1:
			dataadd();
			break;
		case 2:
			datadel();
			break;
		case 3:
			datarework();
			break;
		case 4:
			peoplemanage();
			break;
		case 5:
			exit(1);
		default:
			cout<<"错误.请重新输入."<<endl;
			getch();
			break;
		}
	}
}

void datastat()												//人员统计			
{
	int i=0;
	char a[100];
	while(1)
	{
		system("cls");
		cout<<"人员统计."<<endl;
		cout<<"1.总人数统计."<<endl;
		cout<<"2.人员职位统计."<<endl;
		cout<<"3.人员性别统计."<<endl;
		cout<<"4.返回上一步."<<endl;
		cout<<"5.退出系统."<<endl;
		cout<<"请选择操作:"<<endl;
		//cin>>i;
		scanf("%d",&i);
		gets(a);
		switch(i)
		{
		case 1:
			peoplestat();
			break;
		case 2:
			jobstat();
			break;
		case 3:
			sexstat();
			break;
		case 4:
			peoplemanage();
		case 5:
			exit(1);
		default:
			cout<<"错误.请重新输入."<<endl;
			getch();
			break;
		}
	}
}

void help()													//帮助
{
	system("cls");
	cout<<"*************帮助*************"<<endl;
	cout<<"*                            *"<<endl;
	cout<<"*                            *"<<endl;
	cout<<"*                            *"<<endl;
	cout<<"*    向徐东明求助    *"<<endl;
	cout<<"*                            *"<<endl;
	cout<<"*                            *"<<endl;
	cout<<"*                            *"<<endl;
	cout<<"******************************"<<endl;
	cout<<"按回车返回上一步."<<endl;
	getch();
	peoplemanage();
}

void about()												//关于
{
	system("cls");
	cout<<"*************关于*************"<<endl;
	cout<<"*                            *"<<endl;
	cout<<"*                            *"<<endl;
	cout<<"*                            *"<<endl;
	cout<<"*    由徐东明创作    *"<<endl;
	cout<<"*                            *"<<endl;
	cout<<"*                            *"<<endl;
	cout<<"*                            *"<<endl;
	cout<<"******************************"<<endl;
	cout<<"按回车返回上一步."<<endl;
	getch();
	peoplemanage();
}


void dataadd()												//人员信息增加
{
	employee e1;
	manager m1;
	technician t1;
	salesman s1;
	float accumpay;
	float workhours;
	float sales;
	char a[100];
	int i;
	while(1)
	{
		ofstream ofile("data.txt",ios_base::app);
		system("cls");
		cout<<"请输入职位(1职员.2经理.3技术人员.4销售人员.5返回.6退出系统.):"<<endl;
		scanf("%d",&i);
		gets(a);
		switch(i)
		{
		case 1:
			job(e1);
			e1.SetJob("职员");
			cout<<"请输入月薪:";
			accumpay=isdigit1();
			e1.SetAccumpay(accumpay);
			ofile<<setiosflags(ios_base::left)<<"职位:"<<setw(10)<<e1.GetJob()
				<<"月薪:"<<setw(6)<<e1.GetAccumpay()<<setw(15)<<" "<<endl;
			ofile.close();
			datamanage();
			break;
		case 2:
			job(m1);
			m1.SetJob("经理");
			cout<<"请输入月薪:";
			accumpay=isdigit1();
			m1.SetAccumpay(accumpay);
			ofile<<setiosflags(ios_base::left)<<"职位:"<<setw(10)<<m1.GetJob()
				 <<"月薪:"<<setw(6)<<m1.GetAccumpay()<<setw(15)<<" "<<endl;
			ofile.close();
			datamanage();
			break;
		case 3:
			job(t1);
			t1.SetJob("技术人员");
			cout<<"请输入本月的工作时数:";
			workhours=isdigit1();
			t1.SetworkHours(workhours);
			t1.pay();
			ofile<<setiosflags(ios_base::left)<<"职位:"<<setw(10)<<t1.GetJob()<<"月薪:"
				 <<setw(6)<<t1.GetAccumpay()<<"工作时数:"<<setw(6)<<t1.GetworkHours()<<endl;
			ofile.close();
			datamanage();
			break;
		case 4:
			job(s1);
			s1.SetJob("销售人员");
			cout<<"请输入本月的销售总额:";
			sales=isdigit1();
			s1.Setsales(sales);
			s1.pay();
			ofile<<setiosflags(ios_base::left)<<"职位:"<<setw(10)<<s1.GetJob()<<"月薪:"
				 <<setw(6)<<s1.GetAccumpay()<<"销售总额:"<<setw(6)<<s1.Getsales()<<endl;
			ofile.close();
			datamanage();
			break;
		case 5:
			datamanage();
			break;
		case 6:
			exit(7);
		default:
			cout<<"错误.请重新输入."<<endl;
			getch();
			break;
		}
	}
}

void datadel()												//人员信息删除
{
	int i;
	char a[100];
	while(1)
	{
		system("cls");
		cout<<"删除人员信息."<<endl;
		cout<<"请选择删除的方式:1.按编号2.按姓名3.返回4.退出系统"<<endl;
		scanf("%d",&i);
		gets(a);
		switch(i)
		{
		case 1:
			delnum();
			break;
		case 2:
			delname();
			break;
		case 3:
			datamanage();
			break;
		case 4:
			exit(1);
		default:
			cout<<"错误.请重新输入."<<endl;
			getch();
			break;
		}		
	}	
}

void delnum()										//按编号删除
{
	int n,i,m=0;
	long t1;
	char a[110],line[110];
	while(1)
	{
		ifstream ofile("data.txt",ios_base::in);	
		ofstream ifile("temp.txt",ios_base::app);
		cout<<"请输入要删除人员的编号:";
		fflush(stdin);
		n=int(isdigit1());
	    while(ofile.good())
		{
			t1=ofile.tellg();
			ofile.read(a,sizeof("编号"));
			ofile>>i;
			if(i== n)
			{
				m=1;
				ofile.getline(line,100);
				continue;
			}
			else if(ofile.good())
			{
				ofile.read((char *)a,1);
				ofile.seekg(t1);
				while(*a!='\n')
				{
					ofile.read((char *)a,1);
					ifile.write((char *)a,1);
				}
			}
			if((ofile.eof())&&(m==0))
			{
				cout<<"对不起,找不到您所要删除的编号,请重输!"<<endl;
				getch();
				ofile.close(); 
				ifile.close();
			}
		}
		if(m==1)
		{
			cout<<"\n删除成功!"<<endl;
			getch();
			ofile.close(); 
			ifile.close();
			system("del data.txt");
			system("rename temp.txt data.txt");
			datamanage();
		}
		ofile.close(); 
		ifile.close();
		system("del data.txt");
		system("rename temp.txt data.txt");
	}
}

void delname()											//按姓名删除
{
	int m=0;
	long t1;
	char a[100],line[100],name[100],name1[100];
	while(1)

	{
		ifstream ofile("data.txt",ios_base::in);	
		ofstream ifile("temp.txt",ios_base::app);
		cout<<"请输入要删除的姓名:";
		fflush(stdin);
		cin>>name;
	    while(ofile.good())
		{
			t1=ofile.tellg();
			ofile.read(line,14);
			ofile>>name1;
			if(!strcmp(name,name1))
			{
				m=1;
				ofile.getline(line,100);
				continue;
			}
			else if(ofile.good())
			{
				ofile.read((char *)a,1);
				ofile.seekg(t1);
				while(*a!='\n')
				{
					ofile.read((char *)a,1);
					ifile.write((char *)a,1);
				}
			}
			if((ofile.eof())&&(m==0))
			{
				cout<<"对不起,找不到您所要删除的姓名,请重输!"<<endl;
				getch();
			}
		}
		if(m==1)
		{
			cout<<"删除成功!";
			getch();
			ofile.close(); 
			ifile.close();
			system("del data.txt");
			system("rename temp.txt data.txt");
			datamanage();
		}
		ofile.close(); 
		ifile.close();
		system("del data.txt");
		system("rename temp.txt data.txt");
	}
}

void datarework()									//修改信息
{
	int i,n;
	long t;
	char a[100];
	while(1)
	{
		system("cls");
		cout<<"修改人员信息."<<endl;
		cout<<"请选择修改人员资料的查询方式:1.按编号2.按姓名3.返回4.退出系统"<<endl;
		scanf("%d",&i);
		gets(a);
		switch(i)						
		{
		case 1:									//按编号
			t=num(n);
			rework(n,t);
			break;
		case 2:
			t=name(n);
			rework(n,t);
			break;
		case 3:
			datamanage();
			break;
		case 4:
			exit(1);
		default:
			cout<<"错误.请重新输入."<<endl;
			getch();
			break;
		}		
	}	
}

long name(int &n)
{
	int m=0;
	long t,t2;
	char line[100],name[100],name1[100];
	while(1)
	{
		ifstream ifile("data.txt",ios_base::binary);
		cout<<"请输入要修改的姓名:";
		fflush(stdin);
		cin>>name;
		while(ifile.good())
		{
			t=ifile.tellg();
			ifile.read(line,sizeof("编号"));
			ifile>>n;
			ifile.seekg(t);
			ifile.read(line,14);
			ifile>>name1;
			ifile.seekg(t);
			ifile.getline(line,100);
			if(!strcmp(name,name1))
			{
				m=1;
				t2=t;
				cout<<line<<endl;
				ifile.close();

⌨️ 快捷键说明

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