2024年4月11日发(作者:)
目录
绪论................................................................................................................................ 2
一.需求分析................................................................................................................ 2
1.1软件功能需求分析.......................................................................................... 3
1.2 安全需求分析................................................................................................. 3
二.总体设计................................................................................................................ 4
2.1 软件结构图..................................................................................................... 4
2.2 功能描述......................................................................................................... 4
2.2.1注册功能概要..................................................................................... 5
2.2.2登录功能概要..................................................................................... 5
2.2.3聊天功能概要..................................................................................... 6
2.3 安全设计......................................................................................................... 7
三.数据库设计............................................................................................................ 7
3.1概念结构设计.................................................................................................. 7
3.2逻辑结构设计.................................................................................................. 8
3.3物理结构设计.................................................................................................. 8
四.详细设计................................................................................................................ 8
4.1 用户聊天模块总体流程图............................................................................ 9
4.2 服务端模块.................................................................................................... 9
4.3 客户端模块.................................................................................................. 10
五.编码...................................................................................................................... 15
六.结论...................................................................................................................... 17
学习体会...................................................................................................................... 18
致谢.............................................................................................................................. 18
参考文献...................................................................................................................... 18
绪论
随着现代技术的不断输入和信息化的广泛普及,移动网络作为一种新兴事
物,在近些年得到了前所未有的普及和深入,移动网络上的各种应用层出不穷,
给各个阶层、各个年龄段的用户提供了不同的个性化的服务。而现代中小型企业
的领导认识到进一步提高企业信息化的必要性。为使企业能在瞬息万变的信息时
代生存下去,适应激烈的市场竞争,现代企业要求加强员工之间的交流和通信能
力,尤其是领导和员工之间的共同能力,实时的交流系统就是在这种条件下诞生
的。
在这个信息化时代,手机已成为继固话之后最为通俗的交流工具,“聊天”
成了生活的必需品,这就有了系统下人与人之间的多样会话方式—QQ聊天。传
统会话聊天或许是面对面闲话家常或许是通过打电话进行交流,但都存在各种不
便及弊端 。而手机QQ,在手机系统下,占用手机相对很小的空间,系统的记录
了QQ好友的信息,不仅突破了各种条件的束缚,减轻了机主的负担,更方便了
使用者的通讯交流。
综上所述,本课题主要研究基于Android的移动聊天系统,以更好的用户体
验性为目的开发出界面简洁,用户易操作的移动即时通信聊天工具。该聊天工具
的主要功能:用户注册,登录,好友一对一聊天,添加新好友,修改个人信息等。
在该即时通信工具中利用Bmob实现Android端与Bmob服务端的数据操作。Bmob
对数据的增删改查找做了很好地封装,以及其批量的处理。客户端之间通过服务
器对数据的转发实现相互通信。
一.需求分析
随着经济全球化的推进以及企业激烈的竞争,改善企业内部及整个供应
链各环节的管理、调度资源配置,迅速适应客户的新需求和市场新机遇,是
企业赢得竞争胜利的决定性因素。
需求分析是软件分析中的一个重要步骤。它的基本任务是要准确地分析
出系统应用者的需要,以及系统目标必须具备哪些功能。这些功能必须准确
地,完整地体现出用户的要求。
1.1软件功能需求分析
通过对用户需求的市场调查的分析,确定反应用户需求的系统逻辑模型,把
整个设计划分成3个单元,分别是程序启动、用户界面、后台服务。使用Android
和java编程语言及网络数据库相结合,编写一个基于android端的移动聊天系
统软件。这个系统提供多个用户及时并发通信的平台。未注册用户可以注册成系
统成员,已注册用户可以通过登录进入聊天系统。在系统中用户可以选择与某一
个用户聊天,用户可以查找好友或附近的人,可以添加好友或把好友加黑名单等。
➢ 用户注册 :用户在注册界面填入相关正确信息后,后台对其进行处理。
➢ 用户登录:用户输入自己的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 登录功能流程图
输入QQ号及密码
判断QQ号及密
码是否为空
进入
登录成功
2.2.3聊天功能概要
➢ 用户点击联系人列表中的一个好友时,进入聊天界面
➢ 在输入框输入信息,点击发送按钮,发送信息
➢ 好友回复消息是在该聊天页面显示
➢ 当有好友发消息过来时,系统会通过Toast提示
➢ 当QQ在后台运行时有好友发送消息过来时,系统会通过广播的形势告诉用
户
➢ 用户聊天后退出聊天界面后,聊天信息保留
用户聊天模块总体流程图:
用户A
用户B
成功登录/
成功登录/
返回主界面
返回主界面
点击好友进
点击好友进
入聊天界面
入聊天界面
输入信息
传输好友回复的消息 传输好友回复的消息
输入信息
封装信息进行传输 封装信息进行传输
接收信息,处
理,转发(根据
账号)
图2.2.3 用户聊天模块总体流程图
2.3 安全设计
通过为不同的用户设计不同的用户视图,和为每一个登录的用户设置密码来
实现数据库的安全设计要求。
三.数据库设计
3.1概念结构设计
密码
昵称
性别
账号
会话
注册时间
好友头像
消息编号
好友账号
注册时间
性别
聊天
发送/接收
消息时间
消息内容
会话
密码
账号
昵称
图3.1 总体E-R图
3.2逻辑结构设计
1) 用户信息(用户编号,用户账号,用户密码,性别,昵称,头像)
2) 会话信息(消息编号,好友账号,好友头像,发送/接收消息时间,消息内容)
3.3物理结构设计
表3-1 用户信息-Users
明细
用户编号
账号
密码
性别
昵称
头像
表3-2 会话信息-Bmobmsg
明细 字段 类型 主键 外键 唯一 可为空
字段
objectId
Username
Password
sex
nick
类型
String
String
String
bool
string
主键
是
外键
是
唯一
是
是
否
是
可为空
否
否
否
消息编号
好友账号
好友头像
messageId
Username
S/Rtime
Content
string
string
data
string
是
是
是
是
否
是
否
否
否
是
是
是
发送/接收消
息时间
消息内容
四.详细设计
4.1 用户聊天模块总体流程图
用户A
成功登录/
返回主界面
点击好友进
入聊天界面
输入信息
传输好友回复的消息 传输好友回复的消息
封装信息进行传输 封装信息进行传输
用户B
成功登录/
返回主界面
点击好友进
入聊天界面
输入信息
接收信息,处
理,转发(根据
账号)
图4.1.1 用户聊天模块总体流程图
4.2 服务端模块
在该即时通信工具中利用Bmob实现Android端与Bmob服务端的数据操作。
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.7 456用户收到回话提醒及查看消息
五.编码
用户聊天代码
/*** 聊天界面*/
public class ChatActivity extends ActivityBase implements OnClickListener,
String targetId = "";
BmobChatUser targetUser;
private static int MsgPagerNum;
private LinearLayout layout_more, layout_emo, layout_add;
private ViewPager pager_emo;
private TextView tv_picture, tv_camera, tv_location;
// 组装聊天对象
targetUser = (BmobChatUser) getIntent().getSerializableExtra("user");
EmoticonsEditText edit_user_comment;
XListView mListView;
IXListViewListener, EventListener {
private Button btn_chat_emo, btn_chat_send, btn_chat_add,btn_chat_keyboard, btn_speak,
btn_chat_voice;
//
//
}
targetId = ectId();
BmobLog.i("聊天对象:" + rname() + ",targetId = "
+ targetId);
//注册广播接收器
initNewMessageBroadCast();
initView();
/** * 加载消息历史,从数据库中读出*/
private List
}
}
/*** 界面刷新 */
if (mAdapter != null) {
}
if (m != 0) {// 用于更新当在聊天界面锁屏期间来了
}
mAdapter = new MessageChatAdapter(this, initMsgData());
pter(mAdapter);
int news= m;//有可能锁屏期间,来了N条消息,
int size = initMsgData().size();
for(int i=(news-1);i>=0;i--){
}
ection(nt() - 1);
DataSetChanged();
(initMsgData().get(size-(i+1)));// 添加最后一条消息到界面
List
return list;
private void initOrRefresh() {
消息,这时再回到聊天页面的时候需要显示新来的消息
因此需要倒叙显示在界面上
显示
} else {
} else {
public void onSuccess() {
ShowLog("发送成功");
((BmobMsg) values)
.setStatus(_SEND_SUCCESS);
BLE);
ewById(ss_load).setVisibility(
ewById(_fail_resend)
}
.setVisibility(BLE);
.setVisibility(E);
.setText("已发送");
ewById(. tv_send_status)
((TextView) ewById(_send_status))
/*** 新消息广播接收者**/
private class NewBroadcastReceiver extends BroadcastReceiver {
}
@Override
public void onReceive(Context context, Intent intent) {
}
String from = ingExtra("fromId");
String msgId = ingExtra("msgId");
String msgTime = ingExtra("msgTime");
// 收到这个广播的时候,message已经在消息表中,可直接获取
BmobMsg msg = tance().getMessage(msgId,
if (!(targetId))// 如果不是当前正在聊天对象的消息,不处理
return;
//添加到当前页面
(msg);
// 定位
ection(nt() - 1);
//取消当前聊天对象的未读标示
().resetUnread(targetId);
// 记得把广播给终结掉
abortBroadcast();
msgTime);
六.结论
经过一个学期的学习,实践和教学老师的悉心指导,该仿QQ社交软件系统
经过测试,达到了预期的目标,完成了一些基本的功能。本系统功能虽然较为简
单,但还是具备一定的实用性和灵活性以及包括很多Android的专业知识,并可
以在使用的过程中不断的修改完善。
移动聊天软件虽然原理不难,但依然有很多的问题需要我们一一解决,例如:
如何提高用户体验性,现在市场上的聊天软件已经很多,功能也相对完善,技术
也十分成熟,相信只有更好的用户体验性与功能新颖才能够吸引更多的用户使
用。当然本系统还有很多不完善的地方需要加以改进,在今后实际的运用实施过
程中会加强改进与完善,使之能够真正的应用到实际上来。
学习体会
这次课程设计是几个人一组进行合作完成,这样不仅培养了我们团队协作意
识,而且也让我们在讨论的过程中学到更多的知识。仿QQ社交软件系统的设计
与实现工作的完成让我再一次体会到想象与实际的差距,自主学习一种语言并完
成一个小的项目不是那么容易的。为了在短时间内投入到开发,完成系统,需要
大量的时间去学习,通过上网百度解决遇到的问题及借阅相关的书籍,以最快的
速度熟悉Android、掌握开发中的各种控件的使用。本文在Android平台以及在
该平台上开发手机QQ上做了大量的工作,使其既能够在PC端,又能够在手机端
运行。但因时间关系和有限的个人能力,还有一些问题需要实现和解决。这次系
统的开发对我来说是一个挑战,经过努力,程序运行还算良好,基本功能得以实
现。这一次的系统开发让我受益匪浅,我相信它会对我以后的人生和工作都起到
很好的促进作用,有着积极的影响。
致谢
课程设计期间,王老师及邱老师严谨的治学态度,渊博的学识,对学生诚恳
的态度,使我受益匪浅。在此谨向王老师及邱老师致以诚挚的谢意和崇高的敬意。
此外,朋友之间的相互帮助同样让人难以忘怀、感动至深。希望友谊能够天
长地久,也祝各位朋友心想事成,万事如意!
参考文献
1) 《Android移动应用设计与开发》.北京:人民邮电出版社(第四版)
2) [3] Bruce Eckel.Thinking in Java.北京:机械工业出版社,2009:42-64
3) 韩超. Android经典应用程序开发[J] . 人力资源出版社,2011:5-18
发布评论