HM163 在岗改档

HM163 在岗改档

HM163 在岗改档

来源: 第 163 集 职工管理系统-修改职工功能实现

难度: 入门

时间限制: 1s

空间限制: 64MB

题目描述

职工的编号、姓名或岗位都可能变动,岗位升迁后对象类型也要跟着变。修改函数 modEmp 按下面做:

  1. 档案为空或文件不存在时,输出 文件不存在或记录为空 并结束。
  2. 否则读入要改的原编号 \(x\),用 isExist 顺序查找得到数组下标;找不到返回 \(-1\)。
  3. 找不到:输出 修改失败,再输出一行 查无此人
  4. 找到下标 \(p\):必须先 delete 掉该下标上原来的堆区对象,再读入新的编号、姓名、岗位编号。岗位 \(1\) 新建普通员工,\(2\) 新建经理,\(3\) 新建老板。基类指针先置空,再用分支(ifswitch 均可)指向新对象,写回数组的同一个下标 \(p\)。人数不变。
  5. 改完后输出 修改成功,并调用保存函数把内存同步回 empFile.txt

岗位变了,职责也变:员工完成经理交给的任务,经理完成老板交给的任务并下发任务给员工,总裁管理公司所有事务。showInfo 的格式与展示功能相同:

职工编号:编号职工姓名:姓名岗位:岗位岗位职责:职责

岗位名称:\(1\) 员工,\(2\) 经理,\(3\) 总裁。全角冒号后紧跟内容,各字段之间一个空格。

全部修改结束后,按数组下标调用 showInfo 输出当前全部职工。

输入格式

第一行一个整数 \(n\)(\(0 \le n \le 1000\))。\(n=0\) 表示空档,后面没有数据。

\(n \ge 1\) 时,接下来 \(n\) 行,每行原编号 \(id\)、不含空白的姓名 \(s\)、岗位编号 \(d\)(\(d \in \{1,2,3\}\))。

再一行整数 \(q\)(\(1 \le q \le 1000\))。随后 \(q\) 行,每行四个字段:待改原编号 \(x\)、新编号 \(nid\)、新姓名 \(ns\)、新岗位 \(nd\)。

输出格式

若 \(n=0\),只输出一行 文件不存在或记录为空

否则先输出每次修改的结果:成功一行 修改成功;失败两行 修改失败查无此人。再按数组下标输出当前全部职工,每人一行 showInfo

样例

输入 #1

2
1 李四 3
4 赵六 1
2
1 1 张三 1
2 2 鲍勃 2

输出 #1

修改成功
修改失败
查无此人
职工编号:1 职工姓名:张三 岗位:员工 岗位职责:完成经理交给的任务
职工编号:4 职工姓名:赵六 岗位:员工 岗位职责:完成经理交给的任务

输入 #2

0

输出 #2

文件不存在或记录为空

说明

  • 必须先释放旧对象再 new 新对象,不能只改几个字段凑合。
  • 新对象放回原来的下标,不要另开一个数组尾部。
  • 样例 1 把总裁李四改成普通员工张三,编号仍是 \(1\)。

信息

ID
1162
难度
(无)
分类
(无)
标签
(无)
递交数
0
已通过
0
通过率
?
上传者