基于Python+sqlite3实现(Web)图书管理系统

项目名称:LibraryManagementSystem

一、系统目标

使用了Python作为语言,以django为后台,sqlite3作为数据库,UI基于bootstrap的图书管理系统,模拟图书管理的真实场景,考虑客观需求,界面简洁、操作方便,易上手。

二、系统功能

第二部分 系统设计报告

一、系统概念数据库设计

系统E-R图设计:

二、系统逻辑数据库设计

User(用户表)

字段类型默认注释
user_idvarchar(20)用户id
user_namevarchar(50)姓名
sexvarchar(1)0性别男(0)女(1)
passwordvarchar(200)密码
emailvarchar(50)邮箱
last_visitdatetime最后访问时间(开户时登记开户时间)
is_superuservarchar(1)是否超级用户
is_activevarchar(1)是否活跃
Rolevarchar(20)角色

PermissionList(权限等级,根据不同的权限访问不同的url)

字段类型默认注释
PermissionNamevarchar(5)权限名
Urlvarchar(50)路径

RoleList(角色表,不同的角色拥有不同的permission)

字段类型默认注释
RoleNamevarchar(20)角色名
PermissionNamevarchar(50)权限
uesrnamevarchar(50)用户名

Book

字段类型默认注释
book_idvarchar(20)书籍id
book_namevarchar(50)书籍名称
authorvarchar(50)作者
pressvarchar(50)出版社
publication_yearsmallint(6)出版年
introductionvarchar(1000)介绍
add_timedatetime入库时间
category_idvarchar(20)类型
countstinyint(4)剩余数量
InventoryInt入库数量

Borrow(借书表)

字段类型默认注释
borrow_idvarchar(60)user_id+now_time
user_idvarchar(20)用户id
book_idvarchar(40)书籍id+rank
borrow_datedatetime借书时间
return_datedatetime还书时间
termsmallint(6)借期

Fine(罚款规则表)

字段类型默认注释
fine_idvarchar(20)处罚类别id
book_typevarchar(5)书籍等级
pricefloat precise(2)每天价格
is_deletevarchar(1)00没有删除
1已经删除

Record(记录表,记录用户的操作)

