作者主页:编程指南针

作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师

主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库、技术互助

收藏点赞不迷路  关注作者有好处

文末获取源码

项目编号:BS-XCX-016

一,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

后台开发技术:SSM框架

前台开发技术:uni-app+微信小程序+vue

二,项目简介

互联网和移动互联网的发展和应用,极大的刺激了信息化技术的发展,无论是从技术上还从应用上,在当今的中国,都发展的非常讯速,影响着人们的生活和工作的方方面面。计算机信息化的应用可以说是人类进程史上的第四次工业革命,又被称为工业4.0,而今天国家发展战略中的智能制造、智慧中国等,也无不充斥着对信息化技术的支持。如何利用新技术,新科技,在日益竞争的社会中加快生产率,节约时间和成本,是每一个相利用互联网的人思考的问题。

本课题主要利用计算机科技技术,通过移动端的微信小程序,完成一个学校的报修信息管理系统。将传统的电话报修或人工报修替换为通过移动互联网的微信小程序应用来进行在线报修,无疑是一大进步,其主要受益于智能手机和移动互联网的普及,让人们通过手机来集成日常的相关工作和学习,而将其应用到学校信息化建设中去,也有很多应用的途径,比如今天我们所开发的报修小程序,就可以让师生通过微信小程序直接在线报修,查看维修结果,进行维修评价,非常便利。

本次开发的小程序报修平台,采用前后端分离的开发方式来进行设计,前端通过微信小程序进行实现,采用轻量级APP应用,用户无须下载安装新的客户端工具,直接借助于微信平台即可实现应用。后台采用Java平台,利用Springboot快捷开发框架,有效的集成Mybatis等相关就框架,完成后台服务接口和开发和应用。在数据存储方面,使用Mysql关系型数据库来存储报修平台的业务数据,开发工具采用IDEA集成开发工具。

基于微信小程序实现的这款报修系统,主要用于高校内部使用,在微信平台上上线运营。经过分析得知本系统的用户有三类,一类是针对学校的师生和居住人员,他们可以扫描微信小程序二维码,登陆小程序平台,在线报修各类损坏的设施和设备,在线查看维修结果,对维修结果进行评价,同时也可以在线查看学校的相关通知,也可以发布一些失物招领信息等。另一类用户主要是为平台运营管理者,为这类用户开发的有后台管理系统,主要用于管理相关的基础业务信息,比如用户信息、报修信息、新闻信息等。还有一类是维修工人,可以通过系统后台查看派单情况,进行维修工单的状态修改,查看自己工单的评价信息等。通过前后端完整的功能结构设计,能满足不同用户类型的基本需求。

三,系统展示

前端小程序

注册登录

新闻查看

论坛交流

个人中心

故障上报

报修评价

后台管理模块

管理员登录

用户管理

学生管理

维修工人管理

论坛管理

新闻管理

故障上报管理

其它略

四,核心代码展示

