基于python图书馆管理系统设计实例详解
作者:沙漏在下雨 发布时间:2023-06-28 23:44:13
写完这个项目后,导师说这个你完全可以当作毕业项目使用了,写的很全,很多的都设计考虑周全,但我的脚步绝不止于现在,我想要的是星辰大海!与君共勉!
这个项目不是我的作业, 只是无意中被拉进来了,然后就承担了所有,肝了一周多,终于完成,但这个也算是一个很大的项目了吧,对于我现在来说,写这个项目遇到了很多困难,这是真的,其中涉及到数据库的使用,就遇到了一点瓶颈, 但这不算什么,还是要被我搞定的。
梦想就像这个远处夕阳,终究触手可及!
Python项目:
项目前提:
这个项目涉及到的知识点有很多, 知识串联起来就会显得复杂,但这也是锻炼自己的一个能力。 下面先描述这个项目的大致结构。
成品图
架构图
数据库图
思维导图
项目感想:
画这个思维导图的时候,我想了很久,是不是所有功能都需要去实现,我们把这个项目的入口分别学生端和教师端, 那是否就有对应的存储数据的模块呢, 于是我想到了使用数据库, 使用数据库去建立对应的表,然后不就可以分别保存了吗,而在这个项目中, 界面的选择也是很关键, 如果不适用界面,还是使用一个原生代码交互式, 那么这个项目的挑战性就很不人性化,也不友好, 这个我还是选择了tkinter库, 简单上手, 用来设计简单的界面最好不过了, 然后就是关于 程序的框架 如何去设计, 这个没有现存的框架去套用, 所以我使用了面对对象的思维去阐述,毕竟老师和学生都有很多相同点, 在这里使用函数的继承和多态最好不过了,然后连接到数据库,这个数据库我是用MySQL去搭建的, 其他的数据库也是一样的道理,其他的也就顺手写完了。整体来说, 这个项目提升还有很大,只不过我现在能力不足, 也快考试了,没这么多时间去搞,生活还得向前走,加油!
因为这个项目代码太多了, 在这里就不分享出来,有需要的可以私聊找我!
如果觉得文章很长,可以根据目录进行跳转阅读! 也可以收藏关注点击,谢谢。
项目框架:
在__init__函数中:
这是一个构造函数, 在这里单独的拿出来,就是方便程序的运行,也方便打印一些help信息。 在下面这些代码中, 导入了很多模块,对的, 这些不是第三方库哦, 这是我自己编写的类函数,在下面的实例中,你们也可以看到,使用这样的方便,在编写代码的时候可以方便很多,你们一定要用!
# # -*- coding : utf-8 -*-
# @Time : 2020/7/1 21:29
# @author : 沙漏在下雨
# @Software : PyCharm
# @CSDN : https://me.csdn.net/qq_45906219
from TeacherLogin import TeacherLogin
from StudentLogin import StudentLogin
from mysql_login import Mysql
from Login import Login
text = """
author: 沙漏在下雨
time: 七月计划
尝试使用python 搭建一个 图书馆管理系统
使用tkinter作为简易的GUI界面
功能上满足日常所需
数据保存在本地数据库中
"""
print(text)
print(help(StudentLogin))
print(help(TeacherLogin))
print(help(Mysql))
print(help(Login))
Login()
Login登入模块:
讲道理,我应该先阐述一 * 册的, 不然都没有账号,怎么点击登入。但是因为我把主要模块写在了login中了, 看下面的图:
这里登入方式有二种, 注册方式也有二种, 分别是管理员和学生,在login模块中, 设置了一个注册按钮, 点击注册按钮, 整个界面就会跳转到注册界面中, 这个稍后再说, 所以整体构架还是存放到login中, 我觉得会很方便一点, 主要是便于传root 和 password 中。
我们先看看login模块的大致函数,然后细讲:
整个__init__ 中, 是生成这个界面的函数, 包括一些必要的值,也构造在其中, 然后根据用户输入的账号密码, 进行身份的验证, 这个模块写到test_db() 中, 如果账号正确, 那么就进入对应的模块中, 不对,那么就会有错误弹窗警告,比如这个,或者其他的。
怎么进行身份的验证呢 ? 这个其实也很简单, 连接到数据库之后,就向数据库执行检索命令, 根据账号进行初步查找, 然后如果账号密码都正确的话, 那不就是身份正常了吗, 所以思路正确。
登入成功之后, 就会对数据库进行表单的更新, 我把这个功能写在了update中, 会更新最后登入时间, 时间的获取我写在了get_time中, 这样就能简单的实现, 一个登入模块的设置了。
数据库中:
我觉得还是有必要先讲一下数据库, 了解一下数据库的大致构造, 不然你们看的很晕,我也不好讲这些。
我建立了一个数据库 book , 里面新建了三个表单, student, teacher, books,分别学生,老师, 图书表, 互不干扰,相互工作。
在student:
表的大致构造如上, 其实也就是简单的信息, 复杂的我暂时也做不了, 然后teacher 表单 信息 其实和 students 是一样的, 只不过这样设计, 可以封开, 更好管理!
在books中;
books字段的设计,其实也不是很难, 把一些基本信息加入就可以了,然后这个books中, 我写了一个小爬虫, 把表单信息补充了一下, 先充实一下,方便接下来的操作。
然后我们讲一下这个模块中, 这是一个连接数据库的一个父类,这就很方便其他的类进行继承, 或者重写操作, 所以,这个类的实现是十分简单的,也就是进行数据库的连接, 关闭, 获得数据库的游标 和 db值, 让其他类去继承这些, 就可以进行数据库的简单操作了,。
然后我们看看如何注册账号,
Register注册模块:
差点我就忘记注册这个模块的设计了, 最开始的账号是我自己直接在数据库中填入的,我说怎么感觉少了很多来着, 后面急急忙忙的补上去。
注册GUI:
注册分为二种注册, 一个管理员, 一个学生, 在登入的界面进行选择,然后注册的界面也会发生相对于的变化。
变化就是 把 这个管理员注册 改成 学生注册 哈哈哈哈哈哈
注册的时候,也会进行数据的检测, 比如账号是否被注册咯, 密码是不是过于简单之类的, 先给出注册的函数吧
我们在输入框中输入的信息,会通过init函数进行传值, 所有的都会成为本地变量, 在start_reg中 会进行信息检测, 然后给出一些错误弹窗,比如这样:
然后你就要重新思考一个帅气的名字, 就可以方便你的注册了,当所有的正常之后,就会运行reg_people 函数, 进行表单的提交,实际上就是更新数据库, 更新对应的数据库, 如果是学生注册就更新student 反之更新teacher表,这样就完成了注册模块。 然后就可以很简单的登入了, 在这里给一下爬虫程序先
爬虫程序:
这个代码就不解释了,需要私聊
学生界面 students:
我们选择学生登入, 正确输入, 就会跳转至学生界面:
界面GUI
登入之后,显示这样的界面, 虽然有点丑,,没事,。
函数大致:
基本上的功能都能实现,也有对应的异常处理方式, 以及弹窗提示, 换句话说, 你想得到的东西,在这里都能实现, 需要就私聊吧,写着太累了,一个个描诉。
管理员界面teacher:
不同于学生界面, 管理员界面的功能更加复杂,不, 更加丰富,界面:
界面就是这样的,tk界面外观勉勉强强, 还行吧。
函数功能也是一样的,你想的我都能实现,还是一句话,没有你们想不到的,只有我老八做不到的,奥里给,肝了。
后记:
一个多礼拜, 千行代码, 肝了兄弟们, 需要的私聊我, 还是个学生,你懂的。
来源:https://blog.csdn.net/qq_45906219/article/details/107286924


