计算机毕业设计——基于Android的真人社交游戏辅助应用开发

编号

本科生毕业设计(论文)

题目: 真人社交游戏辅助应用开发

专业

学 号

学生姓名

指导教师

摘 要

时至今日,社交已成为人们生活中必不可少的一部分,社交网络的盛行已经成为一种必然趋势.与此同时,人们的娱乐化需求也越来越重要,游戏产业也得到了飞速发展.为了满足人们的社交化,娱乐化的需要,越来越多的公司开始结合社交和游戏,走社交和娱乐相辅相成的路线.在软件应用行业,也有越来越多的公司着手开发结合游戏的社交应用.

本设计完成的应用为一款移动游戏社交应用,本设计根据软件设计的标准流程,从软件的需求分析、可行性分析着手,然后进行软件的总体设计和详细设计与实现,最后进行软件测试确保软件的功能能达到预期标准.本设计将软件开发划分为三大基本模块:服务器端,数据库端以及客户端.整个应用基于Java编程语言编写,其中服务器端再次细分为Java Web服务器和TCP Socket服务器,数据库端分为MYSQL数据库和SQLITE数据库,客户端基于Android平台开发,本应用的核心目标为:游戏与社交,实现的核心功能为:即时通信,游戏,社交.以实现核心功能为目的,再次将Android客户端分为两大部分:核心功能部分与附加功能部分,核心功能部分细分为四个模块:登录注册,消息中心,游戏中心,状态圈;附加功能部分也细分为四个模块:上传下载中心,用户中心,工具中心,设置中心.

关键词:社交;游戏;即时通信;Android;服务器

ABSTRACT

Today, social networking has become an indispensable part of people's lives, the prevalence of social networking has become an inevitable trend. At the same time, people's entertainment needs more and more important, the game industry has been rapid development. In order to meet people's social, entertainment needs, more and more companies are beginning to combine socializing and games, take social and recreational complementary route. In the software application industry, there are more and more companies started to develop binding social game applications.

In this paper, the final design is a social mobile recreation applications. This design follows the standard process of software design, the design start from the software requirements analysis and the feasibility analysis, then begin designing the software, and developing the software, finally testing the software, ensure that the software has reached the expectations. The development process of this software is divided into three basic modules:the server,the database, and the client. The entire software based on the Java programming language, the server side is divided into two parts: The Java Web Server and the TCP Socket Server. The database side is also divided into two parts: The MYSQL database and the SQLITE database. The Client side is based on the Android platform. The core goal of this software: Sociality and Recreation. The main function of the software: Socaility, Recreation and Instant Message. In order to achieve the goal, The Android client is divided into two parts: Part of the core functions and part of additional functions. The Core part is subdivided into four modules: The Login Register module, The Message Center, The Game Center and the State Center; The additional part is also subdivided into four modules: The Upload and Download Center, The User Center, The Tools Center and the Setting Center.

Keywords: Sociality; Recreation; Instant Message; Android; Server

目 录

第1章 绪论1

1.1引言1

1.2课题的背景及意义1

1.3国内外研究现状1

1.4课题工作综述2

1.5论文框架结构2

第2章 需求分析3

2.1 系统开发目标3

2.2 用户需求分析3

2.3 功能需求分析3

2.3.1核心功能3

2.3.2附加功能4

2.4 可行性分析5

2.4.1 经济可行性5

2.4.2技术可行性5

2.5 本章小结5

第3章 总体设计7

3.1 概要设计7

3.2 Socket服务器的设计7

3.3 Web服务器的设计8

3.4 客户端的设计9

3.4.1 登录注册的设计10

3.4.2 消息中心的设计11

3.4.3游戏中心的设计11

3.4.4 上传下载中心的设计12

3.4.5 状态圈设计12

3.4.6 工具中心的设计13

3.4.7 用户中心的设计13

3.4.8 设置中心的设计14

3.5数据库的设计14

3.5.1 服务器端数据库功能设计15

3.5.2 客户端数据库功能设计17

3.6 本章小结18

第4章 详细设计与实现19

4.1 系统主体19

4.2 Web服务器19

4.3 Socket服务器20

4.3.1 Socket服务器与客户端的连接建立20

4.3.2 Socket服务器处理流程21

4.4 客户端22

4.4.1 登录注册模块22

4.4.2 消息中心模块23

4.4.3 游戏中心模块23

4.4.4 状态圈模块24

4.4.5 上传下载中心模块25

4.4.6 工具中心模块26

4.4.7 用户中心模块26

4.4.8 设置中心模块27

4.5 数据库28

4.5.1 服务器端数据库28

4.5.2 客户端数据库33

4.6 本章小结36

第5章 软件测试37

5.1 功能测试37

5.1.1 登录注册模块37

5.1.2 消息中心模块38

5.1.3 游戏中心模块39

5.1.4 状态圈模块40

5.1.5 上传下载模块41

5.1.6 工具中心模块42

5.1.7 用户中心模块43

5.1.8 设置中心模块44

5.2 整体测试45

5.3 兼容性测试46

5.4 本章小结46

第6章 结论与展望47

6.1 结论47

6.1.1 毕业设计完成的任务47

6.1.2 收获和总结47

6.2 不足之处及未来展望47

参考文献49

致 谢51


第1章 绪论

1.1引言

社会在不断进步,科技在不断发展,随着历史的车轮缓缓前行,现今已悄然进入了移动互联网时代.在这个新的时代,社交网络,娱乐产业都趋于移动化,移动社交应用和移动游戏应用的出现也越来越契合时代的背景.

1.2课题的背景及意义

移动社交应用,顾名思义是运行在移动终端上的社交应用,社交应用的核心就是社交网络,而社交网络以”六度空间”理论为基础,含盖以人类社交为核心的所有网络服务形式,社交网络让互联网从一个研究部门,学校,商业应用平台扩展成为了一个人类社会交流的工具.社交网络起源于网络社交,网络社交的起点就是电子邮件,随着互联网的普及应用与发展,网络社交也有了其它的形式,例如BBS的出现进一步推动了网络社交的发展.而后来的即时通信和博客的出现进一步的丰富了网络社交,就这样,随着网络社交的悄悄演进,特别是近年来移动网络作为一种新兴事务,得到了前所未有的深入和普及,手机平台应用越来越广泛,社交网络越来越趋于移动化.手机成为了新的社交网络的载体.在这种移动社交大环境下,移动社交应用成为了新的宠儿.

近年来随着移动网络的发展,游戏娱乐方式也趋于移动化,移动游戏应用的出现契合时代的背景,特别是近年来手机游戏的迅速发展更是预示着移动游戏也将是将来的大方向.因此,在目前的移动游戏和社交快速发展壮大的背景下,开发出一款结合游戏的移动社交应用正能抓住时代的脉搏.

本文旨在设计并开发出一款结合游戏和社交的移动游戏轻社交应用,应用主体定位为游戏和社交,即结合游戏与社交,与好友一起玩游戏,和共同游戏爱好的人成为好友.通过本应用认识更多的好友,扩大自己的社交圈子.

1.3国内外研究现状

在国外,自从社交网络兴盛后,各种社交应用层出不穷,从2004年横空出世,并且取得巨大成功的Facebook,到2006年出现,并同样取得成功的Twitter,无不证明着社交网络的必然性.近年来,人们的娱乐化需求也越来越多,这时候,社交巨头也将市场瞄向了游戏领域,像Facebook里面就有着游戏中心,里面充斥着原生游戏或者是第三方开发的游戏,结合社交化,娱乐化,两者相辅相成.

