基于JAVA的高校学生饮食推荐高校美食订餐系统【论文、源码、开题报告】

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

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

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

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

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

4 系统软件的总体设计

4.1系统的基本要求

(1)功能要求:管理人员可以管理系统首页、个人中心、学生管理、商家管理、菜品分类管理、菜品信息管理、留言板管理、论坛管理、系统管理等进行管理 [3]。

(2)性能:可以准确无误的在不同的操作系统中登录到商家、学生或者管理员的相应界面进行轻松的操作[4]。

(3)环境要求:支持不同的操纵系统和不同的平台,可用于Windows系列、Vista系统等多种操作系统。

4.2 系统开发目标

本高校学生饮食推荐系统的主要开发目标如下:

(1)减少后台管理人员的工作量,对学生的信息进行系统的管理;

(2)必须要方便快捷的查看搜索信息并管理信息;

(3)用户是具有多样性的,所以界面要设置的简单明了,操作更要方便快捷。

4.3 系统总体架构设计

本系统使用的数据库为MySQL数据库[10],选择该数据库的原因是因为该数据库开源、免费,且相对简便,且由于使用人数众多,在处理问题上会得到更多已知的帮助。本系统作为一个高校学生饮食推荐系统,其体量并不会很大,也很适合MySQL数据库的特点。综上所述,本项目采用MySQL作为本项目的数据库和进行数据表的设计。

如图4-1是该系统软件的总体功能结构图:

4-1 总体功能结构图

4.4 系统数据库的设计

4.4.1数据库设计原则

要学习程序设计,如果您想了解数据库管理系统或根据需要开发的系统接口,则必须创建一个数据库管理系统模型来存储数据。这样就不需要在应用程序编程期间将信息加载到操作系统页面中,从而提高了整个系统的效率。信息数据库管理系统中存储着大量的数据,可以说是管理信息系统建设的中心和基础。该信息库管理系统还提供了管理信息系统建设中添加、删除、修改和搜索的操作功能,使管理信息系统建设可以快速查询所需数据,而不是直接从程序代码中查找。信息库管理系统将信息表的各个组成部分按照具体的方法进行组合,准确地组合、分类并构成信息库管理系统。

4.4.2数据库E/R图

ER图是由实体及其关系构成的图,通过E/R图可以清楚地描述系统涉及到的实体之间的相互关系。在系统中对一些主要的几个关键实体如下图:

(1) 菜品信息实体属性图如下所示:

图4-2菜品信息实体属性

 (2) 关于我们实体属性图如下所示:

图4-3关于我们实体属性

(3) 留言板实体属性图如下所示:

图4-4留言板实体属性

(4) 论坛表实体属性图如下所示:

图4-5论坛表实体属性

(5) 菜品信息评论表实体属性图如下所示:

图4-6菜品信息评论表实体属性

(6) 菜品分类实体属性图如下所示:

4.4.3 数据库表

该系统采用的数据库是MySQL,根据该系统的数据存储特点进行数据库关系表的设计。下面是该系统中关键部分关系表的详细信息。

表4-1购物车表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

tablename

varchar

200

商品表名

caipinxinxi

userid

bigint

用户id

goodid

bigint

商品id

goodname

varchar

200

商品名称

picture

longtext

4294967295

图片

buynumber

int

购买数量

price

float

单价

discountprice

float

会员价

shangjiazhanghao

varchar

200

商户名称

goodtype

varchar

200

商品类型

表4-2token表

字段名称

类型

长度

字段说明

主键

默认值

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

caipinmingcheng

varchar

200

菜品名称

caipinfenlei

varchar

200

菜品分类

caipinfengmian

longtext

4294967295

菜品封面

kouwei

varchar

200

口味

cailiao

varchar

200

材料

yingyangchengfen

varchar

200

营养成分

zhizuogongyi

varchar

200

制作工艺

caipinxiangqing

longtext

4294967295

菜品详情

shangjiazhanghao

varchar

200

商家账号

shangjiamingcheng

varchar

200

商家名称

shangjiadizhi

varchar

200

商家地址

lianxishouji

varchar

200

联系手机

onelimittimes

int

单限

alllimittimes

int

库存

thumbsupnum

int

0

crazilynum

int

0

clicktime

datetime

最近点击时间

price

float

价格

表4-4:关于我们

字段名称

类型

长度

字段说明

主键

默认值

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-5:收藏表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

userid

bigint

用户id

refid

bigint

商品id

tablename

varchar

200

表名

name

varchar

200

名称

picture

longtext

4294967295

图片

type

varchar

200

类型(1:收藏,21:赞,22:踩,31:竞拍参与,41:关注)

1

inteltype

varchar

200

推荐类型

remark

varchar

200

备注

4-6:地址

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

userid

bigint

用户id

address

varchar

200

地址

name

varchar

200

收货人

phone

varchar

200

电话

isdefault

varchar

200

是否默认地址[是/否]

表4-7:关于我们

字段名称

类型

长度

字段说明

主键

默认值

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-17:学生

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

xuehao

varchar

200

学号

mima

varchar

200

密码

xueshengxingming

varchar

200

学生姓名

xingbie

varchar

200

性别

youxiang

varchar

200

邮箱

shoujihaoma

varchar

200

手机号码

zhuanye

varchar

200

专业

banjimingcheng

varchar

200

班级名称

touxiang

longtext

4294967295

头像

money

float

余额

0

5 系统软件功能的具体实现

5.1学生系统功能实现

系统注册登录功能是程序必不可少的功能,在注册登录页面填写相关信息注册成功后,学生点击登录就可以进入系统后台功能操作区。学生注册登录页面如图5-1所示

图5-1 学生注册登录界面

学生登录打开系统的网址后,首先看到的就是首页界面。在这里,人们能够看到系统的导航条,通过导航条导航进入各功能展示页面进行操作。学生功能界面如图5-2所示

图5-2学生功能页面

个人中心:在个人中心页面可以对学号、密码、学生姓名、性别、邮箱、手机号码、专业、班级名称、头像、余额进行更新,还可以充值,并且可以对我的订单、我的地址、我的收藏进行操作。个人中心页面如图5-3所示:

图5-3个人中心详细页面

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

👇下方有我的微信名片👇

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值