基于uniapp的校园理发预约平台小程序/安卓JAVA.VUE【数据库设计、论文、毕设源码、开题报告】

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

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

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

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

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

 四 系统设计

4.1系统设计总体描述

总体上看,医药校园理发预约APP具有注册登录、个人中心、学生管理、发型师管理、发型师信息管理、预约发型师管理、取消预约管理、理发信息管理、系统管理等功能模块。

系统总体功能结构图如下所示:

图4-1系统总体结构图

4.2数据库设计

4.2.1 数据库系统

构建一个医药校园理发预约App数据库是必不可少的,而我们使用的是MySQL关系数据库,开发工具是时下热门的Navicat for MySQL开发。MySQL有着信息卓越、服务稳定并且开源,可以不用担心费用问题,对于个人的管理及维护上也十分便捷,Navicat有着简洁的界面和稳定的开发环境,还拥有着优秀的图形用户界面。

4.2.2数据库实体及属性

取消预约实体属性图,如图4-2所示。

图4-2取消预约实体属性图

公告信息实体属性图,如图4-3所示。

图4-3公告信息实体属性图

理发信息实体属性图,如图4-4所示。

图4-4理发信息实体属性图

发型师实体属性图,如图4-5所示。

图4-5发型师实体属性图

学生实体属性图,如图4-6所示。

图4-6学生实体属性图

4.2.3数据库设计表

在我们建立数据表的时候,我们需要考虑标语表之间、数据之间的关系,数据库的设计显得尤为重要,它关系着开发软件过程中各个方面的效率、应用、设计。详细信息如下。

表4-1:用户表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

username

varchar

100

用户名

password

varchar

100

密码

role

varchar

100

角色

管理员

addtime

timestamp

新增时间

CURRENT_TIMESTAMP

表4-2: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-3:关于我们

字段名称

类型

长度

字段说明

主键

默认值

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-4:取消预约

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

yuyuebianhao

varchar

200

预约编号

faxingshizhanghao

varchar

200

发型师账号

faxingshixingming

varchar

200

发型师姓名

tupian

longtext

4294967295

图片

quxiaoshijian

date

取消时间

quxiaoyuanyin

longtext

4294967295

取消原因

xueshengzhanghao

varchar

200

学生账号

xueshengxingming

varchar

200

学生姓名

dianhuahaoma

varchar

200

电话号码

sfsh

varchar

200

是否审核

待审核

shhf

longtext

4294967295

审核回复

表4-5:公告信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

title

varchar

200

标题

introduction

longtext

4294967295

简介

picture

longtext

4294967295

图片

content

longtext

4294967295

内容

表4-6:理发信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

lifabianhao

varchar

200

理发编号

faxingshizhanghao

varchar

200

发型师账号

faxingshixingming

varchar

200

发型师姓名

tupian

longtext

4294967295

图片

zhuangtai

varchar

200

状态

lifashijian

date

理发时间

xueshengzhanghao

varchar

200

学生账号

xueshengxingming

varchar

200

学生姓名

dianhuahaoma

varchar

200

电话号码

ispay

varchar

200

是否支付

未支付

表4-7:发型师信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

faxingshizhanghao

varchar

200

发型师账号

faxingshixingming

varchar

200

发型师姓名

tupian

longtext

4294967295

图片

jiage

int

价格

renshu

int

人数(当前人数)

fuwufanwei

varchar

200

服务范围

faxingshigongling

varchar

200

发型师工龄

faxingshijianjie

longtext

4294967295

发型师简介

表4-8:发型师

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

faxingshizhanghao

varchar

200

发型师账号

faxingshixingming

varchar

200

发型师姓名

mima

varchar

200

密码

xingbie

varchar

200

性别

touxiang

longtext

4294967295

头像

dianhuahaoma

varchar

200

电话号码

表4-9:配置文件

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

name

varchar

100

配置参数名称

value

varchar

100

配置参数值

表4-10:预约发型师

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

yuyuebianhao

varchar

200

预约编号

faxingshizhanghao

varchar

200

发型师账号

faxingshixingming

varchar

200

发型师姓名

tupian

longtext

4294967295

图片

renshu

int

人数

yuyueshijian

date

预约时间

xueshengzhanghao

varchar

200

学生账号

xueshengxingming

varchar

200

学生姓名

dianhuahaoma

varchar

200

电话号码

sfsh

varchar

200

是否审核

待审核

shhf

longtext

4294967295

审核回复

表4-11:学生

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

xueshengzhanghao

varchar

200

学生账号

xueshengxingming

varchar

200

学生姓名

mima

varchar

200

密码

xingbie

varchar

200

性别

touxiang

longtext

4294967295

头像

nianling

int

年龄

dianhuahaoma

varchar

200

电话号码

五 App的实现

5.1 App前台功能的实现

5.1.1登录界面的实现

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

图5-1 登录界面

5.1.2注册界面的实现

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

图5-2 注册界面

系统首页是学生注册登录后进入的第一个界面,学生可通过app端首页的最下面的那一行导航栏中的“发型师信息”进入到相应的网页进行操作;点击“我的”进入我的页面,在我的页面可以对预约发型师、取消预约和理发信息等进行详细操作。我的界面如图5-3所示。

图5-3 app我的界面图

发型师信息:在发型师信息界面可以看到发型师详情信息,并根据需要对发型师进行预约操作。发型师信息详情如图5-4所示。

图5-4 发型师信息详情界面图

5.2 APP后台的实现

后台登录,通过填写用户名和密码等信息进行登录操作,如图5-5所示。

图5-5后台登录界面图

5.2.1管理员模块实现

管理员登录进入app可以查看首页、个人中心、学生管理、发型师管理、发型师信息管理、预约发型师管理、取消预约管理、理发信息管理、系统管理等功能进行详细操作,如图5-6所示。

图5-6管理员功能界面图

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

图5-7学生管理界面图

管理员点击发型师管理;在发型师页面输入发型师账号和发型师姓名进行查询,新增或删除发型师列表,并根据需要对发型师信息进行详情,修改和删除操作;如图5-8所示。

图5-8发型师管理界面图

管理员点击预约发型师管理;在预约发型师页面输入发型师账号和选择是否通过进行查询或删除预约发型师列表,并根据需要对预约发型师信息进行详情,修改和删除操作;如图5-9所示。

图5-9预约发型师管理界面图

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实战项目持续更新中~​

👇下方有我的微信名片👇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值