在国内,社交网络也潜力无限,被称为中国版Twitter的新浪微博,被比作中国版Facebook的人人网,它们一出现就取得了不错的成功,再到后来腾讯公司强势推出基于熟人社交的微信,再到靠细化定位,从夹缝中迅速成长的基于陌生人社交的陌陌,再到后来的一些其它半熟社交,陌生人社交应用,比如遇见,比邻等,再到最近依靠给图片打标签这个用户的强需求而迅速崛起的Nice,现今国内的社交领域已经是多个巨头并存的情况.

而为了适应人们娱乐化的需求,很多社交巨头都开始结合游戏,娱乐化,推出了很多游戏社交功能,像陌陌和微信都有自己的游戏中心,人人也开始植入一些自制的或者第三方游戏应用.

总体来说现在已经进入了一个移动游戏社交新时代.

1.4课题工作综述

本论文的主要工作是,研究并设计开发出一款移动游戏轻社交应用,该应用包括的最主要的功能为用户的即时通信,社交以及游戏.研究的技术内容主要分为:

  1. Java Web技术和基于TCP 的Socket技术,分别用来实现本应用的Web服务器端和Socket服务器端.
  2. Android应用开发,学习并精通Android技术,掌握良好的应用架构和开发流程.包括Android基础四大组件,不同组件之间的信息交互,常用UI的设计,多线程编程,不同进程和线程之间的交互,以及使用复用性和扩展性良好的设计模式等内容.
  3. 数据库的学习与使用,包括学习并熟练掌握一些常用的SQL语句,能够使用常用数据库,MYSQL和SQLITE等,以及学会进行简单的数据库优化等内容.
  4. 数据库与服务器以及客户端之间的交互,掌握不同代码之间的数据库调度接口,能够通过数据库实现代码中重要数据的持久化功能.
  5. 网络编程,包括Socket服务器以及Android客户端之间通信数据的封装与解析、加密,以及Java Web服务器与客户端之间的HTTP请求,以及JSON解析等内容.

1.5论文框架结构

本论文总体分为六章,每一个章节及其对应内容作如下安排:

  1. :简述移动游戏社交应用的研究背景,现状,以及介绍本文研究的主要内容和论文的组织结构
  2. :介绍软件的需求分析
  3. :介绍软件的总体设计过程
  4. :介绍软件的具体实现过程
  5. :介绍软件的测试过程
  6. :总结本文的工作,展望未来

第2章 需求分析

需求分析是软件定义阶段的关键一步,也是软件生存周期中最重要的一步.通过它可以全面的了解整个系统的功能和结构方面的要求,然后在此基础上进行软件的设计.该部分的主要工作是确定系统必须完成哪些目标,也就是要对目标系统提出准确、清晰、具体、完整的要求.

2.1 系统开发目标

采用Java编程语言和使用Android平台以及与数据库技术相结合,开发出一个具有良好用户界面,功能齐全,运行稳定,交互性良好的移动游戏轻社交软件.本软件的定位为:游戏与社交,即通过本应用,用户可以通过玩同一款游戏来促进社交关系,可以直接与其他用户即时通信,也可以通过发表状态和评论来与其他用户交互,还可以通过查看附近的人,随机寻友来扩大自己的社交圈.

2.2 用户需求分析

开发一款软件,用户分析是必不可少的一个流程,因为软件最终面向的是用户,是需要用户来使用的,所以要从用户的角度分析,而用户的需求一般都有一些共同点:

  1. 界面友好
    一款软件如果操作界面不友好,很容易让用户失去耐心,导致用户的流失.所以良好的交互界面是本软件的一个重要部分,这样可以增加用户黏性.
  2. 操作简便
    用户很难愿意花费大量时间去学习如何使用一款软件,而且用户不是开发人员,程序的内部逻辑用户是不知道的,所以开发人员必须提供给一些封装好的便捷的操作接口来给用户使用.
  3. 运行稳定流畅

软件有可能在运行时出现不可预料的错误从而造成软件卡顿,崩溃.一款设计良好的软件必须避免这种情况,要避免用户体验差,造成一些用户对软件失去信心从而造成用户流失。所以软件的健壮性要强,要尽可能的将错误捕获,后台分析处理,一切都要站在用户的角度来看问题.

2.3 功能需求分析

一款软件的功能分析一般分为核心功能以及附加功能,核心功能是该软件的定位功能,是必不可少的功能,而附加功能一般是为了增加软件的可用性,以及用户体验而额外增加的功能.本软件的功能分析如下:

2.3.1核心功能

本软件的定位是一款移动游戏轻社交应用,以游戏和社交为核心,要实现的核心功能为:

  1. 用户注册登录
    一款网络应用登录注册是必不可少的功能,本软件的注册登录功能简洁明了,还包括手机短信验证,密码找回等一些便民服务.
  2. 消息中心
    作为一款轻社交应用,要具备有社交通信功能,本软件的消息中心可以查看系统消息或者好友发送的消息,可以查看好友状态以及随时向好友发送消息,可以随时与其它用户通信,包括匿名通信,实名通信,还可以随机寻友和按照需求信息匹配好友,以及包括摇一摇寻友和附近的人等功能.
  3. 游戏中心
    作为一款游戏轻社交应用,可以通过一起玩游戏来认识新的好友,与好友互动,所有游戏中心必不可缺,用户可以通过游戏中心,查看发布在服务器端的各种游戏信息,如果发现心动的游戏,可以通过下载中心下载该游戏,下载后的游戏作为第三方应用,可通过本应用直接打开,这样用户不仅可以玩到趣味的游戏,还可以晒晒游戏的积分,与好友一起竞赛.
  4. 状态圈

最为一款社交应用,状态圈功能必不可少,在这里,可以查看自己或者朋友发的状态,包括发送状态,管理自己状态,点赞,评论等功能.

2.3.2附加功能

一款软件除了必备的核心功能外还应该拥有额外的附加功能,这样可以增强用户体验,本软件的一些附加功能如下:

  1. 下载上传中心
    作为一款完整的网络应用,必不可免的会从网上下载各种内容,或者是上传自己的资料到服务器,所以本应用为了方便使用,直接内嵌一个下载上传中心,该本应用下载或上传都会使用本应用内置的中心,这样既方便又便捷.还可以断点多线程下载上传,自定义下载路径,自定义上传文件.
  2. 工具中心

最为一款用户体验好的应用,应该包含一些便民服务,本应用中包含的功能有:

  1. 自定义皮肤功能,用户可以自定义应用的界面背景以及标题栏背景
  2. 定位功能,随时实地知晓自己身处何处

(3)用户中心

除了最简单的登录注册功能,还应该提供给用户更多的操作控件,本应用就包含了用户中心,里面包括一些用户会经常使用的功能,比如查看个人详细信息,修改用户资料,修改密码,反馈意见等功能.还包括积分处理功能,本应用中每个用户都有一个积分属性,通过做任务可以获取积分,比如下载游戏,摇一摇签到等操作会增加积分,当积分累计到一定值后可以进行消费,例如可以用一定的积分进行幸运大轮盘抽奖,有一定概率获取VIP或者其它奖品,或者可以消耗大量积分直接成为VIP,成为VIP后可以开启更多功能.积分功能可以增加用户黏性,增加应用的生存周期.

(4)设置中心

