Skip to content

Latest commit

 

History

History
199 lines (149 loc) · 9.01 KB

paper.md

File metadata and controls

199 lines (149 loc) · 9.01 KB

绪论

研究背景及意义

在现代繁忙的都市生活中,把读书作为生活的常态,是生命中最美好的习惯。在知识经济时代,书籍是人类已有经验和知识的载体。在开放式创新模式下,出现了很多以计算机为媒介,从外部出发,通过与世界的交互来实现个人认识整合、共享和创新的网络体系。然而,在这个“大融合、大变革、大突破”的时代,空气中尽是“信息爆炸”后的云雾缭绕。各种文化、各种风格、各种书籍层出不穷。当读者疲于图书种类繁多,无从选择的时候,当读者灵魂孤独,有感触,但无处倾诉,没有思想的交流与共鸣的时候,国内外一些书评网站应运而生,为广大读者提供一个思想分享交流的平台,例如国内的豆瓣读书,国外的亚马逊(美国)、goodreads等。

随着移动应用的发展,传统的基于PC端的书评应用开始转移到移动终端上,其中智能手机成为人们读书、评书的一个重要终端。通过手机终端,可以探索自己感兴趣的书,扩展自己的阅读视野,碰撞出思想的火花。借助手机上的读书交流App,用户可以查找和收藏自己喜欢的图书,可以和其他人交流读书心得。当然,服务和数据的来源仍是服务器端,但是客服端的改变也带来了很多新的特点,比如阅读的习惯、终端的智能性等。可以说,实现一个基于移动终端的读书交流软件符合新时代生活发展的需要,会受到大家的广泛喜爱。

主要研究内容

读书交流软件主要是给用户提供一个交流的平台,以及书籍的简要信息等, 书籍信息来自国内比较成熟的书籍平台豆瓣. 本软件研究的主要内容是利用当前比较成熟的技术和方案, 以及现有公开的数据,来开发一个移动端APP产品, 其中包含当前主流的一些设计和开发框架,比较成熟的第三方开发服务等.

相关技术概述

Android操作系统

Android系统是谷歌公司在2008年推出的面向移动设备的一款基于Linux的开源操作系统.

Node.js技术

jQuery技术

正则表达式

MVP构架

系统需求分析

系统总体需求概述

系统主要分为服务器端和安卓移动端,移动端主要是和用户进行交互, 包括一系列功能操作,比如登录,查看图书信息,收藏图书,评论图书等, 服务器端则主要是完成数据爬虫的功能,给移动端提供数据支持.

主要功能需求分析

用户登录

为方便用户操作,移动端APP采用第三方(微博/QQ)登录, 服务器端只保存第三方平台的授权信息, 这样用户只需简单授权即可登录,降低用户使用成本, 且不存在安全隐私泄露等风险。

查询/搜索书籍信息

移动端通过扫描书籍ISBN条形码或者输入关键字来查找相应的书籍, 查看相应的书籍信息

书籍榜单

榜单分为新书榜、热门榜等,不定时更新数据, 用户可以直观的看到相应榜单的数据.

收藏书籍

用户登录之后可以收藏和取消收藏书籍, 收藏过的书籍在个人首页查看

评论书籍

可以对书籍进行评论,也可以回复别人的评论, 可以对自己的评论删除.评论可以在个人首页查看 他人回复最近的评论,自己可以收到推送消息.

查看标签

可以查看热门标签,并可以查看这些标签下的书籍

附近的人

可以在地图上看到附近其他用户的位置和动态.

数据库概念设计

[ER图]

开发环境

开发工具及版本

  1. Android Studio 2.0正式版
  2. JDK1.8

运行环境

Android 4.0.3以上

系统总体设计

系统总体构架设计

数据存储服务的解决方案

由于传统数据库的多样性和复杂性,还有额外的管理成本 和代码维护成本,决定采用当今比较成熟的云数据库方案, 综合考虑了几个产品服务,决定采用第三方存储服务LeanCloud, 与其他服务相比,该服务更加方便, 弱化数据类型,提供多平台SDK.使开发者无需关注后台构架, 从而提高了开发效率.

第三方登录分享的解决方案

第三方登录包含QQ和微博登录,第三方分享包含QQ/微博和微信三大主流平台, 首先,需要再这几个平台的开发者服务注册提交应用,申请服务KEY, 然后集成到APP中. 为了简化流程,增加开发效率,使用了比较主流的SharedSDK第三方服务, 该服务是为社交登陆分享提供统一的接口,内部封装了第三方平台的功能, 而开发者不必每个平台单独处理,简化了流程.

