📄 人员信息管理系统.cpp
字号:
#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 + -