一款良好应用应该允许用户自定义一些设置,本应用用户可以在设置中心根据自己的喜好进行一些应用的功能设置,比如通过设置中心,用户可以选择是否开启应用悬浮窗口,可以选择是否开启消息提醒功能,可以清除缓存和聊天信息,以及查看软件的版本特性,进行版本更新等.

2.4 可行性分析

软件的可行性分析决定着这个软件是否能够最终完成,做软件的可行性分析不能以偏概全,也不可以对各种细微末节都加以权衡,可行性分析必须为最终决策提供有价值的证据.在此,主要从技术可行性以及经济可行性方面进行分析.

2.4.1 经济可行性

这要进行成本、效益分析.从成本方面看,本应用的实现,计算机设备以及网络硬件已经拥有,Android是一个开放的平台,所用的开发工具Eclipse是免费的,所用到的数据库MYSQL也是免费的,一些用到的SDK比如Android SDK以及Mob SDK,百度 SDK都是免费的,没有额外开发人员,只需要支付一个网络公网服务器的租用费用即可,因此开发成本低廉;从效益方面看,目前版本暂时不会带来经济收益,不过从长远角度看,经过完善后可以作为一款完成的商用产品推广,加上Android系统的广泛,市场的开发空间较大,从这个角度看,该应用可行.

2.4.2技术可行性

本应用基于Java编程语言开发,采用C/S网络架构,服务器端采用Socket服务器和Web服务器的多个服务器架构,客户端基于Android平台实现,服务器端采用MYSQL免费数据库,开发工具使用Eclipse配Android SDK以及Eclipse配Java EE,以上都具有开放性和免费性,因此网络上存在着大量参考资料以及无数前辈高人,而开发人员又具有一定程序功底,学习能力较强,可以迅速较快掌握关键技术,而且此系统的初始版本并不是以盈利为目的,所以开发周期可以相对较长,由此分析,能够最终完成产品.因此,该应用在技术上可行.

2.5 本章小结

本章详细探究了移动游戏轻社交应用的需求分析和可行性分析,完成了用户需求、软件的功能需求以及内容设计等方面的工作.

第3章 总体设计

总体设计是开发软件时,根据需求分析和可行性论证,对系统进行整体设计,为系统确定整体框架结构的过程.

本应用为一款移动游戏社交应用,核心内容为游戏,社交,总体设计围绕着核心内容,具体分为:

核心功能:登录注册,状态圈,游戏中心,消息中心

次要功能:工具中心,上传下载中心,用户中心,设置中心

3.1 概要设计

本应用是一款完整的网络应用,包括客户端,服务器以及数据库,为了将模块功能细分,将其中的数据库部分又细分为客户端数据库(MYSQL)与服务区端数据库(SQLITE),服务器端的实现也再次细分为Web服务器与Socket服务器.总体结构如图3.1所示.

图3-1应用总架构图

3.2 Socket服务器的设计

Socket服务器用来管理用户,处理一些私密信息,主要分为四个模块,即监听客户端请求(包括注册,登录等请求),用户状态管理(包括记录用户登入登出状态,踢人,删除用户),消息管理(包括转发用户消息和离线存储以及推送系统的消息),其它模块(包括记录系统日志等功能),其结构如图3.2所示.

图3-2 Socket服务器端架构图

  1. 用户状态管理模块,包括记录用户登入登出状态,删除用户,剔出用户等
  2. 消息管理模块,处理用户发送的消息,转发或者离线存储,并推送系统消息
  3. 监听客户端请求,监听客户端的请求,包括用户登录,注册,修改密码等较为隐私的功能
  4. 其它模块,包括记录系统日志等

3.3 Web服务器的设计

Web服务器用来接收客户端的上传数据以及提供数据给客户端下载,还有提供一些查询功能,主要分为五个模块,即上传文件,下载文件,查询数据,更新用户信息,以及用户发表状态,其系统总结构图如图3.3所示.

图3-3 Web服务器端架构图

  1. 用户模块,更新用户信息,发表状态,评论,用户反馈
  2. 查询模块,用户查询信息
  3. 上传模块,上传文件,会上传的记录保存,并保存上传后在服务器端的下载路径
  4. 下载模块,从Web服务器端下载对应的数据
  5. 其它模块,更新版本

3.4 客户端的设计

根据功能需求分析,本应用的客户端细分为九个模块,即登录注册,消息中心,游戏中心,下载上传中心,状态圈,工具中心,用户中心,设置中心,其系统总结构图如图3.4所示.

图3-4 ICG客户端架构图

3.4.1 登录注册的设计

登录注册模块要能够处理用户的登录,注册基本功能,还需要包括短信验证,密码找回等功能,其功能如图3.4.1所示.

图3-4-1 登录注册模块功能图

3.4.2 消息中心的设计

消息中心模块可以查看系统消息或者好友发送的消息,可以查看好友状态以及随时向好友发送消息,可以随时与其它用户通信,包括匿名通信,实名通信,还可以随机寻友和按照需求信息匹配好友,以及包括摇一摇寻友和附近的人等功能.其功能如图3.4.2所示.

图3-4-2 消息中心功能图

3.4.3游戏中心的设计

游戏中心模块里面可以查看服务器端所有发布的游戏和用户已下载的游戏,并通过游戏中心可以打开已下载的第三方游戏应用,也可以在游戏中心里随机找寻一些热门游戏,可以选择下载心动的游戏,甚至可以通过相同的游戏爱好匹配好友,其功能如图3.4.3所示.

图3-4-3 游戏中心功能图

3.4.4 上传下载中心的设计

上传下载中心,包括了上传功能与下载功能,可以通过下载中心下载服务器端发布的游戏或者其它资源,可以通过上传中心上传用户自己的文件,其功能如图3.4.4所示.

图3-4-4 上传下载中心功能图

3.4.5 状态圈设计

状态圈里可以查看自己或者朋友发的状态,包括发送状态,管理自己状态,点赞,评论等功能.其功能如图3.4.5所示.

图3-4-5 状态圈功能图

3.4.6 工具中心的设计

工具中心里有着便民工具,包括摇一摇定位,自定义皮肤等功能,其功能如图3.4.6所示.

图3-4-6 工具中心功能图

3.4.7 用户中心的设计

用户中心包括一些用户会经常使用的功能,比如查看个人详细信息,修改用户资料,修改密码,反馈意见等功能,还包括摇一摇签到,升级会员等功能.其功能如图3.4.7所示.

图3-4-7 用户中心功能图

3.4.8 设置中心的设计

设置中心可以对应用的一些基本信息进行设置,比如用户可以选择是否开启应用悬浮窗口,可以选择是否开启消息提醒功能,可以清除文件缓存以及消息历史记录(包括聊天记录),以及查看软件版本信息,进行版本更新等.其功能如图3.4.8所示.

图3-4-8 设置中心功能图

3.5数据库的设计

一般在数据库设计中,最先设计的是概念模型,一般采用实体-联系图,即E-R图来描述概念模型,本应用中的实体联系图的实体主要包括用户,消息,定位信息,签到记录,游戏,用户游戏积分,反馈信息,状态日志,评论,上传信息,下载信息等实体.其中用户和消息是一对多的关系;用户和定位信息之间是一对多关系;用户和签到记录之间是一对多的关系;用户和用户反馈信息之间是一对多的关系;用户和游戏是一对多的关系;用户和用户的游戏积分之间是一对多的关系;游戏和用户游戏积分是一对多的关系;用户和状态日志是一对多的关系;用户和评论是一对多的关系;状态日志和评论是一对多的关系;用户和上传文件信息之间是一对多的关系;用户和下载信息是一对多的关系.实体联系图如图3.5所示.

