# 智能学生选课推荐系统——学生信息采集模块开发 教学设计

| **课题** | **智能学生选课推荐系统——学生信息采集模块开发** |
|---------|------------------------------------------|
| **课时** | 1课时(40分钟) |
| **教学目标** | **知识目标**:掌握Python基本数据类型(字符串、整数、浮点数、布尔值)的特点与应用场景,理解变量命名规范与赋值机制,了解input()与print()函数的使用方法。<br>**技能目标**:能根据选课系统的数据需求设计学生信息结构,能使用合适的数据类型定义变量存储学生姓名、学号、年级、学分等信息,能编写交互式信息采集脚本并进行格式化输出。<br>**素养目标**:培养数据建模思维,养成规范命名与代码注释的良好习惯,建立"数据是程序基础"的认知。 |
| **教学重难点** | **重点**:Python基本数据类型的选择与使用;变量的定义与赋值;input()函数的数据类型转换;格式化输出方法。<br>**难点**:根据业务需求选择合适的数据类型;input()获取的字符串类型转换为数值类型;理解变量在内存中的存储机制。 |
| **教学资源准备** | 多媒体课件(含数据类型对比表);学生信息字段说明文档;代码演示环境;数据类型错误示例与调试视频;项目代码模板文件。 |

## 教学过程

| 教学环节 | 教学内容 | 教师活动 | 学生活动 | 设计意图 |
|:---------|:---------|:---------|:---------|:---------|
| **1. 模块任务导入**<br>(5分钟) | 回顾项目架构,聚焦"学生信息管理"模块,明确本课时任务:设计并实现学生信息的数据结构与采集功能。 | **任务聚焦**<br>展示选课系统流程图,强调学生信息是推荐引擎的输入基础,提问:"系统需要记录学生的哪些信息?"<br><br>**需求分析**<br>引导学生讨论并列出关键字段:姓名、学号、年级、已修学分、是否重修生等,说明每类数据的作用。 | **回顾联系**<br>回忆上节课项目架构,理解本模块在系统中的定位;<br><br>**需求思考**<br>结合选课场景,思考并提出需要采集的学生信息字段,参与讨论。 | 通过任务聚焦建立模块与整体的关联,强化项目连贯性;通过需求分析培养数据建模意识,为后续技术学习提供明确的应用场景。 |
| **2. 数据类型探究**<br>(10分钟) | 讲解Python基本数据类型的特点,演示不同类型数据的定义与使用,分析各类型在学生信息存储中的适用性。 | **概念讲解**<br>结合学生信息字段,讲解字符串(姓名)、整数(学号、年级)、浮点数(学分)、布尔值(是否重修)的定义方式与适用场景;<br><br>**代码演示**<br>演示变量定义:name="张三"、student_id=20240101、credits=15.5、is_retake=False,并用type()函数查看类型。 | **观察记录**<br>理解各数据类型的特点,记录定义语法规则;<br><br>**对比分析**<br>思考:"为什么学号用整数而不是字符串?学分为什么要用浮点数?"与同学交流。 | 通过业务场景与数据类型的紧密绑定,让抽象概念具象化;通过type()函数演示培养类型意识,为类型转换打下认知基础。 |
| **3. 信息采集实现**<br>(12分钟) | 讲解input()函数的使用与类型转换,演示格式化输出方法,引导学生编写完整的信息采集脚本。 | **功能讲解**<br>讲解input()函数的工作机制,强调其返回字符串类型,演示int()、float()转换方法;<br><br>**代码演示**<br>演示完整采集流程:提示输入→类型转换→格式化输出,代码示例:<br>```python<br>name = input("姓名:")<br>grade = int(input("年级:"))<br>credits = float(input("已修学分:"))<br>print(f"学生{name},年级:{grade},学分:{credits}")```<br><br>**任务发布**<br>发布编码任务:"编写student_info.py,采集5项学生信息并格式化输出"。 | **聆听理解**<br>理解input()的字符串特性与转换必要性;<br><br>**模仿实践**<br>跟随演示代码,在IDE中逐行输入并测试;<br><br>**独立编码**<br>根据需求,完善采集脚本:添加学号、是否重修字段,设计友好的输入提示与输出格式。 | 通过师生同步演示降低编码难度;通过类型转换演示突破难点;通过独立编码任务培养实际开发能力,强化知识应用。 |
| **4. 代码调试与优化**<br>(9分钟) | 指导学生测试程序,处理常见错误,优化代码的规范性与可读性。 | **巡回指导**<br>巡视学生编码,针对类型转换错误、变量命名不规范等问题进行个别指导;<br><br>**错误示范**<br>展示典型错误(如直接对字符串做数学运算),演示错误信息阅读与调试方法;<br><br>**规范强调**<br>强调变量命名使用下划线命名法(student_id)、添加注释说明字段含义等规范。 | **自测调试**<br>运行程序,输入测试数据,观察输出结果;<br><br>**问题解决**<br>根据错误提示或教师指导,修正类型转换、语法错误;<br><br>**代码优化**<br>按规范修改变量名,为关键代码添加注释。 | 通过实际调试培养问题诊断能力;通过错误示范提升错误预判意识;通过规范强调养成职业化编码习惯,为团队协作打下基础。 |
| **5. 成果展示与总结**<br>(4分钟) | 组织学生展示作品,总结数据类型与信息采集的核心要点,预告下一模块任务。 | **作品展示**<br>邀请2-3名学生演示程序运行,点评代码的规范性与输出格式的友好性;<br><br>**知识总结**<br>总结:合适的数据类型是数据处理的前提,类型转换是交互程序的关键;<br><br>**任务预告**<br>下节课将使用条件判断实现选课资格验证,需基于本节采集的学生信息。 | **观摩学习**<br>观看同学作品,对比自己的实现方案;<br><br>**反思内化**<br>思考本节收获,记录易错点;<br><br>**展望准备**<br>了解下节任务,思考如何根据年级、学分等条件判断选课资格。 | 通过作品展示增强成就感与学习动力;通过总结强化核心知识点;通过预告保持项目学习的连贯性与期待感。 |

