基于springboot的同城家教系统-开题免费【论文、源码】

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

🔎​百套小程序APP项目实战持续更新中~​

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

🔎​百套Python实战项目持续更新中~​
有需求的各位可以先收藏起来,还有大家在毕设选题,开题报告有疑惑的都可以找我,帮你完成文档

⚠️文末联系方式获取完整资料⚠️

4 系统总体设计

4.1系统功能结构设计图

系统采用了结构化开发的方法。这种开发方法的优点是控制性比较强,开发过程中采用了结构化和模块化的设计思想,自顶向下,从总体到部分,合理划分系统的结构和模块。结构化开发时使用模块式开发,各模块之间互不影响,方便系统的开发与管理。 系统总体功能如下图所示:

图 4-1系统总体功能模块图

4.2 数据库设计与实现

在每一个系统中数据库有着非常重要的作用,数据库的设计得好将会增加系统的效率以及系统各逻辑功能的实现。所以数据库的设计我们要从系统的实际需要出发,才能使其更为完美的符合系统功能的实现。

4.2.1 概念模型设计

概念模型是对现实中的问题出现的事物的进行描述,ER图是由实体及其关系构成的图,通过E-R图可以清楚地描述系统涉及到的实体之间的相互关系。

用户实体图如图4-2所示:

图4-2用户实体图

家教老师实体图如图4-3所示:

图4-3家教老师实体图

家教招聘实体图如图4-4所示:

图4-4家教招聘实体图

课程信息实体图如图4-5所示:

图4-5课程信息实体图

家教评价实体图如图4-6所示:

图4-6家教评价实体图

4.2.2 系统数据表设计

数据库表的设计通常是根据业务逻辑设置的。数据库模型在数据库中设计,并根据模型创建数据库表。数据库包涵了以下数据表来实现了对数据库的存储、调用。以下分别列出数据表的每个字段名称、类型、长度、字段说明、主键、默认值

表4-1 address表

列名

数据类型

长度

约束

id

int

11

NOT NULL

addtime

varchar

50

default NULL

kechengleibie

varchar

50

default NULL

表4-2:cart表

列名

数据类型

长度

约束

id

int

11

NOT NULL

addtime

varchar

50

default NULL

kechengmingcheng

varchar

50

default NULL

kechengtupian

varchar

50

default NULL

kechengleibie

varchar

50

default NULL

shangkeshijian

varchar

50

default NULL

keshijiage

varchar

50

default NULL

gongzuozhuangtai

varchar

50

default NULL

jiaoshigonghao

varchar

50

default NULL

jiaoshixingming

varchar

50

default NULL

xingbie

varchar

50

default NULL

xueli

varchar

50

default NULL

lianxidianhua

varchar

50

default NULL

表4-3:discussshangpinxinxi表

列名

数据类型

长度

约束

id

int

11

NOT NULL

addtime

varchar

50

default NULL

title

varchar

50

default NULL

introduction

varchar

50

default NULL

picture

varchar

50

default NULL

content

varchar

50

default NULL

表4-4:messages表

列名

数据类型

长度

约束

id

int

11

NOT NULL

addtime

varchar

50

default NULL

userid

varchar

50

default NULL

refid

varchar

50

default NULL

tablename

varchar

50

default NULL

name

varchar

50

default NULL

picture

varchar

50

default NULL

type

varchar

50

default NULL

inteltype

varchar

50

default NULL

remark

varchar

50

default NULL

表4-5:orders表

列名

数据类型

长度

约束

id

int

11

NOT NULL

userid

varchar

50

default NULL

username

varchar

2

default NULL

tablename

varchar

50

default NULL

role

varchar

50

default NULL

token

varchar

50

default NULL

addtime

varchar

50

default NULL

expiratedtime

varchar

50

default NULL

表4-6:shangpinleixing表

列名

数据类型

长度

约束

id

int

11

NOT NULL

username

varchar

50

default NULL

password

varchar

50

default NULL

role

int

11

NOT NULL

addtime

varchar

50

default NULL

表4-7:shangpinxinxi表

列名

数据类型

长度

约束

id

int

11

NOT NULL

addtime

varchar

50

