HM308 整表回写

HM308 整表回写

HM308 整表回写

来源: 第 308 集 机房预约系统-更新预约记录功能实现

难度: 普及

时间限制: 1s

空间限制: 64MB

题目描述

预约类要提供 updateOrder:把内存里的大表整份写回文件。若当前 mSize 为 \(0\),没有任何可写记录,函数直接返回,不打开文件、不输出任何内容。

若有记录,用输出流按写出并**截断**的方式打开文件(outtrunc):先删掉旧文件再重建,然后按下标 \(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
通过率
?
上传者