博主介绍:✌全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行交流合作✌
主要内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。
🍅文末获取源码联系🍅
👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟
2022-2024年最全的计算机软件毕业设计选题大全:1000个热门选题推荐✅
Java项目精品实战案例《100套》
Java微信小程序项目实战《100套》
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
一、 前言介绍:
在网络信息发展时代,众多的软件被开发出来,给用户带来了很大的选择余地,而且人们越来越追求更个性的需求。在这种时代背景下,平台只能以用户为导向,按项目分类组织,以项目的持续创新作为平台最重要的竞争手段。
系统采用了B/S结构,将所有模块采用以浏览器交互的模式,选择MySQL作为系统的数据库,开发工具选择My eclipse来进行系统的设计。基本实现了志愿者服务平台应有的主要功能模块,本系统有管理员、监管者、受益人和志愿者四大功能模块,主要包括:首页、个人中心、监管者管理、受益人管理、志愿者管理、任务分类管理、志愿项目管理、项目报名管理、任务进度管理、爱心商城管理、商城兑换管理、联系我们管理、爱心数管理、爱心数增加管理、爱心数兑换管理、系统管理等功能进行操作。
对系统进行测试后,改善了程序逻辑和代码。同时确保系统中所有的程序都能正常运行,所有的功能都能操作,并且该系统有很好的操作体验,实现互利。
二 、功能设计:
数据库的功能就是对系统中所有的数据进行存储和管理。所有的数据可以在数据库中产时间的进行存储,方便用户的使用。而且所有的数据库中的数据也应该具有一定的共享性,任何的系统可以对一些数据进行使用,同时还应该保持一定的独立性,每一个数据库中的数据都有很强的安全性,可以被很好的存放到数据库,没有进行身份的验证是不能对这些数据进行查看和使用的。数据库的设计需要明确每一个实体之间的联系,系统的E-R图如下图所示::
管理员实体主要存储管理信息包括索引、用户名、密码属性。管理员信息属性图如图4-4所示。
图4-4 管理员信息实体属性图
志愿项目主要包括项目名称、任务分类、项目图片、爱心数、服务地点、受益人账号、受益人姓名、受益人手机、监管者账号、开始时间、服务内容等属性,志愿项目属性图如图4-5所示。
图4-5志愿项目实体属性图
爱心商城实体属性主要包括商品名称、商品编号、商品图片、爱心数、品牌、商品分类、商品介绍等属性。爱心商城实体属性图如图4-6所示。
图4-6爱心商城属性图
三、功能实现:
系统功能模块
志愿者服务平台,在平台的首页可以查看首页、志愿项目、爱心商城、联系我们、志愿者资讯、个人中心、后台管理等信息,如图5-1所示。
图5-1平台首页界面图
志愿项目,在志愿项目页面中可以对项目名称、任务分类、项目图片、爱心数、服务地点、受益人账号、受益人姓名、受益人手机、监管者账号、开始时间、服务内容等进行查看,还可以进行报名参加或评论等操作,如图5-2所示。
图5-2志愿项目界面图
爱心商城,在爱心商城页面中可以对商品名称、商品编号、商品图片、爱心数、品牌、商品分类、商品介绍等进行查看,如图5-3所示。
图5-3爱心商城界面图
受益人注册,在受益人注册页面通过填写受益人账号、密码、受益人姓名、年龄、受益人手机、监管者账号等信息进行注册的操作,具体操作如图5-4所示。
图5-4受益人注册界面图
管理员功能模块
管理员登录,管理员通过输入界面上显示的信息然后点击登录就能登录到系统进行系统的使用了,如图5-5所示。
图5-5管理员登录界面图
管理员登录进入志愿者服务平台之后,就可以对所有的信息进行查看,可以查看到首页、个人中心、监管者管理、受益人管理、志愿者管理、任务分类管理、志愿项目管理、项目报名管理、任务进度管理、爱心商城管理、商城兑换管理、联系我们管理、爱心数管理、爱心数增加管理、爱心数兑换管理、系统管理等,并且还可以对其进行相应的操作管理,如图5-6所示。
图5-6管理员功能界面图
项目报名管理,在项目报名管理页面中可以对索引、报名编号、项目名称、任务分类、爱心数、服务地点、开始时间、受益人账号、受益人姓名、受益人手机、监管者账号、志愿者账号、志愿者姓名、志愿者手机、审核回复、审核状态等信息进行详情,修改或删除等操作,如图5-7所示。
图5-7项目报名管理界面图
任务进度管理,在任务进度管理页面中可以对索引、报名编号、项目名称、任务分类、爱心数、受益人账号、受益人姓名、受益人手机、监管者账号、志愿者账号、志愿者姓名、志愿者手机、开始时间、结束时间、任务进度等信息进行详情,修改或删除等操作,如图5-8所示。
图5-8任务进度管理界面图
爱心商城管理,在爱心商城管理页面中可以对索引、商品编号、商品名称、商品图片、爱心数、品牌、商品分类等信息进行详情,修改或删除等操作,如图5-9所示。
图5-9爱心商城管理界面图
商城兑换管理,在商城兑换管理页面中可以对索引、兑换编号、商品编号、商品名称、爱心数、志愿者账号、志愿者姓名、志愿者手机、收货地址、下单时间、审核回复、审核状态、审核等信息进行详情,修改或删除等操作,如图5-10所示。
图5-10商城兑换管理界面图
爱心数增加管理,在爱心数增加管理页面中可以对索引、志愿者账号、志愿者姓名、报名编号、爱心数、监管者账号、监管者姓名、受益人账号、备注等信息进行详情,修改或删除等操作,如图5-11所示。
图5-11爱心数增加管理界面图
爱心数兑换管理,在爱心数兑换管理页面中可以对索引、志愿者账号、志愿者姓名、兑换编号、爱心数、商品编号、商品名称、备注等信息进行详情,修改或删除等操作,如图5-12所示。
图5-12爱心数兑换管理界面图
受益人功能模块
受益人登录进入志愿者服务平台可以对首页、个人中心、监管者管理、志愿项目管理、项目报名管理、任务进度管理、爱心数增加管理等内容进行相应的操作管理,如图5-13所示。
图5-13受益人功能界面图
个人中心,在个人中心页面通过填写受益人账号、受益人姓名、性别、年龄、头像、受益人手机、监管者账号等信息进行个人信息修改操作,如图5-14所示。
图5-14个人中心界面图
志愿项目管理,在志愿项目管理页面中可以对索引、项目名称、任务分类、项目图片、爱心数、服务地点、受益人账号、受益人姓名、受益人手机、监管者账号、开始时间等信息进行详情、修改、查看评论或删除等操作,如图5-15所示。
图5-15志愿项目管理界面图
监管者功能模块
监管者登录进入志愿者服务平台可以对首页、个人中心、受益人管理、志愿项目管理、项目报名管理、任务进度管理、爱心数管理、爱心数增加管理等内容进行相应的操作管理,如图5-16所示。
图5-16监管者功能界面图
个人中心,在个人中心页面通过填写监管者账号、监管者姓名、性别、年龄、头像、监管者手机、受益人账号等信息进行个人信息修改操作,如图5-17所示。
图5-17个人中心界面图
志愿者功能模块
志愿者登录进入志愿者服务平台可以对首页、个人中心、项目报名管理、任务进度管理、商城兑换管理、爱心数管理、爱心数增加管理、爱心数兑换管理等内容进行相应的操作管理,如图5-18所示。
图5-18志愿者功能界面图
个人中心,在个人中心页面通过填写志愿者账号、志愿者姓名、性别、年龄、头像、志愿者手机等信息进行个人信息修改操作,如图5-19所示。
图5-19个人中心界面图
四、库表设计:
当志愿者服务平台在运行的时候,数据库要能确保自己的独立性,想要哪部分的数据就选择相应的设置选项,对应的数据就会以表格的形式展现出来。当对这一个功能进行设置,他就会与数据库进行连接,会在对话框中弹出相应的数据源。
表4-1:监管者
字段名称 |
类型 |
长度 |
字段说明 |
主键 |
默认值 |
id |
bigint |
主键 |
主键 |
||
addtime |
timestamp |
创建时间 |
CURRENT_TIMESTAMP |
||
jianguanzhezhanghao |
varchar |
200 |
监管者账号 |
||
mima |
varchar |
200 |
密码 |
||
jianguanzhexingming |
varchar |
200 |
监管者姓名 |
||
xingbie |
varchar |
200 |
性别 |
||
nianling |
int |
年龄 |
|||
touxiang |
varchar |
200 |
头像 |
||
jianguanzheshouji |
varchar |
200 |
监管者手机 |
||
shouyirenzhanghao |
varchar |
200 |
受益人账号 |
表4-2:志愿项目评论表
字段名称 |
类型 |
长度 |
字段说明 |
主键 |
默认值 |
id |
bigint |
主键 |
主键 |
||
addtime |
timestamp |
创建时间 |
CURRENT_TIMESTAMP |
||
refid |
bigint |
关联表id |
|||
userid |
bigint |
用户id |
|||
nickname |
varchar |
200 |
用户名 |
||
content |
longtext |
4294967295 |
评论内容 |
||
reply |
longtext |
4294967295 |
回复内容 |
表4-3:配置文件
字段名称 |
类型 |
长度 |
字段说明 |
主键 |
默认值 |
id |
bigint |
主键 |
主键 |
||
name |
varchar |
100 |
配置参数名称 |
||
value |
varchar |
100 |
配置参数值 |
表4-4:爱心数增加
字段名称 |
类型 |
长度 |
字段说明 |
主键 |
默认值 |
id |
bigint |
主键 |
主键 |
||
addtime |
timestamp |
创建时间 |
CURRENT_TIMESTAMP |
||
zhiyuanzhezhanghao |
varchar |
200 |
志愿者账号 |
||
zhiyuanzhexingming |
varchar |
200 |
志愿者姓名 |
||
baomingbianhao |
varchar |
200 |
报名编号 |
||
aixinshu |
varchar |
200 |
爱心数 |
||
jianguanzhezhanghao |
varchar |
200 |
监管者账号 |
||
jianguanzhexingming |
varchar |
200 |
监管者姓名 |
||
shouyirenzhanghao |
varchar |
200 |
受益人账号 |
||
beizhu |
varchar |
200 |
备注 |
表4-5:token表
字段名称 |
类型 |
长度 |
字段说明 |
主键 |
默认值 |
id |
bigint |
主键 |
主键 |
||
userid |
bigint |
用户id |
|||
username |
varchar |
100 |
用户名 |
||
tablename |
varchar |
100 |
表名 |
||
role |
varchar |
100 |
角色 |
||
token |
varchar |
200 |
密码 |
|
|
addtime |
timestamp |
新增时间 |
CURRENT_TIMESTAMP |
||
expiratedtime |
timestamp |
过期时间 |
CURRENT_TIMESTAMP |
表4-6:爱心数兑换
字段名称 |
类型 |
长度 |
字段说明 |
主键 |
默认值 |
id |
bigint |
主键 |
主键 |
||
addtime |
timestamp |
创建时间 |
CURRENT_TIMESTAMP |
||
zhiyuanzhezhanghao |
varchar |
200 |
志愿者账号 |
||
zhiyuanzhexingming |
varchar |
200 |
志愿者姓名 |
||
duihuanbianhao |
varchar |
200 |
兑换编号 |
||
aixinshu |
varchar |
200 |
爱心数 |
||
shangpinbianhao |
varchar |
200 |
服务编号 |
||
shangpinmingcheng |
varchar |
200 |
服务名称 |
||
beizhu |
varchar |
200 |
备注 |
表4-7:受益人
字段名称 |
类型 |
长度 |
字段说明 |
主键 |
默认值 |
id |
bigint |
主键 |
主键 |
||
addtime |
timestamp |
创建时间 |
CURRENT_TIMESTAMP |
||
shouyirenzhanghao |
varchar |
200 |
受益人账号 |
||
mima |
varchar |
200 |
密码 |
||
shouyirenxingming |
varchar |
200 |
受益人姓名 |
||
xingbie |
varchar |
200 |
性别 |
||
nianling |
int |
年龄 |
|||
touxiang |
varchar |
200 |
头像 |
||
shouyirenshouji |
varchar |
200 |
受益人手机 |
||
jianguanzhezhanghao |
varchar |
200 |
监管者账号 |
表4-8:志愿者
字段名称 |
类型 |
长度 |
字段说明 |
主键 |
默认值 |
id |
bigint |
主键 |
主键 |
||
addtime |
timestamp |
创建时间 |
CURRENT_TIMESTAMP |
||
zhiyuanzhezhanghao |
varchar |
200 |
志愿者账号 |
||
mima |
varchar |
200 |
密码 |
||
zhiyuanzhexingming |
varchar |
200 |
志愿者姓名 |
||
xingbie |
varchar |
200 |
性别 |
||
nianling |
int |
年龄 |
|||
touxiang |
varchar |
200 |
头像 |
||
zhiyuanzheshouji |
varchar |
200 |
志愿者手机 |
表4-9:爱心数
字段名称 |
类型 |
长度 |
字段说明 |
主键 |
默认值 |
id |
bigint |
主键 |
主键 |
||
addtime |
timestamp |
创建时间 |
CURRENT_TIMESTAMP |
||
zhiyuanzhezhanghao |
varchar |
200 |
志愿者账号 |
||
zhiyuanzhexingming |
varchar |
200 |
志愿者姓名 |
||
aixinshu |
int |
爱心数 |
表4-10:商城兑换
字段名称 |
类型 |
长度 |
字段说明 |
主键 |
默认值 |
id |
bigint |
主键 |
主键 |
||
addtime |
timestamp |
创建时间 |
CURRENT_TIMESTAMP |
||
duihuanbianhao |
varchar |
200 |
兑换编号 |
||
shangpinbianhao |
varchar |
200 |
服务编号 |
||
shangpinmingcheng |
varchar |
200 |
服务名称 |
||
aixinshu |
varchar |
200 |
爱心数 |
||
zhiyuanzhezhanghao |
varchar |
200 |
志愿者账号 |
||
zhiyuanzhexingming |
varchar |
200 |
志愿者姓名 |
||
zhiyuanzheshouji |
varchar |
200 |
志愿者手机 |
||
shouhuodizhi |
varchar |
200 |
收货地址 |
||
xiadanshijian |
datetime |
下单时间 |
|||
sfsh |
varchar |
200 |
是否审核 |
否 |
|
shhf |
longtext |
4294967295 |
审核回复 |
表4-11:志愿项目
字段名称 |
类型 |
长度 |
字段说明 |
主键 |
默认值 |
id |
bigint |
主键 |
主键 |
||
addtime |
timestamp |
创建时间 |
CURRENT_TIMESTAMP |
||
xiangmumingcheng |
varchar |
200 |
项目名称 |
||
renwufenlei |
varchar |
200 |
任务分类 |
||
xiangmutupian |
varchar |
200 |
项目图片 |
||
aixinshu |
int |
爱心数 |
|||
fuwudidian |
varchar |
200 |
服务地点 |
||
fuwuneirong |
longtext |
4294967295 |
服务内容 |
||
shouyirenzhanghao |
varchar |
200 |
受益人账号 |
||
shouyirenxingming |
varchar |
200 |
受益人姓名 |
||
shouyirenshouji |
varchar |
200 |
受益人手机 |
||
jianguanzhezhanghao |
varchar |
200 |
监管者账号 |
||
kaishishijian |
date |
开始时间 |
表4-12:爱心商城
字段名称 |
类型 |
长度 |
字段说明 |
主键 |
默认值 |
id |
bigint |
主键 |
主键 |
||
addtime |
timestamp |
创建时间 |
CURRENT_TIMESTAMP |
||
shangpinbianhao |
varchar |
200 |
服务编号 |
||
shangpinmingcheng |
varchar |
200 |
服务名称 |
||
shangpintupian |
varchar |
200 |
服务图片 |
||
aixinshu |
int |
爱心数 |
|||
pinpai |
varchar |
200 |
品牌 |
||
shangpinjieshao |
longtext |
4294967295 |
服务介绍 |
||
shangpinfenlei |
varchar |
200 |
服务分类 |
表4-13:任务进度
字段名称 |
类型 |
长度 |
字段说明 |
主键 |
默认值 |
id |
bigint |
主键 |
主键 |
||
addtime |
timestamp |
创建时间 |
CURRENT_TIMESTAMP |
||
baomingbianhao |
varchar |
200 |
报名编号 |
||
xiangmumingcheng |
varchar |
200 |
项目名称 |
||
renwufenlei |
varchar |
200 |
任务分类 |
||
aixinshu |
varchar |
200 |
爱心数 |
||
shouyirenzhanghao |
varchar |
200 |
受益人账号 |
||
shouyirenxingming |
varchar |
200 |
受益人姓名 |
||
shouyirenshouji |
varchar |
200 |
受益人手机 |
||
jianguanzhezhanghao |
varchar |
200 |
监管者账号 |
||
zhiyuanzhezhanghao |
varchar |
200 |
志愿者账号 |
||
zhiyuanzhexingming |
varchar |
200 |
志愿者姓名 |
||
zhiyuanzheshouji |
varchar |
200 |
志愿者手机 |
||
kaishishijian |
varchar |
200 |
开始时间 |
||
jieshushijian |
datetime |
结束时间 |
|||
renwujindu |
varchar |
200 |
任务进度 |
表4-14:项目报名
字段名称 |
类型 |
长度 |
字段说明 |
主键 |
默认值 |
id |
bigint |
主键 |
主键 |
||
addtime |
timestamp |
创建时间 |
CURRENT_TIMESTAMP |
||
baomingbianhao |
varchar |
200 |
报名编号 |
||
xiangmumingcheng |
varchar |
200 |
项目名称 |
||
renwufenlei |
varchar |
200 |
任务分类 |
||
aixinshu |
varchar |
200 |
爱心数 |
||
fuwudidian |
varchar |
200 |
服务地点 |
||
kaishishijian |
varchar |
200 |
开始时间 |
||
shouyirenzhanghao |
varchar |
200 |
受益人账号 |
||
shouyirenxingming |
varchar |
200 |
受益人姓名 |
||
shouyirenshouji |
varchar |
200 |
受益人手机 |
||
jianguanzhezhanghao |
varchar |
200 |
监管者账号 |
||
zhiyuanzhezhanghao |
varchar |
200 |
志愿者账号 |
||
zhiyuanzhexingming |
varchar |
200 |
志愿者姓名 |
||
zhiyuanzheshouji |
varchar |
200 |
志愿者手机 |
||
sfsh |
varchar |
200 |
是否审核 |
否 |
|
shhf |
longtext |
4294967295 |
审核回复 |
表4-15:任务分类
字段名称 |
类型 |
长度 |
字段说明 |
主键 |
默认值 |
id |
bigint |
主键 |
主键 |
||
addtime |
timestamp |
创建时间 |
CURRENT_TIMESTAMP |
||
renwufenlei |
varchar |
200 |
任务分类 |
表4-16:用户表
字段名称 |
类型 |
长度 |
字段说明 |
主键 |
默认值 |
id |
bigint |
主键 |
主键 |
||
username |
varchar |
100 |
用户名 |
||
password |
varchar |
100 |
密码 |
||
role |
varchar |
100 |
角色 |
管理员 |
|
addtime |
timestamp |
新增时间 |
CURRENT_TIMESTAMP |
表4-17:志愿者资讯
字段名称 |
类型 |
长度 |
字段说明 |
主键 |
默认值 |
id |
bigint |
主键 |
主键 |
||
addtime |
timestamp |
创建时间 |
CURRENT_TIMESTAMP |
||
title |
varchar |
200 |
标题 |
||
introduction |
longtext |
4294967295 |
简介 |
||
picture |
varchar |
200 |
图片 |
||
content |
longtext |
4294967295 |
内容 |
表4-18:联系我们
字段名称 |
类型 |
长度 |
字段说明 |
主键 |
默认值 |
id |
bigint |
主键 |
主键 |
||
addtime |
timestamp |
创建时间 |
CURRENT_TIMESTAMP |
||
biaoti |
varchar |
200 |
标题 |
||
neirong |
longtext |
4294967295 |
内容 |
||
tupian |
varchar |
200 |
图片 |
||
lianxifangshi |
varchar |
200 |
联系方式 |
||
youxiang |
varchar |
200 |
邮箱 |
五、关键代码:
/** * 上传文件映射表 */@RestController@RequestMapping("file")@SuppressWarnings({"unchecked","rawtypes"})public class FileController{ @Autowired private ConfigService configService; /** * 上传文件 */ @RequestMapping("/upload") @IgnoreAuth public R upload(@RequestParam("file") MultipartFile file,String type) throws Exception { if (file.isEmpty()) { throw new EIException("上传文件不能为空"); } String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1); File path = new File(ResourceUtils.getURL("classpath:static").getPath()); if(!path.exists()) { path = new File(""); } File upload = new File(path.getAbsolutePath(),"/upload/"); if(!upload.exists()) { upload.mkdirs(); } String fileName = new Date().getTime()+"."+fileExt; if(StringUtils.isNotBlank(type) && type.contains("_template")) { fileName = type + "."+fileExt; new File(upload.getAbsolutePath()+"/"+fileName).deleteOnExit(); } File dest = new File(upload.getAbsolutePath()+"/"+fileName); file.transferTo(dest); /** * 如果使用idea或者eclipse重启项目,发现之前上传的图片或者文件丢失,将下面一行代码注释打开 * 请将以下的"D:\\springbootq33sd\\src\\main\\resources\\static\\upload"替换成你本地项目的upload路径, * 并且项目路径不能存在中文、空格等特殊字符 */// FileUtils.copyFile(dest, new File("D:\\springbootq33sd\\src\\main\\resources\\static\\upload"+"/"+fileName)); /**修改了路径以后请将该行最前面的//注释去掉**/ if(StringUtils.isNotBlank(type) && type.equals("1")) { ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile")); if(configEntity==null) { configEntity = new ConfigEntity(); configEntity.setName("faceFile"); configEntity.setValue(fileName); } else { configEntity.setValue(fileName); } configService.insertOrUpdate(configEntity); } return R.ok().put("file", fileName); } /** * 下载文件 */ @IgnoreAuth @RequestMapping("/download") public ResponseEntity<byte[]> download(@RequestParam String fileName) { try { File path = new File(ResourceUtils.getURL("classpath:static").getPath()); if(!path.exists()) { path = new File(""); } File upload = new File(path.getAbsolutePath(),"/upload/"); if(!upload.exists()) { upload.mkdirs(); } File file = new File(upload.getAbsolutePath()+"/"+fileName); if(file.exists()){ /*if(!fileService.canRead(file, SessionManager.getSessionUser())){ getResponse().sendError(403); }*/ HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); headers.setContentDispositionFormData("attachment", fileName); return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED); } } catch (IOException e) { e.printStackTrace(); } return new ResponseEntity<byte[]>(HttpStatus.INTERNAL_SERVER_ERROR); } }
六、论文参考:
七、其他案例:
基于微信小程序+Springboot线上租房平台设计和实现-三端
2022-2024年最全的计算机软件毕业设计选题大全
基于Java+SpringBoot+Vue前后端分离手机销售商城系统设计和实现
基于Java+SpringBoot+Vue前后端分离仓库管理系统设计实现
基于SpringBoot+uniapp微信小程序校园点餐平台详细设计和实现
基于Java+SpringBoot+Vue+echarts健身房管理系统设计和实现
基于JavaSpringBoot+Vue+uniapp微信小程序实现鲜花商城购物系统
基于Java+SpringBoot+Vue前后端分离摄影分享网站平台系统
基于Java+SpringBoot+Vue前后端分离餐厅点餐管理系统设计和实现
基于Python热门旅游景点数据分析系统设计与实现
八、推荐项目:
九、源码获取:
大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻
精彩专栏推荐订阅:在下方专栏👇🏻
2022-2024年最全的计算机软件毕业设计选题大全:1000个热门选题推荐✅
Java项目精品实战案例《100套》
Java微信小程序项目实战《100套》
版权声明:本文为博主作者:java李杨勇原创文章,版权归属原作者,如果侵权,请联系我们删除!
原文链接:https://blog.csdn.net/weixin_39709134/article/details/135282274