毕业设计(论文)-基于Android的校园信息服务系统.doc_第1页
毕业设计(论文)-基于Android的校园信息服务系统.doc_第2页
毕业设计(论文)-基于Android的校园信息服务系统.doc_第3页
毕业设计(论文)-基于Android的校园信息服务系统.doc_第4页
毕业设计(论文)-基于Android的校园信息服务系统.doc_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

南京邮电大学 毕 业 设 计(论 文)全套设计加扣3012250582 题 目基于Android的校园信息服务系统专 业计算机科学与技术学生姓名班级学号指导教师指导单位南京邮电大学计算机学院 日期: 2014年 03月10日 至 2014年06月13日毕业设计(论文)原创性声明本人郑重声明:所提交的毕业设计(论文),是本人在导师指导下,独立进行研究工作所取得的成果。除文中已注明引用的内容外,本毕业设计(论文)不包含任何其他个人或集体已经发表或撰写过的作品成果。对本研究做出过重要贡献的个人和集体,均已在文中以明确方式标明并表示了谢意。 论文作者签名: 日期: 年 月 日摘 要Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。第一部Android智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。2013年的第四季度,Android平台手机的全球市场份额已经达到78.1%,全世界采用这款系统的设备数量已经达到10亿台。本文是以java和数据库的一些基础技术为基础,详细地阐述了一个完整的开发环境的搭建和一个android应用的开发过程。具体说来包括,先是介绍了开发所涉及的一些技术,如Tomcat,Servlet,Mysql等。然后通过功能模块设计,数据库表的设计,服务端的接口以及android端的界面的绘制等方面进一步说明开发过程。 关键词:Android;java;数据库;Servlet;TomcatABSTRACTAndroid is developed by Google and the Open Handset Alliance company, which is a Linux-based open source and freely operating system , and mainly used in mobile devices, such as smart phones and tablet PCs.It does not yet have a unified Chinese name , the Chinese mainland more people use the AnZhuo or AnZhi . Android tablet PC is gradually extended to other areas, such as TVs, digital cameras , game consoles and so on. By the fourth quarter of 2013 , the global market share of Android platform for mobile phones has reached 78.1% . In September 24, 2013, the number of devices using this system worldwide has reached one billion.In this thesis, we mainly introduces how to develop a complete Android application and provide a system based on the technology of Java and Database.The thesis first introduces some technology involved ,such as Tomcat, Servlet, Mysql , etc. And then for further information, this thesis has a debate on the design of function,the design of database table ,the interface of the server and the design of Android layouts , to explain the development process.Key words:Android; java; database; servlet; tomcat目 录第一章 引言11.1 课题背景11.2 课题目的和意义11.3 Android平台的优势21.4 本文的主要研究内容21.5 本文的组织结构3第二章 环境搭建及相关技术简介42.1 Servlet技术4 2.1.1 简介4 2.1.2 实现过程4 2.1.3 工作模式4 2.1.4 编程接口52.2 Tomcat容器6 2.2.1 基本简介6 2.2.2 配置方法72.3 Mysql知识简介8 2.3.1 简介8 2.3.2 基本命令82.4 通过tomcat访问电脑资源92.5 tomcat下配置mysql连接池92.6 本章小结9第三章 基于Android的校园信息服务系统103.1 注册登录10 3.1.1 数据库建表10 3.1.2 注册模块10 3.1.3 登录模块10 3.1.4 界面展示113.2 新鲜事模块11 3.2.1 数据库建表12 3.2.2 主活动可触发的事件12 3.2.3 发布新鲜事12 3.2.4 界面展示133.3 论坛14 3.3.1 数据库建表14 3.3.2 主活动可触发的事件14 3.3.3 发布话题14 3.3.4 界面展示143.4 集市16 3.4.1 数据库建表16 3.4.2 主活动可触发的事件16 3.4.3 发布物品17 3.4.4 界面展示173.5 树洞18 3.5.1 数据库建表18 3.5.2 主活动可触发的事件18 3.5.3 发布19 3.5.4 界面展示193.6 消息接收20 3.6.1 数据库建表20 3.6.2 实现方法20 3.6.3 界面展示213.7 设置213.8 扩展性功能22 3.8.1 加入表情22 3.8.2 插入多张图片22 3.8.3 图片本地缓存233.9 本章小结23第四章 服务器端部署244.1 DAO模式244.2 以用户注册登录等操作为例的DAO实例244.2.1 DAO接口244.2.2 实现DAO接口的具体类244.2.3 DAO的工厂类254.2.4 数据传递对象254.3 Servlet接口264.4 数据库连接池274.5 本章小结28第五章 常见问题及解决措施245.1 OOM错误295.1.1 什么是OOM295.1.2 为什么会发生OOM295.1.3 解决办法295.2 ListView中的Item无法响应点击295.3 乱码问题305.4 本章小结30结束语31致 谢32参考文献33南京邮电大学2014届本科生毕业设计(论文)第一章 引言1.1 课题背景随着采用Android系统的谷歌手机、平板电脑等产品逐渐扩大市场占有率,Android平台人才的缺口日益显现。据业内统计,目前国内的3G研发人才缺口有三、四百万,其中Android研发人才缺口至少30万。职场专家指出,想要从事Android开发的人员,除了基础的计算机技术知识要扎实之外,要根据各类企业、各类岗位的不同需求,补充与岗位相关的Android技术知识。此外,还要注重项目经验的积累。从人才需求类型来看,目前对Android人才需求一类是偏向硬件驱动的Android人才需求,一类是偏向软件应用的Android人才需求。从目前的招聘需求来看,后者的需求最大,包括手机游戏、手机终端应用软件和其他手机应用软件的开发。据职酷网职位搜索库统计显示,目前企业对这类应用软件的 Android开发人才占总需求的72%。 职业专家分析说,由于目前Android 技术较新,无论是相关书籍、培训还是大学教育,都处于初级阶段,因此Android人才短期将供不应求。从长期来看,随着各种移动应用和手机游戏等内容需求日益增加,也将激励大中小型手机应用开发商加大对Android应用的开发力度,因此Android人才的就业前景也非常广泛。1.2 课题目的和意义Android 领域人才与其他技术领域的程序开发人才的最大区别,在于Android是个新的系统环境,要有创新思维,并且这些创新思维能够在产品上实现,这就需要对所开发产品自身的熟悉,同时还要了解产品用户的需求。另外,还要关注相关领域的新技术,有较强的学习能力。在平时工作中,积极地去做项目,不断与别人交流,思考如何把项目做得更好。对于大学生而言,如果,自身对硬件底层相对了解,可以选择一些设备厂商;对于一些生活应用方面有兴趣,有很多新奇的想法希望通过程序实现,也可以选择一些应用程序方面的开发;对于技术能力相对较弱或对于移动产品有兴趣的学生,也可以选择一些产品专员、测试、设计等岗位。进入Android平台很容易,只要有计算机方面的知识,扎实的编程功底,Java开发技术和对计算机语言的理解、对数据库、协议的理解,但越往高层次做,要求就越高,如对于产品概念的把握,对于交互的把握,如何让户使用起来更方便。在这个领域做到优秀,首先要爱这个平台,喜欢Android的各类软件,愿意下载体验它;其次要明确自己的发展方向,看自己究竟是适合做上层的,偏向UI、交互逻辑方面的,还是下层的数据库、网络多线程等内容;第三多看源代码,多学习开源的学习资料。遇到问题随时学习,如一个手机安全软件,需要拦截一些垃圾信息,弄懂哪些算法才能实现这些功能。第四,要能够把一个项目完整地做出来。1.3 Android平台的优势(1)开放性在优势方面,Android平台首先就是其开发性,开发的平台允许任何移动终端厂商加入到Android联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。开发性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,最大的受益正是丰富的软件资源。开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。(2)不受束缚在过去很长的一段时间,特别是在欧美地区,手机应用往往受到运营商制约,使用什么功能接入什么网络,几乎都受到运营商的控制。自从2007年iPhone上市后,用户可以更加方便地连接网络,运营商的制约减少。随着EDGE、HSDPA这些2G至3G移动网络的逐步过渡和提升,手机随意接入网络已不是运营商口中的笑谈。(3)丰富的硬件这一点还是与Android平台的开放性相关,由于Android的开放性,众多的厂商会推出千奇百怪,功能特色各具的多种产品。功能上的差异和特色,却不会影响到数据同步、甚至软件的兼容,如同从诺基亚Symbian风格手机一下改用苹果iPhone,同时还可将Symbian中优秀的软件带到iPhone上使用、联系人等资料更是可以方便地转移。(4)方便的开发Android平台提供给第三方开发商一个十分宽泛、自由的环境,不会受到各种条条框框的阻扰,可想而知,会有多少新颖别致的软件会诞生。但也有其两面性,血腥、暴力、情色方面的程序和游戏如何控制正是留给Android难题之一。(5)Google应用在互联网的Google已经走过10年度历史,从搜索巨人到全面的互联网渗透,Google服务如地图、邮件、搜索等已经成为连接用户和互联网的重要纽带,而Android平台手机将无缝结合这些优秀的Google服务。1.4 本文的主要研究内容本文是以java和数据库的一些基础技术为基础,详细地阐述了一个完整的开发环境的搭建和一个android应用的开发过程。具体说来包括,先是介绍了开发所涉及的一些技术,如Tomcat,Servlet,Mysql等。然后通过功能模块设计,数据库表的设计,服务端的接口以及android端的界面的绘制等方面进一步说明开发过程。1.5 本文的组织结构本文在第二章中将讲述开发环境的搭建以及涉及的相关技术的简介。开发环境包括java se 1.7,android sdk,tomcat,mysql,eclipse等的安装。技术包括servlet,android相关技术。在第三章中,详细地介绍了校园信息服务系统的各个模块。每个模块的构思,功能,做法,最后介绍了一些扩展性的功能,如加入表情等。第四章简略介绍了服务端代码的部署和设计思想。第五章中描述了在开发过程中遇到的一些常见问题,以及其解决措施。 结尾中阐述了整个开发的流程。总结了应用中好的一些做法和构思,同时也发现一些不足并希望在以后的开发中做的更好。 第二章 环境搭建及相关技术简介2.1 Servlet技术2.1.1 简介Servlet是在服务器上运行的小程序。这个词是在Javaapplet的环境中创造的,Java applet是一种当作单独文件跟网页一起发送的小程序,它通常用于在客户端运行,结果得到为用户进行运算或者根据用户互作用定位图形等服务。服务器上需要一些程序,常常是根据用户输入访问数据库的程序。这些通常是使用公共网关接口(CGI, Common Gateway Interface)应用程序完成的。然而,在服务器上运行Java,这种程序可使用Java编程语言实现。在通信量大的服务器上,Java Servlet的优点在于它们的执行速度更快于CGI程序。各个用户请求被激活成单个程序中的一个线程,而无需创建单独的进程,这意味着服务器端处理请求的系统开销将明显降低。2.1.2 实现过程最早支持Servlet技术的是JavaSoft的Java Web Server。此后,一些其它的基于Java的WebServer开始支持标准的ServletAPI。Servlet的主要功能在于交互式地浏览和修改数据,生成动态Web内容。这个过程为:客户端发送请求至服务器端;服务器将请求信息发送至Servlet。Servlet生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求。服务器将响应返回给客户端。Servlet看起来像是通常的Java程序。Servlet导入特定的属于Java ServletAPI的包。因为是对象字节码,可动态地从网络加载,可以说Servlet对Server就如同Applet对Client一样,但是,由于Servlet运行于Server中,它们并不需要一个图形用户界面。从这个角度讲,Servlet也被称为FacelessObject。一个Servlet就是Java编程语言中的一个类,它被用来扩展服务器的性能,服务器上驻留着可以通过“请求-响应”编程模型来访问的应用程序。虽然Servlet可以对任何类型的请求产生响应,但通常只用来扩展Web服务器的应用程序。2.1.3 工作模式客户端发送请求至服务器,服务器启动并调用Servlet,Servlet根据客户端请求生成响应内容并将其传给服务器,服务器将响应返回客户端。2.1.4 编程接口HTTPServlet使用一个 HTML 表单来发送和接收数据。要创建一个HTTPServlet,请扩展HttpServlet类, 该类是用专门的方法来处理 HTML表单的 GenericServlet 的一个子类。 HTML 表单是由 和 标记定义的。表单中典型地包含输入字段(如文本输入字段、复选框、单选按钮和选择列表)和用于提交数据的按钮。当提交信息时,它们还指定服务器应执行哪一个Servlet(或其它的程序)。 HttpServlet 类包含 init()、destroy()、service() 等方法。其中 init() 和 destroy() 方法是继承的。(1) init() 方法在 Servlet 的生命期中,仅执行一次 init() 方法。它是在服务器装入 Servlet 时执行的。 可以配置服务器,以在启动服务器或客户机首次访问 Servlet 时装入 Servlet。 无论有多少客户机访问 Servlet,都不会重复执行 init() 。缺省的 init() 方法通常是符合要求的,但也可以用定制 init() 方法来覆盖它,典型的是管理服务器端资源。 例如,可能编写一个定制 init() 来只用于一次装入 GIF 图像,改进 Servlet 返回 GIF 图像和含有多个客户机请求的性能。另一个示例是初始化数据库连接。缺省的 init() 方法设置了 Servlet 的初始化参数,并用它的 ServletConfig 对象参数来启动配置, 因此所有覆盖 init() 方法的 Servlet 应调用 super.init() 以确保仍然执行这些任务。在调用 service() 方法之前,应确保已完成了 init() 方法。(2) service() 方法service() 方法是 Servlet 的核心。每当一个客户请求一个HttpServlet 对象,该对象的service() 方法就要被调用,而且传递给这个方法一个请求(ServletRequest)对象和一个响应(ServletResponse)对象作为参数。 在 HttpServlet 中已存在 service() 方法。缺省的服务功能是调用与 HTTP 请求的方法相应的 do 功能。例如, 如果 HTTP 请求方法为 GET,则缺省情况下就调用 doGet() 。Servlet 应该为 Servlet 支持的 HTTP 方法覆盖 do 功能。因为 HttpServlet.service() 方法会检查请求方法是否调用了适当的处理方法,不必要覆盖 service() 方法。只需覆盖相应的 do 方法就可以了。Servlet的响应可以是下列几种类型:一个输出流,浏览器根据它的内容类型(如text/HTML)进行解释。一个HTTP错误响应, 重定向到另一个URL、servlet、JSP。(3)doGet()方法当一个客户通过HTML表单发出一个HTTP GET请求或直接请求一个URL时,doGet()方法被调用。与GET请求相关的参数添加到URL的后面,并与这个请求一起发送。当不会修改服务器端的数据时,应该使用doGet()方法。(4)doPost()方法当一个客户通过HTML 表单发出一个HTTP POST请求时,doPost()方法被调用。与POST请求相关的参数作为一个单独的HTTP 请求从浏览器发送到服务器。当需要修改服务器端的数据时,应该使用doPost()方法。(5) destroy() 方法destroy() 方法仅执行一次,即在服务器停止且卸装Servlet 时执行该方法。典型的,将 Servlet 作为服务器进程的一部分来关闭。缺省的 destroy() 方法通常是符合要求的,但也可以覆盖它,典型的是管理服务器端资源。例如,如果 Servlet 在运行时会累计统计数据,则可以编写一个 destroy() 方法,该方法用于在未装入 Servlet 时将统计数字保存在文件中。另一个示例是关闭数据库连接。当服务器卸装 Servlet 时,将在所有 service() 方法调用完成后,或在指定的时间间隔过后调用 destroy() 方法。一个Servlet 在运行service() 方法时可能会产生其它的线程,因此请确认在调用 destroy() 方法时,这些线程已终止或完成。(6) GetServletConfig()方法GetServletConfig()方法返回一个 ServletConfig 对象,该对象用来返回初始化参数和ServletContext。ServletContext 接口提供有关servlet 的环境信息。(7) GetServletInfo()方法GetServletInfo()方法是一个可选的方法,它提供有关servlet 的信息,如作者、版本、版权。当服务器调用sevlet 的Service()、doGet()和doPost()这三个方法时,均需要 请求和响应对象作为参数。请求对象提供有关请求的信息,而响应对象提供了一个将响应信息返回给浏览器的一个通信途径。javax.servlet 软件包中的相关类为ServletResponse和ServletRequest,而javax.servlet.http软件包中的相关类为HttpServletRequest 和 HttpServletResponse。Servlet 通过这些对象与服务器通信并最终与客户机通信。Servlet 能通过调用请求对象的方法获知客户机环境,服务器环境的信息和所有由客户机提供的信息。Servlet 可以调用响应对象的方法发送响应,该响应是准备发回客户机的。2.2 Tomcat容器2.2.1 基本简介Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML(标准通用标记语言下的一个应用。)页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。2.2.2 配置方法(1)启动内存参数的配置tomcat/bin/catalina.bat 如果是linux 就是 catalina. sh在rem 的后面增加如下参数set JAVA_OPTS= -Xms256m -Xmx256m -XX:MaxPermSize=64m(2)修改Tomcat的JDK目录打开tomcat/bin/catalina.bat在最后一个rem后面增加set JAVA_HOME=C:Program FilesJavajdk1.6.0(3)增加虚拟目录/tomcat/conf/server.xml第一行是以前默认存在的,第二行是新增的使用默认配置的tomcat,另外虚拟目录也可这设置:因为默认情况下,tomcat启动过程中配置虚拟目录的时候会从 webapps目录下查找webContent应用。这样配置好了,即使以后从一台服务器移植到另一台服务器,不做任何修改也能运行起来。(4)虚拟主机配置文件tomcat/conf/server.xml.2.3 Mysql知识简介2.3.1 简介MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。2.3.2 基本命令-创建数据库mysql create database 数据库名称-创建表mysql create table 表名 (列的名字(id)类型(int(4)primary key(定义主键) auto_increment(描述 自增),);-查看所有数据库mysql show databases ;-使用某个数据库mysql use 数据库名称;-查看所使用数据库下所有的表mysql show tables;-显示表的属性结构mysql desc 表名;-选择表中数据的显示-* 代表选择所有列 ,mysql select * from 表名 where id=?and name=? or name=?;mysql select id,name from 表名order by 某一列的名称 desc(降序,asc为升序)-删除表中的数据mysql delete from table where id=?or name=? (and name=?);-删除表mysql drop table;-删除数据库mysql drop database;2.4 通过tomcat访问电脑资源在做应用测试的时候,一般是在局域网内测试。这样电脑就成为了服务器,存储着各种资源并能被客户端进行访问。因此,如果要通过tomcat访问到主机D盘中的files文件夹中的图片,可以这样做:(1)在tomcat里的server.xml中找到context元素(2)添加一个 ,比如(3)然后就可以通过 :8080/image/图片名 来访问d:files里的图片了2.5 tomcat下配置mysql连接池在web工程的meta-inf文件夹下新建context.xml文件,内容为:重新启动。2.6 本章小结本章介绍了几种涉及的技术,都是在应用开发中遇到的技术,有些是图书馆借书学得,有些是网上看别人的博客,这些都是很实用常见的技术。第三章 基于Android的校园信息服务系统3.1 注册登录3.1.1 数据库建表用户表:create table user (username varchar(30) primary key, / 用户名(主键)userpasswd varchar(20) not null, / 密码registertime timestamp default current_timestamp); / 注册时间用户信息表create table userinfo(username varchar(30) primary key, / 用户名(主键)gender varchar(6) , / 性别major varchar(30), / 专业faculty varchar(30), / 学院grade varchar(20), / 年级signature varchar(100), / 签名icon varchar(50), / 头像school varchar(50); / 学校3.1.2 注册模块用户名只能使用汉字,字母或数字,代码中使用正则表达式进行检测。其中,正则表达式为:u4e00-u9fa5A-Za-z0-9+$。如果出现非法字符,将不能注册。密码只能是字母或数字,6-16位,正则表达式为:A-Za-z0-96,16$。若注册成功则会返”success”字符串,否则返回”fail”,若用户名已经被使用则会提示”duplicate”。3.1.3 登录模块Android端通过点击发送用户名和密码到服务端。服务端的接口为public String login(String username, String password);查询的SQL语句为:String sql=select * from user inner join userinfo on user.username=userinfo.username where user.username=? and userpasswd=?;如果验证通过,则会读出该用户的信息并包装成一个字符串返回。否则返回”fail”;3.1.4 界面展示Android界面所使用的是xml技术,注册界面如图3.1所示,主界面如图3.2所示。图 3.1 注册界面图 3.2 主界面3.2 新鲜事模块该模块是提供一个发布和分享的平台,校园里的大小的活动,比赛,趣事,通知等都可以发布在这里,所有用户都可以及时看到。3.2.1 数据库建表新鲜事表create table news (id int auto_increment primary key,username varchar(30),title text,content text,photo varchar(30),releasetime timestamp default current_timestamp,isvisible char(1) default 1,istop char(1) default 0);新鲜事评论表create table newscomments (id int auto_increment primary key,newsid int,username varchar(30),content text,isvisible char(1) default 1,releasetime timestamp default current_timestamp);3.2.2 主活动可触发的事件(1)发布按钮:界面可以跳转到发布新鲜事界面。(2)刷新按钮:可以获取到最新的新鲜事,一次性获取30条。(3)加载更多:可以加载到以前的新鲜事状态,一次性获取30条,如果没有最新的了,则会提示“没有更多数据了”。(4)新鲜事状态:点击每一个状态可以跳转到另一个界面,可以看到新鲜事的详细信息以及用户的评论内容。3.2.3 发布新鲜事发布一个新鲜事包括标题,正文,图片三部分。其中标题和正文不能为空,可以不带图片。发布成功后返回”success”。3.2.4 界面展示图示为发布一个新鲜事,并刷新显示出来。发布界面如图3.3所示,新鲜事界面如图3.4所示。图 3.3 发布界面图 3.4 新鲜事界面3.3 论坛 该模块是提供给用户一个自由交流讨论的地方,校园内外的大事小事,学习的事生活娱乐的事都可以谈论交流。3.3.1 数据库建表话题表create table topic (id int auto_increment primary key,username varchar(30) not null,title text,content text,photo varchar(30),releasetime timestamp default current_timestamp,isvisible char(1) default 1,istop char(1) default 0,isgood char(1) default 0,updatetime timestamp default current_timestamp on update current_timestamp,updatecount int default 0);3.3.2 主活动可触发的事件(1)发布按钮:界面可以跳转到发布界面。(2)刷新按钮:可以获取到最新的话题,一次性获取20条。(3)加载更多:可以加载到以前的话题,一次性获取20条,如果没有最新的了,则会提示“没有更多数据了”。(4)话题:点击每一个话题可以进入该话题,里面有每一层用户发表的话,并且下方出现输入框,可以发布评论。3.3.3 发布话题发布一个话题包括标题,正文,图片三部分。其中标题和正文不能为空,可以不带图片,图片数量为0-9张。发布成功后返回”success”。3.3.4 界面展示图示为发布一个带有多张图片的新话题,并刷新出来。发布界面如图3.5所示,论坛界面如图3.6所示,话题详情如图3.7所示。图 3.5 发布界面图 3.6 论坛界面图 3.7 话题详情界面3.4 集市该模块是为校园中的学生之间的二手市场而设计的。很多学生都有一些崭新的但对自己没用处了的物品,可以发布到这里。或者有学生想要购买一些东西,也可以发布信息求购。3.4.1 数据库建表物品表create table goods (id int auto_increment primary key,username varchar(30),content text,releasetime timestamp default current_timestamp,isvisible char(1) default 1,istop char(1) default 0,issold char(1) default 0);3.4.2 主活动可触发的事件(1)发布按钮:界面可以跳转到发布界面。(2)刷新按钮:可以获取到最新的状态,一次性获取20条。(3)加载更多:可以加载到以前的状态,一次性获取20条,如果没有最新的了,则会提示“没有更多数据了”。(4)状态:点击每一个状态可以查看物品详情,发布者可以和其他用户在下面互动。3.4.3 发布物品发布一个状态包括正文,图片两部分。带有物品图片可以让其他人更直观的看到物品的样子,图片数量为0-9张。发布成功后返回”success”。3.4.4 界面展示图示为发布一个出售娃娃的状态,并刷新显示出来。发布界面如图3.8所示,集市界面如图3.9所示。图 3.8 发布界面图 3.9 集市界面3.5 树洞该模块是用来给大家一个说悄悄话的地方。可以匿名发表,保护用户的隐私。3.5.1 数据库建表create table secret (id int auto_increment primary key,username varchar(30) not null,content text,releasetime timestamp default current_timestamp,isvisible char(1) default 1,isanonymous char(1) default 1);3.5.2 主活动可触发的事件(1)发布按钮:界面可以跳转到发布界面。(2)刷新按钮:可以获取到最新的状态,一次性获取20条。(3)加载更多:可以加载到以前的状态,一次性获取20条,如果没有最新的了,则会提示“没有更多数据了”。(4)状态:点击每一个状态可以看到详细内容,发布者可以和其他用户在下面互动。3.5.3 发布发布想说的话,字数没有限制。可以勾选是否匿名发表。发布成功后返回”success”。3.5.4 界面展示图示为匿名发表一段文字,并在主界面显示出来。发布界面如图3.10所示,树洞界面如图3.11所示。图 3.10 发布界面图 3.11 树洞界面3.6 消息接收一个校园信息服务系统要涉及用户之间的交互,自然要提供消息的接收,该应用使用的轮询的方式对服务器进行访问,查询是否有未接收的消息。如果有的话,则通过Android系统的通知栏对用户进行告知。3.6.1 数据库建表消息表create table message (id int auto_increment primary key,sender varchar(30),receiver varchar(30),content text,repliedcontent text,tablename varchar(20),eventid int,commentid int,kind smallint,releasetime timestamp default current_timestamp,isvisible char(1) default 1);3.6.2 实现方法首先,使用了Android提供的基本组件Service类,它是一种看不见的活动,并且可以和前台交互。因为Service也是在主线程中运行,所以耗时的网络操作都必须要另开一个子线程,这也是在Android 4.x 版本中被规定的,否则则会报出NetWorkOnMainThread的异常。 子线程中使用一个while(flag)循环,应用开始时flag为true,关闭应用时,将flag置为false,这样子线程也会随之关闭并被回收资源。此外,轮询的时间也是用户可以设定的,这里提供了三种,30秒,2分钟,和5分钟。消息分为两大类,一类是用户可见的,如评论,某人等。另一类是用户不可见的,即私信,只有通信双方可以看到,对其他用户透明。消息的提醒则使用了Android系统提供的notification类和pendingIntent类,告诉用户有新的N条消息,点击通知栏的图标即可进入到消息界面查看。3.6.3 界面展示图示为消息接收显示的界面,分为回复界面,如图3.12所示,和纸条界面,如图3.13所示。图 3.12 回复界面图 3.13 纸条界面3.7 设置一个好的应用一定是要满足大多数用户的习惯和喜好。所以对应用参数的设置必不可少。设置提供了如下的操作:(1)个人信息。其中可以查看并修改当前用户的资料。(2)修改密码。提供用户修改密码的操作。(3)消息设置。对于新消息的提醒,是否有声音,是否震动,是否接收私信等,以及对接收频率的选择。(4)意见反馈。使用户可以对该应用进行评价和给出建议,使应用做的更好。(5)检测新版本。一个应用一般不会一成不变,总会更新换代,这时就可以提醒用户已经有新的版本上线,可以更新了。(6)退出登录。使当前用户退出,界面跳转到登录界面。3.8 扩展性功能为了使应用更人性化,用户之间交互的更好。该应用提供了如下一些功能:3.8.1 加入表情 表情的加入使得文字更加生动活泼。主要使用了SpannableStringBuilder类对字符串进行扩展,将其中的某一段文字解释成表情图片并在TextView中展示,如图3.14所示。图3.14 表情界面3.8.2 插入多张图片原先的系统只提供一张图的附加。但是在遇到用户想一次性添加多张图片的需求时,就不得不操作多次。所以就对数据库表结构进行调整,并改写了Android中对应部分的layout布局文件,将原来单个的ImageView改成了可以容纳多张照片的GridView以及LinearLayout,如图3.15所示。图3.15 多图界面3.8.3 图片本地缓存图片是一种相对于字符串来说占用字节数很大的资源。小型的图片几十KB,大图和高清图则高达几百KB。如果每次刷新相同的状态,都要从网络加载同样的图

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论