软件工程课程设计报告-之-详细设计报告_第1页
软件工程课程设计报告-之-详细设计报告_第2页
软件工程课程设计报告-之-详细设计报告_第3页
软件工程课程设计报告-之-详细设计报告_第4页
软件工程课程设计报告-之-详细设计报告_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

山东科技大学 王昌帅 1 1 详细设计说明书详细设计说明书 1 1 引言 引言 1 1 1 1 编写目的 编写目的 在前一阶段 概要设计说明书 中 已解决了实现该系统需求的程序模块设 计问题 包括如何把该系统划分成若干个模块 决定各个模块之间的接口 模块之 间传递的信息 以及数据结构 模块结构的设计等 在以下的详细设计报告中将对 在本阶段中对系统所做的所有详细设计进行说明 在本阶段中 确定应该如何具体地实现所要求的系统 从而在编码阶段可以 把这个描述直接翻译成用具体的 程序语言书写的程序 主要的工作有 根据在 需求分析说明书 中所描述的数据 功能 运行 性能需求 并依照 概要设计 说明书 所确定的处理流程 总体结构和模块外部设计 设计软件系统的结构设计 逐个模块的程序描述 包括各模块的功能 性能 输入 输出 算法 程序逻辑 接口等等 在以下的各个阶段中 用户操作手册 将与本阶段的工作紧密结合 努力 作到 让用户易懂易学 测试报告 和 维护报告 也将参考本说明书 检验本系统的各项性能指标 及时发现纰漏及时修补 一定要把功能强大 稳定可 靠 便于维护的机票预定系统交到用户手中 1 1 2 2 项目背景 项目背景 在本即时聊天工具项目的前一阶段 也就是需求分析阶段 已经将系统用户 对本系统的需求做了详细的阐述 这些用户需求已经在上一阶段中对不同用户所提 出的不同功能 实现的各种效果做了调研工作 并在需求规格说明书中得到详尽得 叙述及阐明 本 飞 Q 即时聊天系统项目主要由两部分形成 1 客户端 2 数据库服务器端 山东科技大学 王昌帅 2 2 1 1 3 3 文中特殊的定义和缩写 文中特殊的定义和缩写 1 1 3 3 1 1 定义定义 SQL SERVER 系统服务器所使用的数据库管理系统 DBMS SQL 一种用于访问查询数据库的语言 事务流 数据进入模块后可能有多种路径进行处理 主键 数据库表中的关键域 值互不相同 外部主键 数据库表中与其他表主键关联的域 ROLLBACK 数据库的错误恢复机制 1 1 3 3 2 2 缩写缩写 系统 若未特别指出 统指本机票预定系统 SQL Structured Query Language 结构化查询语言 ATM Asynchronous Transfer Mode 异步传输模式 1 1 4 4 参考资料 参考资料 1 以下列出在概要设计过程中所使用到的有关资料 2 需求规格说明书 飞 Q 软件开发小组 3 概要设计说明书 飞 Q 软件开发小组 4 用户操作手册 初稿 飞 Q 软件开发小组 5 软件工程及其应用 周苏 王文等天津科学技术出版社 6 软件工程 张海藩清华大学出版社 7 Computer Network A S TanenbaunPrentice Hall 8 网络上的资料 文档所采用的标准是参照 软件工程导论 沈美明著 的 计算机软件开 发文档编写指南 山东科技大学 王昌帅 3 3 2 2 总体设计 总体设计 2 2 1 1 需求概要 需求概要 应广大用户的要求 要求做一个性能更高更人性化的即使聊天工具 我飞 Q 软件设计小组努力为大家写一个更好的即时聊天工具 飞 Q2012 聊天系统的总目标是 在计算机网络 数据库和先进的开发平台上 利用现有的软件 配置一定的硬件 开发一个具有开放体系结构的 易扩充的 易 维护的 具有良好人机交互界面的飞 Q2012 聊天系统 实现添加好友 删除好友 相互聊天系统 为人们聊天提供准确 精细 迅速的信息 根据可行性研究的结果和客户的要求 分析现有情况及问题 采用 Client Server 结构 将飞 Q2012 聊天系统划分为两个子系统 客户端子系统 服务器端子系统 要求系统能有效 快速 安全 可靠和无误的完成上述操作 并要求客户机 的界面要单明了 易于操作 服务器程序利于维护 2 2 2 2 软件结构 软件结构 各模块之间的关系已由概要设计给出各模块之间的关系已由概要设计给出 下面介绍详细的设计下面介绍详细的设计 1 1 登陆模块登陆模块 山东科技大学 王昌帅 4 4 登录 输输入入飞飞Q帐帐 号号和和密密码码 输输入入格格式式是是否否正正确确 输输入入错错误误 进进入入飞飞Q聊聊天天 主主界界面面 正正确确 结结束束 点点击击登登录录 密码正确 登登录录失失败败 密密码码正正确确 密密码码错错误误 申申请请帐帐号号 进进入入申申请请界界面面 找找回回密密码码 进进入入找找回回密密码码 界界面面 2 2 申请模块申请模块 山东科技大学 王昌帅 5 5 开开始始 输入基本 信息 点点击击新新用用户户注注 册册 信信息息是是否否完完整整 显显示示已已申申请请的的 QQ帐帐号号 密密码码 Y N 结结束束 点点击击登登录录 QQ 进进入入QQ登登 陆陆界界面面 3 3 安全模块安全模块 山东科技大学 王昌帅 6 6 开开始始 点点击击安安全全概概述述点点击击修修改改密密码码点点击击常常见见欺欺骗骗点点击击修修改改密密保保 立立即即完完成成是是否否设设置置密密保保 输输入入验验证证密密保保 Y 设设置置密密保保 N 密密保保是是否否正正确确 提提交交 Y N 结结束束 常常见见欺欺诈诈 是是否否设设置置密密保保 输输入入原原密密保保问问题题输输入入密密保保问问题题 Y N 密密保保问问题题是是否否正正确确 N 提提交交 Y 输输入入新新密密保保 提交 提提交交 判判断断安安全全状状况况 修修 改改 密密 码码 修修 改改 密密 保保 隐隐患患 危危险险 良良好好 山东科技大学 王昌帅 7 7 4 4 聊天模块聊天模块 聊聊天天窗窗口口1 聊聊天天窗窗口口2 信信息息转转换换站站 信信息息转转换换站站 发送 窗窗口口1 窗窗口口2 发送 窗口2 窗口1 服务器端 服务器端 1 1 申请模块 申请模块 山东科技大学 王昌帅 8 8 等待用户申请 启动线程 用户请求 将可申请帐号预读 到内存中 客户端 此ip是否申请次数过多 次数过多 取出一个可申请的 qq 返回申请到的QQ 在数据库中建立此 人的基本信息档案 结束 返回申请到的QQ 启动线程 返回继续监听 调用子 线程 c 2 2 登录模块 登录模块 山东科技大学 王昌帅 9 9 等待用户申请 启动线程 用户请求 将密码预读到内存 中 客户端 判断密码是否正确密码错误 给其他好友发送登 录信息 读取系统 消息 返回申请到的QQ 返回用户的好友列 表 结束 返回申请到的QQ 启动线程 返回继续监听 调用子 线程 该帐号另一客户端 判断是否是重复登录 重复 则发送 终止命令 不重复 所以在线好友 数据库 读取系统消息 读取好友列表 3 3 添加好友模块 添加好友模块 山东科技大学 王昌帅 10 10 等待用户 启动接收添加好友 同意与否信息线程 发送同意与否信息 客户端 子线程结束 启动子线程 返回继续监听 调用子 线程 同意否 同意写入数据库 同意信息 数据库 读取同意与否信息 客户端 不同意 山东科技大学 王昌帅 11 11 等待用户申请 启动接收添加好友 请求线程 用户请求 客户端 结束 启动子线程 返回继续监听 调用子 线程 判断要添加的用户的添加权限允许任何人加入不允许任何人加入 需要验证 数据库 山东科技大学 王昌帅 12 12 等待用户申请 启动接收添加好友 验证线程 用户请求 客户端 子线程结束 启动子线程 返回继续监听 调用子 线程 判断要添加的用户是否在线不在线 在线 数据库 读取验证信息 要添加的用户 发送同意与否 同意的同时数据库相应添加 4 4 删除好友模块 删除好友模块 山东科技大学 王昌帅 13 13 等待用户请求 启动删除好友请求 线程 用户请求 客户端 结束 启动子线程 返回继续监听 调用子 线程 在双方数据库中删除对方数据库读取要删除的人 另一客户端 发送刷新界面命令 删除成功 5 5 修改好友昵称模块修改好友昵称模块 山东科技大学 王昌帅 14 14 等待用户请求 启动修改好友昵称 请求线程 用户请求 客户端 结束 启动子线程 返回继续监听 调用子 线程 在数据库中修改数据数据库读取要修改的人 6 6 查找用户模块 查找用户模块 山东科技大学 王昌帅 15 15 等待用户请求 启动查找用户请求 线程 用户请求 客户端 精确 结束 启动子线程 返回继续监听 调用子 线程 数据库 读取要删除的人 判断是精确查找还是按条件 构造SQL语句构造SQL语句 按条件 构造搜索结果列表返回结果 返回结果列表 7 7 安全模块 安全模块 7 17 1 设置密保模块 设置密保模块 山东科技大学 王昌帅 16 16 等待用户请求 启动监听用户设置 密保请求线程 用户请求 客户端 结束 启动子线程 返回继续监听 调用子 线程 数据库 读取此用户的信 息 及密保设置信 息 构造SQL语句 写入数据库 返回成功信息 写入数据库完成后 7 27 2 判断是否设置密保模块 判断是否设置密保模块 山东科技大学 王昌帅 17 17 等待用户请求 启动监听用户请求 线程 用户请求 客户端 结束 启动子线程 返回继续监听 调用子 线程 数据库 返回密保问题信息 得到该用户密保问 题 判断是否设置密保 没有设置密保 读取密保问题 7 37 3 判断密保答案是否正确模块 判断密保答案是否正确模块 山东科技大学 王昌帅 18 18 等待用户请求 启动接收用户密保 答案线程 用户请求客户端 子线程结束 启动子线程 返回继续监听 调用子 线程 数据库 返回正确信息 判断密保答案是否正确 错误 读取密保问题及答案获得密保答案 返回数据 7 47 4 修改密保模块 修改密保模块 山东科技大学 王昌帅 19 19 等待用户请求 启动接收用户密保 答案线程 用户请求客户端 子线程结束 启动子线程 返回继续监听 调用子 线程 数据库 返回正确信息 判断密保答案是否正确 错误 读取密保问题及答案获得密保答案 返回数据 7 57 5 修改密码模块 修改密码模块 山东科技大学 王昌帅 20 20 等待用户请求 启动接收用户重设 密码线程 用户请求客户端 子线程结束 返回继续监听 数据库重设密码在数据库中重写此用户密码 启动子线程 调用子 线程 返回成功信息 读取密码信息 7 67 6 找回密码 找回密码 山东科技大学 王昌帅 21 21 等待用户请求 启动监听用户请求 线程 用户请求客户端 子线程结束 启动子线程 返回继续监听 调用子 线程 数据库 返回重设成功信息 重设密码 判断是否设置密保 没有设置密保 读取密保问题 判断旧密码是否正确 旧密码不正确 写入数据库 8 8 移动好友模块 移动好友模块 山东科技大学 王昌帅 22 22 等待用户请求 启动移动好友昵称 请求线程 用户请求 客户端 结束 启动子线程 返回继续监听 调用子 线程 在数据库中修改数据数据库读取基本信息 9 9 组操作模块 组操作模块 山东科技大学 王昌帅 23 23 等待用户请求 启动组操作请求线 程 用户请求客户端 结束 启动子线程 返回继续监听 调用子 线程 在数据库中修改数据数据库 读取基本信息 判断是对组的什么 操作 赠加组删除组修改组的名称 生成SQL语句 1010 发送系统消息模块 发送系统消息模块 山东科技大学 王昌帅 24 24 开始 判断是发哪种类型 的系统消息 服务器线程产生的不通的发送消息要求 给相应的用户发送 相应的系统消息 用户1用户2 用户3 用户4 结束 1111 更新个人信息模块 更新个人信息模块 等待用户请求 启动修改个人信息 请求线程 用户请求客户端 结束 启动子线程 返回继续监听 调用子 线程 在数据库中修改数据数据库 读取信息 生成SQL语句 1212 请求 请求 ipPortipPort 模块模块 山东科技大学 王昌帅 25 25 等待用户请求 启动修改个人信息 请求线程 用户请求客户端 结束 启动子线程 返回继续监听 调用子 线程 读取信息 读取ip和portHashmap读取另一用户ip和port 判断ipport是否为空 返回此人ip和chatport 返回不在线信息 1313 心跳模块 心跳模块 13 113 1 用户心跳接收处理模块 用户心跳接收处理模块 山东科技大学 王昌帅 26 26 等待用户请求 启动修改个人信息 请求线程 用户请求客户端 结束 启动子线程 返回继续监听 调用子 线程 读取信息 读取ip和portHashmap读取另一用户ip和port 判断ipport是否为空 返回此人ip和chatport 返回不在线信息 13 213 2 服务器定时检测超时模块 服务器定时检测超时模块 山东科技大学 王昌帅 27 27 启动循环检测用户 是否在线的线程 是否超时 得到hashmap中的 一个用户 否 得到hashmap中的 下一个用户 是推拉检测模块 13 313 3 服务器推拉检测在线模块 服务器推拉检测在线模块 山东科技大学 王昌帅 28 28 启动循环检测用户 是否在线的线程 是否在限定时 间得到用户客 户端响应 否 从记录接收用户在 线信息的hashmap 删除此用户 是 更新记录接收用户 心跳时刻的 hashmap 向用户询问客户端 我在线 是否在线 从记录接收用户心 跳时刻的hashmap 删除此用户 从记录接收用户状 态的hashmap删除 此用户 在数据库中相应修改 数据库 此线程结束 1414 添加可利用飞 添加可利用飞 Q Q 号号 山东科技大学 王昌帅 29 29 开始 读取数据库中可申 请的帐号数 判断数量是否过少 否 Sleep 一小时 否 是 添加一些可利用的 帐号 添加到内存中的可 申请帐号arraylist中 3 3 程序描述 程序描述 客户端总模块 客户端总模块 山东科技大学 王昌帅 30 30 1 1 登陆模块登陆模块 1 1 登录过程登录过程 对在飞 Q 登录信息界面中输入的各项信息进行初步检验 若发现错误 输入数据全 部清空 以让用户重新输入一次 若未发现错误 转入主界面 其中的错误种类有 1 输入数据不匹配 帐号 数据库没有该帐号 密码 与对应账号的密码不匹配 2 输入数据不能为空 ifif 账号为空 请输入账号再登陆 elseelse ifif 账号长度小于6或对于20 请输入正确的账号 账号可以位数字或Email地址 elseelse ifif 密码为空 请输入密码后再登陆 elseelse 通知服务器 账号为 xxx 密码为 xxx的请求登陆 2 2 申请过程申请过程 对之前没有申请飞 Q 的用户 不能登录飞 Q 而必须点击申请 成为飞 Q 大家庭 的一员 点击之后转入申请界面 3 3 寻找忘记密码过程寻找忘记密码过程 对之前申请飞 Q 的用户 如果忘记密码 请不要担心 点击界面上的 忘记密 码 点击之后转入寻找密码界面 山东科技大学 王昌帅 31 31 2 2 申请模块申请模块 对在飞 Q 申请信息界面中输入的各项信息进行账号申请 若发现错误 输入数据全 部清空 以让用户重新输入一次 若未发现错误 转入账号申请成功界面 ifif 昵称为空 请输入昵称 elseelse ifif 密码格式错误 小于6或大于20 密码必须6 20个字符 密码框清空 重新输入 elseelse ifif 两次密码输入不匹配 两次密码输入不一致 密码框清空 重新输入 elseelse 获取注册信息 点击新用户注册 向服务器传输注册信息 山东科技大学 王昌帅 32 32 3 3 增删改查模块增删改查模块 3 13 1 查找好友模块查找好友模块 对在飞 Q 查找好友界面中选择查找类型 精确查找或条件查找 输入各项查找信 息进行好友查找 若发现错误 输入数据全部清空 以让用户重新输入一次 若未 发现错误 转入查找结果界面 在查找结果界面中选择要添加的好友 双击 查看 该好友的详细资料 点击添加 转入好友信息验证界面 在好友信息界面 输入验 证信息 完成好友的添加 SearchSearch 类类 ifif 查找联系人 ifif 精确查找 ifif 查询条件为空 请至少填一个查询条件 elseelse 获取查找信息 点击查找把查找信息传递给服务器 elseelse ifif 条件查找 获取查找信息 点击查找把查找信息传递给服务器 Search rasultSearch rasult 类类 ifif 点击添加好友 ifif 添加好友选择的是自己 山东科技大学 王昌帅 33 33 对不起 自己不能加自己为好友 重新选择 elseelse 把选择的好友发送给服务器 elseelse ifif 关闭 放弃添加为好友 AddfriendsAddfriends 类类 ifif 确定添加为好友 把选择的好友信息发送给服务器 elseelse ifif 取消 放弃添加为好友 3 23 2 删除好友模块删除好友模块 找到你要删除的对象所在的用户组 展开 找到该用户 右击 点击好友删除 然 后刷新好友列表 3 3 33 3 3 修改个人资料模块修改个人资料模块 点击自己头像 转入个人资料界面 更新你所需要的信息选项 确定更新点击确定 如果不想更新 点击取消即可 更改头像 点击更换头像 即可转入更换头像界面 界面中陈列了各种头像 点击 你想要的头像 即可显示该头像的不同样式 一供你参考 思考之后确实想更换 点击确定 立刻刷新所有界面 确保头像更换 如果不想更换 点击取消即可 3 4 好友移动模块好友移动模块 山东科技大学 王昌帅 34 34 找到你要移动的对象所在的用户组 展开 找到该用户 右击 点击移动 在弹出 框中选择移动的组对象 向服务器发送相应的数据 然后刷新好友列表 3 5 组操作模块组操作模块 修改 找到你要修改的用户组 右击点击重命名 向服务器发送该账号的修改组信息 刷新好友列表 即可看见修改成果 删除 找到你要删除用户组 展开 右击 点击删除分组 向服务器发送该账号的删除组 信息 然后刷新好友列表 如果 要删除的是默认分组 我的好友 系统不提供删除权限 添加 在好友列表中右击 点击添加分组 输入分组名 点击确定 向服务器发送该账号 的组信息 不想添加 点击取消 4 4 安全模块安全模块 对在飞 Q 安全界面中 分为 安全概述 常见欺诈 修改密码 修改 密保 安全概述安全概述 安全概述 概述了你当前飞 Q 的安全状况 ifif 设置密保并且密码等级为良好以上 安全状况良好请继续保持良好的习惯 可立即完成设置密码 elseelse ifif 设置密保并且密码等级为中等以下 安全状况存在隐患请定期修改密码 立即完成设置密码 elseelse 安全状况危险请立刻设置密保问题 立即完成设置密保 常见欺诈常见欺诈 常见的集中欺诈方式 钓鱼网址 视频欺诈 中奖欺诈 冒充好友欺诈 山东科技大学 王昌帅 35 35 修改密码修改密码 修改密码之前请确保设置密保 如果没有设置密保问题 请先设置密保问题 以确保该账户的安全性 如果设置了 密保问题 请先输入原密保问题 核对用户身份 密保正确才可以修改 如果错误 对不起 不能修改密码 ifif 三个密保问题有空 对不起 密保问题回答不能为空 没填写的须不完整 elseelse 向服务器获取对应密保问题的答案 If 回答错误 提示 对不起 密保问题回答不能正确 全部清空 重新输入 elseelse 修改密码 输入旧密码 ifif 输入的旧密码正确 ifif 新密码为空 提示 密码不能为空 elseelse ifif 两次密码输入不一致 提示 两次密码输入不一致 elseelse ifif 两次密码输入一致并且不空 向服务器发送该账号的新密码 elseelse 山东科技大学 王昌帅 36 36 提示 密码有误 请重新输入 修改密保修改密保 如果没有设置密保问题 设置密保问题 如果设置了密保问题 请先输入原密保问题 核对用户身份 密保正确才可以修改 如果错误 对不起 不能修改密保 ifif 没有设置密保 选择密保问题回答 If If 选择的密保问题重复 提示 提示 选择的密保问题重复 重新选择密保问题 ElseElse if f 修改密保时验证密保问题为空 提示 提示 修改密保时验证密保问题为空 ElseElse 服务器发送该账号的新密保问题和新密保问题对应的答案 elseelse 已经设置设置密保 向服务器获取对应密保问题的答案 输入密保问题答案 用户 If 回答错误 提示 对不起 密保问题回答不能正确 全部清空 重新输入 elseelse 修改密保 选择密保问题回答 山东科技大学 王昌帅 37 37 If If 选择的密保问题重复 提示 提示 选择的密保问题重复 重新选择密保问题 ElseElse if f 修改密保时验证密保问题为空 提示 提示 修改密保时验证密保问题为空 ElseElse 服务器发送该账号的新密保问题和新密保问题对应的答案 5 5 聊天模块聊天模块 所有的聊天窗口的即时聊天信息 只要点击发送 聊天信息会发送到服务器中 信息中转站中 在信息中转站中判断该发送的对象 再由服务器发送给对 服务器模块 服务器模块 1 1 申请模块 申请模块 将用户发送过来的申请信息写入临时变量对象中并存入数据库中 在数据库中建立如下信息 在 main 数据库的各表中插入申请的号码 在 users 数据库中建立该帐号的档案 包括好友列表 添加好友验证表 历史记录表等等 2 2 登录模块 登录模块 接收数据并存入 loginpot 中 山东科技大学 王昌帅 38 38 判断接收的密码和服务器中的密码是否相同 相同则返回登录成功 并发送一 系列信息 见下 不相同则返回登录失败 3 3 添加好友模块 添加好友模块 1 发送添加好友请求 用户发送添加好友请求包 服务器解析出要添加的好友 然后从数据库中 查找出该用户的添加好友权限 jugde 然后进行一下判断 switchswitch judge casecase 1 假如统一任何人加入 在双方数据库中分别添加对方 并且向被添加的的用户发送的界面刷新命令 breakbreak casecase 2 对方需要验证信息 通知客户端 breakbreak casecase 0 对方不允许任何人加入 通知客户端 breakbreak 2 发送验证信息 用户发送验证信息包 服务器解析出数据 判断要发送验证信息的用户是否在 线 If 在线 在线的话 就把验证信息发送到该用户客户端上并显示 Else 不在线的话 就把验证信息存入要发送的用户的数据库中 等到该用 户下次登录时候并会提示该用户有添加好友验证信息 3 发送同意以否信息 山东科技大学 王昌帅 39 39 用户发送同意与否信息包 服务器解析出数据 判断要发送同意与否信息 的用户是否在线 判断同意与否信息是否 If 同意 写入数据库相应 的信息 Else 不对数据库进行操作 If 在线 在线的话 就把同意与否信息发送到该用户客户端 同时把此人的 基本信息发送到客户端 Else 不在线的话 就把同意与否信息存入要发送的用户的数据库中 等到该 用户下次登录时候并会提示该用户有添加好友成功与否信息 4 4 删除好友模块 删除好友模块 删除好友模块设计思路比较简单 如下 用户发送删除好友信息包 服务器解析出基本数据 删除发送请求用户的数据 库中要删除的好友的信息 同时在对方的数据库中也相应的删除此人信息 并且将 删除成功与否信息发送回去 同时给要删除的用户发送刷新界面命令 当然得先判 断该用户是否在线 If 在线 在线的话 给要删除的用户发送刷新界面命令 删除点发送请求的 用户的信息 Else 不在线的话 不用再进行任何操作 山东科技大学 王昌帅 40 40 5 5 修改好友昵称模块修改好友昵称模块 同样 修改好友昵称模块 也很简单明了 不需要进行复杂的逻辑判断 详 细过程如下 用户发送修改好友昵称信息包 服务器解析成基本数据 在数据库中找到该 好友的好友列表 修改该用户要修改的好友的昵称 然后子线程就可以终止了 6 6 查找用户模块 查找用户模块 用户发送修改好友昵称信息包 服务器解析成基本数据 首先判断该用户用 的是什么搜索模式 If 搜索模式是精确查找模式 根据内容构造出 SQL 语句 在数据库中查找出相应的用户 构造出列 表发回客户端 Else if 搜索模式是按条件查找模式 根据内容构造出 SQL 语句 在数据库中查找出相应的用户 构造出列 表发回客户端 7 17 1 设置密保模块 设置密保模块 用户发送修改好友昵称信息包 服务器解析成基本数据 在数据库中找到该 用户的的信息 将密保问题和答案写入该用户的数据库中 假如已有密保问题则转 到重设密保模块 7 27 2 判断是否设置密保模块 判断是否设置密保模块 用户发送请求后 服务器解析出数据 在数据库中找到该好友 查看该好友 是否设置密保 If 设置了密保 返回密保问题 山东科技大学 王昌帅 41 41 Else if 没有设置密保 发送回去没有设置密保的标识 7 37 3 判断密保答案是否正确模块 判断密保答案是否正确模块 用户发送给服务器密保答案信息 服务器解析出相应的数据 从数据库中查 找该用户的信息 得到密保问题和答案 进行判断三个问题是否全部回答对 If 三个密保问题全回答对 向该用户客户端发送验证成功的消息 Else 三个问题不全对或全不对 向该用户客户端发送验证失败信息 7 47 4 修改密保模块 修改密保模块 这里说明一下 修改密保的模块是在验证密保答案正确的前提下才能进入的 所以此模块仅仅是覆盖掉该用户的 特此声明 呵呵 声明有点晚了 没有复杂逻辑判断 思路如下 用户发送给服务器新密保信息 服务器解析出相应的数据 从数据库中查找 该用户 在数据库中重写此人的密保问题和答案 然后子线程接收 7 57 5 修改密码模块 修改密码模块 声明如 7 4 所示 不再重复 思路如下 用户发送给服务器新密码信息 服务器解析出相应的数据 从数据库中查找 该用户 在数据库中重写此人的密码 同时将新设置的密码加入内存中用户密码 hashmap 中 然后子线程接收 7 67 6 找回密码 找回密码 山东科技大学 王昌帅 42 42 找回密码其实和重设密保有什么相识的地方 都是先验证信息密找回密码其实和重设密保有什么相识的地方 都是先验证信息密 保信息是否正确 然后根据正确与否做出相应的处理保信息是否正确 然后根据正确与否做出相应的处理 用户发送请求后 服务器解析出数据 在数据库中找到该好友 查看该好友 是否设置密保 If 设置了密保 返回密保问题 判断接受的密保答案是否正确 If 三个问题都回答正确 返回验证成功信息 通知客户端转入重设密码模块 Else 返回验证失败信息 Else if 没有设置密保 发送回去没有设置密保的标识 通知该用户由于没有设置密码 通过 此方法不能找回密码 8 8 移动好友模块 移动好友模块 移动好友模块设计思路比较简单 如下 用户发送移动好友信息包 服务器解析出基本数据 在数据库中查到该用户 的用户列表信息 更新列表信息 在数据库中做相应的修改 9 9 组操作模块 组操作模块 由于基本的几个组操作有很多相似之处 所以将几个组操作划为由于基本的几个组操作有很多相似之处 所以将几个组操作划为 一个模块 设计思路如下 一个模块 设计思路如下 山东科技大学 王昌帅 43 43 用户发送组操作 信息包 服务器解析出基本数据和命令 判断要进行的组 操作是什么操作 然后进行相应的操作 具体设计思路如下 If 组操作命令为增加组 在 users 数据库中找到此用户的 groupsList 表 在此表中添加相应 的组 Else if 组操作为删除组 1 在 users 数据库中找到此用户的 friendsList 表 把相应 组的好友的组属性改为 我的好友 即将要删除组中的好友放到我 的好友中 而不是直接将他们删除 2 在 users 数据库中找到此用户的 groupsList 表 在此表中 删除相应的组 Else if 组操作为修改组的名称 1 在 users 数据库中找到此用户的 friendsList 表 把相应 组的好友的组属性改为 要修改的组名 2 在 users 数据库中找到此用户的 groupsList 表 在此表中 删找到相应的组 修改此组的名称为要修改的名称 1010 发送系统消息模块 发送系统消息模块 发送系统消息模块是由服务器直接调用的 来完成一些必须的用户响 应 此模块发送消息的不同是由器构造函数决定的 其构造函数共有 7 种 如下 publicpublic sendSystemMessageThread String qq intint status throwsthrows SQLException 1 发送改变状态 publicpublic sendSystemMessageThread String text throwsthrows SQLException 山东科技大学 王昌帅 44 44 2 发送系统消息 全部人 publicpublic sendSystemMessageThread String qq intint sign String ip od String t throwsthrows SQLException 3 发送上次登录信息 登陆者 publicpublic sendSystemMessageThread String qq String text throwsthrows SQLException 4 发送系统消息 对登录者 publicpublic sendSystemMessageThread String qq systemMessage sys throwsthrows SQLException 5 发送添加好友请求信息 publicpublic sendSystemMessageThread intint sign String qq throwsthrows SQLException 6 当在其他地方登录时给另一个QQ发送下线通知 publicpublic sendSystemMessageThread String qq systemMessage sys intint agree 7 给该用户发送好友状态改变 由服务器根据不同的需要构造不同 的发送系统消息线程 实现相应的响应 1111 更新个人信息模块 更新个人信息模块 用户发送给服务器新个人信息信息 服务器解析出相应的数据 从数据库中 查找该用户 在数据库中重写已经更改了的此人的信息 山东科技大学 王昌帅 45 45 1212 请求 请求 ipPortipPort 模块模块 此模块是服务器中唯一和聊天相关的监听线程 此种设计方法极大的降低了 服务器的压力 获取 ip 和聊天 port 是聊天中很重要的一个环节 设计思路如下 用户发送给服务器请求另一个人的 port 的信息包 服务器解析出相应的数 据 从内存中查找另一个用户的 ip 和聊天 port 判断是否得到此人信息 If 查询到此人的在线信息 给客户端返回找到的在线信息 Else 给客户端返回没有找到此人信息 也就是此人不在线 客户端 然后做出相应地相应 1313 心跳模块 心跳模块 心跳相互协作的工作组及即时聊天领域发挥着详单重要的角色 通过发送心 跳报 来判断各个部分工

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论