移动软件开发课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Y angtze University College of Arts and Science 学生课程设计报告
系部:机电与信息工程系
专业:计算机科学与技术
班级:计科5131 姓名:来超
学号: 6
课程名称:移动平台数据库综合开发
指导教师:王腾
实习时间:2016年6月20日至2016年6月27日
android即时通讯软件
摘要
在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,例如,国外的ICQ、国内腾讯公司开发的OICQ。基于Java网络编程的强大功能,本次课程设计使用Java编写一个运行在版本以上的即时通讯软件。一般来说,聊天工具大多数由客户端程序和服务器程序外加服务器端用于存放客户数据的数据库组成。
Java提供的多线程功能用多线程可完成一点对多点的聊天,数据库管理系统用SQLlite来访问数据库的。本系统建立在JAVA平台上,系统的设计使用了面向对象技术和面向对象的设计原则。系统采用C/S结构,客户端与客户端以及客户端与服务器端之间传送消息。使用JAVA语言编写,开发工具采用AS。
在智能手机中,Android平台约占75%市场份额。安卓系统的广泛应用,使得Android手机应用程序的数量快速增长,即时通讯APP的应用范围也更加广泛。
关键字:多线程;客户机/服务器;JAVA;AS ;Android手机应用
1.开发背景
Android的英文翻译是指“机器人”,而Android这个词语作为操作系统的名称出现,是谷歌在2007年发布了应用在手机平台上的操作系统,自此Android作为手机操作系统出现在人们的视野中。同时由于Android的操作系统的开源性和可开发性使得以Android操作系统的应用软件日益增多。Android操作系统被越来越多的人接受和使用。
目前的Android聊天软件基本分为2种架构形式:(1)C/S架构:采取客户端/服务器对等传输的形式,用户方主要使用客户端软件,使用前用户通过网上下载客户端软件,再安装到手机上进行使用,市场上流行的C/S架构的聊天软件有以下几种:QQ、微信、微博、YY、MSN等;(2)B/S架构:浏览器/服务端对等传输的形式,这种形式下的即时通信工具,一般都是依赖于互联网,作为用户无需下载客户端,用户一般在浏览往网上网页时浏览器会提供一个类似于客户端的界面使用户可以发送消息,此架构一般应用在数据流比较大的电商网站,如WebQQ等。
2.软件需求分析
软件开发的工具和环境
1.开发环境:AS
2.开发语言:JAVA
3.模拟机平台:AVD
4.手机运行平台:以及上版本开发软件
5.所需插件:JDK
安装JDK和SDK
先从网站上找到(JREaloneisnotsufficient)版本并下载,下载完毕后将它安装在PC机上并在PC机上设置好有关的环境变量,将JAVA_HOME,path 等几个设置为适用于Java开发的环境变量,最后将其导入你的JDK文件路径
SDK安装:直接从相关网站下载好SDK压缩包,然后打开Eclipse软件,在其中找到对应路径将其导入就可以。
3、原理与技术要点分析
登录功能概要
点击button按钮
服务器验证登录账号
跳转进入好友列表界面
登录流程图:
进入
输入账号及密码
失判断账号密码
败是否正确
服务器验证
登录成功
登录功能流程图
聊天功能概要
用户点击联系人列表中的一个好友时,进入聊天界面在输入框输入信息,点击发送按钮,发送信息
好友回复消息是在该聊天页面显示
当有好友发消息过来时,系统会通过Toast提示
用户聊天模块总体流程图:
用户聊天模块总体流程图
技术要点分析
概念结构设计
逻辑结构设计
1)用户信息(用户账号,用户密码,昵称,头像)
public class QQMessage extends Protocal{
public String type = ; egisterContentObserver(地址:信号,子路径是否有效,指定一个观察者);
().registerContentObserver(uri,true,observer); app= (ImApp) getApplication();
Intent intent = ();
Bundle bundle = ();
account=("account");
toNick=("nick");
("与 [" +toNick +"]聊天中");
querySetofChatWithOne(account+"",list);
adapter=new ChatMessageAdapter(this,list);
(adapter);
if()-1>0){
()-1);
}
}
oString().trim();
if("".equals(messageBody)){
(getBaseContext(),"发送消息不为空",.show(); return;
}
("");
final QQMessage msg=new QQMessage();
= ;
=messageBody;
=();
=account;
="人族";
endMessage(msg);
} catch (Exception e) {
();
}
}
});
}