Java实战项目-基于微信小程序的校园生活互助服务小程序

时间:2024-11-04 13:48:24

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w+、****博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战,微 xiaoxu_9411

????文末获取源码联系????

???????? 精彩专栏推荐订阅???????? 不然下次找不到哟

2022-2024年最全的计算机软件毕业设计选题大全:1000个热门选题推荐✅
Java项目精品实战案例《500套》
Java微信小程序项目实战《200套》
Python项目实战《200套》

感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及文档编写等相关问题都可以给我留言咨询,希望帮助更多的人

1 简介

Java 基于微信小程序的校园生活互助服务小程序。本文以实际运用为开发背景,运用软件工程原理和开发方法,它主要是采用java语言技术、springboot框架和mysql 数据库来完成对系统的设计。整个开发过程首先对校园生活服务站小程序进行需求分析,得出校园生活服务站小程序主要功能。接着对校园生活服务站小程序进行总体设计和详细设计,总体设计主要包括小程序功能设计、小程序总体结构设计、小程序数据结构设计和小程序安全设计等;详细设计主要包括校园生活服务站小程序数据库访问的实现,主要功能模块的具体实现,模块实现关键代码等。最后对校园生活服务站小程序进行了功能测试,并对测试结果进行了分析总结,得出校园生活服务站小程序存在的不足及需要改进的地方,为以后的校园生活服务站小程序维护提供了方便,同时也为今后开发类似校园生活服务站小程序提供了借鉴和帮助。

校园生活服务站小程序开发使系统能够更加方便快捷,同时也促使校园生活服务站小程序变的更加系统化、有序化。系统界面较友好,易于操作。

**关键词 :**校园生活服务小程序;微信小程序;Mysql数据库;Java语言

2 技术简介

使用框架:SpringBoot

开发语言:Java、

框架:SpringBoot,

JDK版本:JDK1.8 ,

服务器:tomcat7或者8 ,

数据库:mysql 5.7,

数据库工具:Navicat,

开发软件:idea,

浏览器:谷歌浏览器

3 系统概述

进过系统的分析后,就开始记性系统的设计,系统设计包含总体设计和详细设计。总体设计只是一个大体的设计,经过了总体设计,我们能够划分出系统的一些东西,例如文件、文档、数据等。而且我们通过总体设计,大致可以划分出了程序的模块,以及功能。但是只是一个初步的分类,并没有真正的实现。

整体设计,只是一个初步设计,而且,对于一个项目,我们可以进行多个整体设计,通过对比,包括性能的对比、成本的对比、效益的对比,来最终确定一个最优的设计方案,选择优秀的整体设计可以降低开发成本,增加公司效益,从这一点来讲,整体设计还是非常重要的。

校园生活服务小程序工作原理图如图4-1所示:

image-20241103213535309

4. 数据库设计原则

每个数据库的应用它们都是和区分开的,当运行到一定的程序当中,它就会与自己相关的协议与客户端进行通讯。那么这个系统就会对使这些数据进行连接。当我们选择哪个桥段的时候,接下来就会简单的叙述这个数据库是如何来创建的。当点击完成按钮的时候就会自动在对话框内弹出数据源的名称,在进行点击下一步即可,直接在输入相对应的身份验证和登录密码。

表access_token (登陆访问时长)

编号 名称 数据类型 长度 小数位 允许空值 主键 默认值 说明
1 token_id int 10 0 N Y 临时访问牌ID
2 token varchar 64 0 Y N 临时访问牌
3 info text 65535 0 Y N
4 maxage int 10 0 N N 2 最大寿命:默认2小时
5 create_time timestamp 19 0 N N CURRENT_TIMESTAMP 创建时间:
6 update_time timestamp 19 0 N N CURRENT_TIMESTAMP 更新时间:
7 user_id int 10 0 N N 0 用户编号:

表address (收货地址:)

编号 名称 数据类型 长度 小数位 允许空值 主键 默认值 说明
1 address_id int 10 0 N Y 收货地址:
2 name varchar 32 0 Y N 姓名:
3 phone varchar 13 0 Y N 手机:
4 postcode varchar 8 0 Y N 邮编:
5 address varchar 255 0 N N 地址:
6 user_id mediumint 8 0 N N 用户ID:[0,8388607]用户获取其他与用户相关的数据
7 create_time timestamp 19 0 N N CURRENT_TIMESTAMP 创建时间:
8 update_time timestamp 19 0 N N CURRENT_TIMESTAMP 更新时间:
9 default bit 1 0 N N 0 默认判断

表article (文章:用于内容管理系统的文章)

编号 名称 数据类型 长度 小数位 允许空值 主键 默认值 说明
1 article_id mediumint 8 0 N Y 文章id:[0,8388607]
2 title varchar 125 0 N Y 标题:[0,125]用于文章和html的title标签中
3 type varchar 64 0 N N 0 文章分类:[0,1000]用来搜索指定类型的文章
4 hits int 10 0 N N 0 点击数:[0,1000000000]访问这篇文章的人次
5 praise_len int 10 0 N N 0 点赞数
6 create_time timestamp 19 0 N N CURRENT_TIMESTAMP 创建时间:
7 update_time timestamp 19 0 N N CURRENT_TIMESTAMP 更新时间:
8 source varchar 255 0 Y N 来源:[0,255]文章的出处
9 url varchar 255 0 Y N 来源地址:[0,255]用于跳转到发布该文章的网站
10 tag varchar 255 0 Y N 标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开
11 content longtext 2147483647 0 Y N 正文:文章的主体内容
12 img varchar 255 0 Y N 封面图
13 description text 65535 0 Y N 文章描述

