目录
摘要
一、班级管理系统(含成绩模块)
1. 功能概述
2. 完整代码与解析
3. 代码解析与亮点
二、会议管理系统
1. 功能概述
2. 完整代码
3. 代码解析与亮点
三、购物车管理系统
1. 功能概述
2. 完整代码
3. 代码解析与亮点
四、总结与扩展思路
1. 技术对比
2. 扩展思路
五、资源推荐
摘要
本文通过三个Python实战项目——班级管理系统、会议管理系统和购物车管理系统,全面解析如何利用字典(Dictionary)实现多层数据管理与用户交互。每个项目均包含完整代码、核心解析和优化方案,适合学习字典嵌套、函数封装和模块化编程。
一、班级管理系统(含成绩模块)
1. 功能概述
-
班级管理:添加班级、查看班级列表。
-
学生管理:添加学生信息(学号、联系方式)。
-
成绩管理:录入学生成绩、计算平均分。
-
数据展示:分层显示班级、学生及成绩详情。
2. 完整代码与解析
"""班级管理系统(含成绩模块)数据结构:三层嵌套字典(班级 -> 学生 -> 详细信息)
"""
students_dic = {}def add_classes(class_name):"""添加班级(非空校验)"""if not class_name.strip():print("错误:班级名称不能为空!")returnstudents_dic[class_name] = {}print(f"班级 [{class_name}] 添加成功!")def add_students(class_name, student_name, student_id, student_phone):"""添加学生(扩展成绩字段)"""if class_name not in students_dic:print(f"错误:班级 [{class_name}] 不存在!")returnstudents_dic[class_name][student_name] = {"学号": student_id,"电话": student_phone,"成绩": {} # 成绩存储为字典,格式:{"科目": 分数}}print(f"学生 [{student_name}] 添加成功!")def add_grade(class_name, student_name, subject, grade):"""添加成绩(校验分数有效性)"""if class_name not in students_dic:print(f"错误:班级 [{class_name}] 不存在!")returnif student_name not in students_dic[class_name]:print(f"错误:学生 [{student_name}] 不存在!")returntry:grade = float(grade)if grade < 0 or grade > 100:raise ValueErrorexcept ValueError:print("错误:成绩必须是0-100的数字!")returnstudents_dic[class_name][student_name]["成绩"][subject] = gradeprint(f"成绩录入成功:{student_name} 的 {subject} 为 {grade} 分")def get_students():"""打印学生列表(含平均分)"""if not students_dic:print("暂无数据")returnfor class_name, students in students_dic.items():print(f"\n=== 班级:{class_name} ===")for name, info in students.items():grades = info["成绩"]avg = sum(grades.values()) / len(grades) if grades else 0print(f" ├─ 学生:{name}")print(f" ├─ 学号:{info['学号']}")print(f" ├─ 电话:{info['电话']}")print(f" └─ 成绩:{grades} | 平均分:{avg:.1f}")# 主程序交互逻辑
while True:print("\n========== 班级管理系统 ==========")print("1.添加班级 2.添加学生 3.录入成绩 4.学生列表 5.退出")option = input("请输入操作编号:").strip()if option == "1":class_name = input("请输入班级名称:").strip()add_classes(class_name)elif option == "2":class_name = input("请输入班级名称:").strip()if class_name in students_dic:name = input("学生姓名:").strip()stu_id = input("学号:").strip()phone = input("联系方式:").strip()add_students(class_name, name, stu_id, phone)else:print(f"班级 [{class_name}] 不存在!")elif option == "3":class_name = input("请输入班级名称:").strip()if class_name in students_dic:student_name = input("学生姓名:").strip()if student_name in students_dic[class_name]:subject = input("科目:").strip()grade = input("分数(0-100):").strip()add_grade(class_name, student_name, subject, grade)else:print(f"学生 [{student_name}] 不存在!")else:print(f"班级 [{class_name}] 不存在!")elif option == "4":get_students()elif option == "5":print("系统已退出!")breakelse:print("输入错误,请重新输入!")
3. 代码解析与亮点
数据结构:
students_dic = {"Python班": {"张三": {"学号": "2023001","电话": "13800138000","成绩": {"数学": 90.0, "Python编程": 85.5}}}
}
-
三层嵌套字典:
班级 -> 学生 -> {学号, 电话, 成绩}
,结构清晰易扩展。
动态平均分计算:
avg = sum(grades.values()) / len(grades) if grades else 0
-
输入校验:
-
班级名称非空、成绩范围限制(0-100)。
-
二、会议管理系统
1. 功能概述
-
会议预约:输入编号、主题、内容,自动查重。
-
会议列表:展示所有会议信息。
-
数据持久化:退出时保存数据到JSON文件。
2. 完整代码
"""会议管理系统数据结构:字典(会议编号 -> [主题, 内容])
"""
import json
meeting_dic = {}def add_meeting(meeting_number, meeting_title, meeting_info):"""添加会议(查重与非空校验)"""if meeting_number in meeting_dic:print("错误:会议编号重复!")returnif not all([meeting_number, meeting_title, meeting_info]):print("错误:编号、主题或内容不能为空!")returnmeeting_dic[meeting_number] = [meeting_title, meeting_info]print("会议添加成功!")def list_meeting():"""打印所有会议"""if not meeting_dic:print("暂无会议记录")returnprint("\n=== 会议列表 ===")for num, details in meeting_dic.items():print(f"编号:{num} | 主题:{details[0]} | 内容:{details[1]}")def save_meetings():"""保存数据到JSON文件"""with open("meetings.json", "w", encoding="utf-8") as f:json.dump(meeting_dic, f, ensure_ascii=False)print("数据已保存至 meetings.json")# 主程序交互逻辑
while True:print("\n========== 会议管理系统 ==========")print("1.添加会议 2.会议列表 3.退出")choice = input("请输入操作编号:").strip()if choice == "1":num = input("请输入会议编号:").strip()title = input("请输入会议主题:").strip()info = input("请输入会议内容:").strip()add_meeting(num, title, info)elif choice == "2":list_meeting()elif choice == "3":save_meetings()print("系统已退出!")breakelse:print("输入错误,请重新输入!")
3. 代码解析与亮点
-
数据持久化:
with open("meetings.json", "w", encoding="utf-8") as f:json.dump(meeting_dic, f, ensure_ascii=False)
-
使用
json
模块保存数据,重启程序不丢失。
-
输入校验:
-
会议编号查重、主题和内容非空校验。
-
三、购物车管理系统
1. 功能概述
-
商品管理:添加、删除商品,校验价格和数量。
-
购物车清单:展示商品明细并计算总价。
2. 完整代码
"""购物车管理系统数据结构:字典(商品编号 -> [名称, 价格, 数量])
"""
product_dic = {}def add_shoppingcart(product_number, product_name, product_price, product_quantity):"""添加商品(校验价格和数量)"""try:price = float(product_price)quantity = int(product_quantity)if price <= 0 or quantity <= 0:raise ValueErrorexcept ValueError:print("错误:价格或数量必须是正数!")returnproduct_dic[product_number] = [product_name, price, quantity]print("商品添加成功!")def delete_shoppingcart(product_number):"""删除商品(友好提示)"""if product_number in product_dic:del product_dic[product_number]print(f"商品 {product_number} 已删除!")else:print("错误:商品不存在!")def get_shoppingcart():"""打印购物车清单(含总价)"""if not product_dic:print("购物车为空")returntotal = 0.0print("\n=== 购物车清单 ===")for num, details in product_dic.items():print(f"编号:{num} | 名称:{details[0]} | 单价:{details[1]}元 | 数量:{details[2]}")total += details[1] * details[2]print(f"\n总金额:{total:.2f}元")# 主程序交互逻辑
while True:print("\n========== 购物车管理系统 ==========")print("1.添加商品 2.删除商品 3.查看清单 4.退出")choice = input("请输入操作编号:").strip()if choice == "1":num = input("请输入商品编号:").strip()name = input("请输入商品名称:").strip()price = input("请输入商品价格:").strip()quantity = input("请输入商品数量:").strip()add_shoppingcart(num, name, price, quantity)elif choice == "2":num = input("请输入要删除的商品编号:").strip()delete_shoppingcart(num)elif choice == "3":get_shoppingcart()elif choice == "4":print("感谢使用,再见!")breakelse:print("输入错误,请重新输入!")
3. 代码解析与亮点
数据校验:
price = float(product_price)
quantity = int(product_quantity)
if price <= 0 or quantity <= 0:raise ValueError
-
确保价格和数量为有效正数。
总价计算:
total += details[1] * details[2]
print(f"总金额:{total:.2f}元")
-
实时累加总价,保留两位小数。
四、总结与扩展思路
1. 技术对比
系统 | 数据结构 | 核心优化点 |
---|---|---|
班级管理系统 | 三层嵌套字典 | 动态平均分、输入校验 |
会议管理系统 | 单层字典 | 数据持久化(JSON)、查重 |
购物车管理系统 | 单层字典 | 总价计算、数据合法性校验 |
2. 扩展思路
-
班级系统:按科目统计班级平均分,生成成绩报告。
-
会议系统:增加会议时间字段,支持按日期筛选。
-
购物车系统:实现商品分类(如电子产品、食品)。
五、资源推荐
-
书籍:《Python编程:从入门到实践》《流畅的Python》
-
工具:PyCharm(代码调试)、Jupyter Notebook(快速验证逻辑)
-
社区:CSDN(技术文章)、GitHub(开源项目参考)
在评论区分享你的优化方案或遇到的问题,共同进步! 💬