HM308 整表回写
HM308 整表回写
来源: 第 308 集 机房预约系统-更新预约记录功能实现
难度: 普及
时间限制: 1s
空间限制: 64MB
题目描述
预约类要提供 updateOrder:把内存里的大表整份写回文件。若当前 mSize 为 \(0\),没有任何可写记录,函数直接返回,不打开文件、不输出任何内容。
若有记录,用输出流按写出并**截断**的方式打开文件(out 且 trunc):先删掉旧文件再重建,然后按下标 \(0,1,\ldots,mSize-1\) 依次写出。用 orderData[i]["date"] 这种双下标访问,六个字段都要写,不要只改状态——以后若允许改机房号或时段,一次回写也能带上。每条写成:
date v1 interval v2 stuId v3 stuName v4 roomId v5 status v6
字段名与值之间、相邻字段之间均为一个空格,**最后一个值后面不要再空格**,然后换行。写完关闭流。
这和「学生新申请时往文件末尾追加(app)」不是同一件事:追加是多一条新纪录,回写是删了重建、覆盖全部旧行。两套逻辑不能揉进同一个函数。
本题先读入 \(n\) 条已拆好的记录,再执行若干次「改某一条的某一个字段」,最后调用一次 updateOrder。
输入格式
第一行一个整数 \(n\)。
当 \(n>0\) 时,接下来 \(n\) 行,每行六个值,依次为日期、时段、学号、姓名、机房号、状态(姓名不含空白)。
下一行一个整数 \(u\)。当 \(n=0\) 时这一行仍然存在。
随后 \(u\) 行,每行:下标 \(i\)、字段名、新值。用 orderData[i][字段名] = 新值 修改。保证 \(i\) 合法、字段名属于六个键。
输出格式
若 \(n=0\),无输出。
否则输出 \(n\) 行,即回写后的文件内容。
样例
输入 #1
2
1 2 1 张三 3 1
2 2 1 张三 1 1
1
0 status 2
输出 #1
date 1 interval 2 stuId 1 stuName 张三 roomId 3 status 2
date 2 interval 2 stuId 1 stuName 张三 roomId 1 status 1
输入 #2
0
0
输出 #2
说明
\(0 \le n \le 200\),\(0 \le u \le 200\)。
样例 #1 把第 \(0\) 条状态改成 \(2\) 后整表截断回写,第二条未改也要原样写出。样例 #2 条数为 \(0\),直接返回。
信息
- ID
- 1307
- 难度
- (无)
- 分类
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 通过率
- ?
- 上传者