圖書管理系統—功能函式
我們使用函式可以使我們的代碼結構分明,并且可以實代碼的多次利用,程式更加緊湊,有條理
-
登錄部分
密碼驗證:
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
洗掉與增添圖書幾乎是一樣的只不過是兩者使用的函式不一樣而已,本質都是對表進行處理,
-
通過id查找書目
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)
今天就講這些啦,有問題隨時留言哦!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/200985.html
標籤:java
下一篇:Python入門基礎語法知識1
