





















在一个学期的Java课程讲授过程中,通过一个贯穿教学案例,逐步让学生掌握并应用Java编程技术。
该教学案例以一个功能的简单的信息系统程序作为起点,在随后的教学过程中逐渐对该程序进行理解、改造、增加功能,最终完成一个功能相对完整的程序。
在整个过程中,还需要求学生逐步掌握AI大模型工具在编程辅助与报告撰写的应用。从而,实现“Java能力”与“AI素养”的同步提升。
https://gitee.com/jmune/java-project-evolution
仓库中包含初始案例代码库与案例个步骤的实施方案。
部分案例来自教材:《Java程序设计与实践(微课版)》,人民邮电出版社,ISBN:978-7-115-65212-6
以下为贯穿案例的具体实施方案。
思路:
引入一个功能简单但编写规范以面向对象范式编写的MIS系统。案例中使用的是学生信息管理系统,仅具备基本功能(通过姓名、专业和GPA添加、删除和搜索学生)。该案例使用AI生成,根据需求进行裁剪,以降低程序的复杂性从而满足教学需求。
教学目标:
引入时机: 讲解完Java绪论后的实验课上。
使用步骤:
作业内容如下:
阅读、理解并运行系统源代码,编写Markdown格式博客案例初步分析报告1。
Markdown相关参考文章:拓展阅读:使用Markdown编写文档
作业格式请参考如下Markdown示例:
# 博文标题
[TOC]
## 功能讲解
数据处理:该程序主要处理什么数据?这些数据存储在哪里?与C语言程序相比,Java代码处理这些数据有何不同之处。
功能说明:程序运行截图(请在菜单显示出你们小组成员的学号与姓名),每张截图要配有简要文字说明其功能。
## 类功能讲解
简述每个类的功能概述、属性的用途、所包含的方法。
简述哪个类与所有其它类都不太一样。
## 基本语法讲解
简述代码中所使用到的一些Java特有语法。
思路:
学完面向对象基础概念后,对小系统可以做出基础的面向对象分析,有助于面向对象概念的掌握。作业中引入AI平台,让学生初步了解如何使用AI帮助自己学习。
教学目标:
引入时机: 讲解完Java封装、构造方法、package与类的设计后。
使用步骤:
作业内容如下:
使用自己已经学习的面向对象知识,针对学生管理系统编写简易面向对象分析报告。
请提交Markdown格式的博文链接。
注意:报告中不可以只有图而无文字说明。每幅图都要有相应的文字说明。
询问AI:报告中关于包结构部分可以将代码上传到AI平台后,询问应该如何为其设计良好的包结构。
推荐AI平台:DeepSeek、通义千问、智谱清言、Kimi。
报告格式如下:
# 博文名称
## 1. 案例中哪里体现出了封装性及其好处?
## 2. 案例中的setter/getter模式与封装性
什么是setter/getter?有什么用?怎么自动生成?
## 3. 案例中某些类的toString()方法
简述toString方法有什么用?
toString一般应包含什么内容?
toString()方法从哪里来?
## 4. 案例中几个常用方法解析
简述案例代码几个常用方法的解析:
类名.构造方法名,功能描述;
类名.方法签名(入参、功能、返回参数),功能描述;
类名.方法签名(入参、功能、返回参数),功能描述。
## 5. 案例中的面向对象设计
5.1 尝试用一段话描述案例所解决的问题。找到其中的名词与动词。
5.2 如果让你设计,根据上面的分析你会抽象出什么类?各具备什么功能?
## 6. 使用package为系统重新规划包结构
6.1 每个包的说明:
6.2 IDE中包结构截图。
思路:
在学生掌握了面向对象编程基础后,通过实际项目案例深入理解设计模式的应用。DAO模式作为企业级开发中常用的数据访问层设计模式,能够帮助学生理解分层架构思想。通过改造学生信息管理系统,让学生在实践中体会接口编程、依赖倒置原则的实际应用,同时培养多种数据存储方式的集成能力。
教学目标:
引入时机: 在完成Java面向对象编程基础教学(包括类与对象、封装、继承、多态、接口、包管理等)后。
使用步骤:
AI辅助生成报告指南:
1.方法:建议将自己想写的要点使用Markdown格式先列出来,然后写出一个撰写报告的格式化提示词(Markdown格式)联合自己所写的源代码,提交给AI,让其生成。
2.注意:使用AI生成报告务必需要根据实际情况进行删改。不要让自己想写的东西被生成的文字所淹没。不要让自己的报告充满语法正确、言之无物的废话。
作业内容如下:
老师所提供的系统代码(附件:StudentsManagementSystemProject.zip)的学生数据都是存储List中。现在需要使用DAO模式改造该系统,为其提供多种数据存取模式(1. 通过文本文件存取;2.通过List存取)。要求在主程序中可以自由切换这两种数据存取模式。
其他项目要求:项目使用良好的包结构组织。
进阶(特别加分):增加通过Excel文件存取的模式。
请参考:Maven简要使用说明:在IDEA中创建一个基于POI的处理Excel文件的简单Java Maven项目
说明:可以使用AI协助完成系统与报告。但自己要能看懂、能进行修改。
提交:
1.Markdown格式的博文链接(放入留言)
2.博文对应的PDF文档
3.你的生成报告的提示词。
博文要求:本次博文要求不再提供模板,要求根据自己所思所想,完成一份相对比较完整的报告。博文中应有IDE项目目录结构截图、程序运行的截图或视频。
思路:
GUI图形界面开发是提升学生编程兴趣的有效途径,Swing作为Java的标准GUI工具包,虽然相对传统但学习曲线平缓,适合教学使用。利用AI生成基础GUI代码可以解决界面布局繁琐、事件处理复杂等技术难点,让学生专注于业务逻辑与界面集成的核心概念理解。
教学目标:
引入时机: 讲解完Java基础、面向对象概念和DAO模式、Java GUI编程后。
使用步骤:
作业内容如下:
为你的商城购物车系统、学生管理系统添加GUI(图形用户界面)。也可自己选择编写一些实用的GUI小程序。
要求:
1.建议数据展示使用JTable或更好的展示方式。
2.尽量使用MVC模式。或者能在报告中说明,你如何使用了MVC模式。
3.系统的业务逻辑代码应既可用于控制台界面、也可用于图形用户界面。需配验证运行界面截图。
4.提交后,需联系助教或者老师演示运行才能加分。
5.对AI生成的代码,要能看懂大部分,并能进行局部修改。
参考文章:
思路:
在学生已经掌握面向对象基础并完成了一个信息管理系统的基础上,引入文件操作,让学生学会如何将数据持久化保存到文件中,以及如何从文件中读取数据。同时,通过使用AI大模型来帮助学生解决遇到的问题,并学会如何与AI合作完成编程任务。
教学目标:
1.掌握Java中文件读写的基本操作。
2.学会使用流(InputStream/OutputStream、Reader/Writer)进行文件操作。
3.学会使用AI大模型辅助编程,解决实际问题。
4.综合运用IDE调试和优化代码。
5.尝试使用DAO模式为系统增加文件存取功能(可选)
引入时机: 讲解完Java IO流、异常处理、集合框架后
使用步骤:
1.布置课后作业项目案例作业:使用文件存取数据,要求学生在已有的系统基础上,添加将数据保存到文件和从文件加载数据的功能。
2.学生可以使用AI平台咨询如何实现文件存取,以及如何处理可能出现的异常。
3.优秀作业点评:点评时注意学生是否合理使用了文件流,是否处理了异常,以及代码的健壮性。同时,点评几份使用AI辅助完成的作业,讨论AI辅助编程的利弊。
4.优秀作业分享:将完成较好的作业链接发到QQ群进行分享。
作业内容如下:
请为你的系统添加使用文件存取数据的功能。要求如下:
请提交以下内容:
Markdown格式的博文格式如下:
# 博文名称
## Git提交记录截图
放置一张截图,要体现每个参与者的贡献。
## 1. 文件存取功能概述
简述为什么要使用文件存取数据,以及你实现的基本思路。
## 2. 文件存储格式设计
1. 你选择了文本文件还是二进制文件?为什么?
2. 如果使用文本文件,请说明每一行代表什么,每个字段之间如何分隔。
3. 如果使用二进制文件,请说明你使用了什么序列化机制。
4. 询问AI:如果使用csv文件存取数据有什么有什么优缺点?如果使用json格式字符串存取数据有什么优缺点?
## 3. 关键代码解析
### 3.1 从文件加载数据
展示从文件加载数据的代码,并解释每一步的作用。
### 3.2 将数据保存到文件
展示将数据保存到文件的代码,并解释每一步的作用。
### 3.3 异常处理
你是如何处理文件读写过程中可能出现的异常的?
## 4. 使用AI辅助编程的体验
4.1 你向AI询问了什么问题?AI给出了怎样的回答?请分点列出。
4.2 你对AI的回答是否满意?你是如何验证AI提供的方法的正确性的?
4.3 对于AI生成的代码,你是在已有代码的基础上进行逐步修改还是全文件覆盖?何时使用哪种方法
4.4 在使用AI辅助编程的过程中,你有哪些收获和体会?
## 5. 遇到的问题及解决方法
在实现文件存取功能的过程中,你遇到了哪些问题?是如何解决的?
## 6. 总结
通过本次作业,你学到了什么?还有什么可以改进的地方?
思路:
学完Java网络编程后,将单机版学生管理系统改造为C/S架构,有助于掌握网络编程、I/O流编程与多线程开发技术。
通过TCP Socket实现客户端与服务器的通信,让学生理解网络应用的基本原理。
教学目标:
引入时机: 讲解完Java网络编程、多线程、TCP/IP协议后。
使用步骤:
作业内容如下:
使用Java TCP网络编程将原有的学生信息管理系统改造为C/S架构,实现客户端与服务器的分离。
具体要求:
请提交以下内容:
注意:报告中不可以只有图而无文字说明。每幅图都要有相应的文字说明。
博客报告模板如下:
# 将学生管理系统改造为C/S模式 - 开发过程报告
## 1. 系统架构设计
### 1.1 C/S架构设计思路
- 描述从单机系统到C/S架构的改造思路
- 客户端和服务器端的职责划分
### 1.2 系统架构图
[插入C/S架构设计图]
**架构说明:**
- 客户端与服务器的通信方式
- 数据持久化层的设计
- 多线程处理机制
## 2. 关键问题
主要回答如下问题:
1. 使用了字节流还是字符流来传递数据?简述I/O流应用于网络编程的好处?》
2. 如何使用多线程实现多客户端同时操作学生数据?多线程并发访问数据可能会带来什么问题?
## 3. 运行截图
## 4. 关键代码解析
### 4.1 客户端与服务器端通信
以某一个具体功能说明
### 4.2 服务器端将从Socket读取到的数据存入本地
### 4.3 服务器端如何支持多个客户端同时访问
## 5. 遇到的问题及解决方法
分点列出你在使用开发过程中碰到主要难点,及使用AI或其他方法解决的过程。至少亮两点。
## 6. 总结
通过本次作业,你学到了什么?还有什么可以改进的地方?
询问AI:能否使用应用层的网络协议的来改写该系统。该问题可借用AI。
思路:
学完JDBC和DAO模式后,对学生信息管理系统进行数据库改造,有助于掌握数据库编程和分层架构的思想。作业中引入AI平台,让学生学会如何使用AI解决实际问题。
教学目标:
引入时机: 讲解完JDBC、DAO模式。
使用步骤:
作业内容如下:
使用JDBC和DAO模式对学生信息管理系统进行改造,使其能够使用MySQL数据库存储数据。
具体要求:
请提交以下内容:
注意:报告中不可以只有图而无文字说明。每幅图都要有相应的文字说明。
博客报告模板如下:
# 为学生管理系统增加数据库存取能力 - 开发过程报告
## Git提交记录截图
放置一张截图,要体现每个参与者的贡献。
## 1. 数据库设计与实体类说明
这里描述
1. 数据库表截图
2. 你所设计的每个实体类与数据库中表的关系。
3. 询问AI:为什么要将Student类的id改为Long型
## 2. DAO模式设计与实现
### 2.1 包结构设计
展示项目包结构并说明每个包的职责:
### 2.2 DAO接口设计
展示如StudentDAO接口定义。
### 2.3 DAO实现类
展示如StudentDAO接口定义。
展示StudentDAOImpl的核心实现:
## 3. 运行截图
关键操作的运行截图
## 4. 关键代码解析
### 4.1 从数据库加载数据
### 4.2 将数据保存到数据库
展示将数据保存到文件的代码,并解释每一步的作用。
### 4.3 异常处理
你是如何处理数据库读写过程中可能出现的异常的?
## 5. 遇到的问题及解决方法
分点列出你在使用开发过程中碰到主要难点,及使用AI或其他方法解决的过程。至少亮两点。
## 6. 总结
通过本次作业,你学到了什么?还有什么可以改进的地方?
询问AI:除了使用JDBCUtil.java这种方式可以让数据库代码编写更简单以外,还有其他什么可以常用的方式。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。