[点赞收藏免费领取 · 项目源码]老年群体的兴趣社交小程序-计算机课设毕设源码 45221
摘 要
老年群体交际圈存在信息接收难,兴趣吻合率低的问题。传统的交际方式不能够满足老年人群对于爱好交流以及兴趣活动的需求,信息壁垒十分严重。以微信小程序应用生态圈提供了解决此类问题的新思路。本文针对老年群体社交现状设计并实现了面向老年人的兴趣交友微信小程序“老友汇”。其后台基于SpringBoot框架搭建了RESTful风格API服务,前台基于Uni-app技术实现跨端兼容式开发,其数据持久化存储采用MySQL数据库。系统主要的功能模块有:兴趣小组、好友推荐、即时聊天、兴趣课堂、活动公告和网上商城六个部分,希望借助精确定位的兴趣标签匹配,简便易用的交互工具使老年人扩大交际范围、充实自己的精神世界。管理员可以通过独立管理后台来管理圈组、活动、用户、商品订单等方面。系统测试表明:系统运行稳定,功能实现符合预期目标。为老年人提供了一个安全、友好、实用的线上交际环境。
关键词:老年人社交互动;兴趣社区;微信小程序;Spring Boot;Uni-App
Abstract
Social interaction among the elderly has also faced various problems including poor access to information and poor interest matching. There are information silos across many traditional social models due to their inability to provide sufficient opportunities to meet the elderly deeply rooted desire of having peer communication and engaging in interest-based activities. Based on WeChat Mini Program-based application ecosystem provides an innovative technological solution to this problem. The proposed research develops and deploys a social mini-program, which is based on interests and it is called Old Friends Hub aimed at the elderly. The system backend is constructed with Spring Boot to construct RESTful API applications, whereas the frontend is developed in the multi-platform adaptive mode using the Uni-App technology, and the data layer is stored in the form of a MySQL database to ensure its persistence. Key functional modules: interest circles, friend recommendation lists, online chat, interest training, the activity bulletin board, and a shopping mall are expected to enable the elderly to widen their social circles and to enhance their spiritual and cultural life and social interaction tools through accurate matching of interest tags and easy-to-use tools. Administrators have a full range of control over circles, activities, users and product orders with a separate backend. The findings of the testing showed that the system is running steadily and its capabilities correspond to the design requirements, forming a secure, accessible, and useful online social community of the elderly users.
Key words:Elderly Social Interaction; Interest Community; WeChat Mini Program; Spring Boot; Uni-App
第一章 绪论
1.1 研究背景与意义
1.1.1 研究背景
老年社交服务行业存在服务供给模式单一及社会融入路径不足的问题。我国社会逐渐步入老龄化阶段,人数众多的老年群体物质生活有了相应的满足之后,在精神层面上的需求越来越强烈,其中就包括精神寄托、人际交流以及自我价值实现等,但现有的线上线下的社交供给服务存在明显的衔接断裂现象,线下交流受时间和空间的限制且成本较高,而绝大部分线上社交软件界面繁琐复杂信息冗杂,不利于老年人的操作使用,造成老年人之间的代际壁垒加大,社交闭塞圈子缩小[1]。缺乏对老年人兴趣爱好的深入挖掘和系统化的组织平台,致使很多有着共同兴趣的老年人无法找到对方进行有效链接[2],这就造成了供需失衡的局面,也催生出了以服务于老年人为主的细分化、适老化社交产品的市场急需。而微信小程序的无需下载即点即用及生态环境成熟的特质,能够很好地胜任轻量级、高黏度老年群体的社交入口建设[3]。基于此背景出发,开发一款围绕老年人兴趣为中心,减少多余步骤流程,增强相互信任感的微信小程序,对于解决目前存在的老年社交困局有很强的现实意义。
1.1.2 研究意义
研发“老友汇”小程序目的在于打造一个基于共同兴趣、安全可靠的新一代老人社交平台。平台聚合兴趣小组圈层、智能推荐好友、在线实时聊天和组织线下活动等多种功能,在很大程度上减少了老年人群体发现志同道合者及参加团体活动的时间成本与资金投入,直接提高了老人之间的交友速度和活动参与频次。对社区、养老院、老年大学等机构来说也提供了高效率的信息化管理系统,方便进行活动发布,人员管理,信息收集等工作,有利于整合资源,提高对老人的服务覆盖面和服务质量。项目的实施过程对其他类似老龄化的数字化产品开发有直接的功能设定、界面交互设计以及运行管理方面的参考意义,对推进我国养老服务业数字化进程有着重要价值。更重要的是鼓励老年人积极参与数字生活,踊跃加入网络社群,有助于减轻老年人的空虚孤独感,增加生活的满意度和幸福感,有良好的社会效益。
1.2 国内外研究现状
1.2.1 国内现状
我国对适老化的移动社交应用的研究也已经从泛化社交平台深入到垂直细分的领域中去,尤其是在人口老龄化与科技相结合的社会背景下,面向老年人生活的日常生活服务类应用、健康监护类应用以及轻量级社交应用成为了研究的焦点。而在技术层面,基于微信小程序生态环境的开发方式凭借开发成本低廉、用户基础广泛、传播链条较短的优点受到了诸多研究者的推崇,学者主要围绕如何利用小程序的功能优势来满足某一应用场景中的老龄人群服务问题展开研究。
杨桂芳等人开发完成了一个以微信小程序为基础的社交导航系统。该系统集成了位置服务以及社交服务,是专门针对老年人外出过程中方便快捷且安全的一种设计,其技术架构证明了小程序用于结合地理位置和轻社交应用程序的可能性[4]。彭华海等人关注了小程序版社交平台的设计与实现,探索了如何在小程序框架下搭建一个社区交流平台以及内容分享模块的技术方法,为本系统兴趣圈子的设计提供了社区层面的思路参考[5]。王婉先等人针对老年人群体设计了一个出行安全小程序,其重点在于如何通过简单的页面、清晰的操作步骤增强老年人的信心,其交互设计理念对本系统前端的适老化设计有着一定启示作用[6]。孟凡淑等人对“晚年轻松”购物小程序进行设计分析研究,主要针对老年人电子商务情景中的商品呈现、付款便利化等问题进行研究,其设计成果对本系统的嵌入式购物车和订单模块用户体验设计有一定参考价值[7]。张天爽等人基于设计学的角度对日常生活类APP界面的老龄化设计原则做了研究,提出了关于字体、颜色、布局等方面的明确标准,是本系统前端界面设计重要的美学和体验指导。综上所述,在安全守护、便利购物、社区互动等单一功能方面国内已有很多的研究,但是如何整体地建立一个以兴趣图谱为中心,集社交、活动、学习和小额购物为一体的全方位老年社交平台的功能融合和实例还较少,本系统“老友汇”的设计填补了这一缺口,致力于整合兴趣圈子、好友推荐、即时通讯、课程活动和商场等模块,构成一个闭环的整体的老年线上社交生态圈。
1.2.2 国外现状
国外研究对老年人数社交与健康干预领域的研究交叉学科特征及技术先进性更强,通常会将社交功能同认知训练、健康管理等结合起来,在研究过程中也更加重视实证研究与数据分析,如Wu J.等设计并使用一款基于游戏的微信小程序来对我国老年人的认知障碍进行筛查[8],可见国外学者善于利用小程序轻便的优势开展较为严谨的医疗健康干预类的研究,将其娱乐性和实用性的设计理念可以为本系统“兴趣培训”模块加入轻松的学习元素带去启示。而Hou J研究了基于微信小程序开发的双语教学在新生产力条件的应用[9],尽管应用场景相异,但是其利用小程序开展非正式学习辅助的方式可以作为本系统设计线上兴趣课程时可以吸取的经验。Wang M等设计并实现了一个叫“本地风味”的农产品电商购物微信小程序[11],其研究过程展示了如何在小程序内建立完整购物流程,其中的商品管理和订单处理流程,可以为本系统的购物等模块后台逻辑的设计提供借鉴。Yubo L等设计并实现了一个名为“云游甘谷”的微信小程序[12],其目的是为了促进当地文化旅游业的发展,其通过多种媒体素材来体现地域文化的展现手法,可以给本系统展示兴趣圈活动成果的方式提供了新的思路。Cao M等研究了基于微信小程序的中医药汉语辅助学习和测验工具的设计和应用[13],其展示了微信小程序辅助某一知识领域的学习的可能,加深了对于本系统开发“兴趣培训”模块意义的理解。总的来看,国外研究更加关注的是微信小程序对于某一细分领域的深入开发以及相应的实证分析结果,其功能设计通常都是有明确的研究目的与理论基础作为支撑的。本系统借鉴其在功能融合、用户感受、数据分析上的理念,并结合我国老年人具体的社交习惯以及文化环境,更加强调构建一个贴近日常生活,简单易学的兴趣导向型的综合社交平台而不是单一化的医疗工具或是学习产品。
1.3 主要研究内容
本文的主要任务是对针对老年人群的爱好者社交小程序“老友汇”进行全流程研发设计。从分析定位的目标用户——老年人的社交需求及行为习惯开始入手,确定出系统的真正痛点,继而确认普通用户与管理员两大类主体的具体职责范围。以明确清晰的需求为目标导向开展系统总体框架的设计,确立起来基于前后端分离架构基础上,运用SpringBoot+Uni-App+MySQL等为主要技术的开发路径选择。接下来的工作重心则会转移到细致的系统设计中来,包括功能性模块划分的设计、主要业务流程图的设计、并包括了系统的数据基础设计即数据库的概念模型和逻辑模型的设计,ER图的设计与表结构的设计也将成为后期开发的重要依据。在实现环节要根据系统设计编写相关代码模块,并制作UI界面同时进行前端与后端的数据对接调试。最终交付一套完整可用并可以正常运行的功能系统。该研究重点在于整个系统的功能性设计开发及其用户体验层面的研究,对于低层次如算法层面的优化、高并发等问题并不做深一步探究研究。预期结果产出将是一整套的系统设计方案、可正常运行的小程序源码和后台管理源码以及相关的系统测试用例。希望能够为以后类似适老化社交APP的研发有一个借鉴参考的作用。
第二章 相关技术介绍
2.1 Spring Boot框架
Spring Boot框架在Java企业级应用开发中承担着降配置、快启动的重要任务,其秉持“约定大于配置”的原则,自带内嵌式Web容器并采用自动配置的方式,大幅降低了传统Spring框架对新项目初始化阶段、引入依赖以及部署环境等方面的大量手工步骤。使用者能够快速创建独立的、可用于生产的基于Spring框架的微应用,能够使开发人员把更多的时间花费在业务代码上而减少对配置的关注。本文所设计的系统使用Spring Boot担当后端服务骨架,用于建立RESTful风格API接口,接收来自Uni-App前端发起的业务请求,整合Spring MVC进行请求分派和控制,Spring Data JPA实现数据访问层封装,同时提供完整可靠地依赖注入和面向切面编程功能等,保证了后端服务层次架构分明、便于管理和高效执行[14]。
2.2 Uni-App框架
Uni-App是一套基于Vue.js语法进行全端应用开发的跨平台前端框架。它的优点是让开发者只写一次代码,即可同时在iOS、Android、Web及各类小程序平台中运行,极大地节省了多平台适配的成本和时间。Uni-App利用条件编译和原生扩展的方式来应对各个平台上的差异性问题。并且保留了Vue.js基于数据驱动和组件化的开发方式所带来的良好开发体验。“老友汇”项目如果选择使用Uni-App就能够在短时间内同时产出微信小程序和H5网页两种版本的前端应用,从而最大限度地包含老年人最常用的打开渠道。框架本身庞大成熟的组件库和插件生态,也为实现适老化布局和交互提供方便,使开发精力更多地投入到实际功能及体验的打磨上去。
2.3 MySQL数据库
MySQL是一款关系型数据库管理系统,以开放源码、高性能、稳定及使用方便闻名,支持标准SQL,具备事务处理能力、外键、视图以及存储过程等功能,适用于中小型应用系统的数据存储。MySQL使用客户/服务端架构,实现了对数据的统一存储和安全管理,在该系统中MySQL负责存储并管理系统中的所有结构化数据,如用户基本信息、兴趣圈信息、活动信息、商品交易单据、好友列表等信息,可靠的性能以及活跃的技术论坛社区为系统中数据的安全性、准确性和一致性奠定了基础。科学合理地设计数据库表及索引可以很好地满足系统的查询及交易性能要求[15]。
2.4 前后端分离架构
前后端分离就是一种新型的Web应用架构模式,其将应用程序的用户界面层从业务逻辑及数据访问层中进行物理上以及逻辑上的拆分。在该体系结构中,前端只负责用户界面上的展示与交互逻辑,通过发起HTTP请求,调用后端提供的API接口获取到数据或者对数据做出相应处理;而后端主要负责业务处理,数据校验、持久化等逻辑层面,然后以JSON等格式将需要的数据返回给前端。前后端分离所带来的职责明晰使得前端后端可以并行开发,加快了开发速度。另外,前后端分离便于团队技能专一化及前端能够单独部署发布,后端API也可以得到多客户端复用的机会[16]。本文项目使用前后端分离架构方式,Uni-App编写的前端程序与基于Spring Boot实现的后台程序之间以预先定义好的RESTful API进行对接,做到了分工明确,提升了项目的可维护性、扩展性和灵活程度。
第三章 系统分析
3.1 可行性分析
3.1.1 技术可行性
系统的开发使用的技术框架成熟稳定、社区活跃。Spring Boot框架降低了后台服务开发难度,强大的起步依赖以及自动配置可帮助我们迅速创建出RESTful风格API;Uni-app框架基于流行的Vue.js,“一套代码,多端发布”的优点非常适用于开发微信小程序,便于触达用户群体;而MySQL是一款经典的成熟关系型数据库产品,能够应对该项目所涉及的各种结构化数据的保存和事务性操作。各技术之间以统一的HTTP/HTTPS协议和JSON数据格式交互,集成链条明确;就技术实现层面而言,开发本系统各个功能模块并不需要应对复杂的难题,在当前的技术环境下完全支撑得起本系统的研发部署并保持稳定运行[17]。
3.1.2 操作可行性
整个系统的设计一直都围绕着老年人的操作来展开。前端界面符合了适老化的设计规范,使用大号字体、高对比的颜色,简单直白的图标、布局设计,使界面的干扰降到最小,认知负担也降到了最低;关键流程都尽可能地做到最简化,如:一键加入圈子、便捷式的活动报名、简单的支付购物过程等,在线即时聊天也如同发短信般的简便快捷。而对于管理者后台,尽管有诸多功能,但是明确的菜单分类以及表格设计,使其管理起来也不是太复杂的问题。整体看来,不论是老年人还是管理者都是经过短时间的学习便可以上手掌握,系统的操作难度也控制在一个合理的水平上,具有较好的可操作性。
3.1.3 法律可行性
平台在开发及运营时会严格按照相关的法律法规执行。在用户信息保密问题上,将会依照《个人信息保护法》的规定,向客户说明个人信息采集和使用的范围,取得客户同意并采取安全防范的技术手段保护客户信息安全。在平台管理方面,设立审核制度,对客户在圈子、论坛处发布的信息内容进行审核,杜绝发布不良信息、非法有害信息。对于所含有的电商业务模块也会有相应的交易规定,售后服务条例来维护买卖双方的权利。该平台不存在国家规定不允许提供的服务项目,所有的经营模式都在国家法律法规允许范围内开展,法律风险较低。
3.2 功能需求分析
UML用例图是用来描绘系统的功能以及用户的操作的一种建立模型的工具,利用角色同用例之间的关系来说明系统在某些情况下所发生的行为。用例图可以很清晰地表达出系统范围。清楚地显示出系统外的角色及系统间的交流方式,角色指的是系统中不同的用户类型或者是外部系统,而这些用例都是指出了系统所提供的功能和服务。用例图对于需求分析有着重大的意义,在这个过程中可以帮助开发人员找到主要的功能,防止遗漏重要的需求问题。由于它是以图形的形式呈现出来,因此易于交流理解和记忆,可以作为后面系统的设计与实现的基础。本文将基于系统按角色模块来进行需求分析。
3.2.1 用户功能
用户在购物车内添加、移除商品,自行管理购物车内的物品列表。用户可浏览各的兴趣小组群,按自己喜好加入感兴趣的圈子。用户能够接受平台推荐的朋友,开展交友活动。用户之间可通过线上聊天方式互相交谈联系。用户可阅读浏览感兴趣的技能培训课程,增长新本领技术。用户可阅读查看活动通知,掌握社区内举办的相关活动。用户能阅读查看朋友列表,保持好与朋友的关系。用户可浏览商品信息。选择自己喜爱的商品。用户可追踪商品的送货情况,掌握投递信息。用户用例图如下图3-1所示。

