本文介绍: 校园点餐系统小程序采用B/S模式采用JAVA语言springboot框架mysql数据库小程序框架uniapp等开工具,促进了校园点餐系统小程序业务发展。与传统线下点餐相比,校园点餐系统小程序不但节省卖家的线下运营成本门店曝光等难题,对学生而言提供了足不出户送餐上门服务针对现代校园而言,出门用餐路程远,排队麻烦等问题,特开发校园点餐系统小程序实现校园点餐计算机化也是顺应时代潮流的举措,现如今餐饮种类正逐渐增加,浩繁的餐饮信息令校园餐饮业迎来管理上的难题

博主介绍全网粉丝30W+,csdn特邀作者博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战

🍅文末获取源码联系🍅

👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟

2022-2024年最全的计算机软件毕业设计选题大全:1000个热门选题推荐✅

Java项目精品实战案例《100套》

Java微信小程序项目实战《100套》

感兴趣可以收藏起来,还有大家毕设选题项目以及论文编写相关问题可以给我留言咨询,希望帮助更多的人

目录

一、 前言介绍:

二 、功能设计:

三、功能实现:

用户系统功能模块

管理员功能模块

卖家功能模块

四、库表设计:

五、关键代码:

六、论文参考:

七、其他案例: 

八、源码获取:


一、 前言介绍

    校园点餐系统小程序采用B/S模式采用JAVA语言springboot框架mysql数据库小程序框架uniapp等开工具,促进了校园点餐系统小程序业务发展。与传统线下点餐相比,校园点餐系统小程序不但节省卖家的线下运营成本门店曝光等难题,对学生而言提供了足不出户送餐上门服务针对现代校园而言,出门用餐路程远,排队麻烦等问题,特开发校园点餐系统小程序。

    实现校园点餐的计算机化也是顺应时代潮流的举措,现如今餐饮种类正逐渐增加,浩繁的餐饮信息令校园餐饮业迎来管理上的难题餐饮行业进入高速发展时代,餐饮业的管理工作变得越来越困难,在这一客观需要的推动下,建立、完善、发展在线校园点餐系统小程序,可以为校园餐饮业管理者带来极大的方便。

本系统即为方便餐饮店管理者客户制作的校园校园点餐系统小程序,结合了餐饮店和客户需求设计出的一个基于springboot框架、JAVA语言、MySQL数据库技术的校园点餐系统小程序。

二 、功能设计

网站可以分为:注册用户使用功能、卖家进行管理功能管理员进行管理的功能。

管理员管理功能:首页网站管理轮播图、公告信息)、人员管理管理员、注册用户、卖家)、内容管理美食资讯)、购物管理(餐品信息分类列表订单列表)、模块管理(我的好友订单状态、营业分析、餐品推荐)、个人管理等功能。

用户使用功能:首页关于我们、餐品信息、餐品推荐、购物车、美食资讯、我的(基本信息、收货地址收藏订单购物车,我的好友、订单状态)等功能。

卖家管理功能:首页购物管理(餐品信息、订单列表)、模块管理(订单状态、营业分析、餐品推荐)、个人管理等功能。

三、功能实现

用户系统功能模块

校园点餐系统小程序,在系统注册页面填写用户信息用户名密码、姓名、性别、邮箱手机内容进行注册操作如图5-1所示

图5-1用户注册界面

   在小程首页页面可以用户功能首页、联系方式购物车、美食资讯、我的等,如图5-2所示

图5-2 小程序系统界面

在我的页面可以查看基本信息、收货地址收藏、订单、购物车,我的好友、订单状态等功能,如图5-3所示。

图5-3 我的界面

在美食资讯详情界面用户可以查看资讯详情,并可进行点赞收藏评论操作如图5-4所示。

图5-4 美食资讯详情界面

用户点击产品详情可以查看菜品信息菜品名称、口味、价格、原材料、店铺名称商品属性内容,还可在该页面进行菜品收藏、加入购物车、立即购买等操作,如图5-5所示。

图5-5 产品详情界面

用户在餐品信息页面可以浏览餐品图片、餐品名称、价格等信息,并可以选中感兴趣的餐品加入购物车,如图5-6所示。

