基于Android系统的新浪微博客户端的设计与实现

hello丘比特 贡献于2013-05-26

作者 ncujwc  创建于2012-05-21 08:57:00   修改者long  修改于2012-05-25 02:21:00字数18068

文档摘要:   本系统基于Android移动开发平台,使用Java语言开发,使系统具有良好的平台移植性和可扩展性。新浪微博Android SDK为第三方微博应用提供了文档易用的微博API调用服务,使第三方微博客户端无需了解复杂的验证和API调用过程,就可以实现分享文字或者多媒体信息到新浪微博。<br>    本系统包括四个模块:应用程序登录模块,主界面显示模块,微博浏览模块,用户模块。在登录模块,用户可以使用授权配置和用户注册并且登录系统。主界面显示模块中,用户可以发表新的微博和通过昵称搜索好友。微博浏览模块,进入浏览微博的详细页面,用户可以评论微博和转发微博。用户模块,可查看该用户的详细信息包括该用户的关注列表,话题列表,粉丝列表,和该用户所发表过的全部微博。
关键词:

 独创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 论文题目: 作者签名: 日期: 年 月 日 论文版权使用授权书 本人完全了解吉首大学有关保留、使用学位论文的规定,即:学校有权保留送交论文的复印件和磁盘,允许论文被查阅和借阅,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。同意吉首大学可以用不同方式在不同媒体上发表、传播学位论文的全部或部分内容。 (保密的学位论文在解密后应遵守此协议) 论文题目: 学生签名: 日期: 年 月 日 导师签名: 日期: 年 月 日 基于Android系统的新浪微博客户端的设计与实现 摘要 本系统基于Android移动开发平台,使用Java语言开发,使系统具有良好的平台移植性和可扩展性。新浪微博Android SDK为第三方微博应用提供了文档易用的微博API调用服务,使第三方微博客户端无需了解复杂的验证和API调用过程,就可以实现分享文字或者多媒体信息到新浪微博。 本系统包括四个模块:应用程序登录模块,主界面显示模块,微博浏览模块,用户模块。在登录模块,用户可以使用授权配置和用户注册并且登录系统。主界面显示模块中,用户可以发表新的微博和通过昵称搜索好友。微博浏览模块,进入浏览微博的详细页面,用户可以评论微博和转发微博。用户模块,可查看该用户的详细信息包括该用户的关注列表,话题列表,粉丝列表,和该用户所发表过的全部微博。 关键词:新浪微博开放平台;授权配置;微博API调用服务. Sina Micro-Blog Client Design and Implementation Based on Android System Abstract This system based on Android mobile development platform, use Java language development and the system which has a good platform portability and expansibility. The Sina micro-blog Android SDK third-party micro-blog application provides document easy to use micro-blog API call service, so that the third-party micro-blog client without understanding the complex validation and API calls procedure, may realize to share text or multimedia message to Sina micro-blog. This system includes four modules: application login module, the interface display module, the blog browsing module, the user module. In login module, the user can use authorized configuration and user registered and logged in system. In interface display module, users can post new micro blog and through the nickname to search good friends. In blog browsing module, users can comment on the blog and forwarding the blog into the detailed page. In user module, can view the detailed information including the users' attention list, topics list, fan list, and all the blogs he has posted . Keywords: Sina Micro-Blog Open Platform; Authorized Configuration; Micro-Blog API Calls Service. 目 录 第一章 绪论 1 1.1课题背景 1 1.2微博简介 1 1.3 Android简介 2 1.4研究目标 2 1.5研究内容、意义 3 第二章 系统分析 4 2.1系统可行性分析 4 2.2系统需求分析 4 2.3系统规划概述 5 2.4基于Android新浪微博客户端的建设原则 6 2.5系统开发环境及相关技术 6 第三章 系统概要设计 7 3.1系统设计目标 7 3.2系统模块设计 7 3.2.1系统功能模块划分 7 3.2.2系统总体结构设计 7 3.2.3系统模块用例图分析 9 第四章 数据库设计与实现 18 4.1数据库概念结构设计 18 4.1.1实体图 18 4.1.2系统实体联系 20 4.2系统数据库物理建模 20 第五章 系统详细功能实现 23 5.1登录模块实现 23 5.1.1用户授权配置模块 23 5.1.2用户登录模块 24 5.2主界面显示模块实现 25 5.2.1显示最新微博列表 25 5.2.3发表微博功能 27 5.3微博信息浏览模块实现 27 5.4获取用户信息模块实现 29 5.4.1查看关注功能 30 5.4.2查看用户所有微博信息功能 30 第六章 系统的测试与维护 32 6.1单元测试 32 6.2集成测试 33 总 结 34 参考文献 36 致谢 37 基于Adroid系统的新浪微博客户端的设计与实现 第一章 绪论 第一章 绪论 1.1课题背景 每一个时代都会催生新的理念,每一个理念又会引领新的潮流,每一个潮流又注定会冲破原有的桎梏,创新是时代的特征,更是IT业的标志。 摩尔定律的持续实现使整个IT业的发展和更新令人手忙脚乱,而作为终端设备中数量级最大的手机,近年更是近乎脱胎换骨,在颠覆传统手机概念的同时,不断挖掘着自身的市场价值,也成为众多厂商利益角逐的角斗场。IOS在乔布斯的精心策划下一路高歌猛进,Android则凭着开源的方式开山劈路,Symbian和Black berry的旧有模式被不断蚕食,Windows Phone则在滞后的泥潭中继续挣扎。手机终端多样化应用的不断出现,使其在近乎实现PC端功能的同时,也影响着PC的发展。 互联网领域,以Facebook为代表的SNS的突起更是激起新一轮的网络风波,而在国内,冲破众堵的新浪在其准确的定位和成功的推广策略下推出的新浪微博更是占据了先导地位,并逐渐进入大众生活,成为许多人的生活必需品。近年来,新浪微博的邀请重点由明星、名人转向媒体工作者甚至政府工作者,为时事的发布和民政工作提供了更为多样、便捷的方式。 于是,新浪微博手机客户端便应运而生,而作为市场占有率第一的Android平台下的新浪微博客户端更是拥有广泛的需求。目前一些基于Android平台的新浪微博客户端相对比较完善,功能也比较齐全,但基于市场利益考虑,均有不同程度的涉及广告的行为,而且界面设计相对传统,招到很多用户的不满。因此,本课题就致力于开发出一款基于Android平台的新浪微博客户端,来满足用户的使用需求。 1.2微博简介 微博(英文名为micro-blog),即微型博客,是随着Web 2.0而兴起的一类开放的互联网社交服务,它允许用户以简短文字随时随地更新自己的状态,每条信息的长度都在140字以内,支持图片、音频、视频等多媒体的出版,每个用户既是微内容的创造者也是微内容的传播者和分享者。与传统博客相比,微博具有如下特点: 1) 准入门槛低。 传统博客强调版本的布置与语言的组织,因此博文的创作需要考虑完整的逻辑性,也就是说,在Blog上写文章的门槛还是很高的;哪怕是一个没有受过严格中文训练的人,只要会发短信,他就能使用微博。闲得无事,更新一下签名,就被记录了。 基于Adroid系统的新浪微博客户端的设计与实现 第一章 绪论 2) 即时通讯的原创性。 对于每篇微博140个字符的信息量特别适合手机上网用户使用,无论你是在咖啡厅还是在地铁站,都很容易通过手机完成自己的微博。因此,微博的即时通讯功能非常强大。很多微博网站,即便在没有网络的地方,只要有手机也可即时更新自己的内容。一些突发事件或引起全球关注的大事,如果有微博,就能利用各种手段在微博上发表,其真实性以及快捷性给人带来的现场感,甚至超过所有媒体。 3) 更强的互动性。 与博客上面对面的表演不同,微型博客上是背对脸的 follow(跟随),就好比你在电脑前打游戏,路过的人从你背后看着你怎么玩,而你并不需要主动和背后的人交流。既可以一点对多点,也可以点对点。在Web浏览器中实现好友管理是非常方便的,如果你想在手机中进行管理的话同样是非常方便的,移动终端提供的便利性和多媒体化,使得微型博客用户体验的粘性越来越强。与传统博客相比,微型博客具有更好的及时性、开放性和随意性,用户不仅可以通过网页浏览和发布信息,还可以通过手机、即时通讯软件的客户端、桌面客户端、外部API接口等多种途径使用微博功能。对单条信息长度的限制是微博服务形式的核心特征,其信息短、直观、简洁的特点便于迅速阅读和传播。 1.3 Android简介 Android 是Google开发的基于Linux平台的开源手机操作系统。它包括操作系统、用户界面和应用程序—— 移动电话工作所需的全部软件。 Android系统就是一个开放式的手机和平板电脑的操作系统,目前的发展势头十分迅猛。Android的面试的时间不长,但Android已经对传统的手机平台(如Symbian)构成了强大的冲击。Android操作系统发展迅猛主要得益于免费、开源和良好产业运作策略,这三点为安卓在智能手机市场赢得更多的发展机遇。系统的免费让更多的厂商加入,推动了份额的上升;代码的开源让更多的开发者进入应用开发;应用的丰富吸引了更多用户选择,这也是谷歌值得众多厂商学习的地方。此外,谷歌通过OHA联合众多厂商进行系统研发,不断更新版本,将系统应用推广到更多的终端产品中,确保用户体验持续改善。 1.4研究目标 1) 了解Android应用程序的设计和开发过程行。 2) 使用多种组件进行Android 平台新浪微博客户端的开发。本软件是基于Eclipse的开发环境,依托新浪微博开放平台提供的接口,开发出针对Android平台的新浪微博客户端。 基于Adroid系统的新浪微博客户端的设计与实现 第一章 绪论 1.5研究内容、意义 1) 本课题研究的内容包括创建基于Android平台的新浪微博客户端应用,使用Java语言编写,通过新浪微博开放平台提供的接口创建的微博客户端应用。 2) 本课题研究的意义在于使用基于Android系统的新浪微博客户端可以方便的在本系统中使用发微博,评论微博,转发微博,消息提醒,为用户推荐微博等全面的功能。用户可以随时随地的更新自己的微博信息,把看到的、想说的一切都以最快的速度分享给大家。 基于Android系统的新浪微博客户端的设计与实现 第二章 系统分析 第二章 系统分析 2.1系统可行性分析 2.1.1市场的可行性 项目是否可以实施,主要应该看这个项目是否有潜在的市场,以及市场的变化对项目的开发结果会有哪些重要影响。一个项目的市场需求是推动技术进步的主要动力,有时市场的需求,决定了某项技术的产生。有的时候,即使没有技术,没有经济实力,只要找对市场,也会通过其他渠道来达到项目的经济等方面的要求来开发项目,所以说,市场需求是项目可行性的根本。 本系统基于移动平台的微博客户端系统,是人们日常生活中和朋友交流互动的必要工具。只要针对大众对物品的喜好,使系统功能齐全,操作简单,界面美观大方,就一定会有市场潜力。 2.1.2经济上的可行性 本系统为毕业设计练习实践型项目,所使用的开发工具都由学校免费提供,因此开发成本比较低,所以开发基于Android移动平台的微博客户端在经济上是可行的。 2.1.3技术上的可行性 新浪微博Android平台SDK为第三方微博应用提供了文档易用的微博API调用服务,使第三方客户端无需了解复杂的验证,基于Android系统开发使用Java作为编程语言具有良好的平台移植性和可扩展性,所以在技术上也是可行的。 2.1.4运行上的可行性 本应用是基于Android系统手持移动终端,Android系统手机在智能手机和平板电脑市场都有很高的占有率,各个手机厂商也争先推出更新版本和硬件配置更高的终端,从市场上一般的Android手机硬件配置来看运行本系统应该是绰绰有余所以在运行可行性上更是可行的。 2.2系统需求分析 本应用程序启动后,可以通过使用新浪的微博开放平台,利用接口调用返回的数据,进行用户注册,用户信息配置,授权认证,用户登录。登录成功之后进入程序首页,可以显示微博好友发布的最新微博信息,以及相关图片的浏览。可以查看好友的个人信息、粉丝数量、发表的话题、所有发表过的微博以及其关注的好友情况。从以上描述可以基本了解到该应用的功能需求: 1) 启动应用程序。 基于Android系统的新浪微博客户端的设计与实现 第二章 系统分析 2) 如果用户是第一次登陆,进入授权界面,在此页面,当用户还未拥有新浪微博账号,则可以选择跳转到新浪微博的用户注册页面,注册自己的新浪微博账号。如用户已有新浪微博账号,用户可以输入用户名和密码进行授权。取得新浪的授权认证。 3) 如果用户已经在该应用中登录过,则只需选择需要登录的账号,不用再输入用户名和账号等繁琐操作就可直接登录系统。 4) 用户登录系统之后,进入微博客户端首页,用户可以查看到自己关注到的好友的最新微博信息。 5) 点击用户发表的某一条微博信息,进入微博浏览页面,可以查看到这条微博信息的全面内容,包括粉丝评论、评论数、转发数、图片等多媒体信息。用户可以点击屏幕下方的评论按钮,发表自己对该篇微博的评论。点击转发按钮则可以转发这条微博内容。 6) 点击微博浏览页面的查看好友个人信息按钮,进入好友个人信息浏览页面,在此页面可以点击屏幕上方的关注好友按钮,对好友进行关注和取消关注的操作。在屏幕中央的显示页面,可以查看到好友的地址,个人说明的信息。在屏幕的下方有四个按钮,分别可以查看该好友发表过的所有微博信息,该好友所关注的所有好友,发表过的所有话题、粉丝数量和所有粉丝列表。同时也可以查看粉丝的个人信息,用户可以自己对感兴趣的粉丝也添加关注。 7) 回到应用的首页,在屏幕的上方有一个发表微博的按钮,用户输入内容,点击发送可以发表自己的微博。用户也可以在此页面点击刷新按钮,刷新当前的最新微博。 2.3系统规划概述 凡事预则立,不预则废。科学的规划对于任何需要经过较长时间努力才能实现的事情都是非常重要的。规划,一般是指对较长时期的活动进行总体的、全面的计划。现代社会组织,特别是企业的结构和活动内容都很复杂,应该充分认识这一阶段工作所具有的特点,以提高系统规划工作的科学性和有效性。 1) 系统规划工作是面向长远的、未来的、全局性和关键性的问题,因此它具有较强的不确定性,非结构化程度较高。 2) 其工作环境是组织管理环境,高层管理人员是工作的主体。 3) 系统规划是为整个系统建设,确定目标、战略、系统总体结构方案以及资源计划。因而,整个工作过程是一个管理决策过程。同时,系统规划也是技术与管理相结合的过程,它确定了利用现代信息技术有效的支持管理决策的总体方案。 4) 系统规划人员对管理与技术环境的理解程度、对管理与技术发展的见识,以及开创精神与务实态度是规划工作的决定因素。 基于Android系统的新浪微博客户端的设计与实现 第二章 系统分析 5) 规划工作的结果是要明确回答规划工作内容中提出的问题,描述出系统的总体概貌和发展进程,为系统的发展制定一个科学而又合理的目标和达到该目标的可行方案,而不是替代后续阶段的工作。 2.4基于Android新浪微博客户端的建设原则 1) 统一规划、分步设计。 2) 坚持标准化和可行性。 3) 保证系统的稳定性和安全性。 4) 保证网络系统的先进性和有效性 5) 操作简单、人机界面友好,便于用户理解和使用。 2.5系统开发环境及相关技术 Android的上层应用程序是使用Java语言开发的,同时还需要基于Dalvik虚拟机,所以,Google公司推荐使用主流的Java开发环境Eclipse。如果只有Eclipse那还不够,因为是使用Java语言进行开发,还应该具备由SUN公司提供的Java SDK(其中包括JRE:Java Runtime Environment)。此外,Android的应用程序开发和Java开发有较大区别的,所以还需要有Google提供的Android SDK。同时,还需要在Eclipse安装ADT,为Android开发提供开发工具的升级或者变更,是Eclipse下开发工具的升级下载的工具。 基于Adroid系统的新浪微博客户端的设计与实现 第三章 系统概要设计 第三章 系统概要设计 3.1系统设计目标 1) 通过创建新浪微博客户端应用,让用户随时随地与好友分享身边的新鲜事。 2) 通过友好的界面设计和完善的功能,使微博用户更加得心应手的与好友交流互动,尽可能多的给用户提供方便。 3.2系统模块设计 3.2.1系统功能模块划分 功能模块划分是描述系统的一个过程,需要将需求分析中的感性描述进行抽象化,提取出要实现的功能,这是整个系统开发的一个关键过程。在系统分析的基础上,确定系统的功能模块。 系统的功能模块图如下图3-1所示: 微博客户端 用户 最新微博列表 发表新微博 评论微博 转发微博 搜索用户 添加关注和取消关注 登录或授权认证 图3-1 系统功能模块图 3.2.2系统总体结构设计 系统总体结构设计确定软件由哪些模块组成以及这些模块之间的动态调用关系。微博客户端不是一个简单的概念,它包含了许多个内容,是由多个页面组成的一个整体的系统。 基于Adroid系统的新浪微博客户端的设计与实现 第三章 系统概要设计 1) 在功能方面,采用图形用户界面技术,使系统能够有多重图形窗口和丰富便利的操作界面,通过鼠标或键盘的操作,为用户提供最简洁的使用方法。 2) 在系统开放性方面,基于优秀的开发平台,再按照软件工程开发规范实现系统的开放性,既便于内容的扩充又便于技术的升级,以适用今后其他人的借鉴需求。 3) 在系统和数据的安全性方面,本项目是采用OAuth认证方式,采用这种方式就需要有用户的新浪UserID、Access Token、Access Secret这3个要素才能自由便利的调用新浪的开放接口。本项目是这样实现的,当用户第一次使用软件时,进行授权认证获取这3个要素,同时将其存储到SharedPreferences中以便用户下次使用。当用户再次使用时就不需要重新进行繁琐的授权认证操作,直接从SharedPreferences中读取出来即可使用。这样的需求载入页面的功能设定是这样实现的:当用户打开软件显示载入页面时开始检查SharedPreferences中是否已经保存有用户的新浪微博的UserID号、Access Token、Access Secret的记录,如果一条记录都没有那就说明用户是第一次使用本软件,那么跳到认证授权页面进行授权认证操作(认证授权功能在接下来的两篇中进行实现讲解)获取这3个值保存到SharedPreferences中,如果已经包括了记录那么读取这些记录的UserID号、Access Token、Access Secret值然后根据这3个值调用新浪的API接口获取这些记录对应的用户昵称信息等。OAuth认证的原理如下图3-2所示: 客 户 端 新 浪 微 博 服 务 器 将APPKEY和APPSECRET发送至新浪微博 返回RequestToken和RequestSecret给客户端表示新浪微博信任客户端 将RequestToken和RequestSecret发送至 新浪微博跳转至授权页面 授权页面 输 入 账号密码 完成授权 根据回调地址返回oauth_verifier,表示用户信任客户端 将RequestToken、RequestSecret、oauth_verifier发送至新浪微博 返回user_id、AccessToken和AccessSecret用来代替账号密码 图3-2 OAUTH2.0认证原理图 基于Adroid系统的新浪微博客户端的设计与实现 第三章 系统概要设计 3.2.3系统模块用例图分析 1) 用户注册模块 功能描述:在用户第一次使用该应用时,如还未获得新浪微博的账号,可以通过配置页面跳转到新浪微博的用户注册页面。 参与者:未注册的用户。 前置条件:所有未注册的用户。 后置条件:提示注册是否成功。 该模块用例如下图3-3所示: 未注册用户 用户注册 图3-3 用户注册用例图 2) 用户登录和授权模块 功能描述:对于第一次使用该应用的用户,在程序启动之后进入配置页面,输入用户名和密码进行授权认证。对于用户在自己的手机上使用过或者已经通过了授权认证则可以不用输入用户名和密码就可以选择用户进行登录。 参与者:未通过授权认证或者未登录。 前置条件:未通过授权认证或者未登录的用户。 后置条件:通过授权配置或者直接登录系统。 用户登录和授权模块用例如下图3-4所示: 用户 通过授权认证 选择用户进行登录 图3-4 用户登录和授权认证用例图 基于Adroid系统的新浪微博客户端的设计与实现 第三章 系统概要设计 用户登录和授权模块流程图如图3-5所示: 判断是否存在已授权用户 授权配置 开始 启动应用 登录 登录到应用首页 结束 是 否 图3-5 用户登录和授权流程图 3) 系统首页信息显示模块 功能描述:显示被用户添加关注的好友的最新微博信息。 参与者:合法登录用户。 前置条件:已登录用户。 后置条件:在首页显示所有被用户添加关注的最新微博信息列表。 该模块用例如下图3-6所示: 用户 查看微博列表 搜索用户 发表新微博 图3-6 系统首页信息显示用例图 系统首页显示模块流程图如图3-7所示: 基于Adroid系统的新浪微博客户端的设计与实现 第三章 系统概要设计 加载数据 开始 进入首页 发表新微博 结束 显示最新微博的列表 搜索其他用户 图3-7显示主界面流程图 4) 发表微博模块 功能描述:该模块主要实现了用户发表微博的功能。 参与者:合法登录用户。 前置条件:已登录用户。 后置条件:新微博信息是否发表成功。 该模块用例如下图3-8所示: 用户 发布微博 图3-8 发表微博用例图 发表新微博流程图如下图3-9所示: 基于Adroid系统的新浪微博客户端的设计与实现 第三章 系统概要设计 点击首页微博发送按钮 开始 输入内容 点击发送 判断 结束 发送失败 图3-9 发表微博流程图 5) 通过关键字搜索相关用户模块 功能描述:该模块主要实现了通过关键字搜索相关用户的功能。 参与者:合法登录用户。 前置条件:已登录用户。 后置条件:搜索成功返回结果。 搜索模块用例如下图3-10所示: 基于Adroid系统的新浪微博客户端的设计与实现 第三章 系统概要设计 用户 查看返回的用户列表 添加对搜索到用户的关注 输入关键字搜索 图3-10 搜索用例图 搜索功能流程图如下图3-11所示: 开始 输入关键词 显示与关键字相关的微博用户列表 点击某一用户进入该用户详细信息页面 添加关注或者返回 结束 图3-11搜索功能流程图 6) 查看微博内容模块: 功能描述:该模块实现了用户可以通过点击某一条微博信息查看该微博的所有内容,并进行评论和转发操作。 参与者:合法登录用户。 前置条件:已登录用户。 后置条件:可以转发和参与评论。 基于Adroid系统的新浪微博客户端的设计与实现 第三章 系统概要设计 查看微博内容模块用例如下图3-12所示: 查看微博 详细信息 转发 评论 用户 图3-12 查看微博用例图 评论微博功能流程图如下图3-13所示: 点击评论按钮进入评论页面 开始 结束 输入评论内容 点击发送 判断 评论失败 图3-13 评论功能流程图 转发功能流程图如下图3-14所示: 基于Adroid系统的新浪微博客户端的设计与实现 第三章 系统概要设计 点击评论按钮进入转发页面 开始 结束 输入转发内容 点击发送 判断 转发失败 图3-14转发功能流程图 7) 查看用户信息模块 功能描述:查看好友的详细信息。 参与者:合法登录用户。 前置条件:已登录用户。 后置条件:查看好友详细信息(包括所有微博,话题,关注,粉丝)关注和取消关注操作。 查看用户信息模块用例如下图3-15所示: 基于Adroid系统的新浪微博客户端的设计与实现 第三章 系统概要设计 添加对好友粉丝的关注 对好友进行关注和取消关注 添加对好友所关注用户的关注 查看好友的详细信息 查看好友的关注列表 用户 查看好友所有微博信息 查看好友的所有话题 查看好友的粉丝列表 图3-15 查看用户信息用例图 查看关注和添加关注功能具体流程图如下图3-16所示: 点击进入关注列表 开始 结束 查看用户信息 添加关注 图3-16 查看关注和添加关注流程图 查看用户所有微博列表功能流程如下图3-17所示: 基于Adroid系统的新浪微博客户端的设计与实现 第三章 系统概要设计 结束 点击微博按钮 开始 用户所有微博列表界面 查看某一条微博详细信息同时进行评论和转发操作 图3-17 查看用户所有微博列表流程图 基于Adroid系统的新浪微博客户端的设计与实现 第四章 数据库设计与实现 第四章 数据库设计与实现 数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效的存储数据,满足各种用户的应用需求。 目前涉及数据库系统主要采用的是以逻辑数据库设计和物理数据库设计为核心的规范设计方法。其中逻辑数据库设计是根据用户要求和特定数据库管理系统的具体特点,以数据库设计理论为依据,设计数据库的全局逻辑结构和每个用户的局部逻辑结构。物理数据库设计是在逻辑结构确定之后,设计数据库的存储结构及其它实现细节。 4.1数据库概念结构设计 对数据库的实体关系的设计是建立在需求分析、系统分析的基础之上的。实体的设计相对比较简单,包括用户信息、与用户相关的信息、微博信息、评论信息。通过分析用实体图描述每个实体的属性。 4.1.1实体图 1) 用户实体属性图如下图4-1所示: Token失效期 代表用户身份的access token 微博账号 用户 ID自增主键 用户ID 粉丝数量 TokenSecret用于获取AcessToken 图4-1用户实体图 基于Adroid系统的新浪微博客户端的设计与实现 第四章 数据库设计与实现 2) 用户相关信息实体属性图如下图4-2所示: 用户ID 用户相关信息ID 用户图标 微博账号 用户相关信息 最新微博 图4-2用户相关信息实体图 3) 微博信息实体属性图如下图4-3所示: 微博ID 内容 用户ID 用户名 用户图标 时间 是否有图片 微博 图4-3微博信息实体图 4) 评论信息实体属性如下图4-4所示: 微博ID 时间 评论ID 评论内容 用户ID 评论 图4-4评论信息实体图 基于Adroid系统的新浪微博客户端的设计与实现 第四章 数据库设计与实现 4.1.2系统实体联系 根据对系统的分析和设计,本系统的所有实体的关系包括:用户相关信息存储了与用户有关的但是不经常进行操作的数据所以用户和用户相关信息是一对一的关系。用户可以发表多篇微博,所以用户和微博是一对多的关系。用户也可以发表多篇评论所以用户和评论是一对多的关系。一篇微博可以被多次评论,所以微博和评论是一对多的关系。另外,用户可以添加对其他多个用户的关注也可以被其他多个用户关注,所以用户和用户是多对多的关系。本系统实体之间的关系如下图4-5所示: 用户 用户相关信息 微博 评论 包含 1 1 包含 1 N 发表 发表 1 N 1 N 图4-5系统E-R图 4.2系统数据库物理建模 物理建模,即数据库建模,建立在概念模型的基础上,每一个实体对应一个数据库表,实体中的每一个属性对应数据表中的每一个字段。有关系链接的实体,在生成物理模型以后会存在相应的关系。 本系统基于性能的考虑,并且大部分数据从网络获取,所以只有少部分数据需要存储,即用户信息、用户的相关信息、微博、评论。本系统选择SQLite数据库存储数据。建立数据库sina_weibo.db,并且建立四张表t-user存储用户的个人授权认证的数据。t-userEntry表用于储存与用户相关联的一些数据。t-weibo表用于存储与微博内容相关的数据。t-comment表存储评论内容相关的数据。 基于Adroid系统的新浪微博客户端的设计与实现 第四章 数据库设计与实现 1) 用户数据表(t-user):主要存储与用户授权认证的相关信息包括代表用户身份的token和secret字段以及token的失效期。其他字段包括自动的增减的编号、微博账号、用户编号、粉丝数量。 表4-1 用户数据表 属性 数据类型 说明 _id integer 自动增加的主键 userId varchar 用户的id token varchar 代表用户身份的access token expires varchar token失效期 fanseCount Integer 粉丝数量 tokenSecret varchar 用户获取acessToken,鉴权用户身份等 userName varchar 微博账号 2) 用户相关数据表(t-userEntry):存储用户微博账号的相关信息包括自动增加的编号、用户图标、最新微博信息、微博账号、和用户编号。用户编号与用户数据表相关联。 表4-2 用户相关信息表 属性 数据类型 说明 _id integer 自动增加的主键 userIcon varchar 图标 lastWeibo varchar 最新微博 username varchar 微博账号 userId varchar 用户id 3) 微博信息数据表(t-weibo):存储微博的相关信息包括自动增加的编号、内容、时间、是否有图片、用户编号、用户名。用户编号与用户数据表相关联。 表4-3 微博信息表 属性 数据类型 说明 _id integer 自动增加的主键 text varchar 微博的内容 userId varchar 用户的id username varchar 用户名 userIcon varchar 用户图标 time varchar 时间 haveImage boolean 是否有图片 基于Adroid系统的新浪微博客户端的设计与实现 第四章 数据库设计与实现 4) 评论信息数据表(t-comment):存储对微博的评论内容,时间等。用户编号和微博编号分别与用户数据表和微博信息表相关联。 表4-4 评论信息表 属性 数据类型 说明 _id integer 自动增加的主键 text varchar 评论内容 userId varchar 用户id time varchar 评论时间 weiboId integer 微博id 基于Adroid系统的新浪微博客户端的设计与实现 第五章 系统详细功能实现 第五章 系统详细功能实现 本应用主要实现了四个主要模块,包括应用登录模块用户可以使用授权配置和用户注册并且登录系统。主界面显示模块用户可以发表新的微博和通过昵称搜索好友。微博浏览模块进入浏览微博的详细页面,用户可以评论微博和转发微博。用户模块可以获取用户的详细信息,可以查看该用户的关注列表,话题列表,粉丝类表,和该用户所发表的全部微博。 5.1登录模块实现 5.1.1用户授权配置模块 程序启动,如果用户是第一次使用该应用,则需要跳转到配置页面,在用户配置页面用户输入新浪微博的用户名和密码,进行授权。如果用户已经通过了配置和授权,则只需要选择要登录的用户进行登录。授权配置页面如下图5-1所示: 图5-1 用户配置页面 核心代码: Weibo weibo = Weibo.getInstance(); weibo.setupConsumerConfig(CONSUMER_KEY, CONSUMER_SECRET); // Oauth2.0 基于Adroid系统的新浪微博客户端的设计与实现 第五章 系统详细功能实现 weibo.setRedirectUrl("http://sports.sina.com.cn/"); // 此处回调页内容应该替换为与appkey对应的应用回调页 // 对应的应用回调页可在开发者登陆新浪微博开发平台之后, // 进入我的应用--应用详情--应用信息--高级信息--授权设置--应用回调页进行设置和查看, weibo.authorize(AuthorizeActivity.this,new AuthDialogListener()); 名词解释: 表5-1相关名词解释 Consumer_key 分配给每个第三方应用的app key。用于鉴权身份,显示来源等功能。 Consumer_secret 生成请求request Token的secret,与consumer key一起分配。 Oauth_token 服务器根据app key和时间,callback_url等哈希出的token值,用于获取oauth verifier。 Oauth_token_secret 与oauth token一起使用,用于获取oauth verifier。 Oauth_verifier 通过oauth页面返回的verifier,用于最终获取access token。 Access_token 表示用户身份的token,用于微博API的调用。 5.1.2用户登录模块 用户在登录本应用时可以点击屏幕中央的一个下拉框,在下拉框中选择用户要登录的用户,选中要登录的用户再点击登录按钮就可以登录新浪微博客户端。用户登录页面如下图5-2所示: 图5-2用户登录页面 基于Adroid系统的新浪微博客户端的设计与实现 第五章 系统详细功能实现 实现算法: 第一步: 获取微博实体类,传入app key, secret,以及callback_url。 第二步: 用获取到的oauth token , oauth_token_secret访问open API authorize页面。 第三步: 获取到callback的oauth_verifier,并根据它获取accessToken,完成登录。 5.2主界面显示模块实现 首页显示被用户添加了关注的用户的最新微博信息、发表微博、更新最新微博列表、通过昵称搜索其他新浪微博用户。 5.2.1显示最新微博列表 在此功能模块内,用户可以点击搜索按钮进入搜索页面,点击发布新微博按钮进入发表新微博页面,点击刷新按钮刷新最新的微博列表,并且可以通过滚动鼠标分页显示更多的微博信息。系统首页如下图5-3所示: 图5-3 系统首页 基于Adroid系统的新浪微博客户端的设计与实现 第五章 系统详细功能实现 核心代码: WeiboParameters params = new WeiboParameters(); //设置分页的页码和每页显示多少条 params.add("count", pageSize == null ? Constants.PAGE_SIZE+"" : pageSize); params.add("page", pageNow+""); Weibo weibo = Weibo.getInstance(); String rs = null; //发送请求到新浪微博服务器 rs = weibo.request(HomeActivity.this, Weibo.SERVER + "statuses/friends_timeline.json", params, Utility.HTTPMETHOD_GET, weibo.getAccessToken()); 5.2.2输入关键字搜索相关微博用户 用户在搜索页面的关键字输入框中输入想要搜索的用户的昵称,再点击搜索按钮就可以列出与之相关的所有用户的列表。用户点击列表中的某一项即可查看该用户的详细信息,并且添加关注。用户搜索页面如下图5-4所示: 图5-4用户搜索页面 核心代码: WeiboParameters bundle = new WeiboParameters(); //把关键字作为参数 基于Adroid系统的新浪微博客户端的设计与实现 第五章 系统详细功能实现 bundle.add("q", keyWords); Weibo weibo = Weibo.getInstance(); //发送请求到新浪微博服务器,返回搜索到的数据 data = weibo.request(SearchActivity.this, Namespaces.SEARCH, bundle, Utility.HTTPMETHOD_GET, weibo.getAccessToken()); 5.2.3发表微博功能 用户可以通过点击首页的发表微博按钮,弹出输入对话框,输入内容点击发送按钮,如果发送成功则返回首页。发布新微博页面如下图5-5所示: 图5-5 新微博发表页面 核心代码: WeiboParameters params = new WeiboParameters(); //把微博内容字作为参数 params.add("status",c); Weibo weibo = Weibo.getInstance(); String data = null; //发送请求到新浪微博服务器,返回搜索到的数据 data = weibo.request(WeiBoEditActivity.this, Namespaces.WEIBO_SEND, params, Utility.HTTPMETHOD_POST, weibo.getAccessToken()); 5.3微博信息浏览模块实现 通过点击微博列表中的某一条微博信息可以查看这条微博的详细信息。进入浏览微博信息页面可以通过点击页面下方的评论按钮,评论该条微博。也可以点击转发按钮,转发这条微博。微博信息浏览页面如下图5-6所示: 基于Adroid系统的新浪微博客户端的设计与实现 第五章 系统详细功能实现 图5-6微博信息浏览页面 核心代码: //根据微博ID返回某条微博的评论列表 WeiboParameters params3 = new WeiboParameters(); params3.add("id", key); String temp3 = weibo.request(ViewActivity.this, Namespaces.WEIBO_COMMENTS, params3, Utility.HTTPMETHOD_GET, weibo.getAccessToken()); 用户通过点击微博详细信息页面的评论按钮进入微博信息评论页面,用户可以输入评论的内容对这条微博信息进行评论。评论微博界面如下图5-7所示: 图5-7评论发表页面 基于Adroid系统的新浪微博客户端的设计与实现 第五章 系统详细功能实现 核心代码: WeiboParameters params = new WeiboParameters(); params.add("access_token", ConfigHelper.nowUser.getToken()); params.add("id", id); params.add("comment", content); String rs = null; Weibo weibo = Weibo.getInstance(); rs = weibo.request(CommentEditActivity.this, Namespaces.WEIBO_COMMENT, params, Utility.HTTPMETHOD_POST, weibo.getAccessToken()); 5.4获取用户信息模块实现 用户通过点击微博详细信息浏览页面中的查看用户详细信息按钮,进入查看用户详细信息的页面,在该页面中用户可以查看被关注的用户的昵称、头像、个人介绍;可以显示该用户的粉丝和粉丝数量;显示用户所关注的用户和关注的数量;显示用户发表过的所有微博和微博数量;显示用户发表过的话题的内容和数量。同时也可以对该用户进行关注和取消关注操作。用户详细信息浏览页面如下图5-8所示: 图5-8 用户详细信息浏览页面 基于Adroid系统的新浪微博客户端的设计与实现 第五章 系统详细功能实现 核心代码: Weibo weibo = Weibo.getInstance(); rs = weibo.request(UserActivity.this, isLike==true ?Namespaces.DESTROY_FOLLOWING : Namespaces.USER_FOLLOWING,params[0],Utility.HTTPMETHOD_POST, weibo.getAccessToken()); 5.4.1查看关注功能 用户点击关注按钮可以显示用户所关注的所有用户列表,在浏览该用户列表的同时,可以点击某一个用户浏览这些用户的详细信息,并对其添加关注。关注功能详细如下图5-9所示: 图5-9 添加关注页面 核心代码: //发送请求到服务器添加关注 Weibo weibo = Weibo.getInstance(); rs = weibo.request(UserListActivity.this, following == true ? Namespaces.DESTROY_FOLLOWING : Namespaces.USER_FOLLOWING,params[0], Utility.HTTPMETHOD_POST,weibo.getAccessToken()); 5.4.2查看用户所有微博信息功能 用户点击微博按钮可以进入该用户所发所有微博的列表页面,在该页面用户可以查看用户所发微博的内容和时间。点击某一条微博就可以查看这条微博的详细内容,同时也可以进行转发和评论等操作。该功能界面设计如下图5-10所示: 基于Adroid系统的新浪微博客户端的设计与实现 第五章 系统详细功能实现 图5-10 用户所有微博列表页面 核心代码: WeiboParameters params = new WeiboParameters(); params.add("uid", nowUser); params.add("access_token", ConfigHelper.nowUser.getToken()); //设置页码,和页面大小 params.add("count", pageSize == null ? Constants.PAGE_SIZE+ "" : pageSize); params.add("page", pageNow + ""); Weibo weibo = Weibo.getInstance(); //发送请求道新浪微博服务器 rs = weibo.request(UserWeiboActivity.this, Namespaces.USER_WEIBO, params, Utility.HTTPMETHOD_GET, weibo.getAccessToken()); 基于Adroid系统的新浪微博客户端的设计与实现 第六章 系统的测试与维护 第六章 系统的测试与维护 6.1单元测试 测试系统的第一步是测试组成系统的单个构件。测试这些构件称为单元测试。在单元测试过程中,首先检查代码在程序的算法、数据和语法方面有没有缺陷,最后给该构件输入一个测试用例集,以说明该构件是否正确。在单元测试时,主要对单个模块的功能进行测试,不用理会其他的模块的耦合情况。 1) 测试一 在用户授权配置时,用户名或密码有一项为空或者填写错误,系统是否出现预先设定的操作提示。 具体操作:用户名、密码、任意一项为空或者填写有误。 结果:都出现相应的错误原因的信息提示。 结论:要求用户必须填写正确的用户名和密码,才能授权成功。 2) 测试二 在发表新微博时,输入空内容,或者和上一条内容一样的微博时,程序是否有出现预先设定的提示。 具体操作:输入的内容为空,或者和上一条相同的内容。 结果:提示用户内容不能为空,或者请不要输入相同内容。 结论:要求输入正确内容。 3) 测试三 评论微博时,输入评论内容,如果内容为空,程序是否有出现预先设定的内容为空提示。 具体操作:输入空的评论内容。 结果:显示评论内容不能为空。 结论:微博评论功能正常。 4) 测试四 在通过关键字搜索相关用户时,如果输入空内容,程序是否有出现预先设定的内容为空提示。或者输入的关键字没有搜索到相关的内容,搜索无结果有无提示。 具体操作:输入空的搜索内容或者正确的内容。 结果:提示请输入关键字,提示输入内容为空或者提示还没有找到相关内容。 结论:搜索功能正常。 5) 测试五 在对某一用户进行关注和取消关注操作的时候,验证是否已经取消了对其的关注,或添加了对用户的关注。 基于Adroid系统的新浪微博客户端的设计与实现 第六章 系统的测试与维护 具体操作:点击关注按钮和取消按钮。 结果:显示关注或者取消状态。 结论:添加关注和取消关注功能正常。 6.2集成测试 单元测试之后,就需要对系统的所有功能进行测试。在此阶段对照用例进行功能测试。此阶段所发现的往往是概要设计的错误并将各个模块继承起来进行结合测试。继承测试分为两种:一次性组装方式和增殖式组装。即把经单元测试后的模块一次性的组装成系统进行测试,增殖式组装方式即在模块组装的过程中,边组装边测试,每增加一个或几个模块就测试一次,最后组装成最后的系统。 基于Adroid系统的新浪微博客户端的设计与实现 总结 总 结 当今社会对于软件开发是一个分工很细的工作,在开发过程中不同的人负责不同的模块开发,比如有专门的人负责业务逻辑,有专门的人负责图形界面,所以现在的开发人员都是某一方面的专家。在本系统中图形界面不是十分的友好,从美观的角度来说也还是很不够的,这样的界面是不能应用到实践中的。在论文的写作过程中,不仅参考了大量的书籍,而且还有老师指导和帮助,这给论文的编写奠定了良好的理论基础,并且自己亲身体验了现行的微博系统,给本人开发系统及编写论文提供了良好的素材。 本系统经历了从系统问题的提出,系统可行性分析,系统数据库设计,总体的功能模块设计,详细设计,功能模块的实现,到最后的程序测试,就是以这样的一个思路完成整个系统的开发。 经过几个月的努力,基于Android的新浪微博客户端应用终于完成了。由于对Java浓厚的兴趣引发了本人对Android的好奇心,从一开始什么都不懂一直摸索着运用了很多高级技术完成了这个软件。在这个过程中,我学会了很多知识,比如Android环境的搭建、Intent、Activity、Services、ContentProvider、SQLite等,但我学会的最重要的一点是,利用现有的资源去解决问题。在图书馆和网络上寻找解决问题的答案。虽然,这个软件目前运行良好,但是代码的健壮性还很差,在整个工程的构思方面也不足,用户操作界面还是不够灵活友好,这些问题还需要今后逐一解决。于此同时,这个软件还可以进一步扩展,例如:微博广场、私信、推荐好友等,使功能更加强大,带给用户更好的体验与生活的便捷。 通过本系统的开发,使我对书本上的知识点和理论有了更深一层的了解,也使我学会了如何利用所学的知识,把理论结合于实践中,进一步掌握了管理信息系统开发的规律,从而对本专业有了更深刻的认识。此后,我会加倍努力的去研究,在熟练的基础上掌握更多的新型技术,来提高自己的开发水平。 通过这次毕业设计,使我感到高科技的力量。在这次毕业设计的过程中,得到了学校的大力支持,给本人提供了舒适的工作学习环境,也得到了吉大老师的精心指导。由于本人第一次完整的设计程序,价值水平有限,设计中难免有不当之处,还请各位老师给予批评和指正。踉踉跄跄地忙碌了一个月,毕业设计课题也将告一段落。点击运行,也基本达到了预期的效果。虚荣的成就感在没人的时候也总会冒上心头。但由于能力和事件的关系,总是觉得有很多不尽人意的地方,譬如,功能不全、外观粗糙、底层代码不合理...数不胜数。可是,又会有点自恋似的安慰自己:做一件事情,不必过于在乎最终的结果,可贵的是过程中的收获,以此来安抚自己尚未平复的心。 基于Adroid系统的新浪微博客户端的设计与实现 总结 总结制作过程中的经验和教训,在此对这方面的研究提几点建议,以资参考: 1) 要准备充分,在系统分析于设计阶段要做的尽可能详细、全面,以免在后阶段返工,浪费人力、物力、财力。 2) 做好版本控制和备份,一旦出现故障,能尽快恢复到最近最新的版本中,再在此基础上修改。 基于Adroid系统的新浪微博客户端的设计与实现 参考文献 参考文献 [1]杨丰盛.Android应用开发揭秘[M].北京:机械工业出版社,2010,49~508. [2]王世江,佘志龙,陈昱勋,郑明杰.Google Android SDK 开发范例大全(第三版)[M].北京:人民邮电出版社,2011,170~189. [3]李刚.疯狂Android讲义[M].北京:电子工业出版社,2011,20~212. [4]伯内特.Android基础教程(第二版)[M].北京:人民邮电出版社,2011,98~145. [5]杨丰盛.Android技术内幕:系统卷(第一版)[M].北京:机械工业出版社,2011,309~402. [6]韩超,梁泉.Android系统级深入开发:移植与调试[M].北京:电子工业出版社,2011,234 ~327. [7]埃克尔.Java编程思想(第四版)[M].北京:机械工业出版社,2007,560~698. [8]布洛克.Effective Java中文版(第二版)[M].北京:机械工业出版社,2009,120~167. [9]昊斯特曼.JAVA核心技术(卷1):基础知识(原书第八版)[M].北京:机械工业出版社,2008,57~117. [10] 李刚.疯狂Java讲义[M].北京:电子工业出版社,2012,99~112. 基于Adroid系统的新浪微博客户端的设计与实现 致谢 致谢 在论文即将完成之际,本人的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了本人无言的帮助,大学生活即将匆匆忙忙的过去,但自己却能无悔的说我曾今来过。大学这几年给本人带来的影响却不能用时间来衡量,这几年来,经历过的所有事,所有人,都将是以后生活回味的一部分,是为人处世的指南针。既要离开学校,走上工作的岗位了,只是人生历程的又一个起点,在这里祝福大学里跟自己风雨同舟的朋友们,一路走好,未来总会是绚烂缤纷的。请接受我诚挚的谢意!最后还要感谢培养我长大含辛茹苦的父母,谢谢你们! 最后,再次对关心、帮助我的老师和同学表示衷心地感谢!

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享文档获得金币 ] 3 人已下载

下载文档