图3-5 E-R图

设计概念模型之后需要进行功能设计,本应用数据库的功能设计分为客户端端数据库部分和服务器数据库部分.

3.5.1 服务器端数据库功能设计

服务器端使用免费开源的MYSQL数据库,整个数据库分为几个模块,即用户模块(包括用户信息,好友关系,发状态,评论,签到,用户反馈),消息模块(包括用户消息与系统消息),游戏模块(包括游戏列表,游戏用户表,用户游戏积分表,游戏下载信息表),定位模块(包括用户的定位信息),其它模块(包括系统版本信息),其系统总结构如图3.5.1所示.

图3-5-1 MYSQL数据库总架构图

  1. 用户模块设计
    一个应用是围绕着用户来的,所以用户模块很重要,这里用户模块的结构如图3.5.1.1所示.


图3-5-1-1用户模块数据库架构图

  1. 消息模块设计
    消息模块目前主要是包括一个消息表,作用是当用户不在线时,用来存储系统和别的用户发送的离线消息,上线后再从消息表中获取未读取的消息.
  2. 游戏模块设计
    本应用是一个游戏社交游戏,所以有游戏模块,游戏模块的结构如图4.5.1.3所示.


图3-5-1-3 游戏模块数据库架构图

  1. 定位模块设计
    定位模块目前主要是包括用户的定位信息,包括一个定位信息表,比如当使用附近的人功能时,会从定位信息表中读取其它用户的定位信息,经过计算后按照一定的条件匹配.
  2. 其它模块设计

目前其它模块包括了一个版本信息表,客户端进行版本更新时判断版本信息表,如果符合升级版本条件,那么就重新下载新版本的内容,更新版本.

3.5.2 客户端数据库功能设计

客户端使用Android自带的轻量级的Shared Preferences来保存一些常用配置,以及使用Android自带的SQLITE数据库来持久化一些数据.

  1. Shared Preferences,采用XML的轻量级存储方法,用来保存一些基本配置,例如皮肤选择路径,应用的设置信息等.
  2. SQLITE,用来持久化数据,主要分为几大模块,即用户信息模块(用来存储好友信息),消息模块(包括持久化用户的聊天记录等功能),上传下载记录模块(用来记录用户的上传下载信息,以及记录断点下载的进度和状态),结构如图3.5.2.2所示.

图3-5-2-2 SQLITE数据库架构图

3.6 本章小结

本章详细说明了本应用的各个功能模块的设计,对整个系统的开发进行了精确的定位.


第4章 详细设计与实现

详细设计是对总体设计的一个细化,详细实现是对每一个模块的功能进行实现的流程.

4.1 系统主体

根据总体设计,本应用包括Android客户端,Web服务器端和Socket服务器端,以及MYSQL数据库和SQLITE数据库.系统主体流程如图4.1所示.

图4-1 系统主体流程图

4.2 Web服务器

本应用采用了Java Web服务器,运行环境是Tomcat容器,Web服务器是运行在Tomcat配置所在的端口,客户端通过HTTP协议访问运行于Tomcat容器上的Web程序,每一次连接都是由客户端主动请求的,Web服务器的处理流程如图4.2所示.

图4-2 Java Web服务器详细处理流程图

4.3 Socket服务器

本应用还采用了Socket服务器,不同于Web服务器,Socket可以管理客户端,每一个客户端都必须先与服务器端建立联系才能进行命令请求,每一个Socket服务器都需要绑定一个监听端口,等待这客户端的连接.

4.3.1 Socket服务器与客户端的连接建立

本应用采用的是基于TCP/IP协议的Socket,建立流程如图4.3.1所示.

图4-3-1 TCP Socket建立流程图

4.3.2 Socket服务器处理流程

Socket服务器处理流程如图4.3.2所示.

图4-3-2 Socket服务器详细处理流程图

4.4 客户端

根据总体设计,本应用的客户端可以细分为八大模块.核心功能为前四个模块,后四个模块为一些附加功能.

4.4.1 登录注册模块

该模块主要负责处理用户的注册,登录,以及找回密码功能,处理流程如图4.4.1所示.

图4-4-1 登录注册模块流程图

4.4.2 消息中心模块

该模块主要处理即时通信,以及社交交友功能,包括添加好友,好友管理,处理好友申请,发送消息,查看系统消息,摇一摇寻友,以及查看附近的人等功能.处理流程如图4.4.2所示.

图4-4-2 消息中心流程图

4.4.3 游戏中心模块

该模块主要负责寻找并下载服务器端的游戏,管理游戏,以及根据游戏社交等功能.处理流程如图4.4.3所示.

图4-4-3 游戏中心流程图

4.4.4 状态圈模块

该模块主要是负责管理用户的状态,包括发表状态,删除状态,评论,点赞等功能.处理流程如图4.4.4所示.

图4-4-4 状态圈流程图

4.4.5 上传下载中心模块

该模块主要负责管理上传下载任务以及任务历史,处理流程如图4.4.5所示.

图4-4-5 上传下载中心流程图

4.4.6 工具中心模块

该模块里面主要是为了丰富应用功能而添加的一些额外的扩充功能,包括摇一摇定位,自定义皮肤和幸运大轮盘抽奖功能,流程如图4.4.6所示.

图4-4-6 工具中心流程图

4.4.7 用户中心模块

该模块的功能是围绕用户而来的,包括摇一摇签到,成为VIP,提交反馈,修改隐私密码,以及查看和更新用户基本资料等功能,处理流程如图4.4.7所示.

图4-4-7 用户中心流程图

4.4.8 设置中心模块

该模块负责自定义应用设置功能,包括查看版本信息和更新应用版本,清理缓存和清理历史消息记录,以及一些其它的应用自定义设置功能.处理流程如图4.4.8所示.

图4-4-8 设置中心流程图

4.5 数据库

数据库结构设计分为服务器端MYSQL数据库和客户端SQLITE数据库.

4.5.1 服务器端数据库

服务器端的数据表结构设计.

  1. 用户表
    表4-5-1-1 用户表
字段名描述类型长度是否唯一是否允许为空是否主键
id自增主键Int0
phoneNumber手机号Varchar20
icgIdIcgId号Varchar30
password密码Varchar30
access权限Int0
star星级Int0
vipVip等级Int0
coin金币Int0
partGameNumber参与游戏个数Int0
nickName昵称Varchar30
iconPath图像路径Text0
sex性别Int0
qrCodePath二维码路径Text0
birthYear出生年Int0
birthMonth出生月Int0
birthDay出生日Int0
email邮件Varchar30
sign签名Text0
netState在线状态Int0
provinceId省份编码Varchar10
cityId城市编码Varchar10
createTime创建时间DateTime0
modifyTime修改时间DateTime0
  1. 游戏表
    表4-5-1-2 游戏表
字段名描述类型长度是否唯一是否允许为空是否主键
gameId游戏Id自增主键Int0
gameName游戏名称Text0
type游戏类型Int0
detailInfo详细介绍Text0
iconPath图像路径Text0
createTime创建时间DateTime0
modifyTime修改时间DateTime0
  1. 消息表
    其中senderPhone和receiverPhone都是用户表里的外键引用.
    表4-5-1-3 消息表
