CLI Standard
contents
description
list-of-all-operations
restart
authentication
user-user
user-book
time
query
several cases
description
library运行时,通过与文件交互,实现类似于系统日志一样的东西。
通过读取in.txt内的指令,重现系统的运行情况,并将每条指令的操作结果输出至out.txt。
以下给出一个指令规范集,供大家参考。
list-of-all-operations
我们将指令分为三大类,第一类是关于用户身份验证的,第二类是用户与用户之间操作,第三类是用户与书之间的操作,第四类即查询操作。
注意命令行中的各个信息之间的空格均为"tab"键("\t"分隔,ASCII码是9)!!!
restart
restart
CLI Standard Input
restart
Sample Input
restart
Explanation
输入单行restart,重启图书馆,仅仅保留一个管理员用户信息(admin,secret),不需要任何输出
authentication
login
CLI Standard Input
< name-of-user > < password > login
CLI Standard Output
login successful/login failed
Sample Input
admin-012 iammaster login
Sample Output
login successful
Explanation
管理员admin-012以iammaster密码登录,系统运行后验证用户名以及密码,验证通过,输出login successful
Output:
当且仅当该用户存在,且输入的密码正确时返回login successful,否则返回login failed
logout
CLI Standard Input
< name-of-user > logout
CLI Standard Output
logout successful/logout failed
Sample Input
admin-012 logout
Sample Output
logout failed
Explanation
管理员admin-012尝试登出系统,但运行后发现登出失败,输出logout failed
Output:
当且仅当该用户未登录时返回logout failed,否则返回logout successful
set-password
CLI Standard Input
< name-of-user > set-password < password >
CLI Standard Output
set-password successful/set-password failed
Sample Input
admin-012 set-password 012
Sample Output
set-password successful
Explanation
管理员admin-012尝试设置/修改密码为012,因该用户存在,所以设置/修改密码成功,输出set-password successful
user-user
create-user
CLI Standard Input
< name-of-admin > create-user < name-of-user > < password > < type-of-user >
CLI Standard Output
create-user successful/create-user failed
Sample Input
admin-012 create-user T5100309000 9000 TEACHER
Sample Output
create-user successful
Explanation
管理员admin-012尝试添加一个TEACHER类型的用户T5100309000,密码9000,系统运行后添加用户成功并输出
Output:
当且仅当操作者为已登录的管理员,且添加的用户信息无误并且系统中不存在相同的信息时返回create-user successful,否则返回create-user failed
remove-user
CLI Standard Input
< name-of-admin > remove-user < name-of-user > < type-of-user >
CLI Standard Output
remove-user successful/remove-user failed
Sample Input
admin-012 remove-user T5100309000 TEACHER
Sample Output
remove-user successful
Explanation
管理员admin-012尝试删除一个TEACHER类型的用户T5100309000,系统运行后删除用户成功并输出
Output:
当且仅当操作者为已登录的管理员,且将要被删除的用户存在于系统中时返回remove-user successful,否则返回remove-user failed
create-book
CLI Standard Input
< name-of-admin > create-book < isbn-of-book > < name-of-book > < authors > < index-of-book > < borrowable? >
CLI Standard Output
create-book successful/create-book failed
Sample Input
admin-012 create-book 123-456-921293-7 Java-for-Programmers DEITEL 0012082 true
Sample Output
create-book failed
Explanation
管理员admin-012尝试添加一本可外借的书,系统运行后添加失败,并输出
Input:
注意如果添加的图书为该书类的第一本,应该新增添一个书类
Output:
当且仅当操作者为已登录的管理员,且添加的书籍信息无误并且系统中不存在相同的信息时返回create-book successful,否则返回create-book failed
remove-book
CLI Standard Input
< name-of-admin > remove-book < isbn-of-book > < name-of-book > < index-of-book >
CLI Standard Output
remove-book successful/remove-book failed
Sample Input
admin-012 remove-book 123-456-921293-7 Java-for-Programmers 0012082
Sample Output
remove-book failed
Explanation
管理员admin-012尝试删除一本书,系统运行后删除失败,并输出
Output:
当且仅当操作者为已登录的管理员,且将要被删除的书籍存在于系统中时返回remove-book successful,否则返回remove-book failed
user-book
borrow-book
CLI Standard Input
< name-of-user > borrow-book < isbn-of-book > < name-of-book > < index-of-book >
CLI Standard Output
borrow-book successful/borrow-book falied
Sample Input
T5100309000 borrow-book 123-456-921293-7 Java-for-Programmers 0012082
Sample Output
borrow-book failed
Explanation
用户T5100309000尝试借书Java-for-Programmers,但运行后发现借书失败,输出borrow-book failed
Output:
当且仅当操作者为已登录的读者,该读者当前没有罚金,借阅图书册数未达可借图书上线,且所借图书可外借,没有被其他读者预订或者借走,返回borrow-book successful,否则返回borrow-book failed
return-book
CLI Standard Input
< name-of-user > return-book < isbn-of-book > < name-of-book > < index-of-book >
CLI Standard Output
return-book successful/return-book falied
Sample Input
T5100309000 return-book 123-456-921293-7 Java-for-Programmers 0012082
Sample Output
return-book successful
Explanation
用户T5100309000尝试还书Java-for-Programmers,运行后发现还书成功,输出return-book successful
Output:
当且仅当操作者未登录,或者读者所要归还的图书并未离开图书馆时,返回return-book failed,否则返回return-book successful
renew-book
CLI Standard Input
< name-of-user > renew-book < isbn-of-book > < name-of-book > < index-of-book >
CLI Standard Output
renew-book successful/renew-book falied
Sample Input
T5100309000 renew-book 123-456-921293-7 Java-for-Programmers 0012082
Sample Output
renew-book failed
Explanation
用户T5100309000尝试续借书Java-for-Programmers,但运行后发现续借书失败,输出renew-book failed
Output:
当且仅当操作者为已登录的读者,该读者当前没有罚金,且该本书已经被该读者借走并没有达到续借次数上界时返回renew-book successful,否则返回renew-book failed
reserve-book
CLI Standard Input
< name-of-user > reserve-book < isbn-of-book > < name-of-book >
CLI Standard Output
reserve-book < index-of-book >/reserve-book failed
Sample Input
T5100309000 reserve-book 123-456-921293-7 Java-for-Programmers
Sample Output
reserve-book 0012083
Explanation
用户T5100309000尝试预订书Java-for-Programmers,运行后发现可预订内部编号为0012083的书,并输出
Output:
当且仅当操作者未登录,或者操作者不具备预约权限,或者操作者当前有罚金,或者已经到达预约上界,或者该本书不可外借时返回reserve-book failed,否则返回reserve-book < index-of-book >
time
get-time
CLI Standard Input
get-time
CLI Standard Output
get-time successful YYYY/MM/DD
Sample Input
get-time
Sample Output
get-time successful 2011/07/24
Explanation
获取当前日期
set-time
CLI Standard Input
set-time YYYY/MM/DD
CLI Standard Output
set-time successful YYYY/MM/DD
Sample Input
set-time YYYY/MM/DD
Sample Output
set-time successful YYYY/MM/DD
query
list-all-users
CLI Standard Input
< name-of-admin > list-all-users
CLI Standard Output
< number > user(s) found
< name-of-user > < type-of-user >
< name-of-user > < type-of-user >
...
CLI Sample Input
admin-012 list-all-users
CLI Sample Output
2 user(s) found
admin-012 ADMIN
T5100309000 READER
...
Explanation
管理员admin-012尝试询问当前系统内所有用户信息,系统查询后输出
排列顺序:第一关键字为读者类型(先管理员后读者,注意TEACHER和STUDENT在这里均被视为READER),第二关键字为用户名(按照字典序)
list-all-books
CLI Standard Input
< name-of-admin > list-all-books
CLI Standard Output
< number > book(s) found
< isbn-of-book > < name-of-book > < authors > < index-of-book > < borrowable? > < user-borrowed > < user-reserved >
< isbn-of-book > < name-of-book > < authors > < index-of-book > < borrowable? > < user-borrowed > < user-reserved >
...
CLI Sample Input
admin-012 list-all-books
CLI Sample Output
1 book(s) found
123-456-921293-7 Java-for-Programmers DEITEL 0012082 true T5100309000 null
...
Explanation
管理员admin-012尝试询问当前系统内所有书籍信息,系统查询后输出
排列顺序:第一关键字为isbn(按照字典序),第二关键字为index(按照字典序)
list-user-borrowed-books
CLI Standard Input
< name-of-admin > list-user-borrowed-books < name-of-user >
CLI Standard Output
< number > book(s) found
< isbn-of-book > < name-of-book > < authors > < index-of-book > < borrowed-date > < deadline-for-return >
< isbn-of-book > < name-of-book > < authors > < index-of-book > < borrowed-date > < deadline-for-return >
...
CLI Sample Input
admin-012 list-user-borrowed-books T5100309000
CLI Sample Output
1 book(s) found
123-456-921293-7 Java-for-Programmers DEITEL 0012082 2011/05/22 2011/06/20
...
Explanation
管理员admin-012尝试询问用书T5100309000当前借书信息,系统查询后输出
排列顺序:第一关键字为isbn(按照字典序),第二关键字为index(按照字典序)
list-user-reserved-books
CLI Standard Input
< name-of-admin > list-user-reserved-books < name-of-user >
CLI Standard Output
< number > book(s) found
< isbn-of-book > < name-of-book > < authors > < index-of-book > < reserved-date >
< isbn-of-book > < name-of-book > < authors > < index-of-book > < reserved-date >
...
CLI Sample Input
admin-012 list-user-reserved-books T5100309000 2011/07/12
CLI Sample Output
0 book(s) found
...
Explanation
管理员admin-012尝试询问用书T5100309000当前预订信息,系统查询后输出
排列顺序:第一关键字为isbn(按照字典序),第二关键字为index(按照字典序)
list-books-by-isbn
CLI Standard Input
list-books-by-isbn < isbn-of-book >
CLI Standard Output
< number > book(s) found
< isbn-of-book > < name-of-book > < authors > < index-of-book > < borrowable? > < borrowed? > < reserved? >
< isbn-of-book > < name-of-book > < authors > < index-of-book > < borrowable? > < borrowed? > < reserved? >
...
Sample Input
list-books-by-isbn 123-456-921293-7
Sample Output
1 book(s) found
123-456-921293-7 Java-for-Programmers DEITEL 0012082 borrowable borrowed not reserved
...
Explanation
按isbn查询图书馆内图书信息,系统查询后输出
排列顺序:第一关键字为isbn(按照字典序),第二关键字为index(按照字典序)
list-books-by-name
CLI Standard Input
list-books-by-name < name-of-book >
CLI Standard Output
< number > book(s) found
< isbn-of-book > < name-of-book > < authors > < index-of-book > < borrowable? > < borrowed? > < reserved? >
< isbn-of-book > < name-of-book > < authors > < index-of-book > < borrowable? > < borrowed? > < reserved? >
...
Sample Input
list-books-by-name hello-word
Sample Output
0 book(s) found
...
Explanation
按name查询图书馆内图书信息,系统查询后输出
排列顺序:第一关键字为isbn(按照字典序),第二关键字为index(按照字典序)
list-books-by-author
CLI Standard Input
list-books-by-author < author >
CLI Standard Output
< number > book(s) found
< isbn-of-book > < name-of-book > < authors > < index-of-book > < borrowable? > < borrowed? > < reserved? >
< isbn-of-book > < name-of-book > < authors > < index-of-book > < borrowable? > < borrowed? > < reserved? >
...
Sample Input
list-books-by-author DEITEL
Sample Output
1 book(s) found
123-456-921293-7 Java-for-Programmers DEITEL 0012082 borrowable borrowed not reserved
...
Explanation
按author查询图书馆内图书信息,系统查询后输出
排列顺序:第一关键字为isbn(按照字典序),第二关键字为index(按照字典序)
list-books-by-index
CLI Standard Input
list-books-by-index < index >
CLI Standard Output
< number > book(s) found
< isbn-of-book > < name-of-book > < authors > < index-of-book > < borrowable? > < borrowed? > < reserved? >
Sample Input
list-books-by-index 0012082
Sample Output
1 book(s) found
123-456-921293-7 Java-for-Programmers DEITEL 0012082 borrowable borrowed not reserved
...
Explanation
按index查询图书馆内图书信息,系统查询后输出(你可以认为这只有一本书)
排列顺序:第一关键字为isbn(按照字典序),第二关键字为index(按照字典序)
Several cases
Case-No-1
-
IN.TXT
set-time 2012/01/01 admin secret login admin create-user admin-012 iammaster ADMIN admin-012 iammonster login admin-012 iammaster login admin-012 list-all-books admin-012 logout admin logout
-
OUT.TXT
set-time successful 2012/01/01 login successful create-user successful login failed login successful 0 book(s) found ... logout successful logout successful
Case-No-2
-
IN.TXT
set-time 2011/12/07 admin secret login admin create-user admin-012 012 ADMIN admin-012 012 login admin create-user T5100309000 000 TEACHER admin create-book 123-456-921293-7 Java-for-Programmers MASTER 0012082 true T5100309000 000 login T5100309000 borrow-book 123-456-921293-7 Java-for-Programmers 0012082 admin-012 remove-user T5100309000 TEACHER T5100309000 return-book 123-456-921293-7 Java-for-Programmers 0012082 admin-012 remove-user T5100309000 TEACHER admin-012 logout admin logout
-
OUT.TXT
set-time successful 2011/12/07 login successful create-user successful login successful create-user successful create-book successful login successful borrow-book successful remove-user failed return-book successful remove-user successful logout successful logout successful