基于Vue+Java实现的在线聊天APP系统设计与实现

一、需求分析

1.核心用户分析

在线聊天系统主要针对一些年轻用户群体以及因为工作需求而对于实时交流以及非实时交流有较大需求的群里。就青年群体而言,这一用户群体特征比较鲜明,其主要需求为基础聊天需求以及一些能够凸显个性的功能需求。在线聊天对于青年人来说也逐渐成为一种主流的设计方式。年轻人们通过在线交流和好友印象的可以了解到对方的性格,而且可以通过相互添加好友保持关系。而对于有工作需求的人来说能够实时交流以及处理未读消息就显得十分重要。

2. 系统的主要功能的概述

首先未注册的用户可以注册账号,已经注册的用户可以使用账号密码进行登录。

用户可以搜索好友,搜索之后可以进行添加好友

主界面分为两个部分,一个部分为消息盒子,一个部分为好友盒子

消息盒子主要存放未读消息,如果有一个好友向你发送消息你没有点到聊天框里查看的话就会在消息盒子界面显示

好友盒子显示如下几个部分,好友列表,添加好友的入口,个人信息的入口,朋友验证的入口

所有的好友会在好友列表中展示,一开始所有的好友的在默认分组。点击好友之后可以进入好友的资料卡页面

可以在好友资料卡中可以查看好友的基本消息,以及会显示好友的印象,当点击某个印象标签的时候会提示你可以进行删除。还可以在好友资料卡页面点击发送消息进入聊天窗口。除此之外右上角点击之后可以有删除好友,移动好友,添加标签的选项

删除好友:点击之后好友将被删除,你可以通过再次发送验证消息进行添加

移动好友:可以将好友移动到指定的分组,如果分组不存在则创建分组,若移动后分组内没有成员则删除分组。

添加标签:可以为好友添加一个标签。

当进入聊天框之后发送消息对方就可以发收到,点击下载聊天记录的按钮就可以下载所有的聊天记录,点击删除聊天记录可以删除和当前用户所有的云端记录。

个人信息,在这里可以修改个人信息包括修改头像,以及删除别人给自己的标签,并且可以在此处退出登录

3. 项目操作流程图

4. 功能详解

  1. 登录

使用账号密码进行登录,登录成功之后跳转到主页面中的消息盒子的页面

  1. 注册

账号采用邮箱格式,密码要求大于八位

  1. 消息盒子

消息盒子显示你的所有的未读消息,一旦消息已读就会从消息盒子中去除

  1. 好友盒子

好友盒子有如下这些部分组成:新的朋友,我的账号,朋友验证,好友列表

  1. 好友列表

按照分组展示所有的好友,点击好友可以进入好友资料卡页面

  1. 朋友验证

当你发送的请求别人已经处理完了或者别人向你发送了请求的话此处会有一个红点表示消息数量。点击进入之后进入验证消息模块

  1. 我的账号

点击之后进入个人资料卡,在这里可以修改姓名,头像,性别,头像要求小于 30kb,年龄要求不能为负数,性别要求只能是男或者女,还可以在此处删除自己的标签,也可以退出登录。

  1. 新的朋友

可以进行全局搜索,即不进行任何输入直接回车可以显示所有的好友,并且可以进行模糊搜索,只输入名字的部分也可搜索到。并且可以添加年龄和性别的限制条件。点击搜索结果可以进入好友资料卡。在这里可以填写验证消息,并且发送好友验证,自己不能添加自己,不能添加以及添加的好友,如果已经发送过依次请求对方为响应也不能发送。当这里发送之后对方的朋友验证会出现红点。

  1. 验证消息

当我们点击朋友验证之后,进入验证消息页面,如果我们发送的消息被处理了,则会有一个红点标记,别人发送的请求我们可以选择拒绝和接受。如果我们进入了此页面的话,如果存在我们发送的消息被处理了且我们自己之前未读的,则会被设置为已读。对于别人发给自己的请求,则必须在处理完之后才会被设置为已读。

  1. 好友资料卡

