图书管理系统登录页面--课后程序(Python程序开发案例教程-黑马程序员编著-第12章-课后作业)

这篇具有很好参考价值的文章主要介绍了图书管理系统登录页面--课后程序(Python程序开发案例教程-黑马程序员编著-第12章-课后作业)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实例3:图书管理系统登录页面

登录与注册是程序中最基本的模块。用户只有登录成功后,才可以使用应用系统中的全部功能。若用户没有登录账号,可通过注册界面设置登录账号信息。某图书管理系统的登录窗口如图1所示。

python 实例3:图书管理系统登录页面,Python,python,开发语言,java

 

  1. 登录界面

图1的窗口中包含用户名、密码、验证码、登录、注册、退出。当用户输入正确的登录信息,点击“登录”按钮后,程序会弹出一个欢迎用户的对话框,如图2所示。

python 实例3:图书管理系统登录页面,Python,python,开发语言,java

 

  1. 欢迎对话框

用户点击“注册”按钮后,会弹出注册用户的窗口,如图3所示。

python 实例3:图书管理系统登录页面,Python,python,开发语言,java

 

  1. 注册窗口

用户填写完个人信息后,点击“确认注册”按钮,会记录用户的信息,并弹出“注册成功”对话框,如图4所示。

python 实例3:图书管理系统登录页面,Python,python,开发语言,java

 

  1. 注册成功对话框

本实例要求使用tkinter,实现包含以上所示登录功能与注册功能的图形窗口。

实例目标

  1. 熟练地使用tkinter模块创建基础组件
  2. 熟练地使用tkinter模块创建消息对话框

实例分析

图书管理系统主要包含登录窗口和注册窗口,关于它们的介绍如下:

  1. 登录窗口

图书管理系统的登录窗口主要包含以下元素:

  1. 根窗口:大小为450*300且不可拉伸。
  2. 窗口标题:内容为“图书管理系统”。
  3. 4个标签组件:内容分别为“用户名”、“密码”、“验证码”和随机6位验证码。
  4. 3个文本框:分别供用户输入“用户名”、“密码”和“验证码”
  5. 3个按钮:按钮的标题分别为“登录”、“注册”、“退出”。

单击“登录”按钮后,若用户填写的密码有误,则弹出“密码错误”对话框;若用户填写的验证码有误,则弹出“验证码错误”对话框;若用户未填写用户名与密码,则弹出“用户名或密码不能为空”对话框;若用户填写的信息均无误,则弹出欢迎对话框。

如果用户并未注册过图书管理系统,则会弹出提醒用户先注册的对话框,通过选择对话框中包含的选项按钮可决定是否注册用户,或者可直接单击登录界面的“注册”按钮进入注册窗口。

  1. 注册窗口

图书管理系统的注册窗口主要包含以下元素:

  1. 新窗口:初始大小为350*200且可拉伸。
  2. 窗口标题:内容为“注册”。
  3. 3个标签组件:内容分别为“用户名:”、“请输入密码:”、“请再次输入密码:”。
  4. 3个文本框:供用户输入账户、密码或确认密码。
  5. 1个按钮:按钮的标题为“确认注册”

单击“确认注册”按钮后,若用户填写已注册过的名称,则弹出“用户名已存在”的对话框;若用户未填写用户名或密码,则弹出“用户名或密码不能为空”的对话框;若用户两次输入不同的密码,则弹出“前后密码不一致”的对话框;若用户填写的信息均无误,则弹出如图4所示的对话框。

实现本实例的过程比较简单,可直接先创建登录窗口,并为窗口中的每个按钮组件绑定与事件相关的函数。

代码实现

(1)定义一个随机产生6位验证码的函数verifycode(),该函数返回随机生成的验证码,具体代码如下。

def verifycode():

    # 验证码

    code_list = ''

    # 每一位验证码都有三种可能(大写字母,小写字母,数字)

    for i in range(6):  # 控制验证码生成的位数

        state = random.randint(1, 3)

        if state == 1:

            first_kind = random.randint(65, 90)  # 大写字母

            random_uppercase = chr(first_kind)

            code_list = code_list + random_uppercase

        elif state == 2:

            second_kinds = random.randint(97, 122)  # 小写字母

            random_lowercase = chr(second_kinds)

            code_list = code_list + random_lowercase

        elif state == 3:

            third_kinds = random.randint(0, 9)

            code_list = code_list + str(third_kinds)

