为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

基于Android的社交分享平台的设计_学士学位论文

2019-01-22 20页 doc 7MB 20阅读

用户头像 个人认证

不系舟红枫

从教近30年,经验丰富,教学水平较高

举报
基于Android的社交分享平台的设计_学士学位论文 学 士 学 位 论 文 基于Android的社交分享平台的设计 姓 名: 学 号: 指导教师: 学 院: 信息科学与工程学院 专 业: 计算机科学与技术 完成日期: 摘 要 现在社会信息量不断增加、社会关系复杂变化,随着移动终端智能化和多媒体化的趋势,传统的社交分享平台已经不能够满足人们的需求。目前,Web 2.0成为人们时常谈起的话题,Web 2.0时代最主...
基于Android的社交分享平台的设计_学士学位论文
学 士 学 位 论 文 基于Android的社交分享平台的设计 姓 名: 学 号: 指导教师: 学 院: 信息科学与学院 专 业: 计算机科学与技术 完成日期: 摘 要 现在社会信息量不断增加、社会关系复杂变化,随着移动终端智能化和多媒体化的趋势,传统的社交分享平台已经不能够满足人们的需求。目前,Web 2.0成为人们时常谈起的话题,Web 2.0时代最主要的特征就是每个信息内容的提供者也是是信息内容的读者。在Web 2.0时代,社交分享类网站是具有突出特点的一项网络服务。Android平台的开源优势和具有强大功能的智能手机还将像电脑一样成为互联网的终端,可以向外界提供服务,使信息交流和资源共享实现了同步化、及时化和便捷化,日益受到大众的欢迎。所以本论文选择基于Android的社交分享平台的做为毕业设计研究方向。 基于Android的社交分享平台是利用Java语言作为开发语言,以MySQL数据库作为后台数据库,Tomcat作为Web应用服务器,是一套完整的集客户端、服务器端和数据库为一体的社交分享平台。本系统由十大模块组成,分别是Web端模块、登录和注册模块,个人中心模块,查看联系人模块,管理日志模块,管理相册模块,搜索用户模块,好友主页模块和服务器端模块。本文主要阐述了基于Android的社交分享平台的各个模块的需求分析,可行性分析,详细设计过程等内容。 对基于Android的社交分享平台的研究和开发将有助于社交分享平台适应现在交流平台移动化,便携化的趋势,有助于社会科技创新水平的提高。 【关键词】社交分享;服务器;安卓;MySQL;移动化 Abstract Now, the social information amount increases ceaselessly and social relations changes complexly along with the mobile terminal intelligent and multimedia trend, the traditional social sharing platform has not been able to meet the needs of the people. At present,the main feature in Web 2.0 age is that each information content providers is also the reader of the information content. the social sharing sites is the most iconic network service in Web 2.0 age. The Android platform's open source advantage and that powerful intelligent mobile phone will also like computer as the Internet terminal which can be supplied to the outside service, make the information exchange and sharing of resources synchronously, timely and conveniently, these characteristics are increasingly popular among people. So this thesis choose social sharing platform based on Android as the direction of my graduate design. Social sharing platform based on Android which use Java language as development language, MySQL database as a background database, Tomcat as the Web application server, is a complete set of client, server and database as one of the social sharing platform. The system consists of ten modules, respectively is the Web module, logining and registering module, the individual center module, seeing contact person module, managing diary module, managing albums module, user searching module, friends-page module and server module. This paper mainly expounds the social sharing platform based on Android for each module of the needs analysis, feasibility analysis, detailed design process etc. The research and development for social sharing platform based on Android will contribute to the social sharing platform adapted to communicating platform mobile, portable trend, but also can contribute to the social improvement of science and technology. And this will be to the vast number of businesses to bring more business opportunities and profits. 【key words】social sharing; server; Android; MySQL; mobilize 目 录 1 第1章 绪 论 11.1 研究背景 21.2 国内外研究现状 21.3 前景意义 31.4 系统特征 31.5 论文组织结构 4 第2章 系统相关技术概述 42.1 Android移动平台简介 42.2 Tomcat服务器简介 52.3 MySQL数据库 52.3.1 MySQL数据库简介 62.3.2 MySQL数据库安装与配置 72.4 Eclipse简介 72.4.1 Eclipse简介 92.4.2 Eclipse集成开发环境的搭建 112.5 本章小结 12 第3章 系统分析 123.1 可行性分析 123.2 需求分析 143.3 本章小结 15 第4章 概要设计 154.1 项目规划 164.2 系统功能结构图 194.3 本章小结 20 第5章 系统详细设计 205.1 设计目标 205.2 数据库设计 205.2.1 概念结构设计 255.2.2 逻辑结构设计 285.3 Web端功能的实现 295.3.1 Web端登录、注册模块的实现 315.3.2 Web端查看和管理日志模块的实现 315.3.3 Web端查看和管理相册模块的实现 325.3.4 Web端个人中心模块的实现 335.4 服务器端的设计与实现 365.5 Android端功能的实现 365.5.1 Android端登陆注册模块的实现 375.5.2 Android端个人中心模块的实现 385.5.3 Android端快速发布模块的实现 415.5.4 Android端相册管理模块的实现 425.5.5 Android端日志管理模块的实现 435.5.6 Android端查看联系人模块的实现 445.5.7 Android端搜索用户模块的实现 455.5.8 Android端好友主页模块的实现 465.6 本章总结 47 第6章 系统测试 476.1 系统测试目的 476.2 系统测试结果 476.2.1 服务器连接测试 476.2.2发布日志测试 486.3 本章总结 49 第7章 系统总结与展望 497.1 总结 497.2 展望 52 致 谢 第1章 绪 论 1.1 研究背景 Web 2.0是当下的非常热门的话题,Web 2.0是相对Web 1.0而言的,是新一类互联网应用的统称,是一次从核心内容到外部应用的革命。具有更丰富内容、更广泛联系性、更强工具性的Web 2.0互联网模式的发展逐渐代替简单通过网络浏览器浏览HTML网页的Web 1.0模式,已经成为互联网新的发展趋势。广大用户集体智慧和力量主导的互联网体系[1]。将互联网的掌控权交还给个人是Web 2.0发展的内在的动力而这一内在动力能够充分发掘个人的积极性,极大解放个人的创作和贡献的潜能,进而提升互联网的创造力。在未来的网络中,以人为本的社交分享平台将会获得更多的青睐。然而随着社会节奏的加快,社会信息量大增,人们需要及时准确的获得所需信息,而此时安卓智能手机的普及就让社交分享移动化便携化成为可能,人们的需求得以满足。现在人们的交往时间减少,或由于心理因素难以进行正常交往,而为了维持正常的情感需求,人们便开始诉诸于这种社交分享[2]。 目前流行的Android系统,不仅拥有低廉的成本还具有流畅的用户体验,开放性较强,现在已成为世界上增长最快的智能手机平台而且有Android Market和众多第三方应用商店做后盾,具有非常丰富的应用资源。Android操作系统的开发公司Google能够给开发者提供开发工具,帮助开发者能紧密集成第三方应用社交技术的应用程序和框架。所以选择Android作为应用平台是有现实意义的。 随着无线网络、智能移动终端和社交网络的普及,互联网正快速演变更加深刻地影响着人们的生活和运行方式,各种网络应用都在中国快速发展,社交网络的发展引人注目,约有一半以上的中国网民通过社交网络沟通交流,越来越多来自世界各地的人通过社交网络分享信息;移动互联网、移动智能终端的迅速普及,带来了许多新的互联网业务,使互联网内容服务更加丰富多彩。 移动社交分享则是一场新的网络社交革命[3]。07年底,全球手机用户人数超过33亿,远远大于目前还不足13.5亿的互联网用户人数。庞大的手机用户群为移动社交分享业务由于巨大的手机用户群而有了无限的发展空间,手机逐渐成为个人信息处理中心,互联网从PC到手机的趋势正在加速。Web 2.0时代的焦点业务必将是移动社交分享业务。 1.2 国内外研究现状 当前国外移动社交分享业务的存在方式主要有三种:第一种是移动运营商与移动社交分享业务的提供商合作,主要是以WAP网站方式实现的;第二种是终端制造商通过内置或软件升级的方式,利用其智能终端提供移动社交分享功能;第三种是移动运营商在其移动网络平台上引入当下流行的在线社交分享网络,提供其移动版本。 上百家社交分享网站或平台在全球活跃着,都拥有着大量的忠实粉丝,美国、欧洲、韩国和日本是主要分布地。目前,全球移动社交分享平台的用户规模有300万,61%是30岁以下的,究其原因,促进移动社交分享用户大爆发的是人们强烈的分享信息的欲望。 目前,例如人人网、开心网的SNS网站和例如新浪、搜狐、网易、腾讯等等的微博,共同构成了中国社交网络的新规格,加上日渐广泛与深入的无线互联网应用,社交网站用户在手机上的SNS应用需求越来越大。调查数据显示,09年有50%的社交网站用户期望可以在手机上使用社交分享服务。同年,我国手机网民规模已达1.8亿。 2011年,安卓手机的使用人数急剧上升而且在市场占有率方面成绩显著。2012年三月,在美国市场,安卓系统的占有量排名第一。同年十二月,安卓市场下载量达到100亿。 要注意的是无论国内国外,虽然社交分享网站不乏存在者,且能运行良好,但都是基于网页浏览的形式,将其发展到手机客户端的还仅是少数,而现在智能手机相当普及,安装卸载应用方便简单,在中国仅是几个大网站涉及到,并且都是在原先已建成的网站上建立起来的,真正独立发展起来的基于Android的社交分享平台是没有的,亦或是还不够壮大。 1.3 前景意义 基于Android的社交分享系统改变了传统基于电脑进行社交和共享信息的方式,使信息发布和信息获取随时随地进行,改善了电脑上进行操作所带来的不便,减少了人们精力和时间的浪费。用户可以将身边的各种新鲜事和心灵火花在第一时间发布到网上,其他人可以查看和评论,体现出的即时性快捷性甚至超过了传统的其它任何媒体。 本系统改变了以往的金字塔形的信息传播形式,终端用户即时信息的接受者,也是信息的传播者。用户可以在海量的数据中根据自己的喜好去关注或者跟踪喜好的信息。 1.4 系统特征 基于Android的社交分享平台,让用户可以通过电脑网页端和安卓智能手机端登录平台,对自己的主页进行操作。系统的目的主要是为用户提供一个信息发布和信息共享的平台。 事实上,用户通过浏览器访问Web服务器时享受到的功能,与通过Android手机端访问服务器时享受到的功能大体相同。第一次使用社交分享平台的用户需要先注册,通过注册服务获得登录号码,再登录自己的个人中心。基于Android的社交分享系统让用户可以更新自己的心情,发编辑删除日志,拍照、上传照片并设置访问权限,还可以通过昵称关键字简单搜索其他用户,查看自己的好友列表和最近访问列表,并查看他们的主页。 基于Android的社交分享平台采用Eclipse集成开发平台进行系统的开发,采用Android手机模拟器对程序运行的Android平台进行模拟,用Tomcat作为服务其端处理用户提出的请求并作出应答并连接MySQL数据库。 1.5 论文组织结构 本论文共分七章。论文的第1章为绪论,这一章主要讲述了基于Android的社交分享平台的研发背景、国内外研究现状、前景意义和系统结构。第2章则重点介绍了开发社交分享平台所用到的技术背景,主要介绍了Android平台、Eclipse开发环境、Tomcat服务器、MySQL数据库等基础知识。第3章是在前两章的基础上对社交分享平台进行的系统分析,主要从可行性及系统的需求两个方面进行的分析。可行性分析从目标方案,技术、经济、操作三个方面分析确定了系统开发的作用意义。而需求分析则确定了系统具体应该实现的功能。为以后的开发打好基础。论文从第4章开始介绍开发社交分享平台的详细过程,主要包括系统的概要设计,详细设计、系统测试。论文的最后一章是我对自己毕业设计的总结与展望。 第2章 系统相关技术概述 2.1 Android移动平台简介 Android狭义上说是一种在Linux系统上发展起来的手机操作系统,广义上说Android不仅指操作系统它还包括用户界面和应用程序。Android与其他手机操作系统的最大区别在于Android是开源的,所以移动终端开发商不必忌惮专有权等问题,这也极大促进了整个移动产业的创新。Android平台上面是虚拟机,虚拟机上面就是运行着的众多应用程序,这些应用程序地位平等。虚拟机是手机硬件与上层应用程序之间的信使,所有Android应用都必须运行在虚拟机之上。许多手机系统上固件的应用是无法更改和删除的,而Android一大特点就是固件是可以刷新的,如果对原有的短信应用亦或是音乐播放器不满意,可以用其他应用程序替代,这也极大满足了大众个性化的使用需求[4]。程序间没有你我之分,可以互相调用,应用程序可以访问系统功能,也可以被另一个程序调用,负责网络通信的程序可以与Internet交换数据,日历程序则可使用网络通信程序更新自己的日历。定位程序则可以与网络通信程序合作定位使用者的位置。我们都知道Android是Google旗下开发的,Google地图发展的已相当成熟,这极大方便了Android开发手机地图应用,其他系统的手机开发地图应用是繁琐困难的,而Android系统只需要在应用程序中添加几行代码就可以了。Android是一个真正意义上的开放性移动平台,运行在虚拟机上的全部应用程序都是平等的,打破了程序间的界限,不管对于使用者还是开发者都是方便快捷的。Android在众多手机系统百花齐放的市场中占据着不可替代的位置,Android的前景无限。 2.2 Tomcat服务器简介 Tomcat服务器与Android和MySQL一样也是开源的、免费的,由Apache和Sun公司共同开发的Tomcat作为一个Web应用服务器隶属于Apache旗下,是JaKarta项目中的一个核心项目,不过,Apache处理静态HTML的能力要强于Tomcat[5]。不仅由于Servlet和JSP规范在Tomcat中的体现加强,还由于Tomcat技术先进,性能稳定、可靠、效率高,因而Tomcat服务器受到大量Java开发者支持这也是其成为目前比较流行的Web应用服务器的原因之一。 Tomcat服务器的功能是处理HTML页面的并作为JSP/Servlet容器。Tomcat中的应用程序是WAR(Web Archive)格式的,WAR格式文件是Sun提出的一种Web应用程序格式,是许多文件的一个压缩包。WAR文件中包含HTML文件、JSP文件和一个WEB-INF目录。WEB-INF是一个很重要的文件,它包含着应用配置文件web.xml和编译好的Servlet类。如果项目中有引用其他类则打包成JAR文件,则也放在WEB-INF文件下。在Eclipse下当需要引用其他类时则右击项目文件选择Buildpath,选择libraries添加需要的JAR文件。写好的JSP应用如果是第一被访问则会经历一个转化过程,将JSP转化为Servlet再进行编译。在以后访问JSP应用时就不必再转化编译了。Tomcat支持与MySQL同过JDBC进行连接。 Tomcat服务器除了以上功能还有一些特有功能,它可以对平台、安全域和Tomcat阀进行管理和控制等。一方面Tomcat服务器运行时占用的系统资源少且支持邮件服务,另一方面Tomcat是一种开源免费功能完善的轻量级Web应用服务器,现已成为许多企业开发JavaWeb应用的首选服务器,而且Tomcat还在不断改进和完善中,这也促使很多对Tomcat感兴趣的开发者可以更改增添其所需的功能。Tomcat中的Servlet是一种运行在支持Java语言的服务器上的动态加载的模块。Servlet的作用是用来扩展Web服务器的功能,响应客户端的请求并作出应答。因为Servlet的运行完全依赖Java虚拟机,所以Servlet运行在服务器端而与浏览器无关。Apache与Tomcat的区别在于Tomcat虽是Apache的扩展(Apache是用来相应HTML页面访问请求的)但Tomcat可以独立于Apache,例如在启动Tomcat后,Tomcat就作为JSP和Servlet的容器,而Apache就用来相应HTML页面,但是由于Tomcat是个轻量级的服务器,所以只能用在中小型系统和并发访问用户不多的情况下。 2.3 MySQL数据库 2.3.1 MySQL数据库简介 MySQL是一个开源的SQL数据库服务器,它简单、易用、通用的特点是大多数人使用它的原因。所熟知的雅虎、Google、新浪、Finance、MP3.com、摩托罗拉、美国国家航天局、SGI、网易和德州仪器等Web站点,使用的都是MySQL;MySQL与大型商业数据库Oracle一样,具有数据库系统的通用性。数据库顾名思义是一个存放数据的地方,而这些数据是更加结构化的联合体,支持结构化的查询语言。显然如果只是存取这些数据还不够,我们还需要对其进行增删改等操作,这就需要一个管理系统,MySQL就提供了这样一个数据库管理系统DBMS。由于关系型数据库的优越性,MySQL不可忽略的还需要是一个关系型数据库。MySQL支持C/S架构,Tomcat是多线程的,MySQL是多用户、多线程的,所以能够很好的实现多线程应用。MySQL Query Browser 是MySQL提供的用于数据浏览的工具,它能够方便使用者查询数据表和数据,提供查询界面执行SQL语句。 总体说来,MySQL是一个低成本、高性能、免费的、支持多线程的、健壮的数据库支撑系统,是一款非常优秀的自由软件,所以MySQL特别适宜一些中小企业用来开发应用,它已是世界上最流行的数据库之一。 2.3.2 MySQL数据库安装与配置 MySQL数据库安装与配置主要有以下几步: 第1步:安装MySQL。 到www.mysql.com下载zip压缩安装包,将下载后的文件解压到一个目录,如解压到C:\Program Files\MySQL下。 第2步;启动MySQL服务。 安装MySQL后,打开DOS命令窗口,进入C:\Program Files\MySQL\MySQL Server 5.5\bin目录下,运行命令:mysqld -console 或者,将该命令放到一个批处理文件中,双击该批处理文件即可启动MySQL的服务。 第3步:测试MySQL连接。 打开DOS命令窗口,进入C:\Program Files\MySQL\MySQL Server 5.5\bin目录下,输入命令mysql -uroot -p,回车后会出现几行提示信息并出现提示符号如图2-1所示。 图2-1 MySQL连接成功的提示 为了方便操作MySQL的数据表和数据,我安装了MySQL Query Browser。到www.mysql.com下载安装包默认安装即可。安装后启动界面如图2-2所示。 图2-2 MySQL Query Browser启动界面 该界面中需要填写主机名、端口号、用户名和密码,但是这里需要默认填写一个数据库的名称,例如填写sjfx,设置完成后单击OK按钮,即可打开主页面,如图2-3所示。 图2-3 MySQL Query Browser主界面 该主界面的主窗口是查询的结果集。右侧显示所有的数据库及其数据表,单击即可查询;也可以在上方直接输入SQL语句进行查询。 2.4 Eclipse简介 2.4.1 Eclipse简介 Eclipse类似于JBuilder、NetBeans是一个集成开发环境,不过与NetBeans一样,Eclipse也是开源的,这样任何人可以根据自己的功能需要开发自己的Eclipse功能插件或扩展原有插件。在如今市场上各种集成开发环境竞相涌现的情况下,由于Eclipse操作、管理和界面的统一性加之其开源性,使其具有无限的发展空间。 Eclipse有一个逐步进化的过程,它原是IBM和OTI两家公司共同开发研制的,后来IBM将源码捐出,这才开始了Eclipse不断完善的进程。最早的是1.0版本,完全可以说是一个Java集成开发平台;接着是2.x版本,这时Eclipse变为一个可扩展的集成平台,移植性加强;随着互联网应用和Web应用的更新换代,用户本身出现了新的需求,这就都带来了富于个性化的Eclipse 3.x[6]。 随着开放灵活的Eclipse的流行,用有越来越多基于Eclipse开发的应用。Eclipse最大的特点是作为基于插件的开放的、可扩展的平台,所谓插件就是应用软件,他们在Eclipse架构中相互提供支持。如图2-4所示。 图2-4 Eclipse体系结构图 Eclipse由工作台、插件开发环境、富客户平台、Java开发环境和其他插件组成。Eclipse工作台位于体系结构的核心,它由平台运行时、工作空间、工作台、帮助、调试、团队等构成,平台运行时又是Eclipse平台的的核心。平台运行时是插件的核心引擎,位于平台核心中最低级别的部分,相当于一个微内核。平台运行时由org.eclipse.osgi和org.eclipse.core.runtime两个插件构成[7],其他插件的安装运行都是基于这两个插件的。Eclipse体系结构除了核心部分剩下的是用户界面。Eclipse的视图、菜单栏、编辑器、工具栏由WorkBench控制。SWT是处理高级用户界面编程任务和操作的小部件。JFace是架设在SWT上的高级用户界面部件库。如果把Eclipse比喻成一条即插即用的总线,那插件的扩展点我们可以称其为插槽,余下的的部件则是插件。当我们对Java代码进行编辑、查看、编译、调试、运行操作时,我们实际上用到的是JDT。如果我们想要创建自己的模板代码,PDE会帮助创建模板代码,同时它还为Eclipse提供了一个完整的开发测试插件的环境[8]。 2.4.2 Eclipse集成开发环境的搭建 由于Eclipse仅是一个集成开发平台,本身并不包含语言编译器,因此需要先安装Java开发工具包(JDK)。 1. 登录Oracle官方网站进行下载后安装到默认目录下即可。 2. 右击我的电脑图标,一次选择属性—高级—环境变量命令,在系统变量中添加JAVA_HOME变量,值为D:\jdk1.6.0_07。设置path变量值为%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;C:\windows\system32\; 由于需要开发Android程序我们还需要在Eclipse上安装Android SDK。 3. 登录Android官方网站,在http://developer.android.com下载版本对应的SDK安装包。 4. 将SDK解压,的和值环境变量参数,系统变量path值为E:\android-sdk_r18-windows\android-sdk-windows\tools 5. 登录Eclipse的官方网站,下载适用版本的Eclipse。网址为:http://www.eclipse.org/downloads/。 6. 将下载的Eclipse解压,双击eclipse.exe安装并打开Eclipse。 在线安装ADT。此步骤需联网并根据网速不同会消耗比较长的时间,需耐心等待[9]。 7. 在Install界面中单击Add按钮,在Name中可输入任意名字,在Location中输入:http://dl-ssl.google.com/android/eclipse/如图2-5所示。 图 2-5 安装ADT 8. 在Install界面选中Developer Tools并单击Next按钮。耐心等待安装完后,在弹出的界面中,直接单击Finish按钮,重启Eclipse,完成ADT的安装。 9. 打开Eclipse后,在Window菜单中选择Preferences。 10. 打开Preferences界面,选择Android—Browse,添加到SDK路径,单击OK,如图2-6所示。 图2-6 browse界面 11. 接下来需要创建和运行Android模拟器,才能进行Android开发。打开Eclipse后,在工具栏中单击Opens the Android SDK and AVD Manager按钮,如图2-7所示。 图2-7 Opens the Android SDK and AVD Manager按钮 12. 打开Android SDK and AVD Manager窗口后单击New按钮,弹出Create new Android Virtual Device(AVD)对话框,在第一栏中输入模拟器的名字。Target选择Android2.1 —API Level7,设置模拟器的版本为Android2.1.SD Card中Size设置为30,即创建30MB的SD卡。在Built-in中选择分辨率,默认分辨率为HVGA,如图2-8所示。 图2-8 AVD创建 配置完成后,单击Create AVD按钮,然后返回到Android SDK and AVD Manager界面,之后选中刚刚创建的模拟器,单击Start按钮,耐心等待一段时间后,运行模拟器,至此,Eclipse集成开发环境搭建完毕[10]。 2.5 本章小结 本章主要讲述了基于Android的社交分享平台的设计与实现制作过程中用到的主要技术。为了完成系统的开发,我使用了集成开发工具Eclipse、系统开发语言Java、后台数据库MySQL和Web服务器Tomcat。 第3章 系统分析 3.1 可行性分析 社交分享平台非常具有现实意义,可以从以下三个方面进行可行性分析: 1. 技术可行性。Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言同时Android手机运行的程序是用Java语言编写的,因此用Java开发该程序是可行的[11]。而Eclipse中的Android手机模拟器插件,让开发的系统可以再其上进行功能测试。Tomcat作为服务器端接受和处理Web端和Android端发来的请求并对MySQL数据库进行操作,最后返回处理结果给用户端。 2. 经济可行性。Eclipse,Tomcat,MySQL都是免费的开源的,不需要购买和注册。同时开发所需的人力物力财力可控,而一旦推广开来能够但来不菲的收益。 3. 操作可行性。Android手机现已普及,触点可控操作容易上手,有经验没经验的人都会很快的能够学会使用。而Eclipse具有可视化的操作界面,MySQL可采用MySQLQueryBrowser对数据库进行可视化操作,所以操作方便可行[12]。 基于Android的社交分享平台可以改变传统在家上网发布信息和信息获取的习惯,开拓出一条随时随地更换心情状态、发表日志照片的新路子。更贴近生活,极大的改变了人们的生活习惯,提高了效率,顺应了移动终端化的潮流[13]。 3.2 需求分析 基于Android的社交分享平台为提供一个信息发布和信息共享的平台,使用这经由浏览器访问Web服务器时享受到操作和功能与经由安卓手机端访问服务器时相差无几,主要包括如下几点: 1. 用户注册,为初次使用本系统的用户提供注册服务。 2. 用户登录,让已注册用户登录平台。 3. 更新心情,用户可以更新自己的心情,改心情对其他好友是可见的。 4. 上传图片,对登录用户提供上传图片的功能,上传的图片放在个人的相册,上传的头像可供所有用户使用。 5. 管理相册,可以创建相册,并向已有的相册上传图片,同时还可以对已有相册进行不同的访问权限设置。 6. 搜索用户,用户可以通过昵称关键字简单的搜索其他用户,在Web端可以将搜索到的陌生用户添加为自己的好友。 7. 查看好友列表和最近访客,用户登录后可以查看自己的好友列表和最近访问过自己的用户。 8. 访问其他用户主页,用户可以访问自己的好友或访问过自己的人,也可以通过搜索来访问更多的用户。 9. 拍照上传,该功能为Android手机端的特有功能,用户可以在应用程序中调用手机的照相机程序拍照并将其上传到服务器中用户的指定相册。 根据对系统的分析,画出系统的用例图,如图3-1所示。 图3-1 系统用例图 用户要想进入个人中心必须拥有账号,通过注册可以获得账号。进入个人中心后,可以查看联系人、搜索用户、查看管理日志相册、快速发布等。管理日志包括查看、编辑、删除和评论。管理相册包括查看、删除、修改权限和评论。快速发布包括发布日志、发布心情和拍照上传。用户可以选择需要的功能进行操作。 根据对系统的分析,画出系统的流程图如图3-2所示。 图3-2系统流程图 用户要使用基于Android的社交分享平台必须要成功登录,或者成功注册,登录后会自动跳转到个人中心,可以选择退出或继续操作,若是继续操作,可以从个人中心选择相应的选项卡,在各选项卡下进行操作。 3.3 本章小结 本章讲述了开发基于Android的社交分享平台之前对该系统进行的可行性分析和需求分析。系统的可行性分析则主要从技术、经济、操作三个方面进行了分析。对系统的需求分析确定了系统需要的基本功能。 第4章 概要设计 4.1 项目规划 基于Android的社交分享平台主要包括网页端和安卓端两个部分,而主要工作在Android端。社交分享平台主要是为用户提供一个信息发布和信息共享的平台,在这个平台上用户可以发布心情、发布日志和照片并查看好友主页等等。 1. 系统模块构成 系统模块主要由以下几个构成: (1) Web端平台的实现 (2) 服务器端的实现 (3) Android端登录和注册模块的实现 (4) Android端个人中心模块的实现 (5) Android端快速发布模块的实现 (6) Android端查看联系人模块的实现 (7) Android端管理日志模块的实现 (8) Android端管理相册模块的实现 (9) Android端搜索用户模块的实现 (10) Android端好友主页模块的实现 2. 本系统的运行环境 (1) 硬件环境 CPU:P4 3.0 G以上; 内存:1GB以上; 硬盘:硬盘80G; 手机为Android2.1平台; (2) 软件环境 数据库,MySQL5.1及其以上版本,MySQL功能强大且安装方便,并且支持事务后更增添了数据的完整性及安全。 集成开发环境,Eclipse Java EE IDE for Web Developers 3.5及其以上版本,该版本Eclipse支持EE系统的开发。 Android SDK及其Eclipse开发插件ADT。 JDK1.6及其以上版本。 Web应用服务器,Tomcat6.0及其以上版本。 客户端浏览器,建议使用IE6.0以上版本。 4.2 系统功能结构图 Web端功能结构图,如图4-1所示。 图4-1 Web端功能结构图 Web端功能有用户登录、搜索用户、上传头像、用户注册、修改个人资料、发表日志、上传照片、查看好友和访客、管理相册和管理日志等功能。 登录和注册模块图,如图4-2所示。 图4-2 登录和注册模块图 登录和注册模块由显示登录界面、记住账号和密码、登录、显示注册页面、注册等功能。登录或注册成功之后转入个人中心模块。 个人中心模块图,如图4-3所示。 图4-3 个人中心模块图 个人中心模块有提供用户一个界面,在这个界面上用户选择不同的选项,就会启动不同的功能。也以通过Menu键选择搜索和退出。当用户成功登录后进入的就是个人中心模块。 快速发布模块图,如图4-4所示。 图4-4 快速发布模块图 快速发布模块是个人中心模块下的一个选项卡,通过快速发布模块用户可以快速地发表心情,发表日志和拍摄照片并上传。 查看联系人模块图,如图4-5所示。 图4-5 查看联系人模块图 查看联系人模块是个人中心模块下的一个选项卡,通过选择该选项卡启动该模块的功能,该模块有显示好友列表,显示访客列表的功能。好友列表中的每一个 包括昵称、心情和头像。访客列表中显示头像、昵称和访问时间。单击某个用户,可以访问其主页。 管理日志模块图,如图4-6所示。 图4-6 管理日志模块图 管理日志模块是跟人中心模块下的一个选项卡,通过选择该选项卡,可以启动管理日志模块的服务。包括查看日志、编辑日志、评论日志和删除日志。 管理相册模块图,如图4-7所示。 图4-7 管理相册模块图 个人中心模块下的最后一个选项卡是管理相册模块,该模块的功能是显示相册列表、显示照片、修改相册权限、删除照片、评论照片和创建新相册。 搜索用户模块图,如图4-8所示。 图4-8 搜索用户模块图 搜索用户模块是通过单击Menu键启动的,在该模块下输入昵称,可对注册过的用户进行模糊查询,显示搜索出的好友。可以单击某好友的头像进入其个人主页。 好友主页模块图,如图4-9所示。 图4-9 好友主页模块图 通过好友列表、访客列表或者搜索好友显示出的列表可以启动好友主页模块,该模块包括查看好友主页和查看好友相册功能。 4.3 本章小结 本章主要对系统进行概要设计,该阶段的设计主要是寻找实现目标系统的各种不同的方案,根据需求分析阶段得到用例图、流程图和结构图来设计系统的整体框架。为了最终实现目标,对系统进行了结构设计,得到系统的十大主要模块。 第5章 系统详细设计 5.1 设计目标 基于Android的社交分享平台提供了一个信息发布和信息共享的平台给用户,用户通过浏览器访问Web服务器和通过Android手机端访问服务器时享受到的功能基本相同。 1. Android端的设计目标 (1) 登录功能 (2) 注册功能 (3) 发表日志功能 (4) 管理日志功能 (5) 拍照上传功能 (6) 管理相册权限功能 (7) 查看好友和访客功能 (8) 搜索并访问用户功能 基于Android的社交分享平抬得的Web端比Android端多了添加、删除好友和头像上传功能。Android端的拍照上传功能相比Web端是特有的,但是它不能添加删除好友。 2. Web端的设计目标 (1) 登录功能 (2) 注册功能 (3) 修改个人资料功能 (4) 发表日志功能 (5) 管理日志功能 (6) 搜索用户功能 (7) 上传头像和图片功能 (8) 管理相册功能 (9) 查看好友和访客功能 5.2 数据库设计 5.2.1 概念结构设计 根据上面的设计目标规划出的实体有:用户信息实体、好友关系实体、日志实体、头像实体、相册实体、照片实体、访客记录实体、日志评论实体、照片评论实体、最大编号实体。各个实体具体的描述图下面作出说明。 用户信息实体图如图5-1所示。 图5-1 用户信息实体图 用户信息实体包括用户编号、用户密码、用户昵称、用户邮箱、用户心情和用户头像编号,用户编号设置为自增类型。 好友关系实体图如图5-2所示。 图5-2 好友关系实体图 好友关系实体包括好友关系编号、好友主方、好友客方、好友关系建立的日期,好友关系编号要设置为自增类型。 日志实体图如图5-3所示。 图5-3 日志实体图 日志实体包括日志编号、日志标题、所属用户编号、发布日期和日志内容。日志编号是自增类型的。 相册实体图如图5-4所示。 图5-4 相册实体图 相册实体包括相册编号、相册访问权限、相册所属的用户编号、相册建立日期和相册名称。相册编号也是自增类型的。 照片实体图如图5-5所示。 图5-5 照片实体图 照片实体包括照片编号、照片二进制数据、照片所属的相册、照片描述和照片名称。照片编号也是自增类型的。 日志评论实体图如图5-6所示。 图5-6 日志评论实体图 日志评论实体包括评论编号、评论日期、评论所属的日志编号、评论者编号和评论内容。评论编号也是自增类型的。 照片评论实体图如图5-7所示。 图5-7 照片评论实体图 照片评论包括评论编号、评论日期、评论所属的照片编号、评论者编号和评论内容。评论编号也是自增类型的 访客记录实体图如图5-8所示。 图5-8 访客记录实体图 访客记录实体包括访问记录编号、被访问者编号、访问者编号和访问日期。访问记录编号也是自增类型的。 头像实体图如图5-9所示。 图5-9 头像实体图 头像实体包括头像编号、头像图片的二进制数据、上传者编号和头像的描述。头像编号也是自增类型的。 最大编号实体图如图5-10所示。 图5-10 最大编号实体图 根据以上的实体—属性图,画出全局E-R图如图5-11所示。 图5-11 全局E-R图 5.2.2 逻辑结构设计 1. 数据库模型图 本系统数据库采用MySQL数据库,根据系统功能设计要求,设计本系统数据库模型图如图5-12所示。 图5-12 数据库模型图 2. 基本信息表 (1) 好友关系表friend 好友关系表用于记录具有好友关系双方ID的表,主要包括的字段有用来唯一标识一组好友关系的编号、主人ID、好友ID和日期。具体设计如表5-1所示。 表5-1 好友关系表的结构 字段名 数据类型 字段大小 是否为主键 是否可以为空 f_id u_noz u_noy int int int N/A N/A N/A 是 否 否 否 否 否 (2) 照片表photo 照片表用于记录相册中的相片信息,主要包括字段有照片编号、照片名称、照片描述、照片的二进制数据、照片所属相册。具体设计如表5-2所示。 表5-2 照片表的结构 字段名称 数据类型 字段大小 是否为主键 是否可以为空 p_id p_name p_des p_data x_id int varchar varchar mediumblob int N/A 18 50 N/A N/A 是 否 否 否 否 否 否 否 否 否 (3) 日志表diary 日志表用于记录用户发表的日志,主要包括的字段有唯一标识日志的编号、日志标题、日志内容、日志发布的日期、日志所属用户的ID。具体设计如表5-3所示。 表5-3 日志表的结构 字段名称 数据类型 字段大小 是否为主键 是否可以为空 r_id r_title r_content r_date u_no int varchar text timestamp int N/A 18 N/A N/A N/A 是 否 否 否 否 否 否 否 否 否 (4) 相册表album 相册表用于记录用户相册的相关信息,主要包括的字段有相册编号、相册名称、相册所属用户的ID、相册访问权限、相册创建日期。具体设计如表5-4所示。 表5-4 相册表的结构 字段名称 数据类型 字段大小 是否为主键 是否可以为空 x_id x_name x_access x_date u_no int varchar int timestamp int N/A 18 N/A N/A N/A 是 否 否 否 否 否 否 是 否 否 (5) 用户信息表user 用户信息表用于记录用户的相关信息,主要的字段有:用户ID、用户密码、用户昵称、用户邮箱地址、用户心情、用户头像ID,具体设计如表5-5所示。 表5-5 用户信息表的结构 字段名称 数据类型 字段大小 是否为主键 是否可以为空 u_no u_pwd u_name u_email u_state u_id int varchar varchar varchar text int N/A 16 8 18 N/A N/A 是 否 否 否 否 否 否 否 否 否 否 否 (6) 日志评论表comment 日志评论表用于记录用户对日志的评论,其所主要包括的字段有评论编号、评论的内容、评论者ID、评论所属的日志ID、评论日期。具体设计如表5-6所示。 表5-6日志评论你表的结构 字段名称 数据类型 字段大小 是否为主键 是否可以为空 c_id c_content u_no r_id c_date int text int int timestamp N/A N/A N/A N/A N/A 是 否 否 否 否 否 否 否 否 否 (7) 照片评论表p_comment 照片评论表用于记录用户对照片的评论,其所主要包括的字段有评论编号、评论的内容、评论者ID、评论所属的照片编号、评论日期。具体设计如表5-7所示。 表5-7 照片评论表的结构 字段名称 数据类型 字段大小 是否为主键 是否可以为空 c_id c_content u_no r_id c_date int text int int timestamp N/A N/A N/A N/A N/A 是 否 否 否 否 否 否 否 否 否 (8) 游客记录表visit 游客记录表用于记录每个用户被其他用户访问的情况,主要包括的字段有访问记录的编号、被访问者ID、访问者ID和访问日期。具体设计如表5-8所示。 表5-8 游客记录表的结构 字段名称 数据类型 字段大小 是否为主键 是否可以为空 v_id u_no v_no v_date int int int timestamp N/A N/A N/A N/A 是 否 否 否 否 否 否 否 (9) 头像表head 头像表用于记录用户可用头像相关信息,主要包括字段有头像编号、头像描述、头像图片的二进制数据、头像上传者ID。具体设计如表5-9所示。 表5-9 头像表的结构 字段名称 数据类型 字段大小 是否为主键 是否可以为空 h_id h_des h_data u_no int varchar mediumblob int N/A 40 N/A N/A 是 否 否 否 否 否 否 否 (10) 最大编号表max 最大编号表用于记录各个表中主键的当前最大值,当需要插入新数据时,先取得该表中对应字段值,加1作为新插入记录的编号。具体设计如表5-10所示。 表5-10 最大编号表的结构 字段名称 数据类型 字段大小 是否为主键 是否可以为空 friend_max diary_max album_max photo_max comment_max p_comment_max visit_max user_max head_max int int int int int int int int int N/A N/A N/A N/A N/A N/A N/A N/A N/A 否 否 否 否 否 否 否 否 否 是 是 是 是 是 是 是 是 是 5.3 Web端功能的实现 5.3.1 Web端登录、注册模块的实现 在浏览器的地址栏输入网址后,出现首页界面如图5-12所示。 图5-12 首页界面 右上方是登录注册模块,右下方是好友列表和访客记录列表,需要登录才会有显示。左边那是用来发布日志和发布心情的。若是第一次使用社交分享平台,还没有登录号码,就需要注册一个号码,点击注册出现注册界面如图5-13所示。 图5-13 注册界面 填写上个人信息,由MyServlet接受并处理请求,Register.jsp和MyServlet及DBUtil中的代码共同实现了注册功能,注册成功就会出现一个号码,这就是用户的登录号,此时可以在页面中输入登录号码和密码进行登录。登录后的功能界面如图5-14所示。 图5-14 登录后的功能界面 页面中会显示用户的注入昵称和心情等基本信息,同时还会提供用户好友类表和最近访客的显示,用户可以通过标签浏览。在登录后的页面右边上方中会显示“注销”超链接,单击“注销”超链接,它会向MyServlet发出action为“logout”的请求。主要代码如下: public MyServlet() { super(); protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response);} protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding(CHAR_ENCODING);//设置编码 String action = (String)request.getParameter("action");//获取action System.out.println("MyServlet===== action:"+action); if(action.equals("login")){//action为登录信息 String u_no = (String)request.getParameter("u_no");//读取密码参数 String u_pwd = (String)request.getParameter("u_pwd");//读取密码参数 ArrayList result = DBUtil.checkLogin(u_no, u_pwd);//查询数据库 if(result.size()>1){//如果列表长度大于1,表示登录成功 HttpSession session = request.getSession(); String no = result.get(0);//获得用户的号码 String name = new String(result.get(1).getBytes("ISO-8859-1"),CHAR_ENCODING);/ String email = result.get(2);//获取用户电子邮件 String state = new String(result.get(3).getBytes("ISO-8859-1"),CHAR_ENCODING);/ String hid = result.get(4);//获取用户头像 User user = new User(no, name, email, state, hid); session.setAttribute("user", user);//将用户id加入Session} else{ request.setAttribute("loginResult", result.get(0));} request.getRequestDispatcher("login.jsp").forward(request, response);} else if(action.equals("register")){//action为注册信息 String u_name = (String)request.getParameter("u_name"); String u_pwd = (String)request.getParameter("u_pwd"); String u_email = (String)request.getParameter("u_email"); String u_state = (String)request.getParameter("u_state"); String result = DBUtil.registerUser(u_name, u_pwd, u_email, u_state,"0"); if(!result.equals(REGISTER_FAIL)){//注册成功 User user = new User(result, u_name, u_email, u_state, "0"); HttpSession session = request.getSession(); session.setAttribute("user", user);} request.setAttribute("result", result); request.getRequestDispatcher("register.jsp").forward(request,response);} else if(action.equals("logout")){//action为注销登陆 HttpSession session = request.getSession(); session.setAttribute("user", null); request.getRequestDispatcher("login.jsp").forward(request,response);} else if(action.equals("gotoregister")){//action为注册 System.out.println("hahahahhh"); request.getRequestDispatcher("register.jsp").forward(request, response);}} 5.3.2 Web端查看和管理日志模块的实现 用户登录后的左边有文本框,填上题目就是发布日志,只填内容就是发布心情。用户通过单击“查看日记”超链接,可以查看自己发布过的日记及他人对日志的评论,同时还可以管理自己的日记例如将日记删除或进行编辑,如图5-15所示。 图5-15 编辑日志界面 主要代码如下: //方法:修改指定日志 public static int modifyDiary(String rid,String rtitle,String rcontent){ int result = 0; Connection con = null; PreparedStatement ps = null; try{ con = getConnection(); ps = con.prepareStatement("update diary set r_title=?,r_content=?,r_date=now() where r_id=?"); ps.setString(1, new String(rtitle.getBytes(CHAR_ENCODING),"ISO-8859-1")); ps.setString(2, new String(rcontent.getBytes(CHAR_ENCODING),"ISO-8859-1")); ps.setInt(3, Integer.valueOf(rid)); result = ps.executeUpdate(); }catch(Exception e){ e.printStackTrace();} return result;} 5.3.3 Web端查看和管理相册模块的实现 在左面的页面有“查看相册”超链接,用户单击可以查看自己的相册、创建新的相册、在相册中上传图片、删除图片还能更改相册的权限。相册的权限包括完全公开、好友可见及仅主人可见三种由0,1,2表示,具有特定的访问权限的相册将根据来访者的身份(是否是好友等条件)决定是否向访问者显示该相册。 用户通过单击“上传图片”超链接进入图片上传页面UploadImage.jsp,在图片上传页面,用户可以选择上传的相册或者单击“新建相册”创建一个新相册。选择了一个相册来填写好图片的名称和描述等信息后,单击“浏览”按钮从电脑中选择要上传的图片,单击“确定”俺就即可开始上传。图片上传成功后,用户可以选择继续上传或是返回相册查看图片,查看和管理相册界面如图5-16所示。 图5-16 查看和管理相册界面 主要代码如下: //方法:创建一个相册 public static int createAlbum(String name,String u_no){ int result = -1; Connection con = null; PreparedStatement ps = null; try{ con = getConnection(); ps = con.prepareStatement("insert into album(x_id,x_name,u_no) values(?,?,?)"); ps.setInt(1, getMax(ALBUM)); ps.setString(2, new String(name.getBytes(CHAR_ENCODING),"ISO-8859-1")); ps.setInt(3, Integer.valueOf(u_no));//设置预编译语句的参数 result = ps.executeUpdate(); }catch(Exception e){ e.printStackTrace();} return result;} 5.3.4 Web端个人中心模块的实现 用户还可以修改包括头像在内的个人资料。单击“修改资料”超链接可以打开个人资料修改和更改头像页面,如果用户对当前提供的可更换头像不满意,可以自己上传喜欢的头像并将其设置为自己的头像。用户登录后可以按照昵称搜索特定用户为自己的好友。 用户登录后通过单击“我的好友”和“最近访客”标签可以查看用户的好友和最近的访问者,单击这些联系人的昵称可以访问其主页,访问页面同个人的日志相册管理页面类似,只是不会提供修改、删除等只对主人开放的功能。还可以对好友进行添加和删除。修改资料界面如图5-17所示。 图5-17 修改资料界面 主要代码如下: //方法:修改用户信息(不包括头像) public static int changeUserInfo(String uno,String uname,String uemail,String ustate){ int result = -1; Connection con = null; PreparedStatement ps = null; try{ con = getConnection();//获得连接 ps=con.prepareStatement("update user set u_name=?,u_email=?,u_state=? where u_no=?");/ ps.setString(1, new String(uname.getBytes("GBK"),"ISO-8859-1")); ps.setString(2, new String(uemail.getBytes("GBK"),"ISO-8859-1")); ps.setString(3, new String(ustate.getBytes("GBK"),"ISO-8859-1")); ps.setInt(4, Integer.valueOf(uno));// result = ps.executeUpdate();//执行更新 }catch(Exception e){ e.printStackTrace();} return result;} 5.4 服务器端的设计与实现 在基于Android的社交分享平台的设计中,业务方法DBUtil类可以由Web端服务器以及Android端服务器两个端调用。手机端的服务器和网页服务器是相联系在一切的。Web容器中有监听器的代码,Android端服务器的代码会在Web容器启动时被自动确定,接着在手机端的服务器被启动后,一个服务器套接字会被创建,用来监听特定端口。在创建套接字的同时还需要会启动一个服务器线程负责监听用户的链接,同时,一个专门负责与该客户端进行通信的进程对象在客户端进行连接时要确保能够创建并启动。 第一,在社交分享平台Web端服务器项目中新建有一个继承自ServletContextListener的Java类MyServletContextlistener。代码如下: package wpf; import java.net.ServerSocket; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class MyServletContextListener implements ServletContextListener{ ServerSocket ss = null;//声明ServerSocket对象 ServerThread st = null;//声明ServerThread对象 public void contextInitialized(ServletContextEvent sce){ try{ ss = new ServerSocket(8888); st = new ServerThread(ss); st.start();}catch(Exception e){ e.printStackTrace();}} public void contextDestroyed(ServletContextEvent sce){ try{ st.flag = false; ss.close(); ss = null; st = null; }catch(Exception e){ e.printStackTrace();}}} 第二,新建一个ServerThread.java文件,其文件所在位置与MyServletContextListener相同,其代码如下: package wpf; import java.net.ServerSocket; import java.net.Socket; import java.net.SocketException; public class ServerThread extends Thread{ public ServerSocket ss;//声明ServerSocket对象 public boolean flag = false; public ServerThread(ServerSocket ss){//构造器 this.ss = ss; flag = true;} public void run(){ while(flag){ try{ Socket socket = ss.accept(); ServerAgent sa = new ServerAgent(socket); sa.start();} catch(SocketException se){ try{ ss.close(); ss = null; System.out.println("ServerSocket closed"); }catch(Exception ee){ ee.printStackTrace();}} catch(Exception e){ e.printStackTrace(); }}}} 第三,新建一个ServerAgent.java文件,其部分代码如下: package wpf; import static wpf.ConstantUtil.DIARY_SUCCESS; import static wpf.ConstantUtil.REGISTER_FAIL; ....................//此处省略部分引入相关类的代码 public class ServerAgent extends Thread{ public Socket socket;//声明Socket对象 public DataInputStream din;//声明输入流对象 public DataOutputStream dout;//声明输出流对象 boolean flag = false;//声明线程执行标志位 public ServerAgent(Socket socket){//构造器 this.socket = socket; try { this.din = new DataInputStream(socket.getInputStream());//获得输入流对象 this.dout = new DataOutputStream(socket.getOutputStream());//获得输出流对象 flag =true;//设置线程执行标志位 } catch (IOException e) { e.printStackTrace();}}//方法:线程执行方法 public void run(){ while(flag){ try { String msg = din.readUTF();//接收客户端发来的消息 System.out.println("收到的消息是:"+msg); if(msg.startsWith("<#LOGIN#>")){//消息为登录 .................//此处声明消息类型为登录时的处理代码} ................//此处省略消息类型为其他类别时的处理代码} catch(EOFException eof){ //捕获EOFException try { dout.close(); din.close(); socket.close();//关闭输入、输出流及Socket对象 socket = null; flag = false;//停止线程执行 } catch (IOException e) { e.printStackTrace(); //捕获并打印异常 }} catch (Exception e) { e.printStackTrace();}}}} 5.5 Android端功能的实现 5.5.1 Android端登陆注册模块的实现 登录模块由LoginActivity类实现,登陆界面如图5-18所示。 图5-18 登录界面 该Activity是程序运行后首先被启动的Activity。注册模块由RegActivity实现,注册界面如图5-19所示。 图5-19 注册界面 该Activity从LoginActivity启动。在LoginActivity.java中使用到了MyConnector对象,该类对象的主要功能是与服务器进行通信,MyConnector对象中包含与连接到服务器的套接字,可以通过该套接字连接获取输入输出流进行数据的发送和接收。在登录界面,用户单击“登录”按钮后会调用登录(login)方法与服务器通信进行登录验证。负责与服务器进行通信的是login方法中创建并启动的一个独立线程,这样做可以让程序有更好的交互性和稳定性。如果返回登陆成功的消息,则检查用户是否选择了记住账号密码的选项,如果选择了选项,就调用rememberMe方法记录账号密码,然后启动FunctionTabActivity进入个人中心。如果返回登录失败的消息,则向用户提示登录失败。该功能通过Android平台下的preferences来实现,实现该功能的两个方法RememberMe和checkIfRemember的代码如下: public void rememberMe(String uid,String pwd){ SharedPreferences sp = getPreferences(MODE_PRIVATE);//获得Preferences SharedPreferences.Editor editor = sp.edit();//获得Editor editor.putString("uid", uid);//将用户名存入Preferences editor.putString("pwd", pwd);//将密码存入Preferences editor.commit(); }//方法:从Preferences中读取用户名和密码 public void checkIfRemember(){ SharedPreferences sp = getPreferences(MODE_PRIVATE);//获得Preferences String uid = sp.getString("uid", null); String pwd = sp.getString("pwd", null); if(uid != null && pwd!= null){ EditText etUid = (EditText)findViewById(R.id.etUid); EditText etPwd = (EditText)findViewById(R.id.etPwd); CheckBoxcbRemember=(CheckBox)findViewById(R.id.cbRemember); etUid.setText(uid); etPwd.setText(pwd); cbRemember.setChecked(true); } } 在登录界面如果不进行登录而是单击“注册”按钮,将会启动RegActivity进行注册。 5.5.2 Android端个人中心模块的实现 个人中心模块由FunctionTabActivity实现,该Activity从LoginActivity和RegActivity启动,其继承自TabActivity,主要功能是将用户的功能以选项卡的形式显示到屏幕上。个人中心界面如图5-20所示。 图5-20 个人中心界面 还提供了两个菜单选项:搜索用户和退出程序,含有选项卡的界面,这两项菜单选项通过重写onCreateOptionsMenu方法来创建。主要代码如下: public boolean onCreateOptionsMenu(Menu menu) { menu.add(0, MENU_SEARCH, 0, "搜索") setIcon(R.drawable.search); menu.add(0, MENU_EXIT, 0, "退出") setIcon(R.drawable.exit); return super.onCreateOptionsMenu(menu);} 当按下手机键盘上的"Menu"键时,会弹出这两个菜单选项,onCreateOptionMenu尽在第一次显示菜单时被调用。添加好菜单选项,还需要开发菜单选项中事件的处理代码,这些代码需要写在onOptionItemSelected方法中。选中“搜索”菜单选项后执行的代码,首先创建一个指向SearchActivity的Intent对象,并为其设置Extra属性值,然后通过startActivity方法启动SearchActivity.选中“退出”菜单选项后执行的代码,按下“退出”菜单后将会显示一个AlertDialog,该对话框中提示用户是否确认退出,用户可以单击“确定”或“取消”按钮来选择是否退出应用程序。 5.5.3 Android端快速发布模块的实现 快速发布模块,由PublistActivity实现,从FunctionTabActivity启动。主要的功能是为用户提供发布日志、拍照上传和更新心情的功能选项。拍照上传模块由ShootActivity和UploadActivity实现,前者负责调用Android系统的照相机拍摄照片,后者负责将拍好的照片上传到用户的个人相册中。发布日志模块有PublishDiaryActivity实现,主要功能是让用户编写新日志并发布。更新心情模块由FunctionTabActivity中的AlertDialog对象来实现。PublishActivity、PublishDiaryActivity、ShootActivity及UploadActivity共同协作实现快速发布的功能。在PublishActivity中包含一个ListView,该ListView中显示三个Item:更新心情、发布日志和拍照上传,单击不同的Item将启动相应的Activity或对话框,快速发布日志界面如图5-21所示。 图5-21 快速发布日志界面 点击"发布日志",会启动PublishDiaryActivity,用户在PublishDiaryActivity界面填写好要发布的新日志后,有ServerAgent负责接收消息并进行相应的处理。更新心情模块的开发与发布新日志类似,只是更新心情以对话框的形式而不是Activity的形式呈献给用户,且该对话框属于PublishActivity,更新心情对话框如图5-22所示。 图5-22 更新心情对话框 拍摄照片功能由ShootingActivity实现,该Activity负责调用系统的照相机拍摄照片,拍摄照片界面如图5-23所示。 图5-23 拍摄照片界面 上传照片功能由UploadActivity实现,该Activity有ShootingActivity启动,负责将拍摄的照片上传到服务器。主要代码如下: //方法:连接服务器,发表日志 public void publishDiary(){ new Thread(){ public void run(){ Looper.prepare(); EditText etTitle = (EditText)findViewById(R.id.etTitle);//获得日记标题EditText对象 EditText etDiary = (EditText)findViewById(R.id.etDiary);//获得日记内容EditText对象 String title = etTitle.getEditableText().toString().trim();//获得日记标题 String diary = etDiary.getEditableText().toString().trim();//获得日记内容 if(title.equals("") || diary.equals("")){//如果标题或内容为空 Toast.makeText(PublishDiaryActivity.this, "请将日记的标题或内容填写完整", Toast.LENGTH_LONG).show(); return;} try{ if(mc == null){ mc = new MyConnector(SERVER_ADDRESS, SERVER_PORT); //创建一个Socket连接} String message = "<#NEW_DIARY#>" + title+"|"+diary+"|"+uno; mc.dout.writeUTF(message);//发出消息 String reply = mc.din.readUTF();//接收消息 pd.dismiss(); if(reply.equals("<#DIARY_SUCCESS#>")){//如果日志发布成功 pd.dismiss();//关闭进度对话框 Toast.makeText(PublishDiaryActivity.this, "日志发布成功,请在个人日志中查看", Toast.LENGTH_LONG).show(); Looper.loop();} else if(reply.equals("<#DIARY_FAIL#>")){//如果日志发布失败 pd.dismiss();//关闭进度对话框 Toast.makeText(PublishDiaryActivity.this, "日志发布失败,请稍候重试!", Toast.LENGTH_LONG).show(); Looper.loop();} }catch(Exception e){ e.printStackTrace();} Looper.myLooper().quit();}}.start();} protected void onDestroy() { if(mc != null){ mc.sayBye();//调用MyConnector的sayBye方法 }super.onDestroy();}} 5.5.4 Android端相册管理模块的实现 管理个人相册模块由MyAlbumActivity和AlbumActivity实现,前者负责显示个人相册列表,后者负责显示指定相册中的照片,如图5-24所示。 图5-24 查看照片界面 相册管理包括查看相册列表、修改相册权限和查看相册照片等功能。查看个人相册和修改相册权限的功能是由MyAlbumListActivity实现的。MyAlbumListActivity通过ListView将个人相册名称及“查看”和“修改权限”显示到屏幕上。AlbumActivity中采用Gallery和ImageSwitcher负责显示指定的某张照片。同时AlbumActivity界面还包括一个“返回”按钮和一个只有在查看自己相册时才显示的“删除相片”按钮。用户管理自己的相片和查看其他用户的相册相片时都是通过AlbumActivity实现的,因此在AlbumActivity的代码中会有判断当前是查看自己相册还是他人相册的代码。简单来说,如果启动AlbumActivity时在Intent对象中设置了名为“visitor"的Extra字段,则说明是在浏览他人的相册照片。主要代码如下: public class AlbumListActivity extends Activity{ MyConnector mc = null; ListView lvAlbumList = null; ArrayList albumList;//存放好友相册信息的列表 String [] albumArray;//存放好友相册信息的数组 String uno = null;//存放被访问者的ID String visitor = null;//存放访问者的ID BaseAdapter ba = new BaseAdapter() { public View getView(int position, View convertView, ViewGroup parent) { TextView tv = new TextView(AlbumListActivity.this); tv.setTextSize(20.5f);//设置字体大小 tv.setGravity(Gravity.CENTER); tv.setText(albumList.get(position)[1]);//设置TextView显示的内容 tv.setTextAppearance(AlbumListActivity.this, R.style.title); return tv;} public long getItemId(int position) { return 0;} public Object getItem(int position) { return null;} public int getCount() { return albumList.size();}}; Handler myHandler = new Handler(){ public void handleMessage(Message msg) { switch(msg.what){ case 0: lvAlbumList.setAdapter(ba); break;} super.handleMessage(msg);}}; 5.5.5 Android端日志管理模块的实现 管理个人日志模块由MyDiaryActivity和ModifyDiaryActivity,前者负责显示用户个人的日志,后者负责向用户提供修改日志的功能。该模块的功能是让用户查看、编辑和删除日志。查看日志功能中与服务器进行通信的主要是deleteDiary和getDiaryList方法,这两个方法分别负责删除指定日志和获取个人日志列表。ModifyDiaryActivity的功能是获取指定日志的标题和内容并将其显示到可编辑的EditText控件中供用户丙级。其实现方式与发表日志功能比较类似。,日志列表如图5-25所示。 图5-25 日志列表 主要代码如下: //方法:获取日志列表 public void getDiaryList(){ new Thread(){ public void run(){ try{ mc = new MyConnector(SERVER_ADDRESS, SERVER_PORT); mc.dout.writeUTF("<#GET_DIARY#>"+uno+"|"+"1"); int size = mc.din.readInt();//读取日志的长度 diaryList = null; diaryList = new ArrayList();//初始化diaryLsit for(int i=0;i"+keyword);//发出查询请求 int result = mc.din.readInt();//读取服务器的回复 System.out.println("#### the number of result:"+result); if(result == 0){ Toast.makeText(SearchActivity.this, "对不起,没有找到相关的用户!", Toast.LENGTH_LONG).show(); return;} else{//搜索结果不为空 searchResult = new ArrayList(result);//创建存放查询结果数据的List headArray = new Bitmap[result];//创建头像数组 for(int i=0;i infoList = null; MyConnector mc = null;//网络连接器对象 ListView lv = null; String [] messageHead = {"<#FRIEND_LIST#>","<#VISITOR_LIST#>"}; BaseAdapter baContacts=null; Handler myHandler = new Handler(){ public void handleMessage(Message msg) { switch(msg.what){ case 0: lv.setAdapter(baContacts); break;} super.handleMessage(msg);}}; 5.6 本章总结 本章详细的介绍了系统各个模块的实现过程,首先确定系统共分为十大模块。其次,根据系统功能要求,进行了数据库的设计。最后,分小节详细的介绍了系统各个模块的设计布局与实现过程,主要是功能点与实现逻辑的介绍和简要的重点代码段。 第6章 系统测试 6.1 系统测试目的 测试是能够发现潜在的错误或缺陷,目的是为了查出系统中隐藏的以后可能出现的错误。系统测试能够预防系统在投入运行后发生各种错误,避免给用户带来不好的用户体验。测试需要测试用例,良好的测试用例能够发现至今尚未发现的错误。系统测试存在于开发的各个阶段,各个模块,这样能够防止问题的积累和扩散。在本系统中侧重于软件测试,另外也包括网络测试和硬件测试,这些系统测试能够保证系统的可靠性和健壮性。 系统测试包括黑盒测试和白盒测试。这里主要用到了黑盒测试。 6.2 系统测试结果 6.2.1 服务器连接测试 测试目的:能否正常连接服务器。 测试过程: 1. 在Web端项目中单击右键选择run on server ,tomcat会自动启动,如果成功出现首页面,则说明服务器连接正常。 2. 在Android端项目中右键选择Android Application,会启动模拟器,并出现正确登录界面。 6.2.2发布日志测试 测试目的:系统能否正常发表日志。 测试用例的操作和结果如表6-1所示。 表6-1 测试用例 操作 结果 不输入题目 不输入内容 输入标题和内容 请将标题填写完整 请将内容填写完整 日志发表成功,请在个人日志中查看 1. 不输入标题或不输入内容,点击发表时结果如图6-1所示。 图6-1 缺失标题或内容的提示 2. 输入标题和内容,点击发表时结果如图6-2所示。 图6-2 日志发表成功的提示 6.3 本章总结 本章所介绍的系统测试主要讲述了在系统发布前进行的一项十分重要的工作。我所做的系统测试采用了黑盒测试的方法对系统的各个功能模块进行测试,在这里着重介绍了客户端服务器端测试、发布日志测试。其他功能模块的测试就不再赘述了。 第7章 系统总结与展望 7.1 总结 本论文是基于Java语言开发的社交分享平台,系统的开发环境是Eclipse+MySQL数据库。实现了一个基本功能完善的社交分享平台,程序由十大模块组成,登录和注册模块,个人中心模块,快速发布模块,查看联系人模块,管理日志模块,管理相册模块,搜索用户模块,好友主页模块,Web端模块和服务器端模块。 7.2 展望 经过了五个月的学习和工作,在燕孝飞老师的指导下我终于完成了基于Android的社交分享平台的设计和论文。从开始接到论文题目到设计的实现,再到论文文章的完成,每一步对我来说都是新的尝试与挑战,这也是我在大学期间完成的最大的项目。虽然我遇到了很多困难,可是我最终克服了并顺利完成了毕业设计。不过由于时间和能力所限,在以后可对以下部分进行改进: 1. 网页端的设计。基于Android的社交分享平台是一个立足于Android手机端功能设计的系统,在网页端只是简单的设计了一下,功能相对于安卓手机端是稍微多一些的,不过网页端的工作量先对少一些所以展现出的效果可能不如安卓手机端,就此,在以后可以加强网页端的设计,使其更美观。 2. 手机端个人资料修改。在基于Android的社交分享平台的Android手机端没有资料修改的功能,但是在Web端有这个功能,为了更好的发挥社交分享的功能,有必要在以后的完善过程中在安卓手机端添加个人资料修改的功能。 3. 手机端添加好友。基于Android的社交分享平台只在Web端做了添加好友的功能,为了更好地发挥社交分享平台的功能,同样有必要在以后的完善过程中在Android手机端增添添加好友的功能。 4. 加入广告。在Web端页面还是比较单调的,为了让页面饱满一些,可以在网页两侧加入广告,以上下滚动的方式宣传。当用户登录时,广告管理模块(需要在以后添加的模块)就让手机端就从服务器获取广告信息并显示出来。 毕业设计就此结束,但对这个系统的版本更新与功能完善还将会持续下去。 参考文献 [1] 黄锐,孙娜. Web 2.0环境下SNS的发展策略探析[J]. 商场现代, 2009(07) [2] 余志龙. Google Android SDK开发范例大全王第2版[M]. 北京:人民邮电出版社, 2009.06 [3] 陈晓旺. 基于SNS、电子商务、Wiki结合的区域性社区网络的研究与设计[J]. 桂林理工大学, 2010 [4] 魏化永. 基于3GAndroid的SMS应用研究[J]. 计算机光盘软件应用, 2011(11) [5] 李世川. Java连接MySQL解决方案[J]. 网络与信息, 2011,25(06) [6] 赵玉丽. 基于Eclipse Plug-in技术的Web应用开发平台辅助工具的设计与实现[J]. 东北大学, 2009 [7] 崔群法,王永梅. Eclipse3.0从入门到精通[M]. 北京:电子工业出版社, 2008.05 [8] 张海燕. Java多线程技术在手机联网中的应用[J]. 农业网络信息, 2008(03) [9] 公磊,周聪. 基于Android的移动终端应用程序开发与研究[J]. 计算机与现代化, 2008(08) [10] 罗伟. 基于Android平台的即时通讯系统的研究与实现[D]. 湖南师范大学, 2009 [11] Tony Hillerson. Developing Android Applications with Java[M]. O'Reilly, 2010.04 [12] Android-An Open Handset Alliance Project Code Home[EB/OL]. http://code. google.com/android/what-is-android. html, 2008-01-01/2011-12-20 [13] 何叶,丛亮. SNS网站与移动通信的融合之道[J]. 通信世界, 2009(01) [14] 姚昱旻,刘卫国. Android的架构与应用开发研究[J]. 计算机系统应用, 2008(11) [15] 罗伟. .基于Android平台的即时通讯系统的研究与实现[D]. 湖南师范大学, 2009 [16] Tony Hillerson. Developing Android Applications with Java[M]. O'Reilly, 2010.04 [17] 蓬田宏树.Android手机平台战略的雄心——Google打开潘多拉盒子手机开发面临巨大转变[J]. 电子设计应用, 2008(03) [18] RobiSen,W.FrankAbleson,CharlieCollins. Unlocking.Android[M]. MANNINGPUBN, 2011.01 [19] Dave Maclean,Satya Komatineni. Pro Android3[M]. Apress, 2010.04 [20] Mike Hendrickson,Brian Sawyer. Best Android Apps[M]. O'Reilly, 2010.05 [21] 刘平. Android手机访问服务器的一种数据交互方法[J]. 电子设计工程, 2010(09) 致 谢 经过半年忙碌的学习,我终于完成了本科阶段的毕业设计,这是四年所学知识的集中体现,然而如果没有老师的帮助和同学们的支持,单凭我自己是难以完成的。 在这里首先要感谢我的指导老师燕孝飞老师。作为一个老师,平时需要上课、备课、批改作业已经很忙碌了,但是燕老师总是细心的为我们查找不足提出解决办法,督促我们不断完善修正。在软件开发的各个阶段,从一开始查阅资料,确定选题到论文初稿的确定和修改,再到各功能模块的实现,代码编写,论文的撰写,在这整个过程中都伴随着燕老师的辛勤付出。我的系统功能较多,设计起来颇为复杂,但是燕老师总是不厌其烦一遍遍的为我纠正错误和我一起解决问题。除了敬佩燕老师的专业水平外,他的耐心和严谨的科研精神也是我永远学习的典范,这也是我在毕业时节获得的最大收获。 我还要感谢院里的老师们,正因为你们的耐心和付出我们才打下牢固的计算机基础,不断地取得进步;同时还要感谢所有的同学们的包容和鼓励,正是因为有了你们的帮助,我才能顺利完成这次毕业设计。 最后感谢信息科学与工程学院和我的母校—枣庄学院对我的大力栽培。 毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作 者 签 名:       日  期:        ​​​​​​​​​​​​ 指导教师签名:        日  期:        使用授权说明 本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:        日  期:        ​​​​​​​​​​​​ 学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名: 日期: 年 月 日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权      大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名: 日期: 年 月 日 导师签名: 日期: 年 月 日 指导教师评阅书 指导教师评价: 一、撰写(设计)过程 1、学生在论文(设计)过程中的治学态度、工作精神 □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、学生掌握专业知识、技能的扎实程度 □ 优 □ 良 □ 中 □ 及格 □ 不及格 3、学生综合运用所学知识和专业技能分析和解决问题的能力 □ 优 □ 良 □ 中 □ 及格 □ 不及格 4、研究方法的科学性;技术线路的可行性;设计方案的合理性 □ 优 □ 良 □ 中 □ 及格 □ 不及格 5、完成毕业论文(设计)期间的出勤情况 □ 优 □ 良 □ 中 □ 及格 □ 不及格 二、论文(设计)质量 1、论文(设计)的整体结构是否符合撰写规范? □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、是否完成指定的论文(设计)任务(包括装订及附件)? □ 优 □ 良 □ 中 □ 及格 □ 不及格 三、论文(设计)水平 1、论文(设计)的理论意义或对解决实际问题的指导意义 □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、论文的观念是否有新意?设计是否有创意? □ 优 □ 良 □ 中 □ 及格 □ 不及格 3、论文(设计说明书)所体现的整体水平 □ 优 □ 良 □ 中 □ 及格 □ 不及格 建议成绩:□ 优 □ 良 □ 中 □ 及格 □ 不及格 (在所选等级前的□内画“√”) 指导教师: (签名) 单位: (盖章) 年 月 日 评阅教师评阅书 评阅教师评价: 一、论文(设计)质量 1、论文(设计)的整体结构是否符合撰写规范? □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、是否完成指定的论文(设计)任务(包括装订及附件)? □ 优 □ 良 □ 中 □ 及格 □ 不及格 二、论文(设计)水平 1、论文(设计)的理论意义或对解决实际问题的指导意义 □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、论文的观念是否有新意?设计是否有创意? □ 优 □ 良 □ 中 □ 及格 □ 不及格 3、论文(设计说明书)所体现的整体水平 □ 优 □ 良 □ 中 □ 及格 □ 不及格 建议成绩:□ 优 □ 良 □ 中 □ 及格 □ 不及格 (在所选等级前的□内画“√”) 评阅教师: (签名) 单位: (盖章) 年 月 日 教研室(或答辩小组)及教学系意见 教研室(或答辩小组)评价: 一、答辩过程 1、毕业论文(设计)的基本要点和见解的叙述情况 □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、对答辩问题的反应、理解、表达情况 □ 优 □ 良 □ 中 □ 及格 □ 不及格 3、学生答辩过程中的精神状态 □ 优 □ 良 □ 中 □ 及格 □ 不及格 二、论文(设计)质量 1、论文(设计)的整体结构是否符合撰写规范? □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、是否完成指定的论文(设计)任务(包括装订及附件)? □ 优 □ 良 □ 中 □ 及格 □ 不及格 三、论文(设计)水平 1、论文(设计)的理论意义或对解决实际问题的指导意义 □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、论文的观念是否有新意?设计是否有创意? □ 优 □ 良 □ 中 □ 及格 □ 不及格 3、论文(设计说明书)所体现的整体水平 □ 优 □ 良 □ 中 □ 及格 □ 不及格 评定成绩:□ 优 □ 良 □ 中 □ 及格 □ 不及格 (在所选等级前的□内画“√”) 教研室主任(或答辩小组组长): (签名) 年 月 日 教学系意见: 系主任: (签名) 年 月 日 学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下进行的研究工作所取得的成果。尽我所知,除文中已经特别注明引用的内容和致谢的地方外,本论文不包含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式注明并表示感谢。本人完全意识到本声明的法律结果由本人承担。 学位论文作者(本人签名): 年 月 日 学位论文出版授权书 本人及导师完全同意《中国博士学位论文全文数据库出版章程》、《中国优秀硕士学位论文全文数据库出版章程》(以下简称“章程”),愿意将本人的学位论文提交“中国学术期刊(光盘版)电子杂志社”在《中国博士学位论文全文数据库》、《中国优秀硕士学位论文全文数据库》中全文发表和以电子、网络形式公开出版,并同意编入CNKI《中国知识资源总库》,在《中国博硕士学位论文评价数据库》中使用和在互联网上传播,同意按“章程”规定享受相关权益。 论文密级: □公开 □保密(___年__月至__年__月)(保密的学位论文在解密后应遵守此) 作者签名:_______ 导师签名:_______ _______年_____月_____日 _______年_____月_____日 独 创 声 明 本人郑重声明:所呈交的毕业设计(论文),是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议。尽我所知,除文中已经注明引用的内容外,本设计(论文)不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。 本声明的法律后果由本人承担。   作者签名: 二〇一〇年九月二十日   毕业设计(论文)使用授权声明 本人完全了解滨州学院关于收集、保存、使用毕业设计(论文)的规定。 本人愿意按照学校要求提交学位论文的印刷本和电子版,同意学校保存学位论文的印刷本和电子版,或采用影印、数字化或其它复制手段保存设计(论文);同意学校在不以营利为目的的前提下,建立目录检索与阅览服务系统,公布设计(论文)的部分或全部内容,允许他人依法合理使用。 (保密论文在解密后遵守此规定)   作者签名: 二〇一〇年九月二十日 致 谢 时间飞逝,大学的学习生活很快就要过去,在这四年的学习生活中,收获了很多,而这些成绩的取得是和一直关心帮助我的人分不开的。 首先非常感谢学校开设这个课题,为本人日后从事计算机方面的工作提供了经验,奠定了基础。本次毕业设计大概持续了半年,现在终于到结尾了。本次毕业设计是对我大学四年学习下来最好的检验。经过这次毕业设计,我的能力有了很大的提高,比如操作能力、分析问题的能力、合作精神、严谨的工作作风等方方面面都有很大的进步。这期间凝聚了很多人的心血,在此我表示由衷的感谢。没有他们的帮助,我将无法顺利完成这次设计。 首先,我要特别感谢我的知道郭谦功老师对我的悉心指导,在我的论文书写及设计过程中给了我大量的帮助和指导,为我理清了设计思路和操作方法,并对我所做的课题提出了有效的改进方案。郭谦功老师渊博的知识、严谨的作风和诲人不倦的态度给我留下了深刻的印象。从他身上,我学到了许多能受益终生的东西。再次对周巍老师表示衷心的感谢。 其次,我要感谢大学四年中所有的任课老师和辅导员在学习期间对我的严格要求,感谢他们对我学习上和生活上的帮助,使我了解了许多专业知识和为人的道理,能够在今后的生活道路上有继续奋斗的力量。 另外,我还要感谢大学四年和我一起走过的同学朋友对我的关心与支持,与他们一起学习、生活,让我在大学期间生活的很充实,给我留下了很多难忘的回忆。 最后,我要感谢我的父母对我的关系和理解,如果没有他们在我的学习生涯中的无私奉献和默默支持,我将无法顺利完成今天的学业。 四年的大学生活就快走入尾声,我们的校园生活就要划上句号,心中是无尽的难舍与眷恋。从这里走出,对我的人生来说,将是踏上一个新的征程,要把所学的知识应用到实际工作中去。 回首四年,取得了些许成绩,生活中有快乐也有艰辛。感谢老师四年来对我孜孜不倦的教诲,对我成长的关心和爱护。 学友情深,情同兄妹。四年的风风雨雨,我们一同走过,充满着关爱,给我留下了值得珍藏的最美好的记忆。 在我的十几年求学历程里,离不开父母的鼓励和支持,是他们辛勤的劳作,无私的付出,为我创造良好的学习条件,我才能顺利完成完成学业,感激他们一直以来对我的抚养与培育。 最后,我要特别感谢我的导师赵达睿老师、和研究生助教熊伟丽老师。是他们在我毕业的最后关头给了我们巨大的帮助与鼓励,给了我很多解决问题的思路,在此表示衷心的感激。老师们认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益匪浅。他无论在理论上还是在实践中,都给与我很大的帮助,使我得到不少的提高这对于我以后的工作和学习都有一种巨大的帮助,感谢他耐心的辅导。在论文的撰写过程中老师们给予我很大的帮助,帮助解决了不少的难点,使得论文能够及时完成,这里一并表示真诚的感谢。 毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作 者 签 名:       日  期:        ​​​​​​​​​​​​ 指导教师签名:        日  期:        使用授权说明 本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:        日  期:        ​​​​​​​​​​​​ 学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名: 日期: 年 月 日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权      大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名: 日期: 年 月 日 导师签名: 日期: 年 月 日 独 创 声 明 本人郑重声明:所呈交的毕业设计(论文),是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议。尽我所知,除文中已经注明引用的内容外,本设计(论文)不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。 本声明的法律后果由本人承担。   作者签名: 年 月 日   毕业设计(论文)使用授权声明 本人完全了解**学院关于收集、保存、使用毕业设计(论文)的规定。 本人愿意按照学校要求提交学位论文的印刷本和电子版,同意学校保存学位论文的印刷本和电子版,或采用影印、数字化或其它复制手段保存设计(论文);同意学校在不以营利为目的的前提下,建立目录检索与阅览服务系统,公布设计(论文)的部分或全部内容,允许他人依法合理使用。 (保密论文在解密后遵守此规定)   作者签名: 年 月 日 基本要求:写毕业论文主要目的是培养学生综合运用所学知识和技能,理论联系实际,独立分析,解决实际问题的能力,使学生得到从事本专业工作和进行相关的基本训练。毕业论文应反映出作者能够准确地掌握所学的专业基础知识,基本学会综合运用所学知识进行科学研究的方法,对所研究的题目有一定的心得体会,论文题目的范围不宜过宽,一般选择本学科某一重要问题的一个侧面。 毕业论文的基本教学要求是: 1、培养学生综合运用、巩固与扩展所学的基础理论和专业知识,培养学生独立分析、解决实际问题能力、培养学生处理数据和信息的能力。2、培养学生正确的理论联系实际的工作作风,严肃认真的科学态度。3、培养学生进行社会调查研究;文献资料收集、阅读和整理、使用;提出论点、综合论证、总结写作等基本技能。 毕业论文是毕业生总结性的独立作业,是学生运用在校学习的基本知识和基础理论,去分析、解决一两个实际问题的实践锻炼过程,也是学生在校学习期间学习成果的综合性总结,是整个教学活动中不可缺少的重要环节。撰写毕业论文对于培养学生初步的科学研究能力,提高其综合运用所学知识分析问题、解决问题能力有着重要意义。 毕业论文在进行编写的过程中,需要经过开题、论文编写、论文上交评定、论文答辩以及论文评分五个过程,其中开题报告是论文进行的最重要的一个过程,也是论文能否进行的一个重要指标。 撰写意义:1.撰写毕业论文是检验学生在校学习成果的重要措施,也是提高教学质量的重要环节。大学生在毕业前都必须完成毕业论文的撰写任务。申请学位必须提交相应的学位论文,经答辩通过后,方可取得学位。可以这么说,毕业论文是结束大学学习生活走向社会的一个中介和桥梁。毕业论文是大学生才华的第一次显露,是向祖国和人民所交的一份有份量的答卷,是投身社会主义现代化建设事业的报到书。一篇毕业论文虽然不能全面地反映出一个人的才华,也不一定能对社会直接带来巨大的效益,对专业产生开拓性的影响。但是,实践证明,撰写毕业论文是提高教学质量的重要环节,是保证出好人才的重要措施。 2.通过撰写毕业论文,提高写作水平是干部队伍“四化”建设的需要。党中央要求,为了适应现代化建设的需要,领导班子成员应当逐步实现“革命化、年轻化、知识化、专业化”。这个“四化”的要求,也包含了对干部写作能力和写作水平的要求。 3.提高大学生的写作水平是社会主义物质文明和精神文明建设的需要。在新的历史时期,无论是提高全族的科学文化水平,掌握现代科技知识和科学管理方法,还是培养社会主义新人,都要求我们的干部具有较高的写作能力。在经济建设中,作为领导人员和机关的办事人员,要写指示、通知、总结、等应用文;要写说明书、广告、解说词等说明文;还要写科学论文、经济评论等议论文。在当今信息社会中,信息对于加快经济发展速度,取得良好的经济效益发挥着愈来愈大的作用。写作是以语言文字为信号,是传达信息的方式。信息的来源、信息的收集、信息的储存、整理、传播等等都离不开写作。 论文种类:毕业论文是学术论文的一种形式,为了进一步探讨和掌握毕业论文的写作规律和特点,需要对毕业论文进行分类。由于毕业论文本身的内容和性质不同,研究领域、对象、方法、表现方式不同,因此,毕业论文就有不同的分类方法。 按内容性质和研究方法的不同可以把毕业论文分为理论性论文、实验性论文、描述性论文和设计性论文。后三种论文主要是理工科大学生可以选择的论文形式,这里不作介绍。文科大学生一般写的是理论性论文。理论性论文具体又可分成两种:一种是以纯粹的抽象理论为研究对象,研究方法是严密的理论推导和数学运算,有的也涉及实验与观测,用以验证论点的正确性。另一种是以对客观事物和现象的调查、考察所得观测资料以及有关文献资料数据为研究对象,研究方法是对有关资料进行分析、综合、概括、抽象,通过归纳、演绎、类比,提出某种新的理论和新的见解。 按议论的性质不同可以把毕业论文分为立论文和驳论文。立论性的毕业论文是指从正面阐述论证自己的观点和主张。一篇论文侧重于以立论为主,就属于立论性论文。立论文要求论点鲜明,论据充分,论证严密,以理和事实服人。驳论性毕业论文是指通过反驳别人的论点来树立自己的论点和主张。如果毕业论文侧重于以驳论为主,批驳某些错误的观点、见解、理论,就属于驳论性毕业论文。驳论文除按立论文对论点、论据、论证的要求以外,还要求针锋相对,据理力争。 按研究问题的大小不同可以把毕业论文分为宏观论文和微观论文。凡届国家全局性、带有普遍性并对局部工作有一定指导意义的论文,称为宏观论文。它研究的面比较宽广,具有较大范围的影响。反之,研究局部性、具体问题的论文,是微观论文。它对具体工作有指导意义,影响的面窄一些。 另外还有一种综合型的分类方法,即把毕业论文分为专题型、论辩型、综述型和综合型四大类: 1.专题型论文。这是分析前人研究成果的基础上,以直接论述的形式发表见解,从正面提出某学科中某一学术问题的一种论文。如本书第十二章例文中的《浅析领导者突出工作重点的方法与艺术》一文,从正面论述了突出重点的工作方法的意义、方法和原则,它表明了作者对突出工作重点方法的肯定和理解。2.论辩型论文。这是针对他人在某学科中某一学术问题的见解,凭借充分的论据,着重揭露其不足或错误之处,通过论辩形式来发表见解的一种论文。3.综述型论文。这是在归纳、总结前人或今人对某学科中某一学术问题已有研究成果的基础上,加以介绍或评论,从而发表自己见解的一种论文。4.综合型论文。这是一种将综述型和论辩型两种形式有机结合起来写成的一种论文。如《关于中国民族关系史上的几个问题》一文既介绍了研究民族关系史的现状,又提出了几个值得研究的问题。因此,它是一篇综合型的论文。 写作步骤:毕业论文是高等教育自学考试本科专业应考者完成本科阶段学业的最后一个环节,它是应考者的 总结 性独立作业,目的在于总结学习专业的成果,培养综合运用所学知识解决实际 问题 的能力。从文体而言,它也是对某一专业领域的现实问题或 理论 问题进行 科学 研究 探索的具有一定意义的论说文。完成毕业论文的撰写可以分两个步骤,即选择课题和研究课题。 首先是选择课题。选题是论文撰写成败的关键。因为,选题是毕业论文撰写的第一步,它实际上就是确定“写什么”的问题,亦即确定科学研究的方向。如果“写什么”不明确,“怎么写”就无从谈起。 教育部自学考试办公室有关对毕业论文选题的途径和要求是“为鼓励理论与工作实践结合,应考者可结合本单位或本人从事的工作提出论文题目,报主考学校审查同意后确立。也可由主考学校公布论文题目,由应考者选择。毕业论文的总体要求应与普通全日制高等学校相一致,做到通过论文写作和答辩考核,检验应考者综合运用专业知识的能力”。但不管考生是自己任意选择课题,还是在主考院校公布的指定课题中选择课题,都要坚持选择有科学价值和现实意义的、切实可行的课题。选好课题是毕业论文成功的一半。 第一、要坚持选择有科学价值和现实意义的课题。科学研究的目的是为了更好地认识世界、改造世界,以推动社会的不断进步和发展 。因此,毕业论文的选题,必须紧密结合社会主义物质文明和精神文明建设的需要,以促进科学事业发展和解决现实存在问题作为出发点和落脚点。选题要符合科学研究的正确方向,要具有新颖性,有创新、有理论价值和现实的指导意义或推动作用,一项毫无意义的研究,即使花很大的精力,表达再完善,也将没有丝毫价值。具体地说,考生可从以下三个方面来选题。首先,要从现实的弊端中选题,学习了专业知识,不能仅停留在书本上和理论上,还要下一番功夫,理论联系实际,用已掌握的专业知识,去寻找和解决工作实践中急待解决的问题。其次,要从寻找科学研究的空白处和边缘领域中选题,科学研究。还有许多没有被开垦的处女地,还有许多缺陷和空白,这些都需要填补。应考者应有独特的眼光和超前的意识去思索,去发现,去研究。最后,要从寻找前人研究的不足处和错误处选题,在前人已提出来的研究课题中,许多虽已有初步的研究成果,但随着社会的不断发展,还有待于丰富、完整和发展,这种补充性或纠正性的研究课题,也是有科学价值和现实指导意义的。 第二、要根据自己的能力选择切实可行的课题。毕业论文的写作是一种创造性劳动,不但要有考生个人的见解和主张,同时还需要具备一定的客观条件。由于考生个人的主观、客观条件都是各不相同的,因此在选题时,还应结合自己的特长、兴趣及所具备的客观条件来选题。具体地说,考生可从以下三个方面来综合考虑。首先,要有充足的资料来源。“巧妇难为无米之炊”,在缺少资料的情况下,是很难写出高质量的论文的。选择一个具有丰富资料来源的课题,对课题深入研究与开展很有帮助。其次,要有浓厚的研究兴趣,选择自己感兴趣的课题,可以激发自己研究的热情,调动自己的主动性和积极性,能够以专心、细心、恒心和耐心的积极心态去完成。最后,要能结合发挥自己的业务专长,每个考生无论能力水平高低,工作岗位如何,都有自己的业务专长,选择那些能结合自己工作、发挥自己业务专长的课题,对顺利完成课题的研究大有益处。 致 谢 这次论文的完成,不止是我自己的努力,同时也有老师的指导,同学的帮助,以及那些无私奉献的前辈,正所谓你知道的越多的时候你才发现你知道的越少,通过这次论文,我想我成长了很多,不只是磨练了我的知识厚度,也使我更加确定了我今后的目标:为今后的计算机事业奋斗。在此我要感谢我的指导老师——***老师,感谢您的指导,才让我有了今天这篇论文,您不仅是我的论文导师,也是我人生的导师,谢谢您!我还要感谢我的同学,四年的相处,虽然我未必记得住每分每秒,但是我记得每一个有你们的精彩瞬间,我相信通过大学的历练,我们都已经长大,变成一个有担当,有能力的新时代青年,感谢你们的陪伴,感谢有你们,这篇论文也有你们的功劳,我想毕业不是我们的相处的结束,它是我们更好相处的开头,祝福你们!我也要感谢父母,这是他们给我的,所有的一切;感谢母校,尽管您不以我为荣,但我一直会以我是一名农大人为荣。 通过这次毕业设计,我学习了很多新知识,也对很多以前的东西有了更深的记忆与理解。漫漫求学路,过程很快乐。我要感谢信息与管理科学学院的老师,我从他们那里学到了许多珍贵的知识和做人处事的道理,以及科学严谨的学术态度,令我受益良多。同时还要感谢学院给了我一个可以认真学习,天天向上的学习环境和机会。 即将结束*大学习生活,我感谢****大学提供了一次在**大接受教育的机会,感谢院校老师的无私教导。感谢各位老师审阅我的论文。 学校代码:10904 22 22 _1234567897.vsd _1234567901.vsd _1234567905.vsd _1234567909.vsd _1234567911.vsd � � � 最大编号 用户最大编号 日志评论最大编号 相册最大编号 照片评论最大编号 访问记录最大编号 照片最大编号 头像最大编号 日志最大编号 好友关系最大编号 _1234567912.vsd � � � 登录用户 日志 管理 发表 管理 相册 照片 含有 头像 上传 好友 添加/查看 评论 评论ID 评论日期 日志标题 评论者ID 登录ID 1 昵称 登录邮箱 1 密码 心情 日志内容 日志ID M 发布日期 1 M M 1 所属ID 头像ID 描述 上传者 相册ID 日期 所属用户 名称 权限 名称 所属相册 照片ID 描述 主方ID 关系ID 建立日期 客方ID 评论内容 M M M M M _1234567913.vsd � 表� � � � 表� � � _1234567910.vsd _1234567907.vsd � � � 日志评论 评论日期 评论者编号 评论内容 评论编号 所属的日志编号 _1234567908.vsd � � � 照片评论 评论日期 评论者编号 评论内容 评论编号 所属的照片编号 � _1234567906.vsd � � � 照片 照片的二进制数据 照片描述 照片名称 照片编号 所属相册 � _1234567903.vsd _1234567904.vsd _1234567902.vsd 用户邮箱 用户头像编号 _1234567899.vsd _1234567900.vsd _1234567898.vsd _1234567893.vsd � 用户登录 Web端功能 用户注册 发表日志 管理日志 上传头像 修改个人资料 查看好友和访客 上传照片 管理相册 搜索用户 _1234567895.vsd _1234567896.vsd _1234567894.vsd 记住我 _1234567891.vsd 查看好友列表 _1234567892.vsd _1234567890.vsd WorkSpace Plactform Runtime SWT JDT Help RCP Team Debug Extended Eclipse Platform PDE Eclipse Platform Work Bench JFace New Tool New Tool New Tool
/
本文档为【基于Android的社交分享平台的设计_学士学位论文】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索