使用Python的tkinter创建“小型”图书馆管理系统

创作目的:

通过设计图书馆管理系统,将图书馆管理员与学生用户分开处理,并通过不同的目标用户展示不同的功能与不同的权限操作。

注意事项:

此代码主要用于txt文本操作,各位创作者可根据自己的需求在我的基础上创新、完善即可。

主要功能函数:

 1.图书管理员应具备查找书籍、添加书籍、查重、删除书籍、导入书籍文件、导出书籍文件共6个功能模块。

2.学生用户应具备查找书籍、借用书籍、归还书籍共3个功能模块。

3.操作包括:Python程序流程结构、组合数据类型、函数、异常处理、文件操作、标准库、第三方库、类和对象、GUI编程等

4.第三方库包括:import tkinter as tk、from tkinter import ttk、from tkinter import simpledialog,messageboxfrom、from PIL import ImageTk,Image

5.功能模块函数:

图书管理员:(查找图书模块)def find_book(self)、(添加图书模块)def add_book(self)、(删除图书模块)def delete_book(self)、(查重模块)def check_book(self)、(导入文件模块)def input_file(self)、(导出文件模块)def out_file(self);

学生用户:(借用图书模块)def brrow_book(self)、(归还图书模块)def back_book(self)

通用模块:(操作书籍)def load_books(self)、(登录模块)def user_option1(self)

6.主要利用函数:tk.simpledialog.askstring(“元素1”,”元素2”)、tk.Listbox.delete(0,tk.END)、tk.Listbox.insert(tk.END)、messagebox.showinf(“”,””)以及相关组件的建立函数。

创建流程:

1.首先创建一个图书馆类(class Librarysystem)

import tkinter as tk
from tkinter import ttk
from tkinter import simpledialog,messagebox
from  PIL import ImageTk,Image

class LibrarySystem:
    #初始化图书馆管理系统类,初始化根窗口,并设置窗口标题和窗口大小,调用creation函数创建界面
    def __init__(self,root):#利用构造方法初始化
        self.root = root
        self.root.title('图书馆管理系统') # 设置主窗口标题
        self.root.geometry("600x400")
        self.creation()

2.在图书馆类中的构造方法中创建一个GUI主窗口(self.root)、管理员账号密码字典(self.operator_dict={})以及学生用户账号密码字典(self.student_dict={})。

    def creation(self):#创建相关基本信息
            self.operator_dict={}
            self.student_dict={}

            self.read_operator()
            self.read_student()

3.对主窗口进行增加操作:1.利用PIL库的Image()方法打开目标图片,再利用ImageTk的PhotoImage()函数将图像文件转换成PhotoImage对象,PhotoImage对象可以在tkinter中的控件(如Button、Lable)上显示图像;再通过tk.Label(self.root,image)函数创建图片标签,最后运用place()布局即可在主窗口生成图片。2.通过tk.Label()函数、ttk.Combobox()函数、tk.Button()函数通过place()布局在主窗口相应位置生成相应tkinter组件即可。

            self.bg_image=Image.open("Library.jpg")
            self.bg_photo=ImageTk.PhotoImage(self.bg_image)

            self.bg_lable=tk.Label(self.root,image=self.bg_photo)
            self.bg_lable.place(x=0,y=0,relwidth=1,relheight=1)


            self.chacterist_lable = tk.Label(self.root, text="用户选项")
            self.chacterist_lable.place(x=290, y=110)

            self.chacterist_Combobox = ttk.Combobox(self.root,values=("图书管理员","学生用户"),width=20)#使用Entry输入组件,用于显示和输入'用户名'信息
            self.chacterist_Combobox.place(x=240,y=130)

            self.login_button = tk.Button(self.root, text="确定",
                                     command=self.change)  # 使用tkinter的button点击组件,用于用户输入完用户名和密码然后登录,且设置了点击登录会有相应的反应
            self.login_button.place(x=300, y=155)

