员工管理系统(c++)
程序员文章站
2022-03-19 21:42:05
...
问题描述:每个员工的信息包括:编号、姓名、性别、出生年月、学历、职务、电话、住址等。系统能够完成员工信息的查询、更新、插入、删除、排序等功能。
实现要求:
(1) 排序:按不同关键字,对所有员工的信息进行排序。
(2) 查询:按特定条件查找员工。
(3) 更新:按编号对某个员工的某项信息进行修改。
(4) 插入:加入新员工的信息。
(5) 删除:按编号删除已离职的员工的信息。
自创员工表:
#include <cstdio>
#include <iostream>
#include <stdio.h>
#include <map>
#include <iomanip>
#include <algorithm>
using namespace std;
struct employees{
int num;//编号
string s_name;//姓名
string s_gender;//性别
string s_birth;//出生日期
string s_education;//学历
string s_position;//职务
string s_phone;//电话
string s_address;//住址
};
employees em[1024];
int len=0;
int flag=0;//控制系统是否退出
void em_outtitle()
{
cout<<setiosflags(ios::left)<<setw(8)<<"编号"<<setw(8)<<"姓名"<<setw(8)<<"性别"<<setw(12)<<"出生年月"<<setw(8)<<"学历"<<setw(12)<<"职务"<<setw(22)<<"电话"<<setw(8)<<"住址"<<endl;
}
void em_out()
{
em_outtitle();
for(int i=1;i<=len;i++)
cout<<setiosflags(ios::left)<<setw(8)<<em[i].num<<setw(8)<<em[i].s_name<<setw(8)<<em[i].s_gender<<setw(12)<<em[i].s_birth<<setw(8)<<em[i].s_education<<setw(12)<<em[i].s_position<<setw(22)<<em[i].s_phone<<setw(8)<<em[i].s_address<<endl;
}
bool cmp_num(employees xx,employees yy)
{
return xx.num<yy.num;
}
bool cmp_birth(employees xx,employees yy)
{
return xx.s_birth<yy.s_birth;
}
bool cmp_edu(employees xx,employees yy)
{
map<string,int>m_edu;
m_edu["本科"]=1;m_edu["大专"]=2;m_edu["中专"]=3;
return m_edu[xx.s_education]<m_edu[yy.s_education];
}
bool cmp_position(employees xx,employees yy)
{
map<string,int>m_po;
m_po["总经理"]=1;m_po["总策划"]=2;m_po["部门经理"]=3;m_po["秘书"]=4;
m_po["专职司机"]=5;m_po["职工"]=6;
return m_po[xx.s_position]<m_po[yy.s_position];
}
void em_sortnum()//按照编号排序
{
sort(em+1,em+1+len,cmp_num);
}
void em_sortbirth()//按照出生日期排序
{
sort(em+1,em+1+len,cmp_birth);
}
void em_sortedu()//按照学历排序
{
sort(em+1,em+1+len,cmp_edu);
}
void em_sortposition()//按照职务排序
{
sort(em+1,em+1+len,cmp_position);
}
void em_sort()//排序操作
{
string key;
printf("请输入关键词:");cin>>key;
if(key=="编号"){
em_sortnum();
em_out();
}else if(key=="出生日期"){
em_sortbirth();
em_out();
}else if(key=="学历"){
em_sortedu();
em_out();
}else if(key=="职务"){
em_sortposition();
em_out();
}else{
printf("关键词不正确!\n");
}
}
void em_get(int i,int num,string name,string gender,string birth,string education,string position,string phone,string address)
{
em[i].num=num;
em[i].s_name=name;
em[i].s_gender=gender;
em[i].s_birth=birth;
em[i].s_education=education;
em[i].s_position=position;
em[i].s_phone=phone;
em[i].s_address=address;
}
void em_insert()//插入信息
{
int num;string name;string gender;string birth;string education;string position;string phone;string address;
printf("请输入编号:");cin>>num;
printf("请输入姓名:");cin>>name;
printf("请输入性别:");cin>>gender;
printf("请输入出生日期:");cin>>birth;
printf("请输入学历:");cin>>education;
printf("请输入职务:");cin>>position;
printf("请输入电话:");cin>>phone;
printf("请输入住址:");cin>>address;
len++;
em_get(len,num,name,gender,birth,education,position,phone,address);
printf("插入成功!\n");
}
void em_delete()//删除操作
{
int num;
printf("请输入要删除员工信息的编号:");cin>>num;
int flag=0;
for(int i=1;i<=len;i++){
if(em[i].num==num){
for(int j=i;j<=len;j++){
em[j]=em[j+1];
}
flag=1;
break;
}
}
if(flag==1){printf("删除成功!\n");len--;}
else printf("删除失败!未查找到该员工!\n");
}
void em_querynum(int num)//查询编号
{
int flag=0;
for(int i=1;i<=len;i++){
if(em[i].num==num){
flag++;
if(flag==1)em_outtitle();
cout<<setiosflags(ios::left)<<setw(8)<<em[i].num<<setw(8)<<em[i].s_name<<setw(8)<<em[i].s_gender<<setw(12)<<em[i].s_birth<<setw(8)<<em[i].s_education<<setw(12)<<em[i].s_position<<setw(22)<<em[i].s_phone<<setw(8)<<em[i].s_address<<endl;
}
}
if(flag==0){
printf("不存在符合条件的员工!\n");
}else{
printf("查找成功\n");
}
}
void em_queryname(string name)//查询姓名
{
int flag=0;
for(int i=1;i<=len;i++){
if(em[i].s_name==name){
flag++;
if(flag==1)em_outtitle();
cout<<setiosflags(ios::left)<<setw(8)<<em[i].num<<setw(8)<<em[i].s_name<<setw(8)<<em[i].s_gender<<setw(12)<<em[i].s_birth<<setw(8)<<em[i].s_education<<setw(12)<<em[i].s_position<<setw(22)<<em[i].s_phone<<setw(8)<<em[i].s_address<<endl;
}
}
if(flag==0){
printf("不存在符合条件的员工!\n");
}else{
printf("查找成功\n");
}
}
void em_queryposition(string position)//查询职位
{
int flag=0;
for(int i=1;i<=len;i++){
if(em[i].s_position==position){
flag++;
if(flag==1)em_outtitle();
cout<<setiosflags(ios::left)<<setw(8)<<em[i].num<<setw(8)<<em[i].s_name<<setw(8)<<em[i].s_gender<<setw(12)<<em[i].s_birth<<setw(8)<<em[i].s_education<<setw(12)<<em[i].s_position<<setw(22)<<em[i].s_phone<<setw(8)<<em[i].s_address<<endl;
}
}
if(flag==0){
printf("不存在符合条件的员工!\n");
}else{
printf("查找成功\n");
}
}
void em_queryeducation(string education)//查询学历
{
int flag=0;
for(int i=1;i<=len;i++){
if(em[i].s_education==education){
flag++;
if(flag==1)em_outtitle();
cout<<setiosflags(ios::left)<<setw(8)<<em[i].num<<setw(8)<<em[i].s_name<<setw(8)<<em[i].s_gender<<setw(12)<<em[i].s_birth<<setw(8)<<em[i].s_education<<setw(12)<<em[i].s_position<<setw(22)<<em[i].s_phone<<setw(8)<<em[i].s_address<<endl;
}
}
if(flag==0){
printf("不存在符合条件的员工!\n");
}else{
printf("查找成功\n");
}
}
void em_query()
{
string key;string s;
printf("请输入查询信息:");cin>>key;
printf("请输入查询内容:");cin>>s;
if(key=="学历"){
em_queryeducation(s);
}else if(key=="姓名"){
em_queryname(s);
}else if(key=="编号"){
int num=0;
int st=s.size();
for(int i=0;i<st;i++){
num=(s[i]-'0')+num*10;
}
em_querynum(num);
}else if(key=="职务"){
em_queryposition(s);
}else {
printf("查询条件输入错误!\n");
}
}
void em_updatename(int num,string name)//更新姓名
{
int flag=0;
for(int i=1;i<=len;i++){
if(em[i].num==num){
flag=1;
em[i].s_name=name;
if(flag==1)em_outtitle();
cout<<setiosflags(ios::left)<<setw(8)<<em[i].num<<setw(8)<<em[i].s_name<<setw(8)<<em[i].s_gender<<setw(12)<<em[i].s_birth<<setw(8)<<em[i].s_education<<setw(12)<<em[i].s_position<<setw(22)<<em[i].s_phone<<setw(8)<<em[i].s_address<<endl;
break;
}
}
if(flag==0){
printf("更新失败!\n");
}else {printf("更新成功!\n");}
}
void em_updategender(int num,string gender)//更新性别
{
int flag=0;
for(int i=1;i<=len;i++){
if(em[i].num==num){
flag=1;
em[i].s_gender=gender;
if(flag==1)em_outtitle();
cout<<setiosflags(ios::left)<<setw(8)<<em[i].num<<setw(8)<<em[i].s_name<<setw(8)<<em[i].s_gender<<setw(12)<<em[i].s_birth<<setw(8)<<em[i].s_education<<setw(12)<<em[i].s_position<<setw(22)<<em[i].s_phone<<setw(8)<<em[i].s_address<<endl;
break;
}
}
if(flag==0){
printf("更新失败!\n");
}else {printf("更新成功!\n");}
}
void em_updatebirth(int num,string birth)//更新出生日期
{
int flag=0;
for(int i=1;i<=len;i++){
if(em[i].num==num){
flag=1;
em[i].s_birth=birth;
if(flag==1)em_outtitle();
cout<<setiosflags(ios::left)<<setw(8)<<em[i].num<<setw(8)<<em[i].s_name<<setw(8)<<em[i].s_gender<<setw(12)<<em[i].s_birth<<setw(8)<<em[i].s_education<<setw(12)<<em[i].s_position<<setw(22)<<em[i].s_phone<<setw(8)<<em[i].s_address<<endl;
break;
}
}
if(flag==0){
printf("更新失败!\n");
}else {printf("更新成功!\n");}
}
void em_updateeducation(int num,string education)//更新学历
{
int flag=0;
for(int i=1;i<=len;i++){
if(em[i].num==num){
flag=1;
em[i].s_education=education;
if(flag==1)em_outtitle();
cout<<setiosflags(ios::left)<<setw(8)<<em[i].num<<setw(8)<<em[i].s_name<<setw(8)<<em[i].s_gender<<setw(12)<<em[i].s_birth<<setw(8)<<em[i].s_education<<setw(12)<<em[i].s_position<<setw(22)<<em[i].s_phone<<setw(8)<<em[i].s_address<<endl;
break;
}
}
if(flag==0){
printf("更新失败!\n");
}else {printf("更新成功!\n");}
}
void em_updateposition(int num,string position)//更新职位
{
int flag=0;
for(int i=1;i<=len;i++){
if(em[i].num==num){
flag=1;
em[i].s_position=position;
if(flag==1)em_outtitle();
cout<<setiosflags(ios::left)<<setw(8)<<em[i].num<<setw(8)<<em[i].s_name<<setw(8)<<em[i].s_gender<<setw(12)<<em[i].s_birth<<setw(8)<<em[i].s_education<<setw(12)<<em[i].s_position<<setw(22)<<em[i].s_phone<<setw(8)<<em[i].s_address<<endl;
break;
}
}
if(flag==0){
printf("更新失败!\n");
}else {printf("更新成功!\n");}
}
void em_updatephone(int num,string phone)//更新电话
{
int flag=0;
for(int i=1;i<=len;i++){
if(em[i].num==num){
flag=1;
em[i].s_phone=phone;
if(flag==1)em_outtitle();
cout<<setiosflags(ios::left)<<setw(8)<<em[i].num<<setw(8)<<em[i].s_name<<setw(8)<<em[i].s_gender<<setw(12)<<em[i].s_birth<<setw(8)<<em[i].s_education<<setw(12)<<em[i].s_position<<setw(22)<<em[i].s_phone<<setw(8)<<em[i].s_address<<endl;
break;
}
}
if(flag==0){
printf("更新失败!\n");
}else {printf("更新成功!\n");}
}
void em_updateaddress(int num,string address)//更新地址
{
int flag=0;
for(int i=1;i<=len;i++){
if(em[i].num==num){
flag=1;
em[i].s_address=address;
if(flag==1)em_outtitle();
cout<<setiosflags(ios::left)<<setw(8)<<em[i].num<<setw(8)<<em[i].s_name<<setw(8)<<em[i].s_gender<<setw(12)<<em[i].s_birth<<setw(8)<<em[i].s_education<<setw(12)<<em[i].s_position<<setw(22)<<em[i].s_phone<<setw(8)<<em[i].s_address<<endl;
break;
}
}
if(flag==0){
printf("更新失败!\n");
}else {printf("更新成功!\n");}
}
void em_update()
{
int num;string key;string s;
printf("请输入要更新员工的编号:");cin>>num;
printf("请输入要更新员工的信息:");cin>>key;
printf("请输入要更新的内容:");cin>>s;
if(key=="姓名"){
em_updatename(num,s);
}else if(key=="性别"){
em_updategender(num,s);
}else if(key=="出生年月"){
em_updatebirth(num,s);
}else if(key=="学历"){
em_updateeducation(num,s);
}else if(key=="职务"){
em_updateposition(num,s);
}else if(key=="电话"){
em_updatephone(num,s);
}else if(key=="住址"){
em_updateaddress(num,s);
}else{
printf("更新内容有误!\n");
}
}
void interface(int order)
{
if(order==1){
em_sort();
}else if(order==2){
em_query();
}else if(order==3){
em_update();
}else if(order==4){
em_insert();
}else if(order==5){
em_delete();
}else if(order==0){
flag=1;
}else if(order==6){
em_out();
}else {
printf("指令不正确!请重新输入指令!\n");
}
}
int main()
{
printf("\t*****数据结构课程设计*****\n\n二、员工管理系统\n\n");
printf("\t1、排序:按不同关键字,对所有员工的信息进行排序。\n");
printf("\t2、查询:按特定条件查找员工。\n");
printf("\t3、更新:按编号对某个员工的某项信息进行修改。\n");
printf("\t4、插入:加入新员工的信息。\n");
printf("\t5、删除:按编号删除已离职的员工的信息。\n");
printf("\t6、显示当前员工。\n");
printf("\t0、退出\n\n");
while(!flag){
printf("请输入指令:");
int order;
cin>>order;
interface(order);
printf("\n");
}
return 0;
}
推荐阅读
-
使用PageAdmin网站内容管理系统做网站的好处
-
系统架构设计师-软件水平考试(高级)-理论-项目管理
-
构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(24)-权限管理系统-将权限授权给角色
-
大势至电脑文件防拷贝软件唤出热键 大势至企业文档安全管理系统修改热键的方法
-
Linux学习笔记(三):磁盘和文件系统管理
-
解析CentOS 7中系统文件与目录管理
-
SQL 2005使用专用管理员连接(DAC)的技巧及修改系统表的方法
-
学生信息管理系统——配置windows防火墙允许访问SQL Server 2008服务器
-
java学生管理系统
-
微服务架构案例(02):业务架构设计,系统分层管理