Python简单实现图书管理系统

本文章为作者实训内容:简单的图书管理系统

目录

  • 需求分析
  1. 项目背景
  2. 项目认识
  3. 项目简介
  4. 管理系统

  • 数据库设计

1.数据库需求分析

2.流程图

3.E-R图

  • 系统设计

系统涉及的简要分析

  1. labrary_system系统
  2. Labrary_books系统

涉及文件:

(1)学生、老师名单  stu_table.csv

(2)图书借阅信息  save_data.txt

(3)图书信息 book_table.csv

  • 实现代码

(1)整个项目布局,架构

(2)各个模块的核心实现方法

  • 总结

(1)评估系统   

(2)个人体会


 

图书管理系统

  • 需求分析

1.项目背景

随着计算机网络技术的迅猛发展,互联网技术的应用已经深入到人们生活的各行各业中,而当今社会信息化、系统化、网络化前进的步伐使得软件信息系统的作用越来越重要。信息化管理方式正在用其独特的方式影响着人们的生活、学习、交流等方面,同时也影响着人们思维的方式,这些影响对于人们的传统观念带来了巨大的冲击,其中图书一直是获取信息的最好方式。

  1. 项目认识

陈旧的图书馆不够现代化,为了迎接信息数据化的今天,开发一个系统化的图书信息管理方式,使图书馆的管理简单化、便捷化,通过Python开发一个图书管理系统,从而实现图书馆的网络化、信息化,使得图书的查阅和借阅变得更加快捷、方便,有效提高图书馆的工作效率,同时也方便图书管理员对读者的信息进行管理。

  1. 项目简介

本项目是由我们已经学习的python、数据库基础知识简单开发一个图书管理系统。根据需求,我开发了两套系统,第一套系统:通过mysql数据库管理系统的连接交互对图书信息(图书编号、图书书名、图书价格)进行管理(增、删、改、查等);第二套系统:针对用户(学生、老师)实现借书、还书、查书、提醒还书等功能,以及相关文件的保存,数据的导出。

                                                                                                    

  1. 管理系统

1、以实际的图书管理系统作为参考,利用Python和数据库知识实现大致功能,功能如下

(1)图书管理,增加、删除、修改、查询

  1. 读者管理、导入学生名单、导入教师名单、名单查看;
  2. 借入借出管理;
  3. 超期和临期查询及数据导出;

(5)借书模拟数据生成;

2、设计两套系统,一套作为图书管理员对图书进行管理控制;另一套作为图书管理员对于借阅人员(学生、老师)进行管理实施。

(1)labrary_books系统

(2)labrary_system系统

3、交互页面设计

    交互页面采用传统的菜单页面。

数据库设计

1.数据库需求分析

图书管理系统有两类用户分别为管理员、读者,其中读者分为教师和学生。管理员通过认证后进入系统,管理员可以完成维护系统的功能,包括管理图书和管理读者。读者则可以查询图书、修改个人资料、查询个人借阅信息、归还图书的功能,完成后可以退出系统。

2.数据库概念设计

确立外部实体:图书管理员、学生、教师、管理员确立实体之间的联系、以及实体各自的属性。

 流程图:

  1.  R图:

  • 系统设计

Labrary_system系统:

  1. 增删改查模块
  1. 主要思路:将借阅人员的图书信息通过字典存储具体对应:含姓名、图书编号、图书名、图书价格、借阅日期、借阅时间六个字段。

  1. 利用一个全局变量(类型为列表)保存所有的信息,申明全局变量,并每个函数采用for循环遍历该列表找到对应的借阅人员,根据设置的条件进行增删改查操作。

  1. 查看学生老师名单模块
  1. 通过第三方库numpy导入学生老师名单。

  1. 设定功能序号,当执行此功能时,打印显示该借阅成员信息。

  1. 超期和临期查询及数据导出模块
  1. 超期和临期查询分别开发了两个功能:一个负责显示并导出当前借阅人员的借阅信息;另一个负责提醒读者距离最迟还书的最迟时间和距离天数。

  1. 还书天数的计算处理:因为借阅信息利用文件的读写进行加载保存,显然可以利用datetime模块自动获取借阅时的日期信息,根据借阅人员借阅的月数来求得最迟的归还日期;利用公式:还书天数等于最迟日期减去开始日期来确立还书天数。

  1. 导出数据部分:利用第三方库pandas将数据(列表类型)转换成DateFrame二维数组,最后以csv文件格式导出。

Labrary_books系统:

  1. 图书的增删改查模块
  1. 图书信息分为三个字段:包含图书编号、图书名、图书价格。

  1. 与labrary_system类似,利用一个全局变量(类型为列表),保存图书信息(每一条由字典进行存储),方便联动文件读取与其他文件导出。

  1. 利用for循环遍历字典里的图书编号(唯一字段),根据相关要求条件进行增删改查操作。

  1. 导出图书信息连接数据库管理模块
  1. 根据第三方库pandas将列表转换为DateFrame以csv文件格式导出。

  1. 导入第三方库pymysql根据要求信息连接本机数据库,利用游标对象执行相应的sql语句,形成python与数据库的一个联动等效操作。

四.实现代码

(1)整个项目布局,架构:

数据存储问题:核心在于创建了一个全局变量,方便在函数里面进行操作,解决了传参的问题,优化了代码,使其变得简单可行。定义一个列表(全局变量),利用字典接收用户的图书信息,利用列表追加数据,由文件写入保存到文件夹,接着通过pandas第三方库导出到本地,最后通过navicat可视化mysql系统软件导入到数据库,实现数据的存储。

                                                                                 