显示好友的基本信息,好友的标签,点击标签可以进行删除,并且可以在此页面点击发送消息进入聊天框进行聊天,此页面中点击右上角还可以进行删除好友,移动好友,添加标签。

  1. 删除好友:将好友从列表中删除,删除后可以再次发送验证消息
  2. 移动好友

输入要移动的分组如果不存在则创建分组,若某个分组内没有了用户则删除分组,所有用户默认在默认分组中

  1. 添加标签

可以对一个用户添加一个标签,添加重复标签没有用

  1. 聊天界面

聊天界面可以双方可以实时发送消息,显示的时候自己的消息在右侧,对方的消息在左侧,且按时间排序,点击下载按钮可以进行聊天记录下载,点击删除按钮可以删除云端数据

5. 系统的顶级用例图

6. 系统的原型图设计

原型图主要是用图片的形式站输出之前的功能模块,并且也是后面前端 UI 的主要依据

登陆界面,注册界面类似消息盒子界面

聊天界面 好友列表界面

搜索界面 好友申请界面

个人资料页面 验证消息界面

项目的页面和原型图过多这里就不一一展示,详情可见压缩文件

二、数据库设计

因为聊天系统的所有功能基本上都是围绕着用户进行的。聊天是用户和用户聊天,添加好友也是用户添加用户,印象管理也是用户给用户添加印象。所以主要的联表操作都和 user 表有关。这里就先给出整个项目的 ER 图

根据 ER 图可以构建数据库的物理设计如下

  1. 好友关系表 friendship

  1. 好友印象表 impression

  1. 聊天记录表 record

  1. 好友验证表 validation

  1. 用户表 user

Redis 中的存储结构的说明,因为 Redis 的 Nosql 的性质很适合用于存储未读的聊天记录,我是用 Redis 中的哈希结构进行存储未读消息。每一条记录规则如下键为 unread+userId,值为一个 Java 中的 Map<String, Map<String, String>> 的类型。Map<String, Map<String, String>> 的类型数据格式如下:

senderId: {
	nickname:xxx,
	content:xxx,
	pic:xxx
}

除此之外在 Redis 中单独存储一个哈希结构,键为 unreadNum+userId,值为未读消息数量。

三、架构设计

1.技术栈

(1)前端

①Vue 作为前端框架

②vue-router 进行前端路由管理

③webpack 开发 SPA(单页面应用)

④mint-UI 作为 UI 框架

⑤STOMP 实现 Socket 通信的框架

⑥axios 发送请求

⑦sass(css 预处理器,进行 CSS 代码的编写)

前端架构说明:

Webpack 搭建项目前端框架,打包生成 SPA(单页面)的移动端应用。

1、 Webpack 配置文件

