栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python图书管理系统?换一种,水果营养查询系统

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python图书管理系统?换一种,水果营养查询系统

图书管理系统写了太多了,这次换个思路,当然,完全可以改回到图书管理系统,代码思路不变,只是提供了一种新的系统思路

def meun():
    menu_info = '''+-------水果营养查询系统-------+
    | 1)添加水果信息 
    | 2)显示所有水果的信息 
    | 3)删除水果信息 
    | 4)修改水果信息 
    | 5)按含水量高-低显示水果信息 
    | 6)按含水量低-高显示水果信息 
    | 7)按VC含量高-低显示水果信息 
    | 8)按VC含量低-高显示水果信息 
    | 9)保存水果信息到文件(fruit.txt) 
    | 10)从文件中读取水果数据(fruit.txt) 
    | 退出:其他任意按键<回车> 
+----------------------+
    '''
    print(menu_info)
 
# 用于sorted排序
def get_water(*l):
    for x in l:
        return x.get("water")
def get_vc(*l):
    for x in l:
        return x.get("vc")
 
#1)添加水果信息
def add_fruit_info():
    #用列表存储水果信息,返回值为该列表
    L = []
    while True:
        n = input("请输入水果名字:")
        # 名字为空,跳出循环
        if not n: 
            break
        #捕获异常
        try:
            w = int(input("请输入含水量(ml/100g):"))
            v = int(input("请输入VC含量(ml/100g):"))
        except:
            print("输入无效,不是整形数值....重新录入信息")
            continue
        #用字典形式易于提取想要的信息
        info = {"name":n,"water":w,"vc":v}
    
        L.append(info)
    print("水果信息录入完毕!!!")
    return L
 
#2)显示所有水果的信息
def show_fruit_info(fruit_info):
    if not fruit_info:
        print("无数据信息.....")
        return
    print("名字".center(8),"含水量".center(4),"VC含量".center(4))
    for info in fruit_info:
        print(info.get("name").center(8)+str(info.get("water")).center(12)+str(info.get("vc")).center(4))
    
#3)删除水果信息
def del_fruit_info(fruit_info,del_name = ''):
    if not del_name:
        del_name = input("请输入删除的水果名称:")
    for info in fruit_info:
        if del_name == info.get("name"):
            return info
        #异常处理
        raise IndexError("水果名称不匹配,没有找到%s" %del_name)
     
#4)修改水果信息
def mod_fruit_info(fruit_info):
    mod_name = input("请输入修改的水果名称:")
    for info in fruit_info:
        if mod_name == info.get("name"):
            w = int(input("请输入修改后的含水量:"))
            v = int(input("请输入修改后的VC含量:"))
            info = {"name":mod_name,"water":w,"vc":v}
    return info
    raise IndexError("水果信息不匹配,没有找到%s" %mod_name)
 
#5)按含水量高-低显示水果信息
def water_reduce(fruit_info):
    print("按含水量高-低显示")
    mit = sorted(fruit_info ,key = get_water,reverse = True)
    show_fruit_info(mit)
 
#6)按含水量低-高显示水果信息
def water_rise(fruit_info):
    print("按含水量低-高显示")
    mit = sorted(fruit_info ,key = get_water)
    show_fruit_info(mit)

#7)按VC含量高-低显示水果信息
def vc_reduce(fruit_info): 
    print("按VC含量高-低显示:")
    mit = sorted(fruit_info ,key = get_vc,reverse = True)
    show_fruit_info(mit)
 
#8)按VC含量低-高显示水果信息
def vc_rise(fruit_info): 
    print("按VC含量低-高显示:")
    mit = sorted(fruit_info ,key = get_vc)
    show_fruit_info(mit)
 
#9)保存水果信息到文件(students.txt)
def save_info(fruit_info):
    try:
        fruit_txt = open("fruit.txt","w") # 以写模式打开,并清空文件内容
    except Exception as e:
        fruit_txt = open("fruit.txt", "x") # 文件不存在,创建文件并打开
    for info in fruit_info:
        fruit_txt.write(str(info)+"n") # 按行存储,添加换行符
    #关闭文件
    fruit_txt.close()
 
#10)从文件中读取数据 
def read_info():
    old_info = []
    try:
        fruit_txt = open("fruit.txt")
    except:
        print("暂未保存数据信息") # 打开失败,文件不存在说明没有数据保存
        return
    while True:
        info = fruit_txt.readline()
        if not info:
            break   
        info = info.rstrip() # 去掉换行符
        info = info[1:-1] # 去掉{}
        print(info)
    #关闭文件
    fruit_txt.close() 
        
 
def main():
    #用列表存储数据
    fruit_info = []
    while True:
        meun()
        number = input("请输入选项:")
        #根据所输入的数字进入不同的功能(函数)
        if number == '1':
            fruit_info = add_fruit_info()
        elif number == '2':
            show_fruit_info(fruit_info)
        elif number == '3':
            try:
                fruit_info.remove(del_fruit_info(fruit_info))
            except Exception as e:
        # 水果名字不匹配
                print(e) 
        elif number == '4':
            try: 
                fruit = mod_fruit_info(fruit_info)
            except Exception as e:
        # 水果名字不匹配
                print(e)
            else:
            # 首先根据输入信息的名字,从列表中删除该信息,然后重新添加该水果最新信息
                fruit_info.remove(del_fruit_info(fruit_info,del_name = fruit.get("name"))) 
                fruit_info.append(fruit)
        elif number == '5':
            water_reduce(fruit_info)
        elif number == '6':
            water_rise(fruit_info)
        elif number == '7':
            vc_reduce(fruit_info)
        elif number == '8':
            vc_rise(fruit_info)
        elif number == '9':
            save_info(fruit_info)
        elif number == '10':
            fruit_info = read_info()
        else:
            break
        input("回车显示菜单")
 
main()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/737985.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号