实验 4 :公司职工的信息管理程序
一、实验内容:
使用面向对象的程序设计方法设计一个程序,实现对公司职工信息的管理。对公司职工信息的管理包括:增加职工信息、查找职工信息、显示所有职工信息、删除职工信息和退出等功能。
二、实验要求:
1、程序要实现的功能:
①增加职工信息;
②查找职工信息;
③显示所有职工信息;
④删除职工信息;
⑤退出。
2、完成各成员函数。
①定义一个员工类(Staff)
类的声明为:
class Staff
{
public:
char name[10];//姓名
char no[5];//职员号
char department[10];职员所在的部门
int wage;//工资
char position[10];//职位
Staff();
Staff(char *name,char *no,char* dep,intwage,char* posi);
~Staff();
};
②定义一个公司类,类定义为
class Company
{
public :
int count;
Staff* add[30];//对象指针数组
Staff *Sta;//临时对象指针
Company();
~Company();
bool AddStaff(char *name,char *no,char*dep,int wage,char* posi);//添加职工
bool DeleteStaff(char *no);//删除职工
bool FindStaff(char *no);//查找职工
void DispAll();//显示所有职工
};
添加时,若职工信息的工号相同则添加不成功。
功能2为查找职工信息,以职工号检索输入3时,显示所有的员工信息4,删除职工信息按0退出系统
建议用string写,毕竟简单太多了。
/*
Name: company staff management program
Copyright:
Author: Jia daihua
Description: don't copy my work
*/
#include<iostream>
#include<cstring>
#include<string>
#include<iomanip>
using namespace std;
static int all = 0;
class Staff
{
public:
string name;
string no;
string department;
string wage;
string position;
Staff();
Staff(string name1,string no1,string department1,string wage1,string position1);
~Staff()
{
}
};
Staff::Staff()
{
name = '0';
no = '0';
department = '0';
wage = '0';
position = '0';
}
Staff::Staff(string name1,string no1,string department1,string wage1,string position1)
{
name = name1;
no = no1;
department = department1;
wage = wage1;
position = position1;
}
class Company
{
public :
int count;
Staff* add[30];
Staff *Sta;
Company()
{
memset(add, 0, sizeof(add));
Sta = 0;
count = 0;
}
~Company()
{
delete []Sta;
}
bool AddStaff(string name,string no,string dep,string wage,string posi);//添加职工
bool DeleteStaff(string no);//删除职工
bool FindStaff(string no);//查找职工
void DispAll();//显示所有职工
};
//添加员工函数
bool Company::AddStaff(string name,string no,string dep,string wage,string posi)
{
int i = 0;
Staff *example;
example = new Staff(name,no,dep,wage,posi);
for(i = 0; i < all; i ++)
{
Sta = (Staff*)add[i];
if( Sta->no == no)
{
cout<<"添加失败,该员工已存在!"<<endl;
return 0;
}
}
if(all <30)
{
add[all] = example;
cout<<"添加成功。"<<endl;
all++;
return 1;
}
return 1;
}
//通过员工号找到员工并输出员工信息
bool Company::FindStaff(string no)
{
int i,ju=0;
for(i = 0; i < all; i ++)
if(add[i]->no == no)
{
cout<<"该员工已找到:"<<endl;
cout<<"姓名"<<setw(16)<<"员工号"<<setw(16)<<"部门"<<setw(16)<<"工资"<<setw(16)<<"职位"<<endl;
cout<<add[i]->name<<setw(16)<<add[i]->no<<setw(16)<<add[i]->department<<setw(16)<<add[i]->wage<<setw(16)<<add[i]->position<<endl;
ju = 1;
return 1;
}
if(ju == 0)
{
cout<<"您是不是记错了工号或者是输错了!"<<endl;
return 0;
}
return 1;
}
//对制定员工号所对应的员工信息进行删除
bool Company::DeleteStaff(string no)
{
int i,ju = 0;
for(i = 0; i < all; i++)
{
if(add[i]->no == no)
{
for(int j = i;j < all; j++)
add[j] = add[j + 1];
all--;
cout<<"删除成功!"<<endl;
return 1;
}
}
if(ju == 0)
{
cout<<"您是不是记错了工号或者是输错了!"<<endl;
return 0;
}
return 1;
}
//输出目前所有的员工信息
void Company::DispAll()
{
int i;
cout<<"姓名"<<setw(16)<<"工号"<<setw(16)<<"部门"<<setw(16)<<"工资"<<setw(16)<<"职位"<<endl;
for(i = 0; i < all; i++)
cout<<add[i]->name<<setw(16)<<add[i]->no<<setw(16)<<add[i]->department<<setw(16)<<add[i]->wage<<setw(16)<<add[i]->position<<endl;
}
void welcome()
{
cout<<" $-------------------------------------------------------$"<<endl;
cout<<" | |"<<endl;
cout<<" | **欢迎进入公司职员管理系统** |"<<endl;
cout<<" | BY:一个瑟瑟发抖的弱鸡 |"<<endl;
cout<<" $-------------------------------------------------------$"<<endl;
return;
}
//功能选择函数
int select()
{
int r, loop = 1;
cout<<endl<<"请选择您的操作:"<<endl;
cout<<" 1 增加员工信息"<<endl;
cout<<" 2 查找员工信息"<<endl;
cout<<" 3 显示所有员工信息"<<endl;
cout<<" 4 删除员工信息"<<endl;
cout<<" 0 退出"<<endl;
cout<<"请输入序号(0~4):"<<endl;
while(loop)
{
cin>>r;
if(r >= 0 && r <= 4)
break;
else
cout<<"输入有误,请重新输入:";
}
return r;
}
int main()
{
Company c;
int j,k,l,r, loop = 1;
string name,no,position,department,wage;
welcome();
while(loop)
{
r = select();
if(r == 0)
break;
else if(r == 1)
{
cout<<"请输入姓名(换行键结束):"<<endl;
cin>>name;
cout<<"请输入工号(换行键结束):"<<endl;
cin>>no;
cout<<"请输入部门(换行键结束):"<<endl;
cin>>department;
cout<<"请输入工资(换行键结束):"<<endl;
cin>>wage;
cout<<"请输入职位(换行键结束):"<<endl;
cin>>position;
c.AddStaff(name,no,department,wage,position);
}
else if(r == 2)
{
cout<<"请输入您要查找的员工号:"<<endl;
cin>>no;
c.FindStaff(no);
}
else if(r == 3)
{
c.DispAll();
}
else if(r == 4)
{
cout<<"请输入您要删除的员工的员工号:"<<endl;
cin>>no;
c.DeleteStaff(no);
}
}
return 0;
}