基于实例教学的软件工程专业教学系统
摘要
随着信息技术发展,软件工程教育面临理论与实践脱节的挑战。当前多数本科生缺乏实例开发经验,传统教学难以将理论联系现实场景,成为专业教学的核心矛盾。为此,本研究设计并实现基于实例教学的软件工程教学系统,通过真实项目案例与在线平台整合,构建理论实践融合的教学模式。
系统基于 Java 语言,采用 Spring 框架搭建后端,MySQL 存储数据,前端通过 Vue.js 实现交互,基于 B/S 架构支持跨平台访问。核心功能模块包括:学生端提供实例学习、项目实践、作业提交及个人中心管理,助力学生掌握需求分析、设计开发、测试部署全流程;导师端支持教案管理、学习计划制定、作业批改及项目评估,实现个性化教学与实时反馈;管理员端负责用户管理、资源审核及系统配置,保障平台稳定运行。系统整合覆盖软件开发全生命周期的真实案例,配套详细文档与代码示例,并引入在线评估工具量化考核学习过程与成果,提供针对性反馈。
应用实践表明,系统有效提升学生学习兴趣与实践能力,帮助学生通过实例操作深化开发流程理解,辅助导师高效管理教学资源。测试显示,系统功能完整、操作便捷、数据安全,显著促进理论向实践转化。研究为软件工程教育提供新思路,未来可扩充实例库并引入人工智能技术,优化个性化教学与智能评估,推动教育技术与专业教学深度融合。
关键词 软件工程;实例教学;教学平台;项目驱动学习;教育技术
1 绪论 1
1.1 研究背景 1
1.2 国内外研究现状 1
1.2.1 国内研究现状 1
1.2.2 国外研究现状 1
1.3 研究意义 2
1.4本章小结 2
2 相关理论与技术 3
2.1 Java 3
2.2 Spring框架 3
2.3 MySQL 3
2.4 Vue.Js 3
2.5 本章小结 4
3 系统分析 5
3.1 可行性分析 5
3.1.1 系统可行性分析 5
3.1.2 技术可行性分析 5
3.1.3 操作可行性分析 5
3.1.4 运营可行性分析 5
3.1.5 法律可行性分析 6
3.2 需求分析 6
3.3 非功能需求 6
3.4 系统用例图 7
3.5 系统流程的分析 9
3.5.1 实例教学管理的流程 9
3.5.2 个人中心管理流程 10
3.5.3 登录流程 11
3.6 本章小结 12
4 系统设计 13
4.1 系统功能结构设计 13
4.2 数据库设计 13
4.3 时序图 15
4.3.1 注册时序图 15
4.3.2 登录时序图 16
4.3.3 管理员修改用户信息时序图 16
4.3.4 管理员管理系统信息时序图 17
4.4 活动图 17
4.4.1 用户注册管理模块设计 17
4.4.2 用户登录管理模块设计 18
4.5 数据表 19
4.6 本章小结 24
5 系统实现 25
5.1 开发环境与配置 25
5.2 学生功能的实现 25
5.3 导师功能的实现 29
5.4 管理员功能的实现 34
5.5 本章小结 37
6 系统测试 38
6.1 软件测试介绍 38
6.2 功能模块测试用例 38
6.2.1 登录测试用例 38
6.2.2 注册测试用例 38
6.2.3 学习计划管理测试用例 39
6.2.4 学习成果管理测试用例 40
6.2.5 批改信息管理测试用例 41
6.2.6 安全模块测试用例 41
6.3 本章小结 42
7 总结与展望 43
7.1 总结 43
7.2 展望 43
参考文献 44
致谢 46
为了主动适应新一轮科技革命和产业变革的新要求,为了迎合“中国制造2025”、“互联网+”、“网络强国”等重大战略需求,教育部积极推动“新工科”建设。“新工科”意味着深度融合信息技术,创新教育教学改革发展,以工科专业新理念、新姿态、新方法、新课程回应经济新常态。我国已发布《普通高等学校本科专业类教学质量国家标准》,该标准以人才、创新为目标和教学质量,为软件工程等“新工科”专业的教学改革指明了方向[1]。
目前,大部分本科生没有实例系统开发经验,这成了软件工程专业教学的主要矛盾。软件工程专业注重实践开发,课程多是针对现实问题开设的,这就导致导师在讲授课本理论知识时,很难引导学生联系现实背景。而构建以实例教学为主的教学模式,能深化学生对现实软件系统开发流程和问题的理解,是解决这一矛盾的主要路径[2]。
实例教学系统从宏观角度可分为学生、导师和管理员的数据使用修改功能。
(1)用户在进行数据填写中,关键功能主要包含以下几点:用户注册登录、实例信息、校园资讯、论坛交流、公告信息、个人中心等有关信息,并进行详细操作。学生用例图如图3.1所示。
(2)导师在进行页面管理时需要以导师需求为核心,对功能主动修改,其关键功能包含导师注册登录、首页、教案信息管理、学习信息管理、实例信息管理、批改信息管理等有关信息,并进行详细操作。导师用例图如图3.2所示。
(3)管理员的权限是最高的,可以对学生、导师系统进行任何修改,从而进一步改善其工作效率,包括所在功能进行查看,修改和删除,包括导师和学生功能。管理员用例图如图3.3所示。
4.1 系统功能结构设计
实例教学系统从宏观角度上分为三个模块,分别是管理员功能模块和学生、导师功能模块。其核心功能模块主要包括以下几点:首页、管理员管理、学生管理、导师管理、实例信息管理、新闻资讯管理、评估信息管理、论坛管理、菜单管理、教案信息管理等,系统功能模块图如图4.1所示。
4.5 数据表
程序设计的学习过程中,构建数据库管理系统模式成为必要环节性操作,当涉及数据库管理系统的理解抑或系统接口的定制化需求时。数据资料的存储由此得以实现,实例表明从应用编程过程中,可以看到如果因避免操作系统页面的信息从而加载的行为,系统整体效率会进一步得到提高。信息库的优势就在于存储这大量数据集合,由此成为了管理信息系统的核心。新增、删除、修改与查询等功能操作由数据集合提供予管理信息系统建设过程,因此程序代码中如果遇到不可识别信息,则直接查找的行为就可以得到规避。特殊的方法在运用当中,可以使信息表在各中不同类型的组成部分进一步准确排序和合并,信息库管理系统自身的构成由此达成目标。MySQL数据库被本系统采用以实现数据存储目的,主要数据表具体如下所示。
表 4.1 菜单表用于存储系统菜单信息,支持菜单的展示与管理。字段 “id” 是主键,用于唯一标识每条菜单记录;“addtime” 记录菜单的创建时间,默认值为当前时间;“menu” 存储菜单的具体内容。表 4.1 如下表所示。
表4.1 菜单
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | int | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
menu | longtext | 42 | 菜单 |
表 4.2 教案信息表用于存储教案相关数据,为教案管理提供数据支持。字段 “id” 作为主键唯一标识每条教案记录;“addtime” 记录教案创建时间,默认值为当前时间;“refid” 为引用 ID,可能关联其他数据;“tablename” 存储表名;“name” 为教案名称;“picture” 存放教案相关图片;“type” 表示教案类型,默认值为 1;“inteltype” 是推荐类型;“remark” 用于记录备注信息;“userid” 标识关联的用户 ID。表 4.2 如下表所示。
表4.2 教案信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | int | 主键 | |||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
refid | bigint | refid | |||
tablename | varchar | 200 | 表名 | ||
name | varchar | 200 | 名称 | ||
picture | longtext | 429 | 图片 | ||
type | varchar | 200 | 类型 | 1 | |
inteltype | varchar | 200 | 推荐类型 | ||
remark | varchar | 200 | 备注 | ||
userid | int | 用户id |
表 4.3 实例信息表用于存储实例相关信息,为系统提供实例数据支持。其中 “id” 作为主键唯一标识实例;“addtime” 记录实例的创建时间,默认值为当前时间;“leixing” 用于表示实例类型;“fabushijian” 记录实例的发布时间。表 4.3 如下表所示。
表4.3 实例信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | int | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
leixing | varchar | 实例类型 | |||
fabushijian | datetime | 发布时间 |
表 4.4 学习信息表用于存储学习相关的教案信息,方便对教案内容进行管理和查询。“id” 作为主键唯一标识学习信息记录;“name” 用于记录教案名称;“value” 用来存储教案内容。表 4.4 如下表所示。
表4.4 学习信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
name | varchar | 100 | 教案名称 | ||
value | varchar | 100 | 教案内容 |
表 4.5 管理员表用于存储管理员相关信息,对管理员身份进行识别和管理。“id” 作为主键唯一标识每个管理员;“addtime” 记录管理员信息的创建时间,默认值为当前时间;“username” 是管理员的用户名;“password” 用于存储管理员密码;“role” 表明管理员的角色。表 4.5 如下表所示。
表4.5 管理员
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
username | varchar | 200 | 用户名 | ||
password | varchar | 200 | 密码 | ||
role | varchar | 200 | 角色 |
表 4.6 导师表用于存储导师相关信息,实现对导师信息的管理与查询。“id” 作为主键唯一标识每位导师;“addtime” 记录导师信息的创建时间,默认值为当前时间;“qishouzhanghao” 是导师账号;“mima” 为导师密码;“qishouxingming” 是导师姓名;“touxiang” 用于存储导师头像;“xingbie” 表示导师性别;“shoujihao” 记录导师手机号。表 4.6 如下表所示。
表4.6 导师
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
qishouzhanghao | varchar | 200 | 导师账号 | ||
mima | varchar | 200 | 密码 | ||
qishouxingming | varchar | 200 | 导师姓名 | ||
touxiang | longtext | 429 | 头像 | ||
xingbie | varchar | 200 | 性别 | ||
shoujihao | varchar | 200 | 手机号 |
表 4.7 学习成果表用于存储学习成果相关信息,方便对学生的学习成果进行管理和记录。“id” 作为主键唯一标识每个学习成果记录;“addtime” 记录学习成果信息的创建时间,默认值为当前时间;“mingcheng” 为项目名称;“leixing” 表示项目类型;“zhidao” 是项目指导相关信息;“fengmian” 用于存放项目封面;“pingfen” 记录项目评分;“neirong” 存储项目内容。表 4.7 如下表所示。
表4.7 学习成果
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
mingcheng | varchar | 200 | 项目名称 | ||
leixing | varchar | 200 | 项目类型 | ||
zhidao | varchar | 200 | 项目指导 | ||
fengmian | longtext | 429 | 封面 | ||
pingfen | varchar | 200 | 项目评分 | ||
neirong | int | 项目内容 |
表 4.8 新闻资讯表用于存储新闻资讯相关信息,以便展示和管理新闻内容。“id” 作为主键唯一标识每一条新闻资讯;“addtime” 记录新闻资讯的创建时间,默认值为当前时间;“title” 是新闻的标题;“introduction” 为新闻简介;“picture” 存放新闻相关图片;“content” 用于记录新闻的具体内容。表 4.8 如下表所示。
表4.8 新闻资讯
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
title | varchar | 200 | 标题 | ||
introduction | longtext | 429 | 简介 | ||
picture | longtext | 429 | 图片 | ||
content | longtext | 429 | 内容 |
表 4.9 作业信息表用于存储作业相关数据,为作业管理提供支持。“id” 作为主键唯一标识每条作业信息记录;“addtime” 记录作业信息的创建时间,默认值为当前时间;“biaoti” 是作业标题;“fengmian” 用于存放作业封面;“jianjie” 是作业简介;“neirong” 存储作业具体内容;“faburiqi” 记录作业的发布日期。表 4.9 如下表所示。
表4.9 作业信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
biaoti | varchar | 200 | 标题 | ||
fengmian | longtext | 429 | 封面 | ||
jianjie | longtext | 429 | 简介 | ||
neirong | longtext | 429 | 内容 | ||
faburiqi | date | 发布日期 |
表 4.10 论坛交流表用于存储论坛交流的相关信息,方便管理论坛帖子及用户互动情况。“id” 作为主键唯一标识每个论坛交流记录;“addtime” 记录帖子的创建时间,默认值为当前时间;“title” 是帖子标题;“content” 为帖子内容;“parentid” 用于关联父帖子,构建帖子层级关系;“username” 记录发帖用户名;“avatarurl” 存放用户头像链接;“isdone” 表示帖子状态,默认值为 “开放”;“userid” 标识发帖用户的 ID。表 4.10 如下表所示。
表4.10 论坛交流
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
title | varchar | 200 | 帖子标题 | ||
content | longtext | 429 | 帖子内容 | ||
parentid | bigint | 父节点id | |||
username | varchar | 200 | 用户名 | ||
avatarurl | longtext | 429 | 头像 | ||
isdone | varchar | 200 | 状态 | 开放 | |
userid | bigint | 用户id |
表 4.11 批改信息表用于存储批改相关信息,实现对批改内容的有效管理。“id” 作为主键唯一标识批改信息记录;“addtime” 记录批改信息的创建时间,默认值为当前时间;“biaoti” 是批改信息的标题;“fengmian” 用于存放封面;“jianjie” 为简介;“neirong” 是具体的批改内容;“faburiqi” 记录发布日期。表 4.11 如下表所示。
表4.11 批改信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
biaoti | varchar | 200 | 标题 | ||
fengmian | longtext | 429 | 封面 | ||
jianjie | longtext | 429 | 简介 | ||
neirong | longtext | 429 | 内容 | ||
faburiqi | date | 发布日期 |
表 4.12 教案信息表用于存储教案的详细信息,方便对教案进行管理和查阅。“id” 作为主键唯一标识每个教案记录;“addtime” 记录教案信息的创建时间,默认值为当前时间;“biaoti” 是教案标题;“fengmian” 存放教案封面;“jianjie” 是教案简介;“neirong” 存储教案具体内容;“faburiqi” 记录教案的发布日期。表 4.12 如下表所示。
表4.12 教案信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
biaoti | varchar | 200 | 标题 | ||
fengmian | longtext | 429 | 封面 | ||
jianjie | longtext | 429 | 简介 | ||
neirong | longtext | 429 | 内容 | ||
faburiqi | date | 发布日期 |
表 4.13 学生表用于存储学生相关信息,方便管理学生数据。“id” 作为主键唯一标识每个学生;“addtime” 记录学生信息的创建时间,默认值为当前时间;“yonghuzhanghao” 是学生账号;“yonghumima” 为学生密码;“yonghuxingming” 是学生姓名;“touxiang” 用于存储学生头像;“xingbie” 表示学生性别;“shoujihaoma” 记录学生手机号码。表 4.13 如下表所示。
表4.13 学生
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
yonghuzhanghao | varchar | 200 | 学生账号 | ||
yonghumima | varchar | 200 | 学生密码 | ||
yonghuxingming | varchar | 200 | 学生姓名 | ||
touxiang | longtext | 429 | 头像 | ||
xingbie | varchar | 200 | 性别 | ||
shoujihaoma | varchar | 200 | 手机号码 |
表 4.14 上交信息表用于存储上交相关的各类信息,实现对上交内容的有效管理与记录。“id” 作为主键唯一标识每条上交信息记录;“addtime” 记录上交信息的创建时间,默认值为当前时间;“biaoti” 是上交内容的标题;“fengmian” 用于存放封面;“jianjie” 为内容简介;“neirong” 是具体的上交内容;“faburiqi” 记录发布日期。表 4.14 如下表所示。
表4.14 上交信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
biaoti | varchar | 200 | 标题 | ||
fengmian | longtext | 429 | 封面 | ||
jianjie | longtext | 429 | 简介 | ||
neirong | longtext | 429 | 内容 | ||
faburiqi | date | 发布日期 |
5.2 学生功能的实现
经由系统网址之访问得以实现,呈现于用户视野的乃首页界面之初始形态。清晰可见导航条组件于此界面中展示,包含首页选项、实例信息板块、论坛交流区域、教案信息单元及新闻资讯栏目等主要功能模块。系统首页界面如图5.1所示。
学生点通过击实例信息,可以在数据运行过程当中查看实例类型等信息,在实例信息页面的同时搜索栏输入实例名称进行搜索。实例信息页面如图5.4所示。
用户点击论坛交流,在论坛交流页面的搜索栏输入标题等信息,进行搜索,然后还可以查看标题、内容、发布人、发布时间等信息等操作,论坛信息页面如图5.5所示。
5.3 导师功能的实现
系统网址被导师打开时,呈现于视野首当其冲的为首页界面之内容。导航条位于该页面顶部位置,展示着实例教学系统各项功能模块,包括但不限于首页板块、教案信息管理单元、学习计划调控部分。学习信息监管区域亦清晰可见,相邻排列着学习成果统计组件与上交信息处理端口。实例信息整合区与项目评估分析段并列排布,最后可见批改信息处理功能区之存在。系统首页界面如图5.8所示。
在实例信息页面可以输入实例信息内容,进行信息更新,还可以对实例类型、实例详情、实例标签等进行详情操作;实例信息管理页面如图5.10所示。
在教案信息页面可以新增教案信息,进行信息更新,还可以对教案类型、教案名称、教案方法、学习地点等进行详情操作;教案信息管理页面如图5.11所示。
7 总结与展望
7.1 总结
本软件工程专业教学平台基于实例教学理念构建,集实例学习、项目实践、在线评测、互动交流等功能于一体。该系统具有显著的优点和亮点,它以实例为核心,把理论知识与实践应用紧密结合,能够帮助学生更好地理解和掌握软件工程知识。系统实现后,有效解决了传统教学中理论与实践脱节的问题,提升了学生的学习兴趣和实践能力。为提升学生解决实际问题的能力,系统提供真实的项目实践环境,引导学生完成从需求分析到软件测试的完整开发流程。同时,系统能够自动评估学生的代码质量、项目完成度等情况,并给出个性化反馈,助力学生及时发现问题并加以改进。此外,系统还具备在线讨论、代码分享等功能,可促进学生之间的交流与合作,营造良好的学习氛围。
7.2 展望
尽管本系统取得了一定的成果,但仍存在一些需要改进和优化的地方:目前,实例库的丰富性与多样性、实例库的规模和覆盖面尚有限制,未来需要不断扩充实例库,涵盖更多软件工程领域和不同难度等级的实例,以更好地满足不同层次学生的学习需求。例如自然语言处理、机器学习等,实现智能答疑等。为此,可以以自然语言处理为主、机器学习为符,通过人工智能技术,将智能化水平进一步得到提高。具体而言,可以实现智能答疑、代码自动生成和项目智能评估等功能,从而为学生提供更加个性化和高效的学习体验。在未来的研究中,计划从以下两个方面进行深入探索。相信随着技术的不断发展和完善,基于实例教学的软件工程专业教学系统将会在培养高素质软件工程人才方面发挥更加重要的作用。