图3-1用户用例图
3.2.2 管理员功能
管理员可进行兴趣圈层的生成、编辑以及删除等一系列管理行为。管理员可浏览并维护用户的兴趣圈层加入日志。管理员可发布更新以及删除兴趣学习班。管理员可以对兴趣标签做增加、删除、查询等相关维护行为。管理员可设置以及维护好友推荐算法以及规则。管理员可以浏览并维护用户之间的建立朋友关系与解除朋友关系的日志。管理员可发布维护编辑撤回不同类型社区活动公告。管理员可浏览及维护用户参加活动报名表单。管理员可浏览用户学习班打卡记录。管理员用例图如下图3-2所示。

图3-2管理员用例图
3.3 非功能需求分析
1.可用性需求
可用性要求系统具有稳定的速度,即使在高并发访问量的情况下也能够使界面加载顺畅,在各平台之间具有通用性,无论使用何种设备进行访问都会有相同的操作体验,拥有明确的界面排布以及直接的操作流程,方便人们操作,同时还能进行长期的性能维护,能够对系统的功能加以扩充,使整个生命周期中的可用程度都较高。
2.可靠性需求
可靠性方面,系统需要有自动化的错误恢复手段,面对部分失效仍能保障基本的功能运转。系统需要具有数据的备份以及恢复方案,在发生意外事件的情况下保障数据不丢失。系统需要采取一定的冗余措施,以增强可用性。系统需要具备监控以及跟踪日志能力,保证对整个运行过程进行监测、查找错误。
3.安全性需求
安全性上要有权限管理的功能来使各类人员在自己的授权范围内完成相应的任务;要有识别验证、加密的功能来保护信息发送及保存环节的安全;要有入侵监测、防御机制以减少被袭概率;要具有日志追踪功能做到所有操作均可逆以达到合规标准的要求。
第四章 系统设计
4.1 系统架构设计
本系统使用前后端分开的分层式结构设计,以便明确职责分工,提高系统的可维护性。展示层是由Uni-app编写的微信小程序前端所组成,用于完成对所有用户的展示以及操作事件的触发,向后台接口发送请求,获取数据。服务层是完成业务处理核心部分,通过Spring Boot框架搭建,在接收到前端请求后进行具体的业务规则处理、数据校验与计算以及协调数据层的操作。数据层利用MySQL数据库管理系统存放所有的业务实体信息,以保证数据安全可靠,通过ORM框架完成对象到关系的转换。支撑层提供给上层运行的基础环境和服务,包括WEB服务器、依赖注入容器、配置、安全等。系统使用分层的方式解耦各个层级使得他们可以各自单独开发、测试、部署,系统的整体结构如图4-1所示。

