Q系统详细设计报告解析_第1页
Q系统详细设计报告解析_第2页
Q系统详细设计报告解析_第3页
Q系统详细设计报告解析_第4页
Q系统详细设计报告解析_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

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

温馨提示

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

评论

0/150

提交评论