仿QQ聊天系统课程设计报告书Word格式.docx
- 文档编号:19064687
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:19
- 大小:1.18MB
仿QQ聊天系统课程设计报告书Word格式.docx
《仿QQ聊天系统课程设计报告书Word格式.docx》由会员分享,可在线阅读,更多相关《仿QQ聊天系统课程设计报告书Word格式.docx(19页珍藏版)》请在冰豆网上搜索。
用户登录:
用户输入自己的QQ及密码后,点击登录,后台对其进行验证,以及好友的查找,登录成功后返回该用户的会话界面。
聊天:
用户选定聊天对象后,对其发送信息,信息将由后台转发给选定的聊天对象,进行,提示,显示。
后台运行用户可以退出主界面,将聊天软件在后台运行,当有消息传入时,消息会用广播的形势显示。
后台管理:
对用户的管理。
1.2安全需求分析
由于Android系统自身具备的开放源码的特征,它的安全性能成为信息安全领域研究的一个重要课题。
Android的安全性能主要体现在两个方面:
Android的系统安全和数据安全。
Android系统安全是指智能终端本身的安全,是对操作系统的保护,防止未授权的访问及对授权用户服务的拒绝或对未授权用户服务的允许,包括行为检测、记录等措施。
Android的数据安全指确保存储数据完整性、合法性二个方面,要求做到系统正确地传输数据,授权程序顺利地读取数据。
Android安全中的一个重要的设计点是在默认的情况下应用没有权限执行对其他应用程序、操作系统或用户的有害操作,这些操作包括读取用户的隐私数据,访问网络,保持设备活动等等,应用程序的进程是一个安全的黑盒子,在没有给它权限的时候它不能干扰其他应用程序。
二.总体设计
系统采用流行的C/S结构模式。
系统的分析设计采用面向对象的技术,应用Visio等工具进行辅助设计。
2.1软件结构图
图2.1软件结构图
2.2功能描述
进入该软件,进入登录界面,如果没有账号,则可以点击立即注册,进入注册界面进行注册,登录进入主界面,显示会话、联系人、设置,通过选择相应菜单进行相关操作。
2.2.1注册功能概要
输入注册需要的信息,且保证正确
参与者:
用户
执行者:
前提条件:
开启程序,进入注册界面
用户注册流程图:
否
图2.2.1用户注册流程图
2.2.2登录功能概要
判断输入信息格式
服务器验证输入信息
跳转进入好友列表界面
登录流程图:
失败
成功
图2.2.2登录功能流程图
2.2.3聊天功能概要
用户点击联系人列表中的一个好友时,进入聊天界面
在输入框输入信息,点击发送按钮,发送信息
好友回复消息是在该聊天页面显示
当有好友发消息过来时,系统会通过Toast提示
当QQ在后台运行时有好友发送消息过来时,系统会通过广播的形势告诉用户
用户聊天后退出聊天界面后,聊天信息保留
用户聊天模块总体流程图:
传输好友回复的消息传输好友回复的消息
封装信息进行传输封装信息进行传输
图2.2.3用户聊天模块总体流程图
2.3安全设计
通过为不同的用户设计不同的用户视图,和为每一个登录的用户设置密码来实现数据库的安全设计要求。
三.数据库设计
3.1概念结构设计
图3.1总体E-R图
3.2逻辑结构设计
1)用户信息(用户编号,用户账号,用户密码,性别,昵称,头像)
2)会话信息(消息编号,好友账号,好友头像,发送/接收消息时间,消息容)
3.3物理结构设计
表3-1用户信息-Users
明细
字段
类型
主键
外键
唯一
可为空
用户编号
objectId
String
是
账号
Username
密码
Password
性别
sex
bool
昵称
nick
string
头像
表3-2会话信息-Bmobmsg
消息编号
messageId
好友账号
好友头像
发送/接收消息时间
S/Rtime
data
消息容
Content
四.详细设计
4.1用户聊天模块总体流程图
图4.1.1用户聊天模块总体流程图
4.2服务端模块
Bmob对数据的增删改查做了很好地封装,以及其批量的处理。
服务端具体功能:
注册信息:
自动分配10位对象标识,并保存该用户信息,同时将信息返回给客户端。
登录信息:
检查登录信息是否正确,并向客户端返回登录信息。
如信息正确,则用户可以成功登录,若登录信息不正确,则会提示是哪种登录错误
聊天信息:
转发给消息指定的用户。
用户间的联系:
将各用户间的关系保存在服务器端,可以在服务器端看出所以QQ用户间的关系。
4.3客户端模块
客户端具体功能
登录功能:
建立与服务器的连接并登录,能显示登录错误信息。
界面显示:
将好友显示在联系人列表中,并可以通过点击进入会话界面,进行与好友的聊天
聊天功能:
当好友发送消息时显示在会话界面。
用户也同时可以在输入框中输入相应信息点击发送与好友聊天。
聊天纪录:
能保存聊天纪录,并能察看聊天纪录。
信息提示:
系统弹出信息提示到来信息,并有声音提示。
发送端提示聊天的对方。
后台运行:
当用户将客户端进行后台运行时,如果有消息传输过来,系统会直接通过广播的形势显示消息的来源以及容。
用户在客户端点击应用程序图标后启动应用如下图:
图4.3.1客户端启动界面
注册登录以后就进入主界面,界面下方有会话、联系人、设置选项,通过选择相应菜单进入相应功能界面,联系人界面如下图所示:
图4.3.2联系人界面
通过点击联系人右面的加号添加好友并进入查找好友界面,前提是服务器端存在此用户才能搜索成功,例如搜索456用户,如下图所示:
图4.3.3查找好友界面
点击添加按钮,则ymm用户向456用户发送好友添加申请,如果456用户在登录状态则会收到此申请,如果同意ymm的请求添加好友申请,则可以单击同意按钮,如下图:
图4.3.4好友添加请求界面
单击同意按钮,则同意ymm的好友添加请求,否则忽视此条好友添加申请消息:
图4.3.5同意好友请求界面
同意ymm的申请后,则ymm用户就是自己的好友了,可以与ymm进行对话
图4.3.6与ymm聊天界面
退出456账号,登录ymm账号查看,此时可以看到456用户给自己发送的消息提醒条数并可查看相关聊天信息
图4.3.7456用户收到回话提醒及查看消息
五.编码
ChatActivity.java用户聊天代码
/***聊天界面*/
publicclassChatActivityextendsActivityBaseimplementsOnClickListener,
IXListViewListener,EventListener{
privateButtonbtn_chat_emo,btn_chat_send,btn_chat_add,btn_chat_keyboard,btn_speak,btn_chat_voice;
XListViewmListView;
EmoticonsEditTextedit_user_comment;
StringtargetId="
"
;
BmobChatUsertargetUser;
privatestaticintMsgPagerNum;
privateLinearLayoutlayout_more,layout_emo,layout_add;
privateViewPagerpager_emo;
privateTextViewtv_picture,tv_camera,tv_location;
//组装聊天对象
targetUser=(BmobChatUser)getIntent().getSerializableExtra("
user"
);
targetId=targetUser.getObjectId();
//BmobLog.i("
聊天对象:
+targetUser.getUsername()+"
targetId="
//+targetId);
//注册广播接收器
initNewMessageBroadCast();
initView();
}
/***加载消息历史,从数据库中读出*/
privateList<
BmobMsg>
initMsgData(){
List<
list=BmobDB.create(this).queryMessages(targetId,MsgPagerNum);
returnlist;
/***界面刷新*/
privatevoidinitOrRefresh(){
if(mAdapter!
=null){
if(MyMessageReceiver.mNewNum!
=0){//用于更新当在聊天界面锁屏期间来了消息,这时再回到聊天页面的时候需要显示新来的消息
intnews=MyMessageReceiver.mNewNum;
//有可能锁屏期间,来了N条消息,因此需要倒叙显示在界面上
intsize=initMsgData().size();
for(inti=(news-1);
i>
=0;
i--){
mAdapter.add(initMsgData().get(size-(i+1)));
//添加最后一条消息到界面显示
}
mListView.setSelection(mAdapter.getCount()-1);
}else{
mAdapter.notifyDataSetChanged();
}
}else{
mAdapter=newMessageChatAdapter(this,initMsgData());
mListView.setAdapter(mAdapter);
}
publicvoidonSuccess(){
ShowLog("
发送成功"
((BmobMsg)values)
.setStatus(BmobConfig.STATUS_SEND_SUCCESS);
parentV.findViewById(R.id.progress_load).setVisibility(
View.INVISIBLE);
parentV.findViewById(R.id.iv_fail_resend)
.setVisibility(View.INVISIBLE);
parentV.findViewById(R.id.tv_send_status)
.setVisibility(View.VISIBLE);
((TextView)parentV.findViewById(R.id.tv_send_status))
.setText("
已发送"
}
/***新消息广播接收者**/
privateclassNewBroadcastReceiverextendsBroadcastReceiver{
Override
publicvoidonReceive(Contextcontext,Intentintent){
Stringfrom=intent.getStringExtra("
fromId"
StringmsgId=intent.getStringExtra("
msgId"
StringmsgTime=intent.getStringExtra("
msgTime"
//收到这个广播的时候,message已经在消息表中,可直接获取
BmobMsgmsg=BmobChatManger.getInstance(ChatActivity.this).getMessage(msgId,msgTime);
if(!
from.equals(targetId))//如果不是当前正在聊天对象的消息,不处理
return;
//添加到当前页面
mAdapter.add(msg);
//定位
//取消当前聊天对象的未读标示
BmobDB.create(ChatActivity.this).resetUnread(targetId);
//记得把广播给终结掉
abortBroadcast();
六.结论
经过一个学期的学习,实践和教学老师的悉心指导,该仿QQ社交软件系统经过测试,达到了预期的目标,完成了一些基本的功能。
本系统功能虽然较为简单,但还是具备一定的实用性和灵活性以及包括很多Android的专业知识,并可以在使用的过程中不断的修改完善。
移动聊天软件虽然原理不难,但依然有很多的问题需要我们一一解决,例如:
如何提高用户体验性,现在市场上的聊天软件已经很多,功能也相对完善,技术也十分成熟,相信只有更好的用户体验性与功能新颖才能够吸引更多的用户使用。
当然本系统还有很多不完善的地方需要加以改进,在今后实际的运用实施过程中会加强改进与完善,使之能够真正的应用到实际上来。
学习体会
这次课程设计是几个人一组进行合作完成,这样不仅培养了我们团队协作意识,而且也让我们在讨论的过程中学到更多的知识。
仿QQ社交软件系统的设计与实现工作的完成让我再一次体会到想象与实际的差距,自主学习一种语言并完成一个小的项目不是那么容易的。
为了在短时间投入到开发,完成系统,需要大量的时间去学习,通过上网XX解决遇到的问题及借阅相关的书籍,以最快的速度熟悉Android、掌握开发中的各种控件的使用。
本文在Android平台以及在该平台上开发手机QQ上做了大量的工作,使其既能够在PC端,又能够在手机端运行。
但因时间关系和有限的个人能力,还有一些问题需要实现和解决。
这次系统的开发对我来说是一个挑战,经过努力,程序运行还算良好,基本功能得以实现。
这一次的系统开发让我受益匪浅,我相信它会对我以后的人生和工作都起到很好的促进作用,有着积极的影响。
致
课程设计期间,王老师及邱老师严谨的治学态度,渊博的学识,对学生诚恳的态度,使我受益匪浅。
在此谨向王老师及邱老师致以诚挚的意和崇高的敬意。
此外,朋友之间的相互帮助同样让人难以忘怀、感动至深。
希望友谊能够天长地久,也祝各位朋友心想事成,万事如意!
参考文献
1)《Android移动应用设计与开发》.:
人民邮电(第四版)
2)[3]BruceEckel.ThinkinginJava.:
机械工业,2009:
42-64
3)超.Android经典应用程序开发[J].人力资源,2011:
5-18
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- QQ 聊天 系统 课程设计 报告书