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
    
个人工具