TranObject需加什么islide插件需要破解吗

博客分类:
准备换工作了,下一份工作也已经搞定。从学校毕业,浑浑噩噩的做了一年测试,终于是要转向自己喜欢的开发了。浪费了一年时间终于再次回到轨道上,希望没有落后太多。
打发业余时间,想要一个聊天工具,于是便开始做了。这是初步的成果,采用客户端和服务器的模式。服务器端比较简单,主要保存有一个在线用户列表,每个客户端登录,则会向服务器登记,同时服务器会返回当前所有的在线用户,由客户端显示在界面当中。
主要界面如下:
文件传输:
当前实现的功能主要是文本聊天和文件传输功能,接着主要想实现类型QQ的图片发送及语音、视频聊天功能。图片发送功能其实已经完成,但在公司电脑上无法拷贝回家,因此此处上传的代码中没有图片传输功能。
没有在界面上花太多功夫,因此界面很粗糙,准备是相关的功能完成之后再对界面进行优化。
下图是Client在Eclipse下面的结构:
主要包括有三个包:
client: 存储客户端相关的类
common: 存储客户端和服务器端共用的类
common_ui: 存储我自己所做的公用类,其中主要是界面相关的类。主要是自己为了方便在不同的工程下复用相关代码而建的类。
引用的Jar包主要有三个,实际上在该聊天软件中仅使用了miglayout这个包来进行相关布局,另外两个包是在common_ui中有使用Jfreechart而引用的,在该工程中未使用。
附件中有Server及Client的源代码,如果Server启动失败请修改com/liuqi/chart/common/uitl/Constants中的服务器IP地址及端口。相关的Jar包请自行下载。
以下对几个主要使用的类进行说明:
一 服务器端:
1. UserCache: 在线用户缓存器,存储服务器上的在线用户列表,采用单例模式,同时保证线程安全。
2. Server:在Constants中所规定的IP上启动监听,接收服务器的消息并进行处理。当前主要处理两种消息,登录和离线。登录时通知所有在线用户该用户登录,离线时通知所有用户该用户离线。
二 客户端:
客户端也在相应的IP和端口上进行监听,收取来自其它用户和服务器的消息。
1. 消息分发:
ClientServer类:使用SwingWorker来不断的在后台监听相关消息进行处理:
package com.liuqi.chart.
import java.io.IOE
import java.net.InetA
import java.net.ServerS
import java.net.S
import java.util.L
import javax.swing.SwingW
import com.liuqi.chart.client.ui.FileTransfferD
import com.liuqi.chart.client.ui.MainF
import com.liuqi.chart.client.util.MessageC
import com.liuqi.chart.common.bean.M
import com.liuqi.chart.common.bean.U
import com.liuqi.chart.common.tran.TransfferI
import com.liuqi.chart.common.tran.bean.TranO
import com.liuqi.chart.common.tran.bean.TranObjectT
import com.liuqi.chart.common.util.C
* 用户机器上的消息接收服务器,应当使用单独的线程来进行处理
* @author 67
public class ClientServer extends SwingWorker&Object, TranObject& {
private ServerSocket serverS
private MainF
private TransfferImpl transffer = new TransfferImpl();
public ClientServer(MainFrame frame, String ip) throws IOException {
this.frame =
InetAddress address = InetAddress.getByName(ip);
serverSocket = new ServerSocket(Constants.CLIENT_SERVER_PORT, 0,
* 对传输的对象进行处理 一般用户传输过来的消息类型有: 文本消息 传输文件请求
* @param object
public void process(List&TranObject& list) {
for (TranObject object : list) {
switch (object.getType()) {
case MESSAGE: {
// 发送的是来自其它用户的消息,则将其添加到消息缓存中去等待处理
Object o = object.getObject();
if (o != null && o instanceof Message) {
Message message = (Message)
MessageCache.getInstance().add(message);
case LOGIN: {
// 表明接收到的是来自服务器的消息,有某个用户登录,需要在用户列表中表现出来
Object o = object.getObject();
if (o != null && o instanceof User) {
User user = (User)o;
frame.getCenterPanel().addUser(user);
case LOGOUT: {
//表明是接收到的来自服务器某个用户退出登录的消息
Object o = object.getObject();
if(o!=null&&o instanceof User){
User user = (User)o;
frame.getCenterPanel().deleteUser(user);
protected Object doInBackground() throws Exception {
while (!isCancelled()) {
Socket socket = serverSocket.accept();// 从Socket中取得所传输的对象
object = transffer.get(socket);
if (object != null) {
publish(object);
//如果是文件传输请求,首先弹出是否接收的对话框,如果是,则在相应端口启动文件接收线程,然后再回应准备OK的消息,否则返回否
if(object.getType().equals(TranObjectType.FILE)){
FileTransfferDialog dialog = new FileTransfferDialog(object,socket);
dialog.setVisible(true);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
2. 文本消息处理:
MessageCache:接收到的消息队列,来自不同用户的消息被保存在这个队列中等待处理。
MessageProcessor:系统启动后不断的从MessageCahce中取得消息来进行处理,如果队列中无消息则等待,队列中有消息进行则被唤醒进行处理。
package com.liuqi.chart.client.
import java.util.L
import javax.swing.SwingW
import com.liuqi.chart.client.ui.ChartD
import com.liuqi.chart.common.bean.M
import com.liuqi.chart.common.bean.TextM
import com.liuqi.common.log.LL
* 消息处理器
* @author 67
public class MessageProcessor extends SwingWorker&Object,Message&{
private boolean isStopped =
public MessageProcessor(){
LLogger.info("消息处理器启动完毕!");
* 不断从消息缓存中取得消息然后进行处理
public Object doInBackground(){
while(!isStopped()){
//没有被停止的时候不断的处理消息
Message message = MessageCache.getInstance().get();
if(message!=null){
publish(message);
* 处理消息
* @param message
public void process(List&Message& list){
for(Message message: list){
//将消息显示在对应的聊天窗口中
ChartDialog dialog = ChartDialogCache.getInstance().get(message.getFromUser());
if(dialog!=null){
dialog.appendMessage(dialog.getUser(),((TextMessage)message).getMessage());
dialog.setVisible(true);
public boolean isStopped() {
return isS
public void setStopped(boolean isStopped) {
this.isStopped = isS
3. 文件传输:
TranFileCache:文件传输队列,当有新的文件发送请求时,需要被发送的文件及进度面板被存入该队列。
SendFileWorker:不断的从文件传输队列中取得文件来进行传输,没有文件传输请求则等待;有新请求则被唤醒:
package com.liuqi.chart.client.
import java.io.F
import java.io.FileInputS
import java.io.IOE
import java.io.InputS
import java.io.ObjectInputS
import java.io.ObjectOutputS
import java.io.OutputS
import java.net.InetSocketA
import java.net.S
import java.net.SocketA
import java.util.C
import java.util.L
import javax.swing.SwingW
import com.liuqi.chart.client.ui.ChartD
import com.liuqi.chart.client.ui.tran.TranOneFileP
import com.liuqi.chart.client.util.C
import com.liuqi.chart.common.bean.U
import com.liuqi.chart.common.tran.bean.TranO
import com.liuqi.chart.common.tran.bean.TranObjectT
* 文件传输工具
* 先与目的取得连接,取得一个socket,对方有回应后再发送数据
* @author 67
public class SendFileWorker extends SwingWorker&Object,String&{
private ChartD
private TranFileCache cache = TranFileCache.getInstance();
private static final String START = "start";
private static final String REJECT = "reject";
private static final String END = "end";
public SendFileWorker(ChartDialog dialog){
this.dialog =
protected Object doInBackground() throws Exception {
while(!isCancelled()){
TranOneFilePanel panel = cache.get();
File file = panel.getFile();
InetSocketAddress address = new InetSocketAddress(dialog.getUser().getIp(),dialog.getUser().getPort());
Socket socket = new Socket();
socket.connect(address);
OutputStream output = socket.getOutputStream();
InputStream input = socket.getInputStream();
//第一步,先向对方发送文件传输请求
ObjectOutputStream oo = new ObjectOutputStream(output);
TranObject&File& to = new TranObject&File&(TranObjectType.FILE);
to.setFromUser(Cache.getInstance().getNowUser());
to.setToUser(dialog.getUser());
to.setObject(file);
oo.writeObject(to);
oo.flush();
ObjectInputStream oi = new ObjectInputStream(input);
TranObject&User& object = (TranObject&User&)oi.readObject();
if(object.getObject()==null){
publish(REJECT);
publish(START);
InetSocketAddress address2 = new InetSocketAddress(object.getObject().getIp(),object.getObject().getPort());
Socket ss = new Socket();
ss.connect(address2);
OutputStream so = ss.getOutputStream();
InputStream fi = new FileInputStream(file);
long fileLength = file.length();
long nowLength = 0;
long oneofhundred = fileLength/100;
byte[] b = new byte[1024];
int oldrake = 0;
int newrake = 0;
int race = 0;//速度
long starttime = Calendar.getInstance().getTimeInMillis()/1000;//开始时间,按秒计算
long time = 0;
while(fi.read(b)!=-1){
so.write(b);
nowLength += b.
newrake = (int)(nowLength / oneofhundred);
if(newrake!=oldrake){
time = Calendar.getInstance().getTimeInMillis()/1000 -
if(time==0){
race = (int)((nowLength/1024) / time);
publish(newrake + "");
publish(END);
so.flush();
so.close();
fi.close();
}catch(Exception ex){
//连接失败
protected void process(List&String& list){
for(String str: list){
dialog.appendMessage(str);
if(str.equals(START)){
//开始传输
dialog.appendMessage("对方已经接收!");
}else if(str.equals(REJECT)){
dialog.appendMessage("对方拒绝接收!");
dialog.getRightPanel().getTranFilePanel().del(cache.getNowPanel());
}else if(str.equals(END)){
dialog.appendMessage("传输完成!");
dialog.getRightPanel().getTranFilePanel().del(cache.getNowPanel());
int rake = Integer.valueOf(str);
cache.getNowPanel().getPb().setValue(rake);
FileTransfferDialog: 接收消息处理对话框,选择文件的保存方式。在ClientServer中有文件传输请求时被调用。
选择完处理方式后,给发送者发送接收或者拒绝回应,同时启动文件接收器来进行接收:
TransfferImpl transffer = new TransfferImpl();
TranObject&User& retO = new TranObject&User&(TranObjectType.FILE);
User user = new User();
user.setIp(Cache.getInstance().getNowUser().getIp());
user.setPort(Constants.CLIENT_FILE_TRANSPORT_PORT);
retO.setObject(user);
if(e.getSource().equals(cancelButton)){//拒绝接收,返回的对象中Object为null
retO.setObject(null);
String path = "D:\\" + object.getObject().getName();
if(e.getSource().equals(saveAsButton)){
//保存到指定目录
chooser.showSaveDialog(null);
File file = chooser.getSelectedFile();
if(file.isDirectory()){
path = file.getPath() + object.getObject().getName();
path = file.getPath();
transffer.tran(socket, retO);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
if(!e.getSource().equals(cancelButton)){
//在不是取消的时候执行
worker.setPath(path);
worker.execute();
ReceiveFileWorker: 文件接收器
package com.liuqi.chart.client.
import java.io.F
import java.io.FileOutputS
import java.io.InputS
import java.io.OutputS
import java.net.InetSocketA
import java.net.ServerS
import java.net.S
import java.util.L
import javax.swing.SwingW
import com.liuqi.chart.client.util.C
import com.liuqi.chart.common.bean.U
import com.liuqi.chart.common.tran.TransfferI
import com.liuqi.chart.common.tran.bean.TranO
import com.liuqi.chart.common.tran.bean.TranObjectT
import com.liuqi.chart.common.util.C
public class ReceiveFileWorker extends SwingWorker&Object,String&{
private TranObject&File&
private S//保存目录,默认保存到D盘
public ReceiveFileWorker(TranObject&File& object){
this.object =
path = "D:\\" + object.getObject().getName();
public void setPath(String path){
this.path =
protected Object doInBackground() throws Exception {
//启动文件接收线程,并返回给用户,其中FromUser的端口使用文件接收端口
File file = (File)object.getObject();
ServerSocket serverSocket = new ServerSocket();
serverSocket.bind(new InetSocketAddress(Cache.getInstance().getNowUser().getIp()
,Constants.CLIENT_FILE_TRANSPORT_PORT));
//启动接收
Socket retSocket = serverSocket.accept();
InputStream input = retSocket.getInputStream();
OutputStream output = new FileOutputStream(new File(path));//保存到默认目录
publish("文件传输开始,文件大小:" + file.length());
byte[] b = new byte[1024];
double nowSize = 0;
while(input.read(b)!=-1){
output.write(b);
nowSize ++;
publish("已传输:" + nowSize + "KB");
publish("文件传输结束");
output.flush();
output.close();
//关闭文件接收
retSocket.close();
serverSocket.close();
}catch(Exception ex){
ex.printStackTrace();
protected void process(List&String& list){
for(String str: list){
System.out.println(str);
(680.8 KB)
下载次数: 121
浏览: 144348 次
来自: 北京
博主,我想问一下,webdav能否集成到自己的服务器上,打个比 ...
java1997 写道博主,你好,正好用到这个,能不能贴个完整 ...
博主,你好,正好用到这个,能不能贴个完整的使用代码啊,谢谢
非常感谢啊!
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'当前位置: >>
基于android开发平台毕业论文
摘要基于 LBS 的商务电子名片系统的设计与实现摘要移动互联网的发展瞬息万变,当前全球移动用户规模蓬勃发展。2010 年全球 LBS(移 动定位服务)行业总收入即达到了 70 亿美元之多。中国的位置服务业务开始于 2001 年 5 月,北京移动基于移动梦网卡推出位置服务,随后各省陆续推出,位置服务业务在中国已 经发展了近 10 年,但一直是不温不火,用户的潜在需求并未完全释放。近来,在智能平 台上的移动定位应用层出不穷。 本文设计了一款基于 LBS 的商务电子名片系统,与传统的纸质商务名片不同,本系统 采用的是电子信息方式存储,管理方便且不容易丢失。本系统由服务器和客户端两部分组 成。客户端是一款基于 Android 平台上的应用程序,实现了即时通讯、读取用户好友的名 片列表、移动定位、通过定位增加新好友等功能。服务器是一款用 java 实现的服务程序, 实现了用户信息的存储,通信信息的转送和数据处理等功能。 本系统可以很方便地让用户存储和管理收到的名片,及时和朋友取得联系,结新交的 朋友,交换名片等,还可以通过系统提供的设计功能,设计合乎个人风格的名片。系统将 用户的名片存储在服务器的云端,用户不必担心名片的丢失,当然,用户也可以将重要的 名片从服务器的云端名片下载到手机本地上,方便快捷地查看。 关键词:电子名片;LBS(移动定位) ;智能手机;Android;通信社交I AbstractThe Design and Completion of Electronic Business Card System Based on LBSABSTRACTThe development of mobile Internet is constantly changing.Nowadays,the scale of global mobile users in the world is flourishing. The revenue of worldwide Global LBS (location-based services) industry in 2010 reached as much as $ 7 billion.China began the location-based services business in May,2001 when Beijing Mobile launched the location services based on the mobile dream NIC .And then it was followed by other provinces.China has developed the location-based services business for nearly 10 years, but the result is not good as the user's potential demand has not been entirely explored. Recently, the location services are applied to the Intelligent Platform frequently. Here I design an electronic business card system based on LBS . Unlike the traditional paper business cards, the system uses a storage way of electronic information , which is convenient to manage and avoid data losing. It consists of two parts:server and client. The client is an application based on android platform with many functions such as instant messaging, reading the list of the contacts of the user's friends, mobile positioning, increasing new friends by positioning and so on. The server is a java program with functions of information storage, communications, information transfer and data processing. The system makes it possible for users to store and manage business cards conveniently and contact with friends timely .Users can also make new friends and exchange business cards with each other through the system. What’s more, users can design business cards according to their own personal style through the designing function of the system. Users do not have to worry about the loss of business cards because the system stores the user's business cards in the server cloud ,where is safe .Of course, users can also download the important business cards from the server cloud to their mobile phones for quick and convenient checking. Key words: elec LBS (Location Based Service); smart mobile A Communication socialII 目录目录第 1 章 绪论 ............................................................................................................. 1 1.1 课题研究意义 .............................................................................................. 1 1.2 Location Based Service(LBS)的发展情况和趋势....................................... 1 1.2.1 LBS 的发展情况.................................................................................. 1 1.2.2 LBS 的发展趋势.................................................................................. 2 1.3 论文组织结构 .............................................................................................. 2 第 2 章 系统相关技术简介 ..................................................................................... 4 2.1 移动定位(LBS)基础概论 ............................................................................ 4 2.1.1 移动定位的定义 ................................................................................. 4 2.1.2 定位方式 ............................................................................................. 4 2.1.3 移动定位方法 ..................................................................................... 4 2.2 计算机网络基础概论 .................................................................................. 8 2.2.1 计算机网络定义及主要功能 ............................................................. 8 2.2.2 计算机网络的拓扑结构 ..................................................................... 8 2.2.3 TCP/IP 简介 ......................................................................................... 9 2.3 数据库设计概论 ........................................................................................ 11 2.3.1 数据库设计的定义及设计步骤 ....................................................... 11 2.3.2 数据库设计技巧 ............................................................................... 11 2.4 本章小结 .................................................................................................... 12 第 3 章 需求分析及系统总体设计 ....................................................................... 13 3.1 需求分析 .................................................................................................... 13 3.1.1 对功能的描述 ................................................................................... 13 3.1.2 对性能的规定 ................................................................................... 14 3.1.3 运行环境的要求和操作界面的要求 ............................................... 14 3.1.4 系统数据结构设计 ........................................................................... 15 3.1.5 系统出错处理设计 ........................................................................... 15 3.2 系统总体设计 ............................................................................................ 15 3.2.1 运行环境 ........................................................................................... 15 3.2.2 基本设计概述 ................................................................................... 15 3.2.3 接口设计 ........................................................................................... 16 3.2.4 运行设计 ........................................................................................... 17 3.3 本章小结 .................................................................................................... 17 第 4 章 系统详细设计与实现 ............................................................................... 18i 目录4.1 系统环境的构建 ........................................................................................ 18 4.2 数据库的设计与实现 ................................................................................ 19 4.2.1 客户端数据库的设计与实现 ........................................................... 19 4.2.2 服务器数据库的设计与实现 ........................................................... 20 4.3 通信设计与实现 ........................................................................................ 23 4.3.1 客户端的通信设计与实现 ............................................................... 23 4.3.2 服务器的通信设计与实现 ............................................................... 27 4.4 交互页面的设计与实现 ............................................................................ 28 4.5 百度移动定位 SDK 的移植 ...................................................................... 30 4.6 本章小结 .................................................................................................... 31 第 5 章 系统测试 ................................................................................................... 32 5.1 测试计划 .................................................................................................... 32 5.1.1 测试总体规划 ................................................................................... 32 5.1.2 测试所需资源 ................................................................................... 32 5.1.3 测试方案设计 ................................................................................... 32 5.2 构建测试平台 ............................................................................................ 33 5.3 测试分析 .................................................................................................... 34 5.3.1 测试实施过程 ................................................................................... 34 5.3.2 测试结果及分析 ............................................................................... 35 5.3.3 测试结论 ........................................................................................... 35 5.4 本章小结 .................................................................................................... 37 第 6 章 总结与展望 ............................................................................................... 38 6.1 总结 ............................................................................................................ 38 6.2 展望 ............................................................................................................ 38 致谢 ......................................................................................................................... 39 参考文献 ................................................................................................................. 40 附录 A:操作界面截图 ......................................................................................... 41 附录 B:主要代码清单 ......................................................................................... 43ii 江西理工大学应用科学学院毕业设计第 1 章 绪论1.1 课题研究意义传统的商务名片都是纸质的,存放不方便且容易丢失。本课题研究的是一款基于 LBS 商务电子名片系统,本系统由服务器和客户端两部分组成。客户端是一款 android 平台上 的应用程序,客户端实现了即时通讯、读取用户好友的名片列表、移动定位、通过定位增 加新好友等功能。这样即方便了用户对名片的存放和管理,又可以让用户通过即时通讯方 便地和朋友取得及时的联系,还可以让用户通过定位和新交的朋友方便地交换名片。这样 一来,用户出门的时候就不用带上一大叠厚厚的名片,也不用为如何处理社交新收到的纸 名片。用户还可以通过系统提供的设计功能,设计一张合乎自己风格的漂亮的名片。 由于系统将用户收到的名片存放在服务器的云端,用户不用担心收到的名片会因为自 己手机的丢失而失去客户的联系信息,也不会像用纸名片一样,担心忘记带上名片而在结 给新朋友时没有名片的尴尬,只要带上装有客户端的智能手机,即可和朋友交换靓丽的名 片。如果连手机也忘带了也没关系,报上你的手机号即可交换名片。 当然,有些朋友的名片对用户来说是重要的,客户端还设计了本地名片,你可以将服 务器的云端名片下载到手机上,方便快捷地查看。 这样的电子名片方便实用,在移动互联高速发展的今天,是用户信息化的必然选择。1.2 Location Based Service(LBS)的发展情况和趋势1.2.1 LBS 的发展情况 近几年来,几种新型的互联网模式兴起――SNS、微博客、团购、LBS,移动互联网 时代已经到来,LBS 也被认为是继“团购”之后,将成为移动互联网时代的下一个爆发点! 当前,全球移动用户规模蓬勃发展,无论是移动运营商还是设备厂家都在不断努力寻 找能够提高收益、增加用户通信流量的“杀手锏”增值业务。移动位置服务被业内普遍看 好,并且被认为是最具增长潜力的增值业务之一。 移动位置服务(LBS--Location Based Service) ,是利用一定的技术手段通过移动网络 获取移动终端用户的位置信息(经纬度坐标) ,在电子地图平台的支持下,为用户提供相 应服务的一种增值业务。它是移动互联网和定位服务的融合业务。 2010 年全球 LBS 行业总收入即达到了 70 亿美元之多,同比增长 100%。而截止 2010 年底,中国国内 LBS 用户总数达到 330 万,提供相关服务的企业多达近 40 家。预测未来 的几年将成为全球 LBS 行业的喷薄期,中国 LBS 行业也将迎来爆发式的增长。预测 LBS 在 2014 年产生的营收将增长至 140 亿美元。 现阶段,美国、欧洲运营 GSM 网络的移动公司所采用的定位技术基本上以 CELL-ID 为主,这种技术所能实现的定位精度可以满足大部分应用的要求,进入和使用门槛都相对 较低。1 易日霖:基于 LBS 的商务电子名片系统的设计与实现对比欧美,日韩在 LBS 的商业应用方面较为领先。日本的 NTT DoCoMo 在 2001 年下 半年开始在全日本提供位置服务,KDDI 也在 2004 年 10 月开始提供 GPS 地图服务。韩国 的 KTF 在 2002 年 1 月开始在全国境内提供位置服务,采用 CDMA 技术和 gpsOne 定位系 统。随后 SKT 也于 7 月推出了位置服务,通过捆绑 GPS 功能的终端,提供地图、引路, 地区信息服务。 中国的位置服务业务开始于 2001 年 5 月,北京移动基于移动梦网卡推出位置服务, 随后各省陆续推出,中国联通于 2003 年 7 月推出定位之星业务。位置服务业务在中国已 经发展了近 10 年,但一直是不温不火,现有位置服务大都属于“模糊定位”的初级位置 服务,且产品有限,加上主要角色推广力度不高,用户的潜在需求并未完全释放。 随着国内 3G 网络部署提速与电信重组的完成,GPS 手机的大力推广、定位技术限制 的突破、用户对位置服务的认知度提高,作为继“团购”之后,移动互联网时代下一个爆 发点的 LBS,无疑将成为众多企业的必争高地。LBS 将成为整个行业应用的标配,在移动 互联网上,不管是搜索、社区、门户还是广告都会用到 LBS,并成为标准配置。 1.2.2 LBS 的发展趋势 目前 LBS 处在 2.0 这一个黄金时期, 这个时期是 LBS 在低谷之后刚刚起来的一个上升 期,这个行业开始形成比较规模化的发展。 LBS 伴着移动互联网发展而发展,今天的移动互联网正如 12 年之前中国的互联网时 代,资本市场已经达到 1000 家,相当于十年前互联网爆发式增长,智能化必是移动互联 的发展趋势。OTO 的商业模式在中国已经被大家所接受,手机网民的增长速度在 96%,位 置服务和移动互联网的结合将形成新的商业模式。比如团购,移动社交等。 在周边有许多生活和服务的咨询, 比如要请一个钢琴老师, 要找给小孩好的家教等等, 但是这些信息用户不知道,如果用户有信息服务,或者位置服务,就可以马上知道小区里 面有哪个家教老师特别好,请他们来做家教,这种方法的实现就是“移动互联网+位置服 务” 。 “移动互联网+位置服务”是符合人们需求的社区服务,是周围的生活服务,它确实 解决了今天每个人身边的问题。是移动互联网发展的必然产物,也是人们确实需要的生活 服务,是移动互联网发展的必然趋势。 LBS 毋庸置疑, 一定是移动互联网和手机的标配, 跟社区服务和人们的生活紧密结合, 也是目前全新的应用。LBS 未来的成功,需要更多的定位能力的基准化,把人与人、人与 商家最后完美的结合,这里也一定会产生很多优秀的应用服务。1.3 论文组织结构本文在分析国内外市场上 LBS 应用的现状并结合课题的实际需要以及现有资源的基 础上,完成了商务电子名片系统的设计与实现,主要包括系统的整体方案设计、系统的服2 江西理工大学应用科学学院毕业设计务器和客户端的设计与实现、百度定位 SDK 的移植。 全文共分 6 章,各章的主要内容如下 第一章绪论。主要内容包括课题的来源和意义、LBS 的发展现状和趋势。介绍了 LBS 良好的市场前景, 并介绍了短短几年时间内 LBS 迅猛的发展历程及其技术与产品形态上的 发展趋势。 第二章是课题基础理论的介绍。主要内容包括数据库基础概论、网络通讯基础概论、 移动定位(LBS)基础概论的介绍。 第三章是需求分析及系统总体设计。简单做了需求分析、系统总体设计的介绍。 第四章是系统设计与实现。介绍了 android 编译编辑环境的构建、服务器运行环境的 搭建、数据库的设计与实现、通信设计与实现、交互页面的设计与实现、百度 SDK 的移 植等方面。 第五章是介绍系统的测试,展示本系统的可靠性和可行性。 第六章总结与展望。展望了商务电子名片的发展趋势,分析了一些亟待进一步解决的 问题。3 易日霖:基于 LBS 的商务电子名片系统的设计与实现第 2 章 系统相关技术简介本系统涉及到的关键技术有:LBS(移动定位服务)技术、计算机网络技术、数据库 技术等, 分为客户端的服务器两部分, LBS 技术主要是通过用户网络或 GPS 来确定用户的 当前位置,计算机网络技术主要是用以提供客户端的服务器的通信连接,数据库技术主用 是用在服务器上存储用户的注册信息、定位信息和交友信息,用在客户端存储用户的好友 列表和用户的聊天记录。在客户端,用户通过注册功能利用计算机网络技术向服务器发送 注册信息,服务器接收用户发送过来的注册信息并利用数据库技术存储在服务的数据库 上。当用户通过登陆功能利用 Socket 向服务器发送登陆信息时,服务器验证验证正确后给 予用户登陆,并将用户的好友列表通过 Socket 发送回给用户,客户端接收到之后利用数据 库技术将用户的交友信息暂存在客户端,以方便用户的查看操作。客户端还可用利用网络 技术实现用户间的即时通信。当用户进入交友页面时,客户端会利用 LBS 技术,即时定位 用户的位置,并将用户的新位置通过网络发送给服务器,服务器先将用户的新位置俱位置 存储在服务器的数据库上,并在数据库上查找与用户位置相近的用户,查找后服务器会将 结果通过网络返回给客户端,客户端此时就可以通过服务器向对方发起添加好友请求。2.1 移动定位(LBS)基础概论2.1.1 移动定位的定义 移动定位是指通过特定的定位技术来获取移动手机或终端用户的位置信息,在电子地 图上标出被定位对象的位置的技术或服务。 2.1.2 定位方式 定位技术有主要有两种,一种是基于 GPS 的定位,一种是基于移动运营网的基站的定 位。 基于 GPS 的定位方式是利用手机上的 GPS 定位模块将自己的位置信号发送到定位后台 来实现移动手机定位的,这种方式定位精度较高。 基站定位则是利用基站对手机的距离的测算距离来确定手机位置的。不需要手机具有 GPS 定位能力,但是精度很大程度依赖于基站的分布及覆盖范围的大小,有时误差会超过 一公里。 此外还有利用 Wifi 在小范围内定位的方式。 2.1.3 移动定位方法 基于移动电信技术的定位的典型方法有: TA(TA+CELLID)、 AOA、 TOA、 TDOA、 GPS、 DGPS、InverseDGPS、GPS 辅助等。下面是对这些方法的简单介绍: 1)TA(TA+CELLID) TA 是指小区识别号+时间提前量。时间提前量 TA 由基站测量后通知 MS 提前这段 TA4 江西理工大学应用科学学院毕业设计时间发送数据,目的是为了扣除基站与 MS 之间的传输时延。因此,TA 方法就是用现有的 参数 TA 估计 MS 和 BTS 之间的距离。如果 MS 在空闲模式,MS 可能被寻呼或者主动发 起呼叫(如紧急呼叫),从而使 SMLC 获得 TA 和 CellID。如果 MS 在占用模式,SMLC 向 BSC 发送消息获取 TA 和 CellID。SMLC 将小区天线中心半径为 TA 的圆环(对全向天线) 或者圆环的部分(对定向天线)范围内区域确定为 MS 所在区域。 通常在小区密集的城市区域,小区的半径很小,可以达到几百米,此时定位的精度就 很高。但这种精度只能表示移动用户和小区中心之间的距离,而不是精确的位置。 2)COO(CellOfOrigin) 起源蜂窝小区定位技术 (COO)是最简单的一种定位方式,它根据移动台所处的小区识 别号 ID 来确定用户的位置。移动台在当前小区注册后,在系统的数据库中就会有相对应 的小区 ID 号。 只要系统能够把该小区基站设置的中心位置(在当地地图中的位置)和小区的 覆盖半径广播给小区范围内的所有移动台,这些移动台就能知道自己处在什么地方,查询 数据库即可获取位置信息。起源蜂窝小区技术是基于网络的定位方案,它的优点是无需对 网络和手机进行修改,响应时间短。但是,由此导致的缺点是精度较差。 3)AOA 测量信号的到达角度(AngleOfArrive, 简称 AOA)也是一种在蜂窝网中常用的定位技术。 这种方法需要在基站采用专门的天线阵列来测量特定信号的来源方向。对于一个基站来 讲, AOA 测量可以得出特定移动站所在方向, 当两个基站同时测量同一移动站所发出的信 号时,两个基站各自测量 AOA 所得的方向直线的焦点就是移动站所在的位置。尽管这种 定位方法的原理非常简单,但在实际的应用中存在一些难以克服的缺点。首先,AOA 定位 要求被测量的移动站与参与测量的所有基站之间,射频信号是视线传输(LOS)的。非视线 传输(NLOS)将会给 AOA 定位带来不可预测的误差。即使是在以 LOS 传输为主的情况下, 射频信号的多径效应依然会干扰 AOA 的测量。 其次, 由于天线设备角分辨率的限制, AOA 的测量精度是随着基站与移动站之问的距离的增加而不断减小的。 由于测量 AOA 的定位方法具有上述的特点, 所以对于处于城市地区的微小区来讲, 引 起射频信号反射的障碍物多且其到移动站的距离与小区半径可以相比,这样就会引起比较 大的角测量误差。在这种情况下,基于 AOA 的定位方法没有实际的意义。对于宏小区, 因为其基站一般处于比较高的位置,与小区的半径相比,引起射频信号反射的障碍物多位 于移动站附近,NLOS 传输引起的角测量误差比较小。所以测量信号到达角度的定位方法 多用于宏小区,或者与其他定位技术混合使用来提高定位的精度。 4)TOA TOA 定位方式可在现有的任何手机上实现,手机无需作任何改动。要定位的手机发出 一已知信号,三个或多于三个 LMU 同时接收该信号,已知信号是手机执行异步切换时发 出的接入突发信号;各 LMU 得到信号到达时的绝对 GPS 时间后, 可得到相对时间差(RTD); 根据前两步的信息,SMLC 进行两两比较,计算突发信号到达时间差(TDOA),得出精确位5 易日霖:基于 LBS 的商务电子名片系统的设计与实现置,并回到应用中。要通过三角计算得出手机精确位置,必须知道另外两个参数: LMU 的地理位置和各 LMU 之间的时间偏移量。例如各 LMU 必须提供的绝对 GPS 时间,或在 已知位置的地点放置参考 LMU 可得到实际时间差(RTD)参数。 LMU 用接入突发信号确定 TOA。当定位请求发出时,LMU 被选定,且配置正确的频 率,以便接收接入突发信号。此时,手机在业务信道 (可能会处于跳频方式)上,以特定功 率发送达 70 个接入脉冲(时长 320ms)。 各 LMU 通过多种方式实现和改善 TOA 的测量结果。 利用收到的突发信号可提高测量成功概率和测量精度。采用分集技术(如天线分集和跳频), 可降低多径效应的影响, 提高测量精度。 当某个应用需要知晓手机位置时, 该应用向 SMLC 发出请求,同时告知手机号码和定位精度要求。被测量的 TOA 参数及其误差值一同被采 集并发送到 SMLC,根据该数据,SMLC 可计算出应用所需要的手机位置,再将位置信息 和误差范围发送回应用。 TOA 定位方式需要附加硬件(LMU),以达到精确计算突发信号到达时间的目的。实现 方式有多种:LMU 既可集成在 BTS 内,也可作为单独设备。LMU 作为单独设备时,既可 有单独的天线,也可与 BTS 共享天线,通过空中接口实现网络间通信。 5)TDOA 一种基于反向链路的定位方法,通过检测移动台信号到达两个基站的时间差来确定移 动台的位置,移动台必定位于以两个基站为焦点的双曲线方程上,确定移动台的二维位置 坐标需要建立两个以上双曲线方程,也就是说需要至少三个以上的基站接收到移动台信 号,而两个双曲线的交点即为移动台的二维位置坐标。 TDOA 方法不要求知道信号传播的具体时间,还可以消除或减少在所有接收机上由于 信道产生的共同误差,在通常情况下,定位精度高于 TOA 方法。但由于功率控制造成离 服务基站近的移动台发射功率小,使得相邻基站接受到的功率非常小,造成比较大的测量 误差,即相邻基站接受到的功率非常小,造成比较大的测量误差,即相邻基站的 SNR 太小 带来的测量误差。针对这种情况已有了一些解决办法,如在 E-91l 呼叫时将移动台发射功 率瞬间调到最大,可以提高定位精度,但会对 CDMA 网络的容量有一定程度的影响。 6)E-OTD E-OTD 定位方式是从测量时间差(OTD)发展而来的, OTD 指测量所得的时间量, E-OTD 指测量的方式。 手机无需附加任何硬件便可得到测量结果。 对于同步网, 手机测量几个 BTS 信号的相对到达时间;对于非同步网,信号同时还需要被一个位置已知的 LMU 接收。确定 了 BTS 到手机的信号传输时间,则可确定 BTS 与手机之间的几何距离,然后再根据此距 离进行计算,最终确定手机的位置。 手机收到各基站发来信号,得到 TOA 参数;LMU 得到 RTD 参数;手机将 TOA 和 RTD 参数传送到 GSM 网。OTD 测量需要用同步、标准且模拟的脉冲。当 BTS 发送的帧未被同 步时,网络需要测量 BTS 之间的 RTD。为了进行精确的三角测量,OTD 测量和 RTD 测量 (非同步 BTS 时)均需要 3 个 BTS。获得 OTD 参数后,手机位置既可在网络中计算,也可6 江西理工大学应用科学学院毕业设计在终端计算(要求手机具备各种必要信息)。前者称为手机辅助方式,后者称为手机自主方 式。通过手机或网络中的位置计算功能模块,实现位置计算。 7)GPS 比较实用的 GPS 定位技术是网络辅助的 GPS 定位,即定位时,网络通过跟踪 GPS 卫 星信号,解调出 GPS 导航信号,并将这些信息传送给移动台,移动台利用这些信息可以快 速的搜索到有效的 GPS 卫星,接收到卫星信号后,计算移动台位置的工作可以由网络实体 或移动台完成。 基于 GPS 系统的定位技术,其优点是定位精度较高,定位半径可达到几米、十几米。 因此利用该重定位技术, 可提供对定位精度要求较高的业务, 如电子地图显示用户位置等。 其缺点是需要移动台内置 GPS 天线和 GPS 芯片等模块,并且需要支持 IS-801 协议,网络 侧需要增加 PDE 和 MPC;定位精度受终端所处环境的影响较大,如用户在室内或在高大建 筑物之间时,由于可见的 GPS 卫星数量较少,定位精度将降低,甚至无法完成定位。 8)A-GPS(AssistGPS) A-GPS(AssistedGPS)。 A-GPS 与 GPS 方案一样, 也需要在手机内增加 GPS 接收机模块, 并改造手机天线,但手机本身并不对位置信息进行计算,而是将 GPS 的位置信息数据传给 移动通信网络,由网络的定位服务器进行位置计算,同时移动网络按照 GPS 的参考网络所 产生的辅助数据,如差分校正数据、卫星运行状态等传递给手机,并从数据库中查出手机 的近似位置和小区所在的位置信息传给手机,这时手机可以很快捕捉到 GPS 信号,这样的 首次捕获时间将大大减小,一般仅需几秒的时间。不需像 GPS 的首次捕获时间可能要 2?3 分钟时间。而精度也仅为几米,高于 GPS 的精度。QUALCOMM 公司的 gpsOne 即采用 A-GPS 方案。 该方式有手机辅助方式和手机自主方式两种:(1)手机辅助 GPS 定位方式。这种解决 方案是将传统 GPS 接收器的大部分功能转移到网络处理器上实现。该方式需要天线、RF 单元和数据处理器等设备。GSM 网向手机发送一串极短的辅助信息,包括时间、可视卫星 清单、卫星信号多普勒参数和码相位搜索窗口。这些参数有助于内置 GPS 模块减少 GPS 信号获得时间。 辅助数据来自经手机 GPS 模块处理后产生的伪距离数据, 且可持续数分钟。 收到这些伪距离数据后,相应的网络处理器或定位服务器能大致估算出手机的位置。GSM 网增加必要的修正后,可提高定位精度。(2)手机自主 GPS 定位方式。这种手机包含一个 全功能的 GPS 接收器,具有(1)方式中手机的所有功能,再加上卫星位置和手机位置计算 功能。运算开始时,需要的数据比手机辅助方式要多,这些数据能够持续 4 小时以上或根 据需要进行更新,通常包括时间、参考位置、卫星星历和时间校验参数等。如果某些应用 需要更高的精度, 则必须持续(间隔约 30s)向手机发差分 GPS(DGPS)信号。 DGPS 信号在非 常宽的地域范围有效,以一个参考接收器为中心可服务于较宽的地域范围。最终位置信息 由手机本身计算得到,若需要,此定位信息可发送到其它任何应用中。7 易日霖:基于 LBS 的商务电子名片系统的设计与实现2.2 计算机网络基础概论2.2.1 计算机网络定义及主要功能 计算机网络,是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过 通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实 现资源共享和信息传递的计算机系统。 计算机网络的功能要目的是实现计算机之间的资源共享、网络通信和对计算机的集中 管理。除此之外还有负荷均衡、分布处理和提高系统安全与可靠性等功能。 资源共享主要有硬件资源、软件资源、数据资源、信道资源等。硬件资源包括各种类 型的计算机、大容量存储设备、计算机外部设备,如彩色打印机、静电绘图仪等。软件资 源包括各种应用软件、工具软件、系统开发所用的支撑软件、语言处理程序、数据库管理 系统等。数据资源包括数据库文件、数据库、办公文档资料、企业生产报表等。信道资源 可以理解为电信号的传输介质,通信信道的共享是计算机网络中最重要的共享资源之一。 网络通信功能是用来传输各种类型的信息,包括数据信息和图形、图像、声音、视频流 等各种多媒体信息。分布处理功能是把要处理的任务分散到各个计算机上运行,而不是集 中在一台大型计算机上,不仅可以降低软件设计的复杂性,而且还可以大大提高工作效率 和降低成本。当计算机在没有联网的条件下,每台计算机都是一个“信息孤岛” 。在管理 这些计算机时,必须分别管理。而计算机联网后,可以在某个中心位置实现对整个网络的 管理,这就是集中管理。当网络中某台计算机的任务负荷太重时,通过网络和应用程序的 控制和管理,将作业分散到网络中的其它计算机中,由多台计算机共同完成,均衡说计算 机的负荷。 2.2.2 计算机网络的拓扑结构 当我们组建计算机我网络时,要考虑网络的布线方式。局域网常用的拓朴结构有:总 线型结构、环型结构、星型结构、树型结构。拓扑结构影响着整个网络的设计、功能、可 靠性和通信费用等许多方面,是决定局域网性能优劣的重要因素之一。 总线型拓扑结构是网络上的所有计算机都通过一条电缆相互连接起来,在总线上,任 何一台计算机在发送信息时,其他计算机必须等待。而且计算机发送的信息会沿着总线向 两端扩散,从而使网络中所有计算机都会收到这个信息,但是否接收,还取决于信息的目 标地址是否与网络主机地址相一致,若一致,则接受;若不一致,则不接收。 星型拓扑结构是每个节点都由一个单独的通信线路连接到中心节点上。中心节点控制 全网的通信,任何两台计算机之间的通信都要通过中心节点来转接。树型结构是星型结构 的扩展,它由根结点和分支结点所构成。 环型拓扑结构是以一个共享的环型信道连接所有设备,称为令牌环。在环型拓扑中, 信号会沿着环型信道按一个方向传播,并通过每台计算机。而且,每台计算机会对信号进 行放大后,传给下一台计算机。同时,在网络中有一种特殊的信号称为令牌。令牌按顺时8 江西理工大学应用科学学院毕业设计针方向传输。当某台计算机要发送信息时,必须先捕获令牌,再发送信息。发送信息后在 释放令牌。 网状结构是指将各网络结点与通信线路连接成不规则的形状,每个结点至少与其他两 个结点相连,或者说每个结点至少有两条链路与其他结点相连。 2.2.3 TCP/IP 简介 在网络中,为了实现不同计算机之间的通信,每台计算机都必须有一个唯一的地址。 IP 地址是一个 32 位二进制数,用于标识网络中的一台计算机。IP 地址通常以两种方式表 示:二进制数和十进制数。 二进制数表示:在计算机内部,IP 地址用 32 位二进制数表示,每 8 位为一段,共 4 段。如 00.。为了方便使用,通常将每段转换为十进制 数。如 00. 转换后的格式为:130.107.16.200。这种格式 是我们在计算机中所配置的 IP 地址的格式。 IP 地址由两部分组成:网络 ID 和主机 ID。网络 ID 是用来标识计算机所在的网络, 也可以说是网络的编号。主机 ID 是用来标识网络内的不同计算机,即计算机的编号。IP 地址规定:网络号不能以 127 开头,第一字节不能全为 0 ,也不能全为 l。主机号不能全 为 0,也不能全为 l。由于 IP 地址是有限资源,为了更好的管理和使用 IP 地址,INTERNIC 根据网络规模的大小将 IP 地址分为 5 类(ABCDE) : A 类地址:第一组数(前 8 位)表示网络号,且最高位为 0,这样只有 7 位可以表示 网络号,能够表示的网络号有 27-2=126(去掉全“0”和全“1”的两个地址)个,范围是: 1.0.0.0~126.0.0.0。后三组数(24 位)表示主机号,能够表示的主机号的个数是 224-2= 个,即 A 类的网络中可容纳
台主机。A 类地址只分配给超大型 网络。 B 类地址:前两组数(前 16 位)表示网络号,后两组数(16 位)表示主机号。且最 高位为 10,能够表示的网络号为 214=16384 个,范围是:128.0.0.0~191.255.0.0。B 类网络 可以容纳的主机数为 216-2=65534 台主机。B 类 IP 地址通常用于中等规模的网络。 C 类地址:前三组表示网络号,最后一组数表示主机号,且最高位为 110,最大网络 数为 221=2097152,范围是:192.0.0.0~223.255.255.0,可以容纳的主机数为 28-2=254 台主 机。C 类 IP 地址通常用于小型的网络。 D 类地址:最高位为 1110,是多播地址。 E 类地址:最高位为 11110,保留在今后使用。 在 IP 地址中有几个特殊 IP 地址:主机号全 0 表示网络号,不能分配给主机。如: 192.168.4.0 为网络地址;主机号全 1 表示向指定子网发广播。如:192.168.1.255 表示向网 络号 192.168.1.0 发广播;255.255.255.255 表示本子网内广播地址;127.X.Y.Z 表示测试地 址,不能配置给计算机。9 易日霖:基于 LBS 的商务电子名片系统的设计与实现如果需要将计算机直接连入 Internet,则必须向有关部门申请 IP 地址,而不能随便配 置 IP 地址。这种申请的 IP 地址称为“公有 IP” 。在互联网中的所有计算机都要配置公有 IP。如果要组建一个封闭的局域网,则可以任意配置 A、B、C 三类 IP 地址。只要保证 IP 地址不重复就行了。 这时的 IP 称为 “私有 IP” 。 但是, 考虑到这样的网络仍然有连接 Internet 的需要,因此,INTERNIC 特别指定了某些范围作为专用的私有 IP,用于局域网的 IP 地址 的分配, 以免与合法的 IP 地址冲突。 建议我们自己组建局域网时, 使用这些专用的私有 IP, 也称保留地址。INTERNIC 保留的 IP 范围为:A 类地址:10.0.0.1~10.255.255.254,B 类地 址:172.16.0.1~172.31.255.254,C 类地址:192.168.0.0~192.168.255.254。 我们在配置 ICP/IP 参数时,除了要配置 IP 地址之外,还要配置子网掩码。子网掩码 也是 32 位的二进制数,具体的配置方式是:将 IP 地址网络位对应的子网掩码设为“1” , 主机位对应的子网掩码设为“0” ,如:对于 IP 地址是 131.107.16.200 的主机,由于是 B 类 地址,前两组数为网络号,后两组数为主机号。则子网掩码配置为: 00.,转换为十进制数为:255.255.0.0。由此,各类地址 的默认子网掩码为: A 类:0. 即 255.0.0.0 B 类:00. 即 255.255.0.0 C 类:11. 即 255.255.255.0 之所以要配置子网掩码,是因为在 Internet 中,每台主机的 IP 地址都是由网络地址和 主机地址两部分组成, 为了使计算机能自动的从 IP 地址中分离出相应的网络地址, 需专门 定义一个网络掩码, 也称子网屏蔽码, 这样就可以快速地确定 IP 地址的哪部分代表网络号, 哪部分代表主机号,判断两个 IP 地址是否属于同一个网络。 在 Internet 中网关是一种连接内部网与 Internet 上其他网的中间设备, 网关地址可以理 解为内部网与 Internet 信息传输的通道地址。 域名地址(DNS)由解析器和域名服务器组成的。域名服务器是指保存有该网络中所 有主机的域名和对应 IP 地址,并具有将域名转换为 IP 地址功能的服务器。其中域名必须 对应一个 IP 地址,而 IP 地址不一定有域名。 现在使用的 IP 地址规范为 IPv4。IPv4(IP Version4)标准是 20 世纪 70 年代末期制定完 成的。20 世纪 90 年代初期,WWW 的应用导致互联网爆炸性发展,这导致 IP 地址资源日 趋枯竭的问题,现在的 IP 地址很快就要被用完了。为了解决 IP 地址资源日趋枯竭的问题。 互联网工程任务组于 1992 年成立了 IPNGB 工作组着手研究下一代 IP 网络协议 IPv6。 IPv6 使用长达 128bit 的地址空间,使互联网中的 IP 地址达到 2128 个这样,IPv6 地址空间是不 可能用完的。除此之外,IPv6 具备更强的安全性、更容易配置。10 江西理工大学应用科学学院毕业设计2.3 数据库设计概论2.3.1 数据库设计的定义及设计步骤 数据库设计是指根据用户的需求,在某一具体的数据库管理系统上,设计数据库的结 构和建立数据库的过程。其设计步骤如下: 1)需求分析 调查和分析用户的业务活动和数据的使用情况,弄清所用数据的种类、范围、数量以 及它们在业务活动中交流的情况,确定用户对数据库系统的使用要求和各种约束条件等, 形成用户需求规约。 2)概念设计 对用户要求描述的现实世界,通过对其中诸处的分类、聚集和概括,建立抽象的概念 数据模型。这个概念模型应反映现实世界各部门的信息结构、信息流动情况、信息间的互 相制约关系以及各部门对信息储存、查询和加工的要求等。所建立的模型应避开数据库在 计算机上的具体实现细节,用一种抽象的形式表示出来。 3)逻辑设计 主要工作是将现实世界的概念数据模型设计成数据库的一种逻辑模式,即适应于某种 特定数据库管理系统所支持的逻辑数据模式。与此同时,可能还需为各种数据处理应用领 域产生相应的逻辑子模式。这一步设计的结果就是所谓“逻辑数据库” 。 4)物理设计 根据特定数据库管理系统所提供的多种存储结构和存取方法等依赖于具体计算机结 构的各项物理设计措施,对具体的应用任务选定最合适的物理存储结构、存取方法和存取 路径等。 5)验证设计 在上述设计的基础上,收集数据并具体建立一个数据库,运行一些典型的应用任务来 验证数据库设计的正确性和合理性。 6)运行与维护设计 在数据库系统正式投入运行的过程中,必须不断地对其进行调整与修改。数据库设计 步骤。 2.3.2 数据库设计技巧 在需求分析阶段一是要理解客户需求,询问用户如何看待未来需求变化。让客户解释 其需求,而且随着开发的继续,还要经常询问客户保证其需求仍然在开发的目的之中。二 是要了解企业业务,这样可以在以后的开发阶段节约大量的时间。 要需求分析时重视输入输出。在定义数据库表和字段需求(输入)时,首先应检查现 有的或者已经设计出的报表、查询和视图(输出)以决定为了支持这些输出哪些是必要的 表和字段。创建数据字典和 ER 图表时,ER 图表和数据字典可以让任何了解数据库的人11 易日霖:基于 LBS 的商务电子名片系统的设计与实现都明确如何从数据库中获得数据。ER 图对表明表之间关系很有用,而数据字典则说明了 每个字段的用途以及任何可能存在的别名。对 SQL 表达式的文档化来说这是完全必要的。 而后要定义标准的对象命名规范,方便以后的开发工作。 数据库逻辑设计应标准化和规范化,数据的标准化有助于消除数据库中的数据冗余。 在数据驱动上应采用数据驱动而非硬编码的方式,许多策略变更和维护都会方便得多,大 大增强系统的灵活性和扩展性。还要考虑各种变化,应考虑到哪些数据字段将来可能会发 生变更。重要的是使用角色实体定义属于某类别的列,在需要对属于特定类别或者具有特 定角色的事物做定义时,可以用角色实体来创建特定的时间关联关系,从而可以实现自我 文档化。在选择数字类型和文本类型要尽量充足,增加删除标记字段。 3)选择键原则有 4 个: (1)关联字段创建外键。 (2)所有的键都必须唯一。 (3)避 免使用复合键。 (4)外键总是关联唯一的键字段。应使用系统生成的主键,但可选键有时 可做主键。把可选键进一步用做主键,这样可以拥有建立强大索引的能力。 4)索引使用原则有: (1)逻辑主键使用唯一的成组索引,对系统键(作为存储过程) 采用唯一的非成组索引,对任何外键列采用非成组索引。考虑数据库的空间有多大,表如 何进行访问,还有这些访问是否主要用作读写。 (2)大多数数据库都索引自动创建的主键 字段,但是可别忘了索引外键,它们也是经常使用的键,比如运行查询显示主表和所有关 联表的某条记录就用得上。 (3)不要索引 memo/note 字段,不要索引大型字段(有很多字 符) ,这样作会让索引占用太多的存储空间。 (4)不要索引常用的小型表。不要为小型数 据表设置任何键,假如它们经常有插入和删除操作就更别这样作了。对这些插入和删除操 作的索引维护可能比扫描表空间消耗更多的时间。 5)数据完整性实现机制有实体完整性、参照完整性、用户定义完整性。用约束而非 商务规则强制数据完整性。采用数据库系统实现数据的完整性。这不但包括通过标准化实 现的完整性而且还包括数据的功能性。在写数据的时候还可以增加触发器来保证数据的正 确性。不要依赖于商务层保证数据完整性;它不能保证表之间(外键)的完整性所以不能 强加于其他完整性规则之上。在有害数据进入数据库之前将其剔除。激活数据库系统的指 示完整性特性。这样可以保持数据的清洁而能迫使开发人员投入更多的时间处理错误条 件。控制数据完整性的最佳方式就是限制用户的选择。只要有可能都应该提供给用户一个 清晰的价值列表供其选择。这样将减少键入代码的错误和误解同时提供数据的一致性。为 了在数据库和应用程序代码之间提供另一层抽象,可以为应用程序建立专门的视图而不必 非要应用程序直接访问数据表。这样做还等于在处理数据库变更时给你提供了更多的自 由。2.4 本章小结本章主要是概述了实现本课题需要用到的理论基础知识:数据库基础概论、计算机网 络基础概论和移动定位(LBS)基础概论。12 江西理工大学应用科学学院毕业设计第 3 章 需求分析及系统总体设计3.1 需求分析3.1.1 对功能的描述 商务电子名片系统功能实现过程如下,以数据流图的形式表现为图 3.1 所示。 1)客户端开机进入欢迎页面,欢迎页面过后进入登陆页面,在登陆页面要求用户输入 用户名和密码,如果用户还没有注册,也可以点击页面上的注册按钮进入注册页面进行注 册,当然在这个页面上还设计了记住用户名和密码的功能,用户可以根据自己的实际情况 进行选择。 2)当用户通过密码验证时,就会进入主页面,主页面直接关联了名片列表页面,在主 页面下还有四个按键,分别为:消息按键、名片列表按键、交友按键、设置按键,点击相 应的按键可进入相应页面进行相应操作。 3)在消息页面有用户最近发想聊天的联系消息,用户可以选择其中的联系人进入聊天 页面进行新的聊天活动。 4)在名片列表页面,有三个大分类,分别为:我的名片、云名片、本地名片。其中我 的名片类是用于查看用户自己的名片项,云名片类是用于查看用户所交好友的名片项,本 地名片项是用户将云上的名片下载到自己的手机上,以方便用户在没有网络或快速查看自 己比较关注的好友名片项。在本页面上,点击某一名片项,即可进入名片查看页面查看更 多的名片信息。 5)点击主页面的交友按键即可进入交友页面,同时向服务器发起定位的交友的信息, 服务器通其定位信息查找附近的人,并将查找的信息返回到客户端。用户点击服务器返回 的某项,即可向某人发送交友信息,如果某人同意,则相互加为好友;如果不同意则不加 为好友。 6)在设置页面目前只有两项:关于信息、退出系统。点击关于项可以查看系统的相关 信息,点击退出项即可直接退出系统。13 易日霖:基于 LBS 的商务电子名片系统的设计与实现进入注册界面启动客户端进入登陆界面弹出提示用户名、密码 输入有误 填写注册信息 命令处理 有效输入 服务器验证注册信息 服务器存储数 据命令信息注册信息服务器注册 主界面消息界面名片列表界面定位交友界面设置界面点击某名片 录入聊天信息 查找本地数据 发起聊天 库名片信息 返回交友请求服务器定位关于信息项退出系统附近人信息 服务器 发送信息 显示 A客户端 名片界面 相应信息 请求加B好友 服务器查看对 方在线否 在线 存储成功 转发 在线 B客户端 转发 在线 不在线 服务器存储数 据 服务器 服务器查看对 方在线否 在线 不在线 服务器存储数 据B同意/不同意返回相应信息图 3.1 系统数据流图3.1.2 对性能的规定 1)精度按照界面功能键的提示进行想要的操作,否则将无法正确运行用户所想要实现 的功能。操作过程中若对屏幕胡乱触摸可能造成系统无法正常运行。 2)时间特性要求 该系统对响应时间要求较严格,要求迅速的响应时间,当用户正确的操作时,系统很 快做出反应,以达到实时性的要求。 3.1.3 运行环境的要求和操作界面的要求 1)设备 Android 智能手机两部。 PC 机一台。 设备所支持的操作系统有:Windows;Android。 2)控制 当用户通过功能选择按键选择功能时,UI 获得相应的值,进入相应的用户界面,等待14 江西理工大学应用科学学院毕业设计用户选择需要的操作。 3)操作界面的要求 (1)界面要清新美观,有条理,画面流畅。 (2)每个界面又要有关联。 (3)每个界面之间的连接性要好,在界面切换时才流畅。 3.1.4 系统数据结构设计 逻辑结构设计要点,首先用户通过客户端向服务器发送数据请求,服务器向客户端发 送相应数据, 手机屏幕输出显示用户界面,触摸屏实现各种功能的切换。 物理结构设计要点,用户名片信息存储需要比较大的存储空间,访问方式要用独立访 问方式,存取单位应为字节,保密条件上只有通过用户名和密码的验证,才能通过客户端 访问用户数据。 数据结构与程序的关系为客户端通过发送请求编码的方式进行数据的读取,由于系统 所需数据库较简单,因此数据库的设计也比较简单。 3.1.5 系统出错处理设计 到目前为止,因为系统还没有完全做好,所以还没有考虑到会有多少的出错信息,以 下三种是最为明显会出错的:如果使用的设备不够完善,可能会造成系统无法正常运行。 可能用户正在使用其设备的时候会突然间断电, 也会造成其设备无法正常运行。 突然死机, 客户端需要重启。程序的不完善,偶尔出现显示错误。 为此本系暂时做了补救措施,将数据进行多份备份,当系统出现故障后依靠备份的数 据,对系统重新配置,这样就算系统崩溃了,数据还可以得到重新的恢复,以免遭到彻底 性的破坏。 在系统维护设计上,本系统采用双重数据保存模式,有效地防止错漏及作弊事件的发 生。工作站设置注册工号,权限密码,不能进行高于自己权限的操作,从而保证数据的保 密性和安全性;系统数据可灵活备份和恢复,预防由于意外情况引起的信息丢失,保证系 统的正常运行;系统内设置日志跟踪机制,涉及信息及费用安全的敏感操作都有据可查安 全性;系统的设计思想非常注重数据的安全、稳定、可靠,系统可以设置成多种配置,服 务器有备份服务器。3.2 系统总体设计3.2.1 运行环境 运行环境主要包括开发软件和操作系统的选择,我们所使用开发软件是 Eclipse,操作 系统选用的是 windows 和 android 操作系统。 3.2.2 基本设计概述 在系统的的设计上,我们在客户端设计了主页面,主页面是有消息页面、名片列表页15 易日霖:基于 LBS 的商务电子名片系统的设计与实现面、交朋友页面、设置等四个子页面,还在两个手机按键功能,一个是菜单功能一个是返 回功能。在消息子页面,有消息列表,用户点击某消息项,即会进入聊天子页面,在聊天 子页面,用户可以向对方发送聊天消息,也可以按返回键返回消息页面。在名片列表页面, 可以点击某名片项进入名片浏览子页面,在浏览页面可以查看好友名片的具体信息,单击 名片浏览页面,即会出现一个聊天和一个返回按键,按返回按键则返回名片列表页面,按 聊天按键即可进入聊天页面。用户进入交友页面即可进行交友的相关操作。进入设置页面 即可进行相应的设置操作。基本设计概念如图 3.2 所示。主页面功能检测消息页面名片列表页面交友页面设置页面退出系统功能检测功能检测功能检测功能检测聊天页面名片页面添加好友查看关于信息功能检测功能检测返回退出系统返回聊天页面图 3.2 设计概念图3.2.3 接口设计 用户接口设计:在用户界面接口,根据需求分析结果,用户需要一个用户友善界面。 在界面设计上,应做到简单明了,易于操作,并且要注意到界面的布局,应突出的显示重16 江西理工大学应用科学学院毕业设计要的信息。在进入登陆界面时,用户需输入自己的用户名、密码。如果,输入有错时应以 标准形式给出出错提示。总的来说,系统的主界面应做到可靠性、简单性、易学习与使用。 外部接口设计:手机终端是通过 android 编写的用户程序块进行各个页面之间的切换, 服务器与手机是通过无线通讯进行数据传输。且无论是手机还是服务器,都是通过网口进 行数据通信的。 3.2.4 运行设计 1)运行组合 本系统总共有 2 个大的模块组合:第一:服务器;第二:手机客户端。 2)运行控制 在手机端上用户只需要通过触摸屏操作就可以进行软件的运行控制,在服务器上自主 运行,工作人员只要做好维护工作即可。 3)运行时间 本系统对运行时间的要求较高,要求长时间运行时系统仍然能正常工作。3.3 本章小结本章主要是介绍了系统的总体设计,分别从需求分析和总体设计两方面来阐述。在需 求分析中,从功能的描述、性能的规定、运行环境的要求、操作界面的要求等方面具体描 述了本系统的需求分析。在系统总体设计中,从运行环境、基本设计概念、接口设计、运 行设计、系统数据结构设计、系统出错处理设计等方面具体具体描述了系统总体设计。17 易日霖:基于 LBS 的商务电子名片系统的设计与实现第 4 章 系统详细设计与实现4.1 系统环境的构建1)Java JDK 下载: 进入网页: http://java.sun.com/javase/downloads/index.jsp,选择 Download JDK 只下载 JDK。 2)Eclipse 下载 进入网页: http://www.eclipse.org/downloads/,下载 eclipse IDE。 3)下载 Android SDK 下载 Android SDK 完全版并解压。 4)软件安装 (1)安装 jdk 6u19。安装完成即可,无需配置环境变量。 (2)解压 eclipse。 eclipse 无需安装,解压后,直接打开就行。 (3)解压 android sdk 。这个也无需安装,解压后供后面使用。 5)Eclipse 配置 (1) 安装 android 开发插件。 打开 Eclipse, 在菜单栏上选择 help-&Install New SoftWare 配置界面,点击 Add 按钮,添加类型选择界面。 (2)在添加类型选择界面,输入网址: https://dl-ssl.google.com/android/eclipse/ (如果出 错,请将 https 改成 http),输入名称: Android (这里可以自定义),点击 OK。 (3) 进入插入界面, 点击 Next 按钮 , 再点击 Next 按钮, 在出现的界面, 选择 I accept the terms of the license agreements 点击 Next,进入安装插件界面。 (4)等待安装完成后,在出现的界面,点击 Yes 按钮,重启 Eclipse。完成对 eclipse 的配置。 6)配置 Android SDK 点击菜单 window-&preferences,进入配置界面选择 android SDK 解压的目录,点 OK 即 可。到此即完成了 android 开发环境的配置,接下来即可开发 android 程序。 7)下载 mysql 到地址 http://www.jb51.net/softs/2193.html 上下载 mysql。 8)安装 mysql (1) 打开下载的 mysql 安装文件 mysql-5.0.27-win32.zip, 双击解压缩, 运行“setup.exe”, 启动 mysql 安装向导,按“Next”继续,选择安装类型“Custom”。 (2)在“Developer Components(开发者部分)”上左键单击,选择“This feature, and all subfeatures, will be installed on local hard drive.”,即“此部分,及下属子部分内容,全部安装 在本地硬盘上”。在上面的“MySQL Server(mysql 服务器)”、“Client Programs(mysql 客 户端程序) ”、 “Documentation (文档) ”也如此操作, 以保证安装所有文件。 点选“Change...”,18 江西理工大学应用科学学院毕业设计手动指定安装目录。 (3)填上安装目录,如“F:\Server\MySQL\MySQL Server 5.0”,建议不要放在与操作 系统同一分区,这样可以防止系统备份还原的时候,数据被清空。按“OK”继续。 (4)按“Install”开始安装。稍等,直到其安装完成。 9)配置 mysql (1)安装完后,打开 mysql 配置向导, ,按“Next”继续。 (2)选择配置方式:“Detailed Configuration”。 (3)选择服务器类型:“Developer Machine”。 (4)选择 mysql 数据库的大致用途:“Transactional Database Only,按“Next”继续。 (5)对 InnoDB Tablespace 进行配置,为 InnoDB 数据库文件选择一个存储空间,按 “Next”继续。 (6)选择 mysql 访问量,即同时连接的数目,这里选“Online Transaction Processing(OLTP)”,按“Next”继续。 (7)是否启用 TCP/IP 连接,设定端口,如果不启用,就只能在自己的机器上访问 mysql 数据库了,这里启用,把前面的勾打上,Port Number:3306。按“Next”继续。 (8)选择 mysql 编码,选择第三个,然后在 Character Set 那里选择或填入“gbk”,按 “Next”继续。 (9)选择是否将 mysql 安装为 windows 服务,全部打上了勾,Service Name 不变。按 “Next”继续。 (10)询问是否要修改默认 root 用户(超级管理)的密码(默认为空) ,不用勾选, 按“Next”继续。 (11)确认设置无误,如果有误,按“Back”返回检查。按“Execute”使设置生效。4.2 数据库的设计与实现4.2.1 客户端数据库的设计与实现 1)数据库设计 在手机客户端本系统设计了一个名为: “ebc”的数据库,在这个数据库里,本系统设 计了两样表,一个样是“user”表,user 表是一个临时表,用于存储用户的登陆服务器后, 从服务器上返回的好友信息, 当用户退出程序后, 将将此表删除, 不作保留; 要样表是 “_(用 户名)”也是就以用户的用户名创建的表,为每一个在本设备上登陆的用户创建一个消息记 录表,用于保存用户的聊天信息。 2) “user”表的设计与实现 (1) “user”表设计了_id、phone、name、occ、qq、email、img、cname、ctel、cfax、 curl、cadd、btitle、bbody、bbottom、cimg、isOnline、_group 等 18 项数据,详细记录了 用户的基本信息和名片的设计信息;其 E-R 图如图 4.1 所示。19 易日霖:基于 LBS 的商务电子名片系统的设计与实现_id_groupisOnlinecimgbbuttombbodyphonebtitlenameusercaddocccurlqqemailimgcnamectelcfax图 4.1 user 表的 E-R 图(2) “user”表设计的 SQL 实现代码如程序清单 4.1 所示。程序清单 4.1 “user”表 CREATE table IF NOT EXISTS user (_id INTEGER PRIMARY KEY AUTOINCREMENT, phone TEXT, name TEXT,occ TEXT, qq TEXT,email TEXT,img TEXT, cname TEXT, ctel TEXT,cfax TEXT,curl TEXT,cadd TEXT,btitle TEXT,bbody TEXT,bbottom TEXT,cimg TEXT, isOnline TEXT, _group TEXT)3) “_(用户名)”表的设计与实现 (1) “_(用户名)”表设计了_id、name、img、date、isCome、message 这 6 项数据记录, 记录了用户聊天历史信息,其 E-R 图如图 4.2 所示。_id messagename_(用户名)isComeimgdate图 4.2 _(用户名)表的 E-R 图(2) “_(用户名)”表设计的 SQL 实现代码如程序清单 4.2 所示。程序清单 4.2 _(用户名)表 CREATE table IF NOT EXISTS _+ phone (_id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT, img TEXT,date TEXT,isCome TEXT,message TEXT)4.2.2 服务器数据库的设计与实现20 江西理工大学应用科学学院毕业设计1)数据库设计 在服务器上我们采用的是 MySQL 数据库,也设计了一个名为: “ebc”的数据库,在 这个数据库里,本系统设计了三样表,一个样是“user”表,user 表是一个用于存储用户 的注册信息的表;一样表是“_(用户名)”也是就以用户的用户名创建的表,用于存储用户 的交友信息的;还有一样表是定位表,是用于存储用户的位置信息的。 2) “user”表的设计与实现 (1) “user”表的设计与客户的设计相同,设计了_id、phone、name、occ、qq、email、 img、cname、ctel、cfax、curl、cadd、btitle、bbody、bbottom、cimg、isOnline、_group 等 18 项数据,详细记录了用户的基本信息和名片的设计信息,其 E-R 图如图 4.3 所示。_id _group _isonline _cimg _bbuttom _bbody_phone_btitle_nameuser_cadd_occ_curl_qq_email_img_cname_ctel_cfax图 4.3 user 表的 E-R 图(2) “user”表设计的 SQL 实现代码如程序清单 4.3 所示。程序清单 4.3 “user”表 CREATE TABLE `user` ( `_id` int(20) NOT NULL AUTO_INCREMENT COMMENT 'id', `_phone` varchar(20) NOT NULL COMMENT 'phone', `_password` varchar(50) NOT NULL COMMENT 'password', `_name` varchar(50) NOT NULL COMMENT 'name', `_occ` varchar(20) NULL COMMENT 'occ', `_qq` varchar(20) NULL COMMENT 'qq', `_email` varchar(50) NOT NULL COMMENT 'email', `_img` int(20) DEFAULT '0' COMMENT 'img', `_cname` varchar(50) NOT NULL COMMENT 'cname', `_ctel` varchar(20) NOT NULL COMMENT 'ctel', `_cfax` varchar(20) NULL COMMENT 'cfax',21 易日霖:基于 LBS 的商务电子名片系统的设计与实现`_curl` varchar(50) NULL COMMENT 'curl', `_cadd` varchar(70) NOT NULL COMMENT 'cadd', `_btitle` varchar(50) NULL COMMENT 'btitle', `_bbody` varchar(100) NULL COMMENT 'bbody', `_bbottom` varchar(50) NULL COMMENT 'bottom', `_cimg` int(20) DEFAULT '0' COMMENT 'cardimg', `_isonline` int(8) NOT NULL DEFAULT '0' COMMENT 'isonline', `_time` varchar(50) NOT NULL COMMENT 'registetime', PRIMARY KEY (`_id`,`_phone`) ) ENGINE=InnoDB AUTO_INCREMENT=1826 DEFAULT CHARSET=3) “_(用户名)”表的设计与实现 (1) “_(用户名)” 表只设计了_id、 _phone、 _group 三项, 记录用户的交友信息, _phone 项是用户的好友的用户名,_group 表示该好友在用户好友的组别,E-R 图如图 4.4 所示。_id_phone_(用户名)_groud图 4.4 _(用户名)表的 E-R 图(2) “_(用户名)”表设计的 SQL 实现代码如程序清单 4.4 所示。程序清单 4.4 _(用户名)表 CREATE TABLE `_(用户名)` ( `_id` int(20) NOT NULL AUTO_INCREMENT COMMENT 'id', `_phone` bigint(11) NOT NULL COMMENT 'phone', `_group` int(4) NOT NULL DEFAULT '0' COMMENT 'group', PRIMARY KEY (`_id`) ) ENGINE=InnoDB AUTO_INCREMENT=1826 DEFAULT CHARSET=4)定位表的设计与实现 (1)定位表设计了_phone、_lontitude、_latitude、_time、_img、_name、_cname 等 7 项。详细记录了客户端发过来的用户的定位信息。E-R 图如图 4.5 所示。22 江西理工大学应用科学学院毕业设计_phone_cname_name_lontitudeposition_img_latitude_time图 4.5 _(用户名)表的 E-R 图(2)定位表设计的 SQL 实现代码如程序清单 4.5 所示。程序清单 4.5 定位表 DROP TABLE IF EXISTS `position`; CREATE TABLE `position` ( `_phone` bigint(11) NOT NULL COMMENT 'phone', `_lontitude` double COMMENT 'lontitude', `_latitude` double COMMENT 'latitude', `_time` varchar(50) COMMENT 'ptime', `_img` int(4) NOT NULL COMMENT 'img', `_name` varchar(50) NOT NULL COMMENT 'name', `_cname` varchar(50) NOT NULL COMMENT 'cname', PRIMARY KEY (`_phone`) ) ENGINE=InnoDB AUTO_INCREMENT=1826 DEFAULT CHARSET=4.3 通信设计与实现4.3.1 客户端的通信设计与实现 1)通信设计 本系统在手机客户端设计了六类通信信息,分别为:登陆、注册、定位、交朋友、消 息、刷新和退出。 (1)当打开客户端程序,进入登陆页面,在登陆页面输入用户名和密码后,点击登陆 按钮, 程序就会将用户输入的用户名和密码发送到服务器上, 服务器验证发送过来的用户, 如果正确,则给予登陆并返回用户的好友列表。 (2)如果用户没有注册,可以点击页面上的注册按钮进入注册页面进行注册,当用户 填写好了注册信息,点击注册按键后,客户端程序向服务器发送用户注册信息,服务器接 到信息后对用户进行注册工作,在服务器系统的数据库中添加用户信息,并以用户的用户 名创建一个交友表,以保存用户的交友信息。23 易日霖:基于 LBS 的商务电子名片系统的设计与实现(3)当用户登陆成功后,客户端程序则会向服务器发送自己的定位信息,服务器收到 定位信息之后会将其保存在系统的数据库上,以让周围的人能有幸认识到你。 (4)当用户进入交友页面后,客户端程序会向服务器发送交友请求信息,服务器会根 据用户的位置在系统数据上查找用户附近的人,并将查到的列表发回到用户客户端程序 中。用户选择一个附近的人,并点击该项之后,程序会向服务器发送添加好友请求信息, 服务器会将用户的请求转发给被添加人,如果被添加人同意用户的添加请求,则其客户端 程序会向服务器发送同意加用户为好友的请求,服务则将在他们的好友表中相互添加对 方,然后服务器向用户发送添加成功的提示信息。如果对方不同意则,不能成为好友。 (5)用户可以在客户端向自己的任何一位好友发出信息,信息发到服务器中,服务器 检测用户的好友在线与否,如果在线则将用户的信息转发给用户的好友,如果用户的好友 不在线,服务器就将用户的信息暂时保存在服务器上并等用户的该好友上线后再给用户转 发,并发送信息提示用户: “你的好友暂时不在线” 。 (6)客户端程序还设计了一个刷新的请求信息,当用户通过下拉操作向服务器发起刷 新请求时服务器会将用户的最近好友列表返回给用户。 (7)当用户发送退出系统请求时,服务器删除该用户的登陆信息,并向其好友发送他 下线了的提示信息,如图 4.6 所示。服务器1、用户注册信息 2、注册成功提示注册1、用户名、密码 2、好友列表登陆新定位信息定位客 户 端 A3、请求加B为好友 1、交友请求 2、附近的人列表 6、相互加为好友 1、刷新请求 2、新好友列表交朋友4、A请求加好友 5、B同意客 户 端 B . . .刷新1、A向B发送消息 2、B不在线则回复A,B不在线消息2、若B在线则转发消息1、退出系统通知退出2、通知其好友其下线了图 4.6 通信设计简图24 江西理工大学应用科学学院毕业设计2)通信的实现流程 (1)请求登陆实现流程是客户端向服务器发送用户名和密码,服务器验证用户名与 密码是否正确, 如果正确则给予用户登陆服务器,并给客户端发送登陆用户的好友列表, 如图 4.7 所示,实现代码见附件 B。服务器用户名、密码客 户 端 A好友列表验证NY 给予登陆 出错信息 返回出错信息图 4.7 登陆实现流程如图(2)请求注册实现流程是用户在客户端输入用户的注册信息,并向服务器发送注册信 息,服务器接收并保存用户的注册信息并为用户生成一个交友列表,用于保存用户的交友 信息,如图 4.8 所示,实现代码见附件 B。服务器注册信息保存注册信息客 户 端 A好友列表 生成交友列表图 4.8 注册实现流程如图(3)请求定位实现流程是客户端向服务器发送用户的位置信息,服务器保存用户的位 置信息,如图 4.9 所示,实现代码见附件 B。25 易日霖:基于 LBS 的商务电子名片系统的设计与实现服务器客 户 端 A定位信息保存定位信息图 4.9 定位实现流程如图(4)交朋友实现流程是客户端向用户发起交友请求,服务器则根据用户的位置查找其 附近的人并将查找到的列表发送给客户端,用户选择陌生的用户发起添加请求,被请求用 户同意后,服务器在他们的好友列表上互相添加对方,并发送添加好友成功的信息。如图 4.10 所示,实现代码见附件 B。服务器交友请求 附近人列表查找附近用户客 户 端 A请求加B为好友向B转发请求相互添加为好友同意A的请求客 户 端 B . . .向A转发同意信息图 4.10 交朋友实现流程如图(5)发送消息实现流程是用户 A 向服务发出消息,服务器根据信息查找用户 B 是否 在线,如果用户 B 在线,则将消息转发给 B,如果不要线,则将欺信息暂时保存在服 务器并回复 A:B 不在线。如图 4.11 所示,实现代码见附件 B。26 江西理工大学应用科学学院毕业设计服务器查找B在线与否 Y N客 户 端 A向B转发消息保存消息客 户 端 B . . .回复A,B不在线图 4.11 发送消息实现流程如图4.3.2 服务器的通信设计与实}

我要回帖

更多关于 绝地求生需要什么插件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信