4.当用户点击登录按钮且成功登录时,利用布局自带的销毁函数方式,如:使用了place()布局,则使用place_forget()函数即可进行组件销毁,并展示出新的内容,当用户选择注销或注册时,则对后台的用户账号密码txt文件进行修改,以至于下一次可以使用新用户名及密码登录。

    #隐藏登录界面的一些组件,显示登录成功标签
    def disapper(self):#将组件销毁
        self.username_lable.place_forget()  # 让控件“不再显示”但控件还存在可以再次pack出来,既实现跳转操作
        self.username_entry.place_forget()
        self.password_lable.place_forget()
        self.password_entry.place_forget()
        self.login_button.place_forget()
        self.option_lable.place_forget()
        self.login_Combobox.place_forget()
        self.signup_lable = tk.Label(self.root, text="您已成功登录!")
        self.signup_lable.place(x=210, y=140)
        self.signup_lable.config(font=("宋体", 24))

5.对不同对象进行不同处理,本次项目目标人群分为图书馆管理员和学生用户,二者通过不同的身份登录既有不同的权限操作:1.通过Commbox.get()函数即可获得将要登录的用户身份(Charecter = str(self.chacterist_Combobox.get())2.再通过新创一个操作主窗口,通过tk.Label()函数、ttk.Combobox()函数、tk.Button()函数通过place()布局在主窗口相应位置生成相应tkinter组件即可。

    def sign_up(self, number):
        self.chacterist_lable.place_forget()
        self.chacterist_Combobox.place_forget()
        self.login_button.place_forget()

        self.username_lable = tk.Label(self.root, text="用户名")
        self.username_lable.place(x=200, y=110)

        self.username_entry = tk.Entry(self.root)  # 使用Entry输入组件,用于显示和输入'用户名'信息
        self.username_entry.place(x=240, y=110)

        self.password_lable = tk.Label(self.root, text="密码")
        self.password_lable.place(x=210, y=140)

        self.password_entry = tk.Entry(self.root, show='*')  # 使用Entry输入组件,用于显示和输入"密码"信息,且输出的方式为‘*’
        self.password_entry.place(x=240, y=140)
        if number == '图书管理员':
            self.option_lable = tk.Label(self.root, text="选项")
            self.option_lable.place(x=210, y=170)
            self.login_Combobox=ttk.Combobox(self.root,values=("登录", "注册", "注销"),width=17)
            self.login_Combobox.place(x=241,y=170)
            self.login_button = tk.Button(self.root, text="确定",
                                          command=self.user_option1)  # 使用tkinter的button点击组件,用于用户输入完用户名和密码然后登录,且设置了点击登录会有相应的反应
            self.login_button.place(x=295, y=205)

        elif number == '学生用户':
            self.option_lable = tk.Label(self.root, text="选项")
            self.option_lable.place(x=210, y=170)
            self.login_Combobox = ttk.Combobox(self.root, values=("登录", "注册", "注销"), width=17)
            self.login_Combobox.place(x=241, y=170)
            self.login_button = tk.Button(self.root, text="确定",
                                          command=self.user_option2)  # 使用tkinter的button点击组件,用于用户输入完用户名和密码然后登录,且设置了点击登录会有相应的反应
            self.login_button.place(x=295, y=205)

6.当选择操作主窗口的操作(self.option_Combobox)权限时,点击确定按钮(self.option_button)则可进行相应操作。

option=str(self.login_Combobox.get())
        if option=="登录":
            self.login1()
        elif option=="注册":
            self.register_operator()
        elif option=="注销":
            self.delete_operator()
        else:
            messagebox.showinfo("提示","不存在任何有效信息")

结果演示:

(1)用户选项页面,面向用户分两种群体,不同的用户拥有不同的权限。

(2)当点击确定按钮,出现用户登录页面,该页面根据(1)选择的用户不同,其“主题”会有相应变化,且具有三个选项“登录、注册、注销”

(3)当输入用户的账号以及密码正确成功登录时,会产生新的操作主窗口,不同的用户具有不同的功能选择。

(4)当用户点击注册时,记录着用户密码账号的txt会随之变化,

账号密码的txt文件中多了账号为“888”,密码为“888”的用户

同理,注销用户也会对txt文件产生影响,消除目标账号密码;该原理同样适用于学生用户中。

注意:因为功能以及步骤过多,这里不再一一展示,需要源代码请私聊博主哦~

创作不易,请点个赞哟~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值