图书管理系统的介绍!!
将系统的整体功能按照人员分为4个部分,分别是学生功能、系统管理员、学生管理员和图书管理员等模块。将会按照这四个部分进行介绍。
功能编号 | 功能 |
---|---|
1 | 用户登录 |
2 | 借阅图书 |
3 | 归还图书 |
4 | 续借图书 |
5 | 预约图书 |
6 | 查看借阅信息 |
7 | 图书评论 |
8 | 查看借阅排行 |
9 | 修改用户密码 |
10 | 浏览图书 |
11 | 查找图书 |
功能编号 | 功能 |
---|---|
1 | 用户登录 |
2 | 添加管理员 |
3 | 修改管理员属性 |
4 | 删除管理员 |
5 | 修改用户密码 |
功能编号 | 功能 |
---|---|
1 | 用户登录 |
2 | 添加学生信息 |
3 | 维护指定学生信息 |
4 | 批量删除学生 |
5 | 批量导入学生信息 |
6 | 修改用户密码 |
功能编号 | 功能 |
---|---|
1 | 用户登录 |
2 | 维护指定书籍信息 |
3 | 批量导入书籍信息 |
4 | 修改用户密码 |
字段名 | Type | PK |
---|---|---|
学号 studNo | str | * |
姓名 studName | str | |
专业 major | str | |
班级 classNum | str | |
手机号 phoneNum | str | |
密码 passwd | str |
字段名 | Type | PK |
---|---|---|
书号 bookNum | str | * |
书名 bookName | str | |
作者 author | str | |
出版社 publisher | str | |
总数 bookCnt | int | |
借阅数量 borrowCnt | int | |
发布时间 pubTime | date | |
书籍评论 comment | str |
字段名 | 类型 | PK |
---|---|---|
借阅信息号 infoId | str | * |
学生学号 studNo | str | |
书籍书号 bookNo | str | |
借阅时间 borrowTime | date | |
预计归还时间 finishTime | date |
字段名 | 类型 | PK |
---|---|---|
预订信息号 infoId | str | * |
学生学号 studNo | str | |
书籍书号 bookNo | str | |
预订时间 borrowTime | date |
字段 | 类型 | PK |
---|---|---|
管理员号 managerId | str | * |
姓名 name | str | |
手机号 phone | str | |
密码 passwd | str | |
管理员类型 managerType | str |
BookList: 对数据库中的书籍表的操作类 StudentList:对数据库中的学生表的各种操作的实现类 InformList:信息类的接口 SubInformList:继承自信息类,对数据库中预约信息表的操纵的接口 BorrowInformList:继承自信息类,对数据库中借阅信息表的操纵的接口 ManagerList:对数据库中管理员信息表进行操作的接口
StudentService:包含了学生可以使用所有的功能接口
StuManagerService:包含了学生管理员可以使用的功能接口
BookManagerService:包含了图书管理员可以使用的功能接口
AdminManagerService:包含了系统管理员可以使用的功能接口
用例编号 | 用例名 | 对应用户 | 备注 |
---|---|---|---|
US 01 | 登录系统 | 学生、系统管理员、学生管理员、图书管理员 | 进入图书管理系统 |
US 02 | 借阅图书 | 学生 | |
US 03 | 归还图书 | 学生 | 学生登录图书管理系统 |
US 04 | 续借图书 | 学生 | 学生登录图书管理系统 |
用例描述据举例:
-
用例编号:US 02
用例名称:借阅图书
参与者:学生
入口条件:以学生身份登录图书管理系统
事件流:
- 通常情况:
-
- 输入借阅图书的书号等信息
-
- 在图书系统中查找相应的图书
-
- 查看图书的借阅情况
-
- 借阅成功
-
- 例外情况:
- 2.1 图书不存在,重新输入图书信息
- 2.2 图书已经借完,推荐进入预约图书
出口条件:图书借阅成功或者失败
- 通常情况:
-
用例编号: 添加学生信息
用例名称:添加学生信息
参与者:学生管理员
入口条件:以学生管理员身份登录管理系统
事件流:
- 通常情况:
-
- 输入学生信息
-
- 添加学生
-
- 异常情况:
- 1.1 学生信息缺失,提示补全信息
- 2.1 学生存在,添加失败
出口条件:学生信息添加成功或者失败
- 通常情况:
-
图书借阅功能:
结语成功的条件:1. 学生存在 2. 书籍存在,而且书籍存在可借 3. 在借阅过程中会查看是否曾经借阅过这本书。其功能实现如图所示:
-
图书借阅功能:
具体代码实现如下所示:
def borrowBook(self, stuno, bookno): """ 图书借阅功能 :param stuno: 借阅学生的学号 :param bookno: 借阅的书号 :return:@see$Error.NoneBook : 没有这本书的借阅信息 @see$Error.BookCnt0: 书籍已经借空,不能借阅 @see$Error.FinishBorrow : 借阅成功 """ book = self.booklist.getBookByNo(bookno) if book is Error.NoneBook: return Error.NoneBook if self.borrowlist.getInformByStudNoBookNo(stuno, bookno) is Error.NoBorrowInform: if book.getBookCnt() == book.getBorrowCnt(): return Error.BookCnt0 self.borrowlist.addInformByNos(stuno, bookno) self.booklist.updateBorrowAndCnt(bookno, book.getBorrowCnt()+1) return Success.FinishBorrow return Error.ExitBorrowInform
-
归还书籍
def returnBookWithComment(self, stuno, bookno, comment=None): """ 归还书籍 :param stuno: 归还学生的学号 :param bookno: 归还学生的书号 :param comment: 归还时给予的评价 :return: @see$Error.NoneBook : 没有这本书的借阅信息 @see$Error.BookCnt0: 书籍已经借空,不能借阅 @see$Error.FinishReturn: 归还书籍成功 """ book = self.booklist.getBookByNo(bookno) # 查看书籍是否存在 if book is Error.NoneBook: return Error.NoneBook book = self.booklist.getBookByNo(bookno) # 删除借阅记录 self.borrowlist.deleteInform(stuno, bookno) # 评价内容 if comment is not None: # 如果没有给评价 self.booklist.setComment(book.getBookNo(), comment) return Success.FinishReturn
-
续借书籍
def renewBook(self, stuno, bookno): """ 续借单本书籍 :param stuno: 学号 :param bookno: 书号 :return: @see$Error.NoneBook : 没有这本书 @see$Error.FinishRenew: 续借成功 @see$Error.NoBorrowInform: 没有这条借阅信息 """ book = self.booklist.getBookByNo(bookno) if book == Error.NoneBook: return Error.NoneBook list = self.borrowlist.getInformByStudNoBookNo(stuno, bookno) # 如果借阅信息存在 if list != Error.NoBorrowInform: borrow = list.pop(0) self.borrowlist.addInformLast(borrow) return Success.FinishRenew return Error.NoBorrowInform
-
关于数据库调用接口的设计
数据库查询操作使用的是字段形式,将语句进行了拆分,增加了代码的复用。
-
加入了抽象工厂
使用抽象工厂,负责产生特定的管理员,进行管理员id的生成
-
将实体类、数据库操作类和功能实现类,分成了三个不同的层次