0. 简介
这是这学期一门关于python的课程的大作业,我用了pyqt5来做界面,实现了一个简单的图书管理系统,其功能包括图书信息和读者信息的增删查找,源代码放在最后。
1.实现思路与基本架构
该项目的实现主要经过了以下几步:
step1 界面设计
首先设计各个模块的位置以及界面的安排。经过考虑,我设计了四个模块,分别是图书信息维护、读者信息维护、图书信息查询、读者信息查询。
图书信息维护模块包含了图书信息的添加,有从文件中添加和自己手动添加两种方式。读者信息维护也同理。
而图书信息查询模块则是输入要查询的图书信息,在图书馆中进行图书的查阅,输出图书的各种信息。读者信息查询也是一样的。
step2 数据结构设计
为了便于之后的操作,数据结构我设置的比较精细。大体来说,整个主程序(不包括界面部分)使用了三个类,分别是Library类、reader类和book类。具体的数据结构框架如下图。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
step3 相关函数接口编写
在定义完数据结构后,需要对Library类定义一些方法,便于后面与图形界面的交互操作。这里我写了一些操作接口,包含drop_reader()
,search_book()
等操作。
step4 整合界面
这一步需要将之前写的界面和主程序进行整合,并定义槽函数,将主程序的函数与界面连接起来,完成图形化交互。
2. 程序运行逻辑
程序的运行流程如下:
step1
利用pickle
模块从数据中实例化Library
类,并实例化My_window
类。
step2
用户在主菜单中点击相应的模块跳转到对应的frame
step3
在每个功能区等待用户输入数据,输入数据完成点击button
触发对应的事件函数,并进行相应的数据操作。
step4
点击“退出系统”按键后,利用pickle
模块将图书馆实例保存到数据文件中,下一次打开程序时会自动读取。
3. 操作说明
3.1 图书信息维护界面
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
该界面可以实现图书信息的批量读取以及单条信息的添加。
如果要批量读取图书信息,只需将文件放入路径下的/data
文件夹,并输入对应文件名,点击导入即可。
文件格式如下:
三体 978 重庆出版社 2008 刘慈欣
昆虫记 546 商务印书馆 2012 法布尔
童年 277 商务印书馆 2014 高尔基
电磁学 3-43 中国科学技术大学出版社 2017 叶邦角
量子力学学习指导 413 中国科学技术大学出版社 2019 张鹏飞
固体物理学 4834 高等教育出版社 1988 黄昆
如果需要添加单条读者信息,只需要在对应输入框内写好图书信息,点击添加图书即可。
3.2 读者信息维护界面
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
操作方式同上。
读者信息文件格式如下:
张三 13728574382 是
安义 15709122812 是
黄文 938123882 否
王子 289871912 是
何云零 13827005831 否
3.3 图书信息查询界面
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
该页面可以实现图书信息的查询,图书的借阅、入库、出库、删除、修改
在输入要查询的图书信息后,如果输入的信息正确,将会显示查找到的图书,并附带有一定的操作。
点击对应按钮可以对图书进行相应的操作。
3.4 读者信息查询界面
该界面可以实现读者借阅记录的查询,读者信息的修改以及删除
用法同上。
源代码:https://gitee.com/ignorejjj/book/tree/master