str1=""" # text # 1. 注册新会员 # 2. 查看所有会员 # 3. 查询会员信息 # 4. 续费会员卡 # 5. 添加新课程 # 6. 查看所有课程 # 7. 预约课程 # 8. 统计信息 # 9. 显示预约日志 # 10. 退出系统 """ members={ "12345678911":{"name":"lisi","type":"1","remain_days":22,"points":10}, "12345678912": {"name": "kid", "type": "2", "remain_days": 70, "points": 20}, "12345678913": {"name": "demo", "type": "3", "remain_days": 330, "points": 30}, } courses={ "C101":{"name":"fly","coach":"robot1","capacity":60,"booked":20}, "C102": {"name": "jump", "coach": "bird1", "capacity": 100, "booked": 30}, "C103": {"name": "swim", "coach": "fish1", "capacity": 90, "booked": 40}, } reservations=[] def register_member(members: dict) -> None: while True: phone_num = input("请输入手机号:") if phone_num in members: print("手机号已存在,请重新输入") continue name_new = input("请输入姓名:") card_type = input("请输入卡号类型(1月卡/2季卡/3年卡):") if card_type == "1": rm_days = 30 elif card_type == "2": rm_days = 90 elif card_type == "3": rm_days = 365 else: print("类型输入错误,默认月卡") card_type = "1" rm_days = 30 members[phone_num] = { "name": name_new, "type": card_type, "remain_days": rm_days, "points": 0 } print("添加成功") break def show_all_members(members: dict) -> None: if members == {}: print("当前暂无会员信息") else: for key, value in members.items(): print(f"用户的手机号是:{key},姓名:{value['name']},类型:{value['type']},剩余天数:{value['remain_days']},积分:{value['points']}") def query_member(members: dict) -> None: check = input("请输入你要查询的手机号:") if check in members: j = members[check] print(f"用户的手机号是:{check},姓名:{j['name']},类型:{j['type']},剩余天数:{j['remain_days']},积分:{j['points']}") else: print("不存在该用户") def renew_membership(members: dict) -> None: phone_input = input("请输入手机号:") if phone_input not in members: print("该手机号不存在") return value = members[phone_input] print(f"当前卡类型:{value['type']},剩余天数:{value['remain_days']}") consume_extends = input("请输入你要续费的类型1/2/3:") if consume_extends == "1": value["points"] += 50 value["remain_days"] += 30 elif consume_extends == "2": value["points"] += 150 value["remain_days"] += 90 elif consume_extends == "3": value["points"] += 600 value["remain_days"] += 365 else: print("输入类型错误,续费失败") return print(f"续费成功!手机号:{phone_input},姓名:{value['name']},类型:{value['type']},剩余天数:{value['remain_days']},积分:{value['points']}") def add_course(courses: dict) -> None: course_input = input("请输入要添加的新课程编号:") if course_input in courses: print("课程已存在") else: crsname_add = input("请输入课程名称:") coachnm_add = input("请输入教练姓名:") new_capacity = int(input("请输入容量:")) new_booked = 0 new_course = {"name": crsname_add, "coach": coachnm_add, "capacity": new_capacity, "booked": new_booked} courses[course_input] = new_course print("添加成功") def show_all_courses(courses: dict) -> None: if courses == {}: print("暂无课程信息") else: for key, value in courses.items(): remain = value["capacity"] - value["booked"] print(f"课程编号:{key},名称:{value['name']},教练:{value['coach']},容量:{value['capacity']},已预订人数:{value['booked']},剩余名额:{remain}") def reserve_course(members: dict, courses: dict, reservations: list) -> None: vipnum_input = input("请输入您的会员手机号:") if vipnum_input not in members: print("会员号不存在") return if members[vipnum_input]["remain_days"] <= 0: print("会员卡已过期,无法预约") return look4 = input("请输入你要选择的课程编号:") if look4 not in courses: print("课程不存在") return course = courses[look4] if course["capacity"] <= course["booked"]: print("该课程已约满") return course["booked"] += 1 members[vipnum_input]["points"] += 10 log1 = ("预约", vipnum_input, look4, course["name"], "2026-4-1") reservations.append(log1) print("预约成功") def get_statistics(members: dict, courses: dict) -> None: total_members = len(members) print(f"——————会员总数:{total_members}——————") type_counts = {"1": 0, "2": 0, "3": 0} for info in members.values(): t = info["type"] if t in type_counts: type_counts[t] += 1 print(f"月卡(1)人数:{type_counts['1']}") print(f"季卡(2)人数:{type_counts['2']}") print(f"年卡(3)人数:{type_counts['3']}") high_points = -1 top_mem = None for phone, info in members.items(): if info["points"] > high_points: high_points = info["points"] top_mem = (phone, info["name"], info["points"]) if top_mem: print(f"——————积分最高会员——————") print(f"手机号:{top_mem[0]},姓名:{top_mem[1]},积分:{top_mem[2]}") max_rate = -1 top_course = None full_list = [] for cid, info in courses.items(): if info["capacity"] == 0: continue rate = info["booked"] / info["capacity"] rate = round(rate, 2) if rate > max_rate: max_rate = rate top_course = (cid, info["name"], rate) if info["booked"] >= info["capacity"]: full_list.append((cid, info["name"])) if top_course: print(f"——————预约率最高课程——————") print(f"课程编号:{top_course[0]},名称:{top_course[1]},预约率:{top_course[2]}") if full_list: print(f"——————已约满课程——————") for item in full_list: print(f"课程编号:{item[0]},名称:{item[1]}") else: print("——————所有课程均有空位——————") def show_statistics(members: dict, courses: dict) -> None: print("=====预约日志=====") if len(reservations) == 0: print("暂无预约记录") else: for log in reservations: print(log) def show_reservations(reservations: list) -> None: print("感谢使用,系统即将退出...") def main(): while True: print(str1) choose = input("请选择功能:") if choose == "1": register_member(members) elif choose == "2": show_all_members(members) elif choose == "3": query_member(members) elif choose == "4": renew_membership(members) elif choose == "5": add_course(courses) elif choose == "6": show_all_courses(courses) elif choose == "7": reserve_course(members, courses,reservations) elif choose == "8": get_statistics(members, courses) elif choose == "9": show_statistics(members, courses) elif choose == "10": show_reservations(reservations) break if __name__ == "__main__": main()我的python作业03
张小明
前端开发工程师
卷轴模式系统开发功能模块与源码解析
卷轴模式系统包含的主要功能:商城,分销,实名认证,活跃度机制,任务模型,农场,锁仓机制,积分机制,交易机制,转赠机制,激励广告,减产机制…
外语郎:培养中华好儿郎——学英语不忘中国心
外语郎:培养中华好儿郎——学英语不忘中国心“外语郎,培养中华好儿郎”——这是外语郎的品牌愿景。学英语不等于西化,恰恰相反,学好英语才能更好地向世界讲好中国故事。本文从家长的角度,谈谈外语郎如何在帮助孩子学好…
GitHub AI模型实战入门:基于Node.js的GPT-4o/5集成指南
1. 项目概述:一个面向开发者的GitHub AI模型实战入门套件如果你是一名开发者,最近想上手体验一下GitHub最新推出的GPT-4o和GPT-5模型,但面对官方文档和API接口感到无从下手,那么这个名为“gen-ai-101”的开源项目,可能…
如何搞定600W瞬态浪涌防护?SMBJ9.0A/TR13在RS485接口电路中的实战应用
在嵌入式硬件设计中,接口电路的防护往往是最容易被忽视,却又最容易导致“炸机”的环节。特别是对于RS485、CAN总线或AC/DC电源输入端,外部的浪涌和静电干扰(ESD)是悬在系统可靠性头顶的达摩克利斯之剑。今天࿰…
【架构实战】CQRS架构模式实战
一、CQRS概述 CQRS(Command Query Responsibility Segregation,命令查询职责分离)是一种架构模式: 核心思想: 命令(Command):修改数据的操作查询(Query)&…
5分钟轻松掌握:WebSite-Downloader 完整网站离线下载指南
5分钟轻松掌握:WebSite-Downloader 完整网站离线下载指南 【免费下载链接】WebSite-Downloader 项目地址: https://gitcode.com/gh_mirrors/web/WebSite-Downloader 想要永久保存心爱的网站内容吗?WebSite-Downloader 是一款基于 Python 开发的强…