数据库作业: 语言 JavaScript,HTML,C++ 数据库: MySQL =================== 数据库表设计 =================== 表前缀: bs_ 用户表(bs_user) 登录账号 varchar 主键 登录密码 varchar (hashed) 昵称 varchar 用户级别 integer (0 超级管理员 1 管理员 2 图书馆借阅处 3 读者) 3级用户必须有对应的用户信息! 账户状态 integer (0 隐藏 1 禁止登陆 2 需要验证才能激活 3 允许登陆) 隐藏状态: 以该登陆账号登陆时会提示账户不存在,但注册时会提示不能不注册 禁止登陆: 以该登陆账号登陆时会提示账户已被禁用 待验证: 刚注册完的用户需要经过验证,登陆时会提示待验证. 验证后状态变为3 允许登陆: 一切正常 级别表(bs_level) 等级 integer 主键 默认最低借阅限额 integer 默认最高借阅限额 integer 默认最低借阅时间 integer 默认最高借阅时间 integer 可接受的最小余额额度 money 读者表(bs_reader) 登录账号 外键到bs_user 姓名 varchar 身份证号 varchar 联系电话 varchar 等级 integer (触发器->升级->改变限额等信息) 外键到bs_level 成长值(经验值) integer (签到送经验值等等) 借阅限额 integer (可以与级别表中的默认值不一致,但升级时会受到影响进而重新评估) 已使用借阅额度 integer 冗余 借阅时间限额 integer (天) 积分 integer (签到,奖励,活动) 余额 money 图书类别表(bs_booktype) 类别名称 varchar 主键 图书表(bs_book) 图书定义序号 integer 主键 (考虑到有些书没有ISBN号) ISBN号 varchar 主键 名称 varchar 类别 外键到bs_booktype 作者 varchar 出版社 varchar 出版日期 date 状态 integer (0 隐藏 1 禁用 2 正常) 隐藏: 不在图书搜索中显示这本书的信息 禁用: 禁止借阅这本书 图书状态表(bs_bookstatus) 图书实体序号 integer 主键 (一本书可能在图书馆里有多本藏书) 图书类别序号 外键到bs_book 位置 varchar (用来提示图书所在位置) 状态 integer (0 借出 1 丢失 2 在馆) 借出: 书籍已借出,可以在bs_borrow中查找到 丢失: 书籍已丢失,且无法从其他表中查找到有关信息.(用于报告丢失) 在馆: 书籍在馆,可以借出 借阅关系表(bs_borrow) 借阅者账号 外键到bs_user 图书实体序号 外键到bs_bookstatus 借阅日期 date 最迟还书日期 date (即使用户在借阅图书后升级,这个日期也不会改动. 此日期是在借阅书籍的时候计算的) 还书日期 date 可以为空 (如果没还书就是null,否则表示书已归还,此条数据留存为历史数据) =================== 特性设计 =================== 5分钟安装(在线安装,类似Wordpress Install) 超级管理员账号 可以修改所有账户的密码,此账户只能有一个,可以添加管理员账号,其他功能同管理员账号 管理员账号 可以修改自己和所有普通用户的密码,添加/修改图书类别表,其他功能同图书馆借阅处账号 图书馆借阅处账号 可以修改自己的密码,添加/修改借阅关系表 =================== 具体设计 =================== 5分钟安装需要的信息: 数据库服务器地址 dbaddr 数据库端口 dbport 数据库账户 dbuser 数据库口令 dbpass 数据库名称 dbname 超级管理员口令 supass (超级管理员账户锁定为root) 新建账号: session 增删改查 : 图书类别,图书,账户 http://booksys.com/api/v1/install POST (install.cpp) POST: dbaddr,dbport,dbuser,dbpass,dbname,supass http://booksys.com/api/v1/search?type=...&name=... GET (search.cpp) GET: type= 0 用户 1 书籍 name= 用户名,书籍名称 typename= 书籍种类名称,仅当type为1时有效 http://booksys.com/api/v1/explore GET GET: 没有参数 http://booksys.com/api/v1/addbook POST (addbook.cpp) POST: (图书定义序号自动生成) isbn bookname booktype author publisher pubdate status 错误: 权限不足,添加失败 http://booksys.com/api/v1/editbook POST (editbook.cpp) POST: book_key (唯一图书定义序号) 以下所有列均为可选: 当任一列存在时将引起数据的修改 isbn bookname booktype author publisher pubdate status 错误: 权限不足,修改失败 http://booksys.com/api/v1/removebook POST (removebook.cpp) POST: book_key (唯一图书定义序号) 错误: 当图书的任一实体处于借出状态时将不能删除图书定义. http://booksys.com/api/v1/addbooktype POST (addbooktype.cpp) POST: booktype 错误: 当新的类型名称发生冲突 http://booksys.com/api/v1/editbooktype POST (editbooktype.cpp) POST: booktype_old booktype_new 错误: 当新的类型名称发生冲突 副作用: 改变图书种类会引起所有与原种类相关图书的信息变更(未实现) http://booksys.com/api/v1/removebooktype POST (removebooktype.cpp) POST: booktype 错误: 当任一图书定义使用此定义时将不能删除图书种类 http://booksys.com/api/v1/join POST (join.cpp) POST: account pass nickname 提示:通过此API注册的用户等级锁定为3. 且注册后账户处于状态2 错误: 账户名称重复时 http://booksys.com/api/v1/enableuser POST (enableuser.cpp) POST: account realname realid realphone 提示:通过此API激活的用户等级必须为3.(更高等级的用户不需要经此激活) 激活后账户状态将自动变更为3. 错误: 内容填充错误或禁止激活. http://booksys.com/api/v1/login POST (login.cpp) POST: account pass 提示:通过此API可登陆的用户等级为0,1,2,3,账户状态为3才能登陆成功,账户状态为2时返回提示信息前往激活,账户状态为1时返回禁止登陆,账户状态为0时返回需要联系管理员激活信息. 错误: 账户或密码错误(包括账户错误) 返回: 当登陆成功时绑定User到Session. http://booksys.com/api/v1/logout GET/POST (logout.cpp) 提示:退出登陆. 会立刻注销Session. http://booksys.com/api/v1/addbookobject POST (addbookobject.cpp) POST: class_id 图书定义序号 book_id 图书实体序号(可选,当有此参数时将尝试以此参数新建书籍) position 藏书位置 status 图书状态 错误: 权限不足 图书实体序号冲突 http://booksys.com/api/v1/editbookobject POST POST: book_id_old 旧图书实体序号 book_id_new 新图书实体序号 (可选) position_new 新藏书位置 (可选) status 图书新状态 错误: 权限不足 图书实体不存在 图书实体序号冲突 http://booksys.com/api/v1/removebookobject POST POST: book_id 图书实体序号 错误: 权限不足 图书实体序号不存在 图书已借出,不能删除实体 http://booksys.com/api/v1/borrowbook POST POST: account 借阅者账户 book_id 图书实体序号 错误: 权限不足(此API只能由图书管理员以上(等级<=2)调用) 图书不可借阅 实体不存在 http://booksys.com/api/v1/returnbook POST POST: book_id 图书实体序号 错误: 图书状态不允许还书(未借出等等) 实体不存在 http://booksys.com/api/v1/blockuser POST (blockuser.cpp) POST: account 被操作用户 提示: 本操作将修改用户的状态为1(禁止登陆) 错误: 权限不足. 只有级别<=1的用户可以使用本API. 其中管理员只能修改自己和等级>=2的用户. 超级管理员可以修改全部账户. http://booksys.com/api/v1/allowuser POST (allowuser.cpp) POST: account 被操作用户 提示: 本操作将修改用户的状态为3(正常). 注意: 若用户尚未完成身份验证,将忽视身份验证步骤. 错误: 权限不足. 只有级别<=1的用户可以使用本API.其中管理员只能修改自己和等级>=2的用户. 超级管理员可以修改全部账户. http://booksys.com/api/v1/dashboard GET GET: 无参数 返回: 返回关于当前用户的全部信息. (Session关联) 错误: 未登录 http://booksys.com/api/v1/adminsearch POST POST: 提示: 管理员专用搜索 错误: 权限不足. 只有管理员<=1能使用本API http://booksys.com/api/v1/advancedsearch POST POST: 提示: 错误: 权限不足,只有<=2的用户能使用本API