return code_list

(2)定义一个处理用户登录业务的函数usr_log_in (),该函数中需先从登录窗口中获取用户输入的用户名、密码和验证码,其次尝试从本地磁盘中访问保存用户信息的文件,然后通过if-else语句判断用户名、密码与验证码是否匹配,并根据不同的匹配情况弹出相应的对话框,具体代码如下。

# 登录函数

def usr_log_in():

    # 输入框获取用户名、密码、验证码

    usr_name = var_usr_name.get()

    # 密码

    usr_pwd = var_usr_pwd.get()

    # 验证码

    var_vercode = var_usr_vercode.get()

    # 从本地字典获取用户信息,如果没有则新建本地数据库

    try:

        with open('usr_info.pickle', 'rb') as usr_file:

            usrs_info = pickle.load(usr_file)

    except FileNotFoundError:

        with open('usr_info.pickle', 'wb') as usr_file:

            usrs_info = {'admin': 'admin'}

            pickle.dump(usrs_info, usr_file)

    # 判断用户名和密码是否匹配

    if usr_name in usrs_info:

        if usr_pwd == usrs_info[usr_name]:

            if var_vercode == verification_Code:

                tk.messagebox.showinfo(title='welcome',

message='欢迎您:' + usr_name)

            else:

                tk.messagebox.showerror(message='验证码错误')

        else:

            tk.messagebox.showerror(message='密码错误')

    # 用户名密码不能为空

    elif usr_name == '' or usr_pwd == '':

        tk.messagebox.showerror(message='用户名或密码不能为空')

    # 不在磁盘中弹出是否注册的对话框框

    else:

        is_signup = tk.messagebox.askyesno('欢迎', '您还没有注册,是否现在注册')

        if is_signup:

            usr_sign_up()

(3)定义一个处理用户注册业务的函数usr_sign_up (),该函数中包括两个子业务,一是创建注册窗口,另一是处理注册业务,具体代码如下。

# 注册函数

def usr_sign_up():

    # 确认注册时的相应函数

    def signtowcg():

        # 获取输入框内的内容

        nn = new_name.get()

        np = new_pwd.get()

        npf = new_pwd_confirm.get()

        # 本地加载已有用户信息,如果没有则已有用户信息为空

        try:

            with open('usr_info.pickle', 'rb') as usr_file:

                exist_usr_info = pickle.load(usr_file)

        except FileNotFoundError:

            exist_usr_info = {}

            # 检查用户名已存在、密码为空、密码前后不一致

        if nn in exist_usr_info:

            tk.messagebox.showerror('错误', '用户名已存在')

        elif np == '' or nn == '':

            tk.messagebox.showerror('错误', '用户名或密码不能为空')

        elif np != npf:

            tk.messagebox.showerror('错误', '密码前后不一致')

        # 注册信息没有问题则将用户名、密码存入数据库

        else:

            exist_usr_info[nn] = np

            with open('usr_info.pickle', 'wb') as usr_file:

                pickle.dump(exist_usr_info, usr_file)

            tk.messagebox.showinfo('欢迎', '注册成功')

            # 注册成功关闭注册框

            window_sign_up.destroy()

    # 新建注册界面

    window_sign_up = tk.Toplevel(window)

    window_sign_up.geometry('350x200')

    window_sign_up.title('注册')

    # 用户名变量及标签、输入框

    new_name = tk.StringVar()

    tk.Label(window_sign_up, text='用户名:').place(x=10, y=10)

    tk.Entry(window_sign_up, textvariable=new_name).place(x=150, y=10)

    # 密码变量及标签、输入框

    new_pwd = tk.StringVar()

    tk.Label(window_sign_up, text='请输入密码:').place(x=10, y=50)

    tk.Entry(window_sign_up, textvariable=new_pwd,

show='*').place(x=150, y=50)

    # 重复密码变量及标签、输入框

    new_pwd_confirm = tk.StringVar()

    tk.Label(window_sign_up, text='请再次输入密码:').place(x=10, y=90)

    tk.Entry(window_sign_up,

textvariable=new_pwd_confirm, show='*').place(x=150, y=90)

    # 确认注册按钮及位置

    bt_confirm_sign_up = tk.Button(window_sign_up, text='确认注册',

        command=signtowcg)

    bt_confirm_sign_up.place(x=150, y=130)