推送服务的解决方案

推送服务也使用LeanCloud服务,因为该服务的推送和数据存储服务可以无缝连接, 集成起来比较方便.

地图定位服务的解决方案

移动端的地图和定位服务采用国内比较成熟的高德地图, 移动端需要记录用户的经纬度和所在城市区域. 主要流程是,需要在高德地图开发者平台申请KEY, 然后集成高德地图SDK,在需要的地方调用处理, 在本软件中,主要是登录成功之后需要定位,和附近的人需要地图服务.

书籍简要信息的选取

书籍简要信息来自第三方豆瓣, 书籍简要信息包括书名,作者,出版时间,摘要,作者信息,目录,页数,出版社, 装帧,ISBN码,书籍标签.

MVP构架设计

模块架构设计

[模块图]

界面构架设计

数据库逻辑设计

数据存储服务采用的第三方服务LeanCloud, 根据其开发文档和说明,主要的数据类型有Number,String,...

功能详细设计与实现

爬虫程序功能设计

由于书籍信息来自第三方豆瓣,爬虫模块分为3个小模块:爬取书籍模块, 爬取新书模块,和搜索书籍模块. 爬虫的任务是爬取某个页面,通过解析返回的HTML数据,获得想要的信息. 解析的过程采用jQuery选择器和正则表达式配合使用, 首先通过jQuery解析DOM,逐个获得目标数据的HTML标签, 再通过jQuery获取标签内容,最后通过正则表达式做过滤处理.

爬取书籍模块

该模块需要输入书籍ID的参数,通过书籍ID去爬取豆瓣相应页面. 主要工作流程是,当收到爬虫某本书的请求时, 通过其传入的书籍ID参数,调用爬虫程序,爬取豆瓣指定页面的信息, 解析相应的信息保存到数据库中,最后将数据或错误信息返回给调用源.

爬取新书模块

该模块的主要功能是更新新书榜,数据来源于豆瓣新书榜. 主要工作流程是,每天定时爬取豆瓣新书书单页面, 解析页面,通过ID判断是否有新书, 如果有则调用爬取书籍模块.

搜索书籍模块

该模块需要输入查询参数,该参数包括ISBN码和关键字两种, 根据参数返回搜索的结果. 主要工作流程是,

  1. 参数是ISBN码时,先在已有数据表中查找,如果找到直接返回给调用源, 否则,调用根据ISBN号爬取豆瓣搜索页面, 解析页面,通过ID调用爬取书籍模块,然后返回给调用源.
  2. 参数是关键字时,先在缓存表中查找该搜索参数有没有对应的记录, 如果有直接返回给调用源,否则根据关键字爬取豆瓣搜索页面, 解析页面,通过ID调用爬取书籍模块,然后返回给调用源. 同时把该搜索参数和结果保存到缓存表中,以便下次相同的请求.

用户登录分享功能设计

软件采用第三方授权的方式来登录APP,包括QQ和微博两大主流平台, 首先需要在其开放平台申请KEY,申请通过之后,集成到APP中. 主要流程是,当用户点击登录之后,跳转到相应平台的授权页面, 然后判断授权结果,若成功则进入主界面,否则提示授权失败消息. 授权成功之后,会根据授权信息,判断是否已经授权过,如果是, 不处理,否则,产生新用户,生成唯一ID. 第三方登录主要流程如下:

用户分享操作是将看到的书籍信息分享给好友等,目前支持分享到 QQ好友,QQ空间,微博,微信好友,微信收藏,微信朋友圈, 默认分享内容是当前书籍信息和书籍图片.

搜索书籍功能设计

APP主界面,点击顶部搜索图标进入搜索模块,可以输入关键字, 或者调用摄像头扫描书籍ISBN条形码,然后调用服务器端爬虫搜索书籍模块, 再展示到界面上. 扫描条形码功能,采用谷歌提供的第三方开源包Zxing,

榜单和标签游览功能设计

APP侧面栏包含榜单和标签界面的入口,默认是榜单界面, 榜单分为热门榜,新书榜等,标签界面是热门标签, 点击即可查看相应的书籍.

书籍信息游览相关功能设计

书籍详情页面包含书籍信息显示,收藏书籍,评论书籍.

附近的人模块功能设计

进入该模块,会定位到地图上,并选取最近的10个用户 显示到地图上,点击对应用户的标记即可打开该用户主页, 查看对方的动态.

随机推荐模块功能设计

用户主页功能设计

用户主页分为最近的收藏和最近的评论,倒序显示

夜间模式切换功能设计

系统功能测试