字段名描述类型长度是否唯一是否允许为空是否主键
senderPhone消息发送者手机号Varchar20
receiverPhone消息接收者手机号Varchar20
type消息类型Int0
msg消息内容Text0
createTime创建时间DateTime0
  1. 好友关系表
    其中masterPhone和friendPhone都是用户表里的外键引用.而且这两者的组合是一个唯一约束.unique Key (masterPhone,friendPhone).
    表4-5-1-4 好友关系表
字段名描述类型长度是否唯一是否允许为空是否主键
masterPhone所属人手机号Varchar20
friendPhone好友手机号Varchar20
createTime创建时间DateTime0
  1. 定位信息表
    其中masterPhone是用户表里的外键引用.
    表4-5-1-5 定位信息表
字段名描述类型长度是否唯一是否允许为空是否主键
masterPhone所属人手机号Varchar20
longtitude经度Double0
latitude纬度Double0
detailAddress详细地址Text0
createTime创建时间DateTime0
  1. 游戏用户表
    这个表是记录了每一个游戏的用户参与情况.其中participantPhone是用户表里的外键引用.masterId是游戏表里的外键引用.而且这两者的组合是一个唯一约束.unique Key (masterId,participantPhone).
    表4-5-1-6 游戏用户表
字段名描述类型长度是否唯一是否允许为空是否主键
masterId所属游戏IdInt0
participantPhone参与者手机号Varchar20
createTime创建时间DateTime0
modifyTime修改时间DateTime0
  1. 游戏用户积分表
    每创建一个游戏,就会根据该游戏对应的属性创建一个游戏用户积分表,测试版本只创建了一个ClickGame用户积分表.这个表是记录了每一个用户的具体属性.其中participantPhone是用户表里的外键引用.masterId是游戏表里的外键引用.而且这两者的组合是一个唯一约束.unique Key (masterId,participantPhone).
    表4-5-1-7 游戏用户积分表
字段名描述类型长度是否唯一是否允许为空是否主键
masterId所属游戏IdInt0
participantPhone参与者手机号Varchar20
createTime创建时间DateTime0
modifyTime修改时间DateTime0
nickName游戏昵称Varchar20
score游戏积分Int0
normalSpeed平均点击速度Float0
maxSpeed最大点击速度Float0
  1. 用户反馈表
    这个表记录着每一个用户的反馈信息,用户可以匿名.
    表4-5-1-8 用户反馈表
字段名描述类型长度是否唯一是否允许为空是否主键
id自增IdInt0
masterContact反馈人联系方式Varchar20
createTime创建时间DateTime0
masterName反馈人昵称Varchar20
content反馈信息Text0
  1. 用户状态表
    这个表记录着每一个用户发表的状态信息,这里定义每一条状态最多发表6张图片,用户上传包含图片的信息时,服务器端会将图片保存在服务器本地地址,然后将图片地址存入数据库,其中masterPhone是用户表中的外键引用.
    表4-5-1-9 用户状态表
字段名描述类型长度是否唯一是否允许为空是否主键
id自增IdInt0
masterPhone所属人手机号Varchar20
createTime创建时间DateTime0
content文字内容Text0
imgOne第一张图片路径Text0
imgTwo第二张图片路径Text0
imgThree第三张图片路径Text0
imgFour第四张图片路径Text0
imgFive第五张图片路径Text0
imgSix第六张图片路径Text0
  1. 用户评论表
    这个表记录着每一个用户发表的评论信息,其中commentMasterPhone是用户表中的外键引用,diaryId是状态表中的外键引用.
    表4-5-1-10 用户评论表
字段名描述类型长度是否唯一是否允许为空是否主键
id自增IdInt0
diaryId所属状态IdInt0
commentMasterPhone评论发表人的手机Varchar20
commentContent评论的内容Text0
createTime创建时间DateTime0
  1. 用户签到表
    这个表记录着每一个用户的签到信息,其中masterPhone是用户表中的外键引用.
    表4-5-1-11 用户签到表
字段名描述类型长度是否唯一是否允许为空是否主键
id自增IdInt0
masterPhone签到人的手机Varchar20
content评论的内容Text0
createTime创建时间DateTime0
longitude签到的经度Double0
latitude签到的纬度Double0
detailAddress签到的详细地址Text0
  1. 用户上传信息表
    这个表记录着每一个用户的签到信息,其中masterPhone是用户表中的外键引用.
    表4-5-1-12 用户上传信息表
字段名描述类型长度是否唯一是否允许为空是否主键
id自增IdInt0
masterPhone签到人的手机Varchar20
filePath上传后的文件所在路径Text0
createTime创建时间DateTime0
fileName上传后的文件名字Varchar20
detail详细信息介绍Text0
  1. 版本信息表

这个表记录着应用的版本信息.

表4-5-1-13 版本信息表

字段名描述类型长度是否唯一是否允许为空是否主键
id自增IdInt0
versionName版本名称Varchar20
versionCode版本代码Varchar20
apkPath应用所在路径Text0
detail详细信息介绍Text0

4.5.2 客户端数据库

客户端的数据表结构设计,采用Sqlite数据库.

  1. 上传下载任务表.
    这个表记录所有的上传和下载任务信息.
    表4-5-2-1 上传下载任务表
字段名描述类型长度是否唯一是否允许为空是否主键
_id自增IdInteger0
task_name任务名称Varchar20
updownload_url上传路径或者下载路径Varchar60
file_path上传文件或者下载接收文件Varchar60
file_size文件总大小Integer0
complete_size完成大小Integer0
type类型,上传还是下载Integer0
finished是否完成标识Integer0
  1. 上传下载详细信息表.
    上传下载使用多线程断点,这个表记录每一个上传和下载任务的线程详细信息.
    表4-5-2-2 上传下载线程信息表
字段名描述类型长度是否唯一是否允许为空是否主键
_id自增IdInteger0
thread_id线程IdInteger0
start_pos开始位置Integer0
end_pos结束位置Integer0
complete_size完成大小Integer0
complete_size完成大小Integer0
type类型,上传还是下载Integer0
updownload_url上传或下载路径Varchar60
  1. 用户信息表.
    为了节省网络请求数据量,Android客户端会在本地存储一些常联系的用户的信息.(不包括隐私信息)
    表4-5-2-3 用户信息表
字段名描述类型长度是否唯一是否允许为空是否主键
id自增主键Integer0
phoneNumber手机号Varchar20
icgIdIcgId号Varchar30
access权限Integer0
star星级Integer0
vipVip等级Integer0
coin金币Integer0
partGameNumber参与游戏个数Integer0
nickName昵称Varchar30
iconPath图像路径Text0
sex性别Integer0
qrCodePath二维码路径Text0
birthYear出生年Integer0
birthMonth出生月Integer0
birthDay出生日Integer0
email邮件Varchar30
sign签名Text0
netState在线状态Integer0
provinceId省份编码Varchar10
cityId城市编码Varchar10
  1. 离线聊天信息表.
    客户端会为每两个用户之间的聊天记录创建一个聊天信息表,方便查询历史记录,使用两个用户的手机号作为一部分表名字,例如”chatInfo_手机1_手机2”作为表名.
    表4-5-2-4 用户聊天记录表
字段名描述类型长度是否唯一是否允许为空是否主键
_id自增IdInteger0
isCome是否接收的消息Integer0
state发送状态,发送中还是发送完毕Integer0
message聊天内容Text0
date消息发送的时间Text0
  1. 离线列表消息表.

客户端存储一些消息在本地,作为消息记录,例如存储系统通知,存储好友申请等消息.

表4-5-2-5 消息记录表