图4-1系统架构图
4.2 系统结构功能设计
“老友汇”系统服务于常见的两种身份,分别为普通用户及管理员,以老年兴趣交友为根本目的设计功能模块,其中普通用户侧面向社交交友和兴趣圈层探索两个方向,主要包含的功能是:通过“兴趣圈子”来寻找自己的兴趣圈子并与其进行交流;使用“好友推荐”系统自动为您推送可能成为您好友的人;通过“在线聊天”与自己的好友时刻保持着联系;参加“兴趣培训”在线学习相关课程;查看“活动信息”并报名相应的线下的活动;管理自己“好友记录”;在“商品信息”的专区中查看相应的产品信息,在“购物车”里对其进行挑选并创建订单,最后查看自己的“订单配送”。管理员侧则主要针对管理平台及处理内容方面,主要包括:“兴趣圈子”管理、“加入记录管理”、“兴趣培训管理”、“兴题标签管理”、“好友推荐管理”、“好友记录管理”、“活动信息管理”、“报名记录管理”、“打卡记录管理”,保证平台上的内容合规,活动顺利进行,营造良好的交友氛围;系统功能结构图如图4-2所示。

图4-2系统功能结构图
4.3 系统流程设计
4.3.1 总体业务流程图设计
系统总业务流程是从用户登录验证开始,经登录成功后跳转到系统首页。用户在首页上能够进行浏览并点击进入不同的功能区块,如进入感兴趣的圈子或查找商品等,在点击进入到具体的业务模块后,用户在该模块下的主要的操作行为,比如申请加入某个圈子,商品加入购物车或报名参加活动等,都会触发后台相关的业务处理流程。后台的处理过程一般伴随着数据库相关增删改查的操作,并产生结果返回给前端。后台处理完之后流程就指向了功能的终点节点,此时用户可以选择返回首页或者做其他的动作。系统总的业务流程图如下图4-3所示。

图4-3总体业务流程图
4.3.2 购物车功能流程设计
用户在商品展示页进行加购操作后,先判断用户是否有登录状态,如果没有登录则跳到登录界面,登录成功或者已经处于登录状态的话,则把请求过来的商品信息与对应的用户编号构成一个购物车条目。然后程序进行判断当前要加购的商品是否已经在购物车内存在了相应的条目,如果存在的话就将数量进行更新处理,如果不存则添加新的一条购物车信息,处理完毕后数据库端同步进行购物车信息的更新,前端页面更新后展示当前最新的购物车列表。购物车逻辑如下图4-4所示。

图4-4购物车功能流程图
4.3.3 兴趣圈子加入流程设计
用户浏览到感兴趣的兴趣圈并点击加入按钮,后台服务端接收到加入请求。保存请求记录到数据库,状态设置为未审核,同时给管理员待办事项新增一条消息提示,管理员登陆后台,在加入记录管理可以查看到此条记录,管理员依据圈子规定审核用户资料,进行通过或者拒绝的操作,审核结果会保存到申请记录中并实时告知用户前端页面,兴趣圈加入过程如下图4-5所示。

图4-5兴趣圈子加入流程图
4.3.4 活动报名流程设计
用户在浏览了活动详情之后,想要参加于是就点击报名按键输入自己的相关信息,系统验证活动的报名资格,是否已经停止报名或者是否名额满了等等,符合条件就在报名信息表中添加了新的报名信息并设置状态位待审批,然后系统调用短信模块给相应的活动管理员发短信提醒他有新的报名信息等待审批,然后活动管理员登录到后台管理系统对这些信息进行审批操作,同意或者拒绝,审批完成之后系统更改报名信息的状态并向用户发送短信告知其审批结果。活动报名流程如图4-6所示。

图4-6活动报名流程图
4.3.5 添加好友流程设计
好友推荐列表由后台根据预设的标签匹配规则生成与维护。用户访问好友推荐界面,当用户对某位推荐对象感兴趣并点击“添加好友”按钮后,在当前用户的个人中心内生成一条的添加记录。该记录仅用于用户个人留存查看。添加好友流程如图4-7所示。

图4-7添加好友流程图
4.4 数据库设计
数据库的设计是系统实现数据永久保存的关键步骤,其以关系模型的形式把企业的概念转化为具有结构化数据表格,良好的设计可以有效的降低数据冗余量、维护数据一致性及完整性,给系统的业务流程带来可靠的保障[18]。本系统数据库的设计符合第三范式的准则,在数据库内创建合理的主外键关系来反映用户的、社交、商品等各种重要实体的关系,以便于前端复杂的检索和后台复杂的业务计算。
4.4.1 E-R图设计
用户实体主要包含用户id、用户名、密码、昵称、手机号等属性。这一实体为系统一切功能的身份起点,联系着交友、购买等各种行为信息。用户实体属性图如图4-8所示。

图4-8用户实体属性图
普通用户实体主要有普通用户id、用户id、用户姓名、用户年龄、喜好标签等字段。此实体拓展了基本信息,存储针对老年人群的个性化的社交特征。普通用户实体属性图如下图4-9所示。

图4-9普通用户实体属性图
兴趣圈实体主要包含兴趣圈ID、兴趣圈名称、兴趣类型、圈子简介、圈成员数等属性。此实体为老年人开展线上圈子社交的主要依托物。兴趣圈子实体属性图如下图4-10所示。

图4-10兴趣圈子实体属性图
兴趣培训机构主要有兴趣培训班号、班级名称、培训标签、培训内容、培训视频等属性。此实体向用户提供一个可以在线进行兴趣培养的机会,使用户能通过网络进行一些技能的学习。兴趣培训机构属性图如下图4-11所示。

图4-11兴趣培训实体属性图
活动信息实体主要是由活动信息id、活动名称、活动类型、活动时间、活动地点这几个属性构成。这个实体是用来组织管理线下的聚会以及学习等活动的一个实体。活动信息实体属性图如图4-12所示。

图4-12活动信息实体属性图
商品信息实体主要有商品信息id,商品标题,商品种类,卖价,原价等属性,它是组成小程序中的电商模块的商品数据库的基础。商品信息实体属性图如下图4-13所示。

图4-13商品信息实体属性图
订单实体主要由订单id,订单编号,商品id,买家id,商品名称等组成。此实体描述了客户购买产品的交易行为及状态转移。订单实体属性图如下图所示。

图4-14订单实体属性图
好友推荐实体主要包含好友推荐id、推荐标题、兴趣标签、推荐内容、发布日期等特征。此实体保存着系统针对用户所产生的专属社交关系链接建议。好友推荐实体属性图如图4-15所示。

图4-15好友推荐实体属性图
好友记录实体主要由好友记录id、推荐标题、推荐好友、用户信息、加入时间等构成。好友记录实体记录了用户之间的成功添加好友历史。好友记录实体属性图如下图4-16所示。