图5-6 餐品信息界面

在订单详情页面中可以查看已付款、未付款订单、需付款、订单编号下单时间等信息,如图5-7所示。

图5-7 订单详情界面

管理员功能模块

管理员登录页面添加登录信息用户名密码角色等进行登录,如图5-8所示。

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

管理员功能页面中可以查看功能分为首页网站管理(轮播图、公告信息)、人员管理(管理员、注册用户、卖家)、内容管理(美食资讯)、购物管理(餐品信息、分类列表、订单列表)、模块管理(我的好友、订单状态、营业分析、餐品推荐)、个人管理等功能,并可进行相应操作,如图5-9所示。

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

在用户管理页面中可以查看昵称用户名商家编号店铺名称、负责人、创建时间更新时间等信息进行详情、添加修改删除等操作,如图5-10所示。

图5-10用户管理界面图

在美食资讯管理页面中可以对标题封面图、文章分类标签等信息进行添加修改或删除等操作,如图5-11所示。

图5-11美食资讯管理界面图

在订单状态管理页面可以查看订单情号、商品名称、商品编号、用户编号、姓名、联系电话、收货地址记录时间内容,还可进行详情、修改添加或删除等操作,如图5-12所示。

图5-12 订单状态管理界面图

卖家功能模块

在餐品推荐页面可以添加餐品名称、图片类型、口味、原材料、商家编号店铺名称、创建时间内容,还可进行详情、修改添加或删除等操作,如图5-13所示。

图5-13 餐品推荐界面图

在营业分析页面可以添加标题、商家编号店铺名称、绒计时间收入总额、备注创建时间内容,还可进行详情、修改、添加或删除等操作,如图5-14所示。

图5-14 营业分析界面图

四、库表设计

一个好的系统它的后台数据库一定要考虑的全面,这和我们建造房子一个概念房子不是随心所欲建起来的,一切都是在合理设计的基础是实现的,地基打牢固了房子才能建的更高。数据库如果设计的很合理,而且每个方面都能考虑到了那么这个系统才能不会出现大的问题

学习编程我们知道数据库设计基于需要设计的系统功能,我们需要建立一个数据库关系模型用于存储数据信息,这样当我们在程序中时,就没有必要为程序页面添加数据,从而提高系统的效率数据库存储很多信息,可以说是信息管理系统核心和基础,数据库还为系统提供了添加、删除、修改检查等操作模块,使系统能够快速找到自己想要的信息,而不是在程序代码找到数据中信息表的每个部分根据一定的关系精确组合排列组合数据表系统ER图如下图所示

五、关键代码

 

/**
 * 用户账户:用于保存用户登录信息(User)表控制层
 */
@Slf4j
@RestController
@RequestMapping("user")
public class UserController extends BaseController<User, UserService> {
    /**
     * 服务对象
     */
    @Autowired
    public UserController(UserService service) {
        setService(service);
    }

    /**
     * Token服务
     */
    @Autowired
    private AccessTokenService tokenService;

    @Autowired
    private UserGroupService userGroupService;

    /**
     * 注册
     * @param user
     * @return
     */
    @PostMapping("register")
    public Map<String, Object&gt; signUp(@RequestBody User user) {
        // 查询用户
        Map<String, String&gt; query = new HashMap<&gt;();
        query.put("username",user.getUsername());
        List list = service.select(query, new HashMap<&gt;()).getResultList();
        if (list.size()>0){
            return error(30000, "用户已存在");
        }
        user.setUserId(null);
        user.setPassword(service.encryption(user.getPassword()));
        service.save(user);
        return success(1);
    }