package com.controller;import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.*;import javax.servlet.http.HttpServletRequest;import com.alibaba.fastjson.JSON;
import com.utils.StringUtil;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import com.annotation.IgnoreAuth;
import com.baidu.aip.face.AipFace;
import com.baidu.aip.face.MatchRequest;
import com.baidu.aip.util.Base64Util;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.ConfigEntity;
import com.service.CommonService;
import com.service.ConfigService;
import com.utils.BaiduUtil;
import com.utils.FileUtil;
import com.utils.R;/*** 通用接口*/
@RestController
public class CommonController{private static final Logger logger = LoggerFactory.getLogger(CommonController.class);@Autowiredprivate CommonService commonService;@Autowiredprivate ConfigService configService;private static AipFace client = null;private static String BAIDU_DITU_AK = null;@RequestMapping("/location")public R location(String lng,String lat) {if(BAIDU_DITU_AK==null) {BAIDU_DITU_AK = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "baidu_ditu_ak")).getValue();if(BAIDU_DITU_AK==null) {return R.error("请在配置管理中正确配置baidu_ditu_ak");}}Map<String, String> map = BaiduUtil.getCityByLonLat(BAIDU_DITU_AK, lng, lat);return R.ok().put("data", map);}/*** 人脸比对* * @param face1 人脸1* @param face2 人脸2* @return*/@RequestMapping("/matchFace")public R matchFace(String face1, String face2, HttpServletRequest request) {if(client==null) {/*String AppID = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "AppID")).getValue();*/String APIKey = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "APIKey")).getValue();String SecretKey = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "SecretKey")).getValue();String token = BaiduUtil.getAuth(APIKey, SecretKey);if(token==null) {return R.error("请在配置管理中正确配置APIKey和SecretKey");}client = new AipFace(null, APIKey, SecretKey);client.setConnectionTimeoutInMillis(2000);client.setSocketTimeoutInMillis(60000);}JSONObject res = null;try {File file1 = new File(request.getSession().getServletContext().getRealPath("/upload")+"/"+face1);File file2 = new File(request.getSession().getServletContext().getRealPath("/upload")+"/"+face2);String img1 = Base64Util.encode(FileUtil.FileToByte(file1));String img2 = Base64Util.encode(FileUtil.FileToByte(file2));MatchRequest req1 = new MatchRequest(img1, "BASE64");MatchRequest req2 = new MatchRequest(img2, "BASE64");ArrayList<MatchRequest> requests = new ArrayList<MatchRequest>();requests.add(req1);requests.add(req2);res = client.match(requests);System.out.println(res.get("result"));} catch (FileNotFoundException e) {e.printStackTrace();return R.error("文件不存在");} catch (IOException e) {e.printStackTrace();} return R.ok().put("data", com.alibaba.fastjson.JSONObject.parse(res.get("result").toString()));}/*** 获取table表中的column列表(联动接口)* @return*/@RequestMapping("/option/{tableName}/{columnName}")@IgnoreAuthpublic R getOption(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName,String level,String parent) {Map<String, Object> params = new HashMap<String, Object>();params.put("table", tableName);params.put("column", columnName);if(StringUtils.isNotBlank(level)) {params.put("level", level);}if(StringUtils.isNotBlank(parent)) {params.put("parent", parent);}List<String> data = commonService.getOption(params);return R.ok().put("data", data);}/*** 根据table中的column获取单条记录* @return*/@RequestMapping("/follow/{tableName}/{columnName}")@IgnoreAuthpublic R getFollowByOption(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName, @RequestParam String columnValue) {Map<String, Object> params = new HashMap<String, Object>();params.put("table", tableName);params.put("column", columnName);params.put("columnValue", columnValue);Map<String, Object> result = commonService.getFollowByOption(params);return R.ok().put("data", result);}/*** 修改table表的sfsh状态* @param map* @return*/@RequestMapping("/sh/{tableName}")public R sh(@PathVariable("tableName") String tableName, @RequestBody Map<String, Object> map) {map.put("table", tableName);commonService.sh(map);return R.ok();}/*** 获取需要提醒的记录数* @param tableName* @param columnName* @param type 1:数字 2:日期* @param map* @return*/@RequestMapping("/remind/{tableName}/{columnName}/{type}")@IgnoreAuthpublic R remindCount(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName, @PathVariable("type") String type,@RequestParam Map<String, Object> map) {map.put("table", tableName);map.put("column", columnName);map.put("type", type);if(type.equals("2")) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Calendar c = Calendar.getInstance();Date remindStartDate = null;Date remindEndDate = null;if(map.get("remindstart")!=null) {Integer remindStart = Integer.parseInt(map.get("remindstart").toString());c.setTime(new Date()); c.add(Calendar.DAY_OF_MONTH,remindStart);remindStartDate = c.getTime();map.put("remindstart", sdf.format(remindStartDate));}if(map.get("remindend")!=null) {Integer remindEnd = Integer.parseInt(map.get("remindend").toString());c.setTime(new Date());c.add(Calendar.DAY_OF_MONTH,remindEnd);remindEndDate = c.getTime();map.put("remindend", sdf.format(remindEndDate));}}int count = commonService.remindCount(map);return R.ok().put("count", count);}/*** 圖表统计*/@IgnoreAuth@RequestMapping("/group/{tableName}")public R group1(@PathVariable("tableName") String tableName, @RequestParam Map<String,Object> params) {params.put("table1", tableName);List<Map<String, Object>> result = commonService.chartBoth(params);return R.ok().put("data", result);}/*** 单列求和*/@RequestMapping("/cal/{tableName}/{columnName}")@IgnoreAuthpublic R cal(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName) {Map<String, Object> params = new HashMap<String, Object>();params.put("table", tableName);params.put("column", columnName);Map<String, Object> result = commonService.selectCal(params);return R.ok().put("data", result);}/*** 分组统计*/@RequestMapping("/group/{tableName}/{columnName}")@IgnoreAuthpublic R group(@PathVariable("tableName") String tableName, @PathVariable("columnName") String columnName) {Map<String, Object> params = new HashMap<String, Object>();params.put("table", tableName);params.put("column", columnName);List<Map<String, Object>> result = commonService.selectGroup(params);return R.ok().put("data", result);}/*** (按值统计)*/@RequestMapping("/value/{tableName}/{xColumnName}/{yColumnName}")@IgnoreAuthpublic R value(@PathVariable("tableName") String tableName, @PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName) {Map<String, Object> params = new HashMap<String, Object>();params.put("table", tableName);params.put("xColumn", xColumnName);params.put("yColumn", yColumnName);List<Map<String, Object>> result = commonService.selectValue(params);return R.ok().put("data", result);}/*** 下面为新加的****//*** 查询字典表的分组求和* tableName         表名* groupColumn         分组字段* sumCloum          统计字段* @return*/@RequestMapping("/newSelectGroupSum")public R newSelectGroupSum(@RequestParam Map<String,Object> params) {logger.debug("newSelectGroupSum:,,Controller:{},,params:{}",this.getClass().getName(),params);List<Map<String, Object>> result = commonService.newSelectGroupSum(params);return R.ok().put("data", result);}/*** 查询字典表的分组统计总条数*  tableName         表名* groupColumn     分组字段* @return*/@RequestMapping("/newSelectGroupCount")public R newSelectGroupCount(@RequestParam Map<String,Object> params) {logger.debug("newSelectGroupCount:,,Controller:{},,params:{}",this.getClass().getName(),params);List<Map<String, Object>> result = commonService.newSelectGroupCount(params);return R.ok().put("data", result);}/*** 当前表的日期分组求和* tableName         表名* groupColumn         分组字段* sumCloum          统计字段* dateFormatType    日期格式化类型   1:年 2:月 3:日* @return*/@RequestMapping("/newSelectDateGroupSum")public R newSelectDateGroupSum(@RequestParam Map<String,Object> params) {logger.debug("newSelectDateGroupSum:,,Controller:{},,params:{}",this.getClass().getName(),params);String dateFormatType = String.valueOf(params.get("dateFormatType"));if("1".equals(dateFormatType)){params.put("dateFormat", "%Y");}else if("2".equals(dateFormatType)){params.put("dateFormat", "%Y-%m");}else if("3".equals(dateFormatType)){params.put("dateFormat", "%Y-%m-%d");}else{R.error("日期格式化不正确");}List<Map<String, Object>> result = commonService.newSelectDateGroupSum(params);return R.ok().put("data", result);}/**** 查询字典表的分组统计总条数* tableName          表名* groupColumn         分组字段* dateFormatType    日期格式化类型   1:年 2:月 3:日* @return*/@RequestMapping("/newSelectDateGroupCount")public R newSelectDateGroupCount(@RequestParam Map<String,Object> params) {logger.debug("newSelectDateGroupCount:,,Controller:{},,params:{}",this.getClass().getName(),params);String dateFormatType = String.valueOf(params.get("dateFormatType"));if("1".equals(dateFormatType)){params.put("dateFormat", "%Y");}else if("2".equals(dateFormatType)){params.put("dateFormat", "%Y-%m");}else if("3".equals(dateFormatType)){params.put("dateFormat", "%Y-%m-%d");}else{R.error("日期格式化类型不正确");}List<Map<String, Object>> result = commonService.newSelectDateGroupCount(params);return R.ok().put("data", result);}
/*** 饼状图* -- 饼状图  查询当前表--               查询字典表【月】--               统计   -- 查询某个月的每个类型的订单销售数量--                 求和   -- 查询某个月的每个类型的订单销售额--                 查询某个字符串【月】--                 统计   -- 查询某个月的每个员工的订单销售数量--                 求和   -- 查询某个月的每个员工的订单销售额--                 查询时间【年】--                统计     -- 查询每个月的订单销售数量--                求和     -- 查询每个月的订单销售额-- 饼状图  查询级联表--               查询字典表--                  统计     -- 查询某个月的每个类型的订单销售数量--               求和   -- 查询某个月的每个类型的订单销售额--                 查询某个字符串--                统计   -- 查询某个月的每个员工的订单销售数量--                 求和   -- 查询某个月的每个员工的订单销售额--                 查询时间--               统计     -- 统计每个月的订单销售数量--                求和     -- 查询每个月的订单销售额*//*** 柱状图-- 柱状图  查询当前表--             某个【年,月】--             当前表 2 级联表 1--                      统计--                        【日期,字符串,下拉框】--                        求和--                        【日期,字符串,下拉框】-- 柱状图  查询级联表--                   某个【年,月】--                        统计--                        【日期,字符串,下拉框】--                        求和--                        【日期,字符串,下拉框】*//*** 柱状图求和*/@RequestMapping("/barSum")public R barSum(@RequestParam Map<String,Object> params) {logger.debug("barSum方法:,,Controller:{},,params:{}",this.getClass().getName(), com.alibaba.fastjson.JSONObject.toJSONString(params));Boolean isJoinTableFlag =  false;//是否有级联表相关String one =  "";//第一优先String two =  "";//第二优先//处理thisTable和joinTable 处理内容是把json字符串转为Map并把带有,的切割为数组//当前表Map<String,Object> thisTable = JSON.parseObject(String.valueOf(params.get("thisTable")),Map.class);params.put("thisTable",thisTable);//级联表String joinTableString = String.valueOf(params.get("joinTable"));if(StringUtil.isNotEmpty(joinTableString)) {Map<String, Object> joinTable = JSON.parseObject(joinTableString, Map.class);params.put("joinTable", joinTable);isJoinTableFlag = true;}if(StringUtil.isNotEmpty(String.valueOf(thisTable.get("date")))){//当前表日期thisTable.put("date",String.valueOf(thisTable.get("date")).split(","));one = "thisDate0";}if(isJoinTableFlag){//级联表日期Map<String, Object> joinTable = (Map<String, Object>) params.get("joinTable");if(StringUtil.isNotEmpty(String.valueOf(joinTable.get("date")))){joinTable.put("date",String.valueOf(joinTable.get("date")).split(","));if(StringUtil.isEmpty(one)){one ="joinDate0";}else{if(StringUtil.isEmpty(two)){two ="joinDate0";}}}}if(StringUtil.isNotEmpty(String.valueOf(thisTable.get("string")))){//当前表字符串thisTable.put("string",String.valueOf(thisTable.get("string")).split(","));if(StringUtil.isEmpty(one)){one ="thisString0";}else{if(StringUtil.isEmpty(two)){two ="thisString0";}}}if(isJoinTableFlag){//级联表字符串Map<String, Object> joinTable = (Map<String, Object>) params.get("joinTable");if(StringUtil.isNotEmpty(String.valueOf(joinTable.get("string")))){joinTable.put("string",String.valueOf(joinTable.get("string")).split(","));if(StringUtil.isEmpty(one)){one ="joinString0";}else{if(StringUtil.isEmpty(two)){two ="joinString0";}}}}if(StringUtil.isNotEmpty(String.valueOf(thisTable.get("types")))){//当前表类型thisTable.put("types",String.valueOf(thisTable.get("types")).split(","));if(StringUtil.isEmpty(one)){one ="thisTypes0";}else{if(StringUtil.isEmpty(two)){two ="thisTypes0";}}}if(isJoinTableFlag){//级联表类型Map<String, Object> joinTable = (Map<String, Object>) params.get("joinTable");if(StringUtil.isNotEmpty(String.valueOf(joinTable.get("types")))){joinTable.put("types",String.valueOf(joinTable.get("types")).split(","));if(StringUtil.isEmpty(one)){one ="joinTypes0";}else{if(StringUtil.isEmpty(two)){two ="joinTypes0";}}}}List<Map<String, Object>> result = commonService.barSum(params);List<String> xAxis = new ArrayList<>();//报表x轴List<List<String>> yAxis = new ArrayList<>();//y轴List<String> legend = new ArrayList<>();//标题if(StringUtil.isEmpty(two)){//不包含第二列List<String> yAxis0 = new ArrayList<>();yAxis.add(yAxis0);legend.add("数值");for(Map<String, Object> map :result){String oneValue = String.valueOf(map.get(one));String value = String.valueOf(map.get("value"));xAxis.add(oneValue);yAxis0.add(value);}}else{//包含第二列Map<String, HashMap<String, String>> dataMap = new LinkedHashMap<>();if(StringUtil.isNotEmpty(two)){for(Map<String, Object> map :result){String oneValue = String.valueOf(map.get(one));String twoValue = String.valueOf(map.get(two));String value = String.valueOf(map.get("value"));if(!legend.contains(twoValue)){legend.add(twoValue);//添加完成后 就是最全的第二列的类型}if(dataMap.containsKey(oneValue)){dataMap.get(oneValue).put(twoValue,value);}else{HashMap<String, String> oneData = new HashMap<>();oneData.put(twoValue,value);dataMap.put(oneValue,oneData);}}}for(int i =0; i<legend.size(); i++){yAxis.add(new ArrayList<String>());}Set<String> keys = dataMap.keySet();for(String key:keys){xAxis.add(key);HashMap<String, String> map = dataMap.get(key);for(int i =0; i<legend.size(); i++){List<String> data = yAxis.get(i);if(StringUtil.isNotEmpty(map.get(legend.get(i)))){data.add(map.get(legend.get(i)));}else{data.add("0");}}}System.out.println();}Map<String, Object> resultMap = new HashMap<>();resultMap.put("xAxis",xAxis);resultMap.put("yAxis",yAxis);resultMap.put("legend",legend);return R.ok().put("data", resultMap);}/*** 柱状图统计*/@RequestMapping("/barCount")public R barCount(@RequestParam Map<String,Object> params) {logger.debug("barCount方法:,,Controller:{},,params:{}",this.getClass().getName(), com.alibaba.fastjson.JSONObject.toJSONString(params));Boolean isJoinTableFlag =  false;//是否有级联表相关String one =  "";//第一优先String two =  "";//第二优先//处理thisTable和joinTable 处理内容是把json字符串转为Map并把带有,的切割为数组//当前表Map<String,Object> thisTable = JSON.parseObject(String.valueOf(params.get("thisTable")),Map.class);params.put("thisTable",thisTable);//级联表String joinTableString = String.valueOf(params.get("joinTable"));if(StringUtil.isNotEmpty(joinTableString)) {Map<String, Object> joinTable = JSON.parseObject(joinTableString, Map.class);params.put("joinTable", joinTable);isJoinTableFlag = true;}if(StringUtil.isNotEmpty(String.valueOf(thisTable.get("date")))){//当前表日期thisTable.put("date",String.valueOf(thisTable.get("date")).split(","));one = "thisDate0";}if(isJoinTableFlag){//级联表日期Map<String, Object> joinTable = (Map<String, Object>) params.get("joinTable");if(StringUtil.isNotEmpty(String.valueOf(joinTable.get("date")))){joinTable.put("date",String.valueOf(joinTable.get("date")).split(","));if(StringUtil.isEmpty(one)){one ="joinDate0";}else{if(StringUtil.isEmpty(two)){two ="joinDate0";}}}}if(StringUtil.isNotEmpty(String.valueOf(thisTable.get("string")))){//当前表字符串thisTable.put("string",String.valueOf(thisTable.get("string")).split(","));if(StringUtil.isEmpty(one)){one ="thisString0";}else{if(StringUtil.isEmpty(two)){two ="thisString0";}}}if(isJoinTableFlag){//级联表字符串Map<String, Object> joinTable = (Map<String, Object>) params.get("joinTable");if(StringUtil.isNotEmpty(String.valueOf(joinTable.get("string")))){joinTable.put("string",String.valueOf(joinTable.get("string")).split(","));if(StringUtil.isEmpty(one)){one ="joinString0";}else{if(StringUtil.isEmpty(two)){two ="joinString0";}}}}if(StringUtil.isNotEmpty(String.valueOf(thisTable.get("types")))){//当前表类型thisTable.put("types",String.valueOf(thisTable.get("types")).split(","));if(StringUtil.isEmpty(one)){one ="thisTypes0";}else{if(StringUtil.isEmpty(two)){two ="thisTypes0";}}}if(isJoinTableFlag){//级联表类型Map<String, Object> joinTable = (Map<String, Object>) params.get("joinTable");if(StringUtil.isNotEmpty(String.valueOf(joinTable.get("types")))){joinTable.put("types",String.valueOf(joinTable.get("types")).split(","));if(StringUtil.isEmpty(one)){one ="joinTypes0";}else{if(StringUtil.isEmpty(two)){two ="joinTypes0";}}}}List<Map<String, Object>> result = commonService.barCount(params);List<String> xAxis = new ArrayList<>();//报表x轴List<List<String>> yAxis = new ArrayList<>();//y轴List<String> legend = new ArrayList<>();//标题if(StringUtil.isEmpty(two)){//不包含第二列List<String> yAxis0 = new ArrayList<>();yAxis.add(yAxis0);legend.add("数值");for(Map<String, Object> map :result){String oneValue = String.valueOf(map.get(one));String value = String.valueOf(map.get("value"));xAxis.add(oneValue);yAxis0.add(value);}}else{//包含第二列Map<String, HashMap<String, String>> dataMap = new LinkedHashMap<>();if(StringUtil.isNotEmpty(two)){for(Map<String, Object> map :result){String oneValue = String.valueOf(map.get(one));String twoValue = String.valueOf(map.get(two));String value = String.valueOf(map.get("value"));if(!legend.contains(twoValue)){legend.add(twoValue);//添加完成后 就是最全的第二列的类型}if(dataMap.containsKey(oneValue)){dataMap.get(oneValue).put(twoValue,value);}else{HashMap<String, String> oneData = new HashMap<>();oneData.put(twoValue,value);dataMap.put(oneValue,oneData);}}}for(int i =0; i<legend.size(); i++){yAxis.add(new ArrayList<String>());}Set<String> keys = dataMap.keySet();for(String key:keys){xAxis.add(key);HashMap<String, String> map = dataMap.get(key);for(int i =0; i<legend.size(); i++){List<String> data = yAxis.get(i);if(StringUtil.isNotEmpty(map.get(legend.get(i)))){data.add(map.get(legend.get(i)));}else{data.add("0");}}}System.out.println();}Map<String, Object> resultMap = new HashMap<>();resultMap.put("xAxis",xAxis);resultMap.put("yAxis",yAxis);resultMap.put("legend",legend);return R.ok().put("data", resultMap);}
}

