Python字典实战: 三大管理系统开发指南(班级+会议+购物车)(附源码)

目录

摘要

一、班级管理系统(含成绩模块)

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("错误:班级名称不能为空!")
        return
    students_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}] 不存在!")
        return
    students_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}] 不存在!")
        return
    if student_name not in students_dic[class_name]:
        print(f"错误:学生 [{student_name}] 不存在!")
        return
    try:
        grade = float(grade)
        if grade < 0 or grade > 100:
            raise ValueError
    except ValueError:
        print("错误:成绩必须是0-100的数字!")
        return
    students_dic[class_name][student_name]["成绩"][subject] = grade
    print(f"成绩录入成功:{student_name} 的 {subject} 为 {grade} 分")

def get_students():
    """打印学生列表(含平均分)"""
    if not students_dic:
        print("暂无数据")
        return
    for 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 0
            print(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("系统已退出!")
        break
        
    else:
        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("错误:会议编号重复!")
        return
    if not all([meeting_number, meeting_title, meeting_info]):
        print("错误:编号、主题或内容不能为空!")
        return
    meeting_dic[meeting_number] = [meeting_title, meeting_info]
    print("会议添加成功!")

def list_meeting():
    """打印所有会议"""
    if not meeting_dic:
        print("暂无会议记录")
        return
    print("\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("系统已退出!")
        break
        
    else:
        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 ValueError
    except ValueError:
        print("错误:价格或数量必须是正数!")
        return
    product_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("购物车为空")
        return
    total = 0.0
    print("\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("感谢使用,再见!")
        break
        
    else:
        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(开源项目参考)

在评论区分享你的优化方案或遇到的问题,共同进步! 💬

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

python_chai

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

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

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

打赏作者

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

抵扣说明:

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

余额充值