C++实现职工管理系统(下)
C++实现职工管理系统(下)
大家好,今天是在博客园的第十五天,博主今天给大家带来的是职工管理系统(C++)(下)
这次的随笔记录是实现(中)结语处说的几个功能,另外新增一个
修改功能
此次要实现的功能
- 修改职工信息:按照编号修改职工个人信息
- 查找职工信息:按照职工的编号或者职工的姓名进行查找相关的人员信息
- 按照编号排序:按照职工编号,进行排序,排序规则由用户指定
- 清空所有文档:清空文件中记录的所有职工信息 (清空前需要再次确认,防止误删)
1.实现修改功能
思路:首先需要判断文件是否为空,接着寻找需要更正的人,接着释放掉该信息的内存,新建一块内存,将修改后的信息存入原来的位置,保存。
void WorkerInformation::Mod_Person()
{
if (this->m_FileIsEmpty)
{
cout << "该文件为空或记录为空" << endl;
}
else
{
cout << "请输入需要修改员工的员工编号:";
int a;
cin >> a;
int ret = this->IsExist(a);
if (ret != -1)
{
delete this->m_PersonArr[ret];
int newid = 0;
string newname = " ";
int newdeptid = 0;
cout << "请输入修改后的职工编号:";
cin >> newid;
cout << "请输入修改后的职工名字:";
cin >> newname;
cout << "请输入修改后职工的岗位:" << endl;
cout << "1、普通员工" << endl;
cout << "2、经理" << endl;
cout << "3、老板" << endl;
cin >> newdeptid;
Worker* worker = NULL;
switch (newdeptid)
{
case 1:
worker = new GeneralWorker(newid, newname, newdeptid);
break;
case 2:
worker = new Manage(newid, newname, newdeptid);
break;
case 3:
worker = new Boss(newid, newname, newdeptid);
break;
default:
break;
}
this->m_PersonArr[ret] = worker;
cout << "修改成功!" << endl;
this->save();
}
else
{
cout << "修改失败,查无此人" << endl;
}
}
cout << endl;
cout << "稍等请按任意键进行清屏操作!" << endl;
system("pause");
system("cls");
}
2.实现查找功能
思路:首先需要判断文件是否为空,①通过id查找,返回对应的数组下标。②通过名字查找,遍历数组,一一匹配,查找成功则显示信息。
void WorkerInformation::Find_Persom()
{
if (this->m_FileIsEmpty)
{
cout << "该文件为空或记录为空" << endl;
}
else
{
int select = 0;
cout << "1.通过职工编号查找" << endl;
cout << "2.通过职工名字查找" << endl;
cout << "请输入您要查找的方式:";
cin >> select;
if (select == 1)
{
int id = 0;
cout << "请输入需要查找的职工编号:";
cin >> id;
int ret = IsExist(id);
if (ret != -1)
{
cout << "查找成功,信息如下:" << endl;
this->m_PersonArr[ret]->Show_WI();
}
else
{
cout << "查找失败,无此人";
}
}
else if (select == 2)
{
string name = " ";
cout << "请输入需要查找的职工名字:";
cin >> name;
bool flag = false;
for (int i = 0; i < this->PersonNum; i++)
{
if (this->m_PersonArr[i]->m_Name == name)
{
cout << "查找成功,信息如下:" << endl;
this->m_PersonArr[i]->Show_WI();
flag = true;
}
}
if (flag == false)
{
cout << "查找失败,无此人!" << endl;
}
}
else
{
cout << "输入选项有误" << endl;
}
}
cout << endl;
cout << "稍等请按任意键进行清屏操作!" << endl;
system("pause");
system("cls");
}
3.实现排序功能
思路:首先需要判断文件是否为空,利用选择排序法实现升序降序。
void WorkerInformation::Sort_Person()
{
if (this->m_FileIsEmpty)
{
cout << "该文件为空或记录为空" << endl;
}
else
{
int select = 0;
cout << "1.按职工编号进行排序(升序)" << endl;
cout << "2.按职工编号进行排序(降序)" << endl;
cout << "请输入您要排序的方式:";
cin >> select;
for (int i = 0; i < this->PersonNum; i++)
{
int minOrMax = i;
for (int j = i + 1; j < this->PersonNum; j++) //升序
{
if (select == 1)
{
if (this->m_PersonArr[minOrMax]->m_Id > this->m_PersonArr[j]->m_Id)
{
minOrMax = j;
}
}
else
{
if (this->m_PersonArr[minOrMax]->m_Id < this->m_PersonArr[j]->m_Id)
{
minOrMax = j;
}
}
}
if (i != minOrMax)
{
Worker* temp = this->m_PersonArr[i];
this->m_PersonArr[i] = this->m_PersonArr[minOrMax];
this->m_PersonArr[minOrMax] = temp;
}
}
cout << "排序成功!" << endl;
this->save();
cout << "排序结果如下:" << endl;
this->show_Person();
cout << endl;
cout << "显示成功!" << endl;
}
cout << endl;
cout << "稍等请按任意键进行清屏操作!" << endl;
system("pause");
system("cls");
}
4.实现清空功能
思路:首先判断文件是否为空,再次确认是否要执行清空,如确定,遍历数组一次释放内存,将相关的标记进行置空,清零。
void WorkerInformation::Clean_Person()
{
if (this->m_FileIsEmpty)
{
cout << "该文件为空或记录为空" << endl;
}
else
{
int select = 0;
cout << "1.确认" << endl;
cout << "2.返回" << endl;
cout << "请问是否决定清空?";
cin >> select;
if (select == 1)
{
ofstream ofs(FILENAME, ios::trunc);
ofs.close();
if (this->m_PersonArr != NULL)
{
for (int i = 0; i < this->PersonNum; i++)
{
if (this->m_PersonArr[i] != NULL)
{
delete this->m_PersonArr[i];
}
}
delete[]this->m_PersonArr;
this->PersonNum = 0;
this->m_PersonArr = NULL;
m_FileIsEmpty = true;
}
cout << "清空成功!" << endl;
}
}
cout << endl;
cout << "稍等请按任意键进行清屏操作!" << endl;
system("pause");
system("cls");
}
结语
职工管理系统到这就先告一段落了,如果之后有什么新想法,再进行修改分享出来,继续加油,小伙伴们一起进步吧
C++实现职工管理系统(下)的更多相关文章
- C++ 基于多态的职工管理系统
职工管理系统 1.管理系统需求 职工管理系统可以用来管理公司内所有员工的信息 本教程主要利用C++来实现一个基于多态的职工管理系统 公司中职工分为三类:普通员工.经理.老板,显示信息时,需要显示职工编 ...
- C++实现职工管理系统(中)
C++实现职工管理系统(中) 大家好,今天是在博客园的第九天,博主今天给大家带来的是职工管理系统(C++)(中) 这次的随笔记录是实现(上)结语处说的几个功能 目录 C++实现职工管理系统(中) 1. ...
- C++实现职工管理系统(上)
C++实现职工管理系统(上) 大家好呀,时间过得真快,在博客园已经第七天了,博主今天给大家带来的是职工管理系统(C++)(上) 这次的随笔记录的是实现职工管理系统所需要的类 目录 C++实现职工管理系 ...
- C++职工管理系统
目录 职工管理系统 一. 需求 二. 创建管理类 1.创建文件 2. 头文件实现 3. 源文件实现 三. 菜单功能 1. 添加成员函数 2. 功能实现 3. 测试菜单功能 四. 退出功能 1. 提供功 ...
- 基于Struts2开发公司职工管理系统 Java源码
开发环境: Windows操作系统 开发工具: MyEclipse+Jdk+Tomcat+MySql数据库 职工管理系统作为一种管理软件正在各公司中得到越来越广泛的应用,且已达到了良好效果. 运行效果 ...
- Oracle数据库管理系统下对数据库操作常用命令
desc表名; /*查看表结构*/ alter table ...
- C++员工管理系统(封装+多态+继承+分类化+函数调用+读写文件+指针+升序降序算法等一系列知识结合)
1 C++职工管理系统 2 该项目实现 八个 功能 3 1-增加功能 2-显示功能 3-删除功能 4-修改功能 4 5-查找功能 6-排序功能 7-清空功能 8-退出功能 5 实现多个功能使用了多个C ...
- C++实例2--职工管理系统
职工管理系统 1. 头文件 1.1 workerManager.h 系统类 1 #pragma once // 防止头文件重复包含 2 #include<iostream> // 包含输 ...
- c++ 银行管理系统及报告
1.题目描写叙述: 本代码为银行管理系统,总体分为管理员模式和普通用户模式: (1)在管理员模式中能完毕 ①用户信息录入 ②改动管理员password ③改动指定账户信息 ④信息管理业务 (2)在普通 ...
随机推荐
- ISO8601
日期和时间的组合表示法 合并表示时,要在时间前面加一大写字母T,如要表示东八区时间2004年5月3日下午5点30分8秒,可以写成2004-05-03T17:30:08+08:00或20040503T1 ...
- YOLO v3算法介绍
图片来自https://towardsdatascience.com/yolo-v3-object-detection-with-keras-461d2cfccef6 数据前处理 输入的图片维数:(4 ...
- EXCEL 引用autocad vba,自动加载其类型库
Sub AutoADDAutoCADTypeLib() Dim Ref As Variant Dim hasAutoTypeLib As Boolean, hasAXDBLib As Boolean, ...
- 轻轻松松学CSS:background
background是复合属性,它可以分解为8个属性,其中5个属于CSS,另外3个属于CSS3一.CSS 1.background-color:背景色 2.background-image ...
- UI 科学
以简书为案例讲述「尼尔森十大可用性原则」 http://www.jianshu.com/p/a45e4ad68e20 你真的懂得尼尔森的十大可用性原则么? http://jy.sccnn.com/po ...
- Unity坐标系详解
1. World Space(世界坐标系): 我们在场景中添加的物体(如:Cube),他们都是以世界坐标显示在场景中.transform.position 获取的便是这个 坐标数值. 2. Scene ...
- 关于JavaScript点击按钮打开多个页面被浏览器以广告嫌疑拦截怎么解决
JS点击按钮打开新的标签页,工作中遇到需要点击按钮打开一个或多个,需要用到window.open() 工作中我们可能需要打开多个,看以下代码: var data = [{ "id" ...
- java-程序流程控制
判断结构 if(条件){}; if(条件){} else{ }; if(条件){}else{};格式类似3目运算:int a=2,b;b=(a>5)?7:8;这种格式比较简便 if(条件){ } ...
- C#通过Com串口进行Barcode Printer
前言 工作中有遇到Barcode打印的需求,最开始是通过打印机型号找到对应的打印机,再进行操作,但是需要匹配的打印机型号太多,而且不定,所以处理起来太过麻烦. 后面通过找到通过串口找到打印机,直接传输 ...
- swift基本体验
Swift初体验 1. 导入框架 2. 定义标识符: let/var 3. 语句结束时;可以省略 4. print() 5. let/var 6. 逻辑分支 7. 循环使用 // 1.Swift中如何 ...