(微信小程序毕业设计)社团管理平台(附源码+论文)

大家好!我是岛上程序猿,感谢您阅读本文,欢迎一键三连哦。

💞当前专栏:微信小程序毕业设计
精彩专栏推荐👇🏻👇🏻👇🏻
🎀 安卓app毕业设计
🌎Java毕业设计

一、项目简介

本文以微信小程序、java为开发技术,实现了一个基于微信小程序的社团管理平台的开发与实现。基于微信小程序的社团管理平台的主要使用者分为管理员和学生端,用户端:首页、社团管理、个人中心;管理员:首页、社团修改、社团删除、退出等功能。通过这些功能模块的设计,基本上实现了社团管理的过程。具体在系统设计上,采用了B/S的结构,同时,也使用小程序技术在动态页面上进行了设计,后台上采用Mysql数据库,是一个非常优秀的基于微信小程序的社团管理平台的开发与实现。
关键词 :社团管理:微信;小程序;B/S 结构

二、系统设计

2.1软件功能模块设计

基于微信小程序的项目设计的整体结构设计如图4-7所示。
在这里插入图片描述

2.2数据库设计

1、社团实体图如图4-8所示:
在这里插入图片描述

2、学生实体图如图4-8所示:

在这里插入图片描述

三、系统项目部分截图

3.1小程序主题功能模块

用户选择通过学生端登录系统,如图5.1所示。在这里插入图片描述
可以看到包括:首页、社团管理和个人中心三个选项,如图5.2所示。

在这里插入图片描述

用户选择通过学生端登录系统,并且可以看到管理员可以选择增加、删除、修改社团信息,如图5-3所示。在这里插入图片描述
例如,管理员选择增加社团操作。如图5-4所示。而具体的修改信息相应的也包括修改社团名称、负责人、公告等信息。
在这里插入图片描述
学生端可以通过浏览现有的社团,选择进入加入社团,并填写相应的信息,如图5-5所示。

在这里插入图片描述

四、论文目录

1 概述 1
1.1课题背景及意义 1
1.2 国内外研究现状 1
1.3 本课题主要工作 2
2 系统开发环境 4
2.1系统开发平台 4
2.2 Mysql数据库 4
2.3 B/S结构 5
2.4 SSM框架 5
3 系统分析 7
3.1 可行性分析 7
3.1.1 技术可行性 7
3.1.2操作可行性 7
3.1.3 经济可行性 7
3.1.4 法律可行性 8
3.2系统流程分析 8
3.2.1系统开发流程 8
3.2.2 用户登录流程 9
3.2.3 系统操作流程 9
3.2.4 添加信息流程 10
3.2.5 修改信息流程 11
3.2.6 删除信息流程 11
4 系统设计 13
4.1 系统概述 13
4.2 系统结构设计 13
4.3数据库设计 15
4.3.1 数据库设计原则 15
4.3.2 数据库实体 16
4.3.3 数据库表设计 17
5统详细设计 21
5.1用户登录功能模块 21
5.2用户订单会员功能 23
5.3管理员功能模块 24
6系统测试 27
6.1系统测试的意义 27
6.2 测试方法 28
6.3测试分析 28
结 论 29
致 谢 30
参考文献 31

五、部分核心代码

4.1 学生部分

package com.bx.api.controller;

import com.bx.api.entity.TStudent;
import com.bx.api.service.TStudentService;
import com.bx.api.param.TStudentQueryParam;
import com.bx.api.vo.TStudentQueryVo;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController;
import io.geekidea.springbootplus.framework.pagination.Paging;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;


import javax.validation.Valid;


/**
 * <pre>
 *  前端控制器
 * </pre>
 *
 * @author geekidea
 * @since 2021-02-15
 */
@Slf4j
@RestController
@RequestMapping("/tStudentNew")
@Api(" API")
public class TStudentController extends BaseController {

    @Autowired
    private TStudentService tStudentService;

    /**
     * 添加
     */
    @PostMapping("/add")
    @ApiOperation(value = "添加TStudent对象", notes = "添加", response = ApiResult.class)
    public ApiResult<Boolean> addTStudent(@Valid @RequestBody TStudent tStudent) throws Exception {
        boolean flag = tStudentService.saveTStudent(tStudent);
        return ApiResult.result(flag);
    }

    /**
     * 修改
     */
    @PostMapping("/update")
    @ApiOperation(value = "修改TStudent对象", notes = "修改", response = ApiResult.class)
    public ApiResult<Boolean> updateTStudent(@Valid @RequestBody TStudent tStudent) throws Exception {
        boolean flag = tStudentService.updateTStudent(tStudent);
        return ApiResult.result(flag);
    }

    /**
     * 删除
     */
    @PostMapping("/modifypwd")
    @ApiOperation(value = "login", notes = "login", response = ApiResult.class)
    public ApiResult<Boolean> modifypwd(@RequestBody TStudent tStudent) throws Exception {
        Boolean result = tStudentService.modifypwd(tStudent);
        return ApiResult.ok(result);
    }
    @PostMapping("/modifyPhone")
    @ApiOperation(value = "login", notes = "login", response = ApiResult.class)
    public ApiResult<Boolean> modifyPhone(@RequestBody TStudent tStudent) throws Exception {
        Boolean result = tStudentService.modifyPhone(tStudent);
        return ApiResult.ok(result);
    }


    /**
     * 删除
     */
    @PostMapping("/login")
    @ApiOperation(value = "login", notes = "login", response = ApiResult.class)
    public ApiResult<TStudentQueryVo> login(@RequestBody TStudent tStudent) throws Exception {
        TStudentQueryVo result = tStudentService.login(tStudent);
        if(result==null){
            return ApiResult.fail("学号或者密码不正确");
        }
        return ApiResult.ok(result);
    }


