# 基于C++的公司人员管理系统
# 一 系统介绍
系统架构如下图所示,主要包括对公司人员信息的查询、修改及存储管理功能。
![](http://www.writebug.com/myres/static/uploads/2021/10/19/6a703af89ca0c2dcd03154de61b9445c.writebug)
# 二 系统设计
创建了两个类来实现程序要求,1为People类,定义了一个人员的各种信息,2为Main类,定义了各种操作函数,main函数里用switch来选择操作函数。
实现了以下功能:
- 人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1
- 程序对所有人员有提升级别的功能
- 月薪的计算方法是:经理拿固定月薪,兼职技术人员按工作小时数领取月薪,兼职推销员的报酬按该推销员当月销售额提成 ,销售经理既拿固定月薪也领取销售提成
- 能显示全部人员信息
- 能按姓名或者编号显示、查找、增加、删除或者删除全部人员和保存各类人员的信息
- 显示负责人联系方式
- 信息整合保存成a.txt文件
- 读取a.txt文件
**People类 数据成员**
```c++
string job; //职位
string name; //姓名
int number; //编号
int money; //工资
static int sum; //公司人数
```
**成员函数**
```c++
People() {} //重载构造函数
People(string job1, string name1,intmoney1,int number1)
{
job=job1;
name=name1;
number=number1;
money=money1;
} //构造一个People类
~People(); //析构一个People类
```
**Main类 数据成员**
```c++
vector<People> Peo; //用容器来存放People成员易于操作,比类数组要好
```
**成员函数**
```c++
Main() {} //构造函数
void Promote(); //升职函数, 查找人员名字来操作升职
void Show(); //显示总信息
void Look(); //根据名字来查找 成员
void Increase(); //增加一个成员
void Delete(); //根据名字来删除一个成员
void all(); //删除全部人员
void write(); //将数据存入txt文件
void read(); //从txt文件中读取内容
int Sum() //显示公司人数
```
# 三 系统实现
## 3.1 技术架构
**编译环境:**CodeBlocks
**面向对象的相关技术:**
- 封装
- 重载
- vector容器装People类成员,二进制文本文件的存储与读取
- 改变黑框的构造
```c++
system("mode con cols=150 lines=30");
system("color 3f");
```
- system("cls") 来清空画面
- switch()来选择操作的函数
- system("pause"); 按任意键继续
- getchar(); 吸收键盘输入
# 3.2 代码实现
```c++
# include <iostream>
# include <iomanip>
# include <fstream>
# include <cstdio>
# include <cstdlib>
# include <vector>
# include <cstring>
# define four 20000;
# define three 15000;
# define two 8000;
# define one 4000;
using namespace std;
class People //定义一个人员的类
{
public:
string job; //职位
string name; //名字
int number; //编号
int money; //工资
People() {}
People(string job1, string name1,int money1,int number1) //构造函数初始化一个人员
{
job=job1;
name=name1;
number=number1;
money=money1;
}
~People();
static int sum; //这是static类型的sum 控制编号数字
};
People::~People()
{
}
class Main //总的控制台 控制人员;人员存放在vector的容器中 通过内部函数进行各种操作
{
protected:
vector<People> Peo;
public:
Main() {}
void Promote(); //升职函数
void Show(); //显示总信息
void Look(); //查找
void Increase(); //增加一个成员
void Delete(); //删除一个成员
void all();
void write(); //讲数据存入txt文件
void read();
int Sum() //显示公司人数
{
return Peo.size();
}
};
void Main::read() //读取
{
// char www[200];
cout<<"* 融资股份有限公司人员管理系统 *"<<endl;
ifstream ifs("C:\\Users\\Administrator\\Desktop\\a.txt",ios::in|ios::binary);
if(ifs.peek()==EOF)
cout<<"文件为空"<<endl;
if(ifs)
{
People Peo1;
// ifs.getline(www,200,'*');
// cout<<www<<endl;
for(int i=0; i<Peo.size(); i++)
{
ifs.read(reinterpret_cast<char*>(&Peo1),sizeof(Peo1));
cout<<"名字:"<<Peo1.name<<setw(15)<<"编号:"<<Peo1.number<<setw(15)<<"职务:"
<<Peo1.job<<setw(15)<<"工资:"<<Peo1.money<<endl;
}
}
}
void Main::all() //删除全部
{
vector <People>::iterator w;
if(Peo.size()==0)
cout<<"删除失败\n";
else
{
cout<<"总人数是"<<Peo.size()<<endl;
for(w=Peo.begin(); w!=Peo.end(); w++)
{
w=Peo.erase(w);
w--;
}
cout<<"删除成功"<<endl;
}
}
void Main::write() //存入txt文件模块
{
// string str="月底工资账单总览*";
ofstream ofs;
ofs.open("C:\\Users\\Administrator\\Desktop\\a.txt",ios::out|ios::binary); //打开txt文件,操作是每次打开删除之前的数据
if(ofs)
{
if(Peo.size()==0)
cout<<"操作失败"<<endl;
else
{
// ofs.write(str.c_str(), strlen(str.c_str()));
// ofs.flush();
for(int i=0; i<Peo.size(); i++)
{
ofs.write(reinterpret_cast<char*>(&Peo[i]),sizeof(Peo[i]));
ofs.flush();
}
cout<<"copy成功"<<endl;
ofs.close(); //每次打开文件后最后都要关掉,不然存不进去
}
}
else
cout<<"文件打开失败";
}
void Main::Promote() //升职模块
{
string name1; //升职人员的名字 偷懒了 name后面加了个1就算新的名字
string zhiwu; //所升的职务
int money1,numb,j; //升职后的工资 升职人数 和for循环所用的一个变量j
cout<<"请输入要升职的人数:"<<endl;
cin>>numb;
if(numb==0||Peo.size()==0||numb>Peo.size())
{
cout<<"操作失败\n";
return;
}
for(int i=1; i<=numb; i++)
{
cout<<"请输入第"<<i<<"升职人的名字"<<endl;
cin>>name1;
for( j=0; j<Peo.size(); j++)
if(Peo[j].name==name1)
{
cout<<"请输入要升职的职位"<<endl;
cin>>zhiwu;
cout<<"请输入职位的工资"<<endl;
cin>>money1;
Peo[j].job=zhiwu;
Peo[j].money=money1;
}
if(j==Peo.size()) //没有此人的判断条件有三个 1.输入的人数为0 2.输入的人数超过总人数 3.输入的名字没有存在
cout<<"没有此人"<<endl;
}
}
void Main::Show() // 显示数据模块
{
cout<<" 月底工资账单总览 "<<endl;
for(int i=0; i<Peo.size(); i++)
{
cout<<"名字:"<<Peo[i].name<<setw(15)<<"编号:"<<Peo[i].number<<setw(15)<<"职务:"
<<Peo[i].job<<setw(15)<<"工资:"<<Peo[i].money<<endl;
}
if(Peo.size()==0)
cout<<"无人员"<<endl;
}
void Main::Look() //查找模块
{
string name1;
cout<<"请输入要查找人的姓名:"<<endl;
cin>>name1;
for(int i=0; i<Peo.size(); i++)
if(Peo[i].name==name1)
{
cout<<"名字:"<<Peo[i].name<<setw(15)<<"编号:"<<Peo[i].number<<setw(15)<<"职务:"
<<Peo[i].job<<setw(15)<<"工资:"<<Peo[i].money;
}
cout<<"没有此人"<<endl;
}
void Main::Increase() //增加人员模块
{
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
创建了两个类来实现程序要求,1为People类,定义了一个人员的各种信息,2为Main类,定义了各种操作函数,main函数里用switch来选择操作函数。 实现了以下功能: 人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1 程序对所有人员有提升级别的功能 月薪的计算方法是:经理拿固定月薪,兼职技术人员按工作小时数领取月薪,兼职推销员的报酬按该推销员当月销售额提成 ,销售经理既拿固定月薪也领取销售提成 能显示全部人员信息 能按姓名或者编号显示、查找、增加、删除或者删除全部人员和保存各类人员的信息 显示负责人联系方式 信息整合保存成a.txt文件 读取a.txt文件 People类 数据成员
资源推荐
资源详情
资源评论
收起资源包目录
基于C++的公司人员管理系统.rar (6个子文件)
基于C++的公司人员管理系统
enterprise-personnel-management-system
src
Document description.docx 303KB
Source code.txt 10KB
image
Thumbs.db 12KB
index.png 13KB
.gitignore 270B
README.md 15KB
共 6 条
- 1
资源评论
计算机毕设论文
- 粉丝: 1w+
- 资源: 394
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功