五,相关作品展示

基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的实战项目

基于Nodejs、Vue等前端技术开发的前端实战项目

基于微信小程序和安卓APP应用开发的相关作品

基于51单片机等嵌入式物联网开发应用

基于各类算法实现的AI智能应用

基于大数据实现的各类数据管理和推荐系统

Uni-app开发小程序|基于微信小程序报修系统设计与实现相关推荐

  1. 如何开发微信小程序|基于微信小程序就诊预约系统的设计与实现

    作者主页:编程指南针 作者简介:Java领域优质创作者.CSDN博客专家 .CSDN内容合伙人.掘金特邀作者.阿里云博客专家.51CTO特邀作者.多年架构师设计经验.腾讯课堂常驻讲师 主要内容:Jav ...

  2. node.js+小程序基于微信小程序的校园失物招领系统毕业设计源码072343

    微信小程序的校园失物招领系统 摘  要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,微信小程序的校 ...

  3. ssm+微信小程序基于微信小程序的社区老人健康管理服务系统的设计与实现毕业设计源码011513

    摘要 随着现在网络的快速发展,网络的应用在各行各业当中它很快融入到了许多分类管理之中,他们利用网络来做这个社区老人健康管理服务系统,随之就产生了"社区老人健康管理服务系统 .",这 ...

  4. 【计算机毕业设计】课堂考勤微信小程序 基于微信小程序的课堂考勤管理系统

    毕设帮助.源码交流.技术解答,见文末 一.前言 在目前国内的高校课堂考勤中,传统的到场点名方式耗费了教师大量的时间和精力,随着课堂人数的增加,学生群体呈现多样性,这种点名考勤方式将不再适合日常使用,而 ...

  5. 计算机实战项目、毕业设计、课程设计之 含论文+辩论PPT+源码等]微信小程序基于微信小程序的美容预约+后台管理系统

    美容预约平台+后台管理系统|前后分离VUE>该项目含有源码.论文等资料.配套开发软件.软件安装教程.项目发布教程等 本系统包含微信小程序前台和Java做的后台管理系统,该后台采用前后台前后分离的 ...

  6. 医院预约小程序/基于微信小程序的医院预约挂号系统/医院在线预约系统的设计与实现

    医院预约开发使系统能够更加方便快捷,同时也促使医院预约变的更加系统化.有序化.系统界面较友好,易于操作.具体在系统设计上,客户端使用微信开发者,后台也使用java技术在动态页面上进行了设计,Mysql ...

  7. 点餐小程序系统/基于微信小程序的点餐系统/点餐平台网站

    目录 1 绪论 1.1课题研究背景和意义 1.2 国内外现状分析 1.3 课题研究主要内容 2 核心技术介绍 2.1 mysql技术介绍 2.2 idea编译器介绍 2.3 springboot框架介 ...

  8. 计算机毕业设计PHP基于微信小程序寸金校园租车平台(源码+程序+uni+lw+部署)

    该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程.欢迎交流 项目运行 环境配置: phpStudy+ Vscode +Mysql5.7 + HBuilderX+Navicat11+Vue ...

  9. 基于微信小程序的大学生心理健康测试设计与实现 .docx

    目录 1 绪论 3 1.1 项目开发背景 3 1.2 项目开发意义 3 1.3 项目主要的内容 4 2 相关技术介绍及系统环境开发条件 5 2.1相关技术介绍 5 2.2系统环境开发条件 6 3 系统 ...

