• 基于Java+SpringBoot+Vue宠物领养系统的设计与实现 前后端分离【Java毕业设计·文档报告·代码讲解·安装调试】


    🍊作者:计算机编程-吉哥
    🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。
    🍊心愿:点赞 👍 收藏 ⭐评论 📝
    🍅 文末获取源码联系

    👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~
    Java毕业设计项目~热门选题推荐《1000套》

    技术选型

    springboot、mybatisplus、vue、elementui、html、css、js、mysql、jdk1.8

    数据库表结构

    14张 

    开发工具

    idea、navicat

    ⭐功能

    【角色】

    管理员、用户

    【前台功能模块】

    • 登录注册
    • 首页
    • 宠物领养
    • 宠物认领
    • 感谢信
    • 教学视频
    • 公告
    • 个人中心
    • 后台管理

    【后台功能模块】

    • 登录
    • 首页
    • 个人中心
    • 管理员管理
    • 用户管理
    • 宠物领养管理
    • 宠物认领管理
    • 教学视频管理
    • 感谢信管理
    • 基础数据管理
    • 公告管理
    • 轮播图管理

    🏆项目演示截图

    1、宠物领养管理

     2、宠物领养审核管理

     3、宠物认领管理

     4、宠物认领审核管理

     5、教学视频管理

     6、宠物领养

     7、宠物认领

     8、教学视频

     9、感谢信管理

     

    数据库文件设计  

    1. CREATE TABLE `chongwulingyang` (
    2. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
    3. `chongwulingyang_name` varchar(200) DEFAULT NULL COMMENT '标题 Search111',
    4. `chongwulingyang_types` int(11) DEFAULT NULL COMMENT '类型 Search111',
    5. `chongwulingyang_photo` varchar(200) DEFAULT NULL COMMENT '宠物图片',
    6. `jieshu_types` int(11) DEFAULT NULL COMMENT '是否被认领',
    7. `chongwulingyang_content` text COMMENT '宠物详情',
    8. `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show1 show2 photoShow',
    9. PRIMARY KEY (`id`)
    10. ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='宠物领养';
    11. CREATE TABLE `chongwulingyangshenhe` (
    12. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
    13. `chongwulingyang_id` int(11) DEFAULT NULL COMMENT '宠物领养',
    14. `yonghu_id` int(11) DEFAULT NULL COMMENT '领养用户',
    15. `chongwurenlingshenhe_text` text COMMENT '认领凭据',
    16. `chongwulingyangshenhe_yesno_types` int(11) DEFAULT NULL COMMENT '申请状态',
    17. `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show3 photoShow',
    18. PRIMARY KEY (`id`)
    19. ) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 COMMENT='宠物领养审核';
    20. DROP TABLE IF EXISTS `chongwurenling`;
    21. CREATE TABLE `chongwurenling` (
    22. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
    23. `chongwurenling_name` varchar(200) DEFAULT NULL COMMENT '标题 Search111',
    24. `chongwulingyang_types` int(11) DEFAULT NULL COMMENT '类型 Search111',
    25. `chongwurenling_photo` varchar(200) DEFAULT NULL COMMENT '宠物图片',
    26. `yonghu_id` int(11) DEFAULT NULL COMMENT '发布用户',
    27. `jieshu_types` int(11) DEFAULT NULL COMMENT '是否找到主人',
    28. `chongwurenling_content` text COMMENT '宠物详情',
    29. `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show1 show2 photoShow',
    30. PRIMARY KEY (`id`)
    31. ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='宠物认领';
    32. CREATE TABLE `chongwurenlingshenhe` (
    33. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
    34. `chongwurenling_id` int(11) DEFAULT NULL COMMENT '宠物认领',
    35. `yonghu_id` int(11) DEFAULT NULL COMMENT '认领用户',
    36. `chongwurenlingshenhe_text` text COMMENT '认领凭据',
    37. `chongwurenlingshenhe_yesno_types` int(11) DEFAULT NULL COMMENT '申请状态',
    38. `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show3 photoShow',
    39. PRIMARY KEY (`id`)
    40. ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='宠物认领审核';
    41. CREATE TABLE `config` (
    42. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
    43. `name` varchar(100) NOT NULL COMMENT '配置参数名称',
    44. `value` varchar(100) DEFAULT NULL COMMENT '配置参数值',
    45. PRIMARY KEY (`id`)
    46. ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COMMENT='配置文件';
    47. CREATE TABLE `dictionary` (
    48. `id` int(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
    49. `dic_code` varchar(200) DEFAULT NULL COMMENT '字段',
    50. `dic_name` varchar(200) DEFAULT NULL COMMENT '字段名',
    51. `code_index` int(11) DEFAULT NULL COMMENT '编码',
    52. `index_name` varchar(200) DEFAULT NULL COMMENT '编码名字 Search111 ',
    53. `super_id` int(11) DEFAULT NULL COMMENT '父字段id',
    54. `beizhu` varchar(200) DEFAULT NULL COMMENT '备注',
    55. `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
    56. PRIMARY KEY (`id`)
    57. ) ENGINE=InnoDB AUTO_INCREMENT=86 DEFAULT CHARSET=utf8 COMMENT='字典表';
    58. CREATE TABLE `ganxiexin` (
    59. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
    60. `ganxiexin_name` varchar(200) DEFAULT NULL COMMENT '标题 Search111 ',
    61. `yonghu_id` int(11) DEFAULT NULL COMMENT '发布用户',
    62. `ganxiexin_content` text COMMENT '内容',
    63. `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show2 nameShow',
    64. PRIMARY KEY (`id`)
    65. ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='感谢信';
    66. CREATE TABLE `jiaoxueshipin_collection` (
    67. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
    68. `jiaoxueshipin_id` int(11) DEFAULT NULL COMMENT '视频',
    69. `yonghu_id` int(11) DEFAULT NULL COMMENT '用户',
    70. `jiaoxueshipin_collection_types` int(11) DEFAULT NULL COMMENT '类型',
    71. `insert_time` timestamp NULL DEFAULT NULL COMMENT '收藏时间',
    72. `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show3 photoShow',
    73. PRIMARY KEY (`id`)
    74. ) ENGINE=InnoDB AUTO_INCREMENT=127 DEFAULT CHARSET=utf8 COMMENT='视频收藏';
    75. CREATE TABLE `jiaoxueshipin_liuyan` (
    76. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
    77. `jiaoxueshipin_id` int(11) DEFAULT NULL COMMENT '视频',
    78. `yonghu_id` int(11) DEFAULT NULL COMMENT '用户',
    79. `jiaoxueshipin_liuyan_text` text COMMENT '留言内容',
    80. `reply_text` text COMMENT '回复内容',
    81. `insert_time` timestamp NULL DEFAULT NULL COMMENT '留言时间',
    82. `update_time` timestamp NULL DEFAULT NULL COMMENT '回复时间',
    83. `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
    84. PRIMARY KEY (`id`)
    85. ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='视频留言';
    86. CREATE TABLE `news` (
    87. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
    88. `news_name` varchar(200) DEFAULT NULL COMMENT '公告名称 Search111 ',
    89. `news_types` int(11) DEFAULT NULL COMMENT '公告类型 Search111 ',
    90. `news_photo` varchar(200) DEFAULT NULL COMMENT '公告图片',
    91. `insert_time` timestamp NULL DEFAULT NULL COMMENT '公告时间',
    92. `news_content` text COMMENT '公告详情',
    93. `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show2 show1 nameShow',
    94. PRIMARY KEY (`id`)
    95. ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='公告';
    96. CREATE TABLE `token` (
    97. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
    98. `userid` bigint(20) NOT NULL COMMENT '用户id',
    99. `username` varchar(100) NOT NULL COMMENT '用户名',
    100. `tablename` varchar(100) DEFAULT NULL COMMENT '表名',
    101. `role` varchar(100) DEFAULT NULL COMMENT '角色',
    102. `token` varchar(200) NOT NULL COMMENT '密码',
    103. `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '新增时间',
    104. `expiratedtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '过期时间',
    105. PRIMARY KEY (`id`)
    106. ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='token表';
    107. CREATE TABLE `users` (
    108. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
    109. `username` varchar(100) NOT NULL COMMENT '用户名',
    110. `password` varchar(100) NOT NULL COMMENT '密码',
    111. `role` varchar(100) DEFAULT '管理员' COMMENT '角色',
    112. `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '新增时间',
    113. PRIMARY KEY (`id`)
    114. ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='用户表';
    115. CREATE TABLE `yonghu` (
    116. `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
    117. `username` varchar(200) DEFAULT NULL COMMENT '账户',
    118. `password` varchar(200) DEFAULT NULL COMMENT '密码',
    119. `yonghu_name` varchar(200) DEFAULT NULL COMMENT '用户姓名 Search111',
    120. `sex_types` int(11) DEFAULT NULL COMMENT '性别 Search111',
    121. `yonghu_id_number` varchar(200) DEFAULT NULL COMMENT '身份证号',
    122. `yonghu_phone` varchar(200) DEFAULT NULL COMMENT '手机号',
    123. `yonghu_address` varchar(200) DEFAULT NULL COMMENT '个人地址',
    124. `yonghu_photo` varchar(200) DEFAULT NULL COMMENT '照片',
    125. `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 ',
    126. PRIMARY KEY (`id`)
    127. ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='用户';

    核心代码   

    1. package com.controller;
    2. import java.io.File;
    3. import java.math.BigDecimal;
    4. import java.net.URL;
    5. import java.text.SimpleDateFormat;
    6. import com.alibaba.fastjson.JSONObject;
    7. import java.util.*;
    8. import org.springframework.beans.BeanUtils;
    9. import javax.servlet.http.HttpServletRequest;
    10. import org.springframework.web.context.ContextLoader;
    11. import javax.servlet.ServletContext;
    12. import com.service.TokenService;
    13. import com.utils.*;
    14. import java.lang.reflect.InvocationTargetException;
    15. import com.service.DictionaryService;
    16. import org.apache.commons.lang3.StringUtils;
    17. import com.annotation.IgnoreAuth;
    18. import org.slf4j.Logger;
    19. import org.slf4j.LoggerFactory;
    20. import org.springframework.beans.factory.annotation.Autowired;
    21. import org.springframework.stereotype.Controller;
    22. import org.springframework.web.bind.annotation.*;
    23. import com.baomidou.mybatisplus.mapper.EntityWrapper;
    24. import com.baomidou.mybatisplus.mapper.Wrapper;
    25. import com.entity.*;
    26. import com.entity.view.*;
    27. import com.service.*;
    28. import com.utils.PageUtils;
    29. import com.utils.R;
    30. import com.alibaba.fastjson.*;
    31. /**
    32. * 宠物领养
    33. * 后端接口
    34. * @author 计算机编程-吉哥
    35. */
    36. @RestController
    37. @Controller
    38. @RequestMapping("/chongwulingyang")
    39. public class ChongwulingyangController {
    40. private static final Logger logger = LoggerFactory.getLogger(ChongwulingyangController.class);
    41. @Autowired
    42. private ChongwulingyangService chongwulingyangService;
    43. @Autowired
    44. private TokenService tokenService;
    45. @Autowired
    46. private DictionaryService dictionaryService;
    47. //级联表service
    48. @Autowired
    49. private YonghuService yonghuService;
    50. /**
    51. * 后端列表
    52. */
    53. @RequestMapping("/page")
    54. public R page(@RequestParam Map params, HttpServletRequest request){
    55. logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
    56. String role = String.valueOf(request.getSession().getAttribute("role"));
    57. if(StringUtil.isEmpty(role))
    58. return R.error(511,"权限为空");
    59. else if("用户".equals(role))
    60. params.put("yonghuId",request.getSession().getAttribute("userId"));
    61. if(params.get("orderBy")==null || params.get("orderBy")==""){
    62. params.put("orderBy","id");
    63. }
    64. PageUtils page = chongwulingyangService.queryPage(params);
    65. //字典表数据转换
    66. List list =(List)page.getList();
    67. for(ChongwulingyangView c:list){
    68. //修改对应字典表字段
    69. dictionaryService.dictionaryConvert(c, request);
    70. }
    71. return R.ok().put("data", page);
    72. }
    73. /**
    74. * 后端详情
    75. */
    76. @RequestMapping("/info/{id}")
    77. public R info(@PathVariable("id") Long id, HttpServletRequest request){
    78. logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
    79. ChongwulingyangEntity chongwulingyang = chongwulingyangService.selectById(id);
    80. if(chongwulingyang !=null){
    81. //entity转view
    82. ChongwulingyangView view = new ChongwulingyangView();
    83. BeanUtils.copyProperties( chongwulingyang , view );//把实体数据重构到view中
    84. //修改对应字典表字段
    85. dictionaryService.dictionaryConvert(view, request);
    86. return R.ok().put("data", view);
    87. }else {
    88. return R.error(511,"查不到数据");
    89. }
    90. }
    91. /**
    92. * 后端保存
    93. */
    94. @RequestMapping("/save")
    95. public R save(@RequestBody ChongwulingyangEntity chongwulingyang, HttpServletRequest request){
    96. logger.debug("save方法:,,Controller:{},,chongwulingyang:{}",this.getClass().getName(),chongwulingyang.toString());
    97. String role = String.valueOf(request.getSession().getAttribute("role"));
    98. if(StringUtil.isEmpty(role))
    99. return R.error(511,"权限为空");
    100. Wrapper queryWrapper = new EntityWrapper()
    101. .eq("chongwulingyang_name", chongwulingyang.getChongwulingyangName())
    102. .eq("chongwulingyang_types", chongwulingyang.getChongwulingyangTypes())
    103. .eq("jieshu_types", chongwulingyang.getJieshuTypes())
    104. ;
    105. logger.info("sql语句:"+queryWrapper.getSqlSegment());
    106. ChongwulingyangEntity chongwulingyangEntity = chongwulingyangService.selectOne(queryWrapper);
    107. if(chongwulingyangEntity==null){
    108. chongwulingyang.setCreateTime(new Date());
    109. chongwulingyangService.insert(chongwulingyang);
    110. return R.ok();
    111. }else {
    112. return R.error(511,"表中有相同数据");
    113. }
    114. }
    115. /**
    116. * 后端修改
    117. */
    118. @RequestMapping("/update")
    119. public R update(@RequestBody ChongwulingyangEntity chongwulingyang, HttpServletRequest request){
    120. logger.debug("update方法:,,Controller:{},,chongwulingyang:{}",this.getClass().getName(),chongwulingyang.toString());
    121. String role = String.valueOf(request.getSession().getAttribute("role"));
    122. if(StringUtil.isEmpty(role))
    123. return R.error(511,"权限为空");
    124. //根据字段查询是否有相同数据
    125. Wrapper queryWrapper = new EntityWrapper()
    126. .notIn("id",chongwulingyang.getId())
    127. .andNew()
    128. .eq("chongwulingyang_name", chongwulingyang.getChongwulingyangName())
    129. .eq("chongwulingyang_types", chongwulingyang.getChongwulingyangTypes())
    130. .eq("jieshu_types", chongwulingyang.getJieshuTypes())
    131. ;
    132. logger.info("sql语句:"+queryWrapper.getSqlSegment());
    133. ChongwulingyangEntity chongwulingyangEntity = chongwulingyangService.selectOne(queryWrapper);
    134. if("".equals(chongwulingyang.getChongwulingyangPhoto()) || "null".equals(chongwulingyang.getChongwulingyangPhoto())){
    135. chongwulingyang.setChongwulingyangPhoto(null);
    136. }
    137. if(chongwulingyangEntity==null){
    138. // String role = String.valueOf(request.getSession().getAttribute("role"));
    139. // if("".equals(role)){
    140. // chongwulingyang.set
    141. // }
    142. chongwulingyangService.updateById(chongwulingyang);//根据id更新
    143. return R.ok();
    144. }else {
    145. return R.error(511,"表中有相同数据");
    146. }
    147. }
    148. /**
    149. * 删除
    150. */
    151. @RequestMapping("/delete")
    152. public R delete(@RequestBody Integer[] ids){
    153. logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
    154. chongwulingyangService.deleteBatchIds(Arrays.asList(ids));
    155. return R.ok();
    156. }
    157. /**
    158. * 批量上传
    159. */
    160. @RequestMapping("/batchInsert")
    161. public R save( String fileName){
    162. logger.debug("batchInsert方法:,,Controller:{},,fileName:{}",this.getClass().getName(),fileName);
    163. try {
    164. List chongwulingyangList = new ArrayList<>();//上传的东西
    165. Map> seachFields= new HashMap<>();//要查询的字段
    166. Date date = new Date();
    167. int lastIndexOf = fileName.lastIndexOf(".");
    168. if(lastIndexOf == -1){
    169. return R.error(511,"该文件没有后缀");
    170. }else{
    171. String suffix = fileName.substring(lastIndexOf);
    172. if(!".xls".equals(suffix)){
    173. return R.error(511,"只支持后缀为xls的excel文件");
    174. }else{
    175. URL resource = this.getClass().getClassLoader().getResource("static/upload/" + fileName);//获取文件路径
    176. File file = new File(resource.getFile());
    177. if(!file.exists()){
    178. return R.error(511,"找不到上传文件,请联系管理员");
    179. }else{
    180. List> dataList = PoiUtil.poiImport(file.getPath());//读取xls文件
    181. dataList.remove(0);//删除第一行,因为第一行是提示
    182. for(List data:dataList){
    183. //循环
    184. ChongwulingyangEntity chongwulingyangEntity = new ChongwulingyangEntity();
    185. // chongwulingyangEntity.setChongwulingyangName(data.get(0)); //标题 要改的
    186. // chongwulingyangEntity.setChongwulingyangTypes(Integer.valueOf(data.get(0))); //类型 要改的
    187. // chongwulingyangEntity.setChongwulingyangPhoto("");//照片
    188. // chongwulingyangEntity.setJieshuTypes(Integer.valueOf(data.get(0))); //是否被认领 要改的
    189. // chongwulingyangEntity.setChongwulingyangContent("");//照片
    190. // chongwulingyangEntity.setCreateTime(date);//时间
    191. chongwulingyangList.add(chongwulingyangEntity);
    192. //把要查询是否重复的字段放入map中
    193. }
    194. //查询是否重复
    195. chongwulingyangService.insertBatch(chongwulingyangList);
    196. return R.ok();
    197. }
    198. }
    199. }
    200. }catch (Exception e){
    201. return R.error(511,"批量插入数据异常,请联系管理员");
    202. }
    203. }
    204. /**
    205. * 前端列表
    206. */
    207. @IgnoreAuth
    208. @RequestMapping("/list")
    209. public R list(@RequestParam Map params, HttpServletRequest request){
    210. logger.debug("list方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
    211. // 没有指定排序字段就默认id倒序
    212. if(StringUtil.isEmpty(String.valueOf(params.get("orderBy")))){
    213. params.put("orderBy","id");
    214. }
    215. PageUtils page = chongwulingyangService.queryPage(params);
    216. //字典表数据转换
    217. List list =(List)page.getList();
    218. for(ChongwulingyangView c:list)
    219. dictionaryService.dictionaryConvert(c, request); //修改对应字典表字段
    220. return R.ok().put("data", page);
    221. }
    222. /**
    223. * 前端详情
    224. */
    225. @RequestMapping("/detail/{id}")
    226. public R detail(@PathVariable("id") Long id, HttpServletRequest request){
    227. logger.debug("detail方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
    228. ChongwulingyangEntity chongwulingyang = chongwulingyangService.selectById(id);
    229. if(chongwulingyang !=null){
    230. //entity转view
    231. ChongwulingyangView view = new ChongwulingyangView();
    232. BeanUtils.copyProperties( chongwulingyang , view );//把实体数据重构到view中
    233. //修改对应字典表字段
    234. dictionaryService.dictionaryConvert(view, request);
    235. return R.ok().put("data", view);
    236. }else {
    237. return R.error(511,"查不到数据");
    238. }
    239. }
    240. /**
    241. * 前端保存
    242. */
    243. @RequestMapping("/add")
    244. public R add(@RequestBody ChongwulingyangEntity chongwulingyang, HttpServletRequest request){
    245. logger.debug("add方法:,,Controller:{},,chongwulingyang:{}",this.getClass().getName(),chongwulingyang.toString());
    246. Wrapper queryWrapper = new EntityWrapper()
    247. .eq("chongwulingyang_name", chongwulingyang.getChongwulingyangName())
    248. .eq("chongwulingyang_types", chongwulingyang.getChongwulingyangTypes())
    249. .eq("jieshu_types", chongwulingyang.getJieshuTypes())
    250. ;
    251. logger.info("sql语句:"+queryWrapper.getSqlSegment());
    252. ChongwulingyangEntity chongwulingyangEntity = chongwulingyangService.selectOne(queryWrapper);
    253. if(chongwulingyangEntity==null){
    254. chongwulingyang.setCreateTime(new Date());
    255. chongwulingyangService.insert(chongwulingyang);
    256. return R.ok();
    257. }else {
    258. return R.error(511,"表中有相同数据");
    259. }
    260. }
    261. }

    参考文档

     

    更多项目推荐:计算机毕业设计项目

    如果大家有任何疑虑,请在下方咨询或评论

  • 相关阅读:
    国庆当天打卡北京拍飞机网红地:西湖园
    go语言基础--杂谈
    Spring Data JPA 原理与实战第五天 Jackon相关使用
    C++初阶(十)模板初阶
    23.11.19日总结(vue2和vue3的区别,项目中期总结)
    SPL比SQL更难了还是更容易了?
    思想茶叶蛋 (Aug 20,2022)| 网传B站hr说用户是loser、互联网之父的救赎和Web3.0
    【UML分析、建模与设计】我在工作时遇到UML
    Allegro如何对器件进行等距对齐操作
    Harris/Shi-Tomasi角点检测
  • 原文地址:https://blog.csdn.net/weixin_51966461/article/details/133715710