版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2/2Python程序设计任务式教程(微课版)(AIGC助学)教案课程名称:Python程序设计适用对象:高职计算机类专业学生教材参考:《Python程序设计任务式教程》总课时:64课时(理论32+实践32)单元5:面向对象编程一、课程信息课时:8课时(理论4+实践4)二、学习目标【记忆】学生能够准确说出类与对象的关系、面向对象三大特性(封装、继承、多态)的基本定义,以及类中常见特殊方法(如__init__,
__str__,
__del__)的触发时机,在课堂快速问答中正确率达到90%以上。【理解】学生能够解释实例属性与类属性的区别、self和cls参数的用途、不同方法类型(实例方法、类方法、静态方法)的调用方式与作用差异,并能用自己的话阐述。【应用】学生能够基于"文创宝盒"系统需求,正确定义类、构造对象,并使用@property装饰器实现属性的封装,编写结构清晰的类成员(属性与方法)。【分析】学生能够分析比较继承与多重继承的优缺点,判断特定业务场景(如扩展购物车功能)是否适合使用继承或多态,并能解释原因。【应用】学生能够通过继承创建子类,重写父类方法(如__str__,
calculate_total),并合理使用super()调用父类功能,实现代码复用和功能扩展。【创造】学生能够综合运用面向对象思想(封装、继承、多态),将"文创宝盒"系统的商品展示、购物车、支付等功能模块重构为类与对象的结构化设计,实现灵活、可扩展的交互原型。三、内容模块模块一:【面向对象编程思想初探】(20分钟)核心知识点:面向过程与面向对象编程思想的对比类(Class)与对象(Object)的关系:类是模板,对象是实例面向对象三大特性:封装、继承、多态面向对象编程的优势:代码复用、结构清晰、易于维护和扩展教学活动:讲授(10分钟):通过绘制"正方形"的例子,解释类(正方形的定义)与对象(具体画出的正方形)的关系。对比【例5-25】中面向过程与面向对象两种方式解决"交通工具行驶时间"问题的代码量与可扩展性。互动(5分钟):学生分组讨论,在"文创宝盒"系统中,哪些部分适合用面向对象的方式设计?(如商品、用户、订单、购物车)练习(5分钟):学生写出一个自己认为可以用类来建模的现实世界事物(如"手机"),并列出它可能拥有的属性和方法。教学方法:概念引入法、对比分析法、头脑风暴法模块二:【类的定义与对象创建】(20分钟)核心知识点:类的定义:class关键字、类名、冒号、缩进块空类的定义与pass占位符对象的创建(实例化):对象名=类名()对象的内存分配与初始化过程教学活动:讲授(12分钟):讲解类定义的语法,强调类名的驼峰命名规范。演示创建一个简单的Book空类。通过book=Book()创建对象,解释实例化时Python在内存中开辟空间的过程。演示(4分钟):教师现场使用IDLE或VSCode演示定义Book类并创建两个不同的book1和book2对象,展示它们是独立的。练习(4分钟):学生独立编写一个Product(商品)类的定义,并创建一个product1对象。教学方法:语法精讲法、编码演示法、模仿练习模块三:【构造方法与对象初始化】(20分钟)核心知识点:无参构造方法__init__()的自动调用带参数构造方法:定义、参数传递(第一个参数self)通过构造方法为实例属性赋值self参数的含义:代表对象自身,访问实例属性和方法教学活动:讲授(12分钟):讲解__init__()方法在创建对象时的自动调用。强调self必不可少。通过【例5-6】演示带参数的构造方法,如Book('Python程序设计','ZHENGHUI')。互动(5分钟):教师提问:构造方法可以重名吗?可以没有self参数吗?引导学生明确构造方法的唯一性和self的必要性。练习(3分钟):学生修改自己写的Product类,添加__init__方法,接收name和price参数,并赋值给实例属性。教学方法:核心方法讲解法、关键概念辨析法、属性初始化练习模块四:【析构方法与对象生命周期】(20分钟)核心知识点:析构方法__del__()的作用:对象销毁时释放资源显式删除对象:del对象名默认析构方法与自定义析构方法的调用时机理解对象的生命周期:创建→使用→销毁教学活动:讲授(10分钟):讲解__del__()方法的作用,通过【例5-1】演示对象的创建和删除,观察析构方法的输出。演示(5分钟):教师演示一个文件资源管理的例子,在__init__中打开文件,在__del__中关闭文件,强调析构方法的重要性。练习(5分钟):学生为一个DatabaseConnection类添加__del__方法,打印"数据库连接已关闭"。教学方法:生命周期解释法、资源管理演示法、设计练习模块五:【实例属性与类属性详解】(20分钟)核心知识点:实例属性:在__init__中或外部动态添加,对象独有类属性:在类中定义(非方法内),所有对象共享属性的访问与修改:对象名.属性名属性查找规则:优先查找实例属性,再查找类属性__dict__与vars()查看对象/类的属性字典教学活动:讲授(12分钟):系统讲解实例属性和类属性的定义、创建与区别。通过【例5-4】演示修改对象和类对属性值的不同影响。介绍__dict__的使用。演示(4分钟):教师使用【例5-5】的代码,展示User.__dict__和user1.__dict__输出的差异,让学生直观理解类与对象的属性存储。练习(4分钟):学生创建一个Student类,包含类属性school和实例属性name、age,创建两个学生对象并修改各自的name和school,验证属性变化。教学方法:对比教学法、属性查看演示、属性操作验证模块六:【实例方法与特殊方法】(20分钟)核心知识点:实例方法的定义:def方法名(self,...):方法的调用:对象名.方法名(参数)方法对象的概念:可将方法绑定到变量特殊方法(魔术方法):如__str__(),
__add__()重写特殊方法改变对象行为教学活动:讲授(12分钟):讲解实例方法的定义和self在方法中的传递。对比【例5-8】和【例5-9】,展示__str__()对print()输出的改变。解释"方法对象"概念【例5-10】。互动(5分钟):教师提问:如何让两个Product对象相加得到它们的价格之和?引导学生思考需要重写__add__()方法。练习(3分钟):学生为Product类添加__str__方法,使其print时输出商品名称和价格。教学方法:方法定义精讲、特殊方法演示、行为扩展思考模块七:【类方法与静态方法】(20分钟)核心知识点:类方法:用@classmethod修饰,第一个参数cls,通过类调用静态方法:用@staticmethod修饰,无self或cls,通过类调用三种方法(实例、类、静态)的对比与适用场景自由方法的定义与引用教学活动:讲授(12分钟):讲解类方法操作类属性(如Book.total_books)【例5-11】,静态方法执行与类相关的工具操作(如MathOperations.add)【例5-12】。对比三种方法在调用方式、参数、操作对象上的不同。演示(4分钟):教师演示一个Library类,用类方法统计当前创建的图书数量,用静态方法检查图书编号是否有效。练习(4分钟):学生为Product类添加一个类方法get_category_count(),统计某个类别的商品数量(需先设置类属性all_products列表)。教学方法:方法类型对比、场景分类演示、方法应用练习模块八:【封装与私有成员】(20分钟)核心知识点:封装的概念:隐藏内部实现,暴露公开接口私有成员:属性名前加双下划线__(如__name)属性访问控制:使用@property和@属性名.setter只读属性:只定义@property不定义@属性名.setter单下划线_:约定俗成的"受保护"成员教学活动:讲授(12分钟):讲解封装的意义。通过【例5-14】演示尝试访问__private_member会报错。详细解释@property和@xxx.setter装饰器的用法【例5-15】。演示(4分钟):教师展示一个BankAccount类,将balance设为私有,提供@property读和@balance.setter写(写时需检查余额不能为负)。练习(4分钟):学生为自己设计的Student类中的age属性添加@property封装,设置年龄必须在1-120之间。教学方法:设计思想讲解、封装技术演示、安全属性设计模块九:【综合任务一:创建文创商品对象】(25分钟)核心知识点:定义Product类及其核心属性(product_id,
name,
price,
stock,
category)实例方法:calculate_total_price(),
display_info(),
update_quantity()属性封装:考虑哪些属性应该私有化(如stock)方法设计的合理性:单一职责、清晰命名教学活动:需求与设计分析(10分钟):教师带领学生分析任务5-1的需求,梳理商品应包含的属性和操作(库存管理、信息展示)。讨论stock属性是否需要封装。代码实现指导(10分钟):教师讲解Product类的实现代码,重点解释calculate_total_price的简单逻辑和display_info的多行字符串格式化。功能测试与优化(5分钟):学生创建Product对象,测试各个方法,特别是update_quantity的增减逻辑。尝试打印对象(验证__str__是否已实现)。教学方法:需求驱动设计、代码实现精讲、功能验证实践模块十:【继承基础:单继承与方法调用】(20分钟)核心知识点:继承的概念:子类获得父类的属性和方法单继承的定义:class子类(父类):super()函数:调用父类方法(构造方法、其他方法)继承关系的特性:传递性(A->B->C则C拥有A的成员)isinstance()和issubclass()检查继承关系教学活动:讲授(12分钟):通过"Person->Student"的例子【例5-16】讲解继承概念。解释子类如何继承父类的say_hello()。重点讲解super().__init__(name)在子类构造方法中的必要性。演示(4分钟):教师演示【例5-17】,创建Dog和Cat对象,调用继承的sound()和各自的特有方法。练习(4分钟):学生基于之前定义的Product类,创建一个Book子类,新增author和isbn属性,并调用父类的calculate_total_price()。教学方法:类图关系讲解、继承代码演示、子类设计练习模块十一:【继承进阶:多重继承与方法解析顺序】(20分钟)核心知识点:多重继承的定义:class子类(父类1,父类2,...)方法解析顺序(MRO):__mro__属性,super()在多重继承中的调用受保护成员:单下划线_前缀,仅子类可访问多重继承的使用场景与注意事项教学活动:讲授(12分钟):通过【例5-18】的SqlDatabase多重继承案例,讲解多重继承如何组合不同功能(连接+日志)。演示print(SqlDatabase.__mro__)查看继承链。互动(5分钟):学生讨论多重继承可能带来的问题(如方法名冲突、复杂度增加),什么情况下建议使用组合而非多重继承。练习(3分钟):学生为Product类添加一个_discount受保护属性,在子类中访问并计算折扣价。教学方法:多重继承场景分析、MRO演示、设计决策讨论模块十二:【方法重写与运算符重载】(20分钟)核心知识点:方法重写:子类重新定义父类的已有方法重写父类方法:子类对象默认调用子类版本通过super()显式调用父类版本运算符重载:重写特殊方法如__add__(),
__eq__()重写__str__自定义对象字符串表示教学活动:讲授(12分钟):通过【例5-20】的Vehicle子类重写charging()方法演示重写概念。通过【例5-21】的Vector类重载__add__()方法,展示两个向量相加的功能。演示(4分钟):教师展示Product子类DiscountedProduct重写calculate_total_price(),增加折扣逻辑。练习(4分钟):学生为Product对象实现__eq__方法,使两个Product对象在product_id相同时认为相等。教学方法:重写概念讲解、特殊方法演示、自定义行为实现模块十三:【多态:接口复用与灵活性】(20分钟)核心知识点:多态的概念:同一接口,不同实现Python多态的灵活性:不强制接口一致,依赖"鸭子类型"多态的应用场景:统一处理不同类型对象的相同行为多态与继承的关系:通过继承实现多态教学活动:讲授(12分钟):通过"上课铃响了,不同学生不同反应"的例子解释多态。演示【例5-22】的Cat和Dog类,定义func(temp)统一调用shout()方法,传入不同对象产生不同行为。演示(4分钟):教师展示一个Payment父类和Alipay,
WechatPay子类,定义一个pay()方法演示多态。练习(4分钟):学生扩展自己的Product类,创建DigitalProduct(数字商品)和PhysicalProduct(实体商品)子类,重写display_info()方法,显示不同的信息。教学方法:概念类比法、多态演示、多类型行为设计模块十四:【对象与字典的转换】(20分钟)核心知识点:__dict__属性:存储对象实例属性vars()函数:获取对象的__dict__使用**解包字典创建对象:类名(**dict_data)字典推导式实现对象到字典的转换实用场景:API响应、数据库查询结果的处理教学活动:讲授(10分钟):讲解__dict__和vars()的使用【例5-23】,演示对象转字典。展示Student(**dict_data)创建对象的方式。演示(6分钟):教师演示如何将一个Product对象转换为字典,并保存为JSON;再将一个字典数据反序列化为Product对象。练习(4分钟):学生为Product类实现to_dict()方法,返回包含所有属性的字典,并测试。教学方法:数据结构转换演示、序列化实践、数据交换操作模块十五:【综合任务二:扩展购物车功能(继承+多态)】(25分钟)核心知识点:基类ShoppingCart的核心方法:add_item(),
remove_item(),
calculate_total(),
display_cart()派生类DiscountedCart:重写calculate_total()实现折扣派生类PremiumCart:扩展add_item()实现免费配送多态应用:统一接口处理不同购物车类型教学活动:架构分析与设计(10分钟):教师带领学生分析购物车功能的层次结构。讲解为何使用继承:共享基础购物车功能,差异行为通过重写实现。讨论多态如何简化主程序对不同购物车的调用。代码实现指导(10分钟):重点讲解DiscountedCart的super().calculate_total()调用和折扣计算;PremiumCart的add_item()中如何调用父类方法并扩展功能。测试与多态演示(5分钟):学生创建不同购物车对象,添加相同商品,观察不同计算结果。演示用一个函数process_cart(cart)统一处理不同购物车类型。教学方法:架构分解、继承实践、多态验证模块十六:【面向对象编程思想对比与案例】(20分钟)核心知识点:面向过程与面向对象的本质区别:功能驱动vs对象驱动面向对象的优势:高内聚、低耦合、易扩展实际项目中的面向对象设计:识别对象、定义职责、建立关系重构面向过程代码为面向对象代码的思路教学活动:思想对比总结(8分钟):教师对比【例5-25】和【例5-26】两种解决交通工具问题的方法,从代码量、可维护性、扩展性等方面分析优劣。案例重构讨论(7分钟):给出一个简单的"用户注册登录"面向过程代码片段,引导学生思考如何拆分为User类和AuthSystem类。设计原则简述(5分钟):简单介绍SOLID原则(单一职责、开闭原则等),为后续深入学习做铺垫。教学方法:对比总结、案例分析、设计原则引入模块十七:【AI辅助:使用通义灵码完成部分代码】(20分钟)核心知识点:AI编程助手(如通义灵码)在面向对象开发中的应用利用AI辅助生成类结构、方法代码代码建议的判断与选择性采纳避免过度依赖,保持代码质量教学活动:演示与体验(15分钟):教师按照文档"AI实验室"部分,现场演示:1)为Book类添加借阅记录功能;2)使用通义灵码的代码补全功能实现User类的borrow_book()和return_book()方法。代码审查与优化(5分钟):学生分组互相审查AI生成的代码,讨论哪些部分可以直接使用,哪些需要修改(如借阅时间的记录、异常处理)。教学方法:工具赋能演示、代码审查训练、AI辅助实践模块十八:【单元综合梳理与挑战】(20分钟)核心知识点:面向对象核心概念图:类、对象、继承、多态、封装类成员体系:属性(实例/类)、方法(实例/类/静态)、特殊方法面向对象设计原则与最佳实践面向对象与函数式编程的对比教学活动:知识结构化(10分钟):教师使用思维导图,带领学生系统梳理本单元所有核心概念及其关联,构建知识网络。综合设计挑战(7分钟):学生小组合作,设计一个简单的"在线书店"系统,识别核心对象(如Book,
Customer,
Order,
ShoppingCart)及其关系。开放式总结(3分钟):教师总结面向对象编程思想的核心价值,鼓励学生在后续项目中实践。教学方法:思维导图整合、微型项目设计、思想升华总结环节时长占比模块一:面向对象编程思想初探20分钟5.6%模块二:类的定义与对象创建20分钟5.6%模块三:构造方法与对象初始化20分钟5.6%模块四:析构方法与对象生命周期20分钟5.6%模块五:实例属性与类属性详解20分钟5.6%模块六:实例方法与特殊方法20分钟5.6%模块七:类方法与静态方法20分钟5.6%模块八:封装与私有成员20分钟5.6%模块九:综合任务一:创建文创商品对象25分钟6.9%模块十:继承基础:单继承与方法调用20分钟5.6%模块十一:继承进阶:多重继承与方法解析顺序20分钟5.6%模块十二:方法重写与运算符重载20分钟5.6%模块十三:多态:接口复用与灵活性20分钟5.6%模块十四:对象与字典的转换20分钟5.6%模块十五:综合任务二:扩展购物车功能(继承+多态)25分钟6.9%模块十六:面向对象编程思想对比与案例20分钟5.6%模块十七:AI辅助:使用通义灵码完成部分代码20分钟5.6%模块十八:单元综合梳理与挑战20分钟5.6%总计360分钟100%单元6:文件的操作一、课程信息课时:8课时(理论4+实践4)二、学习目标【记忆】学生能够准确说出文件存储的基本概念、常用文件打开模式(r,
w,
a,
b等)、CSV文件的扩展名和特点,以及常见的数据维度(一维、二维、多维),在课堂提问中正确率达到90%以上。【理解】学生能够解释文件路径操作(pathlib.Path)、文件编码格式对读写的影响、with语句自动关闭文件的原理,以及CSV模块与普通文件读写在处理表格数据时的优势。【应用】学生能够在指定路径下完成文件的创建、检查、读写操作,正确处理文本文件和CSV文件,解决"文创宝盒"系统中商品数据和购物车数据的持久化存储问题。【分析】学生能够分析不同文件格式(文本、CSV)在存储结构化数据时的适用场景,并判断在何种情况下需要手动处理编码或使用特定模块(如csv)。【应用】学生能够使用pathlib模块操作文件路径,使用csv模块读写带表头的CSV文件,实现数据的批量导入导出。【创造】学生能够综合运用文件操作和面向对象编程思想,设计并实现一个具备数据持久化功能的"文创宝盒"系统原型,包括商品信息的读取、购物车数据的保存与加载。三、内容模块模块一:【引子:数据持久化的必要性】(20分钟)核心知识点:内存数据的局限性:程序退出后数据丢失数据持久化的概念:将数据保存到外部存储介质文件存储与数据库存储的对比(简单对比,单元8详述)"文创宝盒"系统中需要持久化的数据类型(商品信息、用户购物车等)教学活动:讲授(10分钟):通过对比程序运行时购物车数据(内存)与退出后数据消失的问题,引出文件存储的必要性。展示图6-1通义灵码的回答,概述文件存储和数据库存储两种方案。互动(5分钟):学生分组讨论,列举生活中需要"长久保存"数据的场景(如游戏存档、购物记录),思考它们可能采用何种存储方式。练习(5分钟):学生写出一个自己认为可以用文件存储的数据例子(如个人笔记),并简述数据可能的组织方式(文本、表格等)。教学方法:问题导入法、生活案例联想、数据存储需求分析模块二:【文件路径操作:pathlib模块】(20分钟)核心知识点:文件路径的概念:从根目录到文件的层级表示pathlib.Path模块的引入与优势(面向对象风格)常用Path操作:创建路径、获取当前路径、创建目录、检查存在性、遍历子元素、获取文件属性路径拼接:/操作符的使用教学活动:讲授(12分钟):讲解frompathlibimportPath的基本使用。演示【例6-1】到【例6-6】的关键操作,特别是path=Path(r'C:\user\Desktop')原始字符串的使用和path/'subdir'的拼接。演示(4分钟):教师现场在VSCode中演示:获取当前工作路径(Path.cwd()),创建一个测试目录,在其中创建一个空文件,检查其存在性。练习(4分钟):学生编写代码,在当前目录下创建一个data子目录,并在其中创建一个info.txt文件,然后通过路径检查文件是否存在。教学方法:模块功能讲解、路径操作演示、文件系统实践模块三:【文件读写基础:打开与关闭】(20分钟)核心知识点:文件打开模式:r(只读)、w(覆盖写)、a(追加写)、b(二进制模式)open()函数的基本用法:open(file,mode,encoding)文件流对象的close()方法with语句:上下文管理器,自动关闭文件(推荐)教学活动:讲授(10分钟):讲解表6.1中的常用模式参数,强调w会覆盖、a在末尾追加、b模式处理二进制文件。解释encoding='utf-8'的重要性。演示(6分钟):教师演示两种文件打开方式:1)传统f=open(...);f.close();2)推荐的withopen(...)asf:。展示忘记关闭文件的潜在问题(如文件锁定)。练习(4分钟):学生使用withopen在data目录下创建一个hello.txt文件,写入"Hello,Python!",然后关闭文件。教学方法:模式参数精讲、两种方式对比、推荐实践模块四:【文本文件读写:读取与写入】(20分钟)核心知识点:读文件方法:read()(全部)、read(size)(指定字符)、readline()(一行)、readlines()(所有行到列表)写文件方法:write()(字符串)、writelines()(字符串列表)文件编码问题:UTF-8与GBK,encoding参数设置二进制模式写入:encode()方法与wb模式教学活动:讲授(12分钟):讲解各种读写方法的用途和返回值。通过【例6-8】演示read,
readline,
readlines的使用。通过【例6-9】强调编码问题,展示乱码现象及解决方法。演示(4分钟):教师演示写入操作:先写入单个字符,再用writelines写入列表,最后追加换行符。检查文件内容。练习(4分钟):学生读取刚创建的hello.txt,将其内容转为大写后再写回文件(覆盖模式)。教学方法:方法分类讲解、编码问题演示、读写综合练习模块五:【文件定位与编码处理】(20分钟)核心知识点:文件指针定位:seek(offset)方法文件缓冲区:flush()方法的作用不同操作系统的换行符差异:\n
(Unix)vs
\r\n
(Windows)编码转换:字符串encode()与字节decode()方法教学活动:讲授(10分钟):讲解seek(0)将指针移到文件开头。通过【例6-13】演示先写入"demo!"再定位到开头写入"cool"的效果。解释flush何时需要使用(大文件)。演示(6分钟):教师演示:1)在Windows上写入含换行符的内容,观察文件内容;2)使用'你好'.encode('gbk')将字符串转为字节并写入二进制文件。练习(4分钟):学生创建一个文件,写入"第一行\n第二行\n第三行",然后用seek跳过第二行,仅在文件末尾追加"第四行"。教学方法:指针操作原理、换行符对比、编码转换演示模块六:【综合任务一:确定购物车数据存储位置】(25分钟)核心知识点:使用pathlib检查数据文件是否存在(Path(filename).is_file())相对路径与绝对路径的概念数据文件的合理存储位置设计错误处理:文件不存在时的友好提示教学活动:需求分析(8分钟):教师引导学生分析"文创宝盒"系统中商品数据文件(如products.txt)应存储的位置,以及如何检查文件是否存在(避免程序因文件找不到而崩溃)。代码实现指导(10分钟):讲解InventoryGoods类中使用Path('products.txt').is_file()检查文件的代码。讨论相对路径(与.py同目录)和绝对路径的选择。扩展功能练习(7分钟):学生实现拓展训练功能:在指定目录(如data)下递归查找名为products.txt的文件,若找到显示其绝对路径;若不存在,提示"该目录下文件不存在"。教学方法:文件系统设计、路径检查实践、文件查找实现模块七:【面向对象与文件结合:商品类设计】(20分钟)核心知识点:文件数据到对象的映射:CSV/文本行到Product属性类方法与文件操作的结合:read_products_from_file()数据类型转换:字符串转整数、浮点数异常处理:数据格式错误、文件读取错误教学活动:讲授(10分钟):讲解如何将文本文件中的每行数据(逗号分隔)映射为Product对象。演示line.strip().split(',')的拆分,以及类型转换(int(stock))。演示(6分钟):教师使用图6-13的products.txt内容,演示read_products_from_file()函数如何读取并构建products字典。练习(4分钟):学生为Product类添加一个静态方法from_string(line),接收一行文本字符串,返回Product对象(重构读取逻辑)。教学方法:数据映射讲解、类型转换演示、对象工厂方法设计模块八:【购物车数据持久化:保存与加载】(20分钟)核心知识点:购物车数据结构:字典{product_id:{'product':obj,'quantity':int}}将购物车数据写入文件:序列化为文本行或CSV从文件加载购物车数据:反序列化到对象数据一致性:文件内容与对象结构的对应教学活动:讲授(12分钟):讲解ShoppingCart类的save_to_file和load_from_file方法的设计。演示如何将商品对象的属性拼接成字符串写入文本文件(任务6-2方式),以及如何从文件读取并重建对象。演示(4分钟):教师展示一次完整的"添加商品→保存购物车→重新运行→加载购物车"流程,观察数据持久化的效果(图6-14和6-15)。练习(4分钟):学生为save_to_file方法添加异常处理,当写入失败时捕获IOError并提示"保存失败"。教学方法:数据序列化讲解、持久化流程演示、异常处理实践模块九:【数据维度:一维、二维与多维】(20分钟)核心知识点:一维数据:线性数据(列表、元组、集合),如温度列表二维数据:表格数据(二维列表、CSV文件),如学生成绩表多维数据:复杂数据结构(字典、JSON、XML),如嵌套配置维度的实际应用场景分析教学活动:讲授(10分钟):通过"单日温度列表"(一维)、"多日温度表"(二维)、"学生信息+成绩+课程"(多维)的例子,讲解三种维度的概念和特点。互动(6分钟):学生分组,列举"文创宝盒"系统中哪些数据属于一维(如商品分类)、二维(如商品库存表)、多维(如用户订单详情),并说明理由。练习(4分钟):学生创建一个二维列表,表示3个用户的基本信息(ID、姓名、年龄),思考如何用CSV格式存储。教学方法:维度概念引入、场景分类讨论、数据结构设计模块十:【CSV格式与普通文本对比】(20分钟)核心知识点:CSV文件的结构:逗号分隔值,表格化存储CSVvs普通文本:CSV更适合结构化数据,普通文本更灵活CSV的局限性:不适合含逗号的数据、嵌套结构CSV文件的常见应用(Excel导入导出、数据库备份)教学活动:讲授(10分钟):对比存储同样商品数据时,普通文本(需手动解析分隔符)和CSV(标准格式,易解析)的优劣。展示图6-25的products.csv内容,强调结构清晰。演示(6分钟):教师打开一个CSV文件(用Excel或VSCode),展示其表格化视图;然后打开一个用普通文本存储的相似数据文件,展示其难以直接阅读的问题。练习(4分钟):学生讨论:如果商品描述中可能包含逗号(如"志犹学海,明信片套装"),普通文本和CSV哪种更难处理?为什么?教学方法:格式对比、可视化演示、适用场景分析模块十一:【CSV模块基础:writer与reader】(20分钟)核心知识点:csv.writer:writerow()写入单行,writerows()写入多行csv.reader:遍历返回每行的列表newline=''参数:解决Windows换行符问题自动类型转换:CSV中的数据默认为字符串教学活动:讲授(10分钟):讲解importcsv后,使用csv.writer和csv.reader的基本方法。通过【例6-15】和【例6-17】演示写入和读取操作。强调newline=''在Windows上的必要性。演示(6分钟):教师演示【例6-16】写入多行温度数据,然后用【例6-18】的列表推导式将其还原为嵌套列表(二维数据)。练习(4分钟):学生使用csv.writer将自己创建的用户二维列表写入users.csv,然后用csv.reader读取并打印。教学方法:模块功能精讲、读写操作演示、数据格式转换模块十二:【带表头CSV:DictReader与DictWriter】(20分钟)核心知识点:带表头CSV:第一行为列名csv.DictReader:以字典形式读取行,键为列名csv.DictWriter:字典形式写入,需指定fieldnames类型转换:从字符串转整数、浮点数等教学活动:讲授(12分钟):通过【例6-19】讲解DictReader如何将行转为字典(row['id']访问字段)。通过【例6-21】演示DictWriter的用法,特别是writerow()传入字典。演示(4分钟):教师使用【例6-20】的process_transf函数,演示如何将age从字符串转为整数。练习(4分钟):学生修改之前的users.csv读取代码,使用DictReader,并将age转为整数类型。教学方法:字典式访问讲解、类型转换演示、表头处理实践模块十三:【综合任务二:操作CSV商品数据】(25分钟)核心知识点:使用csv.DictReader读取带表头的products.csv使用csv.writer将购物车数据保存为CSV数据一致性:文件字段与对象属性对应错误处理:文件不存在、格式错误教学活动:任务对比分析(8分钟):教师对比任务6-2(普通文本)和任务6-3(CSV)在读写商品数据时的代码差异,强调CSV模块简化了分隔符处理和表头管理。代码实现指导(12分钟):重点讲解read_products_from_file中使用DictReader如何通过列名创建Product对象。讲解save_to_file中如何将购物车数据写入CSV。功能扩展练习(5分钟):学生为购物车CSV添加时间戳列,记录每次添加/保存的时间(需导入datetime模块)。教学方法:文件格式对比、CSV读写实践、字段映射实现模块十四:【文件操作最佳实践与编码处理】(20分钟)核心知识点:编码规范:始终指定encoding='utf-8'文件关闭:with语句是首选大文件处理:逐行读写而非全量读取文件备份:写入前先备份旧文件教学活动:最佳实践总结(8分钟):教师总结文件操作的注意事项:1)明确编码;2)使用with;3)大文件用逐行读写;4)关键数据先备份。编码问题实战(7分钟):教师演示:1)用记事本保存CSV为ANSI编码,程序用utf-8读取会乱码;2)演示如何在记事本中另存为UTF-8(图6-28)。练习(5分钟):学生编写一个安全的文件写入函数safe_write(filename,content),先备份原文件(存在时),再写入新内容。教学方法:经验总结、编码问题实战、安全操作设计模块十五:【AI辅助:生成文件读写模板】(20分钟)核心知识点:AI编程助手(通义灵码)在文件操作中的应用生成JSON/XML等格式文件的读写模板理解并修改AI生成的代码结合特定需求调整模板教学活动:演示与体验(15分钟):教师按照文档"AI实验室"部分,演示向通义灵码提问"生成JSON文件读写模板",并展示AI生成的代码(图6-30)。引导学生分析代码结构,讨论如何适配到"文创宝盒"系统的用户数据存储。代码审查与应用(5分钟):学生分组互相审查AI生成的代码,讨论其中可能存在的问题(如异常处理、编码指定),并提出改进建议。教学方法:AI工具赋能、模板代码分析、代码审查训练模块十六:【单元综合梳理与实战挑战】(20分钟)核心知识点:文件操作核心知识图谱:路径→打开→读写→关闭→编码文件格式选择指南:文本vsCSVvs其他数据持久化在系统中的作用与数据库的简单对比教学活动:知识结构化(10分钟):教师使用思维导图,系统梳理本单元所有核心概念及其关联(如pathlib操作、文件模式、读写方法、CSV模块、数据维度)。综合设计挑战(7分钟):学生小组合作,设计一个完整的"文创宝盒"数据存储方案:1)商品数据存储(CSV);2)用户注册信息存储(文本或JSON);3)购物车数据存储(CSV)。考虑文件命名、目录结构。开放式总结(3分钟):教师总结文件存储的优缺点(简单易用但查询效率低),为后续数据库学习做铺垫。教学方法:思维导图整合、系统设计实践、技术方案对比环节时长占比模块一:引子:数据持久化的必要性20分钟5.6%模块二:文件路径操作:pathlib模块20分钟5.6%模块三:文件读写基础:打开与关闭20分钟5.6%模块四:文本文件读写:读取与写入20分钟5.6%模块五:文件定位与编码处理20分钟5.6%模块六:综合任务一:确定购物车数据存储位置25分钟6.9%模块七:面向对象与文件结合:商品类设计20分钟5.6%模块八:购物车数据持久化:保存与加载20分钟5.6%模块九:数据维度:一维、二维与多维20分钟5.6%模块十:CSV格式与普通文本对比20分钟5.6%模块十一:CSV模块基础:writer与reader20分钟5.6%模块十二:带表头CSV:DictReader与DictWriter20分钟5.6%模块十三:综合任务二:操作CSV商品数据25分钟6.9%模块十四:文件操作最佳实践与编码处理20分钟5.6%模块十五:AI辅助:生成文件读写模板20分钟5.6%模块十六:单元综合梳理与实战挑战20分钟5.6%总计360分钟100%单元7:异常处理一、课程信息课时:4课时(理论2+实践2)二、学习目标【记忆】学生能够准确说出Python中常见异常类型(如IndexError,
ValueError,
KeyError等)及其触发场景,并记住异常捕获语句try...except...else...finally的基本结构,在课堂快速问答中正确率达到90%以上。【理解】学生能够解释异常与错误的区别、try-except的执行流程、raise与assert语句的用途,以及自定义异常的创建方式(继承Exception)。【应用】学生能够在"文创宝盒"系统的用户输入(如商品编号、数量)和文件操作场景中,正确使用try-except捕获并处理ValueError、IndexError、OSError等常见异常。【分析】学生能够分析在何种情况下需要自定义异常(如特定业务规则验证),并能合理设计异常类的结构和消息内容。【应用】学生能够使用raise主动抛出异常,使用assert进行条件断言,并能结合with语句确保资源(如文件句柄)的正确释放。【创造】学生能够综合运用异常处理知识,为"文创宝盒"系统设计健壮的错误处理机制,包括输入验证、文件操作安全和自定义业务异常,提升系统的容错性和用户体验。三、内容模块模块一:【引子:程序健壮性的挑战】(20分钟)核心知识点:程序健壮性的概念:抵抗异常和错误的能力"文创宝盒"系统中可能出现的异常场景(用户输入错误、文件不存在、索引越界等)未处理异常的后果:程序崩溃、数据丢失、用户体验差异常处理的价值:优雅降级、提供友好提示、保障系统稳定教学活动:讲授(10分钟):通过一个程序未处理输入异常的崩溃案例,引出异常处理的必要性。展示图7-1通义灵码的建议,概述异常处理的核心思想。互动(5分钟):学生分组讨论,列举"文创宝盒"系统中可能因用户输入引发异常的操作(如查询商品、修改购物车)。练习(5分钟):学生写出一个简单的程序片段(如输入年龄判断是否成年),指出其中可能出现的异常(如输入非数字)。教学方法:问题导入法、案例分析法、异常场景联想模块二:【异常概述:常见类型与场景】(20分钟)核心知识点:异常的定义:程序运行时发生的错误事件编译错误(语法错误)与运行错误的区别Python常见异常类型(表7.1):AttributeError,
IOError,
IndexError,
KeyError,
ValueError,
ZeroDivisionError等异常的层次结构:所有异常继承自BaseException教学活动:讲授(12分钟):讲解异常的分类和常见异常类型。通过代码演示触发各种异常的场景(如1/0→ZeroDivisionError,a[5]→IndexError)。演示(4分钟):教师展示VSCode的调试功能,单步运行到异常发生点,观察Python解释器抛出的异常信息(类型和错误消息)。练习(4分钟):学生尝试触发不同的异常(如int('a')→ValueError,d['x']→KeyError),并记录观察到的异常类型。教学方法:分类讲解、异常触发演示、错误观察记录模块三:【异常捕获语句:try-except基础】(20分钟)核心知识点:try-except语句的基本结构:捕获异常并处理try块:可能发生异常的代码except块:处理特定类型的异常多个except子句:处理不同异常(注意顺序:窄异常在前)异常对象:exceptExceptionase中的e包含错误信息教学活动:讲授(10分钟):讲解try-except语法。通过【例7-1】演示捕获ValueError处理输入转换错误。通过【例7-2】演示多个except子句处理不同异常。演示(6分钟):教师演示【例7-2】的完整案例,展示文件不存在(OSError)和内容无法转换(ValueError)的不同处理效果。练习(4分钟):学生修改练习1中的年龄判断程序,使用try-except捕获ValueError,提示"请输入有效数字"。教学方法:语法结构精讲、多异常处理演示、输入验证实践模块四:【异常处理进阶:else与finally子句】(20分钟)核心知识点:else子句:try块无异常时执行(通常用于成功后的操作)finally子句:无论是否发生异常都会执行(通常用于资源释放)finally的特殊场景:异常未处理时也会执行资源管理的最佳实践:文件、网络连接等在finally或with中关闭教学活动:讲授(10分钟):讲解else和finally的作用。通过【例7-3】演示文件操作的异常处理,强调finally中print('谢谢您的使用')的必然执行。演示(6分钟):教师对比两种文件操作方式:1)传统f.close();2)
withopen自动关闭。展示异常发生时资源是否被正确释放。练习(4分钟):学生为文件读取代码添加finally块,确保文件关闭(或直接使用with语句)。教学方法:子句功能讲解、资源管理演示、安全操作实践模块五:【综合任务一:提高系统健壮性】(25分钟)核心知识点:购物车删除操作中的异常:ValueError(输入非数字)、IndexError(序号越界)使用product_ids列表维护购物车顺序异常处理与业务逻辑的结合:确保数据一致性异常提示的友好性:明确指导用户正确操作教学活动:需求与代码分析(10分钟):教师带领学生分析任务7-1的代码实现,重点讲解remove_item_by_index方法如何捕获ValueError和IndexError,以及product_ids列表的作用。关键代码精讲(10分钟):详细讲解try-except块的逻辑:尝试转换输入为整数,检查索引范围,若失败则打印相应错误信息。解释duct_ids的维护方法。功能测试与优化(5分钟):学生测试各种删除场景(有效序号、非数字输入、越界序号),观察异常处理效果。教学方法:业务逻辑分析、异常处理精讲、场景测试实践模块六:【自定义异常:创建与抛出】(20分钟)核心知识点:自定义异常的必要性:处理业务特定规则(如商品不存在)自定义异常类的定义:继承Exception类raise语句:主动抛出异常对象assert语句:条件断言,失败抛出AssertionError教学活动:讲授(10分钟):讲解自定义异常的场景(如任务7-2的商品不存在)。通过【例7-4】创建LegalAgeException,通过【例7-5】演示raise抛出异常。演示(6分钟):教师演示【例7-6】的assert用法(检查除数不为0),对比raise与assert的适用场景(主动错误vs条件验证)。练习(4分钟):学生为"年龄必须大于0"的业务规则编写自定义异常InvalidAgeError,并在输入年龄时使用raise抛出。教学方法:自定义动机讲解、异常抛出演示、业务规则实现模块七:【综合任务二:提高系统容错率】(25分钟)核心知识点:自定义异常类ProductDoesNotExist的设计库存查询函数中的raise逻辑:商品不存在时抛出异常调用方捕获并处理自定义异常异常消息的友好性:明确提示用户错误原因教学活动:异常设计指导(10分钟):教师讲解ProductDoesNotExist异常类的实现,强调其__init__方法如何构造明确的错误消息。代码实现分析(10分钟):讲解get_stock_by_id函数如何检查商品存在性,不存在时raiseProductDoesNotExist(product_id)。讲解调用方如何捕获并处理此异常。交互体验优化(5分钟):学生测试查询功能,尝试查询存在和不存在的商品,观察自定义异常的提示效果(图7-10)。教学方法:自定义类实现、异常抛出逻辑、交互体验优化模块八:【AI辅助:代码优化与异常处理】(20分钟)核心知识点:通义灵码对代码异常风险的识别自动生成异常处理代码(如文件操作异常)异常处理的优化建议(如资源释放)AI辅助工具的合理使用:理解而非盲目依赖教学活动:演示与体验(12分钟):教师按照文档"AI实验室"部分,演示选择有缺陷的代码(图7-13),使用通义灵码"优化代码"功能(图7-14-7-15),分析其给出的异常处理优化(图7-16-7-17)。代码审查与应用(8分钟):学生分组审查AI生成的优化代码,讨论其异常处理是否全面(如是否处理了PermissionError),并提出改进建议。教学方法:AI工具赋能、代码审查训练、优化方案讨论模块九:【异常处理最佳实践】(15分钟)核心知识点:异常处理原则:具体捕获而非泛化(避免except:)异常与业务逻辑的分离:异常处理应简洁日志记录:结合logging模块记录异常详情finally与with的区别与选择教学活动:最佳实践总结(8分钟):教师总结异常处理的关键原则:1)捕获特定异常;2)提供明确错误信息;3)确保资源释放;4)避免隐藏错误。案例分析与改进(7分钟):分析一个有缺陷的异常处理代码(如except:捕获所有异常,无资源释放),学生分组讨论如何改进。教学方法:经验总结、案例分析、设计改进模块十:【单元综合梳理与实战挑战】(20分钟)核心知识点:异常处理知识图谱:常见异常→捕获语句→自定义异常→抛出机制"文创宝盒"系统的异常处理策略:输入验证、文件操作、业务规则异常处理与用户体验的平衡异常处理与其他章节的联系(文件、类)教学活动:知识结构化(8分钟):教师使用思维导图,系统梳理本单元所有核心概念及其关联(如异常类型、捕获结构、自定义类、抛出方式)。综合设计挑战(7分钟):学生小组合作,为"文创宝盒"系统设计一个完整的异常处理方案:1)用户注册时的输入验证异常;2)文件读写异常;3)商品库存不足的业务异常。开放式总结(5分钟):教师总结异常处理的价值(提升健壮性、改善用户体验),强调"优雅降级"的设计思想。教学方法:思维导图整合、系统设计实践、设计思想升华环节时长占比模块一:引子:程序健壮性的挑战20分钟11.1%模块二:异常概述:常见类型与场景20分钟11.1%模块三:异常捕获语句:try-except基础20分钟11.1%模块四:异常处理进阶:else与finally子句20分钟11.1%模块五:综合任务一:提高系统健壮性25分钟13.9%模块六:自定义异常:创建与抛出20分钟11.1%模块七:综合任务二:提高系统容错率25分钟13.9%模块八:AI辅助:代码优化与异常处理20分钟11.1%模块九:异常处理最佳实践15分钟8.3%模块十:单元综合梳理与实战挑战20分钟11.1%总计180分钟100%单元8:SQLite数据库一、课程信息课时:8课时(理论4+实践4)二、学习目标【记忆】学生能够准确说出数据库与文件存储的三大核心区别、SQLite数据库的特点与基本操作步骤、SQL语句中CREATETABLE,
INSERTINTO,
SELECT,
UPDATE,
DELETE的语法结构,在课堂提问中正确率达到90%以上。【理解】学生能够解释主键、外键的约束作用,?参数化语句防止SQL注入的原理,以及cursor.fetchone()与cursor.fetchall()方法返回结果的区别。【应用】学生能够独立完成创建SQLite数据库、设计数据表结构(包含主键、外键)、使用参数化语句执行数据增删查改操作,实现“文创宝盒”系统中商品与订单数据的存储与管理。【分析】学生能够分析“文创宝盒”系统“从购物车到下单”的业务流程,并将其分解为数据库操作的逻辑步骤(验证库存→生成订单→更新库存→清空购物车)。【应用】学生能够使用SQLite模块连接现有数据库,完成从CSV文件导入批量数据、执行复杂查询(如多表连接查询),并将查询结果导出为CSV文件。【创造】学生能够综合运用SQLite数据库编程知识,为“文创宝盒”系统设计并实现一个具备订单处理、库存管理、数据导出功能的数据库后端原型。三、内容模块模块一:【引子:数据库管理的优势】(20分钟)核心知识点:数据存储方式的演进:内存→文件→数据库文件存储的局限性:数据关联性弱、查询效率低、并发访问难数据库的核心优势:结构化存储、高效查询、数据一致性、安全与并发控制SQLite的特点:轻量级、无服务器、零配置、单文件教学活动:讲授(10分钟):对比展示同一商品数据在文本文件、CSV文件和数据库表中的存储形式,强调数据库的结构化优势。解读图8-1通义灵码的回答,总结数据库的四大优点。互动(5分钟):学生分组讨论“文创宝盒”系统中哪些业务逻辑(如查询某用户所有订单)用文件实现会很复杂,而用数据库会很便捷。练习(5分钟):学生写出一个日常生活中必须使用数据库管理的场景(如银行交易、电商购物),并简述原因。教学方法:对比导入法、优势分析法、场景关联模块二:【SQLite入门:连接与游标】(20分钟)核心知识点:SQLite数据库文件:.db后缀连接数据库:sqlite3.connect(‘database.db’)连接对象(Connection)与游标对象(Cursor)的作用使用with语句管理连接(自动提交与关闭)游标(Cursor):执行SQL命令和获取结果的“指针”教学活动:讲授(10分钟):讲解SQLite操作的四步流程,演示【例8-1】连接数据库,展示生成的.db文件。解释conn和cursor的关系,类比为“电话线”和“对话的人”。演示(5分钟):教师现场演示:使用withsqlite3.connect(‘test.db’)asconn:创建连接,获取cursor,并在with块结束后检查文件是否被锁定(说明已关闭)。练习(5分钟):学生创建SalesSystem.db数据库文件,并建立连接,输出连接对象类型。教学方法:流程精讲、对象关系类比、连接操作实践模块三:【数据表设计:创建与删除】(20分钟)核心知识点:数据表的概念:由行和列组成的二维结构CREATETABLE语句:定义表名、列名、数据类型SQLite数据类型:TEXT,
INTEGER,
REAL,
NULL,
BLOB约束条件:PRIMARYKEY,
NOTNULL,
FOREIGNKEY删除表:DROPTABLE(谨慎操作)教学活动:讲授(12分钟):讲解CREATETABLE语法。通过【例8-3】创建Student表。重点讲解任务8-1中Products和Cart表的设计,解释PRIMARYKEY(主键)和FOREIGNKEY(外键)的约束关系。演示(5分钟):教师使用SQLiteViewer插件(图8-3,8-4)展示Cart表的结构,让学生直观看到字段、类型和外键。演示【例8-4】删除表(强调不可逆)。练习(3分钟):学生编写SQL语句,在SalesSystem.db中创建Products表(参考表8.1),但不执行(为下个模块做准备)。教学方法:SQL语法精讲、表结构可视化、约束关系解析模块四:【操作数据表:创建与查看工具】(20分钟)核心知识点:使用IFNOTEXISTS避免重复创建表cursor.execute()执行SQL语句可视化工具:SQLiteViewer插件安装与使用模块化设计:将创建表功能封装为函数教学活动:讲授(10分钟):讲解CREATETABLEIFNOTEXISTS的实用性。演示将任务8-1中的创建表代码封装为一个函数create_tables(conn)。演示(5分钟):教师指导学生安装VSCode的SQLiteViewer插件,演示如何打开.db文件,查看表结构和数据(图8-5)。练习(5分钟):学生完成create_tables函数,并使用SQLiteViewer验证Products和Cart表是否创建成功。教学方法:防御性编程、工具赋能、模块化实践模块五:【插入数据:单条与批量】(20分钟)核心知识点:INSERTINTO语句:向表中添加新记录cursor.execute()插入单条数据参数化语句:使用?占位符cursor.executemany()批量插入数据(提高效率)导入外部数据:从CSV文件读取并插入数据库教学活动:讲授(12分钟):讲解INSERTINTO语法。对比【例8-5】(普通插入)和【例8-6】(参数化插入)。讲解【例8-7】从CSV文件导入数据的完整流程,强调类型转换(int(),
float())。演示(5分钟):教师演示【例8-7】的代码,将products.csv数据导入Products表,并用SQLiteViewer验证导入结果(图8-8)。练习(3分钟):学生为Cart表使用executemany插入两条测试数据【例8-8】,并用SQLiteViewer查看。教学方法:插入方式对比、数据导入演示、批量操作实践模块六:【查询数据:基础与参数化】(20分钟)核心知识点:SELECT语句:从表中检索数据cursor.fetchone():获取下一行(返回元组或None)cursor.fetchall():获取所有行(返回元组列表)WHERE子句:条件过滤参数化查询:安全地传递查询条件教学活动:讲授(10分钟):讲解SELECT*FROMtable和带WHERE条件的查询。通过【例8-9】和【例8-10】演示fetchone和fetchall的用法及区别。演示(6分钟):教师演示【例8-11】的关键代码:定义get_cart_items函数,使用WHEREuser_id=?进行参数化查询,并将结果转换为字典列表。练习(4分钟):学生编写一个函数get_product_by_id(product_id),查询Products表中指定商品的信息并返回。教学方法:查询方法精讲、结果集处理、函数封装实践模块七:【更新与删除数据】(20分钟)核心知识点:UPDATE语句:修改表中现有记录DELETE语句:从表中删除记录参数化更新/删除:确保操作准确性注意:DELETE不带WHERE会清空整个表元组单元素问题:(value,)的写法教学活动:讲授(12分钟):讲解UPDATE...SET...WHERE...和DELETEFROM...WHERE...语法。通过【例8-13】演示参数化更新和删除,重点强调WHERE条件的重要性,并解释为什么('004',)需要逗号。演示(4分钟):教师演示一个业务场景:将购物车中某商品的数量加1(UPDATE),以及从购物车中移除某商品(DELETE)。练习(4分钟):学生编写一个函数update_product_stock(product_id,quantity),更新指定商品的库存(减少)。教学方法:更新删除语法、参数化实践、业务逻辑关联模块八:【综合任务一:创建商品销售数据库】(25分钟)核心知识点:数据库设计:Products表与Cart表的关联外键约束:FOREIGNKEY确保数据引用完整性表结构规划:字段、类型、约束的选择创建表的完整代码组织教学活动:数据库设计讨论(10分钟):教师引导学生分析“文创宝盒”系统初期需要存储哪些数据(商品、购物车)。分析表8.1和表8.2,理解product_id作为外键如何关联两张表。代码实现指导(10分钟):讲解任务8-1的完整实现代码,重点解释PRIMARYKEY,
FOREIGNKEY的SQL写法,以及使用IFNOTEXISTS的健壮性。拓展任务引导(5分钟):引导学生完成拓展训练,设计Orders和OrderDetails表,思考订单状态(status)、时间戳(created_at)等字段的设计,并创建表。教学方法:实体关系分析、外键约束讲解、系统设计实践模块九:【高级操作:脚本执行与复杂查询】(20分钟)核心知识点:cursor.executescript():执行多条由分号分隔的SQL语句SQL脚本的应用:初始化数据库、执行复杂操作多表连接查询:JOIN(为后续数据分析铺垫)数据完整性操作:事务的初步概念教学活动:讲授(10分钟):讲解executescript的用途,通过【例8-12】演示如何用一条命令完成“删除旧表→创建新表→插入数据”。简述JOIN的概念(如查询订单及其商品详情)。演示(6分钟):教师演示一个初始化数据库的脚本,包含创建多个表并插入初始数据。演示一个简单的两表连接查询,获取购物车中的商品名称。练习(4分钟):学生将创建Products和Cart表的语句改写成SQL脚本,并用executescript执行。教学方法:脚本化操作、多表查询引入、初始化演示模块十:【业务逻辑实现:从购物车到下单】(20分钟)核心知识点:业务流程分解:验证→创建订单→更新库存→清空购物车函数模块化:每个步骤封装为独立函数数据一致性:使用数据库事务(mit())确保多个操作要么都成功,要么都失败订单号生成:使用uuid.uuid4()教学活动:业务流程梳理(10分钟):教师带领学生分解任务8-2的业务流程,画出流程图。讲解为何要先验证库存,再创建订单,最后更新库存,顺序不能颠倒。核心函数讲解(6分钟):讲解validate_cart_items(库存验证)和create_order(订单创建)两个核心函数的实现逻辑,重点解释参数化查询和uuid的使用。事务概念引入(4分钟):解释mit()的作用,并说明在with语句中,所有操作成功后会自动提交,失败则会自动回滚。教学方法:业务流程分析、核心逻辑精讲、事务概念引入模块十一:【综合任务二:操作商品销售数据】(25分钟)核心知识点:库存验证逻辑:查询并比较库存与购买数量订单生成逻辑:计算总价、插入Orders和OrderDetails表库存更新逻辑:使用UPDATE...SETstock=stock-?购物车清空逻辑:DELETEFROMCartWHEREuser_id=?函数串联与测试教学活动:关键代码精讲(12分钟):逐行讲解任务8-2中place_order主函数如何串联validate_cart_items,
create_order,
update_stock,
clear_cart。讲解isinstance(valid_items,str)判断错误信息的技巧。功能演示(8分钟):教师提供测试数据cart_items,运行place_order函数,展示完整的下单流程(图8-15),并使用SQLiteViewer查看生成的订单和订单详情数据(图8-16,8-17)。错误处理讨论(5分钟):引导学生讨论,如果库存验证不通过,后续的步骤是否还会执行?为什么?(答案:不会,因为函数已提前返回错误信息)教学方法:代码串讲、全流程演示、异常流程思考模块十二:【数据查询与导出:数据分析基础】(20分钟)核心知识点:复杂查询:SELECT指定字段、从多表查询查询结果导出:结合csv.writer将数据写入CSV文件数据持久化的多种形式:数据库vs文件为数据分析准备数据教学活动:讲授(10分钟):讲解拓展训练中的查询需求:从OrderDetails表查询product_id,
quantity,
sale_date。演示如何将cursor.fetchall()的结果通过csv.writer写入文件。演示(6分钟):教师演示编写export_order_details_to_csv()函数,执行SQL查询并将结果写入order_details1.csv(图8-18)。练习(4分钟):学生编写一个查询,获取Products表中某个类别(如“书签”)的所有商品,并将结果打印出来。教学方法:查询与导出结合、数据应用演示、简单查询练习模块十三:【AI辅助:了解其他数据库访问】(20分钟)核心知识点:数据库访问的共性:连接、游标、执行SQL、关闭不同数据库的差异:连接库、连接字符串、部分SQL方言AI辅助学习:利用通义灵码快速获取其他数据库(如MySQL)的访问模板知识迁移能力:从SQLite到其他数据库教学活动:对比与迁移(12分钟):教师对比讲解图8-19中通义灵码给出的MySQL示例代码与之前学习的SQLite代码,找出相同点(操作步骤、SQL语句)和不同点(连接方式、库名、占位符%s)。代码分析讨论(8分钟):学生分组分析AI生成的MySQL代码,讨论其中的异常处理(try...except)、连接参数配置等,理解其通用性与特殊性。教学方法:知识迁移、AI工具赋能、代码对比分析模块十四:【单元综合梳理与系统设计】(20分钟)核心知识点:数据库编程知识图谱:连接→游标→DDL(建表)→DML(增删查改)→事务→导出“文创宝盒”系统数据层架构:商品表、购物车表、订单表、订单详情表的关系数据库在系统中的作用:持久化、查询、事务支持前后端数据交互的简单构想教学活动:知识结构化(10分钟):教师使用思维导图,系统梳理本单元所有核心概念和操作,形成从连接到业务的完整知识链条。系统架构设计挑战(7分钟):学生小组合作,绘制“文创宝盒”系统的简易数据库ER图(实体关系图),包含已学的四张表,并描述主要的业务查询(如“查询用户历史订单”)。开放式总结(3分钟):教师总结SQLite的适用场景(轻量级应用、原型开发、嵌入式设备),并指出大型系统可能会使用MySQL、PostgreSQL等更强大的数据库。教学方法:思维导图整合、架构设计实践、技术选型展望时间分配表环节时长占比模块一:引子:数据库管理的优势20分钟5.6%模块二:SQLite入门:连接与游标20分钟5.6%模块三:数据表设计:创建与删除20分钟5.6%模块四:操作数据表:创建与查看工具20分钟5.6%模块五:插入数据:单条与批量20分钟5.6%模块六:查询数据:基础与参数化20分钟5.6%模块七:更新与删除数据20分钟5.6%模块八:综合任务一:创建商品销售数据库25分钟6.9%模块九:高级操作:脚本执行与复杂查询20分钟5.6%模块十:业务逻辑实现:从购物车到下单20分钟5.6%模块十一:综合任务二:操作商品销售数据25分钟6.9%模块十二:数据查询与导出:数据分析基础20分钟5.6%模块十三:AI辅助:了解其他数据库访问20分钟5.6%模块十四:单元综合梳理与系统设计20分钟5.6%总计360分钟100%单元9:数据分析与可视化一、课程信息课时:4课时(理论2+实践2)二、学习目标【记忆】学生能够准确说出NumPy、Pandas和Matplotlib三个库的主要用途与核心数据结构(数组、Series、DataFrame、图表),并能正确拼写常用方法名(如np.array(),pd.read_csv(),plt.plot())。【理解】学生能够解释NumPy数组与Python列表的根本区别、Pandas中Series与DataFrame的关系,以及折线图、条形图、直方图分别适用于展示何种类型的数据。【应用】学生能够使用NumPy创建和操作多维数组,完成基本的数组运算(如元素级计算、求和、求均值);能够使用Pandas读取CSV文件、进行数据合并(merge)、分组聚合(groupby)和简单的数据筛选。【分析】学生能够分析给定数据集(如“文创宝盒”销售数据),判断应使用何种数据结构(DataFrame)和方法进行分析(如按商品分组计算总销售额),并选择合适的图表类型进行可视化。【应用】学生能够使用Matplotlib绘制基本图表(条形图、折线图),并为图表添加必要的标题、坐标轴标签和图例,最终将图表保存为图像文件。【创造】学生能够综合运用NumPy、Pandas和Matplotlib三个库,完成“商品销售数据分析与可视化”的综合任务,形成从数据加载、分析处理到图表展示的完整工作流。三、内容模块模块一:【引子:从数据到洞察力】(20分钟)核心知识点:数据分析与可视化的目的:从原始数据中发现规律、辅助决策“文创宝盒”系统的数据价值:销售数据中蕴藏的商机(畅销品、淡旺季)Python数据分析的三驾马车:NumPy(高效计算)、Pandas(数据处理)、Matplotlib(数据可视化)数据分析的基本工作流:获取数据→处理数据→分析数据→可视化结果教学活动:讲授(10分钟):通过“只看数字报表vs看销售趋势图”的对比,引出数据可视化的价值。展示图9-1通义灵码的回答,概
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 种畜冻精制作工安全应急考核试卷含答案
- 大型养路机械司机安全专项能力考核试卷含答案
- 钻井平台水手改进考核试卷含答案
- 空管自动化系统机务员岗前技能综合实践考核试卷含答案
- 2026年新科教版初中八年级科学上册第一单元溶液溶质质量分数卷含答案
- 蜂媒授粉员岗前安全意识强化考核试卷含答案
- 局部通风机操作工操作规范知识考核试卷含答案
- 汽轮机值班员岗前技能理论考核试卷含答案
- 矿热电炉熔炼工岗前理论考核试卷含答案
- 日间手术医疗设备维护保养策略
- 能源合同托管协议书范本
- 租房协议模板租房合同
- 劳务派遣用工管理制度
- 2025年职工职业技能竞赛(工程造价赛项)参考试题库(含答案)
- 校长在学校中层干部会议上讲话:破局、担当、领航打造卓越团队
- 2024-2025学年沪科版初中数学八年级下册课件 19.4 综合与实践
- 眼科手术室安全管理
- 金属非金属地下矿山安全生产标准化管理制度汇编
- 《国家级区域医疗中心设置标准》儿童医院
- 【MOOC】研究生英语科技论文写作-北京科技大学 中国大学慕课MOOC答案
- 管道施工安全知识培训
评论
0/150
提交评论