毕业论文模板

更新时间:2024-05-14 17:57:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

毕业论文(设计)

题 目 基于android平台的聊天软件设计与实现 学 院 电气与电子信息学院 专 业 通信工程 年级 2012级 学生姓名 xxxx 学 号 xxxxx 指导教师 陈 理

1

四川大学锦江学院毕业论文(设计)

基于android平台的聊天软件设计与实现

通信工程专业

学生 xxx 指导老师 陈理

【摘要】聊天工具又称IM软件或者IM工具,主要提供基于互联网络的客户端进行实时语音、文字传输。这是一种可以让使用者在网络上建立某种私人聊天室的实时通讯服务,本课题主要研究基于Android的移动聊天系统,开发出界面简洁,用户易操作的即时通信聊天软件。主要功能:用户注册,登录,好友一对一聊天,群组聊天。在该即时通信工具中客户端之间通过服务器对数据的转发实现相互通信。

本文首先概述了IM聊天工具的背景,其次是课题的目的及意义,然后介绍了软件开发的环境和开发工具及其技术,给出了软件的系统架构,各个模块的流程图及用例,在Eclipse中使用Java语言实现了APP各个功能模块, 该APP的功能主要包括用户登录、注册、聊天框架、通讯录管理、个人信息管理等功能模块。

【关键词】Android 通信 聊天软件 注册 登录

2

四川大学锦江学院毕业论文(设计)

【Abstract】The main research topics of the graduation Android-based mobile chat

system, according to its architecture and design principles developed interface is simple and easy to operate mobile instant messaging chat tools. The main function of the chat tool: user registration, login, friends one-on-one chat, group chat. Data transmission in the real-time communication tools Socket Programming.

Communicate with each other on the data forwarding between the client through the server.

The paper first outlines the background of the IM chat tool, followed by the purpose and significance of the issues, and then describes the software development environment and the development of tools and technology, the software system architecture, the flow chart of each module and use cases, and then detailed change instant messaging tool design and implementation, and finally a simple test system. 【Keywords】Android; communication; chat software; sign; log in

3

1

四川大学锦江学院毕业论文(设计)

目录

第一章 绪论........................................................ 3

1.1聊天软件背景................................................. 3 1.2 课题意义 .................................................... 3 1.3 研究内容 .................................................... 4 1.4 设计思想 .................................................... 4 第二章 Android聊天软件可行性分析 .................................. 5

2.1 Android 行业概述 ............................................ 5

2.1.1 认识Android ........................................... 5 2.1.2 Android开发概述 ....................................... 5 2.1.3 Android的Listview介绍 ............... 错误!未定义书签。 2.2 软件开发的工具和环境 ........................................ 5

2.2.1 编程语言............................................... 5 2.2.2 技术路线............................................... 5 2.2.3 用户要求............................................... 6 2.2.4 运行环境............................................... 6 2.3 基于数据库实现设计 .......................................... 7

2.3.1常用的数据库软件 ....................................... 7 2.3.2消息推送原理 ........................................... 7 2.3.3数据库表 ............................................... 7 2.3.4数据管理要求 ........................................... 8

第三章 基于Android平台的聊天系统设计............................... 8

3.1 聊天软件功能 ............................................... 8

3.1.1 功能描述............................................... 8 3.1.2 界面布局设计........................................... 8 3.1.3 消息推送原理........................................... 9 3.2系统架构图................................................... 9

3.2.1 系统逻辑流程图......................................... 9 3.3.2系统物理架构图 ........................................ 10 3.3接口设计.................................................... 11

3.3.1 用户接口.............................................. 11 3.3.2 外部接口.............................................. 11 3.3.3 内部接口.............................................. 11

第四章 基于Android平台的聊天系统实现.............................. 11

4.1 服务端模块 ................................................. 11

4.1.1登录 .................................................. 11 4.1.2注册 .................................................. 12 4.1.3聊天 .................................................. 12 4.1.4下线 .................................................. 12 4.2 客户端模块 ................................................. 12

