基于智能推荐的健身场所的设计与实现(论文+源码)_kaic

目 录

1引言
1.1开发背景
1.2开发意义
2系统相关技术介绍
2.1 开发模式
2.2 开发工具
3健身场所推荐算法详细设计
3.1 协同过滤算法
3.2 基于物品的协同过滤算法
3.3 算法设计
3.4 算法实现
3.5 算法实例设计
3.6算法实施流程
4. 健身场所推荐系统的概要设计
4.1 系统结构图设计
4.2 系统可行性分析
4.2.1技术可行性
4.2.2经济可行性
4.2.3操作可行性
4.3系统流程分析
4.3.1操作流程
4.3.2信息添加流程
4.3.3信息删除流程
4.4 系统主要用例图
4.5 数据库设计
5 健身场所推荐系统实现
5.1 系统功能时序图实现
5.1.1用户功能模块实现
5.1.2功能相关类方法实现
5.2功能实现
5.2.1登录模块
5.2.2健身场所信息管理模块
5.2.3商家信息管理模块
5.2.4智能推荐模块
6总结与展望


基于智能推荐的健身场所的设计与实现 


摘要:近年来,人们都开始追求高品质的生活,其中也包括提升自己的身体素质。但是健身场地的选择也是许多健身爱好者烦恼的问题,目前没有比较成熟的系统来给他们推荐合适的健身场所,由此可见建设健身场所的智能推荐系统是尤为重要。本系统运用C#脚本语言进行开发,架构采用B/S模式。本系统能够帮助工作人员更好的管理健身场所的信息,而且通过基于物品的协同过滤算法实现了健身场所的智能推荐功能,能够根据用户的喜好智能推荐一个最适合用户的健身场所,满足了广大健身爱好者的需求。
关键词:健身场所智能推荐;C#;B/S模式;协同过滤算法

Design and implementation of smart recommended fitness venues

Abstract: In recent years, people have begun to pursue a high quality of life, which includes improving their physical fitness. However, the choice of fitness venues is also a vexed problem for many fitness enthusiasts, but there is no mature system to recommend suitable fitness venues to them. Therefore, it is particularly important to build an intelligent recommendation system for fitness venues. The whole system is developed with C# scripting language and B/S mode. This system can help staff better manage the information of fitness venues, in addition, the intelligent recommendation function of fitness places is realized through the collaborative filtering algorithm based on items, which can intelligently recommend a fitness place most suitable for users according to their preferences. The system meets the needs of the majority of fitness enthusiasts.
Key words: Intelligent recommendation of fitness places; C#; B/S mode;Collaborative filtering algorithm

1引言
1.1开发背景
随着互联网的快速发展,用户的生活需求质量也越来越高,尤其在现代社会,社会节奏在加快,个人压力也在增加,也默默的影响着大家的生活方式。普遍情况下,大众都是利用网络信息化的操作来代替手工作业,也正是在这种环境下,健身场所信息化的建设也成为了必然,健身成为了人们释放压力,加强体质的一种首选的方式,在健身的过程中对健身场所的舒适度以及健身场所教练的能力也提出了更高的要求。就国内而言,许多健身场所都是爱好者并没有太多的经验,也不知道如何去选择,这就更加需求一个健全的健身场所智能推荐系统。
1.2开发意义

此次开发健身场所智能推荐系统所带来的好处,自然是不言而喻的,在实际的市场中,此次开发健身场所只能推荐系统,对于健身场所智能推荐系统行业主要有三个好处。
(1)与互联网相结合的健身服务覆盖面积广,用户服务成本低。
健身场所智能推荐系统的主要优点是覆盖面积广,用户服务的成本很低,并在在这种环境下,健身用户进行一种最高效的整合,让健身爱好者在众多健身场所,通过我们的系统推荐去选择,也为一些犹豫的用户根据第一爱好更好的为他们服务,也不再需要一对一的去服务用户,有信息化系统为我们筛选目标用户。
(2)健身场所智能推荐系统可以智能推荐信息,高效完成订单。
根据市场调查,有40%左右的目标用户是比较犹豫,不知道如何去选择适合自己的,又或者是自己特别喜欢却不知道其实际情况如何,此次智能化系统设计从用户到商家所有的信息都是透明化的处理方式,商家可以直接和用户交流,用户也可以查看商家发布的一些新鲜事,还有相应的器材设备,从而高效的完成订单。
(3)支持可移动设备进行查看访问
  目前市场上充斥着各种app,他们大多数都有健身方面的介绍,比如“keep”,这就是一款标准的线上健身方式的学习和交流平台,但是很多用户都坚持不下来,很多人也都纷纷选择了线下健身。由此此次设计只会像用户推送相关的健身场所信息,让客户直接选择自己喜欢的健身场所,可在一定程度上最大需求的满足用户群体。
