HM155 职工档案落盘

HM155 职工档案落盘

HM155 职工档案落盘

来源: 第 155 集 职工管理系统-文件交互-写文件

难度: 入门

时间限制: 1s

空间限制: 64MB

题目描述

刚添加的职工若只挂在堆区,程序一结束堆内存就会被释放,下次打开就全没了。因此添加成功后必须把数据写到磁盘做持久化。堆区数据最好在析构函数里手动释放。

请实现管理类的保存接口 save(),并遵守下列规则:

  1. 包含 <fstream>。用宏常量指定档案名,宏名自定,内容必须是 empFile.txt
  2. 创建 ofstream 对象,以 ios::out 写出方式打开该文件(写出就等于写文件;这种方式会覆盖旧内容)。
  3. 按当前记录人数循环:把第 \(i\) 名职工的编号、姓名、部门编号依次写入,**属性之间用空格分隔**,写完一个人换一行。
  4. 写完后 close 关闭文件。
  5. 添加成功后调用 save()(放在提示前或提示后都可以)。

本题在读入全部职工后调用一次 save(),再析构管理对象、释放堆区。然后重新打开 empFile.txt,按文本方式读回并输出,以证明数据已经在文件里,而不是还活在内存中。

输入格式

第一行一个整数 \(n\)(\(1 \le n \le 100\))。

接下来 \(n\) 行,每行一个整数编号 \(id\)、一个不含空白的姓名 \(s\)、一个整数部门编号 \(d\)(\(1 \le id \le 10^6\),\(1 \le |s| \le 20\),\(1 \le d \le 3\))。

输出格式

共 \(n\) 行,必须来自读回的 empFile.txt。每行三个字段,用单个空格分隔:编号、姓名、部门编号,行末换行。顺序与写入顺序相同。

样例

输入 #1

1
1 张三 1

输出 #1

1 张三 1

输入 #2

3
1 ZhangSan 1
2 LiSi 2
3 WangWu 3

输出 #2

1 ZhangSan 1
2 LiSi 2
3 WangWu 3

说明

  • 一个人占一行,三个属性用空格分开,这既方便写,也方便以后用 >> 读回来。
  • ios::out 会整文件重写,不是追加;一次 save() 应写出当前内存中的全部职工。
  • 评测检查的是文件读回结果。只在内存里 cout、不写文件会无法通过。

信息

ID
1154
难度
9
分类
(无)
标签
(无)
递交数
2
已通过
1
通过率
50%
上传者