4.2.1 注册/登录界面......................................... 12 4.2.2 聊天界面.............................................. 14

1

2

四川大学锦江学院毕业论文(设计)

4.2.3 好友信息界面.......................................... 15 4.2.4 设置界面.............................................. 16 4.2.5 聊天记录.............................................. 18 4.2.6 退出程序.............................................. 19

第五章 基于Android平台的聊天系统系统测试......................... 19 第六章 总结与展望................................................. 21 致谢............................................................... 22 参考文献........................................................... 23

2

8

四川大学锦江学院毕业论文(设计)

Password Tel Sex Email varchar varchar varchar varchar 密码 电话 性别 邮箱 N Y Y Y 表2.1用户的数据库表

聊天记录数据库表 字段名 dataid name img data time 数据类型 varchar varchar varchar varchar datatime 说明 主键 好友账户名 好友头像 聊天记录 最后聊天时间 允许为空 N N N Y Y 备注 表2.2聊天记录数据库表

好友信息数据库表 字段名称 friendID name data time 数据类型 varchar varchar varchar datatime 说明 主键 好友账户名 聊天记录 最后聊天时间 允许为空 N N Y Y 备注 表2.3好友信息数据库表

2.3.4数据管理要求

用户账号信息:用户账号,由于是String类型,可以为中文。 聊天记录信息:不能存在非法语言。 用户名信息:不能超过20个字符。 密码信息:不超过20个字符。

3.基于Android平台的聊天系统设计

3.1 聊天软件功能

3.1.1 功能描述

四种类型的消息:文本、聊天表情、图片、语音、位置 用户管理功能:注册、登录

好友管理功能:添加好友、删除好友、获取好友列表、黑名单管理、 聊天记录的本地化存储。 3.1.2 界面布局设计

界面布局是一个活动条目中对于用户界面的架构设计,它通过存储全部显示给用户的元素来定义界面布局结构。客户端的用户界面布局文件存放/res/layout

8

9

四川大学锦江学院毕业论文(设计)

中, 用XML 格式的布局文件定义应用程序默认的布局,包括将显示在屏幕的元素和属性。可以通过编程修改客户端界面上对象的状态,这种布局设计是非常重要的,其中也包括了系统定义在XML文件中的元素。 3.1.3 消息推送原理

Java的Scoket网络编程,Java服务端对Android端提交的数据进行处理然后发给客户端进行显示。

多线程编程,每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。进程也可能是整个程序或者是部分程序的动态执行,使用过程中用户在客户端首先将信息发送到服务器,服务器识别并解析信息,然后将信息转发给相应的用户,使用线程可以把占据长时间的程序中的人物放到后台去处理,比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度,程序的运行速度可能加快,用户界面更加吸引人[9]。

网络编程,Android手机端将组装好的数据包通过无线网络发送到服务器,服务器读取并解析数据包,组装一个相应的回应数据库并返回给Android端,以此达到通信的目的。

3.2系统架构图

3.2.1 系统逻辑流程图

用Visio结合聊天软件所实现功能画出以下流程图: 如图3-1

9

10

四川大学锦江学院毕业论文(设计)

用户运行客户端N设备是否有该用户的配置?向导模式直接调用该配置文件,进入连接状态是否有账号?YN注册界面登录界面N连接是否成功?Y手动设置N登陆是否成功?Y主界面 图3-1

3.3.2系统物理架构图

系统设计的物理架构图如图3-2

图3-2

10

11

四川大学锦江学院毕业论文(设计)

3.3接口设计

3.3.1 用户接口

本聊天软件是基于Android聊天系统的应用程序,属于在互联网基础上的聊天管理系统,用户只需要在客户端使用安卓智能手机打开应用软件和进行操作,通过系统对用户账号验证,就可以享受应用程序所拥有的功能。系统不需要额外的特殊命令和额外的客户端,通过客户端,输入正确地址就可以访问系统。 3.3.2 外部接口