字段名描述类型长度是否唯一是否允许为空是否主键
_id自增IdInteger0
senderPhone消息发送人手机号Varchar20
receiverPhone消息接受人手机号Varchar20
message消息内容Text0
type消息类型Integer0
IsReaded是否已经读取Integer0
isHandled是否已经处理Integer0
date消息发送的时间Text0

4.6 本章小结

本章根据软件的总体设计,详细设计每一个模块的逻辑功能以及运行流程.

第5章 软件测试

软件测试是保证软件质量和可靠性的关键步骤,正所谓没有不出Bug的程序,而软件测试的目的之一也是为了发现错误.成功的测试是发现至今尚未发现的错误.软件测试的另一个目的就是确保测试的软件的功能和设计的效果吻合.这里软件测试的内容主要包括功能测试、整体测试和兼容性测试三项.

测试环境如表5.0所示.

表5-0 测试环境表

软件环境(软件的版本信息)
JDK:1.7
Android SDK:3.0
编程软件:Eclipse
硬件环境(硬件设备信息)
手机:Lenovo K860
内存:1024 M
系统:Android 4.0.4

5.1 功能测试

功能测试也称为黑盒测试,是用来测试软件的功能是否完整,各项功能是否与预期相符等.本应用的单独进行每一个模块的功能测试.

5.1.1 登录注册模块

本模块的功能测试如表5.1.1所示.

表5-1-1 登录注册测试详细表

测试功能目标测试方法预期结果结论
登录功能客户端可以通过GPRS或WIFI登录服务器在登录界面输入帐号信息登录成功登录服务器并提示客户端操作成功正确完成
注册功能客户端可以注册新的用户在注册页面根据提示信息输入信息注册成功注册新的用户并登录正确完成
找回密码用户成功通过短信验证后可以重置密码在找回密码界面获取短信验证码,并验证短信验证成功后会打开一个重置密码界面正确完成

界面如图5.1.1所示.

图5-1-1 登录注册模块界面

5.1.2 消息中心模块

本模块的功能测试如表5.1.2所示.

表5-1-2 消息中心测试详细表

测试功能目标方法期望结果结论
发送消息可以发送消息给选中好友向一个选中好友发送消息好友收到消息正确完成
添加好友可以查找并添加好友通过简单查找或者详细查找,向查找到的人发送好友申请目标的用户能收到好友申请正确完成
处理好友申请可以接受或者拒绝他人的好友申请在消息中心里选择好友申请消息,并处理选择接受或者拒绝后都会产生相应的效果正确完成
查看系统消息可以接收到并查看系统消息服务器端向客户端推送消息消息中心可以接收系统的推送消息并查看正确完成
删除好友能够将好友从好友列表中移除选择好友列表中的好友然后点击删除好友成功的被删除正确完成
随机寻友可以打开一个随机寻友界面,以卡片形式显示一些好友消息中心里面点击随机寻友按钮进入随机寻友界面,并以卡片形式显示所有找到的用户正确完成
摇一摇摇一摇后随机找寻好友使用摇一摇摇一摇后能够成功的找到新的用户正确完成
附近的人查看附近地点的用户查看附近的人能够显示正在附近的用户正确完成

界面如图5.1.2所示.

图5-1-2 消息中心模块界面

5.1.3 游戏中心模块

本模块的功能测试如表5.1.3所示.

表5-1-3 游戏中心测试详细表

测试功能目标方法期望结果结论
管理已有游戏可以管理已经下载的游戏,包括打开,删除,评价,分享功能选择已经下载的游戏进行管理操作打开,删除,评价,分享功能都可用正确完成
下载游戏可以通过游戏中心下载服务器端游戏在游戏中心寻找一款测试游戏并点击下载成功下载游戏正确完成
随机找寻游戏可以打开一个随机寻找游戏界面,以卡片形式显示游戏游戏中心里使用随机寻找游戏功能进入随机寻找游戏界面,并以卡片形式显示找到的游戏正确完成
找寻同类用户可以找寻到拥有同样游戏的用户游戏中心里选择找寻相同爱好用户的功能成功找到拥有同样游戏的其他用户正确完成

界面如图5.1.3所示.

图5-1-3 游戏中心模块界面

5.1.4 状态圈模块

本模块的功能测试如表5.1.4所示.

表5-1-4 状态圈测试详细表

测试功能目标方法期望结果结论
发表状态能够发表自己的状态发表新的状态发表状态成功,并能显示正确完成
删除状态能够删除自己已发表的状态选择自己的已发状态并删除成功删除状态正确完成
点赞可以给已发表的状态点赞选择一条已发状态并点赞点赞成功正确完成
评论可以评论已发表的状态选择一条已发状态并评论评论成功正确完成

界面如图5.1.4所示.

图5-1-4 状态圈界面

5.1.5 上传下载模块

附加模块之一,本模块的功能测试如表5.1.5所示.

表5-1-5 上传下载模块测试详细表

测试功能目标方法期望结果结论
管理正在进行的任务能够管理正在进行的任务,包括暂停,下载,重新下载,删除,清除所有任务功能选择一条正在进行的任务并操作操作成功,产生对应的效果正确完成
管理任务历史能够管理任务历史,包括删除,重新下载,清空所有历史功能选择一条任务历史并操作操作成功,产生对应的效果正确完成

界面如图5.1.5所示.

图5-1-5 上传下载模块界面

5.1.6 工具中心模块

附加模块之一,本模块的功能测试如表5.1.6所示.

表5-1-6 工具中心测试详细表

测试功能目标方法期望结果结论
摇一摇定位摇一摇并能定位到自己的未知信息选择摇一摇定位成功定位到用户的信息正确完成
自定义皮肤可以DIY背景和标题选择自定义皮肤功能成功更换了背景和标题正确完成
幸运大轮盘可以进行轮盘抽奖功能选择幸运大轮盘功能成功的抽奖,并产生结果正确完成

界面如图5.1.6所示.

图5-1-6 工具中心模块界面

5.1.7 用户中心模块

附加模块之一,本模块的功能测试如表5.1.7所示.

表5-1-7 用户中心测试详细表

测试功能目标方法期望结果结论
摇一摇签到摇一摇并能签到获取积分选择摇一摇签到成功签到并获取积分正确完成
升级会员可以通过积分换取会员或者其它途径升级会员选择升级会员升级会员成功正确完成
修改密码可以修改隐私密码选择修改密码修改密码成功正确完成
修改个人资料可以查看并修改个人的基本资料用户中心里点击用户资料的编辑功能成功更新个人基本信息并可以显示正确完成

界面如图5.1.7所示.

图5-1-7 用户中心模块界面

5.1.8 设置中心模块

附加模块之一,本模块的功能测试如表5.1.8所示.

表5-1-8 设置中心测试详细表

测试功能目标方法期望结果结论
更新版本能够连接服务器检查并更新最新版本选择更新版本如果存在最新版本,则下载并重新安装正确完成
自定义应用设置可以DIY应用的不同设置手动更换多种不同的应用设置组合每一种应用设置都能生效正确完成
清理缓存可以清除文件缓存选择清理缓存成功删除所有缓存正确完成
清理消息记录可以清除消息历史记录选择清理消息记录成功删除所有消息记录正确完成

界面如图5.1.8所示.

图5-1-8 设置中心模块界面

5.2 整体测试

游戏的定位为游戏与社交,整体测试就是用户使用软件的流程测试,软件运行的主体流程如图5.2.1所示.

图5-2-1 软件运行主体流程