(2)各个模块的核心实现方法:

Labrary_system系统:

菜单函数模块:

用于显示内容,利用简单的print输出函数。                                               

​ 

流程控制模块:

首先异常处理加载文件信息的问题:加载数据的时候可能该文件里没有数据,为了防止报错则可以通过这种异常处理的方式解决。如果该文件没有数据就会执行except下的代码在下面写pass占位符,补充:else:下的代码是检测可能出现错误的语句正确时要执行的,finally下的代码是不管有没有错误都会执行的。

其次利用无限循环,实现用户实现功能的多样性,每次操作成功后返回菜单,给用户带来更好地使用感受。

最后利用分支语句,分功能(包括添加用户图书信息、删除用户图书信息、修改用户图书信息、查询用户图书信息、用户名单查询、图书归还管理、图书归还提醒管理、导出数据等),封装成函数分别实现。注意:对用户图书信息执行增删改操作的时候需要进行文件的保存。

Txt文件加载和保存模块:

利用文件的读写实现保存数据及加载的功能,让数据具有记忆性,需要注意的是写入文件时,数据必须是字符串类型,需要对于当前内容进行强制转换;加载数据的时候,读出来的数据是字符串,需要去掉字符串属性(使用eval()),通过之前所定义的全局变量实行数据循环流动。

所用到的第三方库分别的作用:

Numpy:导入用户名单的数据。

Pandas:全局变量转化成Datafream二维数组类型后再转换成csv文件导出数据。

Datetime:获取结束时的日期信息,结合用户的借书时间,计算出对应还书日期。

                                                                                                

添加用户图书信息模块:

本图书管理系统针对导入的用户名单,需要先进行验证,身份无误方可借书。图书信息分为:图书编号、图书名、图书价格、借阅日期、借阅时间。判断输入姓名具备借书权限,伴随用户输入数据,利用空字典进行数据保存,列表追加数据。删除用户图书信息模块  用户输入需要删除的学生姓名,通过for循环遍历用户信息名判断图书信息里是否含有了该用户的图书信息。

修改用户图书信息模块:

用户输入需要修改图书信息的用户姓名,for循环遍历查找,如果存在准许修改;如果不存在则不能修改并且提示用户。

显示所有用户的图书信息模块:

根据全局变量申明访问、for循环遍历、print输出函数简单实现。

显示最近的图书借阅信息模块:

利用print输出函数提示、for循环遍历简单实现。

新的图书借阅信息模块:

    此模块主要利用datetime库户进行还书天数的计算,利用循环对每一条借阅记录进行计算,增加‘还书天数’和‘最迟归还图书’字段,最后呈现出来。  

新的图书借阅信息的呈现模块:

与显示最近的图书借阅信息模块类似,增加了用户还书天数’和‘最迟归还图书’的信息显示。

提醒用户还书模块:

    结合图书借阅信息的呈现模块一起使用,提醒用户及时还书等。使用for循环遍历,根据判断条件分别输出提示信息。

保存图数借阅数据模块:

利用pandas模块将全局变量转换成Datafream数据类型再通过to_csv函数进行本地保存。

Labrary_books系统:

(labrary_books系统和labrary_system类似,实现原理一样。)

流程控制模块:

    将其封装为一个函数,import导入模块。方便管理员登录联合,登录成功即可进入该系统。

文件加载与保存模块:

图书管理的菜单模块:

图书添加模块:

图书删除模块:

图书修改模块:

图书查询模块:(分为单本图书查询/所有图书查询)

导出图书信息模块:

登录系统:

其与Labrary_books系统进行联合,后期连接数据库进行交互。

登录页面模块

流程控制模块:

利用无限循环控制流程

用户信息加载与保存模块:

用户注册模块:

    

用户登录模块:

连接mysql(DBMS)模块:

连接数据库、创建游标对象、书写sql语句、游标对象执行sql语句、根据需求后续......

查询写法

增删改写法

  • 总结

(1)评估系统   

整个系统分别由三个子系统构成(图书信息管理、图书管理、登录系统),系统由本学期学过的python知识构成。主要利用列表嵌套字典、for循环遍历、第三方库(模块)的调用、流程控制语言、无限循环+break结构等知识点。设计的系统比较简单,后期还可完善,例如增加图书的属性,例如:图书位置、图书出版社、更细节的属性。系统,参数还可调优,优化算法,节省空间,更加灵活,衔接更加紧密。

目前该系统可以实现模拟用户登录,图书信息的加载和保存,用户借阅图书及图书管理,图书数据的导出,数据库的连接,实现对表的交互联系。该系统能够基本地实现图书管理的功能,便于用户和图书管理员使用,让图书信息更好地保存,更好的体验,提高了图书管理的效率。

(2)个人体会

通过完成图书管理系统这个项目,我认识到Python第三方库的强大,其语法简单,实现功能之强大。Python无论是数据分析还是系统设置等等都是很棒的,而且免费开源,这是其他编程语言所不及的。在类型检查方面,Python是在运行时进行动态检查,这有好有坏,我不做评价。同时Python 3(特指Python 3而不包括Python 2)又是强类型语言,强类型意味着类型检查很严格,不允许不同类型做莫名其妙的隐式转换。

    在编程范式上,Python并没有强调自己是“指令式”、“函数式”或“完全面向对象”,我认为这是一个非常好的设计。而且这种设计倾向还带来了一些额外的好的设计,例如,Python没有像Java那样让class承担太多角色。“Python才是最伟大的语言,也是世界上做好的语言,人生苦短,我用Python。”

项目代码包:如果有需要请私信我,喜欢就分享出去吧!

  • 6
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值