图书管理系统——登录功能

237 阅读6分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路

0基础又怎么样,来这里五分钟教你使用Python肝一套图书管理系统! 我们先来康康这个图书管理系统具体是怎么样的,了解一下我们需要实现登录以及后面的借还等操作。 在这里插入图片描述 今天我们进行第一步:实现用户登录功能,我们将为你详细解释如何使用easygui模块让用户获得交互式体验、使用简单地循环和多分支选择结构实现一些逻辑处理,以及简单地列表的操作实现账户登录验证,最后我们有如何使用函数以及模块使我们的代码更简洁高效,下面将以图文的形式展开相关功能实现的解释,耐心看下去你定会有所收获!

登录身份选择代码

from easygui import *
import  Login
import Operate
#初始化
admsg = {'李元': '111', '王二': '222', '张三': '333'}
usermsg = {'小芳': '444', '婷婷': '555', '小辉': '666'}
def choice(cchoices):
    # 用户登录前身份选择
    if (cchoices == '管理员'):
        Login.login(admsg)
        while 1:
            c = choicebox(msg='请选择下列操作', title='管理员系统', choices=['查看借书书单', '添加书籍', '删除书籍', '退出'])
            if c != '退出':
                Operate.operate(c)
            else:
                msgbox("欢迎下次使用")
                break
    elif (cchoices == '普通用户'):
        Login.login(usermsg)
        while 1:
            c = choicebox(msg='请选择下列操作', title='学生操作系统', choices=['借书', '还书', '输入id查书', '查看书单', '退出'])
            if c != '退出':
                Operate.operate(c)
            else:
                msgbox("欢迎下次使用")
                break
    else:
        return 0

登录验证代码:

from easygui import *
def login(lista):
    # 登录,验证用户输入的信息
    user_info = []
    user_info = multpasswordbox(msg='请输入登录信息', title='Login', fields=('用户名', '密码'))
    name = user_info[0]
    password = user_info[1]
    if name in lista.keys():
        targp = lista[name]
        if targp == password:
            return (1)
        else:
            login(lista)
    else:
        msgbox("该用户不存在或账户错误,请重新输入")
        login(lista)


实现用户密码验证

  1. 循环体 在这里举while循环:
while 判断条件(condition):
    执行语句(statements)……

在这里插入图片描述如果写了一条无限循环的语句怎么让命令终结呢?我们可以用 CTRL+C 来中断循环,或是使用下面的循环语句来终止。

  • break 使用break可以终止当前循环
        while 1:
            c = choicebox(msg='请选择下列操作', title='管理员系统', choices=['查看借书书单', '添加书籍', '删除书籍', '退出'])
            if c != '退出':
                Operate.operate(c)
            else:
                msgbox("欢迎下次使用")
                break

在这个地方我使用了break来结束,这个无限循环,简而言之就是当用户选择退出窗口或是退出选项的时候,我们直接使用beak终止程序选择。

  • continue 可以结束单次循环,进行当前循环的下一次循环,简单就是跳出单次循环进行下一个循环,与break还是有很大不同的!
i=10
while(i>0):
    i -= 1
    if(i==5):
        continue
    else:
        print(i)

输出: 在这里插入图片描述

在碰到i等于5的时候直接跳过,进行下一次循环。

  1. 多分支选择结构
if<条件>;
<语句块1>
elif<条件1>:
<语句块2>
elif<条件2>:
<语句块3>
……
else:
<语句块n>

多分支选择结构中的几个分支之间是有逻辑关系的,不能随意颠倒顺序。

  1. 字典的操作

  • 字典的创建:
dic = {dic1:value01,dic2:value02,...}
dict5 = dict()#或者

程序初始化的时候我们需要用到字典的创建,具体如下:

#初始化
admsg = {'李元': '111', '王二': '222', '张三': '333'}
usermsg = {'小芳': '444', '婷婷': '555', '小辉': '666'}

使用字典合创建管理管理员与普通用户信息。

  • 字典添加元素 将键值对添加到字典中去
dic[key7]=value7#如果key7存在就是为key7的value赋值
  • 通过键查找值
key.value=dic[key]#找字典中key的值
  • 判断键值对是不是在字典中 如果要判断字典是否包含指定的 key,则可以使用 in 或 not in 运算符。需要指出的是,对于 dict 而言,in 或 not in 运算符都是基于 key 来判断的。
key7 in dic#判断key7是不是在字典中

验证用户输入的密码:

 if name in lista.keys():
        targp = lista[name]
        if targp == password:
            return (1)

交互显示

这里要讲到easygui的使用,所以第一步我们需要配置好环境,下载easygui模块,然后调用该库。

  1. 下载easygui 使用pip下载easygui: 在这里插入图片描述运行该命令等待一下下,如果出现successfully installed easygui 那么就下载成功了。 在这里插入图片描述
  2. 使用easygui库中有趣的模块:
choicebox(msg=' ', title=' ', choices=())  #使用序列(元祖或列表)作为选项。

按钮组件方便提供用户一个简单的按钮选项,但如果有很多选项,或者选项的内容特别长的话,最好使用easygui.multchoicebox(),如果选择选项返回值为该选项,否则为None。

multchoicebox(msg='', title=' ', choices=())

在这里采用easygui.choicebox()

import easygui
easygui.choicebox(msg='请选择下列操作', title='管理员系统', choices=['查看借书书单', '添加书籍', '删除书籍', '退出'])
msgbox(msg='', title=' ', ok_button='OK', image=None, root=None)

可以使用msgbox来显示一些信息。

定义一个函数

函数能提高应用的模块性,和代码的重复利用率。我们使用的input(),set()均为Python的内建函数,我们自己建立的函数为自建函数。我们可以通过自己构建函数,让代码更高效。

  1. 函数定义

def function( a ):
   "函数作用描述"
   functions
   return (b)

在这里我构造了一个登录函数:

def login(lista):
    # 登录,验证用户输入的信息
    user_info = []
    user_info = multpasswordbox(msg='请输入登录信息', title='Login', fields=('用户名', '密码'))
    name = user_info[0]
    password = user_info[1]
    if name in lista.keys():
        targp = lista[name]
        if targp == password:
            return (1)
        else:
            login(lista)
    else:
        msgbox("该用户不存在或账户错误,请重新输入")
        login(lista)
  1. 函数的要素:

  • 参数 在这里lista作为形参发挥着重要作用,它可以将函数域外面的数据传递进来即两个用户数据字典(实参)。
  • 返回值 return退出函数,选择性地向调用方返回一个表达式。不带参数值时return语句返回None。
  1. 函数的调用:
       login(lista)#调用login函数

让它更简洁

把相关的代码分配到一个模块里能让你的代码更好用,更易懂。

  1. 定义一个模块

f.py

def f():
    print("人生苦短,我学python!")
    return 0
  1. 调用模块
import f
f.f()#调用f模块中的f函数

例如我们在本例中调用登录等模块

import  Login
import Operate

到这里我们的登录部分基本实现啦,大家可以自己尝试做一些:银行账户登录,以及学生管理系统登录等等有趣的东西。 敬请关注后面几期内容,会有更多有趣部分等你来实现!