• idea开发 java web 酒店推荐系统bootstrap框架开发协同过滤算法web结构java编程计算机网页


    一、源码特点
     java 酒店推荐推荐系统是一套完善的完整信息系统,结合java web开发和bootstrap UI框架完成本系统 采用协同过滤算法进行推荐 ,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。
    前段主要技术 css jquery  bootstrap UI框架
    后端主要技术 java jsp
    数据库 mysql
    开发工具 IDEA  JDK1.8

    java web基于协同过滤酒店推荐系统1


    二、功能介绍
    前台功能:
    1)系统首页
    2)公告浏览
    3)酒店浏览、查看酒店详情 ,系统并记录用户浏览记录,系统采用协同过滤算法,根据用户的行为习惯进行推荐其他酒店
    4)客房预定、入住、查看订单
    5)用户注册、登录


    后台功能:
    (1)管理员管理:对管理员信息进行添加、删除、修改和查看
    (2)用户管理:对用户信息进行添加、删除、修改和查看
    (3)员工管理:对员工信息进行添加、删除、修改和查看
    (4)公告管理:对公告信息进行添加、删除、修改和查看
    (5)酒店管理:对酒店信息进行添加、删除、修改和查看
    (6)浏览管理:对浏览信息进行添加、删除、修改和查看
    (7)客房类型管理:对客房类型信息进行添加、删除、修改和查看
    (8)客房管理:对客房信息进行添加、删除、修改和查看
    (9)预定管理:对预定信息进行添加、删除、修改和查看
    (10)入住管理:对入住信息进行添加、删除、修改和查看
    (11)商品管理:对商品信息进行添加、删除、修改和查看
    (12)订单管理:对订单信息进行删除、修改和查看
    (13)订单明细管理:对订单明细信息进行删除、修改和查看
    (14)用户登录、个人信息修改

    数据库设计

    1. CREATE TABLE `gly` (
    2. `glyid` int(11) NOT NULL auto_increment,
    3. `yhm` VARCHAR(40) default NULL COMMENT '用户名',
    4. `mm` VARCHAR(40) default NULL COMMENT '密码',
    5. `xm` VARCHAR(40) default NULL COMMENT '姓名', PRIMARY KEY (`glyid`)
    6. ) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
    7. CREATE TABLE `yonghu` (
    8. `yhid` int(11) NOT NULL auto_increment,
    9. `yhm` VARCHAR(40) default NULL COMMENT '用户名',
    10. `mm` VARCHAR(40) default NULL COMMENT '密码',
    11. `xm` VARCHAR(40) default NULL COMMENT '姓名',
    12. `lxdh` VARCHAR(40) default NULL COMMENT '联系电话',
    13. `lxdz` VARCHAR(40) default NULL COMMENT '联系地址', PRIMARY KEY (`yhid`)
    14. ) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
    15. CREATE TABLE `yuangong` (
    16. `ygid` int(11) NOT NULL auto_increment,
    17. `yhm` VARCHAR(40) default NULL COMMENT '用户名',
    18. `mm` VARCHAR(40) default NULL COMMENT '密码',
    19. `xm` VARCHAR(40) default NULL COMMENT '姓名',
    20. `lxdh` VARCHAR(40) default NULL COMMENT '联系电话',
    21. `jd` VARCHAR(40) default NULL COMMENT '酒店', PRIMARY KEY (`ygid`)
    22. ) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
    23. CREATE TABLE `gonggao` (
    24. `ggid` int(11) NOT NULL auto_increment,
    25. `bt` VARCHAR(40) default NULL COMMENT '标题',
    26. `nr` VARCHAR(40) default NULL COMMENT '内容',
    27. `fbsj` VARCHAR(40) default NULL COMMENT '发布时间', PRIMARY KEY (`ggid`)
    28. ) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
    29. CREATE TABLE `jiudian` (
    30. `jdid` int(11) NOT NULL auto_increment,
    31. `jdmc` VARCHAR(40) default NULL COMMENT '酒店名称',
    32. `wz` VARCHAR(40) default NULL COMMENT '位置',
    33. `tp` VARCHAR(40) default NULL COMMENT '图片',
    34. `lxdh` VARCHAR(40) default NULL COMMENT '联系电话', PRIMARY KEY (`jdid`)
    35. ) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
    36. CREATE TABLE `liulan` (
    37. `llid` int(11) NOT NULL auto_increment,
    38. `jd` VARCHAR(40) default NULL COMMENT '酒店',
    39. `yh` VARCHAR(40) default NULL COMMENT '用户',
    40. `llsj` VARCHAR(40) default NULL COMMENT '浏览时间', PRIMARY KEY (`llid`)
    41. ) ENGINE=InnoDB DEFAULT CHARSET=gb2312;

    代码设计

    1. int N = scanner.nextInt();
    2. int[][] sparseMatrix = new int[N][N];//建立用户稀疏矩阵,用于用户相似度计算【相似度矩阵】
    3. Map<String, Integer> userItemLength = new HashMap();//存储每一个用户对应的不同物品总数 eg: A 3
    4. Map<String, Set<String>> itemUserCollection = new HashMap();//建立物品到用户的倒排表 eg: a A B
    5. Set<String> items = new HashSet();//辅助存储物品集合
    6. Map<String, Integer> userID = new HashMap();//辅助存储每一个用户的用户ID映射
    7. Map<Integer, String> idUser = new HashMap();//辅助存储每一个ID对应的用户映射
    8. System.out.println("Input user--items maping infermation:");
    9. scanner.nextLine();
    10. for(int i = 0; i < N ; i++){//依次处理N个用户 输入数据 以空格间隔
    11. String[] user_item = scanner.nextLine().split(" ");
    12. int length = user_item.length;
    13. userItemLength.put(user_item[0], length-1);//eg: A 3
    14. userID.put(user_item[0], i);//用户ID与稀疏矩阵建立对应关系
    15. idUser.put(i, user_item[0]);
    16. //建立物品--用户倒排表
    17. for(int j = 1; j < length; j ++){
    18. if(items.contains(user_item[j])){//如果已经包含对应的物品--用户映射,直接添加对应的用户
    19. itemUserCollection.get(user_item[j]).add(user_item[0]);
    20. }else{//否则创建对应物品--用户集合映射
    21. items.add(user_item[j]);
    22. itemUserCollection.put(user_item[j], new HashSet<String>());//创建物品--用户倒排关系
    23. itemUserCollection.get(user_item[j]).add(user_item[0]);
    24. }
    25. }
    26. }
    27. System.out.println(itemUserCollection.toString());
    28. //计算相似度矩阵【稀疏】
    29. Set<Entry<String, Set<String>>> entrySet = itemUserCollection.entrySet();
    30. Iterator<Entry<String, Set<String>>> iterator = entrySet.iterator();
    31. while(iterator.hasNext()){
    32. Set<String> commonUsers = iterator.next().getValue();
    33. for (String user_u : commonUsers) {
    34. for (String user_v : commonUsers) {
    35. if(user_u.equals(user_v)){
    36. continue;
    37. }
    38. sparseMatrix[userID.get(user_u)][userID.get(user_v)] += 1;//计算用户u与用户v都有正反馈的物品总数
    39. }
    40. }
    41. }
    42. System.out.println(userItemLength.toString());
    43. System.out.println("Input the user for recommendation:");
    44. String recommendUser = scanner.nextLine();
    45. System.out.println(userID.get(recommendUser));
    46. //计算用户之间的相似度【余弦相似性】
    47. int recommendUserId = userID.get(recommendUser);
    48. for (int j = 0;j < sparseMatrix.length; j++) {
    49. if(j != recommendUserId){
    50. System.out.println(idUser.get(recommendUserId)+"--"+idUser.get(j)+"相似度:"+sparseMatrix[recommendUserId][j]/Math.sqrt(userItemLength.get(idUser.get(recommendUserId))*userItemLength.get(idUser.get(j))));
    51. }
    52. }
    53. //计算指定用户recommendUser的物品推荐度
    54. for(String item: items){//遍历每一件物品
    55. Set<String> users = itemUserCollection.get(item);//得到购买当前物品的所有用户集合
    56. if(!users.contains(recommendUser)){//如果被推荐用户没有购买当前物品,则进行推荐度计算
    57. double itemRecommendDegree = 0.0;
    58. for(String user: users){
    59. itemRecommendDegree += sparseMatrix[userID.get(recommendUser)][userID.get(user)]/Math.sqrt(userItemLength.get(recommendUser)*userItemLength.get(user));//推荐度计算
    60. }
    61. System.out.println("The item "+item+" for "+recommendUser +"'s recommended degree:"+itemRecommendDegree);
    62. }
    63. }

    三、注意事项
    1、管理员账号:admin密码:admin 数据库配置文件DBO.java
    2、开发环境为IDEA开发,数据库为mysql,使用java语言开发。
    3、数据库文件名是jspjdtj.sql 系统名称jdtj
    4、地址:qt/index.jsp 

    四系统实现


     

    代码下载

    https://download.csdn.net/download/qq_41221322/89064345

    需要源码 其他的定制服务  下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

  • 相关阅读:
    哈工大李治军老师操作系统笔记【23】:内存换出(Learning OS Concepts By Coding Them !)
    (Java高级教程)第三章Java网络编程-第八节:博客系统搭建(前后端分离)
    一文概览NLP句法分析:从理论到PyTorch实战解读
    【机器学习】EM算法
    【系统设计系列】 DNS和CDN
    6年前的麒麟980依旧可以再战
    学习Android的第十九天
    关于在word中使用Axmath的报错的解决
    SpringCloud Alibaba —— Nacos 作为注册中心 —— Nacos 的安装与配置 以及安装后启动可能出现的问题
    SpringMVC入门指南
  • 原文地址:https://blog.csdn.net/qq_41221322/article/details/137255593