项目名称:LibraryManagementSystem
一、系统目标
使用了Python作为语言,以django为后台,sqlite3作为数据库,UI基于bootstrap的图书管理系统,模拟图书管理的真实场景,考虑客观需求,界面简洁、操作方便,易上手。
二、系统功能
第二部分 系统设计报告
一、系统概念数据库设计
系统E-R图设计:
二、系统逻辑数据库设计
User(用户表)
字段 | 类型 | 空 | 默认 | 注释 |
---|---|---|---|---|
user_id | varchar(20) | 否 | 用户id | |
user_name | varchar(50) | 否 | 姓名 | |
sex | varchar(1) | 否 | 0 | 性别男(0)女(1) |
password | varchar(200) | 否 | 密码 | |
varchar(50) | 否 | 邮箱 | ||
last_visit | datetime | 否 | 最后访问时间(开户时登记开户时间) | |
is_superuser | varchar(1) | 否 | 是否超级用户 | |
is_active | varchar(1) | 否 | 是否活跃 | |
Role | varchar(20) | 否 | 角色 |
PermissionList(权限等级,根据不同的权限访问不同的url)
字段 | 类型 | 空 | 默认 | 注释 |
---|---|---|---|---|
PermissionName | varchar(5) | 否 | 权限名 | |
Url | varchar(50) | 否 | 路径 |
RoleList(角色表,不同的角色拥有不同的permission)
字段 | 类型 | 空 | 默认 | 注释 |
---|---|---|---|---|
RoleName | varchar(20) | 否 | 角色名 | |
PermissionName | varchar(50) | 否 | 权限 | |
uesrname | varchar(50) | 否 | 用户名 |
Book
字段 | 类型 | 空 | 默认 | 注释 |
---|---|---|---|---|
book_id | varchar(20) | 否 | 书籍id | |
book_name | varchar(50) | 否 | 书籍名称 | |
author | varchar(50) | 否 | 作者 | |
press | varchar(50) | 否 | 出版社 | |
publication_year | smallint(6) | 否 | 出版年 | |
introduction | varchar(1000) | 否 | 介绍 | |
add_time | datetime | 否 | 入库时间 | |
category_id | varchar(20) | 否 | 类型 | |
counts | tinyint(4) | 否 | 剩余数量 | |
Inventory | Int | 否 | 入库数量 |
Borrow(借书表)
字段 | 类型 | 空 | 默认 | 注释 |
---|---|---|---|---|
borrow_id | varchar(60) | 否 | user_id+now_time | |
user_id | varchar(20) | 否 | 用户id | |
book_id | varchar(40) | 否 | 书籍id+rank | |
borrow_date | datetime | 否 | 借书时间 | |
return_date | datetime | 是 | 还书时间 | |
term | smallint(6) | 否 | 借期 |
Fine(罚款规则表)
字段 | 类型 | 空 | 默认 | 注释 |
---|---|---|---|---|
fine_id | varchar(20) | 否 | 处罚类别id | |
book_type | varchar(5) | 否 | 书籍等级 | |
price | float precise(2) | 否 | 每天价格 | |
is_delete | varchar(1) | 否 | 0 | 0没有删除 1已经删除 |
Record(记录表,记录用户的操作)
字段 | 类型 | 空 | 默认 | 注释 |
---|---|---|---|---|
Record_id | varchar(20) | 否 | User_id+now_time | |
user_id | varchar(20) | 否 | 用户id | |
record_date | datetime | 否 | 操作时间 | |
record_category | varchar(20) | 否 | 操作 | |
record_introduct | varchar(1000) | 否 | 操作记录 |
- Borrow表的user_id属性设置为外键,该属性参考User表的user_id。
- User表的role属性设置为外键,该属性参考RoleList表的RoleName。
- Borrow表的book_id属性设置为外键,该属性参考Book表的book_id。
- Record表的user_id属性设置为外键,该属性参考User表的user_id。
第三部分 系统使用说明书
一、系统安装
若要在本地运行服务,确保系统装有Python2.7,利用easy_install或pip2.7安装django,south命令行下进入项目目录,
执行:
c
python2.7 ./manage.py syncdb
python2.7 ./manage.py runserver 0.0.0.0:8080
二、系统启动
本地访问:在浏览器输入url:127.0.0.1:8080
三、系统登录
在登录页面输入正确的账号密码
用户名为学号,密码为学号后6位
四、系统菜单
如下图所示:个人管理,系统管理,用户管理和其他4个总项。右上角是登录状态
五、系统设置
无需设置。
六、系统功能
点击左边的菜单栏选择功能
1.书籍入库
系统管理 --> 书籍入库 跳出如下界面
若不按要求输入信息,则会报错
输入信息正确
点击入库,自动跳转 借阅书籍 界面
2. 借书
点击借书按钮,若借书成功,自动跳转个人状态界面
失败的情况(举一例):
3.还书
个人状态界面,点击还书按钮,还书成功,书籍剩余量加一
4.图书管理
系统管理 图书管理
修改
修改不当会报错,以表格的形式呈现(包括后面的用户管理、用户类型,借阅书籍,个人状态、总体记录),
表格功能
1.搜索
在搜索框中输入相应的内容,可以搜索到相关的信息。
如:计算机
填完相应信息后点击确定可提交;
2.滚动条
登录界面时,自动跳转上次记录的地方
3.删除按钮
点击确定后删除,点击表头中的相应字段,可以根据相应字段进行排序;
如根据藏书量排序
在表头:
可以看到总共的记录条数,可以选择每页显示的记录条数,右部可实现分页的跳转(选择页数,上一页,下一页,首页,末页)
以上功能为图书管理、用户管理、用户类型,借阅书籍,个人状态、总体记录通用功能。
5.用户管理
查看用户的相应信息
6.角色管理
新建角色
7.权限管理
新建权限
8.个人记录
可以看到个人相应的借书记录,登录信息,还书记录等
9.总体记录
显示了所有用户的所有记录
10.罚款规则
静态页面
11.系统信息
静态页面
六、 关系模式设计
书籍信息表
Book(
book_id(primary key),
book_name,
author,
press,
publication_year,
introduction,
add_time,
category_id,
inventory
remainNumber)
借书表
Borrow(
borrow_id(primary),
user(foreign_key),
book(foreign_key),
borrow_date,
return_date,
term_day)
记录
record(
record_id,
user(foreign_key),
record_date,
record_category,
record_introduct
)
用户表
User(
user_name(primary key),
sex,
password,
email,
last_visit,
is_active,
is_superuser
nickname,
role
)
用户等级
PermissionList(
name,
url
)
RoleList(
name,
permission
)
第四部分 心得体会
本项目选择了Python作为后台语言,简洁轻量,便于快速开发;
使用了Django作为后台框架,确保了用户登陆系统的稳定性和安全性;
由于Django屏蔽了上层操作数据库的过程,可以任意选择被支持的数据库,为了方便,暂时选择了本地轻量级数据库Sqlite3;
由于项目比较简单,并未完成太多冗余功能,只完成了用户管理,图书管理,借阅书籍等主要功能;