基于微信小程序的大学学生毕业答辩管理平台【全套源码文档】

本文详细描述了一个微信小程序平台上的学生毕业管理系统,包括系统总体设计、数据库设计(涉及实体关系、表结构)以及登录、注册、教师/学生功能和后台管理的实现。代码示例展示了用户登录、注册和部分功能的操作接口。
摘要由CSDN通过智能技术生成

 博主介绍:👉全网个人号和企业号粉丝40W+,每年辅导几千名大学生较好的完成毕业设计,专注计算机软件领域的项目研发,不断的进行新技术的项目实战👈
⭐️热门专栏推荐订阅⭐️ 订阅收藏起来,防止下次找不到

🔎千套JAVA实战项目持续更新中~

🔎上千套小程序实战项目持续更新中~

🔎上千套Python实战项目持续更新中~
有需求的各位可以先收藏起来,还有大家在毕设选题,开题报告有疑惑的都可以找我,给你参考意见,需要开题模板的可以私信留言告诉我

❤️文末获取源码联系❤️        ⚠️一定要先收藏⚠️

第四章 系统设计

4.1 系统总体设计

学生毕业管理小程序的建设可以为学生毕业管理提供帮助,通过对一些基础信息管理实现针对性的安排,可以按照用户的角色权限使不同用户角色看到不一样的信息界面。现根据需求阶段的分析,我们可以大致确定系统需要包含的功能如下图所示:

系统总体结构图如下,见图4-1。

图4-1 系统总体结构图

4.2 数据库设计

数据库能直观反映表现系统的需求,数据库的设计能否切实符合系统的需求关系到整个系统最终的呈现结果。通过之前的分析梳理,明确了系统中需要包含的功能和要求。系统中除了涉及对数据库的增加、删除、查寻、修改的基础操作较多,还要理清实体间的对应关系,据此完成表结构的设计与实现。

4.2.1 数据库逻辑设计

为了更直观阐明数据库的设计,使用 Vision 绘制的基于微信小程序的学生毕业数据模型E-R实体属性图。根据系统需求设计了以下几个主要实体。

4.2.2 数据库表设计

在关系数据E-R图中,分析并创建数据表,数据表用来记录信息,数据表关系由多个数据表组成,下面介绍的是数据表各个字段信息如下表所示。

表4-1:开题答辩

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

jiaoshigonghao

varchar

200

教师工号

jiaoshixingming

varchar

200

教师姓名

renzhixuexiao

varchar

200

任职学校

lianxidianhua

varchar

200

联系电话

xuehao

varchar

200

学号

xueshengxingming

varchar

200

学生姓名

xueshengshouji

varchar

200

学生手机

jiuduxuexiao

varchar

200

就读学校

yuanxi

varchar

200

院系

zhuanye

varchar

200

专业

kaitimingcheng

varchar

200

开题名称

baogaotupian

longtext

4294967295

报告图片

kaitishijian

date

开题时间

kaitibaogao

longtext

4294967295

开题报告

表4-2:教师过程文档

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

jiaoshigonghao

varchar

200

教师工号

jiaoshixingming

varchar

200

教师姓名

zhicheng

varchar

200

职称

guochengbiaoti

varchar

200

过程标题

tianjiashijian

date

添加时间

guochengtupian

longtext

4294967295

过程图片

guochengneirong

longtext

4294967295

过程内容

表4-3:教师

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

jiaoshigonghao

varchar

200

教师工号

mima

varchar

200

密码

jiaoshixingming

varchar

200

教师姓名

xingbie

varchar

200

性别

zhaopian

longtext

4294967295

照片

zhicheng

varchar

200

职称

lianxidianhua

varchar

200

联系电话

renzhixuexiao

varchar

200

任职学校

jiaoshijieshao

longtext

4294967295

教师介绍

表4-4:答辩评审

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

jiaoshigonghao

varchar

200

教师工号

jiaoshixingming

varchar

200

教师姓名

renzhixuexiao

varchar

200

任职学校

lianxidianhua

varchar

200

联系电话

xuehao

varchar

200

学号

xueshengxingming

varchar

200

学生姓名

jiuduxuexiao

varchar

200

就读学校

yuanxi

varchar

200

院系

zhuanye

varchar

200

专业

kaitimingcheng

varchar

200

开题名称

baogaotupian

longtext

4294967295

报告图片

dabianshijian

date

答辩时间

dabianfenshu

int

答辩分数

jiaoshipingjia

longtext

4294967295

教师评价

shifoujige

varchar

200

是否及格

表4-5:学生过程文档

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

xuehao

varchar

200

学号

xueshengxingming

varchar

200

学生姓名

yuanxi

varchar

200

院系

guochengbiaoti

varchar

200

过程标题

tianjiashijian

date

添加时间

guochengtupian

longtext

4294967295

过程图片

guochengneirong

longtext

4294967295

过程内容

表4-6:院校

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

yuanxiao

varchar

200

院校

表4-7:配置文件

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

name

varchar

100

配置参数名称

value

varchar

100

配置参数值

表4-8:学生推优

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

jiaoshigonghao

varchar

200

教师工号

jiaoshixingming

varchar

200

教师姓名

renzhixuexiao

varchar

200

任职学校

lianxidianhua

varchar

200

联系电话

xuehao

varchar

200

学号

xueshengxingming

varchar

200

学生姓名

jiuduxuexiao

varchar

200

就读学校

yuanxi

varchar

200

院系

zhuanye

varchar

200

专业

kaitimingcheng

varchar

200

开题名称

tuiyoutupian

longtext

4294967295

推优图片

tuiyoushijian

date

推优时间

tuiyouliyou

longtext