服务器程序可使用oracle 提供的对SQL 的接口,进行对数据库的所有访问。服务器程序上可使用oracle 的数据库对重要数据进行的备份,防止数据被破坏而无法恢复。在网络软件接口方面,使用socket传输用户信息。 3.3.3 内部接口

本系统的功能模块是采用java面向对象编程的逻辑思想,通过接口实现模块与模块之间调用,增大了系统的稳定性从而减轻功能模块之间的耦合性。模块间的数据传入是利用接口的调用,参数传递,接口返回值来达到传递数据的目的。模块内部是采用函数调用,参数传递,返回值来实现模块内部的数据传递。

4.基于Android平台的聊天系统实现

4.1 服务端模块

本设计服务器端采用了Bmbo云端服务器。Bmob是一个开发云存储的移动应用软件,在本设计中,Bmbo给聊天软件添加了一个方便安全管理的后台管理系统,适用于浏览终端保存客户端产生的信息。在这个平台上,注册一个帐号之后,可以申请创建一个或者多个数据库,获得对应的密钥,然后在后台下载我们所需要的对应版本的SDK程序包并嵌入到软件应用程序中,使用过程中可以对数据进行保存,修改等操作。这个云端服务器,对于本设计来说是很好的一个选择,初学者来说使用起来较为容易,也比较方便。

数据输入的时候通过使用移动智能手机设备登录,主界面为好友聊天界面,点击好友与其进行聊天,系统会通过通信机制协议向服务端传输数据。数据输出的时候服务端会将解析后的数据输出到客户端,通过判断客户端输出数据类型,进行相应的消息反馈。 4.1.1登录

客户端输入登录账号和密码,服务端接收到登录信息并检查其是否正确,并向客户端反馈登录信息,若是信息正确。服务端就发送一个反馈数据给该用户,

11

12

四川大学锦江学院毕业论文(设计)

并在此时给客户端建立一个长链接,用于进行通信的基本操作,并将该用户的状态发给各在线用户。同时在服务器端显示出来。 4.1.2注册

客户端申请注册账号,将用户账号,密码用一种普遍的加密手段打包,然后以通信协议的一种TCP方式发送到服务器上,接收服务器给定反馈的一个cookie(这个值一般是对应在服务器Session的一个验证码,里面可以包含失效时间)。此后每次用户提交信息的行为,都可以以这个cookie作为判断条件,保存该用户账号,同时将信息返回给客户端。 4.1.3聊天

服务端创建一个ServerSocket对象,并让这个对象在端口监听,如果客户端没有发送数据,那么该线程就停滞不继续,接收到客户端发送的请求,然后识别转发给消息指定的用户。 4.1.4下线

服务端检查是否有连接,并断开与客户端的长链接,记录每一个用户的状态,当其他用户需要读取到改用户的状态,能准确读取到用户处于下线状态,将此用户下线消息发给各客户端,并改写用户在服务器端的状态[10]。

4.2 客户端模块

登录功能:建立与服务器的连接并登录,能显示登录错误信息。

界面显示:主界面为好友聊天界面,显示了已经参与会话的好友列表,子界面为好友资料以及删除,加入黑名单的好友界面。

聊天功能:与好友聊天时显示在会话界面。只需要在输入框中输入文本信息点击发送就可以与好友通信,还包括位置,图片,语音的发送。

聊天纪录:保存聊天纪录,也可以加载历史记录,当加载到第一次会话,提示“聊天记录已经加载完了哦!”。

信息提示:系统弹出信息提示到来信息,并播放音乐来提示。

后台运行:当用户将客户端进行后台运行时,如果有消息传输过来,系统会直接通过广播的形势显示消息的来源以及内容。 4.2.1 注册/登录界面

登录功能:客户端通过账号与密码建立与服务器的连接,若账号与密码是正确的可以成功登陆,当然,该用户的账号与密码可以存入数据库中,退出登录之后再启动程序可以检测是否存在配置文件从而自动登录,若是没有账号,则可以注册账号。

用户在客户端点击应用程序图标后启动应用如图4-1:

12

13

四川大学锦江学院毕业论文(设计)

图4-1注册/登录界面