图4-16好友记录实体属性图
系统ER图如图4-17所示。

图4-17系统E-R图
4.4.2 数据库表设计
用户表主要功能是用于保存系统所有注册用户的账户基本信息。包括用户ID,用户名,密码,昵称,手机号码等等字段。如表4-1所示。
表4-1用户表
| 序号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 备注 |
|---|---|---|---|---|---|---|
| 1 | user_id | int | 11 | 是 | 是 | 用户ID |
| 2 | username | varchar | 16 | 是 | 否 | 用户名 |
| 3 | password | varchar | 64 | 是 | 否 | 密码 |
| 4 | nickname | varchar | 16 | 否 | 否 | 昵称 |
| 5 | phone | varchar | 11 | 否 | 否 | 手机号码 |
| 6 | avatar | varchar | 255 | 否 | 否 | 头像地址 |
| 7 | user_group | varchar | 32 | 否 | 否 | 所在用户组 |
| 8 | state | smallint | - | 是 | 否 | 账户状态 |
| 9 | create_time | timestamp | - | 是 | 否 | 创建时间 |
普通用户表主要是为了补充老年人个性化的用户信息。主要有普通用户id,用户id,姓名,年龄,兴趣标签等内容域。如表4-2所示。
表4-2普通用户表
| 序号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 备注 |
|---|---|---|---|---|---|---|
| 1 | ordinary_user_id | int | 11 | 是 | 是 | 普通用户ID |
| 2 | user_id | int | 11 | 是 | 否 | 用户ID |
| 3 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 4 | user_age | varchar | 64 | 否 | 否 | 用户年龄 |
| 5 | interest_tags | varchar | 64 | 否 | 否 | 兴趣标签 |
| 6 | contact_phone | varchar | 16 | 否 | 否 | 联系电话 |
| 7 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 8 | create_time | datetime | - | 是 | 否 | 创建时间 |
兴趣圈子表主要用于保存各种类型的兴趣社交圈子基本信息。主要有兴趣圈子id、圈子名称、圈子类型、圈子介绍、成员人数等属性组成。如表4-3所示。
表4-3兴趣圈子表
| 序号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 备注 |
|---|---|---|---|---|---|---|
| 1 | circle_of_interest_id | int | 11 | 是 | 是 | 兴趣圈子ID |
| 2 | circle_name | varchar | 64 | 否 | 否 | 圈子名称 |
| 3 | circle_type | varchar | 64 | 否 | 否 | 圈子类型 |
| 4 | circle_introduction | text | 65535 | 否 | 否 | 圈子介绍 |
| 5 | number_of_members | double | - | 否 | 否 | 成员人数 |
| 6 | cover_image | varchar | 255 | 否 | 否 | 封面图片 |
| 7 | create_by | int | 11 | 是 | 否 | 创建用户ID |
| 8 | create_time | datetime | - | 是 | 否 | 创建时间 |
兴趣培训表主要用于保存网上兴趣培训班有关的数据。主要字段有兴趣培训id,培训名称,培训标签,培训内容,培训视频等字段。如下表4-4所示。
表4-4兴趣培训表
| 序号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 备注 |
|---|---|---|---|---|---|---|
| 1 | interest_training_id | int | 11 | 是 | 是 | 兴趣培训ID |
| 2 | training_name | varchar | 64 | 否 | 否 | 培训名称 |
| 3 | training_label | varchar | 64 | 否 | 否 | 培训标签 |
| 4 | training_content | text | 65535 | 否 | 否 | 培训内容 |
| 5 | training_video | varchar | 255 | 否 | 否 | 培训视频 |
| 6 | release_date | date | - | 否 | 否 | 发布日期 |
| 7 | cover_image | varchar | 255 | 否 | 否 | 封面图片 |
| 8 | create_by | int | 11 | 是 | 否 | 创建用户ID |
活动信息表主要用于发布以及维护线上或者线下的活动信息。主要包含活动信息id,活动名称,活动类型,活动日期,活动地点这些属性。如表4-5所示。
表4-5活动信息表
| 序号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 备注 |
|---|---|---|---|---|---|---|
| 1 | activity_information_id | int | 11 | 是 | 是 | 活动信息ID |
| 2 | activity_name | varchar | 64 | 否 | 否 | 活动名称 |
| 3 | activity_type | varchar | 64 | 否 | 否 | 活动类型 |
| 4 | activity_date | date | - | 否 | 否 | 活动日期 |
| 5 | activity_location | varchar | 64 | 否 | 否 | 活动地点 |
| 6 | activity_content | text | 65535 | 否 | 否 | 活动内容 |
| 7 | registration_conditions | text | 65535 | 否 | 否 | 报名条件 |
| 8 | cover_image | varchar | 255 | 否 | 否 | 封面图片 |
| 9 | create_by | int | 11 | 是 | 否 | 创建用户ID |
产品信息表主要用于保存商城内的可进行售卖的所有产品信息。主要有商品信息id,商品标题,产品种类,卖价,原价等列。如下表4-6所示。
表4-6商品信息表
| 序号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 备注 |
|---|---|---|---|---|---|---|
| 1 | commodity_information_id | int | 11 | 是 | 是 | 商品信息ID |
| 2 | cart_title | varchar | 125 | 否 | 否 | 商品标题 |
| 3 | cart_type | varchar | 64 | 是 | 否 | 商品分类 |
| 4 | cart_price | double | - | 是 | 否 | 卖价 |
| 5 | cart_price_ago | double | - | 是 | 否 | 原价 |
| 6 | cart_inventory | int | 11 | 是 | 否 | 商品库存 |
| 7 | cart_img | text | 65535 | 否 | 否 | 封面图 |
| 8 | purchase_instructions | varchar | 64 | 否 | 否 | 购买须知 |
| 9 | create_by | int | 11 | 是 | 否 | 创建用户ID |
订单表主要用于存储用户的购买行为中所生成的交易订单,主要有订单id、订单编号、商品id、买家id、商品标题等属性,如下表4-7所示。
表4-7订单表
| 序号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 备注 |
|---|---|---|---|---|---|---|
| 1 | order_id | int | 11 | 是 | 是 | 订单ID |
| 2 | order_number | varchar | 64 | 否 | 否 | 订单号 |
| 3 | goods_id | mediumint | - | 是 | 否 | 商品ID |
| 4 | user_id | int | 11 | 是 | 否 | 买家ID |
| 5 | title | varchar | 255 | 否 | 否 | 商品标题 |
| 6 | price | double | - | 是 | 否 | 价格 |
| 7 | num | int | 11 | 是 | 否 | 数量 |
| 8 | price_count | double | - | 是 | 否 | 总价 |
| 9 | state | varchar | 16 | 是 | 否 | 订单状态 |
| 10 | delivery_state | varchar | 16 | 否 | 否 | 配送状态 |
| 11 | create_time | timestamp | - | 是 | 否 | 创建时间 |
好友推荐表主要用于保存系统基于算法产生的可能成为好友的推荐列表。主要包含有好友推荐ID、推荐标题、兴趣标签、推荐内容、发布时间等字段。如表4-8所示。
表4-8好友推荐表
| 序号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 备注 |
|---|---|---|---|---|---|---|
| 1 | friend_recommendation_id | int | 11 | 是 | 是 | 好友推荐ID |
| 2 | recommended_title | varchar | 64 | 否 | 否 | 推荐标题 |
| 3 | interest_tags | varchar | 64 | 否 | 否 | 兴趣标签 |
| 4 | recommended_content | text | 65535 | 否 | 否 | 推荐内容 |
| 5 | release_date | date | - | 否 | 否 | 发布日期 |
| 6 | cover_image | varchar | 255 | 否 | 否 | 封面图片 |
| 7 | recommend_friends | int | 11 | 否 | 否 | 推荐好友 |
| 8 | create_by | int | 11 | 是 | 否 | 创建用户ID |
| 9 | create_time | datetime | - | 是 | 否 | 创建时间 |
好友记录表主要就是用于记录用户的相互间建立好友成功的相关信息。包含的主要内容有好友记录id、推荐标题、推荐好友、用户信息、添加日期等等。如下表4-9所示。
表4-9好友记录表
| 序号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 备注 |
|---|---|---|---|---|---|---|
| 1 | friend_record_id | int | 11 | 是 | 是 | 好友记录ID |
| 2 | recommended_title | varchar | 64 | 否 | 否 | 推荐标题 |
| 3 | recommend_friends | int | 11 | 否 | 否 | 推荐好友 |
| 4 | user_information | int | 11 | 否 | 否 | 用户信息 |
| 5 | add_date | date | - | 否 | 否 | 添加日期 |
| 6 | friend_notes | text | 65535 | 否 | 否 | 好友备注 |
| 7 | create_by | int | 11 | 是 | 否 | 创建用户ID |
| 8 | create_time | datetime | - | 是 | 否 | 创建时间 |
第五章 系统实现
5.1 管理员功能实现
5.1.1 兴趣圈子管理功能实现
兴趣圈层管理模块给予了管理者对平台内各个兴趣圈层的统一管理权,管理者可以看到各圈层的名字,简介,分类等各种信息,了解圈子的成立以及最新情况。系统可以根据兴趣圈层类别来过滤并精准搜索,方便管理者迅速找到对应的圈层。管理者可在这个页面对已存在的圈层做出删除的行为,维护社区内信息的良好有序性。兴趣圈层管理页面如下图5-1所示。