    /**
     * 找回密码
     * @param form
     * @return
     */
    @PostMapping("forget_password")
    public Map<String, Object> forgetPassword(@RequestBody User form,HttpServletRequest request) {
        JSONObject ret = new JSONObject();
        String username = form.getUsername();
        String code = form.getCode();
        String password = form.getPassword();
        // 判断条件
        if(code == null || code.length() == 0){
            return error(30000, "验证码不能为空");
        }
        if(username == null || username.length() == 0){
            return error(30000, "用户名不能为空");
        }
        if(password == null || password.length() == 0){
            return error(30000, "密码不能为空");
        }

        // 查询用户
        Map<String, String> query = new HashMap<>();
        query.put("username",username);
        Query select = service.select(query, service.readConfig(request));
        List list = select.getResultList();
        if (list.size() > 0) {
            User o = (User) list.get(0);
            JSONObject query2 = new JSONObject();
            JSONObject form2 = new JSONObject();
            // 修改用户密码
            query2.put("user_id",o.getUserId());
            form2.put("password",service.encryption(password));
            service.update(query, service.readConfig(request), form2);
            return success(1);
        }
        return error(70000,"用户不存在");
    }

    /**
     * 登录
     * @param data
     * @param httpServletRequest
     * @return
     */
    @PostMapping("login")
    public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
        log.info("[执行登录接口]");

        String username = data.get("username");
        String email = data.get("email");
        String phone = data.get("phone");
        String password = data.get("password");

        List resultList = null;
        Map<String, String> map = new HashMap<>();
        if(username != null &amp;&amp; "".equals(username) == false){
            map.put("username", username);
            resultList = service.select(map, new HashMap<>()).getResultList();
        }
        else if(email != null &amp;&amp; "".equals(email) == false){
            map.put("email", email);
            resultList = service.select(map, new HashMap<>()).getResultList();
        }
        else if(phone != null &amp;&amp; "".equals(phone) == false){
            map.put("phone", phone);
            resultList = service.select(map, new HashMap<>()).getResultList();
        }else{
            return error(30000, "账号密码不能为空");
        }
        if (resultList == null || password == null) {
            return error(30000, "账号或密码不能为空");
        }
        //判断是否这个用户
        if (resultList.size()<=0){
            return error(30000,"用户不存在");
        }

        User byUsername = (User) resultList.get(0);


        Map<String, String> groupMap = new HashMap<>();
        groupMap.put("name",byUsername.getUserGroup());
        List groupList = userGroupService.select(groupMap, new HashMap<>()).getResultList();
        if (groupList.size()<1){
            return error(30000,"用户组存在");
        }

        UserGroup userGroup = (UserGroup) groupList.get(0);

        //查询用户审核状态
        if (!StringUtils.isEmpty(userGroup.getSourceTable())){
            String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();
            String res = String.valueOf(service.runCountSql(sql).getSingleResult());
            if (res==null){
                return error(30000,"用户不存在");
            }
            if (!res.equals("已通过")){
                return error(30000,"该用户审核未通过");
            }
        }

        //查询用户状态
        if (byUsername.getState()!=1){
            return error(30000,"用户非可用状态,不能登录");
        }