猜你喜欢
- 在SQL Server数据库中如何查看一个登录名(login)的具体权限呢,如果使用SSMS的UI界面查看登录名的具体权限的话,用户数据库非
- 这里推荐使用OTK脚本安装Oracle,会大大提高安装Oracle的成功系数。DescriptionoraToolKit is the Sw
- 前言:整型是MySQL中最常用的字段类型之一,通常用于存储整数,其中int是整型中最常用的,对于int类型你是否真正了解呢?本文会带你熟悉i
- compose函数compose函数可以将需要嵌套执行的函数平铺,嵌套执行就是一个函数的返回值将作为另一个函数的参数。我们考虑一个简单的需求
- 很多网站现在都有使用QQ作为在线客服工具,我们点击它可以很方便的和网站人员联系,本站为你整理了在网站上使用QQ在线客服的代码,共13种风格,
- 为了更直观的了解prometheus如何工作,本文使用prometheus的python库来做一些相应的测试。python库的github地
- 1、最简单的调用方式 直接写到html的body标签里面,如: <html> <body onload="fun
- 前言本文主要给大家介绍了关于Python3用SMTP协议发送电子邮件的相关内容,在介绍如何使用python程序向指定邮箱发送邮件之前,我们需
- 建造者模式:将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。基本思想某类产品的构建由很多复杂组件组成;这些组件中的
- github是一个项目的存储仓库,使用的时候非常的方便,下面就介绍一下管理 github 仓库的软件安装,windows 下的 git 安装
- <div> <table width="320" cellpadding="0"
- v-model 最好用的就是配合 data 達成 Two-way Binding,但若使用 Vuex 之後,是否還能使用 v-model 搭
- 均方损失函数:这里 loss, x, y 的维度是一样的,可以是向量或者矩阵,i 是下标。很多的 loss 函数都有 size_averag
- 本文实例讲述了centos6使用docker部署redis主从数据库操作。分享给大家供大家参考,具体如下:目录结构:/redis
- 前2天群里发了张git历史图,如下:根据提交历史,可以看出图中所有分支合并都采用merge的方式,具体merge是怎么操作的,可以阅读下边文
- Ø 基本常用查询 --select select * from student; --all 查询所有 select
- 前言&最近因为一些原因,没有更博客,昨天老师布置了一个作业,用vue实现增删改查功能,想想这也不难,就做一下试试吧。因为自己写的样式
- 本文实例为大家分享了python正则实现计算器功能的具体代码,供大家参考,具体内容如下# -*- coding: utf-8 -*- # A
- 新版的path 虽然 取代了 之前的url,但是在写路由的时候不能在路由中直接写正则表达式,不然会找不到页面。解决方法使用re_pathfr
- 问题在做web端ui层自动化的时候会碰到文件上传的操作,经常有朋友问到,这里总结一下解决方案第一种:type=file的上传文件,类似如下的