关键代码:

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//去掉状态栏 setContentView(R.layout.main); util = new SharePreferenceUtil(this, Constants.SAVE_USER); if (util.getisFirst()) { createShut();// 创建快捷方式 moveSound(); } initView(); }

13

14

四川大学锦江学院毕业论文(设计)

4.2.2 聊天界面

在客户端,通过创建Socket 来实现和服务器的连接,通过一个按钮来实现客户端向服务器发送消息,在接通后 ,TextView显示来自服务器的消息。界面如图4-2:

图4-2聊天界面

关键代码:

private void sendVoiceMessage(String local, int length) { manager.sendVoiceMessage(targetUser, local, length, new UploadListener() { @Override public void onStart(BmobMsg msg) { // TODO Auto-generated method stub refreshMessage(msg); } @Override public void onSuccess() { mAdapter.notifyDataSetChanged(); } @Override

14

15

四川大学锦江学院毕业论文(设计)

}

});

public void onFailure(int error, String arg1) { // TODO Auto-generated method stub ShowLog(\上传语音->arg1:\ mAdapter.notifyDataSetChanged(); }

4.2.3 好友信息界面

显示的条目:好友头像、昵称、账号、性别,两个按钮-发起会话、黑名单,如果加入了黑名单,就不能聊天,通过一个布尔值判断,单独一张表存放黑名单。

布尔值是“真” True 或“假” False 中的一个。动作脚本也会在适当时将值 True 和 False 转换为 1 和 0。布尔值经常与动作脚本语句中通过比较控制脚本流的逻辑运算符一起使用。

界面如图4-3:

图4-3好友信息界面

关键代码:

private void showBlackDialog(final String username) {

15

16

四川大学锦江学院毕业论文(设计)

DialogTips dialog = new DialogTips(this, \加入黑名单\加入黑名单,你将不再收到对方的消息,确定要继续吗?\确定\ dialog.SetOnSuccessListener(new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialogInterface, int userId) { // 添加到黑名单列表 userManager.addBlack(username, new UpdateListener() { @Override public void onSuccess() { // TODO Auto-generated method stub ShowToast(\黑名单添加成功!\ btn_back.setVisibility(View.GONE); layout_black_tips.setVisibility(View.VISIBLE); // 重新设置下内存中保存的好友列表 CustomApplcation.getInstance().setContactList(

CollectionUtils.list2map(BmobDB.create(SetMyInfoActivity.this).getContactList())); } @Override public void onFailure(int arg0, String arg1) { // TODO Auto-generated method stub ShowToast(\黑名单添加失败:\ } }); } }); 4.2.4 设置界面

本界面的条目有:接收或者屏蔽消息,开启声音,开启震动,退出登录。界面如图4-4:

16

17

四川大学锦江学院毕业论文(设计)

图4-4设置界面

关键代码:

public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); mSharedUtil = mApplication.getSpUtil(); }

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub return inflater.inflate(R.layout.fragment_set, container, false); }

@Override

public void onActivityCreated(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onActivityCreated(savedInstanceState); initView(); initData(); }

17

18

四川大学锦江学院毕业论文(设计)

4.2.5 聊天记录

当用户与好友进行聊天后。系统会自动将该好友加入最近聊天分组里面。且聊天记录也会保存进相应的最近聊天界面内,聊天记录是存在本地存储里。如图4-5:

图4-5聊天记录

关键代码: public void onRefresh() { // TODO Auto-generated method stub handler.postDelayed(new Runnable() { @Override public void run() { // TODO Auto-generated method stub MsgPagerNum++; int total =

BmobDB.create(ChatActivity.this).queryChatTotalCount(targetId); BmobLog.i(\记录总数:\ int currents = mAdapter.getCount(); if (total <= currents) { ShowToast(\聊天记录加载完了哦!\ } else { List msgList = initMsgData(); mAdapter.setList(msgList); mListView.setSelection(mAdapter.getCount() - currents - 1);

18

19

四川大学锦江学院毕业论文(设计)

}

} mListView.stopRefresh(); } }, 1000);

