U392741 图书馆管理系统

题目描述

小张是图书馆的管理员,负责管理图书馆的图书。每本书有一个唯一的编号和相关的信息。小张需要一个程序来帮助他管理这些图书。 小张的编程能力很差,所以他拜托你来设计一个程序来管理图书馆的图书。他给定的每本书包含以下信息:书名、作者、编号(唯一)和借阅状态。程序需要实现以下功能: 1. 添加新书。 2. 根据编号查询书籍。 3. 借出和归还书籍。

输入格式

第一行输入一个整数 $N$,表示接下来的操作数。 接下来的 $N$ 行,每行一个操作,操作类型有: `ADD `:添加一本新书。 `QUERY `:查询一本书的信息。 `BORROW `:借出一本书。 `RETURN `:归还一本书。

输出格式

对于每次 `QUERY` 操作,输出书籍的完整信息,信息按照书名、作者、编号、状态的顺序输出。 若书籍不存在,“状态”应为 `NotFound`; 若操作无效,“状态”应为 `Invalid`; 若书籍不可用(即被借出未归还),“状态”应为 `Borrowed`; 若书籍可用,“状态”应为 `Available`。 其中对于“操作无效”的解释为:小张输入图书数据的时候粗心大意,使用命令 `ADD` 时漏填了某项或多项元素,并且由于程序设计的局限性,当小张填入的数据中有某项输入不合法,**在这项操作后的所有操作都将被弃置**,只输出一行 `Invalid`。(在本题中,我们目前**考虑且只考虑这种情况**。)

说明/提示

### 样例解释 #1 第一个操作 `ADD HarryPotter JKRowling 1001`:添加一本书名为 "HarryPotter"、作者为 "JKRowling"、编号为 $1001$ 的书。这个操作成功执行。 第二个操作 `QUERY 1001`:查询编号为 $1001$ 的书籍。系统找到这本书,并输出其信息(书名、作者、编号)以及当前状态 Available,因为这本书刚被添加进系统,还未被借出。 第三个操作 `BORROW 1001`:借出编号为 $1001$ 的书籍。系统更改了这本书的状态为 Borrowed,因此当这本书被借出时,它不再可用。 第四个操作 `QUERY 1001`:再次查询编号为 $1001$ 的书籍。这时,系统显示这本书的状态为 Borrowed,因为它目前已被借出。 第五个操作 `RETURN 1001`:归还编号为 $1001$ 的书籍。尽管程序执行了这一操作,并且书籍的状态应当变更为 Available,但是 `QUERY` 操作并未在此操作后进行,所以这一操作的结果并未显示在输出中。 ### 样例解释 #2 第一个操作 `ADD HarryPotter JKRowling 1001`:这是一个有效的添加操作。一本书名为 "HarryPotter"、作者为 "JKRowling"、编号为 $1001$ 的书被成功添加到系统中。 第二个操作 `QUERY 1001`:查询编号为 $1001$ 的书籍。因为这本书存在于系统中,所以本操作有效。。 第三个操作 `BORROW 1001`:借出编号为 $1001$ 的书籍。因为这本书存在且可用,所以本操作有效。。 第四个操作 `QUERY 1001`:再次查询编号为 $1001$ 的书籍。本操作有效,并返回书已被借出 Borrowed。 第五个操作 `ADD TheHobbit 1002`:这是一个添加操作,但因为在书名 "TheHobbit" 之后漏掉了作者的名字,所以这是一个无效的操作。根据题目要求,遇到无效的操作时程序应输出 `Invalid` 并终止运行。因此,程序在这里输出 `Invalid` 并停止执行,后续操作不再进行。 第六个操作 `RETURN 1001`:归还编号为 $1001$ 的书籍。然而,由于程序在第五个操作时已经终止,所以这个操作没有被执行。 ### 样例解释 #3 第一个操作 `ADD Test Zemu 1003`:这是一个有效的添加操作。一本书名为 "Test"、作者为 "Zemu"、编号为 $1003$ 的书被成功添加到系统中。 第二个操作 `QUERY 1145`:查询编号为 $1145$ 的书籍。因为这本书不存在于系统中,所以本操作无效,程序在这一步返回 `NotFound`。 ### 数据范围 对于 $100\%$ 的数据,$1 \le N \le 20$,总字符串长度 $\le 50$。书名和作者名中字符 ASCII 码不会大于 $126$。保证每次输入都会有 `QUERY` 命令执行。