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)用户登录、个人信息修改

数据库设计

CREATE TABLE `gly` (
`glyid` int(11) NOT NULL auto_increment,
`yhm` VARCHAR(40) default NULL COMMENT '用户名',
`mm` VARCHAR(40) default NULL COMMENT '密码',
`xm` VARCHAR(40) default NULL COMMENT '姓名',  PRIMARY KEY  (`glyid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `yonghu` (
`yhid` int(11) NOT NULL auto_increment,
`yhm` VARCHAR(40) default NULL COMMENT '用户名',
`mm` VARCHAR(40) default NULL COMMENT '密码',
`xm` VARCHAR(40) default NULL COMMENT '姓名',
`lxdh` VARCHAR(40) default NULL COMMENT '联系电话',
`lxdz` VARCHAR(40) default NULL COMMENT '联系地址',  PRIMARY KEY  (`yhid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `yuangong` (
`ygid` int(11) NOT NULL auto_increment,
`yhm` VARCHAR(40) default NULL COMMENT '用户名',
`mm` VARCHAR(40) default NULL COMMENT '密码',
`xm` VARCHAR(40) default NULL COMMENT '姓名',
`lxdh` VARCHAR(40) default NULL COMMENT '联系电话',
`jd` VARCHAR(40) default NULL COMMENT '酒店',  PRIMARY KEY  (`ygid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `gonggao` (
`ggid` int(11) NOT NULL auto_increment,
`bt` VARCHAR(40) default NULL COMMENT '标题',
`nr` VARCHAR(40) default NULL COMMENT '内容',
`fbsj` VARCHAR(40) default NULL COMMENT '发布时间',  PRIMARY KEY  (`ggid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `jiudian` (
`jdid` int(11) NOT NULL auto_increment,
`jdmc` VARCHAR(40) default NULL COMMENT '酒店名称',
`wz` VARCHAR(40) default NULL COMMENT '位置',
`tp` VARCHAR(40) default NULL COMMENT '图片',
`lxdh` VARCHAR(40) default NULL COMMENT '联系电话',  PRIMARY KEY  (`jdid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `liulan` (
`llid` int(11) NOT NULL auto_increment,
`jd` VARCHAR(40) default NULL COMMENT '酒店',
`yh` VARCHAR(40) default NULL COMMENT '用户',
`llsj` VARCHAR(40) default NULL COMMENT '浏览时间',  PRIMARY KEY  (`llid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;

代码设计

  int N = scanner.nextInt();  
        int[][] sparseMatrix = new int[N][N];//建立用户稀疏矩阵,用于用户相似度计算【相似度矩阵】  
        Map<String, Integer> userItemLength = new HashMap();//存储每一个用户对应的不同物品总数  eg: A 3  
        Map<String, Set<String>> itemUserCollection = new HashMap();//建立物品到用户的倒排表 eg: a A B  
        Set<String> items = new HashSet();//辅助存储物品集合  
        Map<String, Integer> userID = new HashMap();//辅助存储每一个用户的用户ID映射  
        Map<Integer, String> idUser = new HashMap();//辅助存储每一个ID对应的用户映射  
        System.out.println("Input user--items maping infermation:<eg:A a b d>");  
        scanner.nextLine();  
        for(int i = 0; i < N ; i++){//依次处理N个用户 输入数据  以空格间隔  
            String[] user_item = scanner.nextLine().split(" ");  
            int length = user_item.length;  
            userItemLength.put(user_item[0], length-1);//eg: A 3  
            userID.put(user_item[0], i);//用户ID与稀疏矩阵建立对应关系  
            idUser.put(i, user_item[0]);  
            //建立物品--用户倒排表  
            for(int j = 1; j < length; j ++){  
                if(items.contains(user_item[j])){//如果已经包含对应的物品--用户映射,直接添加对应的用户  
                    itemUserCollection.get(user_item[j]).add(user_item[0]);  
                }else{//否则创建对应物品--用户集合映射  
                    items.add(user_item[j]);  
                    itemUserCollection.put(user_item[j], new HashSet<String>());//创建物品--用户倒排关系  
                    itemUserCollection.get(user_item[j]).add(user_item[0]);  
                }  
            }  
        }  
        System.out.println(itemUserCollection.toString());  
        //计算相似度矩阵【稀疏】  
        Set<Entry<String, Set<String>>> entrySet = itemUserCollection.entrySet();  
        Iterator<Entry<String, Set<String>>> iterator = entrySet.iterator();  
        while(iterator.hasNext()){  
            Set<String> commonUsers = iterator.next().getValue();  
            for (String user_u : commonUsers) {  
                for (String user_v : commonUsers) {  
                    if(user_u.equals(user_v)){  
                        continue;  
                    }  
                    sparseMatrix[userID.get(user_u)][userID.get(user_v)] += 1;//计算用户u与用户v都有正反馈的物品总数  
                }  
            }  
        }  
        System.out.println(userItemLength.toString());  
        System.out.println("Input the user for recommendation:<eg:A>");  
        String recommendUser = scanner.nextLine();  
        System.out.println(userID.get(recommendUser));  
        //计算用户之间的相似度【余弦相似性】  
        int recommendUserId = userID.get(recommendUser);  
        for (int j = 0;j < sparseMatrix.length; j++) {  
                if(j != recommendUserId){  
                    System.out.println(idUser.get(recommendUserId)+"--"+idUser.get(j)+"相似度:"+sparseMatrix[recommendUserId][j]/Math.sqrt(userItemLength.get(idUser.get(recommendUserId))*userItemLength.get(idUser.get(j))));  
                }  
        }  
          
        //计算指定用户recommendUser的物品推荐度  
        for(String item: items){//遍历每一件物品  
            Set<String> users = itemUserCollection.get(item);//得到购买当前物品的所有用户集合  
            if(!users.contains(recommendUser)){//如果被推荐用户没有购买当前物品,则进行推荐度计算  
                double itemRecommendDegree = 0.0;  
                for(String user: users){  
                    itemRecommendDegree += sparseMatrix[userID.get(recommendUser)][userID.get(user)]/Math.sqrt(userItemLength.get(recommendUser)*userItemLength.get(user));//推荐度计算  
                }  
                System.out.println("The item "+item+" for "+recommendUser +"'s recommended degree:"+itemRecommendDegree);  
            }  
        }  

三、注意事项

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

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

相关推荐
Daniel 大东12 分钟前
idea 解决缓存损坏问题
java·缓存·intellij-idea
wind瑞18 分钟前
IntelliJ IDEA插件开发-代码补全插件入门开发
java·ide·intellij-idea
HappyAcmen18 分钟前
IDEA部署AI代写插件
java·人工智能·intellij-idea
马剑威(威哥爱编程)24 分钟前
读写锁分离设计模式详解
java·设计模式·java-ee
鸽鸽程序猿24 分钟前
【算法】【优选算法】前缀和(上)
java·算法·前缀和
修道-032325 分钟前
【JAVA】二、设计模式之策略模式
java·设计模式·策略模式
九圣残炎31 分钟前
【从零开始的LeetCode-算法】2559. 统计范围内的元音字符串数
java·算法·leetcode
还是大剑师兰特31 分钟前
D3的竞品有哪些,D3的优势,D3和echarts的对比
前端·javascript·echarts
王解31 分钟前
【深度解析】CSS工程化全攻略(1)
前端·css
一只小白菜~38 分钟前
web浏览器环境下使用window.open()打开PDF文件不是预览,而是下载文件?
前端·javascript·pdf·windowopen预览pdf