4.2.6 退出程序

再按一次返回键退出程序功能,在Application类(android的application类)中,写一个布尔值默认为false,然后在Activity中重写onKeyDown()方法,监听如果用户第一次点击返回键,使用Handler发消息,通知修改布尔值为true;然后使用countDownTime()进行倒计时,如果在两秒内用户再次按下返回键,则所有Activity执行finish()方法(退出程序)。如图4-6:

图4-6退出程序

5.基于Android平台的聊天系统系统测试

系统测试是应用软件最后的一个过程。应用程序运行时需要多次的测试来发现程序中存在的BUG,从而不断的完善系统,服务更加人性化。经过对系统对服务端和客户端的测试,首先服务器端软件测试,测试服务器端服务是否能开启,服务器端是否能对客户端传来的数据进行正确的解析,客户端应用程序进行测试,移动智能终端设备界面是否能正确显示,数据是否能准确收发,相应客户端功能

19

20

四川大学锦江学院毕业论文(设计)

是否存在不足,最后结合客户端与服务端一起测试,测试客户端是否能与服务端连接,登录,注册,聊天等功能是否正常实现。

20

21

四川大学锦江学院毕业论文(设计)

系统测试 ID 测试项目 1 2 3 4 5 6 7 8 9 用户登录 用户登录 用户注册 用户注册 发送文本消息 发送图片 发送语音 发送位置 删除好友 测试数据设计 正确的用户名、密码 错误的用户名、密码 正确数据 非法数据 输入数据点击发送 选择图片点击发送 按住说话点击发送 选择位置点击发送 选中好友选择删除 预期结果 正确进入主界面 无法进入主界面 注册成功 注册失败 发送成功 发送成功 发送成功 发送成功 删除成功 结论 完成测试 完成测试 完成测试 完成测试 完成测试 完成测试 完成测试 完成测试 完成测试 表5.1表 5-1 系统功能测试详细表

6.总结与展望

经过查阅相关资料和辅导老师陈理的悉心指导,我这个Android聊天软件终于经过测试,一切顺利,APP也成功的让同学们试用,效果还不错。我把这个聊天软件取名为‘聊聊’,仿造了微信的应用基础,但还是具备聊天软件常见的功能,希望同学们在使用的过程中给我多提点意见让我对自己的作品进行完善。

从原理上来讲,这种架构的聊天软件开发起来不困难,但这里任然存在很多的问题等待着我去解决,比如说怎么样提高用户在使用过程中的趣味性,市场上无数的应用软件伴随着时代运营而生,只有不停的创新,才可以让用户拥有独特的体验,吸引更为广泛的用户群体,本文通过建立一个原型进行了技术方面的一些探索,通过这些探索我们有理由相信,建立基于移动网络的聊天系统从生活上来说事必须的。

从最开始的需求可行性分析,到系统设计,技术开发工具以及环境的配置,最后的软件测试,整个过程都是很好的体验,体会到做一个项目的不容易,本文还是存在很多需要修改的地方,今后一点点完善。集成多媒体的应用有着更强的吸引力,为用户提供更多个性化的服务,将成为未来移动即时通信发展的一个必然趋势[11]。

21

22

四川大学锦江学院毕业论文(设计)

致谢

在这个栀子花开的时候,我们马上就要结束四年的大学生活,一路上有开心,有眼泪,伴随着欢笑与疼痛我们慢慢的在成长,大学是一个微社会,不仅教我们学习知识,还教会我们做人的道理,在这里,我非常感谢身边的同学和老师,四年当中给与我的帮助和陪伴!

本文是在陈理老师的指导下完成的。选题的时候为双选,我们选题目,选导师,最后导师选择了我,很高兴,从一开始的无从下手到初稿,定稿,离不开老师的指导,另外,我也在网络上,书上查询相关文档,资料,这段时间以来,一起努力的同学们,悉心指导的老师,让我们感触很深,我们遇到了很多技术上,思想上的问题,大家相互鼓励,共同成长,解决了问题的那一刻,心情是很愉悦而且非常有成就感,终于顺利完成了毕业设计,在校外实习,明白了生活有很多不容易的地方,回归校园的那一刻,发现同学们的笑容是那样的纯真,感谢四年的大学生活成为我们青春的回忆。