目前来说,各健身场所需要统计的用户数据越来越多,但是人工统计效率低下,健身场所也需要提供给用户各种数据供用户判断是否喜欢此健身场所。本系统不仅能提高健身场所的工作效率,还能够智能的给用户推荐合适的健身场所,一举两得。

2系统相关技术介绍
2.1 开发模式
B/S架构:随着web的兴起,B/S架构也应景的出现了,相对于传统的C/S架构,比如我们所熟知的一些网络游戏,它的优势是很大的,首先只需要通过浏览器就能够运行,不需要下载客户端,其次能够实现同步更新,开发人员在更新时不会影响用户的使用,只需要刷新便可以看到更新后的内容,而C/S结构每次更新后,不更新客户端,用户将无法使用。其次,便于二次开发,不用考虑兼容性问题。

2.2 开发工具
C#:C#是微软公司二十一世纪初新开发的一种基于.NET框架、面向对象的编程语言,其中的#是模仿音乐中的升调,也就是C语言升级版的意思,它由C与C++衍生而来,在继承C与C++强大功能的基础上,使用也更加简便,例如C与C++中在没有宏而且是不允许多重继承的,是一种兼顾系统开发与应用开发的实用语言。主要的优点有便于学习、应用广泛、程序高效并且可以在多种计算机平台上进行编译。
 
3健身场所推荐算法详细设计
3.1 协同过滤算法
在智能推荐算法中,协同过滤算法是诞生最早而且最广为人知的一种。主要分为两类,一类主要面向个人,是基于物品的的协同过滤算法,为不同的用户根据他们个人的喜好推荐他们所喜爱的商品;而另一类则是基于用户的协同过滤算法,将所有爱好相似的用户间所喜欢的物品相互推荐。由于本系统主要面向个人用户,所以意向采取基于物品的协同过滤算法
3.2 基于物品的协同过滤算法
基于物品的协同过滤算法的详细流程为: 
计算物品的相似度;
计算相似度的方法有很多,其中我们张建的主要有杰卡德系数、余弦相似度等。本系统将采用余弦相似度的方法去计算,其经过原公式推导后如公式(3.1)如下:
                        W_ij=(|N_i∩N_j |  )/(√(|N_i ||N_j |   )  )          (3.1)
式中: W_ij——表示物品i和物品j的相似度;
       |N_i ||N_j |——分别表示喜欢物品i,物品j的用户数;
       |N_i∩N_j |——表示同时喜欢物品i与j的用户数
接下来推荐列表便由上式为依据生成
计算出相似度之后,下一步是计算某个用户对某个物品的喜爱程度。如下列公式(3.2),可以计算用户u对某物品j的喜爱程度:
                          P_uj=∑_(i∈N_((u)∩) S_((j,k)))▒〖W_ij R_ui 〗(3.2)
                   
式中: N_u——用户u所有喜欢的物品集合
       S_((j,k))——k个与j最相似的物品集合
       W_ij——物品i和j的相似度
〖  R〗_ui——表示用户u对物品i的兴趣

3.3 算法设计
通过3.2节对基于物品的协同过滤算法的基本介绍,本节将介绍本算法在旅游健身场所推荐系统中的概要设计,算法设计流程图如图3.1所示:
 
