目录
1系统开发背景... 1
2系统相关技术介绍... 1
2.1 Python语言... 2
2.2 TCP协议... 2
2.3 tkinter库... 2
2.4 Socket库... 2
2.5 pymysql库... 3
2.6 MySQL. 3
2.7 threading. 3
3系统分析与设计... 3
3.1系统功能模块组成... 3
3.2 注册模块需求和设计... 4
3.3 登录模块需求和设计... 5
3.4 查询模块需求和设计... 6
3.5 图书入库模块需求和设计... 7
3.6 图书删除模块需求和设计... 8
3.7 图书更新模块需求和设计... 9
3.8 日志模块需求和设计... 10
4系统实现... 10
4.1 注册模块实现... 11
4.1.1 模块实现界面... 11
4.1.2 模块实现代码... 12
4.2 登录模块实现... 13
4.2.1 模块实现界面... 13
4.2.2 模块实现代码... 14
4.3 查询模块实现... 15
4.3.1 模块实现界面... 16
4.3.2 模块实现代码... 16
4.4 图书入库模块... 18
4.4.1 模块实现界面... 18
4.4.2 模块实现代码... 18
4.5 图书删除模块... 19
4.5.1 模块实现界面... 19
4.5.2 模块实现代码... 20
4.6 图书更新模块... 20
4.6.1 模块实现界面... 20
4.6.2 模块实现代码... 21
4.7 日志模块... 22
4.7.1 日志实现界面... 22
4.7.2 模块实现代码... 22
5系统开发总结... 23
参考文献... 23
附录... 24
基于多线程的图书馆管理系统
摘要: 随着科学技术的发展,数据大爆炸的时代已经到来,为了管理数据更加方便且快捷,人们开始使用各种数据软件,以便充分的利用这些宝贵的信息资源。本系统的设计目的就是为各中小型图书馆提供一套运行稳定、安全可靠、操作方便的管理系统,帮助图书馆管理员进行图书入库、删除、查询、更新等基本业务,提高管理和服务水平。本系统实现了对图书管图书各项信息的管理、对管理员信息的管理,提供了图书入库、删除、查询、更新以及日志生成等基本功能。系统基于多线程结构,使用tkinter、socket、threading等python库和MySQL数据库进行实现。系统分为登录模块、注册模块、查询模块、图书入库模块、删除模块、更新模块、日记模块,本文将从需求分析、系统设计、系统实现等多方面对该系统进行介绍。
在这个高速发展的信息化时代,随着计算机及网络技术的不断发展,它渗透于人们生活的方方面面,逐步影响着人们的生活、学习和工作方式。随着高等教育事业的快速发展,学校的规模不断扩大,学校的各种基本设施也在不断加强。图书馆是学校的一部分,它作为一种信息资源的集散地,服务于全校教学、科研以及学习生活方面,是校园内一个举足轻重的单位,它的操作和管理就显得尤为重要。图书馆应该能够为用户提供充足的信息和快捷的查询手段,且因图书和用户借阅资料繁多,包含很多数据的管理,为了使图书管理工作规范化、系统化、程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效地查询和修改图书信息,就有必要建立一个高效的图书管理系统。对于一个现代高效的图书馆而言,它需要一个高速、快捷、方便的图书管理办法。
但目前各图书馆对图书的管理很多停留在书卡和书目的一般查询上,花费了大量资金购置的图书和计算机软件,其关系只停留在图书和目录,主要原因在于人们所进行的计算机管理只简单的将书目录入软件中,再根据目录查找图书这一循环体中。目前大部分图书馆的图书管理都处于一种馆藏图书量大,各书馆所存图书相类似,专业性图书所占比例较小,管理方法简单,图书利用率低,管理成本又高。这就要求我们在信息技术高速发展的今天,图书馆管理运用网络技术,通过信息系统的开发,在图书馆之间互通有无,有利于提高图书的利用率。
为了减低代码耦合性,减少依赖,优化性能,本系统采用基于多线程的客户端-服务器通信模式,同时为了界面友好性,采用tkinter可视化编程,考虑到数据安全性,使用MySQL数据库存储数据,本节将重点介绍系统中所采用的技术。
Python是一种跨平台的计算机程序设计语言。是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。它的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。
传输控制协议(TCP,Transmission Control Protocol)是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议。
互联网络与单个网络有很大的不同,因为互联网络的不同部分可能有截然不同的拓扑结构、带宽、延迟、数据包大小和其他参数。TCP的设计目标是能够动态地适应互联网络的这些特性,而且具备面对各种故障时的健壮性。
不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。
Tkinter 是 Python 的标准 GUI 库。Python 使用 Tkinter 可以快速的创建 GUI 应用程序。由于 Tkinter 是内置到 python 的安装包中、只要安装好 Python 之后就能 import Tkinter 库、而且 IDLE 也是用 Tkinter 编写而成、对于简单的图形界面 Tkinter 还是能应付自如。
Socket(套接字)可以看成是两个网络应用程序进行通信时,各自通信连接中的端点,这是一个逻辑上的概念。它是网络环境中进程间通信的API(应用程序编程接口),也是可以被命名和寻址的通信端点,使用中的每一个套接字都有其类型和一个与之相连进程。通信时其中一个网络应用程序将要传输的一段信息写入它所在主机的 Socket中,该 Socket通过与网络接口卡(NIC)相连的传输介质将这段信息送到另外一台主机的 Socket中,使对方能够接收到这段信息。 Socket是由IP地址和端口结合的,提供向应用层进程传送数据包的机制。
pymysql是一个连接mysql数据库的第三方模块,可作为连接mysql数据库的客户端,对数据库进行增删改查操作
MySQL 是一款安全、跨平台、高效的,并与 PHP、Java 等主流编程语言紧密结合的数据库系统。
MySQL 的象征符号是一只名为 Sakila 的海豚,代表着 MySQL 数据库的速度、能力、精确和优秀本质。目前 MySQL 被广泛地应用在 Internet 上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,使得很多公司都采用 MySQL 数据库以降低成本。MySQL 数据库可以称得上是目前运行速度最快的 SQL 语言数据库之一。除了具有许多其他数据库所不具备的功能外,MySQL 数据库还是一种完全免费的产品,用户可以直接通过网络下载 MySQL 数据库,而不必支付任何费用。
Python通过两个标准库thread和threading提供对线程的支持。thread提供了低级别的、原始的线程以及一个简单的锁。threading模块不仅提供了thread类,还提供了各种同步机制。
本系统主要由登录、注册、查询、图书入库、删除、更新以及日志生成等模块组成,具体功能模块组成如图1所示。
图1 系统功能模块图
流程图:
图2 注册模块流程图
图书馆管理系统是提供给图书管理员管理图书信息的系统,为了系统内部的安全,需要使用账号对使用人员进行限制,因此需要给管理员提供账号注册功能,如果已有账号则直接登录。点击注册按键后,客户端向服务器发送请求,服务器接收到请求后连接数据库,执行SQL语句,若注册成功注册,则账号将会存储在数据库中,以便下一次验证登录。
流程图:
图3 登录模块流程图
用户输入账号密码后,客户端发送给服务器,服务器查询数据库,与数据库中的用户信息进行比对,验证正确则登录成功。
流程图:
图4 查询模块流程图
管理员登录后,拥有查询图书信息的权限,可以直接查询全部图书的信息,也可以通过图书编号或者图书名查询图书信息。用户点击相应的查询按键后,把所需的查询条件输入到文本框中,客户端发送查询请求给服务器,服务器查询相应的数据库信息后,把查询到的结果发送给客户端,最后客户端把查询结果显示出来。
流程图
图5 图书入库模块流程图
用户在操作界面输入需要入库图书的信息,点击入库按键后,客户端给服务器发送请求,服务器接受到客户端请求后,执行SQL语句往数据库中插入数据。
流程图
图6 图书删除流程图
用户在操作界面输入所需删除图书的id,点击删除按键后,客户端给服务器发送请求,服务器接受到客户端请求后,执行SQL语句删除用户需要删除的数据库记录。
流程图:
图7 图书更新流程图
用户在操作界面输入需要更新的图书信息,点击更新按键,客户端给服务器发送请求,服务器接受到客户端请求后,执行SQL语句更新用户需要更新的数据库记录。
流程图:
图8 日志模块流程图
当服务器收到客户端请求后,若是请求的操作成功执行,那个则会在数据库中记录下此次操作的内容以及时间,即日志。
本系统采用数据库为MySQL以及数据库可视化软件Navicat,同时为了能够让多个客户端同时连接服务器并且服务器发送请求,系统采用了多线程模式,接下来这部分将对系统每个模块的实现界面和核心代码进行介绍。
图9 注册界面
在相应的文本框中输入用户名和密码,点击注册按钮即可注册成功。
图10 注册之前数据库中的数据
图11 注册成功界面
注册成功后系统会自动跳转到登录界面。
图12 注册成功后数据库中数据