        String md5password = service.encryption(password);
        if (byUsername.getPassword().equals(md5password)) {
            // 存储Token数据库
            AccessToken accessToken = new AccessToken();
            accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
            accessToken.setUser_id(byUsername.getUserId());
            tokenService.save(accessToken);

            // 返回用户信息
            JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
            user.put("token", accessToken.getToken());
            JSONObject ret = new JSONObject();
            ret.put("obj",user);
            return success(ret);
        } else {
            return error(30000, "账号或密码不正确");
        }
    }

    /**
     * 修改密码
     * @param data
     * @param request
     * @return
     */
    @PostMapping("change_password")
    public Map<String, Object> change_password(@RequestBody Map<String, String> data, HttpServletRequest request){
        // 根据Token获取UserId
        String token = request.getHeader("x-auth-token");
        Integer userId = tokenGetUserId(token);
        // 根据UserId和旧密码获取用户
        Map<String, String> query = new HashMap<>();
        String o_password = data.get("o_password");
        query.put("user_id" ,String.valueOf(userId));
        query.put("password" ,service.encryption(o_password));
        Query ret = service.count(query, service.readConfig(request));
        List list = ret.getResultList();
        Object s = list.get(0);
        int count = Integer.parseInt(list.get(0).toString());
        if(count > 0){
            // 修改密码
            Map<String,Object> form = new HashMap<>();
            form.put("password",service.encryption(data.get("password")));
            service.update(query,service.readConfig(request),form);
            return success(1);
        }
        return error(10000,"密码修改失败!");
    }

    /**
     * 登录态
     * @param request
     * @return
     */
    @GetMapping("state")
    public Map<String, Object> state(HttpServletRequest request) {
        JSONObject ret = new JSONObject();
        // 获取状态
        String token = request.getHeader("x-auth-token");

        // 根据登录态获取用户ID
        Integer userId = tokenGetUserId(token);

        log.info("[返回userId] {}",userId);
        if(userId == null || userId == 0){
            return error(10000,"用户未登录!");
        }

        // 根据用户ID获取用户
        Map<String,String> query = new HashMap<>();
        query.put("user_id" ,String.valueOf(userId));

        // 根据用户ID获取
        Query select = service.select(query,service.readConfig(request));
        List resultList = select.getResultList();
        if (resultList.size() > 0) {
            JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(resultList.get(0)));
            user.put("token",token);
            ret.put("obj",user);
            return success(ret);
        } else {
            return error(10000,"用户未登录!");
        }
    }

    /**
     * 登录态
     * @param request
     * @return
     */
    @GetMapping("quit")
    public Map<String, Object> quit(HttpServletRequest request) {
        String token = request.getHeader("x-auth-token");
        JSONObject ret = new JSONObject();
        Map<String, String> query = new HashMap<>(16);
        query.put("token", token);
        try{
            tokenService.delete(query,service.readConfig(request));
        }catch (Exception e){
            e.printStackTrace();
        }
        return success("退出登录成功!");
    }

    /**
     * 获取登录用户ID
     * @param token
     * @return
     */
    public Integer tokenGetUserId(String token) {
        log.info("[获取的token] {}",token);
        // 根据登录态获取用户ID
        if(token == null || "".equals(token)){
            return 0;
        }
        Map<String, String> query = new HashMap<>(16);
        query.put("token", token);
        AccessToken byToken = tokenService.findOne(query);
        if(byToken == null){
            return 0;
        }
        return byToken.getUser_id();
    }

    /**
     * 重写add
     * @return
     */
    @PostMapping("/add")
    @Transactional
    public Map<String, Object> add(HttpServletRequest request) throws IOException {
        Map<String,Object> map = service.readBody(request.getReader());
        map.put("password",service.encryption(String.valueOf(map.get("password"))));
        service.insert(map);
        return success(1);
    }

}

六、论文参考

第1章 绪论

1.1.1  课题背景

1.1.2  研究意义

第2章 关键技术的研究

2.1微信开发者工具

2.2小程序框架以及目录结构介绍

2.3 JAVA技术

2.4 Spring Boot框架

2.5 MYSQL数据库

2.6 B/S结构

2.7 ECLIPSE开发环境

2.8 Tomcat服务器

第3章 需求分析与可行性分析

3.1 功能需求分析

3.2 可行性分析

3.2.1技术可行性:

3.2.2经济可行性

3.2.3操作可行性:

3.3 系统性能分析

第4章 系统总体设计

4.1  系统的结构划分

4.2  系统的流程分析

4.2.1操作流程

4.2.2添加信息流程

4.2.3删除信息流程

4.3. 数据库设计

4.3.1数据库E-R图设计

4.3.2数据表

第5章 系统实现过程

5.1  运行环境

5.1.1  硬件环境

5.1.2  软件环境

5.2  系统实现

5.2.1用户系统功能模块

5.2.2管理员功能模块

5.2.3卖家功能模块

第6章 系统测试

6.1系统测试的目的

6.2系统测试方法

6.3功能测试

第7章 总结

参考文献

致谢

 

七、其他案例: 

 

 

 

八、源码获取:

大家点赞、收藏、关注评论啦 、查看👇🏻获取联系方式👇🏻

 精彩专栏推荐订阅下方专栏👇🏻

2022-2024年最全的计算机软件毕业设计选题大全:1000个热门选题推荐✅

Java项目精品实战案例《100套》

Java微信小程序项目实战《100套》

原文地址:https://blog.csdn.net/weixin_39709134/article/details/134302407

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_49473.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注