图3.1算法概要设计流程图
从图3.1可知,该算法首先要获取原始数据集,即本健身场所推荐系统设计中的所有健身场所集合,再对数据集进行处理得到物品间的共现矩阵和用户和物品的倒排表。然后通过公式(3.1)计算健身场所与健身场所之间的相似度,于是可以得到一个健身场所相似度矩阵,再获取用户的收藏健身场所信息作为隐性评分(即收藏的健身场所表示为“1—喜欢”,“0—不喜欢”),得到收藏健身场所集合后,通过公式(3.2)就可以得到用户未收藏的健身场所的推荐度,按照健身场所的推荐度降序排列,就可以得到一个健身场所推荐集合,取推荐集合的TOPK,即得到推荐列表,这个列表就可以展示给用户。
3.4 算法实现
接下来是流程图中重要部分伪代码:
算法3.1:计算健身场所相似度
输入:健身场所数据集site
输出:健身场所相似度矩阵M;
C = dict();//健身场所共现矩阵
N = dict();//用户-健身场所倒排表
for users, items in site.items();
  for i in users;//收藏过i健身场所的用户
    N[i] +=1;
       for j in users; //收藏过j健身场所的用户
         if (i == j) continue;
          C[i][j] +=1;
       End for;
  End for
End for
M = dict();//健身场所相似度矩阵
for i in itemsCollect () ;//用户收藏的健身场所
  for j in site.items() ;
    if (i != j)
      M[i][j] =  C_ij / math.sqrt(N[i] * N[j])
    End if
  End for
End for
return M;
根据算法3.1得到健身场所之间的相似度以后,在根据用户的喜好信息,可以找到预测推荐健身场所的推荐值,然后通过排序得到推荐列表。
接下来将介绍根据相似度和兴趣度的到推荐列表的算法伪代码:
算法3.2:获取推荐列表
输入:健身场所相似度矩阵M;
输出:推荐结果列表Result;
for j in  M_ij;
  for i in itemsCollect ();
   〖 P〗_j=M_ij* R_ui //推荐度=相似度*兴趣度
  End for
  Result.add(j) ;
End for
Result.sort(); 
return Result; 
3.5 算法实例设计
根据3.4节所讲的算法实现步骤,本节将介绍该算法应用于本健身场所推荐系统的实例,具体步骤如下:
1.获取原始数据:如下5个用户对5个健身场所的收藏(用1表示收藏,用0表示未收藏)情况如表3.1所示:
表3.1 用户-健身场所二元形式背景
s_1s_2s_3s_4s_5
u_111010
u_201101
u_300110
u_401110
u_510011
2.计算健身场所间的相似度:以表3.1为例,对健身场所s_2,s_4而言,由公式(3.1)可得到两个健身场所的相识度,计算过程如下:从表中可以看出,共同喜欢s_2,s_4两个健身场所的用户为u_1和u_4,共同喜欢的用户数量为2,那么公式(3.1)中的|N(i)∩N(j)|等于2;同时可以看出分别喜欢s_2,s_4的用户人数为3,4,那么公式(3.1)中的√(|N(i)\||N(j)|)等于3.46,于是得到s_2 和s_4相似度为0.577。
根据以上计算相似度的过程,最终将得到如表3.2所示的健身场所相似度矩阵:
表3.2 健身场所相识度矩阵表
s_1s_2s_3s_4s_5
s_1-0.40800.7070
s_20.408-0.6670.5770.577
s_300.667-0.5770.577
s_40.7070.5770.577-0
s_500.5770.5770-
3.根据每位用户的邻居用户收藏健身场所信息来实现推荐预测(推荐一个为例):下面将列举用户u_1和用户u_3的推荐过程。
对于用户u_1:通过用户收藏信息表可得用户u_1  收藏的健身场所为s_1,s_2,s_4,未收藏健身场所为s_3,s_5,由表3.2和公式(3.2)可得s_3的推荐值为1.244,s_5的推荐值为0.577,所以向用户推荐健身场所s_3。
对于用户u_3:通过用户收藏信息表可得:,用户u_3  收藏的健身场所为s_3,s_4,未收藏健身场所为s_1,s_2,s_5,由表3.2和公式(3.2)可得s_1的推荐值为0.707,s_2的推荐值为1.244,
s_5的推荐值为0.577,所以向用户推荐健身场所s_2。
根据以上推荐过程,最终将得到如表3.3所示的推荐预测结果表。从表中我们可以看到,经过计算,为每一个用户都提供了一个最合适的健身场所
表3.3 健身场所推荐预测结果表
s_1s_2s_3s_4s_5
u_100100
u_200010
u_301000
u_400001
u_501000