图5-1兴趣圈子管理界面
核心代码如下所示:
@RequestMapping("/get_hits_list")
public Map<String, Object> getHits(HttpServletRequest request) {
Map<String,String> paramMap = service.readQuery(request);
if (paramMap.get("user_id")==null||paramMap.get("user_id").equals("")){
return this.getList(request);
}else{
try {
if (paramMap.get("examine_state")!=null && !paramMap.get("examine_state").equals("")){
paramMap.put("examine_state",URLDecoder.decode(paramMap.get("examine_state"), "UTF-8"));
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
//查询该用户常点击
String hitsSource = "SELECT COUNT( hits_id ) AS hits_count, source_id FROM hits WHERE source_table = 'circle_of_interest' AND user_id = "+paramMap.get("user_id")+" GROUP BY source_id";
List<Map<String,Object>> hitsSourceList = service.selectMapBaseList(hitsSource);
//判断是否为空,代表当前用户暂无点击数据,那么取其他用户的最常点击
if (hitsSourceList==null || hitsSourceList.size()<=0){
hitsSource = buildCartWeightedSql(null);
hitsSourceList = service.selectMapBaseList(hitsSource);
}
5.1.2 加入记录管理功能实现
加入记录管理模块主要用来记录用户的加入圈层的申请行为,管理员能够通过此列表查看到用户请求加入圈层申请记录,其中包括了申请人以及申请的圈层以及申请的状态,管理员需要进行审核处理每一个加入请求,审批的结果将决定该用户是否能够顺利的成为圈层的一员,是整个圈层成员组成质量和数量的重要保障之一。加入记录管理视图如下图5-2所示。

图5-2加入记录管理界面
核心代码如下所示:
public String updateExamineState(Long id, String newState) throws IOException {
//检查传入的状态是否合法
if (!newState.equals("未审核") && !newState.equals("已通过") && !newState.equals("未通过")) {
return "非法的审核状态";
}
Map<String,String> queryMap = new HashMap<>();
queryMap.put("id",String.valueOf(id));
//根据ID查找记录
AddRecord add_record = service.findOne(queryMap);
if (add_record!=null) {
//更新审核状态
add_record.setExamine_state(newState);
this.setEntity(queryMap,new HashMap<>(),add_record);
return "审核成功";
} else {
return "审核失败:记录不存在";
}
}
}
5.1.3 兴趣培训管理功能实现
兴趣培训班管理模块主要管理的是平台所开设的各种培训课程信息发布以及组织工作。管理人员可以在搜索栏中迅速定位自己想要查看的有关课程信息比如太极拳、智能手机等。已经发布出来的培训活动都会以列表的形式展现出来。管理人员可以点击每一个培训项目详细察看该培训的具体时间及内容安排等等。在满足用户拓展兴趣方面的一个重要方式就是通过培训来进一步加强兴趣方面的培养。对于培训班的管理是为了保证用户的兴趣爱好能得到有效的学习素材。兴趣培训班管理界面如下图5-3所示。

图5-3兴趣培训管理界面
核心代码如下所示:
}
interest_training.setTraining_vuser_ideo(paramMap.get("training_vuser_ideo")==null?null:String.valueOf(paramMap.get("training_vuser_ideo")));
interest_training.setCover_image(paramMap.get("cover_image")==null?null:String.valueOf(paramMap.get("cover_image")));
interest_training.setTraining_content(paramMap.get("training_content")==null?null:String.valueOf(paramMap.get("training_content")));
interest_training.setPraise_len(paramMap.get("praise_len")==null?null:Integer.valueOf(String.valueOf(paramMap.get("praise_len"))));
interest_training.setCollect_len(paramMap.get("collect_len")==null?null:Integer.valueOf(String.valueOf(paramMap.get("collect_len"))));
interest_training.setComment_len(paramMap.get("comment_len")==null?null:Integer.valueOf(String.valueOf(paramMap.get("comment_len"))));
this.setEntity(queryMap,configMap,interest_training);
System.out.println("兴趣培训修改成功");
return success(1);
}
5.1.4 兴趣标签管理功能实现
兴趣标签管理系统负责设置区分用户的多种兴趣爱好等标签,系统设置了花鸟园艺、广场舞、手工编织等等标签,标签是连接用户、圈群以及内容的基本分类维度,可以查看平台上所有标签的添加及更新日期,对标签信息进行维护。标签体系的结构化是平台个性化的内容推送以及好友推荐的前提基础。兴趣标签管理系统页面如图5-4所示。

图5-4兴趣标签管理界面
核心代码如下所示:
public Map<String, Object> add(HttpServletRequest request) throws IOException {
Map<String,Object> paramMap = service.readBody(request.getReader());
paramMap.entrySet().removeIf(entry -> {
Object value = entry.getValue();
return value instanceof String && ((String) value).isEmpty();
});
InterestTags interest_tags = new InterestTags();
interest_tags.setInterest_tags(paramMap.get("interest_tags")==null?null:String.valueOf(paramMap.get("interest_tags")));
interest_tags.setCreate_by(paramMap.get("create_by")==null?null:Integer.valueOf(String.valueOf(paramMap.get("create_by"))));
this.addEntity(interest_tags);
System.out.println("兴趣标签新增成功");
return success(1);
}
5.1.5 好友推荐管理功能实现
好友推荐管理模块主要是根据用户的兴趣标签等相关信息为基础向用户提出可能的社交关系好友建立提议。管理员可针对不同的专题进行好友推荐列表的编辑管理。系统会把符合推荐条件的用户展现到推荐列表之中,在此界面管理员还可以查看到具体的推荐信息,合理的推荐增加了用户添加社交关系的可能性以及效率。好友推荐管理界面如下图5-5所示。

图5-5好友推荐管理界面
核心代码如下所示:
/**
*标签推荐
*/
@GetMapping("/get_tag_list")
@Transactional
public Map<String, Object> getTagList(HttpServletRequest request) {
Map<String,String> paramMap = service.readQuery(request);
Map<String,String> configMap = service.readConfig(request);
configMap.computeIfAbsent(FindConfig.PAGE, k -> String.valueOf(1));
configMap.computeIfAbsent(FindConfig.SIZE, k -> String.valueOf(1));
configMap.put(FindConfig.ORDER_BY,"friend_recommendation_id asc");
if (paramMap.get("user_id")==null||paramMap.get("user_id").equals("")) {
return this.getList(request);
5.1.6 好友记录管理功能实现
好友记录管理模块保存了用户相互之间因被推荐而成为朋友的关系历史数据,管理员可以通过这里来查询用户之间的好友添加记录,其中每一个好友记录包括推荐来源的信息、相关用户以及添加时间等等。好友数统计反应了用户的人气高低情况,管理员可以通过点击查看详情来了解某一个好友关系是怎么形成的等等。这些数据给研究用户的交友习惯提供了数据依据。好友记录管理页面如下图5-6所示。
图5-6好友记录管理界面
核心代码如下所示:
public Map<String, Object> add(HttpServletRequest request) throws IOException {
Map<String,Object> paramMap = service.readBody(request.getReader());
paramMap.entrySet().removeIf(entry -> {
Object value = entry.getValue();
return value instanceof String && ((String) value).isEmpty();
});
FriendRecord friend_record = new FriendRecord();
friend_record.setRecommended_title(paramMap.get("recommended_title")==null?null:String.valueOf(paramMap.get("recommended_title")));
friend_record.setRecommend_friends(paramMap.get("recommend_friends")==null?null:Integer.valueOf(String.valueOf(paramMap.get("recommend_friends"))));
friend_record.setUser_information(paramMap.get("user_information")==null?null:Integer.valueOf(String.valueOf(paramMap.get("user_information"))));
if (paramMap.get("add_date" ) != null&& !StringUtils.isEmpty(String.valueOf(paramMap.get("add_date" )))) {
String timStr = String.valueOf(paramMap.get("add_date" ));
friend_record.setAdd_date(parseToTimestamp(timStr));
} else {
friend_record.setAdd_date(null);
}
friend_record.setFriend_notes(paramMap.get("friend_notes")==null?null:String.valueOf(paramMap.get("friend_notes")));
friend_record.setExtra(paramMap.get("extra")==null?null:String.valueOf(paramMap.get("extra")));
friend_record.setSource_table(paramMap.get("source_table")==null?null:String.valueOf(paramMap.get("source_table")));
friend_record.setSource_id(paramMap.get("source_id")==null?null:Integer.valueOf(String.valueOf(paramMap.get("source_id"))));
friend_record.setSource_user_id(paramMap.get("source_user_id")==null?null:Integer.valueOf(String.valueOf(paramMap.get("source_user_id"))));
friend_record.setCreate_by(paramMap.get("create_by")==null?null:Integer.valueOf(String.valueOf(paramMap.get("create_by"))));
this.addEntity(friend_record);
System.out.println("好友记录新增成功");
return success(1);
}
5.1.7 活动信息管理功能实现
活动信息管理模块实现后台管理人员对网站中发布的线上或者线下的活动进行全面管理。后台管理人员可新增活动的信息,并且对已发布的活动可以进行修改或者删除的操作。包含的活动信息有活动标题、种类、活动时间和地址以及活动的内容描述等内容,活动是提高用户黏性及社区活跃度的一个重要手段。对活动的有效管理维护着用户的体验和活动的质量。活动信息管理页面如下图5-7所示。

图5-7活动信息管理界面
核心代码如下所示:
activity_information.setActivity_date(null);
}
activity_information.setActivity_location(paramMap.get("activity_location")==null?null:String.valueOf(paramMap.get("activity_location")));
activity_information.setCover_image(paramMap.get("cover_image")==null?null:String.valueOf(paramMap.get("cover_image")));
activity_information.setRegistration_conditions(paramMap.get("registration_conditions")==null?null:String.valueOf(paramMap.get("registration_conditions")));
activity_information.setActivity_content(paramMap.get("activity_content")==null?null:String.valueOf(paramMap.get("activity_content")));
activity_information.setPraise_len(paramMap.get("praise_len")==null?null:Integer.valueOf(String.valueOf(paramMap.get("praise_len"))));
activity_information.setCollect_len(paramMap.get("collect_len")==null?null:Integer.valueOf(String.valueOf(paramMap.get("collect_len"))));
activity_information.setComment_len(paramMap.get("comment_len")==null?null:Integer.valueOf(String.valueOf(paramMap.get("comment_len"))));
activity_information.setRegistration_record_limit_times(paramMap.get("registration_record_limit_times")==null?null:String.valueOf(paramMap.get("registration_record_limit_times")));
activity_information.setCreate_by(paramMap.get("create_by")==null?null:Integer.valueOf(String.valueOf(paramMap.get("create_by"))));
this.addEntity(activity_information);
System.out.println("活动信息新增成功");
return success(1);
}
5.1.8 报名记录管理功能实现
报名记录管理模块主要针对用户对于已发布的活动所提出的参与申请。所有用户的报名请求都集中在该页面上,管理者可以看到提交报名请求的用户信息以及对应的活动。报名记录管理的关键是对报名信息的审批工作,管理者需要按照活动要求对每一个报名信息进行审批,从而确定是否可以参加活动,也使得活动参与者处于可控状态并使活动得以顺利举行。报名记录管理如下图5-8所示。

图5-8报名记录管理界面
核心代码如下所示:
}
registration_record.setWith_or_without_disease(paramMap.get("with_or_without_disease")==null?null:String.valueOf(paramMap.get("with_or_without_disease")));
registration_record.setRegistration_content(paramMap.get("registration_content")==null?null:String.valueOf(paramMap.get("registration_content")));
registration_record.setExamine_state(paramMap.get("examine_state")==null?null:String.valueOf(paramMap.get("examine_state")));
registration_record.setPunch_in_record_limit_times(paramMap.get("punch_in_record_limit_times")==null?null:String.valueOf(paramMap.get("punch_in_record_limit_times")));
registration_record.setSource_table(paramMap.get("source_table")==null?null:String.valueOf(paramMap.get("source_table")));
registration_record.setSource_id(paramMap.get("source_id")==null?null:Integer.valueOf(String.valueOf(paramMap.get("source_id"))));
registration_record.setSource_user_id(paramMap.get("source_user_id")==null?null:Integer.valueOf(String.valueOf(paramMap.get("source_user_id"))));
this.setEntity(queryMap,configMap,registration_record);
System.out.println("报名记录修改成功");
return success(1);
}
5.1.9 打卡记录管理功能实现
签到记录管理和打卡模块负责记录用户的参与某项活动或是完成某事项时签到情况。管理者可查看用户上传的签到记录,并可根据活动名关键词以及用户名关键字来选择查找相关信息,此部分具有批量审核的功能可同时对多个签到记录进行审核操作。实现了签到机制从而鼓励了用户的持续活跃也给活动效果评价提供了一定的数据基础。签到记录管理页面设计如图5-9所示。

