我们使用函数可以使我们的代码结构分明,并且可以实代码的多次利用,程序更加紧凑,有条理
密码验证:
user_info=[]
user_info=multpasswordbox(msg='请输入登录信息',title='Login',fields=('用户名','密码'))
name=user_info[0]
password=user_info[1]
在这里multpasswordbox返回值数据类型为列表。
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)
def operate(op_choice):
if op_choice=='查看借书书单':
display_book()
elif op_choice =='添加书籍':
append_book()
elif op_choice =='删除书籍':
delete_book()
elif op_choice =='借书':
borrow_book()
elif op_choice =='还书':
return_book()
elif op_choice =='输入id查书':
search_book()
elif op_choice =='查看书单':
all_book()
相当于if ——else,多个if也可以达到相同的效用。
这个部分可以有效地为后面的函数执行做所谓的“广播”处理。
def borrow_book():
borrow_msg=[]
borrow_msg = multenterbox("借书", "图书借阅系统", ["书名", "id", "作者"])
br=0
for i in range(1,ws.max_row):
if ws.cell(row=i,column=1).value==borrow_msg[0] or ws.cell(row=i,column=2).value==borrow_msg[1]:
print("书单有该书籍")
wbw.append(borrow_msg)
ws.delete_rows(i)
br=1
wb.save('books.xlsx')
return
if br==0:
print("图书馆无该书")
wb.save('books.xlsx')
return
def return_book():
re=0
borrow_msg = multenterbox("还书", "图书借阅系统", ["书名","id", "作者"])
for i in range(1,wbw.max_row):
if wbw.cell(row=i,column=1).value==borrow_msg[0]:
print("书单有该书籍")
ws.append(borrow_msg)
wbw.delete_rows(i)
re=1
wb.save('books.xlsx')
return
if re==0:
print("改书未在借书单内")
wb.save('books.xlsx')
return
这两个部分操作是一样的,只不过一个是对sheet1进行了添加,而对另外一个删减。所谓借还就是对不同的sheet页进行特定的操作不同而已。
def all_book():
print(ws["A"])
for cell in ws["A"]:
print(cell.value)
return
def display_book():
for cell in wbw["A"]:
print(cell.value)
return
这两个部分就是对于单元格的输出读取操作。
def delete_book():
colunms=[]
for col in ws["A"]:
colunms.append(col.value)
while True:
de_book=choicebox(msg='请选择要删除的书',title='图书管理系统',choices=colunms)
if de_book in colunms:
ws.delete_rows(de_book.rows)
print("删除成功")
break
else:
print("删除失败")
continue
def append_book():
append_msg=[]
append_msg=multenterbox("添加新书","图书管理系统",["书名","id","作者"])
ws.append(append_msg) # 也可以使用遍历rows,同时把遍历的内容添加到表格里,这样就实现了多行写入。
wb.save('books.xlsx')
return
删除与增添图书几乎是一样的只不过是两者使用的函数不一样而已,本质都是对表进行处理。
def search_book():
search_msg=enterbox("输入需找书的id","图书借阅系统",)
for i in range(1,ws.max_row):
if ws.cell(row=i,column=2).value==search_msg:
print("书为",ws.cell(row=i,column=3).value,"作品",ws.cell(row=i,column=1).value)
return
在这个部分我们复用函数operate()体现了函数的妙用——利用率提高,并且有多个函数嵌套,和函数的递归,其中不乏关于局部变量与全局变量的使用。
def choice(cchoices):
if(cchoices == '管理员'):
login(admsg)
while 1:
c=choicebox(msg='请选择下列操作', title='管理员系统', choices=['查看借书书单', '添加书籍', '删除书籍','退出'])
if c !='退出':
operate(c)
else:
msgbox("欢迎下次使用")
break
elif (cchoices == '普通用户'):
login(usermsg)
while 1:
c=choicebox(msg='请选择下列操作', title='学生操作系统', choices=['借书', '还书','输入id查书','查看书单', '退出'])
if c !='退出':
operate(c)
else:
msgbox("欢迎下次使用")
break
else:
return 0
if __name__ == "__main__":
while 1:
cchoices = buttonbox(msg='选择登陆方式', title='Library', choices=('普通用户', '管理员'))
if cchoices is None:
break
else:
choice(cchoices)
补充:
if name == 'main’的意思是:当.py文件被直接运行时,if name == 'main’之下的代码块将被运行;当.py文件以模块形式被导入时,if name == 'main’之下的代码块不被运行.
# 图书管理系统
from easygui import *
from openpyxl import *
admsg = {'李元': '111', '王二': '222', '张三': '333'}
usermsg = {'小芳': '444', '婷婷': '555', '小辉': '666'}
cchoices = 0
wb = load_workbook(r"E:\library\books.xlsx")
print(wb.sheetnames)
ws = wb['Sheet1']
wbw = wb['bbook_sheet']
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)
def display_book():
for cell in wbw["A"]:
print(cell.value)
return
def append_book():
append_msg = []
append_msg = multenterbox("添加新书", "图书管理系统", ["书名", "id", "作者"])
ws.append(append_msg) # 也可以使用遍历rows,同时把遍历的内容添加到表格里,这样就实现了多行写入。
wb.save('books.xlsx')
return
def delete_book():
colunms = []
for col in ws["A"]:
colunms.append(col.value)
while True:
de_book = choicebox(msg='请选择要删除的书', title='图书管理系统', choices=colunms)
if de_book in colunms:
ws.delete_rows(de_book.rows)
print("删除成功")
break
else:
print("删除失败")
continue
def borrow_book():
borrow_msg = []
borrow_msg = multenterbox("借书", "图书借阅系统", ["书名", "id", "作者"])
br = 0
for i in range(1, ws.max_row):
if ws.cell(row=i, column=1).value == borrow_msg[0] or ws.cell(row=i, column=2).value == borrow_msg[1]:
print("书单有该书籍")
wbw.append(borrow_msg)
ws.delete_rows(i)
br = 1
wb.save('books.xlsx')
return
if br == 0:
print("图书馆无该书")
wb.save('books.xlsx')
return
def return_book():
re = 0
borrow_msg = multenterbox("还书", "图书借阅系统", ["书名", "id", "作者"])
for i in range(1, wbw.max_row):
if wbw.cell(row=i, column=1).value == borrow_msg[0]:
print("书单有该书籍")
ws.append(borrow_msg)
wbw.delete_rows(i)
re = 1
wb.save('books.xlsx')
return
if re == 0:
print("改书未在借书单内")
wb.save('books.xlsx')
return
def search_book():
search_msg = enterbox("输入需找书的id", "图书借阅系统", )
for i in range(1, ws.max_row):
if ws.cell(row=i, column=2).value == search_msg:
print("书为", ws.cell(row=i, column=3).value, "作品", ws.cell(row=i, column=1).value)
return
def all_book():
print(ws["A"])
for cell in ws["A"]:
print(cell.value)
return
wb.save('books.xlsx')
def operate(op_choice):
if op_choice == '查看借书书单':
display_book()
elif op_choice == '添加书籍':
append_book()
elif op_choice == '删除书籍':
delete_book()
elif op_choice == '借书':
borrow_book()
elif op_choice == '还书':
return_book()
elif op_choice == '输入id查书':
search_book()
elif op_choice == '查看书单':
all_book()
def choice(cchoices):
if (cchoices == '管理员'):
login(admsg)
while 1:
c = choicebox(msg='请选择下列操作', title='管理员系统', choices=['查看借书书单', '添加书籍', '删除书籍', '退出'])
if c != '退出':
operate(c)
else:
msgbox("欢迎下次使用")
break
elif (cchoices == '普通用户'):
login(usermsg)
while 1:
c = choicebox(msg='请选择下列操作', title='学生操作系统', choices=['借书', '还书', '输入id查书', '查看书单', '退出'])
if c != '退出':
operate(c)
else:
msgbox("欢迎下次使用")
break
else:
return 0
if __name__ == "__main__":
msgbox('欢迎进入图书管理系统', 'Library')
while 1:
cchoices = buttonbox(msg='选择登陆方式', title='Library', choices=('普通用户', '管理员'))
if cchoices is None:
break
else:
choice(cchoices)
今天就讲这些啦,有问题随时留言哦!!!