一、项目介绍
随着生活水平的提高,人们的健康意识越来越强。但是目前人们日常运动持续性还是比较差,为了改变这一现状。我们研究设计了基于hadoop的运动推荐项目系统。系统通过统计分析用户运动信息,获取大众用户的运动习惯,设计人们感兴趣的运动模式,以提高人们的运动积极性。系统包含了体育项目信息、项目分类、体验反馈等功能。能够让用户随时随地查看各种运动项目信息的同时,用户还可以自己进行在线交流等,管理员作为系统的维护员可以对系统上各项相关信息进行管理。总体来说系统是通过hadoop架构搭建,中间件使用的是tomcat服务器,数据库管理平台采用开源的mysql,前端使用的主要是jsp页面展示技术。通过测试,该需要能够较好的完成设定的目标。
关键词:运动项目推荐;用户体验;mysql;hadoop
二、开发环境
hadoop后端+html前端+大数据屏——>hadoop、html、大数据屏
————————————————
三、功能介绍
2.2功能需求分析
运动项目推荐系统的主要目的分为三个。
首先:可以通过该系统可以很好的整合和发布体育项目的相关信息。以前通过传统的项目查询以及体验反馈的方式有个最大的问题就是信息查询、反馈方式繁琐,而且各种信息容易丢失,有了这样一个运动项目推荐系统,那么则可以很容易的把所有的运动项目信息都放到数据库中,如果再对数据库进行备份处理,那么这样就可以很好的对运动项目信息进行保存。
其次:运动项目推荐系统提供了一个用户和用户,用户与管理员进行互动交流的系统,用户可以通过注册获取一个帐户,查询运动项目相关的信息,进行体验反馈等。在这个系统中,用户之间可以进行随时查询、交流等。
再次:该系统需要很好的功能扩充性和可维护性。由于该系统是涉及的用户比较多,对管理员来说同样也是一个信息管理系统,包括用户信息,公告信息,运动项目信息等。而且,随着用户数量的增加,必然对程序的更新迭代要求更高,所有在开发的时候就需要注意程序的可维护性和可拓展性。
2.3用例分析
运动项目推荐系统中的管理员角色主要负责了如下功能操作。
(1)公共管理功能需求:站点管理包括了轮播图,公告栏两部分,管理员可以对这两部分进行添加,修改,删除和查询等。
(2)用户管理功能需求:用户管理部分包括了管理员,注册用户两部分,管理员可以对这两部分进行添加,修改,删除以及查询等。
(3)信息管理功能需求:内容管理部分包括了体育项目管理、项目分类、体验反馈等,管理员可以对其进行管控。
图2-1管理员角色用例图
运动项目推荐系统中的注册用户角色主要负责了如下功能操作。
(1)注册登录功能需求:没有账号的用户,可以输入账号,密码,昵称,邮箱等信息进行注册操作,注册后可以输入账号和密码进行登录。
(2)公告信息功能需求:用户可以登录系统后点击导航栏的“公告信息”进行公告浏览查看。
(3)体育资讯功能需求:用户可以查看系统发布的最新体育资讯信息操作。
(4)体育项目功能需求:用户可以在体育项目栏查看以及搜索具体某项体育运动的信息等。
图2-2用户角色用例图
运动项目推荐系统的整体架构确定以后,再来看运动项目推荐系统的主要功能模块图。整体的功能模块包括前台和后台,前台只要实现了注册用户功能,主要的页面,包括首页,体育资讯,体育项目,公告信息等页面。后台的模块主要实现了管理员用户功能,有登录、公共管理、用户管理、信息管理等。确定了模块以后,再设计各个模块的功能特点,方便抽取出各个模块的公共部分来。
图3.1运动项目推荐系统功能模块图
四、核心代码
部分代码:
# -*- coding: utf-8 -*-
import os
import importlib
services_abspath_arr = []
services_arr = []
services_dir_ = os.getcwd() + "\\hadoop"
# 遍历模块文件(绝对路径)加到services_abspath_arr数组
# 选择服务函数
def service_hadoop_select(str):
for service_item in services_arr:
if str.capitalize() == service_item.__class__.__name__:
return service_item
def foreach_file(path_name):
for root, dirs, files in os.walk(path_name):
for f in files:
services_abspath_arr.append(os.path.join(root, f))
# 读取模块
# f:文件路径
def loadmodule(f):
# 将f变成相对路径
f = f.replace(services_dir_ + "\\", "").replace(".py", "").replace("\\", "/")
# print(f)
mod = importlib.import_module(
"jobs."+f.replace("/", ".")
)
arr_1 = f.split("/")
cs_service = getattr(mod, arr_1[len(arr_1) - 1].capitalize())
# service的class形式
service = cs_service()
services_arr.append(service)
foreach_file(services_dir_)
for f in services_abspath_arr:
if f.find(".pyc") == -1 and f.find("__init__") == -1:
# print(f)
loadmodule(f)
五、效果图
发表评论