基于协同过滤算法实现海洋馆预约服务平台的设计与开发

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 基于协同过滤算法实现海洋馆预约服务平台的设计与开发

项目编号:BS-PT-093

一,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

二,项目简介

海洋馆预约服务平台应为广大观众来馆参观预约和管理者使用提供便利,本课题计划设计并实现海洋馆预约服务平台,该平台分为前台和后台两个部分,针对用户角色主要分为超级管理员、管理员、普通用户三个角色;

普通用户具有:个人信息管理、浏览场馆、预约服务管理、查看预约记录等功能。

管理员具有:用户管理、预约管理、服务管理、场馆信息管理、公告管理等功能。

超级管理员具有对管理员基本信息进行修改、增加、删除等功能。

普通用户使用前台模块实现注册、登录、修改密码、浏览海洋馆场馆、预约场馆、查看预约记录、评价、订单管理、会员中心、留言、投诉等功能;后台功能主要为管理员提供,包括系统管理员包括超级管理员,实现系统的运营和维护功能。

  1. 前台功能

 1)首页:提供一个网站首页,显示该网站LOGO图标,该网站用户的登录,注册,所有场馆的级别分类、门票价格、最新公告和的介绍的展示等。

2)注册登录

用户在没有登录系统时是无法完成海洋馆预定、留言等功能,在此页面上输入相关信息可以进行登录,若尚未注册账号,点击注册即可跳转至注册界面进行注册,且保证用户名唯一则注册成功。

3)场馆预约

用户登录进入主界面,点击场馆即可跳转,该界面主要展示水族馆的地点、开放时间、门票价格等主要信息。

4)公告信息

用户可在首页界面查看海洋馆的最新公告信息,以及紧急特殊情况

5)会员中心

该界面主要包括普通用户的基本信息,即订单中心和账户信息。订单中心包括我的订单和我的留言,我的订单即可查看用户本人订单的情况、付款和待付款等情况;账户信息包括个人资料和修改密码等。

6)协同过滤推荐展示:主要根据用户的个人行为来记录,并根据记录数据采用协同过滤算法来实现推荐

  1. 后台管理
  2. 超级管理员
  3. 管理员登录:管理者根据账户和密码进行登录。
  4. 场馆信息管理:管理者可以对前台显示的场馆级别分类进行管理,包括添加、删除、修改操作。
  5. 用户管理:管理者可以查看该网站中已经注册过的所有用户的所有信息。

技术说明:

洋馆预约服务平台的设计与开发是采用面向对象的设计思想,以MySQL为后台数据库,以Java为开发语言,运用JSP技术基于B/S架构,使用Eclipse集成开发环境、Tomcat服务器。

  1. B/S架构

随着Internet和WWW的流行,以往的主机/终端和C/S都无法满足当前的全球网络开放、互连、信息随处可见和信息共享的新要求,于是就出现了B/S型模式,即浏览器/服务器结构。B/S架构最大的优点是总体拥有成本低、维护方便、 分布性强、开发简单,可以不用安装任何专门的软件就能 实现在任何地方进行操作,客户端零维护,系统的扩展非常容易。

(2)Java

Java是一门面向对象的编程语言,具有功能强大和简单易用两个特征,Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。

  1. MYsql

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL 作为网站数据库。

三,系统展示

个性化数据推荐

海洋馆详情

在线评论

地图导航

在线预定

我的订单

后台管理

功能展示略

四,核心代码展示