主要操作界面如图5.2.2所示.

图5-2-2 主要操作界面

5.3 兼容性测试

兼容性测试是为了测试软件在不同型号手机和不同的系统版本上是否能顺利运行,本应用的最低要求运行版本为Android 3.0,因此,测试设备的基本要求为系统高于Android 3.0,通过该测试证明软件能够运行在不同版本不同型号的设备上,体现了软件的适应性以及可移植性.本软件在不同设备上的运行结果如表5.2所示.

表5-2 兼容性测试结果表

手机名称Android版本兼容性
Lenovo K860Android 4.0.4兼容
MI 4LTE-CUAndroid 4.44兼容

5.4 本章小结

本章先对软件进行了功能测试,确保软件的功能都已实现,然后进行整体测试,确保软件整体运行良好,最后进行兼容性测试,证明软件兼容性良好,与预期的基本相符.


第6章 结论与展望

6.1 结论

6.1.1 毕业设计完成的任务

本软件的开发根据一个软件的生命周期分为多个阶段进行,首先提出了软件,并确立了软件的实现目标以及意义,然后根据软件的详细需求分析,将软件的功能进行模块划分,并进行了软件的可行性分析,然后对软件进行了一个总体设计,将软件划分成各个多个模块,并确定了每一个模块的功能结构,之后根据总体设计对软件进行详细的设计,确定软件每一个模块的具体的实现以及各个模块之间的处理流程,最后进行了软件测试,确认已经达到可预期的目标.最终的结果为,软件的各个模块功能均已实现,测试也已通过,软件可以完成初期的目标:一个移动游戏社交应用,用户可以通过该应用玩游戏,即时通信,交朋友扩大自己的社交圈子.

6.1.2 收获和总结

在完成毕设的这段时间里,受益匪浅.从最开始对Android以及Java技术的生疏以及不懂,到最后能够娴熟使用技术完成自己的目标,之间有彷徨过,悲观过,但最终还是坚持了下来,困难不可怕,只要你能勇敢面对,直视问题,最终你一定能够克服它.而且只有不断的遇到问题,并解决问题,才能快速的提升自己的水平,在这次毕设过程中,我遇到了很多问题,也解决了很多问题,最终,经过自己的不懈努力,我的技术水平得到了飞跃,我成功的完成了以前想都不敢想的目标.我也总结了一些经验,启示:

  1. 不能畏难,人总是害怕面对自己不会的,未知的东西,但是其实只有选择面对未知,并且收获未知,才能够更大的提升自己的水准.我在准备毕业设计时,还没有任何的Android和Java开发经验,但是我选择相信自己,于是经过几个月的自学,我从一个连入门级都没到的新手成功的达到了现在的水准,至少现在我能够轻松的开发很多Android应用了,而且毕设的整个工程的代码量除去注释也在三万行以上,这在我以前是想都不敢想的.
  2. 一定要先定好规划然后在执行,在做任何事情,一定要先做好规划,千万不能盲目.做软件开打的一定得先做好设计,磨刀不误砍柴工.像我在做毕设的时候,由于没有经验,所以是没有先做好全局设计,所以导致开发过程中屡屡受阻,经常重新设计数据库和各种实体类,甚至还会经常修改每个模块的功能,大大的浪费了精力和时间.
  3. 要学会请教他人,一个人的力量终究有限,而且思想的碰撞经常容易擦除灵感的火花,所以要善于请教他人,比如我在刚开始做毕设那会特别要强,总是想一个人解决所有问题,结果事倍功半,后来学会去开源论坛上请教一些前辈大牛,才发现自己所思考的问题原来这么局限,所以后来就开始和其它技术人员讨论请教,事半功倍,事实证明,他人和容易发现自己的思想盲点.
  4. 要勇于探新,一个人不能守旧,要永远的向最前沿看起,守旧意味着后退,就像是闭关锁国,最终只能是自己被淘汰,所以我们应该主动去学习接收新的知识,并且快速掌握它们,只有这样我们才能不被时代所淘汰,永远的站在时代的最前沿.

6.2 不足之处及未来展望

尽管本应用实现了一个移动游戏社交应用的基本功能,但是由于时间仓促,还有很多不足之处和一些需要解决的问题,包括UI界面设计感不够,功能的实现不够彻底,安全性不足等问题,对未来的工作可以进行以下几点展望:

  1. 丰富即时通信内容,增加发送图片和语音的功能
  2. 扩充社交功能,增加用户群组功能,增加地图功能,增加更多的用户兴趣选项,可以根据兴趣社交
  3. 增加游戏性,扩充更多合理的游戏,优化游戏中心的功能,吸引更多用户
  4. 增加用户来源,增加第三方应用的关联,比如关联QQ,新浪,人人等账号
  5. 增加安全性,将HTTP协议改为HTTPS协议更为安全,采用更加安全的加密措施
  6. 增加OAUTH认证,能够提供API供第三方应用使用
  7. 优化网络,提高服务器稳定性,合理分配网络请求,降低客户端的流量消耗
  8. 优化UI界面,增加交互感,更容易吸引用户

参考文献

  1. 侯晓攀,基于随景游戏的移动社交应用平台设计与实现[D].北京邮电大学,2010.1-71
  2. 张卫明,等.Java语言极其应用[M].北京:清华大学出版社.2006
  3. 陈更力,张青.基于Java Socket网络编程的一种新实现[J].电脑开发与应用, 2006( 6): 12-13
  4. 罗军周等. TCP/IP协议及网络编程技术[M]. 清华大学出版社. 2008
  5. 金勇华,曲俊生.Java网络高级编程[M].北京:人民邮电出版社,2010
  6. 刘剑卓.Android手机游戏开发 [M].北京:中国铁道出版社,2012.1-12
  7. 李刚著.疯狂Android讲义(第2版)[M].北京:电子工业出版社,2014:57~156
  8. 杨丰胜. Android 应用开发解密[M].机械工业出版.2010
  9. Douglas D.Huston.Java Network Programming[M]. 清华大学出版社. 2004
  10. Bruce Eckel. Thinking in java[M]. 机械工业出版社. 2009
  11. Donald E.Knuth. The Art of Computer Programming[M]. 人民邮电出版社. 1998
  12. Hyun Jung La.A Service-based Approach to Developing Android Mobie Internet Device (MID) Applications[M].New York:2007.1-7

致 谢

时间飞逝,转眼就大四毕业,在毕业论文定稿之际,我在江南大学数字媒体学院的学习生涯也即将结束.回首过去,我青春中最宝贵的时间能够在这样风景如画的校园之中度过,能在众多认真负责的老师的教导下度过,实在是荣幸之极.在这四年里,充实而快乐的求学之路,给我留下了难以忘怀的记忆,在这里,我的思想和学习得到了极大的进步和提升,我从一个懵懂无知的少年成长为了一个会独立思考,拥有一技之长的青年.在此,我要向这四年来陪伴我一起走过,关心我和帮助我的老师、同学以及朋友、亲人们,致以最为真诚的谢意.

非常感谢律睿慜老师,本文是在律睿慜老师的耐心指导下完成的.从论文的确定到初稿再到资料搜集、写作、修改再到最后的定稿,这过程中,律老师都一直都在给予我无私的帮助.在毕设完成过程中,律老师总是在百忙之中抽出时间帮我们解决疑惑和问题,在遇到的很多细节问题上,律老师都会很耐心的给予我帮助,使我受益匪浅.同时,律老师也是我专业方面的启蒙老师,正是在律老师风趣的课堂上,我开始树立了以后的职业目标以及梦想,也感谢四年来遇到的所有老师,你们不仅教会了我的专业知识,还教会着我如何为人处事,如何融入这个社会.