3.6算法实施流程
健身场所推荐算法在前台的运用流程图前台算法运行流程图所示:用户在进入系统时,新用户或没有收藏行为的老用户在登录后,在健身场所推荐模块展示区展示后台根据健身场所收藏数量的排序算法生成的热门健身场所推荐列表;老用户在登录后,在健身场所推荐模块展示区展示后台根据用户已收藏健身场所的基于物品的协同过滤算法生成的个性化推荐列表。
后台算法运行流程图所示:用户在对健身场所进行收藏时,收藏数据将被记录到数据库中。在用户登录系统后,后台会检测用户信息,对于第一次登陆系统的新用户和没有收藏记录的老用户来说,由于没有收藏数据,将会根据健身场所收藏数量的排序算法生成热门健身场所推荐列表。对于老用户,参照这个用户对健身场所的收藏数据,通过基于物品的协同过滤算法得到相似健身场所推荐列表,完成个性化推荐工作。
4. 健身场所推荐系统的概要设计
4.1 系统结构图设计
系统功能结构设计:此次健身场所智能推荐系统的设计主要是为了更好的来提高用户的身体素质,也是在一定程度上可以更好的去选择自己喜欢的健身场所,将商家和用户集中在一个商圈,提高商家的多样性特色,也在一定程度上积赞一定的用户群。本次健身场所智能推荐系统设计了用户、商家两个角色,用户可以在健身场所中找到自己喜欢的商家,而商家也可以通过发布一些器材信息、商家新鲜事来吸引更多的消费者进行选择。其功能结构如下图所示:
 
图4.1 系统功能结构图 
算法结构设计:系统采取了协同过滤算法,其核心思想便是我们常提起的物以类聚,人以群分。通过对各个健身场所进行分类、标识,再根据用户所喜欢的健身场所中,智能推荐最相近的健身场所,或者将相同喜好用户喜欢的健身场所推荐给该用户。本系统采用的便是这种物以类聚的方法,能够准确的向用户推荐最合适的健身场所。
 
图4.2推荐系统的详细流程框架图

4.2 系统可行性分析
4.2.1技术可行性    
本系统安装非常简便,不需要多么高深的专业知识,开发工具采用了常见的IDEA,前后台的数据交互则采用了已经非常成熟的SQL server数据库,数据的修改和维护都简单易行,因此在实际开发的过程中网络上存在着大量的教程可供使用从而完成实现系统的开发,因此在技术上是可行的。
4.2.2经济可行性
本系统主要采用C#语言进行开发,人工成本相对较低,而且在开发过程中不会应用到付费软件,整个开放过程中需要的成本低,而且无论后期的运行维护还是更新都不需要较高的人力财力。因此,在经济方面上是可行的。
4.2.3操作可行性
现在的生活中,计算机和手机对于我们来说都越来越常用也越重要,我们之所以需要它们,不仅是因为他们的娱乐功能,更重要的是它们能够提高我们的工作效率,各行各业也都追求工作效率的提高,人们都在从人工记录转向计算机存储,并且实现更多的功能。以及对用户实现的智能推荐功能,用户只需要浏览添加收藏之后便能实现,而且只要对计算机有基本的了解和操作基础的人,都可以无障碍的操作本系统,操作十分简便。
本系统正能达到这些要求,为用户省时省力的推荐合适的健身场所。
4.3系统流程分析
4.3.1操作流程
在使用本系统之前,首先需要进行登录注册,否则只能浏览界面,部分功能无法使用,如图4.3所示。
 
图4.3用户登录操作流程图
4.3.2信息添加流程
信息添加流程,如图4.4所示。
 
图4.4信息添加流程图
4.3.3信息删除流程
信息的删除流程,如图4.5所示。
 
图4.5 信息删除流程图
4.4 系统主要用例图
商家信息属性图如图4.6所示。
 
图4.6 商家信息实体属性图
用户实体属性图如图4.7所示。
 
图4.7用户实体属性图
健身场所实体属性图,如4.7所示:
 