package com.lvyou.controller;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import com.lvyou.dao.MyBatiesPublic;
import com.sxl.util.DBHelper;
import com.sxl.util.JacksonJsonUtil;
public class MyController{
  @Autowired
  public MyBatiesPublic db2;
  @Autowired
  public DBHelper db;
  public Map getAdmin(HttpServletRequest request){
    Map customerBean = (Map)request.getSession().getAttribute("adminBean");
    return customerBean;
  }
  public Map getCustomer(HttpServletRequest request){
    Map customerBean = (Map)request.getSession().getAttribute("customerBean");
    return customerBean;
  }
  public Map getUser(HttpServletRequest request){
    Map customerBean = (Map)request.getSession().getAttribute("userBean");
    return customerBean;
  }
  public ResponseEntity<String> renderMsg(Boolean status, String msg) {
    if (StringUtils.isEmpty(msg)) {
      msg = "";
    }
    StringBuffer sb = new StringBuffer();
    sb.append("{");
    sb.append("\"status\":\"" + status + "\",\"msg\":\"" + msg + "\"");
    sb.append("}");
    ResponseEntity<String> responseEntity = new ResponseEntity<String>(
        sb.toString(), initHttpHeaders(), HttpStatus.OK);
    return responseEntity;
  }
  public void writeToExcel(HSSFWorkbook wb, String fileName,HttpServletResponse response)
      throws IOException {
    fileName = (fileName == null || fileName.equals("")) ? "result"
        : fileName;
    fileName = java.net.URLEncoder.encode(fileName, "UTF-8").replace('+',
        ' ');
    response.reset();
    response.setContentType("application/vnd.ms-excel");
    response.setHeader("Content-Disposition", "attachment;filename="
        + fileName + ".xls");
    wb.write(response.getOutputStream());
    response.getOutputStream().flush();
    response.getOutputStream().close();
  }
  public ResponseEntity<String> renderData(Boolean status, String msg,
      Object obj) {
    if (StringUtils.isEmpty(msg)) {
      msg = "";
    }
    StringBuffer sb = new StringBuffer();
    sb.append("{");
    sb.append("\"status\":\"" + status + "\",\"msg\":\"" + msg + "\",");
    sb.append("\"data\":" + JacksonJsonUtil.toJson(obj) + "");
    sb.append("}");
    ResponseEntity<String> responseEntity = new ResponseEntity<String>(
        sb.toString(), initHttpHeaders(), HttpStatus.OK);
    return responseEntity;
  }
  public ResponseEntity<String> renderComboBoxAjax(Object obj) {
    ResponseEntity<String> responseEntity = new ResponseEntity<String>(
        JacksonJsonUtil.toJson(obj), initHttpHeaders(), HttpStatus.OK);
    return responseEntity;
  }
  /**
   * 返回服务器地址 like http://192.168.1.1:8441/UUBean/
   */
  public String getHostUrl(HttpServletRequest request) {
    String hostName = request.getServerName();
    Integer hostPort = request.getServerPort();
    String path = request.getContextPath();
    if (hostPort == 80) {
      return "http://" + hostName + path + "/";
    } else {
      return "http://" + hostName + ":" + hostPort + path + "/";
    }
  }
  /***
   * 获取当前的website路径 String
   */
  public static String getWebSite(HttpServletRequest request) {
    String returnUrl = request.getScheme() + "://"
        + request.getServerName();
    if (request.getServerPort() != 80) {
      returnUrl += ":" + request.getServerPort();
    }
    returnUrl += request.getContextPath();
    return returnUrl;
  }
  /**
   * 初始化HTTP头.
   * 
   * @return HttpHeaders
   */
  public HttpHeaders initHttpHeaders() {
    HttpHeaders headers = new HttpHeaders();
    MediaType mediaType = new MediaType("text", "html",
        Charset.forName("utf-8"));
    headers.setContentType(mediaType);
    return headers;
  }
  /***
   * 获取IP(如果是多级代理,则得到的是一串IP值)
   */
  public static String getIpAddr(HttpServletRequest request) {
    String ip = request.getHeader("x-forwarded-for");
    if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
      ip = request.getHeader("Proxy-Client-IP");
    }
    if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
      ip = request.getHeader("WL-Proxy-Client-IP");
    }
    if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
      ip = request.getRemoteAddr();
    }
    if (ip != null && ip.length() > 0) {
      String[] ips = ip.split(",");
      for (int i = 0; i < ips.length; i++) {
        if (!"unknown".equalsIgnoreCase(ips[i])) {
          ip = ips[i];
          break;
        }
      }
    }
    return ip;
  }
}
package com.lvyou.controller.admin;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.lvyou.controller.MyController;
@Controller("adminCustomerController")
@RequestMapping(value = "/admin/customer")
public class AdminCustomerController extends MyController {
  @RequestMapping(value = "/frame")
  public String frame(Model model, HttpServletRequest request)throws Exception {
    return "/admin/customer/frame";
  }
  @RequestMapping(value = "/list")
  public String list(Model model, HttpServletRequest request,String username,String customerName)throws Exception {
    String sql="select a.* from t_customer a where 1=1";
  if(username!=null&&!"".equals(username)){
      sql+=" and username like '%"+username+"%'";
    }
  if(customerName!=null&&!"".equals(customerName)){
      sql+=" and customerName like '%"+customerName+"%'";
    }
    sql+=" order by id desc";
    List list = db.queryForList(sql);
    request.setAttribute("list", list);
    return "/admin/customer/list";
  }
  @RequestMapping(value = "/editSave")
  public ResponseEntity<String> editSave(Model model,HttpServletRequest request,Long id
    ,String username,String password,String customerName,String sex,String address,String phone,Integer account,Integer jf,String status) throws Exception{
    int result = 0;
    if(id!=null){
      String sql="update t_customer set username=?,password=?,customerName=?,sex=?,address=?,phone=?,account=?,jf=?,status=? where id=?";
      result = db.update(sql, new Object[]{username,password,customerName,sex,address,phone,account,jf,status,id});
    }else{
      String sql="insert into t_customer(username,password,customerName,sex,address,phone,account,jf,status) values(?,?,?,?,?,?,?,?,?)";
      result = db.update(sql, new Object[]{username,password,customerName,sex,address,phone,account,jf,status});
    }
    if(result==1){
      return renderData(true,"操作成功",null);
    }else{
      return renderData(false,"操作失败",null);
    }
  }
  @RequestMapping(value = "/editDelete")
  public ResponseEntity<String> editDelete(Model model,HttpServletRequest request,Long id) throws Exception {
    String sql="delete from t_customer where id=?";
    int result = db.update(sql, new Object[]{id});
    if(result==1){
      return renderData(true,"操作成功",null);
    }else{
      return renderData(false,"操作失败",null);
    }
  }
  @RequestMapping(value = "/updateColumnsex")
  public ResponseEntity<String> updateColumnsex(Model model,HttpServletRequest request,Long id,String sex) throws Exception {
    String sql="update t_customer set sex=?   where id=?";
    int result = db.update(sql, new Object[]{sex,id});
    if(result==1){
      return renderData(true,"操作成功",null);
    }else{
      return renderData(false,"操作失败",null);
    }
  }
  @RequestMapping(value = "/edit")
  public String edit(Model model, HttpServletRequest request,Long id)throws Exception {
    if(id!=null){
      //修改
      String sql="select * from t_customer where id=?";
      Map map = db.queryForMap(sql,new Object[]{id});
      model.addAttribute("map", map);
    }String sql="";
    return "/admin/customer/edit";
  }
}

