tkinter实现图书管理系统介绍

前文

岁月不语,时光依旧。本文将介绍基于tkinter实现的图书管理系统以及一些其他功能的实现,让我们一起往下看看吧!

项目介绍

Tkinter(即 tk interface,简称“Tk”)本质上是对 Tcl/Tk 软件包的 Python 接口封装,它是 Python
官方推荐的 GUI 工具包,属于 Python 自带的标准库模块,当您安装好 Python 后,就可以直接使用它,而无须另行安装。 作为一款
Python GUI 工具,Tkinter 拥有良好的跨平台性,支持 Windows、Linux、Mac 平台,它传承了 Python
语法简洁、代码易读的基本特点。 与其他编程语言的 GUI 工具包相比,Tkinter
编码效率高,能够实现快速开发的目的,非常适合初学者学习。Tkinter 使用纯 Python 语言开发,与 C/C++ 开发的 Qt
框架相比,Tkinter 有自身的局限性,比如性能、功能丰富程度等都不及
Qt,因此它只适合开发一些简单的程序,比如计算器的界面,或者一个简易的聊天窗口等。

当我们运行程序时,进入登录界面,选择管理员登录或者普通用户登录,管理员界面有首页、图书管理、用户管理、借书记录、更改密码;普通用户登录界面有首页、搜索、更改密码。
登录流程图
登录流程图
图书管理功能
在这里插入图片描述
图书管理模块
在这里插入图片描述
管理员界面展示
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
普通用户界面展示
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

具体功能

首页界面含有天气预报以及搜索城市天气,默认为北京。数据来源于2345,我们只需要把爬下来的数据排布好就行了,这里涉及到request库的使用,也就是爬虫。天气预报下面的公告栏,管理员可以修改内容并发布,所有的普通用户都能看见,普通用户是不允许修改的。

图书管理界面分别有添加、修改、还书、借书、删除,添加顾名思义就是添加图书,可以设置图书的分类、数量等。修改就是对图书可能出现的错误进行修改。当普通用户要借书的时候,我们可以根据用户的id,来设置借书的时间和借哪本书。有借书就有还书了,输入用户和书的id即可还书成功。有些图书可能已经没有用了,这时候我们就选择把此书删除了。

用户管理有添加、修改、删除,添加就是添加新用户,修改可以修改用户的秘密,有时候用户密码错误次数超过了3次,就不允许登录了,这里我们就可以把改过来,让用户登录。删除就是删除用户,被删除的用户再次登录就是无效的了。

扫描二维码关注公众号,回复: 16335088 查看本文章

借书记录界面,这里存储着所有用户的借书记录,在这里都能看到,用户的借书时间以及还书时间等。

更改密码界面,管理员修改密码。

我们还增加了菜单,菜单包含功能有注销(返回登录界面),退出(结束程序),帮助(未写)。

普通用户的界面大同小异,没有用户管理,其他都是差不多的,图书管理变成了搜索图书,只能搜索图书了。

入口程序代码展示

这里我们要用到tkinter.ttk.Notebook(),在Python GUI编程中,ttk.Notebook是一个非常有用且常用的控件。它是一个带有选项卡的容器,可以在不同的选项卡中放置不同的控件。所以我们编写的每一个界面都用Frame()作为容器,在主程序中创建一个选项卡(Notebook),然后将其他界面用add()方法添加到容器当中。这样就完成了在同一个界面展示效果。


from page.login import Login
from other_fun.center_gui import gui_center
from page.home_pgae import HomePage
import tkinter
import tkinter.ttk
from tkinter_book.page import admin_page, change_password, commonuser, logmessage, managingusers

'''
运行函数  主函数  都在此运行
每个页面都是单独的 在此汇集显示
'''

