jsp基于协同过滤课程推荐管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

发布时间:2023年12月20日

一、源码特点
?? ?java 基于协同过滤课程推荐管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开
发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发。

java web协同过滤课程推荐系统1


二、功能介绍
前台功能:
系统首页浏览
公告浏览
课程浏览
查看学习记录。利用过滤算法进行推荐课程信息
后台功能:
(1)管理员管理:对管理员信息进行添加、删除、修改和查看
(2)用户管理:对用户信息进行添加、删除、修改和查看
(3)公告管理:对公告信息进行添加、删除、修改和查看
(4)课程管理:对课程信息进行添加、删除、修改和查看
(5)课程明细管理:对课程明细信息进行添加、删除、修改和查看
(6)学习历史管理:对学习历史信息进行删除、修改和查看

利用通过用访问对记录访问过的课程信息,通过访问记录用户的最相近的课程,做计算协同数据的数据来源,通过java 协同算法,生成推荐业务数据,通过方法实时读取推荐和现在访问相近的课程信息,来进行展现

数据库设计

(1)管理员信息表如表5.1所示:

表5.1 管理员信息表

序号

字段名称

数据类型

长度

主键

描述

1

glyid

INTEGER

11

管理员编号

2

yhm

VARCHAR

40

用户名

3

mm

VARCHAR

40

密码

4

xm

VARCHAR

40

姓名

(2)用户如表5.2所示:

表5.2 用户表

序号

字段名称

数据类型

长度

主键

描述

1

yhid

INTEGER

11

用户编号

2

yhm

VARCHAR

40

用户名

3

mm

VARCHAR

40

密码

4

xm

VARCHAR

40

姓名

5

lxdh

VARCHAR

40

联系电话

6

lxdz

VARCHAR

40

联系地址

(3)公告表如表5.3所示:

表5.3 公告表

序号

字段名称

数据类型

长度

主键

描述

1

ggid

INTEGER

11

公告编号

2

bt

VARCHAR

40

标题

3

nr

VARCHAR

40

内容

4

fbsj

VARCHAR

40

发布时间

(4)课程如表5.4所示:

表5.4 课程信息表

序号

字段名称

数据类型

长度

主键

描述

1

kcid

INTEGER

11

课程编号

2

kcmc

VARCHAR

40

课程名称

3

js

VARCHAR

40

介绍

4

tp

VARCHAR

40

图片

5

zz

VARCHAR

40

作者

6

cbs

VARCHAR

40

出版社

(5)课程明细表如表5.5所示:

表5.5 课程明细表

序号

字段名称

数据类型

长度

主键

描述

1

kcmxid

INTEGER

11

课程明细编号

2

kc

VARCHAR

40

课程

3

mxzy

VARCHAR

40

明细摘要

4

nr

VARCHAR

40

内容

实体关系图

核心代码

 public static String outNearbyUserList(String user) { //课程id
   	 DBO db=new DBO();
     Map scores = new HashMap();
	  String sql="";
	    ResultSet rs=null;
  ///商品
   	int i=0;
   	sql="select * from kecheng where 1=1";
   	
   	try{
   	rs=db.query(sql);
   	while(rs.next()){
     
       //   i++;
   	  if (rs.getString("kcid").equalsIgnoreCase(user)) {
          continue;
      }
      double score = getOSScore(user, rs.getString("kcid"));
      System.out.println("score="+score);
      scores.put(rs.getString("kcid"), String.valueOf(score));
   		
       	}
   	db.close();
   	}catch(Exception e){
   		e.printStackTrace();
   	}
  
        
        
        
        /*
        for (String tempUser : users) {
            if (tempUser.equalsIgnoreCase(user)) {
                continue;
            }
            double score = getOSScore(user, tempUser);
            System.out.println("score="+score);
            scores.put(tempUser, score);
        }
        */
        System.out.println(scores.toString());
        
        TreeMapTest mp=new TreeMapTest();
        String a= mp.getMin(scores);
        System.out.println("a="+a);
        return a;
    }

    private static Double getOSScore(String user1, String user2) {
        HashMap user1Score = (HashMap) score.get(user1);
        HashMap user2Score = (HashMap) score.get(user2);
        double totalscore = 0.0;
        Iterator it = user1Score.keySet().iterator();
        while (it.hasNext()) {
            String film = (String) it.next();
            int a1 = (Integer) user1Score.get(film);
            int a2 = (Integer) user1Score.get(film);
            int b1 = (Integer) user2Score.get(film);
            int b2 = (Integer) user2Score.get(film);
            int a = a1 * a2 - b1 * b2;
            //System.out.println(Math.abs(a));
            totalscore += Math.sqrt(Math.abs(a));
        }
        return totalscore;
    }

    private static Map getScore() {
        Map score = new HashMap();
        // aaa
        HashMap tempScore = null;
        DBO db=new DBO();
        
        String sql="select * from kecheng ";
        String sq="";
        ResultSet rs=null;
        ResultSet r=null;
        ResultSet rr=null;
        db.open();
        int num=0;
        try{
        rs=db.query(sql);
        
        int j=0;
        
        
        while(rs.next()){
        tempScore= new HashMap();
        
        sql="select * from yonghu ";
        
        db.open();
        r=db.query(sql);
        
        while(r.next()){
        	
        	sq="select count(1) as num from xxls where kc='"+rs.getString("kcid")+"' ";//and yh='"+r.getString("yhm")+"'
        	db.open();
        	rr=db.query(sq);
        	if(rr.next()){
        		
        		num=rr.getInt("num");
        	}
            tempScore.put(r.getString("yhm"), num);
        }
        

        score.put(rs.getString("kcid"), tempScore);
        j++;
        }
        }catch(Exception e){
        	
        	e.printStackTrace();
        }finally{
        	
        	db.close();
        }
      
        return score;
    }

计算过程


三、注意事项
?? ?1、管理员账号:admin密码:admin 数据库配置文件DBO.java
?? ? 2、开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发。
?? ?3、数据库文件名是jspkctj.sql ,系统名称kctj
?? ?4、系统首页地址:http://127.0.0.1:8080/kctj/index.jsp

四 系统实现

源码获取 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

文章来源:https://blog.csdn.net/qq_41221322/article/details/135076137
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。