(附源码)springboot闲置衣物捐赠系统 毕业设计 021009
闲置衣物捐赠系统
摘 要
科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。现代社会越来越多的人追求便捷购物,购买各种各类的商品已经是人们生活中不可或缺的一部分,但传统的商品销售模式已经不能满足人们的需要,因此借用信息化的手段发展商品销售具有十分重要的现实意义。该软件的问题类型是闲置衣物捐赠系统的开发和设计。
闲置衣物捐赠系统采用Java编程语言和Springboot框架,采用MySQL数据库来建立数据之间的转换,主要实现了首页、用户管理(管理者、捐赠者、受赠者)更多管理(捐赠信息、积分信息、农副产品、兑换记录、公告信息)等功能,为捐赠者和受赠者建立了一套科学有效的管理流程,减少了传统商品销售出现的失误,同时也方便了人们进行购物。本系统界面简洁,使用人员可以迅速掌握,有效的提高了工作效率。
关键词:springboot框架;闲置物品交易;MySQL数据库;
Springboot idle clothing donation system
Abstract
The rapid development of scientific and technological progress has caused great changes in people's daily life. The rapid development of electronic information technology has popularized and applied the application level of electronic information technology in various fields. The advent of the information age has become an irresistible fashion trend, and the history of human development is entering a new era. In modern society, more and more people pursue convenient shopping. Buying all kinds of goods has become an indispensable part of people's life, but the traditional commodity sales model can no longer meet people's needs. Therefore, it is of great practical significance to develop commodity sales by means of informatization. The problem type of the software is the development and design of idle clothing donation system.
The idle clothing donation system adopts Java programming language and springboot framework, and uses MySQL database to establish the conversion between data. It mainly realizes the functions of home page, user management (manager, donor and recipient) and more management (donation information, points information, agricultural and sideline products, exchange records and announcement information), and establishes a set of scientific and effective management process for donors and recipients, It not only reduces the mistakes of traditional commodity sales, but also facilitates people's shopping. The system interface is simple, users can quickly grasp, and effectively improve the work efficiency.
Keywords: springboot framework; Idle goods trading; Mysql database;
目录
第1章 绪论 1
1.1 研究背景与意义 1
1.2 开发现状 1
1.3 论文组成结构 2
第2章 开发工具及相关技术介绍 3
2.1 开发技术 3
2.2 MVVM模式 3
2.3 MySQL数据库 3
2.4 B/S结构 4
2.5 Springboot框架介绍 4
2.6 Vue.js 主要功能 5
第3章 系统分析 6
3.1 可行性分析 6
3.1.1 经济可行性 6
3.1.2 技术可行性 6
3.1.3 操作可行性 6
3.2 功能性需求分析 6
3.3 非功能性需求分析 8
第4章 系统设计 10
4.1 系统架构设计 10
4.2 功能模块设计 11
4.3 数据库设计 12
4.3.1 概念模型设计 12
4.3.2 数据库表设计 13
第5章 系统实现 18
5.1 用户登录的实现 18
5.2 系统前台主要功能实现 20
5.2.1 首页的实现 20
5.2.2 用户注册的实现 21
5.2.3 捐赠信息的实现 21
5.2.4 积分信息的实现 22
5.2.5 农副产品的实现 23
5.3 系统后台主要功能实现 24
5.3.1 用户管理的实现 24
第6章 系统测试 27
6.1 软件测试的概念 27
6.2 软件测试过程 27
6.3 系统测试阶段 28
6.4 测试结果 28
第7章 总结与展望 29
参考文献 30
致谢 32
根据市场调研得到的信息数据,结合国内外前沿研究,利用相关系统开发和设计方法,最终设计出闲置衣物捐赠系统。
第一章概述了闲置衣物捐赠系统的研究目的和意义;精炼地总结了国内外在内的领域研究情况和未来的研究趋势,最后给出了论文的组成结构。
第五章对闲置衣物捐赠系统进行实现,并贴出相关页面截图,语言描述出具体功能实现的操作方法。
- MVVM模式
MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。当然这些事 ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。微软的WPF带来了新的技术体验,如Silverlight、音频、视频、3D、动画……,这导致了软件UI层更加细节化、可定制化。同时,在技术层面,WPF也带来了 诸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTemplate等新特性。MVVM(Model-View-ViewModel)框架的由来便是MVP(Model-View-Presenter)模式与WPF结合的应用方式时发展演变过来的一种新型架构框架。它立足于原有MVP框架并且把WPF的新特性糅合进去,以应对客户日益复杂的需求变化。
- MySQL数据库
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),关系数据库将数据保存在不同的表中,提高了灵活性,它使用最常用的结构化查询语言(SQL)进行数据库管理。MySQL因其具有速度快、体积小、总体拥有成本低和开放源码的优点而备受关注[7]。特点:
(1)支持多种操作系统。
(2)为多种编程语言提供了API。
(3)支持多线程,充分利用CPU资源。
(4)MySQL性能卓越、服务稳定,很少出现异常宕机。
(5)原生JSON支持。
(6)优化SQL查询算法,有效地提高查询速度[8]。
B/S(Browser/Server)比前身架构更为省事的架构。它借助Web server完成数据的传递交流。只需要下载浏览器作为客户端,那么工作就达到“瘦身”效果, 不需要考虑不停装软件的问题。
- Vue.js 主要功能
Vue.js是一套构建用户界面的渐进式框架。与其他重量级框架不同的是,Vue采用自底向上增量开发的设计。Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合。另一方面,Vue 完全有能力驱动采用单文件组件和Vue生态系统支持的库开发的复杂单页应用。
Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。
Vue.js 自身不是一个全能框架——它只聚焦于视图层。因此它非常容易学习,非常容易与其它库或已有项目整合。另一方面,在与相关工具和支持库一起使用时,Vue.js 也能驱动复杂的单页应用。
- 系统分析
客户可以首次查看详细的介绍,闲置衣物捐赠系统中各种衣物的实物图,获得积分和其他基本信息。
网站管理员在系统软件中扮演着非常关键的角色,管理者可以执行捐赠信息、积分信息、农副产品、兑换记录、公告信息等要求。此外,系统软件还应确保信息内容清晰有序,管理员能够轻松的找到需要的管理类别。
客户会在系统使用过程中不断对系统提出新要求,扩展系统功能,这就要求系统软件必须具有出色的可伸缩性,以考虑到客户的长期和易于使用的法规,客户会在系统使用过程中不断对系统提出新要求,扩展系统功能。
本系统主要使用了五层架构进行开发,主要分为“表现层”、“控制层”、“服务层”、“业务逻辑层”、“数据访问层”。
“表现层”主要作为与用户交互的接口,提供给用户良好的可体验性,本系统在前后端交互主要使用的是Ajax技术来实现数据传输,不仅可以达到无刷新交互,同时还拥有较稳定的运行状态。
“控制层”主要控制前端界面和后端程序数据之间的同步,然后根据前端请求完成数据更新或者是界面控制。以及负责将“服务层”提供的服务进行最后组装并调用。
“服务层”介于“控制层”和“业务逻辑层”之间,主要是将“业务逻辑层”的数据服务进行再一次组装,之后在作为接口提供给“控制层”使用。
“业务逻辑层”主要是动态的调用“数据访问层”的方法,对复杂的算法进行操作,处理前端传过来的请求并且做出相应的逻辑处理。
“数据访问层”主要负责对数据库的访问,可以访问数据库系统、文本文件、二进制文件、xml文档等等。负责业务对象的增加,修改,删除,加载。
通过软件的需求分析已经获得了系统的基本功能需求。根据各大功能模块的不同,将系统分为各种功能大块。系统功能结构如下图所示。
概念结构设计是在需求分析的基础之上,将需求分析抽象成概念,这样易于开发人员将复杂进行简单化操作,使得开发人员能够专注于处理模式和组织结构等,其中常用的概念模型是E-R模型。
在完成数据库查询定义的总体设计之后,现在可以将上述数据库查询定义结构转换为适用于某种类型的数据库管理的特定数据库系统,即数据库查询的逻辑结构。
闲置衣物捐赠系统数据库查询中各表的设计方案结果如下表所示。每个表格都在数据库查询中指示一个表。
agricultural_by_product |
|||||
字段名称 |
类型 |
长度 |
不是null |
主键 |
字段说明 |
agricultural_by_product_id |
int |
11 |
否 |
主键 |
农副产品ID |
user_information |
int |
11 |
是 |
用户信息 |
|
product_name |
varchar |
64 |
是 |
产品名称 |
|
product_picture |
varchar |
255 |
是 |
产品图片 |
|
redeem_points |
varchar |
64 |
是 |
兑换积分 |
|
product_description |
text |
0 |
是 |
产品描述 |
|
examine_state |
varchar |
16 |
否 |
审核状态 |
|
recommend |
int |
11 |
否 |
智能推荐 |
|
create_time |
datetime |
0 |
否 |
创建时间 |
|
update_time |
timestamp |
0 |
否 |
更新时间 |
|
announcement_information |
|||||
字段名称 |
类型 |
长度 |
不是null |
主键 |
字段说明 |
announcement_information_id |
int |
11 |
否 |
主键 |
公告信息ID |
title_name |
varchar |
64 |
是 |
标题名称 |
|
announcement_content |
text |
0 |
是 |
公告内容 |
|
examine_state |
varchar |
16 |
否 |
审核状态 |
|
recommend |
int |
11 |
否 |
智能推荐 |
|
create_time |
datetime |
0 |
否 |
创建时间 |
|
update_time |
timestamp |
0 |
否 |
更新时间 |
|
donation_information |
|||||
字段名称 |
类型 |
长度 |
不是null |
主键 |
字段说明 |
donation_information_id |
int |
11 |
否 |
主键 |
捐赠信息ID |
donor |
int |
11 |
是 |
捐赠人 |
|
full_name |
varchar |
64 |
是 |
姓名 |
|
donor_telephone |
varchar |
16 |
是 |
捐赠人电话 |
|
donated_items |
varchar |
64 |
是 |
捐赠物品 |
|
number_of_donations |
varchar |
64 |
是 |
捐赠数量 |
|
item_picture |
varchar |
255 |
是 |
物品图片 |
|
get_points |
varchar |
64 |
是 |
获得积分 |
|
donee |
int |
11 |
是 |
受赠人 |
|
donation_remarks |
text |
0 |
是 |
捐赠备注 |
|
examine_state |
varchar |
16 |
否 |
审核状态 |
|
recommend |
int |
11 |
否 |
智能推荐 |
|
create_time |
datetime |
0 |
否 |
创建时间 |
|
update_time |
timestamp |
0 |
否 |
更新时间 |
|
donor |
|||||
字段名称 |
类型 |
长度 |
不是null |
主键 |
字段说明 |
donor_id |
int |
11 |
否 |
主键 |
捐赠者ID |
full_name |
varchar |
64 |
是 |
姓名 |
|
gender |
varchar |
64 |
是 |
性别 |
|
examine_state |
varchar |
16 |
否 |
审核状态 |
|
recommend |
int |
11 |
否 |
智能推荐 |
|
user_id |
int |
11 |
否 |
用户ID |
|
create_time |
datetime |
0 |
否 |
创建时间 |
|
update_time |
timestamp |
0 |
否 |
更新时间 |
|
exchange_record |
|||||
字段名称 |
类型 |
长度 |
不是null |
主键 |
字段说明 |
exchange_record_id |
int |
11 |
否 |
主键 |
兑换记录ID |
product_name |
varchar |
64 |
是 |
产品名称 |
|
convertor |
int |
11 |
是 |
兑换人 |
|
full_name |
varchar |
64 |
是 |
姓名 |
|
contact_number |
varchar |
64 |
是 |
联系电话 |
|
exchange_status |
varchar |
64 |
是 |
兑换状态 |
|
reply_message |
text |
0 |
是 |
回复信息 |
|
examine_state |
varchar |
16 |
否 |
审核状态 |
|
recommend |
int |
11 |
否 |
智能推荐 |
|
create_time |
datetime |
0 |
否 |
创建时间 |
|
update_time |
timestamp |
0 |
否 |
更新时间 |
|
integral_information |
|||||
字段名称 |
类型 |
长度 |
不是null |
主键 |
字段说明 |
integral_information_id |
int |
11 |
否 |
主键 |
积分信息ID |
user_information |
int |
11 |
是 |
用户信息 |
|
full_name |
varchar |
64 |
是 |
姓名 |
|
integral |
varchar |
64 |
是 |
积分 |
|
integral_record |
text |
0 |
是 |
积分记录 |
|
remark_information |
text |
0 |
是 |
备注信息 |
|
examine_state |
varchar |
16 |
否 |
审核状态 |
|
recommend |
int |
11 |
否 |
智能推荐 |
|
create_time |
datetime |
0 |
否 |
创建时间 |
|
update_time |
timestamp |
0 |
否 |
更新时间 |
|
recipient |
|||||
字段名称 |
类型 |
长度 |
不是null |
主键 |
字段说明 |
recipient_id |
int |
11 |
否 |
主键 |
受赠者ID |
full_name |
varchar |
64 |
是 |
姓名 |
|
gender |
varchar |
64 |
是 |
性别 |
|
examine_state |
varchar |
16 |
否 |
审核状态 |
|
recommend |
int |
11 |
否 |
智能推荐 |
|
user_id |
int |
11 |
否 |
用户ID |
|
create_time |
datetime |
0 |
否 |
创建时间 |
|
update_time |
timestamp |
0 |
否 |
更新时间 |
已登录的用户可以查看、修改个人信息以及密码修改等操作。用户信息的查看功能在yonghuzhuce_updt.html页面中实现。用户信息,和密码修改功能在系统窗口中实现的。
/**
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.select(map, new HashMap<>()).getResultList();
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.select(map, new HashMap<>()).getResultList();
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.select(map, new HashMap<>()).getResultList();
}else{
return error(30000, "账号或密码不能为空");
}
if (resultList == null || password == null) {
return error(30000, "账号或密码不能为空");
}
//判断是否有这个用户
if (resultList.size()<=0){
return error(30000,"用户不存在");
}
User byUsername = (User) resultList.get(0);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.select(groupMap, new HashMap<>()).getResultList();
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();
String res = String.valueOf(service.runCountSql(sql).getSingleResult());
if (res==null){
return error(30000,"用户不存在");
}
if (!res.equals("已通过")){
return error(30000,"该用户审核未通过");
}
}
//查询用户状态
if (byUsername.getState()!=1){
return error(30000,"用户非可用状态,不能登录");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存储Token到数据库
AccessToken accessToken = new AccessToken();
accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
accessToken.setUser_id(byUsername.getUserId());
tokenService.save(accessToken);
// 返回用户信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "账号或密码不正确");
}
}
- 系统前台主要功能实现
用户界面要尽量简洁大方,使用户能够方便找到需要的功能入口,浏览、购买商品,且要易于修改和维护,同时还要保证用户合法和系统安全。
捐赠信息页面可添加、捐赠人、姓名、捐赠人电话、捐赠物品、捐赠数量、物品图片、获得积分、等详细内容操作,如下图所示。
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object> del(HttpServletRequest request) {
service.delete(service.readQuery(request), service.readConfig(request));
return success(1);
}
@Transactional
public void delete(Map<String,String> query,Map<String,String> config){
StringBuffer sql = new StringBuffer("DELETE FROM ").append("`").append(table).append("`").append(" ");
sql.append(toWhereSql(query, "0".equals(config.get(FindConfig.GROUP_BY))));
log.info("[{}] - 删除操作:{}",table,sql);
Query query1 = runCountSql(sql.toString());
query1.executeUpdate();
}
- 积分信息的实现
积分信息页面可添加用户信息、姓名、积分、积分记录、备注信息等详情。
积分信息界面如下图所示。
图5-1积分信息界面
农副产品页面可查看、用户信息、产品名称、产品图片、兑换积分、产品描述等详情。
@RequestMapping("/get_obj")
public Map<String, Object> obj(HttpServletRequest request) {
Query select = service.select(service.readQuery(request), service.readConfig(request));
List resultList = select.getResultList();
if (resultList.size() > 0) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("obj",resultList.get(0));
return success(jsonObject);
} else {
return success(null);
}
}
public Query select(Map<String,String> query,Map<String,String> config){
StringBuffer sql = new StringBuffer("select ");
sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");
sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");
}
if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){
sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");
}
if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){
int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;
int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;
sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);
}
log.info("[{}] - 查询操作,sql: {}",table,sql);
return runEntitySql(sql.toString());
}
管理员对系统用户的管理,在yhzhgl.html实现管理员用户的管理,包括录入、删除、修改,修改密码通过SESSION获取用户名,然后输入新密码,提交到mod.html中,使用sql命令更新密码。
/**
* 修改密码
* @param data
* @param request
* @return
*/
@PostMapping("change_password")
public Map<String, Object> change_password(@RequestBody Map<String, String> data, HttpServletRequest request){
// 根据Token获取UserId
String token = request.getHeader("x-auth-token");
Integer userId = tokenGetUserId(token);
// 根据UserId和旧密码获取用户
Map<String, String> query = new HashMap<>();
String o_password = data.get("o_password");
query.put("user_id" ,String.valueOf(userId));
query.put("password" ,service.encryption(o_password));
Query ret = service.count(query, service.readConfig(request));
List list = ret.getResultList();
Object s = list.get(0);
int count = Integer.parseInt(list.get(0).toString());
if(count > 0){
// 修改密码
Map<String,Object> form = new HashMap<>();
form.put("password",service.encryption(data.get("password")));
service.update(query,service.readConfig(request),form);
return success(1);
}
return error(10000,"密码修改失败!");
}
测试性能 |
新用户注册 |
||
用例目的 |
测试系统新用户个人信息注册功能的功能和安全性 |
||
前提条件 |
进入注册页面填写个人信息 |
||
输入条件 |
预期输出 |
实际情况 |
|
各项基本信息输入不完整 |
不允许注册,无法点击注册按钮 |
一致 |
|
填写已存在的用户名 |
系统显示出提示信息,要求重新填写 |
一致 |
|
两次密码输入不一致 |
系统显示出提示信息,要求重新填写 |
一致 |
|
填写的各项信息没有符合提示的长度和字符要求 |
系统显示出提示信息,要求重新填写 |
一致 |
|
胡乱填写电话号码 |
收不到验证码 |
一致 |
|
填写验证码与收到的不一致 |
系统显示提示信息告知用户验证码错误,不予注册 |
一致 |
测试性能 |
用户或操作员登录系统 |
||
用例目的 |
测试用户或操作员登录系统时功能是否正常 |
||
前提条件 |
进入用户登录页面或操作员登录页面 |
||
输入条件 |
预期输出 |
实际情况 |
|
各项信息不予填写,直接点击登陆按钮 |
不允许登录,提示填写账号相关信息 |
一致 |
|
填写错误的登录名或密码后点击登录系统 |
提示用户名或密码错误,要求重新填写进行登录 |
一致 |
|
填写与验证码信息不一致的信息 |
系统显示出提示信息,表明验证码错误,要求重新填写 |
一致 |
- 系统测试阶段
第一个测试阶段:系统软件的操作界面由几个子控制模块组成,每个子控制模块都有其相对的作用。因此,系统软件的检测必须首先进行控制模块的检测。每个控制模块必须执行明确定义的子功能。测试控制模块的目的是确保每个控制模块都可以作为一个模块运行。
第二个测试阶段:集成检测是根据设计方案的软件体系结构,按照某种对策对经过控制模块检测的各个控制模块进行组装,并在整个组成过程中进行必要的检测。
第三个测试阶段:客户将执行闲置衣物捐赠系统的工程验收。系统测试后,所有控制模块均已根据设计计划组装成详细的闲置衣物捐赠系统。错误的插槽已被移除,操作接口必须进一步认证成效。
系统软件可以在运行过程中执行其相关功能,可以完成查询,添加,删除,修改等功能,并且运行显示信息都正常,后端管理数据库查询也可以正常工作,数据信息确保一致性和可靠性。
毕业设计结束的同时也意味着四年的大学生活就要结束了。闲置衣物捐赠系统的完成以及如何在系统运行过程中实现的更好,这其中付出了很大的努力,这段时光将会终身难忘。
毕业在即,在今后的工作和生活中,我会铭记师长们的教诲、同学们的帮助,继续不懈努力和追求,来报答所有支持和帮助过我的人!
最后,我要向牺牲了休息时间来对本文进行审阅,评议和参与论文答辩的各位老师表示深深的感谢。在此,衷心的谢谢您们!
参考文献
[2]苏文强,刘紫阳,苗玉恒.基于SpringBoot的缺陷管理系统设计与实现[J].大众科技,2021,23(10):4-6+10.
[3]王萍.SpringBoot项目中EhCache缓存技术的实现[J].电脑知识与技术,2021,17(29):79-81.DOI:10.14004/j.cnki.ckt.2021.2812.
[4]李元博,王法胜.校园二手商品交易平台设计与实现[J].电脑知识与技术,2021,17(29):64-67+84.DOI:10.14004/j.cnki.ckt.2021.2807.
[7]赵秋雨.校园二手商品交易平台设计[J].许昌学院学报,2021,40(05):107-110.
[8]王伟,常庆丽,吴朝霞.基于Springboot+Vue的精准帮扶系统研究与实现[J].河南科技,2021,40(27):12-14.
[9]刘星星,张皓宁,王鹏皓,丁晓珊,姜迅.打造校园格子铺——关于完善校园二手市场的设想[J].大众标准化,2021(18):85-87.
[13]袁文钢.新时代背景下中小学校园跳蚤市场的教育价值[J].小学教学研究,2021(06):43-44.
[14]曾灏,严张凌.校园跳蚤市场APP的设计与开发[J].信息与电脑(理论版),2020,32(20):72-74.
[16]蒋薛.跳蚤市场进校园[J].今日教育(幼教金刊),2019(Z1):86-87.
[17]盛莉.面向真实的深度学习——从“跳蚤市场”到“‘双11’校园购物节”的实践反思[J].江苏教育,2019(02):26-27.
致谢
免费领取本源代码,请关注点赞+私信
(附源码)springboot闲置衣物捐赠系统 毕业设计 021009相关推荐
- springboot闲置衣物捐赠系统毕业设计源码021009
闲置衣物捐赠系统 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用.信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史 ...
- (附源码)springboot实验室自主预约系统 毕业设计111953
Springboot实验室自主预约系统 摘 要 远程预约是一种全新的网络租用方式,它通过互联网突破了时间和空间限制,实现了便捷快速的预约与管理功能.在对数据信息有效组织并整合了一定使用功能后,远程预约 ...
- (附源码)springboot森林生物调查系统的设计与实现 毕业设计301826
springboot森林生物调查系统 摘 要 随着互联网大趋势的到来,社会的方方面面,各行各业都在考虑利用互联网作为媒介将自己的信息更及时有效地推广出去,而其中最好的方式就是建立网络管理系统,并对其进 ...
- (附源码)springboot微信点餐系统的设计与实现 毕业设计221541
springboot点餐微信小程序 摘 要 点餐微信小程序采用B/S模式.采用JAVA语言.springboot框架.mysql数据库.小程序框架uniapp等开工具.促进了点餐微信小程序的业务发展. ...
- (附源码)springboot大学生创新创业管理 毕业设计 041557
springboot大学生创新创业管理 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用.信息时代的到来已成为不可阻挡的时 ...
- (附源码)springboot自行车在线租赁管理系统 毕业设计101157
Springboot自行车在线租赁系统 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难 ...
- (附源码)Springboot + vue远程心电诊断系统 毕业设计091759
目 录 摘要 1 1 绪论 1 1.1研究背景及意义 1 1.2研究现状 1 1.3系统开发技术的特色 1 1.4论文结构与章节安排 1 2远程心电诊断系统系统分析 3 2.1 可行性分析 3 2.2 ...
- (附源码)spring boot智能停车场系统 毕业设计065415
springboot智能停车场管理系统 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用.信息时代的到来已成为不可阻挡的时 ...
- (附源码)springboot健康饮食小程序 毕业设计280920
健康饮食小程序的设计与实现 摘 要 本文设计了一种基于微信小程序的健康饮食小程序小程序,系统为人们提供了方便快捷.即用即搜的健康食谱服务,包括健康食谱,医疗资讯.注册登录等,用户能够方便快捷地查看资讯 ...
最新文章
- Linux c modbus 线程,Modbus读写模拟量寄存器详解
- 【Python】蒙特卡罗方法计算圆周率及给定随机数种子
- 哥尼斯堡的“七桥问题” (25 分)【欧拉回路模板题】
- (五):C++分布式实时应用框架——微服务架构的演进
- 流量复制_详解Linux系统流量复制--gor、tcpcopy、nginx模块流量复制等
- 解析su,su -,sudo的区别
- 里面怎么打中文字_“标题党”英语应该怎么翻译?不要翻译成“title party”!...
- java 怎样展示二维画矩阵图_如何用java绘制矩阵的图
- 关于 HenCoder
- 64位lua引擎如何支持32位luac编译出来的二进制字节码?
- 喜报:毒霸成功通过VB100认证
- cad如何多选对象_CAD快速选择和选择类似对象怎么用
- 腾讯企业邮箱接收服务器pop,腾讯企业邮箱POP,SMTP分别是什么(示例代码)
- sunShine问题
- Java面试之Java基础篇(offer 拿来吧你)
- javascript,jQuery,vue的区别
- SQL Server无法连接服务器
- python数据分析优势-用Python做数据分析有哪些优势?
- P6专题:P6 EPPM和PPM基本概念
- iOS VideoToolbox 硬编指南