我们马上就要踏进社会,可能前面的两三年会很迷茫,会受伤,但是我们一定要有一颗积极向上的心,同学的情谊能天长地久,所有的朋友都能前程似锦,达到人生巅峰!

最后,感谢各位答辩老师鞭策与鼓励。

22

23

四川大学锦江学院毕业论文(设计)

参考文献

[1] 齐行程. 基于数据报文特征的即时通讯软件监测与控制技术研究[D]. 南京航空航天大学, 2010.

[2] 王静, 孙士宏. 图书馆服务如何应对“千年一代”的挑战[J]. Journal of Jinzhou Medical College:socialence Edition, 2006, 4(3):104-106.

[3] 刘善淋. 局域网内部实时通讯系统分析及应用[D]. 同济大学软件学院 同济大学, 2008.5(5):34-36.

[4]陈锁柱. 基于Google Android平台移动轨迹记录系统的研究与应用[D]. 内蒙古大学, 2011.6(1):110-112.

[5]袁刚. 基于Android平台应用安全管理软件设计与实现[D]. 北京邮电大学, 2012.2(1):67-68.

[6]陈育斌. 基于Android平台的即时通信系统设计与实现[J]. 中国科技博览, 2015.7(5):322-322.

[7]刘威, 杨永吉. Web数据库的实现技术[J]. 长春大学学报, 2001, 11(4):18-19.

[8]李玉芝. 关系型数据库Oracle、DB2、Sql Server的比较研究[J]. 中国科技博览, 2010.6(26):100-100.

[9]潘海波. 多线程扫描局域网内的计算机[J]. 黑龙江科技信息, 2009.4(9):75-75.

[10]袁淑萍, 徐蕾, 杨建. 基于Winsock控件的TCP协议模拟通信[J]. 电脑编程技巧与维护, 2011, 01(16):71-73.

[11]马志强. 基于Android平台即时通信系统的设计与实现[D]. 北京交通大学, 2009.9(3):43-43.

23

23

四川大学锦江学院毕业论文(设计)

参考文献

[1] 齐行程. 基于数据报文特征的即时通讯软件监测与控制技术研究[D]. 南京航空航天大学, 2010.

[2] 王静, 孙士宏. 图书馆服务如何应对“千年一代”的挑战[J]. Journal of Jinzhou Medical College:socialence Edition, 2006, 4(3):104-106.

[3] 刘善淋. 局域网内部实时通讯系统分析及应用[D]. 同济大学软件学院 同济大学, 2008.5(5):34-36.

[4]陈锁柱. 基于Google Android平台移动轨迹记录系统的研究与应用[D]. 内蒙古大学, 2011.6(1):110-112.

[5]袁刚. 基于Android平台应用安全管理软件设计与实现[D]. 北京邮电大学, 2012.2(1):67-68.

[6]陈育斌. 基于Android平台的即时通信系统设计与实现[J]. 中国科技博览, 2015.7(5):322-322.

[7]刘威, 杨永吉. Web数据库的实现技术[J]. 长春大学学报, 2001, 11(4):18-19.

[8]李玉芝. 关系型数据库Oracle、DB2、Sql Server的比较研究[J]. 中国科技博览, 2010.6(26):100-100.

[9]潘海波. 多线程扫描局域网内的计算机[J]. 黑龙江科技信息, 2009.4(9):75-75.

[10]袁淑萍, 徐蕾, 杨建. 基于Winsock控件的TCP协议模拟通信[J]. 电脑编程技巧与维护, 2011, 01(16):71-73.

[11]马志强. 基于Android平台即时通信系统的设计与实现[D]. 北京交通大学, 2009.9(3):43-43.

23

本文来源:https://www.bwwdw.com/article/71z7.html

Top