高职软件技术专业《医药进销存管理系统项目开发》教学设计_第1页
高职软件技术专业《医药进销存管理系统项目开发》教学设计_第2页
高职软件技术专业《医药进销存管理系统项目开发》教学设计_第3页
高职软件技术专业《医药进销存管理系统项目开发》教学设计_第4页
高职软件技术专业《医药进销存管理系统项目开发》教学设计_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

高职软件技术专业《医药进销存管理系统项目开发》教学设计一、课程基本信息【基础】本课程系高职软件技术专业核心技能课,开设于第五学期,总计64学时(其中理论讲授24学时,项目实训40学时),计4学分。课程先修课程为《Java程序设计基础》、《MySQL数据库应用》、《Web前端开发》,后续衔接《毕业顶岗实习》与《毕业设计》。课程以真实医药流通企业为背景,选取“医药进销存管理系统”作为载体,采用项目化教学,旨在培养学生综合运用Java主流技术栈(SpringBoot+MyBatis)进行数据库应用系统设计与开发的能力,强化学生对药品流通行业GSP规范及数据安全的认知。二、教材分析与处理【基础】本课程选用校企合作开发教材《JavaEE企业级应用开发实战(SpringBoot版)》及配套的《医药进销存系统开发案例集》。教材遵循“以能力为本位、以项目为载体”的编写思路,但鉴于医药行业对药品追溯及批号管理的特殊性,现有教材对GSP(药品经营质量管理规范)合规性的业务逻辑解析尚不够深入。因此,在教学实施过程中,教师将融入国家药品监督管理局关于药品信息化追溯体系建设的相关要求,补充医药行业特有的“双批号管理”、“近效期预警”、“首营品种审核”等业务规则,使教学内容与企业真实岗位标准精准对接。三、学情分析【基础】授课对象为高职软件技术专业三年级学生。知识层面,学生已初步掌握Java语法、数据库基础操作及HTML/CSS,但对SSM(Spring+SpringMVC+MyBatis)框架的整合应用尚不熟练,缺乏大型项目的整体架构经验。技能层面,学生具备一定的代码编写能力,但需求分析能力、数据库范式运用与反范式优化的实际权衡能力较弱,尤其是在处理复杂业务逻辑(如销售退货对成本的影响、多条件组合查询的性能优化)时,常感到无从下手。情感层面,学生对接触真实行业项目充满期待,但对医药行业的专业术语(如GSP、首营企业、效期)存在畏难情绪。教学中需通过情景模拟、角色扮演等方式,化解学生的陌生感,激发探究兴趣。四、教学目标设计【重要】依据高职人才培养方案及《国家职业教育改革实施方案》要求,确立三维教学目标:(一)知识目标1.【基础】理解医药进销存系统的基本业务流程(采购入库、销售出库、库存盘点、供应商管理、客户管理)。2.【基础】掌握基于SpringBoot+MyBatisPlus的整合开发环境搭建。3.【重要】掌握数据库概念结构设计中ER图的绘制,并能将ER图准确转换为符合第三范式(3NF)的关系模式。4.【难点】掌握药品批次管理、有效期预警算法、成本核算(移动加权平均法或个别计价法)的实现原理。(二)能力目标5.【高频考点】能够独立完成系统核心模块(如药品信息管理、采购单录入、销售开单)的代码编写与调试。6.【重要】具备使用Navicat或MySQLWorkbench进行数据库物理设计(索引优化、存储过程编写)的能力。7.【热点】能结合GSP规范,设计并实现药品进销存过程中的操作日志记录与数据合规性校验功能。8.培养学生查阅官方技术文档、解决“报错”信息的自主学习能力。(三)素质目标9.培养严谨细致的工作作风,特别是针对药品数量、批号、效期等关键数据的操作,树立“零差错”的职业意识。10.强化团队协作沟通能力,在分组开发中理解“代码规范”与“版本控制(Git)”的重要性。11.树立医药行业职业道德观,理解系统数据安全与患者用药安全之间的紧密联系,杜绝数据篡改与信息泄露。五、教学重点与难点【重要】教学重点:医药进销存系统的数据库设计(核心表结构:药品表、供货商表、采购入库表、销售出库表、库存表、用户表)及基于MyBatisPlus的数据持久层实现。【难点】教学难点:库存动态更新算法(如何处理销售出库时的批次扣减)、近效期自动预警机制的SQL实现,以及在并发场景下防止库存超卖的数据锁机制。六、教学方法与策略(一)教法1.项目驱动法:以“某连锁药店信息化升级”为虚拟项目,将项目分解为多个任务(Task),贯穿整个教学周期。2.案例教学法:剖析一个简化版的进销存开源项目代码,引导学生“看中学”。3.支架式教学法:针对难点问题(如多表关联查询),教师先搭建“思维脚手架”,引导学生逐步拆解问题,最终自主攻克难关。(二)学法4.小组协作:56人一组,模拟企业项目组,设立项目经理(组长)、数据库工程师、后端开发工程师等角色。5.探究学习:鼓励学生在遇到问题时,首先通过官方文档、StackOverflow等途径自主寻求答案。6.模拟演练:在实训室中模拟药店收货、验货、上架、销售场景,让学生扮演不同岗位操作员,理解系统背后的业务逻辑。七、教学实施过程(核心环节,详尽展开)本课程共计16次课(每次4学时),以下为详细的教学实施过程设计,以8个关键阶段呈现,贯穿从需求分析到系统部署的全流程。(一)项目导入与需求分析(第1次课,4学时)【基础】开课伊始,播放一段约5分钟的连锁药店真实工作场景视频,展示工作人员手工记账、翻阅纸质卡片查询库存的繁琐与低效,引发学生共鸣。随后,发布项目任务书:为“康健大药房”设计一套覆盖采购、销售、库存、GSP管理的数字化系统。教学过程:1.角色扮演:将学生分组,每组分别扮演药店店长、采购员、库管员、收银员。教师扮演“信息科经理”,组织需求调研会。学生需从各自角色出发,提出对系统的功能需求。例如,“店长”提出要能看到每种药品的毛利,“库管员”强调入库时必须录入生产批号和效期,“收银员”要求扫描药品条码能快速弹出价格。2.需求梳理:教师在白板上引导学生将零散的需求归类为“采购管理”、“销售管理”、“库存管理”、“基础信息管理”、“系统管理”五大模块,并引出GSP规范中关于“批号管理”和“效期预警”的强制性要求。3.【重要】绘制业务流程图:指导学生使用Visio或ProcessOn工具,绘制出核心业务流程。重点包括:a.采购入库流程:生成采购单>到货验收(核对批号、效期)>审核入库>更新库存。b.销售出库流程:顾客选购>扫描药品>系统效期校验>扣减库存>生成销售记录。4.课后任务:以小组为单位,完善业务流程图,并撰写初步的《软件需求规格说明书》框架。要求学生课后调研至少一家药店(或网上查询),了解实际药品包装上的“批准文号”、“生产批号”、“生产日期”、“有效期至”的具体格式。(二)数据库概念与逻辑设计(第23次课,8学时)【高频考点】这是决定系统成败的关键环节。教学过程严格遵循数据库设计范式。1.【重要】概念结构设计(ER模型):a.引导学生从需求中抽取出实体:药品、供应商、客户(会员)、采购订单、采购单明细、销售订单、销售单明细、库存、用户。b.分析实体间的联系:药品与供应商(多对多)、药品与库存(一对多,因为一种药可能对应多条库存记录,不同批号)、采购订单与药品(一对多)、销售订单与药品(一对多)。c.难点突破:特别强调“库存”实体不是简单的“药品+数量”。引入“批次”概念,库存实体应包含字段:库存ID、药品ID、批号、生产日期、有效期至、库存数量、货位号。这是符合GSP要求的核心设计,也是区别于普通商品进销存的关键。2.逻辑结构设计(关系模式转换):a.讲解如何将ER图转换为关系模型,并进行规范化处理。b.【基础】详细设计主要数据表结构,如下例所示:药品信息表(drug_info):drug_id(bigint,primarykey)药品内部IDdrug_code(varchar(50))药品本位码或商品条码drug_name(varchar(100))通用名specification(varchar(50))规格dosage_form(varchar(20))剂型unit(varchar(10))零售单位manufacturer(varchar(200))生产厂商approval_number(varchar(50))批准文号status(tinyint)状态(正常/停售)库存批次表(stock_batch):batch_id(bigint,primarykey)批次IDdrug_id(bigint,foreignkeyreferencesdrug_info(drug_id))supplier_id(bigint)供应商IDbatch_no(varchar(50))生产批号production_date(date)生产日期expiry_date(date)有效期至purchase_price(decimal(10,2))采购价retail_price(decimal(10,2))零售价quantity(int)当前批次库存数量location(varchar(50))货位号采购入库单主表(purchase_order):po_id(bigint,primarykey)po_code(varchar(30))采购单号supplier_id(bigint)order_date(datetime)status(tinyint)状态(待审核/已入库/部分入库)total_amount(decimal(10,2))created_by(bigint)采购入库明细表(purchase_detail):detail_id(bigint,primarykey)po_id(bigint)drug_id(bigint)batch_no(varchar(50))本次采购的批号expiry_date(date)quantity(int)purchase_price(decimal(10,2))subtotal(decimal(10,2))销售出库单主表(sale_order):so_id(bigint,primarykey)so_code(varchar(30))销售单号customer_id(bigint)会员ID,允许为空sale_date(datetime)total_amount(decimal(10,2))payment_type(varchar(20))created_by(bigint)销售出库明细表(sale_detail):detail_id(bigint,primarykey)so_id(bigint)batch_id(bigint)直接关联库存批次表,指明从哪个批次出货quantity(int)price(decimal(10,2))实际销售价subtotal(decimal(10,2))3.小组互评:各小组展示自己的ER图和表结构,全班讨论哪种设计能更好地支持“先进先出(FEFO)”原则(近效期先出)。(三)系统环境搭建与项目初始化(第4次课,4学时)【基础】本阶段旨在消除开发环境差异,确保所有学生站在同一起跑线上。1.开发工具链配置:统一要求使用IntelliJIDEA(settings.xmlon)、JDK1.8、Maven3.6+、MySQL5.7+、Git、Postman。教师通过投屏演示完整的安装与配置过程,特别是Maven的settings.xml配置阿里云镜像,加速依赖。start.spring.io目初始化:使用SpringInitializr(start.spring.io)快速生成项目基础结构。讲解项目依赖(Starter)的选择:SpringWeb、MyBatisFramework、MySQLDriver、Lombok。强调Lombok插件的作用,简化实体类代码。3.【重要】三层架构分包:在项目中创建标准的包结构:.kangjian.health(主包)下分controller、service、mapper、pojo(或entity)、util、config等子包。讲解每一层的职责。application.ymltis逆向工程:讲解application.yml(或properties)的配置,演示如何使用MyBatisGenerator或MyBatisPlus的代码生成器,根据上节课设计的数据表,自动生成POJO实体类、Mapper接口及XML映射文件。让学生体验到自动化工具带来的高效。5.版本控制入门:教师演示如何在GitHub或Gitee上创建远程仓库,并将初始化后的项目推送至仓库。要求学生将每次课的项目进展都进行mit和push,培养代码管理习惯。(四)基础信息管理模块开发(第56次课,8学时)【基础】从最简单的单表操作入手,建立开发自信。1.药品信息管理:基于生成的Mapper代码,完成对drug_info表的增删改查(CRUD)。重点讲解分页查询的实现,引入PageHelper或MyBatisPlus的分页插件。前端可采用简单的BootstrapTable或通过Postman进行接口测试,不强制要求复杂的前端页面,以接口可用性为准。2.供应商管理:实现供应商表的CRUD。讲解数据校验的重要性,在Service层使用HibernateValidator进行参数校验,如供应商电话格式、邮箱格式等。3.统一响应结果封装:定义一个通用类Result,包含code、message、data属性,规范前后端交互的数据格式。例如:{“code”:200,”message”:”操作成功”,”data”:{…}}。4.【热点】全局异常处理:引入@ControllerAdvice注解,讲解如何统一捕获系统异常、业务异常,并封装成标准Result返回给客户端,避免将堆栈信息直接暴露给用户,提升系统安全性。5.实训任务:各小组完成基础信息模块的API开发,并使用Postman编写测试用例,形成测试集。(五)核心业务之采购入库模块(第79次课,12学时)【难点】这是系统中最复杂的模块之一,涉及多表事务操作。1.业务流程梳理:再次强化采购入库的业务流程——前端填写采购单(主表),再逐条录入药品明细(子表)。入库审核通过后,必须同时做两件事:更新对应药品的批次库存表(如果批号已存在则增加数量,不存在则新增批次记录);将采购明细归档,便于日后追溯。2.前端请求设计:讲解如何设计接收前端JSON数据的DTO(数据传输对象)。采购入库的DTO应包含主表信息和明细列表。3.【重要】Service层事务处理:Exception.class添加@Transactional(rollbackFor=Exception.class)注解,保证保存采购主表、批量保存明细表、更新库存批次表这三个操作要么全部成功,要么全部回滚。b.讲解事务的隔离级别,模拟并发场景下,如何防止脏读。4.批号与效期逻辑实现:a.入库时,判断页面传入的“批号”在stock_batch表中,针对同一药品是否已存在。b.如果存在:updatestock_batchsetquantity=quantity+{quantity}wherebatch_id=…c.如果不存在:insertintostock_batch…(新增一条批次记录)5.【难点】库存成本核算:简单介绍移动加权平均法的概念,并实现在入库时重新计算该药品的平均成本,更新到药品主表或批次表中(具体视企业要求而定)。此部分为拓展内容,对学有余力的学生布置为选做作业。6.实训任务:开发采购订单录入、采购订单查询、入库审核(模拟审核按钮)功能。要求各组完成功能后,通过故意制造异常(如重复主键、空指针)来测试事务是否真正回滚,加深对事务的理解。(六)核心业务之销售出库模块(第1012次课,12学时)【高频考点】销售模块的核心是“批次选择”与“库存扣减”。1.【难点】先进先出算法实现:a.销售开单时,选择某个药品后,系统应自动列出该药品所有库存大于0的批次,并按有效期从近到远排序。b.实现思路:编写一个SQL查询stock_batch表,wheredrug_id=?andquantity>0orderbyexpiry_dateasc,production_dateasc。c.前端展示批次下拉框或表格,供收银员选择从哪个批次出库。引导学生讨论:如果客户买的药品数量超过当前最早批次的数量怎么办?引出“拆批”的概念:先扣完第一批,剩余数量再从第二批扣。这个过程需要在业务逻辑层通过循环或递归实现。2.并发控制与数据一致性:a.引入高并发场景:双十一药店促销,多人同时购买同一种药品的同一批次,如何防止超卖?b.讲解悲观锁(select…forupdate)与乐观锁的适用场景。建议学生采用乐观锁(在stock_batch表中增加version字段)来实现,避免锁表带来的性能开销。c.代码实现:updatestock_batchsetquantity=quantity{outQty},version=version+1wherebatch_id={batchId}andquantity>={outQty}andversion={oldVersion}。判断更新影响行数,若为0,则说明数据已被修改,重试或报错。3.销售退货处理:反向流程。退货时,将药品加回对应批次(前提是能追溯到原销售批次)。引导学生设计销售退货表,以及退货后库存增加的逻辑。4.实训任务:开发POS端简单销售界面(命令行或简单Web),实现扫描药品、选择批次、计算总价、提交订单、打印小票(模拟)的功能。测试并发场景下,库存是否正确扣减。(七)辅助功能与系统优化(第1314次课,8学时)1.【热点】效期预警看板:a.需求:在系统首页展示即将到期(如3个月内)的药品列表,并高亮显示。d.drug_names.batch_noectd.drug_name,s.batch_no,s.quantity,s.expiry_datefromstock_batchsleftjoindrug_infodons.drug_id=d.drug_idwheres.expiry_datebetweencurdate()anddate_add(curdate(),interval3month)ands.quantity>0。c.前端使用ECharts或简单的Table展示,并可以导出预警报表。2.【重要】权限管理(RBAC):a.引入用户角色权限概念。设计用户表(user)、角色表(role)、权限表(permission)、用户角色关联表、角色权限关联表。b.结合SpringSecurity框架,讲解如何配置登录认证、密码加密(BCrypt)以及基于注解的权限控制(@PreAuthorize),区分“采购员”、“库管员”、“店长”的操作范围。例如,采购员只能访问采购订单相关接口,不能访问销售数据。3.操作日志(AOP应用):a.需求:记录谁在什么时间做了什么操作,特别是对库存的修改。b.使用SpringAOP,自定义一个@Log注解,切面记录控制层方法的入参、执行时间、返回结果,并异步保存到数据库日志表中。强调合规性要求:医药系统的关键操作必须可追溯。4.代码规范与性能优化:a.SonarQube静态检查:指导学生安装SonarLint插件,实时扫描代码中的不规范写法(如魔法值、重复代码、潜在空指针)。b.慢SQL分析:讲解如何开启MySQL慢查询日志,并利用Explain分析SQL语句,引导学生为常用查询字段(如药品名、条码、批号)建立索引,优化查询速度。(八)项目整合、测试与答辩(第1516次课,8学时)1.前后端联调:学生分组整合各自负责的模块,通过Swagger或YApi管理API文档,进行前后端数据联调,解决跨域等问题。2.【重要】系统测试:a.单元测试:演示使用JUnit和MockMvc对Controller层进行单元测试,确保每个接口的可靠性。b.集成测试:设计完整的业务场景测试用例,例如:新增供货商>新增药品>制作采购单>审核入库>查看库存>销售出库>查看库存变化>效期预警触发。全流程走通。c.Bug修复与复盘:各小组总结在测试过程中遇到的典型Bug(如空指针、事务不回滚、SQL异常),

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论