首页 > 其他分享 >GUI图书管理系统

GUI图书管理系统

时间:2024-09-18 15:23:35浏览次数:10  
标签:title GUI author book tk root 管理系统 图书 row

例题要求:将图书馆管理系统改为和图像化界面相关的内容,需包含函数、GUI界面知识,将图书馆管理系统改为和图像化界面相关的内容,比如将所有的函数和相关按钮进行绑定以及给出相应的输入框,将增删改查后的信息打印在控制台。

步骤:

思路:

把本例题代码分为俩个部分一个为定义相关功能的函数部分(如增加图书add_book()函数)另一个为GUI界面部分,这样思路清晰每个相关函数功能更容易体现

最后效果图

(1)GUI界面 

1.窗口的搭建

对于开始我们先简单创建一个空窗口,并设置窗口大小等属性

import tkinter as tk
from tkinter import messagebox
root = tk.Tk()
root.title("图书馆管理系统")
root.geometry("280x400")

2.输入框和标签

我们需要创建一个标签(tk.Label)用于显示“书名”文本,定义网络布局的位置,在创建一个输入框(tk.Entry),用于用户输入书名,定义输入框的布局。同理作者的标签和输入框也这样建立

# 创建输入框和标签
title_label = tk.Label(root, text="书名")
title_label.grid(row=0, column=0)
title_entry = tk.Entry(root)
title_entry.grid(row=0, column=1)

author_label = tk.Label(root, text="作者")
author_label.grid(row=1, column=0)
author_entry = tk.Entry(root)
author_entry.grid(row=1, column=1)

3.按钮和函数的联动

在创建按钮之前我们先要建立一个空列表,我用这个空列表用于储存和应用于整个代码。

books = []

我需要建立五个按钮并对于不同的功能,当然为了美观还要定义按钮背景和位置

tk.Button(root, text="添加图书",bg="pink", command=add_book).grid(row=2, column=0)
tk.Button(root, text="删除图书",bg="pink", command=remove_book).grid(row=2, column=1)
tk.Button(root, text="修改图书",bg="pink", command=update_book).grid(row=2, column=2)
tk.Button(root, text="借出图书",bg="pink", command=check_out_book).grid(row=3, column=0)
tk.Button(root, text="归还图书",bg="pink", command=return_book).grid(row=3, column=2)

(1)函数部分

1.添加图书

定义add_book函数用于添加图书,用e1.get()方法赋值给title和author,用append函数用于创建列表的内容和状态  代码如下

def add_book():
    title = title_entry.get()
    author = author_entry.get()
    if title and author:
        books.append({"title": title, "author": author, "available": True})
        update_list()

2.删除图书

删除函数的时候我们需要用index获得相关索引,用curselection()返回选中项的相关索引

def remove_book():
    selected = book_listbox.curselection()
    if selected:
        index = selected[0]
        books.pop(index)
        update_list()

3.修改图书借出归还

修改和前面大体基本一致,值得注意的是这里获取的索引是新的书名和作者,然后在更新书的信息

def update_book():
    selected = book_listbox.curselection()
    if selected:
        index = selected[0]
        title = title_entry.get()#获取新的书名的作者
        author = author_entry.get()
        if title and author:
            books[index] = {"title": title, "author": author, "available": books[index]["available"]}
            update_list()

5.更新图书

和上面不同的是这里需要用for循环遍历books列表中没音本书,然后检查书籍的状态时刻保持插入的信息状态是最新的

在做项目中思维是最重要的,清晰的解题思路会方便很多,解题的时候要把复杂的东西简单化

全部代码

import tkinter as tk
from tkinter import messagebox

# 假设的图书数据库列表
books = []

# 图书增删改查和借还的函数
def add_book():
    title = title_entry.get()
    author = author_entry.get()
    if title and author:
        books.append({"title": title, "author": author, "available": True})
        update_list()

#删除书籍
def remove_book():
    selected = book_listbox.curselection()
    if selected:
        index = selected[0]
        books.pop(index)
        update_list()

#修改书籍
def update_book():
    selected = book_listbox.curselection()
    if selected:
        index = selected[0]
        title = title_entry.get()#获取新的书名的作者
        author = author_entry.get()
        if title and author:
            books[index] = {"title": title, "author": author, "available": books[index]["available"]}
            update_list()


#借书
def check_out_book():
    selected = book_listbox.curselection()
    if selected:
        index = selected[0]
        if books[index]["available"]:
            books[index]["available"] = False
            update_list()
        else:
            messagebox.showwarning("警告", "该书已被借出!")

#还书
def return_book():
    selected = book_listbox.curselection()
    if selected:
        index = selected[0]
        if not books[index]["available"]:
            books[index]["available"] = True
            update_list()
        else:
            messagebox.showwarning("警告", "该书尚未被借出!")

#更新书籍
def update_list():
    book_listbox.delete(0, tk.END)
    for book in books:
        status = "可借" if book["available"] else "已借出"#用来检查是否可用
        book_listbox.insert(tk.END, f"书名:{book['title']} {book['author']} - {status}")#随时插入