4294967295

推优理由

表4-9:学生

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

xuehao

varchar

200

学号

mima

varchar

200

密码

xueshengxingming

varchar

200

学生姓名

xingbie

varchar

200

性别

touxiang

longtext

4294967295

头像

xueshengshouji

varchar

200

学生手机

jiuduxuexiao

varchar

200

就读学校

yuanxi

varchar

200

院系

zhuanye

varchar

200

专业

表4-10:毕业论文

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

lunwenbianhao

varchar

200

论文编号

lunwentimu

varchar

200

论文题目

jiaoshigonghao

varchar

200

教师工号

jiaoshixingming

varchar

200

教师姓名

xuehao

varchar

200

学号

xueshengxingming

varchar

200

学生姓名

lunwenwenjian

longtext

4294967295

论文文件

fengmiantupian

longtext

4294967295

封面图片

tijiaoshijian

datetime

提交时间

lunwenjianjie

longtext

4294967295

论文简介

表4-11:用户表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

username

varchar

100

用户名

password

varchar

100

密码

role

varchar

100

角色

管理员

addtime

timestamp

新增时间

CURRENT_TIMESTAMP

表4-12:关于我们

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

title

varchar

200

标题

subtitle

varchar

200

副标题

content

longtext

4294967295

内容

picture1

longtext

4294967295

图片1

picture2

longtext

4294967295

图片2

picture3

longtext

4294967295

图片3

表4-13:token表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

userid

bigint

用户id

username

varchar

100

用户名

tablename

varchar

100

表名

role

varchar

100

角色

token

varchar

200

密码

addtime

timestamp

新增时间

CURRENT_TIMESTAMP

expiratedtime

timestamp

过期时间

CURRENT_TIMESTAMP

表4-14:师生双选

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

jiaoshigonghao

varchar

200

教师工号

jiaoshixingming

varchar

200

教师姓名

zhaopian

longtext

4294967295

照片

renzhixuexiao

varchar

200

任职学校

lianxidianhua

varchar

200

联系电话

xuehao

varchar

200

学号

xueshengxingming

varchar

200

学生姓名

xueshengshouji

varchar

200

学生手机

jiuduxuexiao

varchar

200

就读学校

yuanxi

varchar

200

院系

zhuanye

varchar

200

专业

xuanzeshijian

date

选择时间

gerenjianjie

longtext

4294967295

个人简介

sfsh

varchar

200

是否审核

待审核

shhf

longtext

4294967295

审核回复

表4-15:公告信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

title

varchar

200

标题

introduction

longtext

4294967295

简介

picture

longtext

4294967295

图片

content

longtext

4294967295

内容

4.3 本章小结

这一章着重介绍了整个系统的设计流程。确定了系统的功能结构,并在此基础上完成了数据库的设计。

第五章 详细设计与实现

5.1系统前台功能的实现

5.1.1登录界面的实现

首先双击打开微信小程序客户端系统,连上网络之后会显示出本系统的登录界面,这是进入小程序的第初始页面“登录”,能成功进入到该登录界面则代表小程序的开启是成功的,接下来就可以操作本系统所带有的其他所有的功能。登录界面如图5-1所示。

图5-1 登录界面

5.1.2注册界面的实现

第一次使用本小程序的使用者,首先是要进行注册,点击“注册”,然后就会进入到注册的页面里面,将学生信息录入注册表,确认信息正确后,系统才会进入登录界面,学生登录成功后可使用本小程序所提供的所有功能。注册界面如图5-2所示。

图5-2 注册界面

5.1.3小程序首页功能的实现

小程序首页是用户注册登录后进入的第一个界面,在这里,人们能够看到小程序的导航条,内容包括首页,教师,学生推优,我的等。系统首页界面如图5-3所示。

图5-3 小程序首页界面图

教师:在教师界面输入教师工号进行搜索,可以查看到教师姓名、职称、任职学校、教师工号、性别、联系电话等信息,按照提示即可完成选择教师操作。教师页面如图5-4所示。

图5-4教师详情界面图

5.1.4学生功能

学生登录成功后,点击“我的”进入我的页面,在我的页面可以对教师,师生双选,开题答辩,答辩评审,学生推优,学生过程文档等进行详细操作。学生功能界面如图5-5所示。

图5-5学生功能界面图

5.1.5教师功能

教师登录成功后,点击“我的”进入我的页面,在我的页面可以对师生双选,开题答辩,答辩评审,学生推优,教师过程文档等进行详细操作。教师功能界面如图5-6所示。

图5-6教师功能界面图

5.2后台管理员功能的实现

管理员登录,在登录页面正确输入用户名和密码后,进入操作系统进行操作,如图5-7所示。

图5-7管理员登录界面图

管理员登录进入小程序可以查看系统首页,个人中心,学生管理,教师管理,师生双选管理,院校管理,开题答辩管理,答辩评审管理,学生推优管理,学生过程文档管理,教师过程文档管理,系统管理等功能进行详细操作,如图5-8所示。

图5-8管理员主界面图

代码实现

package com.controller;
 
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
 
import javax.servlet.http.HttpServletRequest;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
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.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
 
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;
 
/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;
 
	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }
 
	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }
 
    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
 
    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
    	UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
    	if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
    		return R.error("用户名已存在。");
    	}
        userService.updateById(user);//全部更新
        return R.ok();
    }
 
    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

源码获取

大家点赞、收藏、关注 ,让更多需要的同学看到

不同开发语言专栏推荐订阅

 🔎千套JAVA实战项目持续更新中~

🔎上千套小程序实战项目持续更新中~

 🔎上千套Python实战项目持续更新中~

👇下方有我的微信名片👇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值