default NULL

kechengmingcheng

varchar

50

default NULL

kechengtupian

varchar

50

default NULL

fudaojiage

varchar

50

default NULL

xueli

varchar

50

default NULL

zhuanye

varchar

50

default NULL

gerenjianli

varchar

50

default NULL

yingpinliuyan

varchar

50

default NULL

jiaoshigonghao

varchar

50

default NULL

jiaoshixingming

varchar

50

default NULL

lianxidianhua

varchar

50

default NULL

yingpinshijian

varchar

50

default NULL

sfsh

varchar

50

default NULL

shhf

varchar

50

default NULL

表4-8:sale表

列名

数据类型

长度

约束

id

int

11

NOT NULL

addtime

varchar

50

default NULL

yonghuzhanghao

varchar

50

default NULL

mima

varchar

50

default NULL

yonghuxingming

varchar

50

default NULL

touxiang

varchar

50

default NULL

xingbie

varchar

50

default NULL

jiatingzhuzhi

varchar

50

default NULL

lianxifangshi

varchar

50

default NULL

表4-9:storeup表

列名

数据类型

长度

约束

id

int

11

NOT NULL

addtime

varchar

50

default NULL

kechengleibie

varchar

50

default NULL

表4-10:users表

列名

数据类型

长度

约束

id

int

11

NOT NULL

addtime

varchar

50

default NULL

xiangcemingcheng

varchar

50

default NULL

xiangceleixing

varchar

50

default NULL

didian

varchar

50

default NULL

tianqi

int

11

NOT NULL

renwu

varchar

50

default NULL

yonghuming

varchar

50

default NULL

shijian

varchar

50

default NULL

fengmian

varchar

50

default NULL

neirong

int

11

NOT NULL

表4-10:yonghu表

列名

数据类型

长度

约束

id

int

11

NOT NULL

addtime

varchar

50

default NULL

dingdanbianhao

varchar

50

default NULL

kechengmingcheng

varchar

50

default NULL

kechengtupian

varchar

50

default NULL

jiaoshigonghao

varchar

50

default NULL

jiaoshixingming

varchar

50

default NULL

lianxidianhua

varchar

50

default NULL

keshijiage

varchar

50

default NULL

yudingkeshi

varchar

50

default NULL

zongjine

varchar

50

default NULL

yuyueshijian

varchar

50

default NULL

yonghuzhanghao

varchar

50

default NULL

yonghuxingming

varchar

50

default NULL

lianxifangshi

varchar

50

default NULL

jiatingzhuzhi

varchar

50

default NULL

shhf

varchar

50

default NULL

ispay

varchar

50

default NULL

表4-11:yonghu表

列名

数据类型

长度

约束

id

int

11

NOT NULL

addtime

varchar

50

default NULL

kechengmingcheng

varchar

50

default NULL

kechengtupian

varchar

50

default NULL

xueliyaoqiu

varchar

50

default NULL

zhuanyeyaoqiu

varchar

50

default NULL

fudaoxuqiu

varchar

50

default NULL

fudaojiage

varchar

50

default NULL

fudaoshijian

varchar

50

default NULL

zhaopinxiangqing

varchar

50

default NULL

fabushijian

varchar

50

default NULL

clicktime

varchar

50

default NULL

clicknum

varchar

50

default NULL

表4-12:yonghu表

列名

数据类型

长度

约束

id

int

11

NOT NULL

addtime

varchar

50

default NULL

kechengmingcheng

varchar

50

default NULL

kechengtupian

varchar

50

default NULL

xueliyaoqiu

varchar

50

default NULL

zhuanyeyaoqiu

varchar

50

default NULL

fudaoxuqiu

varchar

50

default NULL

fudaojiage

varchar

50

default NULL

fudaoshijian

varchar

50

default NULL

zhaopinxiangqing

varchar

50

default NULL

fabushijian

varchar

50

default NULL

clicktime

varchar

50

default NULL

clicknum

varchar

50

default NULL

表4-13:yonghu表

列名

数据类型

长度

约束

id

int

11

NOT NULL

addtime

varchar

50

default NULL

dingdanbianhao

varchar

50

default NULL

