discuz建网站网站关键词挖掘
目录
摘要
一、班级管理系统(含成绩模块)
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(开源项目参考)
在评论区分享你的优化方案或遇到的问题,共同进步! 💬