创作目的:
通过设计图书馆管理系统,将图书馆管理员与学生用户分开处理,并通过不同的目标用户展示不同的功能与不同的权限操作。
注意事项:
此代码主要用于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文件产生影响,消除目标账号密码;该原理同样适用于学生用户中。
注意:因为功能以及步骤过多,这里不再一一展示,需要源代码请私聊博主哦~
创作不易,请点个赞哟~