图4.7健身实体属性图
4.5 数据库设计
表4.1 用户字段信息表(t_member)
字段名称数据类型描述
idint(11)用户id,主键
Miam varchar(200)密码
namevarchar(200)姓名
imgvarchar(200)头像
登录字段包括用户id、姓名、头像、密码等
表4.2 登录字段信息表(t_user)
字段名称数据类型描述
idint(11)用户id,主键
usernamevarchar(200)用户名
passwordvarchar(200)密码
roleint(11)角色id,外键
分类字段包括分类名称和备注等
表4.3分类字段信息表(t_classify)
字段名称数据类型描述
idint(11)分类id,主键
namevarchar(200)分类名称
descpvarchar(200)备注
评论字段包括评论信息和评论时间等
表4.4 评论字段信息表(t_commentmsg)
字段名称数据类型描述
idint(11)评论id,主键
nametext评论信息
settimedatetime评论时间
memberint(11)用户id,外键
informationint(11)被评论内容id,外键
收藏字段包括收藏id和会员id等
表 4.5收藏字段信息表(t_membercollect)
字段名称数据类型描述
idint(11)收藏id,主键
memberint(11)会员id,外键
informationint(11)内容id,外键


健身场所字段包括标题、内容和简介信息等 
表4.6 健身场所字段信息表(t_information)
字段名称数据类型描述
idint(11)内容id,主键
namevarchar(200)标题
contenttext内容
descpvarchar(200)简介
serrimedatetime发布时间
imgvarchar(200)列表图片
doctsvarchar(200)视频
stateint(11)置顶id,外键
memberint(11)发布者id,外键
classifyint(11)类别名称id,外键
shenheint(11)审核id,外键
数据库测试:
采用Junit测试,进行数据库的数据源连接测试,编写测试代码,模拟数据库的数据源连接,以及一些字段的查询和插入,看是否与数据库能通过数据源连接数据库,以及数据库的字段是否符合要求测试结果如图4.8所示。
 
图4.8 数据库连接测试
测试结果:
   通过Junit测试,结果数据库可以通过数据源连接数据库,且字段页符合对应的要求,测试结果如图4.9所示。

 
                     
 图4.9数据库连接测试结果

5 健身场所推荐系统实现
5.1 系统功能时序图实现
5.1.1用户功能模块实现
(1)用户注册用例实现
图5.1 用户注册用例顺序图

(2)用户登录

图5.2用户登录用例的设计类图
登录测试
通过注册页面,填写注册信息后开始注册,相关信息必须不能为空,而且用户名不可以与已有的用户名重复。
登陆时用户输入的用户名、密码,以及验证码必须不能为空,同时密码必须匹配对应用户名才能登陆成功。
登陆测试使用了等价类划分,如表5.1所示
表 5.1 登录等价类划分
等价类
输入条件有效等价类编号无效等价类编号
输入用户名和密码输入用户名和密码1输入用户名3
输入密码4
有效的用户名和密码2不输入用户名并不输入密码5
用户名有效6
密码是有效的7
用户名与密码都无效8

测试用例
表 5.2 登录测试用例表
测试用例编号输入数据
用户名
预期输出
覆盖等价类
实际输出结果

1Zhangsan@qq.com123456登录成功1,2登录成功
2zhangsan@qq.com登录失败3登录失败
3登录失败5登录失败
4123456登录失败4,7登录失败
5zhangsan@qq.com1111111登录失败1,6登录失败
6zhangsan1@qq.com1111111登录失败1,8登录失败
7zhangsan1@qq.com123456登录失败1,7登录失败

(3)健身场所信息推送用例顺序图如下图5.3所示:
 
图5.3 健身场所信息推送用例图

5.1.2功能相关类方法实现
TShiti类的描述如表5.3所示。
表5.3TYuanggong类的描述
类名属性/方法描述
TShiti--id用户ID
-mingcheng用户名称
-fujian附件
-fujianYuanshiming附件原路径
-shijian事件
-del删除
TShitiDAO类的描述如表5.4所示。
表5.4TyuangongDao类的描述
类名属性/方法描述
TShitiDAO+ save (TAdmin transientInstance)添加用户
+ delete (TAdmin persistentInstance)删除用户
+ findById (C#.lang.Integer id)查找用户

shitiAction类的描述如表5.5所示。
表5.5 shitiAction类的描述
类名属性/方法描述
shitiAction-id用户ID
-mingcheng用户名称
-fujian附件
-fujianYuanshiming附件原路径
-message信息
+shitiAdd( )添加用户


upload类的描述如表5.6所示。
表5.6 upload类的描述
类名属性/方法描述
upload-fujian附件
+ fujianFileName附件名称
+ fujianContentType附件内容类型
+ upload()下载方法
+ copy()复制方法
TDocDAO类的描述如表5.7所示。
表5.6 TDocDAO类的描述


  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开心工作室_kaic

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值