webpack.base.conf.js 为基础配置 一些最基本的 loader 与 plugin 都在这里面 webpack.dev.conf.js 为开发环境配置,配置了适合开发环境的 sourceMap,能快速的定位开发环境代码报错位置 webpack.prod.conf.js 为生产环境下配置,关闭了 sourceMap,极大的减小了线上环境代码包的大小,启用了 UglifyJsPlugin 进行代码压缩,使首屏加载

  • 5
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
摘 要 随着互联网的快速发展,网络聊天工具已经作为一种重要的信息交流工具,受到越来越多的网民的青睐。目前,出现了很多非常不错的聊天工具,其中应用比较广泛的有Netmeeting、腾讯QQ、MSN-Messager等等。该系统开发主要包括一个网络聊天服务器程序和一个网络聊天客户程序两个方面。前者通过Socket套接字建立服务器,服务器能读取、转发客户端发来信息,并能刷新用户列表。后者通过与服务器建立连接,来进行客户端与客户端的信息交流。其中用到了局域网通信机制的原理,通过直接继承Thread类来建立多线程。开发中利用了计算机网络编程的基本理论知识,如TCP/IP协议、客户端/服务器端模式(Client/Server模式)、网络编程的设计方法等。在网络编程中对信息的读取、发送,是利用流来实现信息的交换,其中介绍了对实现一个系统的信息流的分析,包含了一些基本的软件工程的方法。经过分析这些情况,该局域网聊天工具采用Eclipse为基本开发环境和java语言进行编写,首先可在短时间内建立系统应用原型,然后,对初始原型系统进行不断修正和改进,直到形成可行系统 关键词:局域网 聊天 socket java 聊天系统各功能模块 (1)服务器程序模块 服务器与客户间通过套接口Socket(TCP)连接。在java中使用套接口相当简单,Java API为处理套接口的通信提供了一个类java.net.Socket,使得编写网络应用程序相对容易。服务器采用多线程以满足多用户的请求,并通过创建一个ServerSocket对象来监听来自客户的连接请求,默认端口为9527,然后无限循环调用accept()方法接受客户程序的连接。 服务器线程源码: package qq.server; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.net.Socket; import java.util.*; import qq.dao.hibernate.IServiceDao; import qq.entity.*; public class ServerController { private User user; private Socket s; private IServiceDao dao; private ObjectInputStream ois; private ObjectOutputStream oos; private OnlineUser onlineUser; www.bylw120.com public ServerController(Socket s) { super(); dao=ServerMainClass.userDao; this.s = s; } public void handle() throws Exception { ois=new ObjectInputStream(s.getInputStream()); oos=new ObjectOutputStream(s.getOutputStream()); onlineUser=new OnlineUser(ois,oos); while(true){ Request req=(Request)ois.readObject(); ois.read(); RequestType type=req.getType(); if(type.equals(RequestType.exit)){ exitHandle(); break; }else if(type.equals(RequestType.login)){ loginHandle(req); }else if(type.equals(RequestType.register)){ registerHandle(); }else if(type.equals(RequestType.offline)){ offlineHandle(); break; }else if(type.equals(RequestType.changeInformation)){ changeInformationHandle(); }else if(type.equals(RequestType.modifypasswd)){ modifypasswdHandle(req); }
好的,针对您的问题,我可以给您提供一些系统需求分析和技术分析的思路。 系统需求分析: 1. 用户注册与登录:允许用户注册账号并通过手机号或邮箱进行登录。 2. 商品展示与搜索:根据用户需求展示不同的商品分类和商品列表,同时支持搜索功能。 3. 商品详情:显示商品的详细信息、价格、评价等,并支持加入购物车、立即购买等操作。 4. 购物车:用户可以将需要购买的商品加入购物车,并能够对购物车中的商品进行数量、删除等操作。 5. 订单管理:用户可以查看自己的订单状态、订单详情、物流信息等,并支持取消订单、退款等操作。 6. 支付功能:用户可以选择不同的支付方式进行支付,支持支付宝、微信等常见支付渠道。 7. 个人中心:用户可以查看自己的个人信息、订单记录、收货地址、优惠券等,并能够进行相应的操作。 技术分析: 1. 前端技术:使用Vue.js框架进行前端开发,搭配vant、element-ui等UI库进行页面设计。 2. 后端技术:使用Node.js或Java等后端语言进行开发,采用RESTful API进行前后端交互。 3. 数据库技术:使用MySQL等关系型数据库或MongoDB等非关系型数据库进行数据存储,保证数据的可靠性和安全性。 4. 接口调用技术:使用微信支付、支付宝等支付接口,实现在线支付功能。 5. 网络安全技术:采用HTTPS协议进行数据传输,保证数据的安全性。 6. 移动端适配技术:使用rem、flex等技术进行移动端页面适配,保证在不同设备上的良好体验。 总体来说,这是一个比较完整的移动端购物APP系统需求分析和技术分析,但具体实现还需要根据具体情况进行调整和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值