大四零基础用Vue+ElementUI一周做完化妆品推荐系统?

💖💖作者:计算机毕业设计小途

💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我!

💛💛想说的话:感谢大家的关注与支持!

💜💜
网站实战项目
安卓/小程序实战项目
大数据实战项目
深度学习实战项目

目录

化妆品推荐系统介绍

化妆品推荐系统面向大四计算机专业毕业设计场景,采用Java-SpringBoot或Python-Django双后端方案,前端统一使用Vue+ElementUI构建B/S架构的完整Web应用;系统以MySQL为核心数据存储,围绕化妆品业务设计用户、商家、化妆品类别、单品、评分、销量、留言反馈、在线咨询、轮播公告及友情链接等十余个功能模块,既支持普通用户浏览、搜索、收藏、评分与留言,也支持商家后台上架商品、维护库存与查看销量数据,管理员可在系统管理界面完成用户/商家权限控制、公告资讯与分类发布、首页轮播图配置及系统简介维护,所有交互通过RESTful接口与JSON数据完成,前端路由与权限由Vue-router与ElementUI组件协同实现,代码结构清晰、注释详尽,可直接作为毕业设计项目运行与演示,帮助学生在短时间内掌握从需求分析、数据库设计、后端业务实现到前端页面交互的完整开发流程,并提供真实业务场景下的数据模型与接口范例,为毕设文档撰写与系统展示提供扎实基础。

化妆品推荐系统演示视频

大四零基础用Vue+ElementUI一周做完化妆品推荐系统?

化妆品推荐系统演示图片








化妆品推荐系统代码展示

python 复制代码
// 1. 化妆品个性化推荐核心逻辑:基于用户历史评分与商品特征计算余弦相似度并返回Top-N
public List<Cosmetic> recommendByUser(Long userId, int topN) {
    List<UserRating> myRatings = userRatingMapper.selectByUserId(userId);
    if (myRatings.isEmpty()) return cosmeticMapper.selectBySalesDesc(topN);
    Map<Long, Double> userVector = myRatings.stream()
            .collect(Collectors.toMap(UserRating::getCosmeticId, UserRating::getScore));
    Set<Long> alreadyRated = userVector.keySet();
    List<Cosmetic> allItems = cosmeticMapper.selectAll();
    List<CosmeticScore> scores = new ArrayList<>();
    for (Cosmetic c : allItems) {
        if (alreadyRated.contains(c.getId())) continue;
        List<UserRating> itemRatings = userRatingMapper.selectByCosmeticId(c.getId());
        if (itemRatings.isEmpty()) continue;
        Map<Long, Double> itemVector = itemRatings.stream()
                .collect(Collectors.toMap(UserRating::getUserId, UserRating::getScore));
        double dot = 0, normA = 0, normB = 0;
        for (UserRating r : myRatings) {
            Double otherScore = itemVector.get(r.getUserId());
            if (otherScore != null) {
                dot += r.getScore() * otherScore;
                normA += r.getScore() * r.getScore();
                normB += otherScore * otherScore;
            }
        }
        double sim = (normA == 0 || normB == 0) ? 0 : dot / (Math.sqrt(normA) * Math.sqrt(normB));
        scores.add(new CosmeticScore(c, sim));
    }
    scores.sort((a, b) -> Double.compare(b.getScore(), a.getScore()));
    return scores.stream().limit(topN).map(CosmeticScore::getCosmetic).collect(Collectors.toList());
}

// 2. 用户提交评分后的实时销量与平均分更新:事务内同时写评分表、更新化妆品表销量与平均分
@Transactional
public int addRating(Long userId, Long cosmeticId, Double score) {
    Cosmetic c = cosmeticMapper.selectById(cosmeticId);
    if (c == null) throw new BizException("商品不存在");
    UserRating exists = userRatingMapper.selectByUserAndCosmetic(userId, cosmeticId);
    if (exists != null) {
        exists.setScore(score);
        userRatingMapper.updateById(exists);
    } else {
        UserRating ur = new UserRating();
        ur.setUserId(userId);
        ur.setCosmeticId(cosmeticId);
        ur.setScore(score);
        userRatingMapper.insert(ur);
    }
    int totalSales = userRatingMapper.countByCosmetic(cosmeticId);
    Double avgScore = userRatingMapper.avgScoreByCosmetic(cosmeticId);
    cosmeticMapper.updateSalesAndScore(cosmeticId, totalSales, avgScore);
    return 1;
}

// 3. 商家后台销量数据多维度实时统计:按品类、月份聚合返回ECharts所需JSON
public Map<String, Object> salesStatistics(Long merchantId) {
    Map<String, Object> result = new LinkedHashMap<>();
    List<Map<String, Object>> byCategory = cosmeticMapper.selectSalesGroupByCategory(merchantId);
    result.put("category", byCategory);
    List<Map<String, Object>> byMonth = orderDetailMapper.selectSalesGroupByMonth(merchantId);
    result.put("month", byMonth);
    List<Map<String, Object>> top10 = cosmeticMapper.selectTopSalesByMerchant(merchantId, 10);
    result.put("top10", top10);
    return result;
}

化妆品推荐系统文档展示

💖💖作者:计算机毕业设计小途

💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我!

💛💛想说的话:感谢大家的关注与支持!

💜💜
网站实战项目
安卓/小程序实战项目
大数据实战项目
深度学习实战项目

相关推荐
学长毕设11 分钟前
基于SpringBoot的景点管理系统-附源码
java·spring boot·后端
isfox12 分钟前
MapReduce 作业慢?别乱调参数,先找到瓶颈在哪
大数据
2601_9679873731 分钟前
Python 教程:默认字典(defaultdict)全维度深度指南
python·性能优化·数据处理·collections·defaultdict
鱼听禅1 小时前
Ubuntu安装YOLOv8进行菌落识别训练
linux·python·yolo·ubuntu
sxlishaobin1 小时前
Maven Setting详解
java·学习·maven
知守观1 小时前
一个方法两个触发口:反编译 XXL-Job 后,我看清了 inner/job 子包的裸奔现状
java·spring boot·微服务
用户3126874877201 小时前
CompletableFuture 链式编排:异步编程的优雅解法
java
ZhengEnCi1 小时前
Agent 查不出代码 Bug 怎么办:一份带时间戳的调试日志与读日志排查流程
python·ai编程
瑞雪兆丰年兮1 小时前
JavaWeb-day14-SpringBootWeb原理篇
java·开发语言·spring boot·spring·bean·mybatis·javaweb
神仙别闹2 小时前
基于 Java GUI 贪心策略直接搜索算法和极大极小博弈树算法的智能人机博弈五子棋游戏
java·毕业设计·gui·贪心策略·极大极小博弈树