五,相关作品展示

基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的实战项目

基于Nodejs、Vue等前端技术开发的前端实战项目

基于微信小程序和安卓APP应用开发的相关作品

基于51单片机等嵌入式物联网开发应用

基于各类算法实现的AI智能应用

基于大数据实现的各类数据管理和推荐系统

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7月前
|
机器学习/深度学习 算法 搜索推荐
外卖平台推荐算法的优化与实践
外卖平台推荐算法的优化与实践
|
4月前
|
数据采集 数据可视化 搜索推荐
Python爬虫技术从去哪儿网获取旅游数据,对攻略进行可视化分析,提供全面的旅游攻略和个性化的出行建议
本文利用Python爬虫技术从去哪儿网获取旅游数据,通过数据处理和可视化分析,提供了全面的旅游攻略和个性化出行建议,同时探讨了热门目的地、出游方式、时间段以及玩法的偏好,为旅游行业和游客提供了有价值的参考信息。
268 9
|
7月前
|
新零售 人工智能 大数据
和优良品商城开发案例分析(模式)
系统观念并非抽象的理论,而是一种看待问题的方式
|
6月前
|
搜索推荐 算法 前端开发
计算机Java项目|基于协同过滤算法的体育商品推荐系统
计算机Java项目|基于协同过滤算法的体育商品推荐系统
|
7月前
|
安全 数据可视化 数据挖掘
数据分享|AARRR模型淘宝用户行为分析、电商销售分析
数据分享|AARRR模型淘宝用户行为分析、电商销售分析
|
小程序 图形学
课程设计项目——基于3D建模技术的车位在线销售平台(移动端)
课程设计项目——基于3D建模技术的车位在线销售平台(移动端)
课程设计项目——基于3D建模技术的车位在线销售平台(移动端)
|
7月前
|
搜索推荐 算法 关系型数据库
基于协同过滤算法实现海洋馆预约服务平台的设计与开发
基于协同过滤算法实现海洋馆预约服务平台的设计与开发
|
7月前
|
JavaScript 小程序 Java
基于Java的大学生在线租房平台的设计与实现(亮点:合理的租房流程、房屋报修、多角色、在线评论回复)
基于Java的大学生在线租房平台的设计与实现(亮点:合理的租房流程、房屋报修、多角色、在线评论回复)
103 0
|
7月前
|
算法 搜索推荐 前端开发
旅游推荐平台|酒店推荐平台|基于协同过滤算法实现旅游酒店推荐系统
旅游推荐平台|酒店推荐平台|基于协同过滤算法实现旅游酒店推荐系统
147 0
|
小程序 安全 图形学
课程设计项目——基于3D建模技术的车位在线销售平台(序言)
课程设计项目——基于3D建模技术的车位在线销售平台(序言)