HM311 取消预约

HM311 取消预约

HM311 取消预约

来源: 第 311 集 机房预约系统-学生取消预约功能实现

难度: 普及

时间限制: 1s

空间限制: 64MB

题目描述

学生取消预约前先装入整张预约表。mSize 为 \(0\) 则输出 无预约记录 并结束。

否则先提示:只有**自己的**、并且状态为审核中(1)或预约成功(2)的记录可以取消。别人的单子不能动。给用户看的序号用从 \(1\) 开始的 index,不要直接把内存下标 \(i\) 亮出去——因为可能扫到第 \(5\) 条才碰到自己的第一单。

vector<int> 记下每条可取消记录在大表中的真实下标。向量本身仍从 \(0\) 编:用户输入 \(k\) 时,真实下标是 v[k - 1]。学号比较同样要 atoi(c_str())。列表里输出日期、时段(三目:\(1\) 上午否则下午)、机房号、状态(此时只可能是审核中或预约成功)。

然后按顺序处理选择:

  • 选择不在 \(0\sim v.size()\) 内:输出 输入有误,继续处理下一个数。
  • 选择 \(0\):表示反悔返回,停止处理,不改表。
  • 选择合法的 \(k\ge 1\):把 orderData[v[k-1]]["status"] 置为 "0",调用整表回写,输出 已取消预约,然后停止(一次只取消一条)。

回写格式与更新预约记录相同:

date v1 interval v2 stuId v3 stuName v4 roomId v5 status v6

输入格式

第一行:当前学号。

第二行:\(n\)。

接下来 \(n\) 行,每行六个字段:日期、时段、学号、姓名、机房号、状态。

下一行:\(m\)。

下一行:\(m\) 个整数,作为取消界面的输入流。

输出格式

若 \(n=0\),仅一行 无预约记录

否则先输出可取消列表,每行:

k、预约日期:d 时段:上午|下午 机房号:r 状态:审核中|预约成功

再按选择输出 输入有误已取消预约。若发生了取消,最后再输出回写后的 \(n\) 行文件。选择 \(0\) 返回时不回写。

样例

输入 #1

1
4
1 2 1 张三 3 1
4 1 2 李四 2 1
2 2 1 张三 1 1
1 2 1 张三 3 1
4
4 0 3 1

输出 #1

1、预约日期:1 时段:下午 机房号:3 状态:审核中
2、预约日期:2 时段:下午 机房号:1 状态:审核中
3、预约日期:1 时段:下午 机房号:3 状态:审核中
输入有误

输入 #2

1
4
1 2 1 张三 3 1
4 1 2 李四 2 1
2 2 1 张三 1 1
1 2 1 张三 3 1
1
3

输出 #2

1、预约日期:1 时段:下午 机房号:3 状态:审核中
2、预约日期:2 时段:下午 机房号:1 状态:审核中
3、预约日期:1 时段:下午 机房号:3 状态:审核中
已取消预约
date 1 interval 2 stuId 1 stuName 张三 roomId 3 status 1
date 4 interval 1 stuId 2 stuName 李四 roomId 2 status 1
date 2 interval 2 stuId 1 stuName 张三 roomId 1 status 1
date 1 interval 2 stuId 1 stuName 张三 roomId 3 status 0

说明

\(0 \le n \le 200\),\(1 \le m \le 50\)(当 \(n=0\) 时没有 \(m\) 这一段)。

张三有三条可取消,李四那条被跳过,因此用户看到的是 \(1,2,3\),对应大表下标 \(0,2,3\)。样例 #1 先输入 \(4\) 非法,再输入 \(0\) 返回,文件不变故不回写。样例 #2 选 \(3\),即 v[2]=3,把第 \(3\) 条(下标从 \(0\) 计)状态改为 \(0\)。

信息

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