首页 > 编程语言 >python 图书借阅系统

python 图书借阅系统

时间:2023-11-08 16:31:39浏览次数:34  
标签:return python self library book user 借阅 图书 tk

import tkinter as tk
from tkinter import messagebox

class Application(tk.Frame):
    def __init__(self, library, master=None):
        super().__init__(master)
        self.library = library
        self.grid()
        self.create_widgets()

    def create_widgets(self):
        self.book_label = tk.Label(self, text="Book Title")
        self.book_label.grid(row=0, column=0)
        self.book_entry = tk.Entry(self)
        self.book_entry.grid(row=0, column=1)

        self.user_label = tk.Label(self, text="User Name")
        self.user_label.grid(row=1, column=0)
        self.user_entry = tk.Entry(self)
        self.user_entry.grid(row=1, column=1)

        self.borrow_button = tk.Button(self)
        self.borrow_button["text"] = "Borrow Book"
        self.borrow_button["command"] = self.borrow_book
        self.borrow_button.grid(row=2, column=0)

        self.return_button = tk.Button(self)
        self.return_button["text"] = "Return Book"
        self.return_button["command"] = self.return_book
        self.return_button.grid(row=2, column=1)

    def borrow_book(self):
        book_title = self.book_entry.get()
        user_name = self.user_entry.get()
        book = self.library.find_book(book_title)
        user = self.library.find_user(user_name)
        if book and user and not book.is_borrowed():
            user.borrow_book(book)
            messagebox.showinfo("Success", f"{user_name} borrowed {book_title}")
        else:
            messagebox.showerror("Error", "Cannot borrow book")

    def return_book(self):
        book_title = self.book_entry.get()
        user_name = self.user_entry.get()
        book = self.library.find_book(book_title)
        user = self.library.find_user(user_name)
        if book and user and book.is_borrowed():
            user.return_book(book)
            messagebox.showinfo("Success", f"{user_name} returned {book_title}")
        else:
            messagebox.showerror("Error", "Cannot return book")

# 使用示例
library = Library()
book1 = Book('Book Title 1', 'Author 1', 'ISBN 1')
book2 = Book('Book Title 2', 'Author 2', 'ISBN 2')
user1 = User('User 1')
user2 = User('User 2')
library.add_book(book1)
library.add_book(book2)
library.add_user(user1)
library.add_user(user2)

app = Application(library)
app.mainloop()

标签:return,python,self,library,book,user,借阅,图书,tk
From: https://blog.51cto.com/u_16055028/8256346

相关文章

  • 常用python自动化脚本
    目录自动化文件管理使用Python进行网页抓取文本处理和操作自动发送电子邮件自动化Excel电子表格与数据库交互自动化系统任务网络自动化数据清理和转换自动化PDF操作1.自动化文件管理1.1-排序目录中的文件# Python脚本,用于根据文件扩展名对目录中的文件进行排序i......
  • python初学者学习笔记-第七章-面向对象
    chapter7/面向对象7.1面向对象基础7.1.1定义类:同一类的属性和方法的集合;对象:类的实例化就是对象;7.1.2特征类的三大特性:封装,继承,和多态;封装封装就是将属性和方法相捆绑,形成一个整体;封装可以提高程序的简洁性和安全性;使用者只需调用程序的相关接口,不必关注程序的实现......
  • python实现STL模型文件体积表面积计算
    没有什么特殊的算法,直接用包,开箱即用fromstlimportmeshimportnumpyasnp#读取stl文件filename='./text.stl'mesh_data=mesh.Mesh.from_file(filename)xyz=(mesh_data.max_-mesh_data.min_)sizel=round(xyz[0]/10,2)sizew=round(xyz[1]/10,2)s......
  • python初学者学习笔记-第八章-模块和包
    chapter8/模块和包8.1.模块8.1.1模块简介类、函数、变量等,都可重复使用。为了方便调用,我们通常把他们放到Python文件之中。单个文件的代码阅读和调用都比较混乱。代码最好分开存储,相似功能的代码放在一起。模块可以帮助我们实现这样的功能。后缀为py的文件都是python的......
  • python ElementTree操作xml节点
    pythonElementTree操作xml节点,包括增删改查xml原文<Voucher><Id>967a198783d14835860574c697478156</Id><Remark>main摘要443344245567583384475</Remark><Delete>需要删除的节点1</Delete><DetailList><Det......
  • 简单实现Python采集B站视频
    我们今天要学习的是如何利用Python的requests库编写一个采集B站的小爬虫,都是一些很基础的内容,简单易学,没有什么太过复杂的东西,一起来看看吧。首先安装库:```bashpipinstallrequests```然后,我们可以开始编写爬虫程序:```pythonimportrequestsproxy_host='www.duoip.cn'proxy_......
  • Python采集抖音快手商户
    抖音快手不仅是一个短视频平台,而且也是当下很多商家争抢进场的热门电商平台,以下是一个用Python实现采集抖音快手的爬虫程序,用于采集抖音快手的商家,对于做竞品同行数据分析来说,一定非常不错的。```pythonimportrequestsfrombs4importBeautifulSoup#请求URLurl='https://ww......
  • Python和requests库结合采集豆瓣短评
    Python是一种常用的程序语言,今天我们就用Python和requests库结合,来写一个采集豆瓣短评的程序,非常的简单,一起来学学吧。```pythonimportrequestsfrombs4importBeautifulSoup#设置代理proxy=f'http://{proxy_host}:{proxy_port}'headers={'User-Agent':'Mozilla/5.......
  • 《最新出炉》系列初窥篇-Python+Playwright自动化测试-25-处理单选和多选按钮-中篇
    1.简介上一篇中宏哥讲解和介绍的单选框有点多,而且由于时间的关系,宏哥决定今天讲解和分享复选框的相关知识。2.什么是单选框、复选框?单选按钮一般叫raidobutton,就像我们在电子版的单选答题过程一样,单选只能点击一次,如果点击其他的单选,之前单选被选中状态就会变成未选中。单......
  • python基础-数据类型及常用方法
    数字类型int:是整形,用来记录没有小数点的数字,例如:1、2、3、4等等age=18print(age)print(type(age))float:是浮点型,用来记录有小数点的数字,例如:12.3、100.001等money=88888.88print(money)print(type(money)) str:是字符串类型,用来记录描述性质的东西,例如......