表article_type (文章分类)

编号 名称 数据类型 长度 小数位 允许空值 主键 默认值 说明
1 type_id smallint 5 0 N Y 分类ID:[0,10000]
2 display smallint 5 0 N N 100 显示顺序:[0,1000]决定分类显示的先后顺序
3 name varchar 16 0 N N 分类名称:[2,16]
4 father_id smallint 5 0 N N 0 上级分类ID:[0,32767]
5 description varchar 255 0 Y N 描述:[0,255]描述该分类的作用
6 icon text 65535 0 Y N 分类图标:
7 url varchar 255 0 Y N 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置
8 create_time timestamp 19 0 N N CURRENT_TIMESTAMP 创建时间:
9 update_time timestamp 19 0 N N CURRENT_TIMESTAMP 更新时间:

5系统界面实现

5.1管理员功能模块

管理员输入个人的账号、密码登录系统,这时候系统的数据库就会在进行查找相关的信息,如果我们输入的账号、密码不正确,数据库就会提示出错误的信息提示,同时会提示管理员重新输入自己的账号、密码,直到账号密码输入成功后,会提示登录成功的信息。管理员登录效果图如图5.1所示:

图5.1登录界面

登录代码如下:

/**

* 登录

* @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, “账号或密码不正确”);

}

}

管理员可以查看后台服务端后台首页、轮播图、公告信息管理、系统用户(管理员、系统用户、卖家)资源管理(校园资讯、资讯分类)商城管理(二手交易、分类列表、订单列表)模块管理(寻物启示、失物招领、交流论坛、物品类型)个人信息等操作。管理员服务端效果图如图5.2所示。

图5.2管理员服务端界面图

管理员功能页代码如下:

@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());

}

系统用户信息管理

管理员对用户信息管理进行审核等操作,并可进行进行删除、修改、查看等操作。用户信息管理效果图如图5.3所示。

图5.3用户信息管理界面图

5.2用户客户端功能模块

用户注册

用户注册在登陆页面填写账号、密码、邮箱、昵称、用户姓名等信息,进行注册如图5.7所示

前台首页

用户对查看首页详情页面,如图5.9所示。

图5.9前台首页功能界面图

校园资讯列表

校园资讯详情页面可查看标题、点赞数、封面图、分类、标签、描述等详细信息,可对喜欢的文章进行点赞、收藏、发表评论等操作,如图5.10所示。

5.10校园资讯界面图

寻物启示列表

寻物启示列表可通过搜索物品名称或物品类型查看物品名称、物品类型、物品图片、丢失地址、丢失时间、物品状态、发布用户、详情内容等详细信息,可进行收藏、发表评论等操作,如图5.11所示。

图5.11寻物启示列表界面图

5.3卖家功能模块

卖家注册在登陆页面填写账号、密码、邮箱、昵称、用户姓名等信息,进行注册如图5.16所示

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图5.16卖家注册界面图

卖家可以查看后台服务端后台首页、商城管理(二手交易、订单列表)个人信息等操作。管理员服务端效果图如图5.17所示。

图5.17卖家功能界面图

6 参考文献

[1]Maruti Endang Sri,Yulianto Bambang,Suhartono Suhartono,Yohanes Budinuryanta,Cahyono Bambang Eko Hari. Scale development as a measuring tool of critical Javanese language’ awareness for pre-service Javanese teachers[J]. Cogent Arts &amp; Humanities,2022,9(1).

[2]李乐.Java语言应用研究[J].智慧中国,2022(09):80-81.

[3]锁冠侠,熊政力,王钰忠.“青客校园”服务平台建设与应用研究[J].中国多媒体与网络教学学报(中旬刊),2022(06):34-37.

[4]陈娇,杨欣,韩艳,卢波.基于微信小程序的校园综合服务化线上商城的研究与探索[J].中阿科技论坛(中英文),2022(04):102-106.

[5]张娜,刘翔,翟中明,包涵,缪思玥.基于互联网经济的校园生活服务平台发展前景及营销推广策略[J].大众投资指南,2021(24):55-57.

[6]左佳丽,刘文珊,张玲乐.校园生活综合服务平台小程序的设计与实现[J].无线互联科技,2021,18(11):62-63+78.

[7]边川. 江南地区高校学生生活服务空间人性化设计研究[D].浙江大学,2021.DOI:10.27461/d.cnki.gzjdx.2021.002572.

7 推荐阅读

基于Python的豆瓣电影排行榜,可视化系统

基于 Python 的个性化电影推荐系统的研究与实现

基于微信小程序的校园失物招领平台的研究

Java 基于微信小程序的汉堡点餐系统的研究与实现

2022-2024年最全的计算机软件毕业设计选题大全:1000个热门选题推荐✅

8 源码获取:

大家点赞、收藏、关注、评论啦 、查看????????获取联系方式????????

2022-2024年最全的计算机软件毕业设计选题大全:1000个热门选题推荐✅

Java项目精品实战案例《100套》

Java微信小程序项目实战《100套》

感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及文档编写等相关问题都可以给我留言咨询,希望帮助更多的人