第15课 综合项目——班级成绩管理小助手 教学设计+html素材 小学信息科技Python程序设计

资源下载
  1. 二一教育资源

第15课 综合项目——班级成绩管理小助手 教学设计+html素材 小学信息科技Python程序设计

资源简介

/ 让教学更有效 精品试卷 | 信息
小学四—五年级 Python 程序设计(第一学期)
教 学 设 计
第15课 综合项目——班级成绩管理小助手
课  题 第15课 综合项目——班级成绩管理小助手
课  时 第 15 课时(40 分钟)
课  型 综合实践(项目课)
教学环境 机房(Windows + Python 3.x + IDLE/Thonny)
授课班级 四年级、五年级
一、学情分析
本课是学期总收束课。学生已学完输入输出、分支、循环、嵌套循环、字符串、列表、函数、递归、枚举、查找排序、递推、字典与集合,知识点齐全但仍是「散装」的。本课的任务是把它们串起来,做一个真正能用的小程序。
学生的困难不在于语法,而在于「整合」:
1.拿到一个综合题目不知从哪里下手;
2.写出来的程序能跑但结构混乱,全部堆在 main 里;
3.不会分步测试,一报错就从头改。
本课以「班级成绩管理小助手」为载体,按「需求分析 → 功能模块 → 分步实现 → 联调测试」的工程流程走一遍,让学生第一次体会「做项目」和「做题」的不同。
二、教学目标
(一)知识目标
1.综合运用列表、字典、函数、循环、分支完成一个多功能的完整程序。
2.掌握菜单式程序的框架写法(while True + if/elif 分发功能)。
3.掌握「数据 + 功能」的组织方式:用字典存记录,用函数封装每个操作。
(二)能力目标
1.能把一个大的需求拆成若干个小功能,逐个实现后再整合。
2.能对自己写的程序做基本测试(正常输入、边界输入、错误输入)。
(三)素养目标
1.体会「工程化思维」——先设计再编码,先分模块再整合。
2.培养排查错误的耐心与方法,体验完成一个作品的成就感。
三、教学重点与难点
项 目 内 容
教学重点 菜单框架的搭建;用字典存学生记录;增删查改统计各功能的函数化实现。
教学难点 把需求拆解为函数;字典与列表的嵌套使用;菜单循环中数据的持续保存与读入校验。
四、教学准备
· 教师:课件、项目功能清单、分步实现演示(教师机上逐步敲)。
· 学生:练习卷、上机账号、项目需求单。
· 素材:本课 3 个程序文件 1菜单框架.py、2成绩管理小助手.py、3猜数字游戏.py。
五、教学过程(共 40 分钟)
环节一 需求分析:我们想做一个什么(5 分钟)
提出问题:「学期快结束了,老师需要一个能管成绩的小工具。你希望它能做哪些事?」
请学生自由发言,教师板书汇总,最终确定 5 项需求:
编号 功 能 输入 输出
1 录入学生成绩 姓名、分数 「录入成功」
2 查询学生成绩 姓名 分数或「查无此人」
3 列出全部成绩 无 所有姓名与分数
4 统计(平均/最高/最低) 无 三个统计值
5 退出程序 无 「再见」
引导讨论两个设计问题:
(1)数据存在哪里?→ 用一个字典,姓名作键、分数作值,正好解决「按名字直接查」的需求。
(2)5 个功能怎么组织?→ 每个功能写成一个函数,主程序里用菜单 + while 循环反复询问要做哪件事。
【设计意图】不直接给代码,先让学生参与需求设计,他们才会对「写什么」有主人翁感,也才能理解为什么要有函数和字典。
环节二 搭建菜单框架(8 分钟)
先只搭骨架,函数体留空,让学生看到「大结构先立起来」的做法。
演示 1菜单框架.py。
def show_menu():
print("=" * 28)
print(" 班级成绩管理小助手")
print("=" * 28)
print(" 1. 录入成绩")
print(" 2. 查询成绩")
print(" 3. 列出全部")
print(" 4. 统计信息")
print(" 0. 退出")
print("=" * 28)
while True:/n show_menu()
choice = input("请选择功能(0-4):")
if choice == "1":
print("【录入功能】待实现")
elif choice == "2":
print("【查询功能】待实现")
elif choice == "3":
print("【列出功能】待实现")
elif choice == "4":
print("【统计功能】待实现")
elif choice == "0":
print("再见!")
break
else:/n print("输入有误,请重新选择。")
讲解框架的三个关键:
(1)while True 让菜单反复出现,直到用户选 0 才 break 退出;
(2)每一项用 elif 分发,最后一定要有 else 兜底,防止用户乱输导致程序崩溃;
(3)所有功能先打印「待实现」,确认框架能跑通再往下填——这就是「先搭骨架,再填肉」的分步测试思想。
环节三 逐个填充功能模块(17 分钟)
演示 2成绩管理小助手.py,按顺序一个功能一个功能地填,每填一个就跑一次测试。
(1)录入功能:
scores = {} # 全局字典:姓名 → 分数
def add_student():
name = input("请输入姓名:")
if name in scores:/n print(f"{name} 已存在,将覆盖原成绩。")
score = int(input("请输入分数:"))
scores[name] = score
print(f"录入成功:{name} → {score} 分")
(2)查询功能——注意「查无此人」的友好提示:
def query_student():
name = input("请输入要查询的姓名:")
if name in scores:/n print(f"{name} 的成绩是 {scores[name]} 分")
else:/n print("查无此人,请确认姓名是否正确。")
(3)列出功能——遍历字典,并顺手处理空字典的情况:
def list_all():
if len(scores) == 0:
print("暂无成绩记录,请先录入。")
return
print("姓名 分数")
print("-" * 18)
for name, s in scores.items():
print(f"{name:<10}{s}")
print("-" * 18)
print(f"共 {len(scores)} 位同学")
(4)统计功能——综合运用第 7 课的列表统计四件套:
def show_stats():
if len(scores) == 0:
print("暂无成绩记录,无法统计。")
return
vals = list(scores.values())
avg = sum(vals) / len(vals)
top = max(scores, key=scores.get) # 找出最高分对应的姓名
low = min(scores, key=scores.get)
print(f"平均分:{avg:.2f}")
print(f"最高分:{max(vals)} 分({top})")
print(f"最低分:{min(vals)} 分({low})")
重点讲 max(scores, key=scores.get) 这一句:默认 max 比的是字典的键(姓名),加上 key=scores.get 就告诉它「按分数来比」,于是返回的是分数最高的那个姓名。这是 max/min 与字典结合的常用技巧,第 6 课的 max(words, key=len) 是同一个套路。
把四个功能函数接入菜单,需要额外定义一个全局变量 scores 供各函数共享。强调:scores 定义在所有函数外面,函数内部直接读改它。
(5)整体联调:现场完整跑一遍——录入 3 人 → 列出 → 查询(含查不到的情况)→ 统计 → 退出。让学生看到所有环节串通的那一刻。
【设计意图】17 分钟填四个功能,节奏偏快,目的是完整走一遍流程、建立整体感;细节实现留给课后作业,让学生自己动手补完。
环节四 测试与排错(7 分钟)
教师有意演示三类测试,让学生学会「主动找茬」:
测试类型 输入示例 期望表现
正常输入 录入 88 分后查询 正确显示 88
边界输入 统计功能在还没录入任何数据时使用 提示「暂无记录」而不是报错
错误输入 菜单里输入 9 或 abc 提示「输入有误」,程序不崩溃
提问:「如果用户输入分数时打成了『abc』,程序会怎样?」→ int() 会报 ValueError,程序直接退出。现场演示一次,让学生看到「用户不会像你一样老实输入」。
给出改进方向(不要求当堂实现):可以用 try/except 捕获错误,或者用 s.isdigit() 先判断一下。这属于「健壮性」,是下一步的提升方向。
环节五 学期总结与展望(3 分钟)
回到学期知识地图,把 15 课串成一张网(板书):
第1课 输入输出
↓
第2课 分支 ────→ 第3课 循环 ────→ 第4课 嵌套循环
↓
第5、6课 字符串 ──→ 第7、8课 列表 ──→ 第14课 字典、集合
↓ ↓
第9、10课 函数、递归 第11课 枚举
↓ ↓
第12课 查找与排序 ──→ 第13课 递推与模拟
↓
★ 第15课 综合项目:把上面全部串起来用一次 ★
本学期最重要的一句话:
把大问题拆成「输入—处理—输出」三步;把大程序拆成几个小函数,一个一个写好再拼起来。
预告:接下来两课是模拟比赛,会用限时训练检验这段时间的学习成果,并把易错点和解题节奏再打磨一遍。
六、板书设计
第15课 综合项目:班级成绩管理小助手
需求 5 项:录入 / 查询 / 列出 / 统计 / 退出
数据结构:scores = {姓名: 分数}
框架:
while True:/n 显示菜单
choice = input()
if/elif 分发到各个函数
else 兜底提示
选 0 → break
四个功能各写一个函数
max(scores, key=scores.get) → 找最高分的人
先搭骨架 → 再填功能 → 最后联调
七、分层作业
★ 完成练习卷第一、二题(填空、判断),读懂菜单框架的每一行作用。
★★ 完成练习卷第三题:独立写一个「通讯录」小程序,要求有录入、查询、列出、退出四项功能。
★★★ 完成练习卷第四题:给成绩管理小助手增加两项新功能——① 删除某个学生的记录;② 按分数从高到低排序输出。(提示:删除用 del scores[姓名] 或 pop,排序用 sorted)
八、教学反思要点
1.学生是否能跟上「先搭骨架再填肉」的节奏?是否需要把四个功能分成两课时?
2.max(scores, key=scores.get) 这个技巧学生是否理解?是否需要用列表版对照讲一遍?
3.有多少学生在自己的程序里做了错误输入的处理?健壮性意识是否需要单独强调?
4.项目课时间紧,是否可以考虑让学生分小组、每人负责一个功能再合并?
课后记(教师填写):
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
21世纪教育网 www.21cnjy.com 精品试卷·第 2 页 (共 2 页)
21世纪教育网(www.21cnjy.com)

展开更多......

收起↑

资源预览