另外,感谢众多的开源网站以及论坛上的博主们,你们无私奉献的精神无时无刻不影响着我,正是你们无私的分享自己的技术,才使得我能快速的学习并掌握更多的专业知识,正是你们对技术的热爱与执着,打动着我,让我走进并热爱这个行业.希望将来能一起进步,一起为技术的发展做出贡献.

最后,感谢母校所有的老师、教职工和同学们,在此,对你们表示最衷心的祝福,愿你们开心快乐,幸福每一天,也祝我所热爱的母校越来越棒.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/38965.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中国企业家木兰汇对话网心科技联合创始人、首席运营官马婷

近日,又一位商界木兰加入中国企业家木兰汇大家庭,她是迅雷集团高级副总裁、网心科技联合创始人、首席运营官马婷。 马婷女士曾担任飞利浦(Philips)、爱迪德(Irdeto)、瑞尔视(Real Networks Inc…

node.js配合electron打包成安装包

node.js配合electron打包成为安装包 最近在忙别的事情,好久不出一期博客了,网上有很多的electron打包成为桌面软件的教程,那这一期我出一期打包成安装包的教程 文章目录 系列文章目录前言一、electron是什么?二、使用步骤 1.首先准备一个node.js工程库2.导入electr…

C++:在“替代”中迎来“转机”的 2022 年!

【CSDN 编者按】告别各种不确定的 2022,我们迎来了崭新的 2023 年,岁末年初,大家都有写总结的习惯,回顾与展望。作为知名的 C 开发人员,Bartlomiej Filipek 在自己的博客上对 C 2022 进行了非常全面的总结。CSDN 组织译…

chatgpt赋能python:Python如何避免代码重复

Python如何避免代码重复 作为一名有10年Python编程经验的工程师,我深知代码重复会降低程序的可维护性,使代码变得混乱和难以扩展。因此,我想在这篇文章中介绍一些技术和最佳实践来避免Python代码重复。 为什么要避免重复代码? …

统计文本文件中的英文单词数量

python 3.5实现 思路: 读取txt文本内容,一行一行读取,去掉换行符,讲文本内容用空格分开,即以单词为单位将文本分开,将单词存到list列表中,使用dict.fromkeys(list,0)方法将列表转换成字典&…

用Python统计中英文词频

本设计基于Python3.6实现中英文词频统计功能 英文词频统计 统计哈姆雷特英文版,txt格式文件地址: hamlet.txt 思路分析: 获取文件中词汇转换为统一格式,如小写或者大写切割词汇循环遍历进行统计打印输出 代码如下&#xff1…

WordCount词频统计

WordCount词频统计 from educoder实训 实训项目地址:https://www.educoder.net/shixuns/aekgf6pz/challenges 本关任务 词频统计是最能体现MapReduce思想的程序,结构简单,上手容易。 词频统计的大致功能是:统计单个或者多个文…

WordCount单词统计笔记

1.在本机的/root目录下,依次创建文件夹data,文本文件word.txt. mkdir -p /root/data vim /root/data/word.txt键入i,进入编辑模式,输入如下内容: hello world hadoop hdfs qingjiao hadoop hongya hdfs qingjiao qingjiao hadoop hongya键入…

用python统计你的文章里每个英文单词的数量

p i heared a story about you #你的文章段 linesp.strip().split(\n) words_cnt{} for line in lines:lineline.replace(,,).lower() #逗号都用英文状态的wordsline.split( ) #括号里面的单引号里有空格for word in words:words_cnt[word]words_cnt.get(word,0)1 words_lstl…

Python实现统计文本当中单词的数量,

这是阿里巴巴2016年的一道面试题: 统计英文文章中单词出现的次数,并且输出出现次数的前10个单词 文本如下: Accessing Text from the Web and from Disk Electronic Books A small sample of texts from Project Gutenberg appears in the …

wordcount单词词频统计

单词出现的总次数 1、WordCount概述 WordCount算是大数据计算领域经典的入门案例,相当于Hello World。 虽然WordCount业务极其简单,但是希望能够通过案例感受背后MapReduce的执行流程和默认的行为机制,这 才是关键。 2、WordCount编程实现…

Python实现统计文本中各单词数量

Python实现统计文本中各单词数量 代码运行结果 代码 import strings not talk,not helo show me your code hello helo for i in s:变例s中的字符,如果属于标点符号则替换成空格if i in string.punctuation:s s.replace(i, ) # print(s) lst s.split() # s被空…

华为机试—统计单词个数(map)

输入n个单词&#xff0c;统计各个单词出现的个数 #include <iostream> #include <map> #include <string> using namespace std;int main() {map<string,int> k;string word;while(cin>>word)k[word];for(map<string,int>::iterator ik.be…

[云炬python3玩转机器学习] 5-7,8 多元线性回归正规解及其实现

08 实现我们自己的 Linear Regression import numpy as np import matplotlib.pyplot as plt from sklearn import datasets import datetime;print("Run by CYJ,",datetime.datetime.now()) Run by CYJ, 2022-01-20 20:06:04.130127 boston datasets.load_boston()…

手机号验证码登录的思路

引言 当前很多web端的应用登录方式主要分为以下几种&#xff1a; 账号密码登录手机号验证码登录扫码登录 这里我主要说一下我对于手机号验证码登录的思路&#xff0c;如果有遗漏或者差错的地方&#xff0c;请指正&#xff1b; 整体流程 大致流程如下&#xff1a; 大致就是…

手机验证码登录,账号登录结合

本项目基于腾讯外包框架&#xff08;wei框架&#xff09; 地址&#xff1a;https://github.com/twinh/wei/tree/master/docs/zh-CN#wei HTML页面&#xff1a; 【基于bootstrap前端框架】 头部&#xff1a;<ul id"js-reset-tabs" class"nav tab-underline…

手机号验证登录用例

手机号验证登录 1.手机号验证登录是我们现在比较常见的登录方式&#xff0c;下面分享一下基本的用例的编写。能帮助您是我的荣幸&#xff0c;不喜勿喷&#xff0c;谢谢&#xff01;

手机号验证码登录

登录入口 1.app 正常登录入口 2.app 网页登录&#xff0c;比如分享直播卡片时&#xff0c;进入直播间需要先进行登录 3.pc 登录 一&#xff0c;app常见的登录方式 1.手机号验证码登录 2.用户名密码登录 3.一键登录 二&#xff0c;手机验证码登录示意图 三&#xff0c;流…

chatgpt赋能python:Python代码的快捷键:让编程速度更加快速高效

Python代码的快捷键&#xff1a;让编程速度更加快速高效 Python是一种面向对象、直译式计算机程序设计语言&#xff0c;备受程序员喜爱。虽然Python本身已经趋于简洁易读&#xff0c;但使用Python代码编辑器的快捷键可以进一步提高编程效率&#xff0c;帮助合理利用时间。 为…

chatgpt赋能python:Python实现滚动小球

Python实现滚动小球 Python是一种高级编程语言&#xff0c;可以用于开发各种类型的应用程序。在此我们将介绍如何使用Python编写代码实现滚动小球。这个小球会在屏幕上滚动&#xff0c;给用户一个视觉效果。 实现滚动小球的Python代码 import pygameBLACK (0, 0, 0) WHITE …