(4)定义一个处退出图书管理系统的函数usr_sign_quit(),具体代码如下。

# 退出的函数

def usr_sign_quit():

    window.destroy()

(5)创建登录窗口,并为该窗口中的按钮绑定前面定义的事件函数,具体代码如下。

# 验证码值

verification_Code = verifycode()

# 窗口

window = tk.Tk()

window.title('图书管理系统')

window.geometry('450x300')

# 设置登录窗口大小不可拉伸

window.resizable(width=False, height=False)

# 画布放置图片

canvas = tk.Canvas(window, height=300, width=500)

imagefile = ImageTk.PhotoImage(file=r'背景.png')

image = canvas.create_image(0, 0, anchor='nw', image=imagefile)

canvas.pack(side='top')

# 创建4个标签

tk.Label(window, text='用户名').place(x=100, y=110)

tk.Label(window, text='   ').place(x=100, y=150)

tk.Label(window, text='验证码').place(x=100, y=190)

tk.Label(window, text=verification_Code).place(x=310, y=190)

# 用户名输入框

var_usr_name = tk.StringVar()

entry_usr_name = tk.Entry(window, textvariable=var_usr_name)

entry_usr_name.place(x=160, y=110)

# 密码输入框

var_usr_pwd = tk.StringVar()

entry_usr_pwd = tk.Entry(window, textvariable=var_usr_pwd, show='*')

entry_usr_pwd.place(x=160, y=150)

# 验证码输入框

var_usr_vercode = tk.StringVar()

var_usr_vercode = tk.Entry(window, textvariable=var_usr_vercode)

var_usr_vercode.place(x=160, y=190)

# 登录、注册、退出按钮

bt_login = tk.Button(window, text='登录', command=usr_log_in)

bt_login.place(x=140, y=230)

bt_logup = tk.Button(window, text='注册', command=usr_sign_up)

bt_logup.place(x=210, y=230)

bt_logquit = tk.Button(window, text='退出', command=usr_sign_quit)

bt_logquit.place(x=280, y=230)

# 主循环

window.mainloop()

代码测试

运行程序弹出登录窗口,单击该窗口中的“注册”按钮后弹出注册窗口,分别在输入框中输入“itcast”、“123”、“1234”,单击“确认注册”按钮之后的界面如图5所示。

python 实例3:图书管理系统登录页面,Python,python,开发语言,java

 

  1. 密码不一致对话框

单击图5中的“确定”按钮返回注册窗口,删除再次输入密码文本框中的最后一个字符后,再次单击“确认注册”按钮之后的界面如图6所示。

python 实例3:图书管理系统登录页面,Python,python,开发语言,java

 

  1. 注册成功对话框

单击图6中的“确定”按钮返回登录窗口,在该窗口中填写刚刚注册的用户信息,并按照提示输入验证码,单击“登录”按钮之后的界面如图7所示。

python 实例3:图书管理系统登录页面,Python,python,开发语言,java

 

  1. 登录成功对话框

单击图7的“确定”按钮即可关闭对话框。文章来源地址https://www.toymoban.com/news/detail-774720.html

