当前位置:   article > 正文

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

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)

  1. import tkinter as tk
  2. from tkinter import ttk
  3. from tkinter import simpledialog,messagebox
  4. from PIL import ImageTk,Image
  5. class LibrarySystem:
  6. #初始化图书馆管理系统类,初始化根窗口,并设置窗口标题和窗口大小,调用creation函数创建界面
  7. def __init__(self,root):#利用构造方法初始化
  8. self.root = root
  9. self.root.title('图书馆管理系统') # 设置主窗口标题
  10. self.root.geometry("600x400")
  11. self.creation()
'
运行

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

  1. def creation(self):#创建相关基本信息
  2. self.operator_dict={}
  3. self.student_dict={}
  4. self.read_operator()
  5. 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组件即可。

  1. self.bg_image=Image.open("Library.jpg")
  2. self.bg_photo=ImageTk.PhotoImage(self.bg_image)
  3. self.bg_lable=tk.Label(self.root,image=self.bg_photo)
  4. self.bg_lable.place(x=0,y=0,relwidth=1,relheight=1)
  5. self.chacterist_lable = tk.Label(self.root, text="用户选项")
  6. self.chacterist_lable.place(x=290, y=110)
  7. self.chacterist_Combobox = ttk.Combobox(self.root,values=("图书管理员","学生用户"),width=20)#使用Entry输入组件,用于显示和输入'用户名'信息
  8. self.chacterist_Combobox.place(x=240,y=130)
  9. self.login_button = tk.Button(self.root, text="确定",
  10. command=self.change) # 使用tkinter的button点击组件,用于用户输入完用户名和密码然后登录,且设置了点击登录会有相应的反应
  11. self.login_button.place(x=300, y=155)

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

  1. #隐藏登录界面的一些组件,显示登录成功标签
  2. def disapper(self):#将组件销毁
  3. self.username_lable.place_forget() # 让控件“不再显示”但控件还存在可以再次pack出来,既实现跳转操作
  4. self.username_entry.place_forget()
  5. self.password_lable.place_forget()
  6. self.password_entry.place_forget()
  7. self.login_button.place_forget()
  8. self.option_lable.place_forget()
  9. self.login_Combobox.place_forget()
  10. self.signup_lable = tk.Label(self.root, text="您已成功登录!")
  11. self.signup_lable.place(x=210, y=140)
  12. 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组件即可。

  1. def sign_up(self, number):
  2. self.chacterist_lable.place_forget()
  3. self.chacterist_Combobox.place_forget()
  4. self.login_button.place_forget()
  5. self.username_lable = tk.Label(self.root, text="用户名")
  6. self.username_lable.place(x=200, y=110)
  7. self.username_entry = tk.Entry(self.root) # 使用Entry输入组件,用于显示和输入'用户名'信息
  8. self.username_entry.place(x=240, y=110)
  9. self.password_lable = tk.Label(self.root, text="密码")
  10. self.password_lable.place(x=210, y=140)
  11. self.password_entry = tk.Entry(self.root, show='*') # 使用Entry输入组件,用于显示和输入"密码"信息,且输出的方式为‘*’
  12. self.password_entry.place(x=240, y=140)
  13. if number == '图书管理员':
  14. self.option_lable = tk.Label(self.root, text="选项")
  15. self.option_lable.place(x=210, y=170)
  16. self.login_Combobox=ttk.Combobox(self.root,values=("登录", "注册", "注销"),width=17)
  17. self.login_Combobox.place(x=241,y=170)
  18. self.login_button = tk.Button(self.root, text="确定",
  19. command=self.user_option1) # 使用tkinter的button点击组件,用于用户输入完用户名和密码然后登录,且设置了点击登录会有相应的反应
  20. self.login_button.place(x=295, y=205)
  21. elif number == '学生用户':
  22. self.option_lable = tk.Label(self.root, text="选项")
  23. self.option_lable.place(x=210, y=170)
  24. self.login_Combobox = ttk.Combobox(self.root, values=("登录", "注册", "注销"), width=17)
  25. self.login_Combobox.place(x=241, y=170)
  26. self.login_button = tk.Button(self.root, text="确定",
  27. command=self.user_option2) # 使用tkinter的button点击组件,用于用户输入完用户名和密码然后登录,且设置了点击登录会有相应的反应
  28. self.login_button.place(x=295, y=205)
'
运行

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

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

结果演示:

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

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

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

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

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

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

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

创作不易,请点个赞哟~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/827912
推荐阅读
相关标签
  

闽ICP备14008679号