本文已参与「新人创作礼」活动,一起开启掘金创作之路
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)
实现用户密码验证
- 循环体 在这里举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的时候直接跳过,进行下一次循环。
- 多分支选择结构
if<条件>;
<语句块1>
elif<条件1>:
<语句块2>
elif<条件2>:
<语句块3>
……
else:
<语句块n>
多分支选择结构中的几个分支之间是有逻辑关系的,不能随意颠倒顺序。
-
字典的操作
- 字典的创建:
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模块,然后调用该库。
- 下载easygui
使用pip下载easygui:
运行该命令等待一下下,如果出现successfully installed easygui 那么就下载成功了。
- 使用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的内建函数,我们自己建立的函数为自建函数。我们可以通过自己构建函数,让代码更高效。
- 函数定义
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)
-
函数的要素:
- 参数 在这里lista作为形参发挥着重要作用,它可以将函数域外面的数据传递进来即两个用户数据字典(实参)。
- 返回值 return退出函数,选择性地向调用方返回一个表达式。不带参数值时return语句返回None。
- 函数的调用:
login(lista)#调用login函数
让它更简洁
把相关的代码分配到一个模块里能让你的代码更好用,更易懂。
- 定义一个模块
f.py
def f():
print("人生苦短,我学python!")
return 0
- 调用模块
import f
f.f()#调用f模块中的f函数
例如我们在本例中调用登录等模块
import Login
import Operate
到这里我们的登录部分基本实现啦,大家可以自己尝试做一些:银行账户登录,以及学生管理系统登录等等有趣的东西。 敬请关注后面几期内容,会有更多有趣部分等你来实现!