字段类型默认注释
Record_idvarchar(20)User_id+now_time
user_idvarchar(20)用户id
record_datedatetime操作时间
record_categoryvarchar(20)操作
record_introductvarchar(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命令行下进入项目目录,

执行:

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;

由于项目比较简单,并未完成太多冗余功能,只完成了用户管理,图书管理,借阅书籍等主要功能;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/889876.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android Studio实现安卓图书管理系统

获取源码请点击文章末尾QQ名片联系,源码不免费,尊重创作,尊重劳动 171安卓小说 1.开发环境 android stuido3.6 jak1.8 2.功能介绍 安卓端: 1.注册登录 2.图书列表 3.图书借阅 4.借阅列表 3.系统截图

Go编译为可执行文件

在window下打包成其他系统可运行的文件 1.在window下打包成window下可执行文件 在项目main.go同级目录下,逐条执行以下命令 set CGO_ENABLED0 set GOOSwindows set GOARCHamd64 go build -o main-windows.exe main.go 2.在window下打包成linux 在项目main.go同级目…

appium中的uiautomatorviewer显示的界面为横屏解决方法

uiautomatorviewer显示的界面为横屏解决方法 解决方法: 修改模拟器的分辨率,比如540:900就可解决了

鸿蒙NEXT开发-面试题库(最新)

注意:博主有个鸿蒙专栏,里面从上到下有关于鸿蒙next的教学文档,大家感兴趣可以学习下 如果大家觉得博主文章写的好的话,可以点下关注,博主会一直更新鸿蒙next相关知识 专栏地址: https://blog.csdn.net/qq_56760790/…

智能化叉车作业安全高效监控管理系统方案

在物流作业中,智能叉车管理系统的引入,不仅极大地提升了作业效率,还显著增强了作业安全性,为物流行业的现代化转型注入了强劲动力。 1、产品简介 2023A智能叉车管理系统是用于工业车辆安全监控管理的车载终端,具有快…

【数据结构与算法】线性表顺序存储结构

文章目录 一.顺序表的存储结构定义1.1定义1.2 图示1.3结构代码*C语言的内存动态分配 二.顺序表基本运算*参数传递2.1建立2.2初始化(InitList(&L))2.3销毁(DestroyList(&L))2.4判断线性表是否为空表(ListEmpty(L))2.5求线性表的长度(ListLength(L))2.6输出线性表(DispLi…

根据请求错误的状态码判断代理配置问题

SafeLine,中文名 “雷池”,是一款简单好用, 效果突出的 Web 应用防火墙(WAF),可以保护 Web 服务不受黑客攻击。 雷池通过过滤和监控 Web 应用与互联网之间的 HTTP 流量来保护 Web 服务。可以保护 Web 服务免受 SQL 注入、XSS、 代码注入、命…

如何高效撰写和发表SCI论文

第一章、论文写作准备即为最关键 1、科技论文写作前期的重要性及其分类 2、AI工具如何助力学术论文 3、研究主题确定及提高创新性 兴趣与背景:选择一个您感兴趣且有背景知识的研究领域。 创新性:选题和研究设计阶段如何提高学术创新性的方法。 研究缺…

yolov5-7.0模型DNN加载函数及参数详解(重要)

yolov5-7.0模型DNN加载函数及参数详解(重要) 引言yolov5(v7.0)1,yolov5.h(加载对应模型里面的相关参数要更改)2,main主程序(1)加载网络(2)检测推理&#xff0…

QD1-P2 HTML 编辑器:HBuilderX

本节学习: HTML课程内容介绍HBuilderX编辑器的使用 本节视频 www.bilibili.com/video/BV1n64y1U7oj?p2 HTML 内容 基础语法 标签整体架构DOCTYPE 常用标签 标题和水平线段落和换行列表div 和 span格式化标签图片超链接标签表格表单字符实体 编辑器 HBuilder…

解决pyinstaller 打包 ddddocr 库方法

前言 ddddocr 库 在打包成 exe 文件后一直有各种各样的问题。无法运行。 总是提示缺少 onnxruntime_providers_shared.dll 等问题。例如下图: 所以这里总结一下打包解决方法。 方法 1、 第一步,先使用命令打包一次 pyinstaller -F demo.py -p D:\Python38\Lib\site-pac…

登录注册静态网页实现(HTML,CSS)

实现效果图 实现效果 使用HTML编写页面结构,CSS美化界面,点击注册,跳转到注册界面,均为静态网页,是课上的一个小作业~ 使用正则表达式对输入进行验证,包括邮箱格式验证,用户名格式验证。 正则…

【Java】类型转换与类型提升

目录 1.类型转换 1.1自动类型转换(隐式) 1.2强制类型转化(显式) 2.类型提升 3.字符串类型 1.类型转换 Java作为一个强类型编程语言,当不同类型之间的变量相互赋值的时候,会有教严格的校验. 在Java中,当参与运算数…

【C++】——继承(下)

【C】——继承(下) 5 继承与友元6 继承与静态成员7 多继承7.1 继承模型7.2 菱形继承的问题7.3 虚继承7.4 多继承中的指针偏移问题 8 组合与继承 5 继承与友元 友元关系不能被继承。即一个函数是父类的友元函数,但不是子类的友元函数。也就是说…

组合模式详解

1、组合模式基本介绍 1) 组合模式(Composite Pattern),又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以 表示“整体-部分”的层次关系。 2) 组合模式依据树形结构来组合对象,用来表示部…

UE5 武器IK瞄准系统

创建空项目 创建基础蓝图类My_GameMode,My_HUD,My_PlayChar,My_PlayController 项目设置地图模式 近裁平面 0.1 My_PlayChar蓝图中添加摄像机,角色骨骼网格体,武器骨骼网格体 编辑角色骨骼,预览控制器使用…

动静态IP地址多方面对比分析

“静态IP地址”和“动态IP地址”是互联网通信基础中的重要概念,两者作为IP地址分配的两种基本机制,各自适应不同的应用场景和需求。 我们可以从定义、地址分配机制、网络管理和运维、服务与应用兼容性等角度来分析有什么不同。 首先是定义。 从概念上来…

快速入门Tomcat服务(业务发布基础技能)

文章目录 1 Tomcat简介 2 安装tomcat 2.1 安装jdk 2.2 安装Tomcat 3 Tomcat目录结构 4 Tomcat重要配置文件 1 Tomcat简介 Tomcat是Sun公司官方推荐的Servlet和JSP容器,在中小型系统和并发访问用户不是很多的场合下,其作为轻量级应用服务…

解决无法安装“vue.volar“扩展,跟vscode版本不兼容问题

问题:安装volar插件的时候提示跟vscode版本不兼容 解决方案 1、进入VSCode插件市场,搜索Vue.volar(直达链接:volar下载界面) 2、点击download Extension(下载插件) 3、下载.vsix文件完成后&a…

Axure PR 9 开关切换 设计交互

大家好,我是大明同学。 这期内容,我们来探讨Axure开关按钮设计与交互技巧​。 创建切换开关所需的元件 1.打开一个新的 RP 文件并在画布上打开 Page 1。 2.将“圆形”元件拖到画布上,在样式窗格中将高度和宽度设置为35,线段宽度…