使用Python开发图书管理系统

一.主函数

#主函数
while True:
    menu()
    operate = int(input("请输入数字进行操作:0-5进行操作:"))#input函数所输入的结果是一个字符串类型于是需要通过类型转换
    #通过判断得出的所要执行的操作
    if operate==1:
        Show_info()
    elif operate==2:
        add_info()
    elif operate==3:
        delete()
    elif operate==4:
        search()
    elif operate==5:
        modify()
    elif operate==0:
        print("退出程序,感谢您的使用!")
        break
    else:
        print("输入无效!")

先实习一个无限循环,为了能够对其中的函数进行调用。通过输入对应的的数字来调用对应的方法。如果不对输入的数字进行强制转化,判断语句的数字要加引号。接下来是各个方法的撰写。

二.菜单

#菜单页面设计
def menu():
    print('*'*16+'   图书管理系统   '+'*'*16)
    print('\n'*2)
    print('      '+'*'*10+'1. 显示图书信息'+'*'*10)
    print('\n'*2)
    print('      '+'*'*10+'2. 添加图书信息'+'*'*10)
    print('\n'*2)
    print('      '+'*'*10+'3. 删除图书信息'+'*'*10)
    print('\n'*2)
    print('      '+'*'*10+'4. 查找图书信息'+'*'*10)
    print('\n'*2)
    print('      '+'*'*10+'5. 修改图书信息'+'*'*10)
    print('\n'*2)
    print('      '+'*'*10+'0.     退出    '+'*'*10)
    print('\n'*2)

首先是“菜单”,为了让用户能够更加直观的看出具体的数字对应的使用功能,我们就需要为用户提供一个菜单。

三.显示图书信息

def Show_info():
    if len(Book_info)==0:
        print("温馨提示:")
        print("系统无信息,请添加!")
    else:
        print('*'*40+"图书信息表"+'*'*40)
        for book_name,info in Book_info.items():
            print(f"{book_name}信息如下:")
            for row,re_info in info.items():
                print("{}:{}".format(row,re_info))
                print('|')
            print('-'*50)

四.添加图书信息

def add_info():
    '''添加书籍函数'''
    info={}
    new_book=input("请添加书名:\n")
    if new_book not in Book_info:
        #通过“异常”处理提高编程的健壮性
        try:
            No=int(input("请添加图书的编号:\n"))
            price=float(input("请添加图书的价格:\n"))
            year=int(input("请添加图书的出版年份:\n"))
            ty=input("请添加图书的类型:\n")
            author=input("请添加图书的作者:\n")
            info['No']=No
            info['year']=year
            info['price']=price
            info['type']=ty
            info['author']=author
            Book_info[new_book]=info
            print("信息添加成功!")
        except ValueError:
            print("输入有误!")
    else:
        print("该图书信息已存在!")

五.删除图书信息

def delete():
    '''删除书籍函数'''
    if len(Book_info)==0:
        print("系统无信息,请添加!")
    else:
        del_book=input("请输入要删除图书:\n")
        if del_book in Book_info:
            del Book_info[del_book]
            print("删除成功!")
        else:
            print("该图书信息不存在!\n删除失败!")

六.查找图书信息

def search():
    '''由于个人设计的字典嵌套类型导致(图书书名作为键值)于是查找图书信息时只通过能过图书的书名遍历'''
    if len(Book_info)==0:
        print("系统无信息,请添加!")
    else:
        name=input("请输入要所要查找的书籍名:\n")
        for book_name,info in Book_info.items(): #先通过外层字典的遍历查找匹配到要查找的图书信息
            if name==book_name:
                print("{}的信息如下:".format(book_name))
                print('-'*50)
                for row,re_info in info.items(): 
                    print("{}'s {}:{}".format(book_name,row,re_info))
                break
            else:
                print("该图书不存在!")
        print('-'*50)

七.修改图书信息

def modify():
    '''此函数功能可更改书籍信息(书籍编号、价格、出版年份、类型)'''
    if len(Book_info)==0:
        print("系统无信息,请添加!")
    else:
        name=input("请输入要更改的信息的图书书名:\n")
        if name in Book_info.keys():
            while True:
                #修改菜单:提供多种数据的修改
                menu2()
                oper=int(input("请输入要修改的信息项:"))
                if oper==1:
                    new_no=int(input("更改后的书籍编号为:\n"))
                    Book_info[name]['No']=new_no
                    print("修改书籍编号成功!")
                elif oper==2:
                    new_price=float(input("更改后的价格为:\n"))
                    Book_info[name]['price']=new_price
                    print("修改价格出版年份成功!")
                elif oper==3:
                    new_year=int(input("更改后的出版年份为:\n"))
                    Book_info[name]['year']=new_year
                    print("修改出版年份成功!")
                elif oper==4:
                    new_type=input("更改后的类型为:\n")
                    Book_info[name]['type']=new_type
                    print("修改类型成功!")
                elif oper==5:
                    new_author=input("更改后的作者为:\n")
                    Book_info[name]['author']=new_author
                    print("修改作者成功!")
                else:
                    print("退出修改界面!")
                    break
        else:
            print("该图书不存在!")
#修改菜单设计
def menu2():
    print("请输入要更改的内容:\n")
    print('\n')
    print('*'*10+'1.更改书籍编号 '+'*'*7+'\n')
    print('\n')
    print('*'*10+'2. 更改价格 '+'*'*10+'\n')
    print('\n')
    print('*'*10+'3.更改出版年份 '+'*'*7+'\n')
    print('\n')
    print('*'*10+'4. 更改类型 '+'*'*10+'\n')
    print('\n')
    print('*'*10+'5. 更改作者 '+'*'*10+'\n')
    print('\n')    
    print('*'*10+'0. 退出修改界面 '+'*'*10+'\n')

在修改功能里头,我们可以做一个小菜单,让用户选择要更改的信息项。

八.总结

当然你也可以用嵌套列表来实现数据存储与删除,当然有了items()方法,字典相对于列表来说简介有效许多。

作者:Cosophia

物联沃分享整理
物联沃-IOTWORD物联网 » 使用Python开发图书管理系统

发表回复