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

在这里插入图片描述

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大学生编程地

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值