图5-9打卡记录管理界面
核心代码如下所示:
}
punch_in_record.setPunch_in_location(paramMap.get("punch_in_location")==null?null:String.valueOf(paramMap.get("punch_in_location")));
punch_in_record.setBonus_points(paramMap.get("bonus_points")==null?null:String.valueOf(paramMap.get("bonus_points")));
punch_in_record.setExamine_state(paramMap.get("examine_state")==null?null:String.valueOf(paramMap.get("examine_state")));
punch_in_record.setExtra(paramMap.get("extra")==null?null:String.valueOf(paramMap.get("extra")));
punch_in_record.setSource_table(paramMap.get("source_table")==null?null:String.valueOf(paramMap.get("source_table")));
punch_in_record.setSource_id(paramMap.get("source_id")==null?null:Integer.valueOf(String.valueOf(paramMap.get("source_id"))));
punch_in_record.setSource_user_id(paramMap.get("source_user_id")==null?null:Integer.valueOf(String.valueOf(paramMap.get("source_user_id"))));
punch_in_record.setCreate_by(paramMap.get("create_by")==null?null:Integer.valueOf(String.valueOf(paramMap.get("create_by"))));
this.addEntity(punch_in_record);
System.out.println("打卡记录新增成功");
return success(1);
}
5.2 用户功能实现
5.2.1 购物车功能实现
购物车页面汇集了用户当前所选购的所有商品的名称、价格以及库存量等信息,便于一次性浏览全部购买记录,在确定购买意向之前可以在购物车对所选商品的数量增减或者删除。最后确认无误后所提交的商品列表就会进行下一步下单处理。购物车页面界面见图5-10。

图5-10购物车界面
核心代码如下所示:
@RestController
@RequestMapping("cart")
public class CartController extends BaseController<Cart, CartService> {
/**
*服务对象
*/
@Autowired
public CartController(CartService service) {
setService(service);
}
}
5.2.2 兴趣圈子功能实现
兴趣圈子板块是用户探索、进入兴趣圈层的主要通道。首页显示若干种不同类别的圈子,包括旅行探险队或是太极养生团等等,在每张圈子卡片上都可以清楚看到包括成员数目及最新活动发布时间的关键信息,用户在浏览相关圈子时可以直观地了解到圈层的相关话题以及热度,在感兴趣的圈子点进查看详细并进行申请加入就可进入到有着相同兴趣的老年社交圈内。兴趣圈子页面如下图5-11所示。

图5-11兴趣圈子界面
5.2.3 好友推荐功能实现
好友推荐模块基于用户兴趣标签和行为信息主动推送有可能合适的潜在好友,推送的方式分为同好推荐、热门好友等多种类型,每一个推荐都有发布时间以及互动指标展示,用户通过对推荐内容进行查看,从而找到具有相同兴趣的其他用户,点击查看详情即可了解到对方的一些基本信息,然后判断是否发送好友请求来添加链接,好友推荐页面如下图5-12所示。

图5-12好友推荐界面
5.2.4 在线聊天功能实现
在线聊天模块给用户一个即时的一对一和组聊天的能力。界面上主要有好友以及群组两个列表,清楚标明现在聊天的对象以及最近一条消息。用户点击某一个好友或是群组就可以进入到聊天界面向对方发送文字消息,可以发送即时消息并且有“已连接”标志保证通信可靠。在线聊天是最直接的用于维持用户之间联系、开展日常生活对话的应用。在线聊天界面如下图5-13所示。

图5-13在线聊天界面
5.2.5 兴趣培训功能实现
兴趣培训板块是给用户提供的线上学习兴趣、提高兴趣技巧的方式。每一个兴趣培训课目如书法班都有一个具体教学介绍视频及文字介绍来向大家介绍这个课程的学习目的以及课程的内容安排等,大家可以观看这些教学视频、阅读具体的课程内容、知道学习这项课程的难易程度及将会学到什么。此版块也设置了一个互动环节,大家可以为喜欢的兴趣培训点赞。这些都充实了老人的精神世界。兴趣培训页面如图5-14所示。