    /**
     * 删除
     */
    @PostMapping("/delete/{id}")
    @ApiOperation(value = "删除TStudent对象", notes = "删除", response = ApiResult.class)
    public ApiResult<Boolean> deleteTStudent(@PathVariable("id") Long id) throws Exception {
        boolean flag = tStudentService.deleteTStudent(id);
        return ApiResult.result(flag);
    }

    /**
     * 获取
     */
    @GetMapping("/info/{id}")
    @ApiOperation(value = "获取TStudent对象详情", notes = "查看", response = TStudentQueryVo.class)
    public ApiResult<TStudentQueryVo> getTStudent(@PathVariable("id") Long id) throws Exception {
        TStudentQueryVo tStudentQueryVo = tStudentService.getTStudentById(id);
        return ApiResult.ok(tStudentQueryVo);
    }

    /**
     * 分页列表
     */
    @PostMapping("/getPageList")
    @ApiOperation(value = "获取TStudent分页列表", notes = "分页列表", response = TStudentQueryVo.class)
    public ApiResult<Paging<TStudentQueryVo>> getTStudentPageList(@Valid @RequestBody TStudentQueryParam tStudentQueryParam) throws Exception {
        Paging<TStudentQueryVo> paging = tStudentService.getTStudentPageList(tStudentQueryParam);
        return ApiResult.ok(paging);
    }

}


4.2上传部分

/*
 * Copyright 2019-2029 geekidea(https://github.com/geekidea)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.bx.api.controller;

import com.sun.jndi.toolkit.url.UrlUtil;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController;
import io.geekidea.springbootplus.framework.util.IpUtil;
import io.geekidea.springbootplus.framework.util.UploadUtil;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FilenameUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.Map;

/**
 * 上传控制器
 * @author geekidea
 * @date 2019/8/20
 * @since 1.2.1-RELEASE
 */
@Slf4j
@RestController
@RequestMapping("/upload")
public class UploadController extends BaseController {

//    @Autowired
//    private SpringBootPlusProperties springBootPlusProperties;
//    @Autowired
//    private TUploadpathListService tUploadpathListService;
//    @GetMapping("/hello")
//    public ApiResult hello(){
//        log.info("hello...");
//        return ApiResult.ok();
//    }
//
//    /**
//     * 获取系统日志
//     */
//    @PostMapping("/info")
//    @ApiOperation(value = "获取SysLog对象详情",notes = "查看系统日志",response = SysLogQueryVo.class)
//    public ApiResult<SysLogQueryVo> getSysUser(@Valid @RequestBody IdParam idParam) throws Exception{
//        log.info("idParam = " + idParam);
//        return ApiResult.ok();




//    @PostMapping("/showImage")
//    @ApiOperation(value = "预览图片",notes = "预览图片")
//    public void showImage(@RequestParam("img") MultipartFile multipartFile) throws Exception{
//        File fileBase = new File("image.jpg");
//
//    }


    /**
     * 获取头像
     * */
    @RequestMapping("/showImage")
    public void getUserLogo(HttpServletRequest request,
                            HttpServletResponse response, String path) {
        response.setContentType("image/jpeg"); // 设置返回内容格式
        File file = new File(path); // 括号里参数为文件图片路径
        if (file.exists()) { // 如果文件存在
            InputStream in;
            try {
                in = new FileInputStream(file);
                OutputStream os = response.getOutputStream(); // 创建输出流
                byte[] b = new byte[1024];
                while (in.read(b) != -1) {
                    os.write(b);
                }
                in.close();
                os.flush();
                os.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    @Autowired
    Environment environment;
    /**
     * 上传单个文件
     */
    @PostMapping("/upload")
    @ApiOperation(value = "上传单个文件",notes = "上传单个文件",response = ApiResult.class)
    public ApiResult<Boolean> upload(@RequestParam("img") MultipartFile multipartFile) throws Exception{
        String fileRootPath="D:"+"bx/";

        // 上传文件,返回保存的文件名称
        String saveFileName = UploadUtil.upload(fileRootPath, multipartFile, originalFilename -> {
            // 文件后缀
            String fileExtension= FilenameUtils.getExtension(originalFilename);
            // 这里可自定义文件名称,比如按照业务类型/文件格式/日期
            String dateString = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssS"));
            String fileName = dateString + "." +fileExtension;
            return fileName;
        });

        // 项目名称
        String projectFinalName = environment.getProperty("info.project-finalName");
        // 项目版本
        String projectVersion = environment.getProperty("info.project-version");
        // 项目profile
        String profileActive = environment.getProperty("spring.profiles.active");
        // 项目路径
        String contextPath = environment.getProperty("server.servlet.context-path");
        // 项目端口
        String port = environment.getProperty("server.port");

        String homeUrl = "http://" + IpUtil.getLocalhostIp() + ":" + port + contextPath+"/upload/showImage?path=";
//        String homeUrl="http://192.168.3.7:8888/api/upload/showImage?path=D:%5Cpet%5C202102121812112.jpeg";
        // 上传成功之后,返回访问路径,请根据实际情况设置
        String fileAccessPath =homeUrl+fileRootPath+ UrlUtil.encode(saveFileName,"utf-8");
        log.info("fileAccessPath:{}",fileAccessPath);
        Map<String,Object> resultMap=new HashMap<>();
            resultMap.put("path", fileAccessPath);
            return ApiResult.ok(resultMap);
    }
//    @Autowired
//    private SpringBootPlusProperties springBootPlusProperties;


}


获取源码或论文

如需对应的源码,可以评论或者私信都可以。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值