class MainGui:

    def stu_gui(self, user_name):
        self.root = tkinter.Tk()
        self.root.overrideredirect(True)
        gui_center(self.root, 800, 650)
        self.root.title('主页面')
        self.root.resizable()
        # 添加菜单
        menu = tkinter.Menu(self.root)
        menu.add_command(label='注销', command=self.log_off)
        menu.add_command(label='退出', command=self.root.destroy)
        menu.add_command(label='帮助')
        self.root.config(menu=menu)

        # 选择框
        style = tkinter.ttk.Style()
        note = tkinter.ttk.Notebook(self.root)
        style.configure('TNotebook.Tab', font=("微软雅黑", 20, 'bold'), foreground='red')

        # 首页 共有的
        home = HomePage(1)
        note.add(home.home_frame, text='首页')
        note.pack(fill='both', expand='true')

        # 搜索
        search_common_user = commonuser.CommonUser()
        note.add(search_common_user.main_show_frame, text='搜索')
        note.pack(fill='both', expand='true')
        # 借书消息   self.v.v_user.get()
        books_message = logmessage.LogMessage(1, user=user_name)
        note.add(books_message.main_show_frame, text='消息')
        note.pack(fill='both', expand='true')
        # 更改密码
        password = change_password.ChangePassword(user_name, 1)
        note.add(password.change_frame, text='更改密码')
        note.pack(fill='both', expand='true')

        self.root.mainloop()

    '''
quit()导致mainloop退出,但不会直接导致任何小部件被销毁。
但是,如果调用mainloop后没有代码,那么脚本将退出,所有小部件都将被销毁
destroy()将销毁小部件。如果销毁根窗口,那么所有其他小部件都将被销毁,mainloop将停止
    
    '''

    # 注销
    def log_off(self):
        # 很神奇不报错了
        self.root.quit()
        self.root.destroy()
        self.main()

    def admin_gui(self):
        self.root = tkinter.Tk()
        self.root.overrideredirect(True)
        gui_center(self.root, 800, 650)
        self.root.title('页面')
        self.root.resizable()
        # 添加菜单
        menu = tkinter.Menu(self.root)
        menu.add_command(label='注销', command=self.log_off)
        menu.add_command(label='退出', command=self.root.destroy)
        menu.add_command(label='帮助')
        self.root.config(menu=menu)

        # 选择框
        style = tkinter.ttk.Style()
        note = tkinter.ttk.Notebook(self.root)
        style.configure('TNotebook.Tab', font=("微软雅黑", 20, 'bold'), foreground='red')

        # 首页
        home = HomePage(2)
        note.add(home.home_frame, text='首页')
        note.pack(fill='both', expand='true')

        # 图书管理
        admin_books = admin_page.Admin()
        note.add(admin_books.main_show_frame, text='图书管理')
        note.pack(fill='both', expand='true')

        # 用户管理
        user_page = managingusers.ManagingUsers()
        note.add(user_page.main_show_frame, text='用户管理')
        note.pack(fill='both', expand='true')

        # 日志消息
        log_message = logmessage.LogMessage(2)
        note.add(log_message.main_show_frame, text='借书记录')
        note.pack(fill='both', expand='true')

        # 更改密码
        change_password_ = change_password.ChangePassword('', 2)
        note.add(change_password_.change_frame, text='更改密码')
        note.pack(fill='both', expand='true')
        self.root.mainloop()

    def main(self):
        self.v = Login()
        if self.v.flag:
            if self.v.vali.get() == 1:
                print('学生登录')
                self.stu_gui(self.v.v_user.get())
            if self.v.vali.get() == 2:
                print('管理员登录')
                self.admin_gui()


if __name__ == '__main__':
    MainGui().main()

结尾

莫愁前路无知己,天下谁人不识君。本文主要介绍了tkiinter模块写一个图书管理系统和一些主要的功能。点击跳转到详情页,欢迎大家的点赞收藏哈,再见了。 ————2023.8.9 20:12

猜你喜欢

转载自blog.csdn.net/qq_65898266/article/details/132178301