User Class

用户类

User

  • User为虚基类,作为该project用户类的基础。每个用户对象需要有特定的用户名和密码,注意用户名不可重复。

Admin

  • Admin为管理员,管理员有一组特定的操作权限,比如说搜索读者,增添/删除一本书等等。

Reader

  • 读者,即用户。读者分为两种,教师和学生,教师的权限比学生大(比如说教师的借书上限大于学生)。需要注意的是,读者类是一个需类,我们在使用的时候,经常写成如下格式:

    Reader *reader = new Student();

  • 和管理员相似,读者也有一组特定的操作权限,包括借书,还书,预约,续借以及返回当前罚金等等。罚金是这样计算的,超期未还需要计算罚金,每本书每超期一天则罚金数加一。

Student

  • 该project规定,学生不能预约图书馆的图书,所以在调用

    Book* Student::reserve() 始终返回一个空指针。

Teacher

  • 预约书是教师的特别权限,但是这里需要说明一下:
1. 一本书被某位读者预约后,在预约期内不得再次被预约
2. 一本书在被借出(不再图书馆书架上)仍然可以被读者成功预约,这里的操作机制是,当该本书被还后,预约者即可借阅。
3. 预约期满后,预约这自动丧失借阅这本书的特权。
4. 对于符合条件的一系列书,该系统会随机选取一本作为读者所预约的那本书。
5. 预约遵循这样的优先级,即优先选取未被借出的图书,再考虑已经被借出的图书。
个人工具