# 创建主窗口
root = tk.Tk()
root.title("图书馆管理系统")
root.geometry("280x400")
# 创建输入框和标签
title_label = tk.Label(root, text="书名")
title_label.grid(row=0, column=0)
title_entry = tk.Entry(root)
title_entry.grid(row=0, column=1)

author_label = tk.Label(root, text="作者")
author_label.grid(row=1, column=0)
author_entry = tk.Entry(root)
author_entry.grid(row=1, column=1)


# 创建按钮
tk.Button(root, text="添加图书",bg="pink", command=add_book).grid(row=2, column=0)
tk.Button(root, text="删除图书",bg="pink", command=remove_book).grid(row=2, column=1)
tk.Button(root, text="修改图书",bg="pink", command=update_book).grid(row=2, column=2)
tk.Button(root, text="借出图书",bg="pink", command=check_out_book).grid(row=3, column=0)
tk.Button(root, text="归还图书",bg="pink", command=return_book).grid(row=3, column=2)

# 创建列表框
book_listbox = tk.Listbox(root, height=10,width=40)
book_listbox.grid(row=4, column=0, columnspan=3)

# 更新图书列表
update_list()
root.mainloop()

标签:title,GUI,author,book,tk,root,管理系统,图书,row
From: https://blog.csdn.net/z18768633728/article/details/142325775

相关文章

  • 基于Spring Boot的付费自习室管理系统
    目录前言 一、技术栈二、系统功能介绍三、核心代码1、登录模块 2、文件上传模块3、代码封装前言付费自习室管理系统采用B/S架构,数据库是MySQL。网站的搭建与开发采用了先进的java进行编写,使用了springboot框架。该系统从两个对象:由管理员和用户来对系统进行设计......
  • Springboot机械零件仓储管理系统a0pe2程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景与意义随着工业化的快速发展,机械零件作为工业生产的基础组成部分,其仓储管理变得尤为重要。传统机械零件仓储管理方式存在效率低下、信......
  • 基于Java的面向社区的智能化健康管理系统设计与实现
    文章目录1.前言2.详细视频演示3.论文参考4.项目运行截图5.技术框架5.1后端采用SpringBoot框架5.2前端框架Vue6.可行性分析7.系统测试7.1系统测试的目的7.2系统功能测试8.数据库表设计9.代码参考10.数据库脚本11.作者推荐项目12.为什么选择我?13.获取源......
  • 【开题报告】基于Springboot+vue图书管理系统(程序+源码+论文) 计算机毕业设计
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,传统图书管理方式已难以满足现代图书馆高效、便捷的管理需求。传统的图书管理依赖于人工记录与检索,不仅效率低下,而且容易出错,......
  • 基于JAVA客户关系管理系统的计算机毕设源码+论文
    摘要【摘要】随着市场体系的日益完善,我们已经进入了一个买方市场时代。选择空间扩大、购买渠道拓宽、消费心态和购买行为越发成熟,使客户再不会对某一企业或者产品盲目地保持绝对忠诚,如何不断改善客户关系,掌据更多的客户信息,提高客户满意度;如何在日益激烈的市场竞争中把握机会,占有更......
  • SpringBoot+Neo4j+Vue+Es集成ES全文检索、Neo4J知识图谱、Activiti工作流的知识库管理
    在数字化高度普及的时代,企事业机关单位在日常工作中会产生大量的文档,例如医院制度汇编,企业知识共享库等。针对这些文档性的东西,手工纸质化去管理是非常消耗工作量的,并且纸质化查阅难,易损耗,所以电子化管理显得尤为重要。【springboot+elasticsearch+neo4j+vue+activiti】实现数......
  • .NET 开源工业级移动端仓库管理系统
    前言在工业生产中,定制化的软件对于每个环节都至关重要。对于仓库管理,推荐一款开源的仓库管理系统(WMS)解决方案。这款基于.NET框架开发的移动应用,提供了全面的仓库操作、订单处理、主数据管理、数据分析及个人信息设置等功能,是工业仓库管理的有利助手。项目介绍SmoWMS是一款基......
  • GBase 8a数据库运维管理系统--GDOM
    GDOM旨在为GBase8aMPP数据库提供全生命周期的运维保障,在为数据库提供可视化监控的同时,通过集群管理、主机管理、健康检查、告警等一系列功能,降低客户运维成本,提高客户运维效率,实时保障集群7*24正常运行。GDOM为复杂的集群操作配备了可视化任务配置页面,用户通过任务配置页可......
  • (论文解读)Visual-Language Prompt Tuning with Knowledge-guided Context Optimization
    Comment:acceptedbyCVPR2023基于知识引导上下文优化的视觉语言提示学习摘要提示调优是利用任务相关的可学习标记将预训练的视觉语言模型(VLM)适应下游任务的有效方法。基于CoOp的代表性的工作将可学习的文本token与类别token相结合,来获得特定的文本知识。然而,这些特定的文......
  • springboot贵州特色产品销售管理系统-计算机毕业设计源码80943
    摘 要随着信息技术的快速发展和电子商务的广泛应用,传统的销售管理模式已经难以满足现代企业的需求。特别是在贵州这样一个充满特色产品的地区,如何有效地推广和销售当地特色产品,成为了一个亟待解决的问题。为此,开发一套基于SpringBoot+Vue的贵州特色产品销售管理系统,不仅可以......