到了这里,关于图书管理系统登录页面--课后程序(Python程序开发案例教程-黑马程序员编著-第12章-课后作业)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Python】Python高校图书馆书籍管理系统(登录、注册、功能源码设计)【独一无二】

    👉博__主👈:米码收割机 👉技__能👈:C++/Python语言 👉公众号👈:测试开发自动化 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术 本文是基于PyQT5开发的一款Python高校图书馆书籍管理系统,源码可以关注公众号,后台回复: 高校图书馆管理系统 获

    2024年02月08日
    浏览(43)
  • 学生管理系统-课后程序(JAVA基础案例教程-黑马程序员编著-第六章-课后作业)

    【案例6-2】 学生管理系统 【案例介绍】 1.任务描述 在一所学校中,对学生人员流动的管理是很麻烦的,本案例要求编写一个学生管理系统,实现对学生信息的添加、删除、修改和查询功能。每个功能的具体要求如下: 系统的首页:用于显示系统所有的操作,并根据用户在控

    2024年02月03日
    浏览(63)
  • 银行管理系统--课后程序(Python程序开发案例教程-黑马程序员编著-第7章-课后作业)

    从早期的钱庄到现如今的银行,金融行业在不断地变革;随着科技的发展、计算机的普及,计算机技术在金融行业得到了广泛的应用。银行管理系统是一个集开户、查询、取款、存款、转账、锁定、解锁、退出等一系列的功能的管理系统,该系统中各功能的介绍如下。 开户功

    2024年02月04日
    浏览(51)
  • python GUI编程--实现计算器和图书管理系统注册和登录的可视化操作

    1.简易计算器:编写程序,实现两个数的“加减乘除”,界面如图所示  2.利用tkinter设计一个登录界面,并实现各个命令按钮的功能: 3.利用tkinter设计一个下面的界面, 该界面的功能是:当单击“insert point”按钮时,第一个文本框的内容复制一份显示在第二个文本框内,当单

    2024年02月10日
    浏览(41)
  • 微信小程序图书管理系统

    目 录 摘 要 I Abstract II 目 录 V 1 绪论 1 1.1研究背景 1 1.2研究课题和意义 2 1.3研究内容和论文结构 3 2 移动网络环境下图书管理系统的现状分析 4 2.1移动网络环境下图书管理系统的特点 4 2.2当前国内外移动网络环境下图书管理系统的现状 7 2.3微信给移动网络环境下图书管理系统

    2023年04月09日
    浏览(42)
  • Spring第三课,Lombok工具包下载,对应图书管理系统列表和登录界面的后端代码,分层思想

    目录 一、Lombok工具包下载 二、前后端互联的图书管理系统 规范  三、分层思想 三层架构: 1.表现层 2.业务逻辑层 3.数据层 这个工具包是为了做什么呢? 他是为了不去反复的设置setting and getting 而去产生的工具包 ⚠️工具包下载:推荐不要下载太新的(较高的),也不要太

    2024年02月05日
    浏览(42)
  • Java Web程序设计——图书管理系统

    这是一个图书管理系统,都是用原生的·Java Web写的,前后端代码都是自己写的。第一次写博客希望大家能够支持。 项目结构图览 采用的工具与技术 前端页面设计:html+css 后端技术:jsp+servlet+javaBean+jdbc+dao 服务器版本:Tomcat8.5 数据库:Mysql数据库 开发工具:Eclipse、Chorme、

    2024年02月09日
    浏览(40)
  • ssm微信小程序的图书管理系统

    对图书管理的流程进行科学整理、归纳和功能的精简,通过软件工程的研究方法,结合当下流行的互联网技术,最终设计并实现了一个简单、易操作的图书管理小程序。内容包括系统的设计思路、系统模块和实现方法。系统使用过程主要涉及到管理员和用户两种角色,主要包

    2024年04月23日
    浏览(42)
  • 微信小程序图书馆座位预约管理系统

    开发工具:IDEA、微信小程序 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 前端技术:vue、uniapp 服务端技术:springboot+mybatis 本系统分微信小程序和管理后台两部分,项目采用前后端分离 项目功能描述: 1.微信小程序:登录、注册、主页、公告、轮播图、图书馆预约

    2023年04月18日
    浏览(44)
  • [N-117]基于微信小程序图书馆管理系统

    开发工具:IDEA、微信小程序 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 前端技术:vue、uniapp 服务端技术:springboot+mybatis-plus 本系统分微信小程序和管理后台两部分,项目采用前后端分离 系统主要分为两个角色:管理员和普通用户。 1.普通用户(小程序):登录、

    2024年01月15日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包