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