图5-14兴趣培训界面
5.2.6 活动信息功能实现
活动消息模块汇集了平台开展的不同形式的线下活动。每个活动都有详细的介绍包括活动种类,活动时间,在什么地方展开,参加要求和简短介绍。用户观看活动列表的同时也可以了解到活动的具体内容。对于自己喜欢的活动还可以进行报名的操作。活动消息就是将线上的兴趣爱好延伸到线下交流实践的一个纽带,推动着老年人走出来融入群体生活当中去。活动信息界面如图5-15所示。

图5-15活动信息界面
5.2.7 好友记录功能实现
好友记录模块用以记录与管理用户经系统推荐后成功添加的好友联系。页面展示了推荐来源,用户可以了解到每一位好友的添加日期并有权利对好友进行备注方便记忆。模块系统化地存储了用户的交友历史,便于用户查看管理自己的人际关系网,是用户个人社交关系图谱的具体化展现。好友记录界面如下图5-16所示。

图5-16好友记录界面
5.2.8 商品信息功能实现
商品信息模块向消费者提供所选商品的具体介绍以及购买通道,当消费者选定某一商品,比如手工消遣玩具的时候,就会出现该商品具体的图片、价格、销量和库存,商品详情板块主要对产品的特征以及注意事项进行说明,便于消费者决定是否选购,同时页面还提供将产品添加进购物车或直接点击立即购买进入便捷下单环节的选择机会。商品详细介绍的过程对于刺激消费者的购买行为有着十分重要的作用。商品信息页面如图5-17所示。

图5-17商品信息界面
5.2.9 订单配送功能实现
订单配送模块使消费者了解其所购买商品的运输状况及已签收状况。客户进入此模块就可以浏览其所有的历史订单的运输列表,在列表中明确显示了所购买产品的名字及其运输状况,还有是否已经被收下。客户单击查看详情可得到更为详尽的运输路径,此功能让消费者对自己购买的产品从发出到被收取整个过程都一目了然,增加了购物过程中信任感和安心感,订单配送页面如下图5-18所示。