## 板书设计

```
学生信息采集模块 - 数据类型与应用

┌──────────────────────────────────────┐
│ 信息字段        数据类型      示例值  │
├──────────────────────────────────────┤
│ 姓名(name)      str          "李明"  │
│ 学号(student_id) int         20240101│
│ 年级(grade)     int          2       │
│ 已修学分(credits) float      18.5    │
│ 是否重修(is_retake) bool     False   │
└──────────────────────────────────────┘

关键函数:
  input("提示信息") → 返回str类型
  int(字符串) / float(字符串) → 类型转换
  print(f"格式化字符串{变量}") → 输出

本课时任务: 数据结构设计 + 信息采集 ✓
```

## 教学成效与反思

| | |
|:---|:---|
| **教学成效** | 结合模块开发目标评估:90%以上学生能准确选择合适的数据类型存储学生信息,80%以上学生独立完成信息采集脚本开发并实现格式化输出。通过业务需求驱动的数据类型学习,学生对"为什么需要不同类型"理解深刻,类型转换的必要性认知明确。代码调试环节参与度高,学生初步建立了错误诊断意识。模块功能基本实现,为后续条件判断模块提供了有效的数据基础,项目推进顺利。 |
| **教学反思** | 本课时通过"学生信息采集"这一具体模块任务,成功地将抽象的数据类型知识转化为实际的编码实践,学习效果显著。将业务字段与数据类型一一对应的讲解方式,让学生快速理解了类型选择的依据,避免了纯理论讲解的枯燥。不足之处:①对于"布尔值在条件判断中的应用"讲解较浅,部分学生对is_retake字段的作用理解不深;②部分学生在独立编码时,对f-string格式化语法不够熟练,出现语法错误较多。改进方向:①在讲解布尔类型时,增加简单的if判断示例,提前渗透下节课内容;②提供格式化输出的标准模板,减少语法细节对思维的干扰,让学生更专注于业务逻辑。整体上,项目驱动的模块化教学让知识点的学习更有目的性,学生的代码实践能力进步明显。 |