最新文章

  1. 笔记react router 4(三)
  2. 《Pro Ogre 3D Programming》 读书笔记 之 第七章 资源管理(转)
  3. 计算机应用基础操作题教学考试,电大教学全国计算机应用基础考试网考内容全部操作题.doc...
  4. Qt 独立运行时伴随CMD命令窗口
  5. linux内核Kconfig语法
  6. linux 制作yum,Linux制作本地yum
  7. java函数ao活动对象_JS之预编译和执行顺序(全局和函数)
  8. Map 3D API二次开发学习指南
  9. 什么是弱密码,如何避免
  10. 网络状态检测的利器 - ss命令
  11. Docker架设服务器系列
  12. 【通信原理】实验七、基于Matlab的均匀量化和非均匀量化
  13. 微信小程序实现可移动悬浮按钮(超简单)
  14. confluence 制作流程图_超好用的流程图绘图工具你还没get吗?
  15. 设置EditText输入的文字全部变成大写或小写方案总结
  16. 计算机视觉|投影与三维视觉
  17. 资源网站合集 五个值得你收藏的网站
  18. 在QNX平台上开发Java应用程序 (更新版) 2004年写的呢
  19. ff7重制版青魔法_FFV最终幻想7PC重制版攻略 第五十一章:大空洞
  20. java linkq,TongLinkQ使用

热门文章

  1. 如何开发优秀的HTML5游戏?-迪斯尼《寻找奥兹之路》游戏技术详解(一)
  2. 拜读及分析Element源码-input组件篇
  3. 我的勇敢萨满应该如何战斗?萨满国王的战术教学
  4. SQL学习之show databases语句
  5. 指数平滑法 Exponential Smoothing
  6. 02【Verilog实战】异步FIFO设计(附源码RTL/TB)
  7. P2800 又上锁妖塔
  8. Node.Js同步实现歌词显示
  9. 【Crypto——1.23wp】
  10. TM4C123系列(四)————UART串口通信