软件工程课程设计报告 之 详细设计报告Word格式.docx
- 文档编号:17108067
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:44
- 大小:482.47KB
软件工程课程设计报告 之 详细设计报告Word格式.docx
《软件工程课程设计报告 之 详细设计报告Word格式.docx》由会员分享,可在线阅读,更多相关《软件工程课程设计报告 之 详细设计报告Word格式.docx(44页珍藏版)》请在冰豆网上搜索。
StructuredQueryLanguage(结构化查询语言)。
ATM:
AsynchronousTransferMode(异步传输模式)。
1、4参考资料:
1.以下列出在概要设计过程中所使用到的有关资料:
2.需求规格说明书飞Q软件开发小组
3.概要设计说明书飞Q软件开发小组
4.用户操作手册(初稿)飞Q软件开发小组
5.软件工程及其应用周苏、王文等天津科学技术出版社
6.软件工程张海藩清华大学出版社
7.ComputerNetworkA.S.TanenbaunPrenticeHall
8.网络上的资料
文档所采用的标准是参照《软件工程导论》沈美明著的“计算机软件开发文档编写指南”。
2.总体设计:
2、1需求概要:
应广大用户的要求,要求做一个性能更高更人性化的即使聊天工具,我飞Q软件设计小组努力为大家写一个更好的即时聊天工具。
飞Q2012聊天系统的总目标是:
在计算机网络,数据库和先进的开发平台上,利用现有的软件,配置一定的硬件,开发一个具有开放体系结构的、易扩充的、易维护的、具有良好人机交互界面的飞Q2012聊天系统,实现添加好友,删除好友,相互聊天系统,为人们聊天提供准确、精细、迅速的信息。
根据可行性研究的结果和客户的要求,分析现有情况及问题,采用Client/Server结构,将飞Q2012聊天系统划分为两个子系统:
客户端子系统,服务器端子系统。
要求系统能有效、快速、安全、可靠和无误的完成上述操作。
并要求客户机的界面要单明了,易于操作,服务器程序利于维护。
2、2软件结构:
各模块之间的关系已由概要设计给出
下面介绍详细的设计
1登陆模块
2申请模块
3安全模块
4聊天模块
服务器端:
1、申请模块
c
2、登录模块
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登录过程
对在飞Q登录信息界面中输入的各项信息进行初步检验。
若发现错误,输入数据全部清空,以让用户重新输入一次。
若未发现错误,转入主界面。
其中的错误种类有:
1.输入数据不匹配
帐号数据库没有该帐号
密码与对应账号的密码不匹配
2输入数据不能为空
if(账号为空)
{
请输入账号再登陆
}
elseif(账号长度小于6或对于20)
请输入正确的账号,账号可以位数字或Email地址。
elseif(密码为空)
请输入密码后再登陆
else
通知服务器账号为:
xxx密码为:
xxx的请求登陆
2申请过程
对之前没有申请飞Q的用户,不能登录飞Q,而必须点击申请,成为飞Q大家庭的一员。
点击之后转入申请界面
3寻找忘记密码过程
对之前申请飞Q的用户,如果忘记密码,请不要担心,点击界面上的“忘记密码”,
点击之后转入寻找密码界面
2申请模块
对在飞Q申请信息界面中输入的各项信息进行账号申请。
若未发现错误,转入账号申请成功界面。
if(昵称为空)
请输入昵称
elseif(密码格式错误(小于6或大于20))
密码必须6-20个字符!
密码框清空,重新输入
elseif(两次密码输入不匹配)
两次密码输入不一致
获取注册信息
点击新用户注册,向服务器传输注册信息
3增删改查模块
3.1查找好友模块
对在飞Q查找好友界面中选择查找类型(精确查找或条件查找),输入各项查找信息进行好友查找。
若未发现错误,转入查找结果界面。
在查找结果界面中选择要添加的好友,双击,查看该好友的详细资料,点击添加,转入好友信息验证界面。
在好友信息界面,输入验证信息,完成好友的添加。
Search类
if(查找联系人)
if(精确查找)
{
if(查询条件为空)
{
请至少填一个查询条件
}
else
获取查找信息
点击查找把查找信息传递给服务器
}
elseif(条件查找)
点击查找把查找信息传递给服务器
}
Search_rasult类
if(点击添加好友)
if(添加好友选择的是自己)
对不起,自己不能加自己为好友!
重新选择
else
把选择的好友发送给服务器
elseif(关闭)
放弃添加为好友
Addfriends类
if(确定添加为好友)
把选择的好友信息发送给服务器
elseif(取消)
放弃添加为好友
3.2删除好友模块
找到你要删除的对象所在的用户组,展开,找到该用户,右击,点击好友删除,然后刷新好友列表;
3.3.3修改个人资料模块
点击自己头像,转入个人资料界面,更新你所需要的信息选项;
确定更新点击确定,如果不想更新,点击取消即可;
更改头像:
点击更换头像,即可转入更换头像界面,界面中陈列了各种头像,点击你想要的头像,即可显示该头像的不同样式,一供你参考。
思考之后确实想更换,点击确定,立刻刷新所有界面,确保头像更换。
如果不想更换,点击取消即可。
3.4好友移动模块
找到你要移动的对象所在的用户组,展开,找到该用户,右击,点击移动,在弹出框中选择移动的组对象,向服务器发送相应的数据,然后刷新好友列表;
3.5组操作模块
<
1>
修改
找到你要修改的用户组,右击点击重命名,向服务器发送该账号的修改组信息,刷新好友列表,即可看见修改成果.
2>
删除
找到你要删除用户组,展开,右击,点击删除分组,向服务器发送该账号的删除组信息,然后刷新好友列表;
如果,要删除的是默认分组“我的好友”,系统不提供删除权限。
3>
添加
在好友列表中右击,点击添加分组,输入分组名,点击确定,向服务器发送该账号的组信息,不想添加,点击取消。
4安全模块
对在飞Q安全界面中,分为“安全概述”,“常见欺诈”,“修改密码”,“修改密保”;
<
安全概述
安全概述概述了你当前飞Q的安全状况
if(设置密保并且密码等级为良好以上)
安全状况良好请继续保持良好的习惯
可立即完成设置密码
elseif(设置密保并且密码等级为中等以下)
安全状况存在隐患请定期修改密码
立即完成设置密码
安全状况危险请立刻设置密保问题
立即完成设置密保
常见欺诈
常见的集中欺诈方式:
钓鱼网址,视频欺诈,中奖欺诈,冒充好友欺诈;
修改密码
修改密码之前请确保设置密保;
如果没有设置密保问题,请先设置密保问题,以确保该账户的安全性。
如果设置了密保问题,请先输入原密保问题,核对用户身份。
密保正确才可以修改,如果错误,对不起,不能修改密码。
if(三个密保问题有空)
对不起,密保问题回答不能为空!
没填写的须不完整
向服务器获取对应密保问题的答案
If(回答错误)
提示:
对不起,密保问题回答不能正确
全部清空,重新输入
}
else
输入旧密码
if(输入的旧密码正确)
if(新密码为空)
提示:
密码不能为空
}
elseif(两次密码输入不一致)
提示:
两次密码输入不一致
elseif(两次密码输入一致并且不空)
向服务器发送该账号的新密码
}
密码有误,请重新输入
4>
修改密保
如果没有设置密保问题,设置密保问题。
密保正确才可以修改,如果错误,对不起,不能修改密保。
if(没有设置密保)
选择密保问题回答
If(选择的密保问题重复)
{
选择的密保问题重复
重新选择密保问题
Elseif(修改密保时验证密保问题为空)
修改密保时验证密保问题为空
Else
服务器发送该账号的新密保问题和新密保问题对应的答案
}
已经设置设置密保
输入密保问题答案(用户)
5聊天模块
所有的聊天窗口的即时聊天信息只要点击发送,聊天信息会发送到服务器中信息中转站中;
在信息中转站中判断该发送的对象,再由服务器发送给对。
服务器模块:
将用户发送过来的申请信息写入临时变量对象中并存入数据库中
在数据库中建立如下信息
在main数据库的各表中插入申请的号码
在users数据库中建立该帐号的档案,包括好友列表、添加好友验证表、历史记录表等等
接收数据并存入loginpot中
判断接收的密码和服务器中的密码是否相同,相同则返回登录成功,并发送一系列信息(见下),不相同则返回登录失败,
1、发送添加好友请求:
用户发送添加好友请求包,服务器解析出要添加的好友,然后从数据库中查找出该用户的添加好友权限jugde然后进行一下判断:
switch(judge)
case1:
//假如统一任何人加入
在双方数据库中分别添加对方,并且向被添加的的用户发送的界面刷新命令
break;
case2:
对方需要验证信息,通知客户端
case0:
对方不允许任何人加入,通知客户端
2、发送验证信息:
用户发送验证信息包,服务器解析出数据,判断要发送验证信息的用户是否在线
If(在线)
{
在线的话,就把验证信息发送到该用户客户端上并显示
}
Else
{
不在线的话,就把验证信息存入要发送的用户的数据库中,等到该用户下次登录时候并会提示该用户有添加好友验证信息
3、发送同意以否信息
用户发送同意与否信息包,服务器解析出数据,判断要发送同意与否信息的用户是否在线,判断同意与否信息是否
If(同意)
写入数据库相应的信息。
不对数据库进行操作。
在线的话,就把同意与否信息发送到该用户客户端,同时把此人的基本信息发送到客户端
不在线的话,就把同意与否信息存入要发送的用户的数据库中,等到该用户下次登录时候并会提示该用户有添加好友成功与否信息
删除好友模块设计思路比较简单,如下
用户发送删除好友信息包,服务器解析出基本数据,删除发送请求用户的数据库中要删除的好友的信息,同时在对方的数据库中也相应的删除此人信息,并且将删除成功与否信息发送回去,同时给要删除的用户发送刷新界面命令,当然得先判断该用户是否在线
在线的话,给要删除的用户发送刷新界面命令,删除点发送请求的用户的信息
不在线的话,不用再进行任何操作
同样,修改好友昵称模块,也很简单明了,不需要进行复杂的逻辑判断,详细过程如下:
用户发送修改好友昵称信息包,服务器解析成基本数据,在数据库中找到该好友的好友列表,修改该用户要修改的好友的昵称,然后子线程就可以终止了
用户发送修改好友昵称信息包,服务器解析成基本数据,首先判断该用户用的是什么搜索模式,
If(搜索模式是精确查找模式)
根据内容构造出SQL语句,在数据库中查找出相应的用户,构造出列表发回客户端
Elseif(搜索模式是按条件查找模式)
用户发送修改好友昵称信息包,服务器解析成基本数据,在数据库中找到该用户的的信息,将密保问题和答案写入该用户的数据库中,假如已有密保问题则转到重设密保模块
用户发送请求后,服务器解析出数据,在数据库中找到该好友,查看该好友是否设置密保,
If(设置了密保)
返回密保问题
Elseif(没有设置密保)
发送回去没有设置密保的标识
用户发送给服务器密保答案信息,服务器解析出相应的数据,从数据库中查找该用户的信息,得到密保问题和答案,进行判断三个问题是否全部回答对
If(三个密保问题全回答对)
向该用户客户端发送验证成功的消息
Else(三个问题不全对或全不对)
向该用户客户端发送验证失败信息
这里说明一下,修改密保的模块是在验证密保答案正确的前提下才能进入的,所以此模块仅仅是覆盖掉该用户的,特此声明,呵呵,声明有点晚了。
。
没有复杂逻辑判断,思路如下:
用户发送给服务器新密保信息,服务器解析出相应的数据,从数据库中查找该用户,在数据库中重写此人的密保问题和答案,然后子线程接收。
7.5、修改密码模块
声明如7.4所示,不再重复
思路如下:
用户发送给服务器新密码信息,服务器解析出相应的数据,从数据库中查找该用户,在数据库中重写此人的密码,同时将新设置的密码加入内存中用户密码hashmap中,然后子线程接收。
找回密码其实和重设密保有什么相识的地方,都是先验证信息密保信息是否正确,然后根据正确与否做出相应的处理
。
判断接受的密保答案是否正确
If(三个问题都回答正确)
返回验证成功信息,通知客户端转入重设密码模块
返回验证失败信息
发送回去没有设置密保的标识,通知该用户由于没有设置密码,通过此方法不能找回密码。
移动好友模块设计思路比较简单,如下
用户发送移动好友信息包,服务器解析出基本数据,在数据库中查到该用户的用户列表信息,更新列表信息,在数据库中做相应的修改
由于基本的几个组操作有很多相似之处,所以将几个组操作划为一个模块,设计思路如下:
用户发送组操作信息包,服务器解析出基本数据和命令,判断要进行的组操作是什么操作,然后进行相应的操作,具体设计思路如下:
If(组操作命令为增加组)
在users数据库中找到此用户的groupsList表,在此表中添加相应的组
Elseif(组操作为删除组)
1、在users数据库中找到此用户的friendsList表,把相应组的好友的组属性改为我的好友,即将要删除组中的好友放到我的好友中,而不是直接将他们删除,
2、在users数据库中找到此用户的groupsList表,在此表中删除相应的组
Elseif(组操作为修改组的名称)
1、在users数据库中找到此用户的friendsList表,把相应组的好友的组属性改为要修改的组名
2、在users数据库中找到此用户的groupsList表,在此表中删找到相应的组,修改此组的名称为要修改的名称
发送系统消息模块是由服务器直接调用的,来完成一些必须的用户响应,此模块发送消息的不同是由器构造函数决定的,其构造函数共有7种,如下:
//
publicsendSystemMessageThread(Stringqq,intstatus)throwsSQLException
1、发送改变状态
publicsendSystemMessageThread(Stringtext)throwsSQLException
2、发送系统消息(全部人)
publicsendSystemMessageThread(Stringqq,intsign,Stringip_od,Stringt)throwsSQLException
3、发送上次登录信息(登陆者)
publicsendSystemMessageThread(Stringqq,Stringtext)throwsSQLException
4、发送系统消息(对登录者)
publicsendSystemMessageThread(Stringqq,systemMessagesys)throwsSQLException
5、发送添加好友请求信息
publicsendSystemMessageThread(intsign,Stringqq)throwsSQLException
6、当在其他地方登录时给另一个QQ发送下线通知
publicsendSystemMessageThread(Stringqq,systemMessagesys,intagree)
7、给该用户发送好友状态改变
由服务器根据不同的需要构造不同的发送系统消息线程,实现相应的响应
用户发送给服务器新个人信息信息,服务器解析出相应的数据,从数据库中查找该用户,在数据库中重写已经更改了的此人的信息
此模块是服务器中唯一和聊天相关的监听线程,此种设计方法极大的降低了服务器的压力,获取ip和聊天port是聊天中很重要的一个环节,设计思路如下:
用户发送给服务器请求另一个人的port的信息包,服务器解析出相应的数据,从内存中查找另一个用户的ip和聊天port,判断是否得到此人信息
If(查询到此人的在线信息)
给客户端返回找到的在线信息
给客户端返回没有找到此人信息,也就是此人不在线,客户端然后做出相应地相应
13、心跳模块
心跳相互协作的工作组及即时聊天领域发挥着详单重要的角色,通过发送心跳报,来判断各个部分工作是否正常,以防某个部分运作异常发现不了,造成严重错误。
心跳包就是在客户端和服务器间定时通知对方自己状态的一个自己定义的命令字,按照一定的时间间隔发送,类似于心跳,所以叫做心跳包。
用来判断对方(设备,进程或其它网元)是否正常运行,采用定时发送简单的通讯包,如果在指定时间段内未收到对方响应,则判断对方已经离线。
用于检测TCP的异常断开。
基本原因是服务器端不能有效的判断客户端是否在线,也就是说,服务器无法区分客户端是长时间在空闲,还是已经掉线的情况。
所谓的心跳包就是客户端定时发送简单的信息给服务器端告诉它我还在而已。
代码就是每隔几分钟发送一个固定信息给服务端,服务端收到后回复一个固定信息如果服务端几分钟内没有收到客户端信息则视客户端断开。
比如有些通信软件长时间不使用,要想知道它的状态是在线还是离线就需要心跳包,定时发包收包。
发
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程课程设计报告 详细设计报告 软件工程 课程设计 报告 详细 设计