图5-18订单配送界面
第六章 系统测试
6.1 测试目的
系统测试的主要目的是为了检测所开发系统中所有的功能是否满足需求说明书以及设计书的要求,保证业务流程能够在生产环境正确的运行。主要检测系统对于用户核心流程,保证从前端交互到后台数据处理再到后台数据库存储的全过程不出错[19]。同时也要对系统进行一些边缘检测,检测系统在遇到错误的数据、边界情况以及大量并发请求的时候有没有相应的防御措施。对错误的表单的提交、断网重连,重复提交等情况作出的响应来发现存在的隐患,降低系统上线的风险,保证产品的质量和稳定性[16]。
6.2 测试方法
本系统测试主要采取黑盒测试的方式,把软件看作一个不透明的整体,根据需求说明书编写测试用例,测试员模拟普通用户以及管理员身份进行各功能的操作,通过比较实际得到的结果与预期的结果以此确定其是否准确。着重对主流程进行了测试,如用户的注册登陆、兴趣社区的查看并加入、组织活动报名及审批、产品购置、下单监控、推荐朋友及会话等全流程的测试,另外结合边界值法和猜错法,对输入栏、数值区间、权限验证等方面编写了反常的测试用例以检测程序错误的提示和防御能力。
6.3 测试内容
模拟买家购买商品并且支付的过程。目的是为了确认从商品页面到下单,最后到运送跟踪的电商购物链条是否通顺。主要检查信息流是否准确无误地被传送到了各个模块以及状态的转变是否到位。购物车模块测试如表6-1所示。
表6-1购物车模块测试用例表
| 序号 | 测试功能 | 测试步骤 | 预期结果 | 实际结果 |
|---|---|---|---|---|
| 1 | 添加商品至购物车 | 用户查看商品详情后执行添加操作 | 指定商品信息被成功添加至用户的购物车列表,商品数量正确显示 | 符合预期 |
| 2 | 购物车内商品管理 | 用户对购物车中已有商品的数量进行修改 | 商品数量更新成功,总价自动重新计算并准确显示 | 符合预期 |
| 3 | 购物车结算跳转 | 用户从购物车界面发起结算请求 | 系统正确跳转至订单确认页面,所选商品及价格信息完整带入 | 符合预期 |
对兴趣社交圈的主要功能进行验证,保证用户可以顺利找到、了解到感兴趣的社交圈并且可以提出入圈申请等。检查关注圈子的信息显示是否完整以及申请过程是否可行。兴趣圈子加入记录管理测试如下表6-2所示:
表6-2兴趣圈子加入记录管理测试用例表
| 序号 | 测试功能 | 测试步骤 | 预期结果 | 实际结果 |
|---|---|---|---|---|
| 1 | 用户提交加入申请 | 用户在圈子详情页提交加入某个圈子的申请 | 系统成功创建一条状态为“待审核”的申请记录 | 符合预期 |
| 2 | 管理员审核加入申请 | 管理员在后台对用户申请进行审核操作 | 申请记录的状态随着审核结果(是否通过)得到正确的更新,同时客户端也会收到消息提醒。 | 符合预期 |
测试目的是为了检测系统的是否能够根据人物画像有效地推送个性化的推荐好友,并保证推送出的推荐合理以及用户的操作便利。测试主要针对算法运行过程以及用户的反馈响应进行测试。好友推荐管理测试见表6-3。
表6-3好友推荐管理测试用例表
| 序号 | 测试功能 | 测试步骤 | 预期结果 | 实际结果 |
|---|---|---|---|---|
| 1 | 后台配置推荐规则 | 管理员设置好友推荐的相关参数与条件 | 推荐系统依据新规则生成推荐列表,数据反映配置变化 | 符合预期 |
| 2 | 用户查看并添加好友 | 用户在前端查看推荐列表,并选择添加某位推荐好友 | 系统成功向被推荐用户发送好友申请,双方关系状态进入待确认阶段 | 符合预期 |
对平台发布网络课程功能的检测,保证培训课程的内容可以顺利的建立并正确的展现出来,用户能正常的学习和参与互动。主要检测内容管理是否完善以及查看是否顺利。兴趣培训管理测试如下表6-4所示。
表6-4兴趣培训管理测试用例表
| 序号 | 测试功能 | 测试步骤 | 预期结果 | 实际结果 |
|---|---|---|---|---|
| 1 | 培训课程发布 | 管理员创建并发布一项新的培训课程,填写完整信息 | 课程在前端对应板块成功显示,标题、内容、封面等信息展示正确 | 符合预期 |
| 2 | 用户参与培训学习 | 用户访问已发布的培训课程详情页 | 培训视频、图文内容均可正常加载与浏览,页面交互功能正常 | 符合预期 |
针对线上线下活动全程生命周期管理进行测试。检查活动是否能正常的进行创建、发布及参与者报名等各环节业务流程是否完善。主要针对信息一致性及报名流程完整性等问题进行测试。活动信息和报名管理测试如表6-5所示。
表6-5活动信息与报名管理测试用例表
| 序号 | 测试功能 | 测试步骤 | 预期结果 | 实际结果 |
|---|---|---|---|---|
| 1 | 活动信息创建与发布 | 管理员在后台创建一项活动,设置时间、地点、名额等条件后发布 | 活动信息在前端活动列表准时显示,所有详情字段准确无误 | 符合预期 |
| 2 | 用户活动报名与审核 | 用户查看活动详情并提交报名信息,管理员随后处理报名 | 用户申请报名后产生待审核记录,管理者审核完成后用户获得相关的结果反馈 | 符合预期 |
检验用户社交行为中所创建的成功的好友关系是否能被后台完整存储及长期保存下来。检测目的是保证关系数据的真实性、可信度、查询方便等。好友关系管理测试见表6-6。
表6-6好友记录管理测试用例表
| 序号 | 测试功能 | 测试步骤 | 预期结果 | 实际结果 |
|---|---|---|---|---|
| 1 | 好友关系生成记录 | 用户在同意好友申请后,双方正式建立好友关系 | 系统自动生成一条对应的好友记录,包含双方ID、添加时间等信息 | 符合预期 |
| 2 | 历史好友记录查询 | 用户在个人中心或管理后台查看自己的好友列表 | 系统返回完整的好友记录列表,信息准确,可按时间等条件筛选 | 符合预期 |
对用户的活动后签到行为管理功能进行了测试,保证了打卡数据能够被正确的获取以及状态可以进行有效的控制。测试了数据采集过程以及下一步流程的可信性。打卡记录管理测试如表6-7所示。
表6-7打卡记录管理测试用例表
| 序号 | 测试功能 | 测试步骤 | 预期结果 | 实际结果 |
|---|---|---|---|---|
| 1 | 用户活动打卡 | 用户在指定活动页面进行打卡操作 | 系统记录本次打卡的时间、地点等信息,打卡状态标记为已完成 | 符合预期 |
| 2 | 管理员审核打卡记录 | 管理员对用户提交的打卡记录进行核实与确认 | 管理员可查看打卡详情,并执行审核操作,审核状态实时更新 | 符合预期 |
测试结论
通过对本系统的单元、集成、系统以及验收等多个级别的测试,证明了该软件的功能、模块、系统都达到了要求,测试中出现的bug基本已经解决或者提出了可行性的完善建议,不存在导致系统崩溃或者丧失主要功能的致命问题,综合各层测试结果来看,本系统稳定可靠,具备所有所要求的功能,安全性与兼容性都达到了设计的要求。
总结
伴随着我国人口老龄化程度加深,老年人精神文化需要逐渐加强,并且传统的交友模式无法满足老年人广泛的、便利的交友要求。“老友汇”系统就是以此类社会现象为背景设计开发的一款面向老年人群体兴趣交友的小程序系统。系统致力于通过网络平台,帮助有相同兴趣爱好倾向的老年群体之间进行有效的链接,从而改善老年人交友范围窄小,消息传递不易、活动举办参与难等问题。系统整合了交友、学习、活动以及商城等多项功能,实现了搭建安全、便捷、闭环的功能型老年人专属兴趣交流生态圈的设计愿景,以信息化的方式助力老年的群体积极参与社会,丰富老年人的生活。
本文的研究是以标准的软件工程研发过程为基础,以深入调研需求为起点,确定了老年人群体特殊需求以及管理人员运维需求,在系统设计上进行了前后端分离的设计,前端基于Uni-App作为跨平台小程序框架,同时引入Vue.js框架搭建视图层;后端选择SpringBoot框架搭建RESTful API接口服务;数据库运用MySQL进行关系型储存,此种B/S体系架构和所选的技术也使得该系统具备可维护性、可拓展性好以及好的用户体验的特点,在编码与测试环节中主要实现超级管理员与普通用户两大主体模块的功能。系统围绕“兴趣圈子”,“兴趣培训”,展开社交和学习功能,利用“好友推荐”,“在线聊天”,进行相互之间的连接,同时融合了“活动信息发布”,“商品信息发布”以及“订单配送查询”的生活信息类功能,管理员端利用完善的后台管理系统模块实现了对于平台信息和用户行为的有效管理,从而形成一个良性发展的社交生态圈闭环。
虽然系统已经满足了最基本的设计要求,但还有许多需要改进的地方,首先从功能性角度来看,订单配送模块只完成了状态追踪的功能,并没有对接实际的物流公司API,对支付过程也只是简单的模拟示例并未接入安全性较高的三方支付接口等。其次从智能性方面看,好友推荐算法比较简单,仅基于用户标签进行匹配,未运用更加复杂的行为分析、机器学习模型来提高个性化推荐准确率。在数据分析层次方面,系统记录了用户的加入、报名、打卡数据,但是并没有建立较为完善的数据分析模型及可视化报表,没能充分发挥利用数据的作用指导运营决策。最后由于是学生的毕业设计,所以在面对大规模并发的情况时服务器性能的提升,更加严谨的安全机制等方面都可以做进一步优化。
结合以上不足之处,在后期工作中可以考虑如下几点:一是在原有基础上增加接入微信支付等成熟的支付接口并整合地图API、快递查询插件,完成一个封闭的电商系统;二是采用协同过滤、知识图谱等推荐算法,丰富好友及文章推荐策略,增强系统智能程度;三是搭建数据统计后台,通过大数据挖掘分析用户行为数据,形成用户画像以及运营分析报告,做到精细化管理;四是开发语音对话、加大字号等功能以适应老年人操作习惯,提高可用性和可访问性。总的来说“老友汇”系统具有较好的实用性与社会效益,系统在未来不断完善并得到广泛应用,也将为社会如何做好老龄化问题提供帮助,构建适老化数字社会作出一定贡献。
参考文献
[1] 杨桂芳,兰慧红,詹秋.基于微信小程序的社交导航系统的设计与实现[J].电脑知识与技术,2025,21(27):55-57.
[2] 黄佳宁.基于心流理论的VR绘画软件用户体验设计研究[D].上海:华东理工大学,2025.
[3] 徐傲月,陈毅,姜攀.基于微信小程序的智能陪诊系统的设计与实现[J].电脑编程技巧与维护,2025,29(4):82-85.
[4] 卢芷仪.积极老龄化视角下中老年生活服务APP的用户体验设计研究[D].上海:东华大学,2025.
[5] 彭华海,田秀云.基于小程序的社交平台设计与实现[J].现代信息科技,2024,8(22):146-151.
[6] 王婉先,詹何庆,薛星宇.面向老年群体的出行安全小程序的设计与实现[J].电脑知识与技术,2024,20(26):40-42.
[7] 孟凡淑,田雲怡,张旭琴,等.“晚年轻松”购物小程序设计研究[J].上海包装,2024,16(8):156-158.
[8] 张天爽,许枫楠.生活服务类App界面的适老化设计研究[J].艺术与设计(理论),2024,2(8):42-44.
[9] Hou J. Exploration of bilingual teaching in universities based on WeChat mini program development under the new quality productive forces[J].Journal of Innovation and Development,2025,12(1):70-76.
[10] Cao M,Liu N. Exploration on the design and application of a traditional Chinese medicine Chinese language assistance practice and testing tool based on WeChat mini-programs[J].Journal of Contemporary Medical Practice,2025,7(6):36-40.
[11] Wang M,Wang S,Wu H,et al. Design and implementation of the WeChat applet for the "local flavor" agricultural e-commerce system[J].International Journal of New Developments in Engineering and Society,2025,9(2):21-28.
[12] Yubo L,Xubo L,Ziyi L,et al. Design and implementation of a WeChat mini-program named "Cloud Tour Gangu"[J].Tourism Management and Technology Economy,2024,7(3):55-60.
[13] Wu J,Chen N,Xia H,et al. Design and application of a game-based WeChat mini-program for screening cognitive impairments in Chinese older adults[J].Alzheimer's & Dementia,2023,19(11):112-118.
[14] 王志亮,纪松波.基于SpringBoot的Web前端与数据库的接口设计[J].工业控制计算机,2023,36(03):51-53.
[15] 秦冬.浅析Vue框架在前端开发中的应用[J].信息与电脑(理论版),2024,36(13):61-63.
[16] 王希,戴靓婕.MySQL数据库技术在Web动态网页设计中的运用研究[J].软件,2024,45(07):77-79.
[17] 胡劲.数据库信息管理系统的逻辑架构与功能设计探析[J].电脑知识与技术,2023,19(19):96-98.
[18] 陈英达,黄巨涛,林强等.关系型数据库逻辑设计规范研究[J].微型电脑应用,2021,34(06):1-2+7.
[19] 查燕.软件测试的策略和方法[J].信息与电脑(理论版),2021,33(10):67-69.
致谢
在这个项目的研究中,我得到很多人帮助以及支持,在这里真诚地向所有帮助过我的人表示感谢!
我要感谢我的指导老师,在整个项目的各个环节都给予我精心的点拨与可贵的意见支持,在我项目过程中碰见难题和阻碍的时候,您都会不厌其烦为我解惑答疑,并且通过细致入微的分析讲解使我能够领会到相关的理论知识与应用知识,您的敬业精神与严格的工作作风都使我不仅学会了项目上的技术也引发了我对专业知识更深层的理解,没有您的指引本项目是无法顺利推进下去的。
我要感谢我的同学,在整个项目的开展过程之中,大家都跟我进行了很多探讨,提供了自己的一些建议和经历,使我可以站在一个完全不一样的角度来看待一些事情的发生,协助我更好的来完成本次项目。即使此次的工作是独立完成,但是跟同学们的沟通让我获得了许多新的想法和启发。同时也要感谢我的家人们,在我花费大量的时间精力去做这个项目的时候,他们一直都在支持着我、包容我,在我遇到瓶颈想要放弃时一直鼓励我坚持下去,谢谢你们无私无尽的爱和关怀,是我一直向前奋斗和努力的动力来源。还要感谢学校给我们提供这么优良的条件和平台,使我能顺利完成此次项目并且达到想要的结果,这次课设任务我也学到不少相关知识,以及锻炼了我的自学能力和分析解决问题的能力,对我今后学业上的发展会有很大帮助。
再次感谢在我此次项目过程中提供给我帮助与支持的所有人,是你们的支持使我的此次项目顺利完成。
🎁 点赞收藏免费领取 · 项目源码 + 数据库
更多推荐




所有评论(0)