jiaoxuefangfa

varchar

50

default NULL

jiaoxuetaidu

varchar

50

default NULL

shifoumanyi

varchar

50

default NULL

pingjiaxiangqing

varchar

50

default NULL

jiaoshigonghao

varchar

50

default NULL

jiaoshixingming

varchar

50

default NULL

yonghuzhanghao

varchar

50

default NULL

yonghuxingming

varchar

50

default NULL

crossuserid

varchar

50

default NULL

crossrefid

varchar

50

default NULL

表4-14:yonghu表

列名

数据类型

长度

约束

id

int

11

NOT NULL

addtime

varchar

50

default NULL

jiaoshigonghao

varchar

50

default NULL

mima

varchar

50

default NULL

jiaoshixingming

varchar

50

default NULL

touxiang

varchar

50

default NULL

xingbie

varchar

50

default NULL

xueli

varchar

50

default NULL

zhuanye

varchar

50

default NULL

jiaoshiyouxiang

varchar

50

default NULL

lianxidianhua

varchar

50

default NULL

表4-15:yonghu表

列名

数据类型

长度

约束

id

int

11

NOT NULL

addtime

varchar

50

default NULL

refid

varchar

50

default NULL

userid

varchar

50

default NULL

avatarurl

varchar

50

default NULL

nickname

varchar

50

default NULL

content

varchar

50

default NULL

reply

varchar

50

default NULL

表4-16:yonghu表

列名

数据类型

长度

约束

id

int

11

NOT NULL

addtime

varchar

50

default NULL

refid

varchar

50

default NULL

userid

varchar

50

default NULL

avatarurl

varchar

50

default NULL

nickname

varchar

50

default NULL

content

varchar

50

default NULL

reply

varchar

50

default NULL

表4-17:yonghu表

列名

数据类型

长度

约束

id

int

11

NOT NULL

name

varchar

50

default NULL

value

varchar

50

default NULL

4.3小结

本章刚开始总结了整个系统的总体功能,以树型图展示出来,使得看上去更加清晰明朗,而后介绍了每一个模型的属性和对数据库表的设计。


5 系统详细设计与实现

按照软件工程的流程来说,在系统的详细设计与实现阶段,要把模块、视图、模板进行相应的组合完成一个个所需的功能,此章将会把设计中模块一一说明如何设计和实现的。

5.1系统功能实现

当人们打开系统的网址后,首先看到的就是首页界面。在这里,人们能够看到同城家教系统的导航条和家教招聘推荐等,通过导航条导航进入各功能展示页面进行操作。系统首页界面如图5-1所示

图5-1 系统首页界面

系统注册:在系统注册页面的输入栏中输入用户注册信息进行注册操作,系统注册页面如图5-2所示:

图5-2系统注册页面

课程信息:在课程信息页面的输入栏中输入课程名称、学历要求、专业要求、辅导需求、辅导价格、辅导时间和发布时间进行查询,可以查看到课程详细信息,并进行评论或收藏操作,课程信息页面如图5-3所示:

图5-3课程信息详细页面

个人中心:在个人中心页面输入对个人信息进行更新信息操作;并根据需要对我的收藏进行操作,如图5-4所示:

图5-4个人中心界面

5.2后台模块实现

后台用户登录,在登录页面选择需要登录的角色,在正确输入用户名和密码后,进入操作系统进行操作;如图5-5所示。

图5-5后台登录界面

5.2.1管理员模块实现

管理员进入主页面,主要功能包括对首页、个人中心、用户管理、家教老师管理、家教招聘管理、应聘信息管理、课程类别管理、课程信息管理、课程订单管理、家教评价管理、系统管理等进行操作。管理员主页面如图5-6所示:

图5-6管理员主界面

管理员点击用户管理。在用户页面输入用户账号、用户姓名和选择性别进行查询、新增或删除用户列表,并根据需要对用户详情信息进行修改或删除操作;如图5-7所示:

图5-7用户管理界面

JAVA后端代码实现

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

源码获取

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

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

 🔎​百套小程序APP项目实战持续更新中~​

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

🔎​百套Python实战项目持续更新中~​

👇下方有我的微信名片👇

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值