書籍管理システム-第2章機能機能

ライブラリ管理システム-機能機能

関数を使用してコード構造を明確にし、実際のコードで複数回使用できます。プログラムはよりコンパクトで整理されています。

  • ログインセクション

パスワードの検証:

    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

これらの2つの部分は、セルの出力読み取り操作です。

  • 本を削除する

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

ブックの削除と追加は、2つで使用される機能が異なることを除いてほぼ同じであり、本質はテーブルを処理することです。

  • 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)

今日はそれについて話しましょう。ご不明な点がございましたら、お気軽にメッセージを残してください。

おすすめ

転載: blog.csdn.net/qq_46258465/article/details/109410052