基于Android平台的股票查询系统的设计与开发设计_第1页
基于Android平台的股票查询系统的设计与开发设计_第2页
基于Android平台的股票查询系统的设计与开发设计_第3页
基于Android平台的股票查询系统的设计与开发设计_第4页
基于Android平台的股票查询系统的设计与开发设计_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

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

文档简介

基于Android平台的股票查询系统的设计与开发摘要股票至今已有将近400年的历史,它伴随着股份公司的出现而出现。我们国家从1984年开始发行第一支股票到现在的一千四百多支股票,股票的市场日渐壮大,股票行情波动也越来越迅速。但是现代股民由于工作繁忙、或室外没有电脑上网,无法从互联网中及时获取自己所需的股票信息,导致对股票行情的分析预测造成了一定的延时性,产生了不可挽回的损失。因此,我设想开发一款位于Android端的股票信息查询软件,能够让用户不论在哪,不论在干什么,只要有手机、有信号,便能查询其想知道的股票具体信息,股票行情,为股民提供更方便、更快捷、更有利的信息查询服务。Android手机功能强大,界面美观,且价格低廉,成为了当今市场的主打,我的这个软件就是基于此系统开发的。由于它是Google开发的基于Linux平台的开源手机操作系统,它不仅拥有基本移动电话开发所需的全部软件,包括操作系统、用户界面和应用程序,而且不存在任何以往阻碍移动产业创新的专有权阻碍。Google与开放手机联盟合作开发了Android,这个联盟包括中国移动、摩托罗拉、高通、宏达和T-Mobile在内的30多家技术和无限应用的领军企业组成。通过与运营商、设备制造商、开发商和其他有关各方结合成深层次的合作伙伴关系,我们也希望借此建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放的生态系统。本软件经过耗时一个月的设计与实现,主要依靠SAX解析XML完成了股票信息、股票分时线图及股票K线图的查询。并且实现了股票自选添加功能,可以方便查询重点需要关注的股票。关键词:Android手机应用,服务器,股票查询绪论1.1课题背景3G时代已经来临,如果您需要体验3G带来的多媒体和移动办公等应用,那么您必须拥有一台硬件设施完善。应用软件齐全的终端,传统的手机终端己经不能满足现在的需求,只有智能终端才能让您在3G的海洋中畅游。首先,谈到智能手就不能不谈到智能手机的操作系统。现有市场上主流3G智能操作系可分为:Android、iPhoneOS、WindowsMobile、Symbian、BlackBerry五大类。Android系是现有市场上品牌智能手机运用中最多的系统。包括:三星、LG、摩托罗拉、索尼爱立信、HTC(原多普达)、酷派、联想、中兴、华为、天语、小米等。基本占有智能手机82%的份额。Android具有良好的优越性不仅仅是开发工具,更是底层源代码的完全开放,在android的主页上你可以自由下载现成的开发工具和源代码。而无论你是资金雄厚的开发公司还是精力过剩的高中生爱好者,在android的世界里,只有平等和自由。只需要50美金注册保证金,你就可以面向全球发布你的伟大软件创意,不再有烦琐的审核和限制,从而大大降低了软件开发的费用。促进了免费应用软件的发展。2万多个免费应用程序可以任意下载安装,没有乱七八糟的证书要安装。中国移动的OMS就是Android自由精神的最大体现,没办法,Google就是这么大方的不拘小节。Google甚至允许全世界各地的个人和公司等任意的修改android小机器人的标志,这在商业社会的今天简直是不可想象的,全世界的android粉丝创造发挥了几百款各式各样憨态可掬的android机器人形象。用过googlechrome的人都知道,如果Chrome遇到崩溃,可不是像IE那样傻傻等半天最后几十个窗口全部死掉,Chrome是只有崩溃的那个窗口死掉,其它的都照常运行,android系统的手机也是这样,内存溢出,程序崩溃之后造成一个应用程序的重启,不会影响其他程序和手机系统的运行,所以android的手机基本上可以永远不关机,Windows手机上那套“死机-拔电池-重新开机”的黄金定律没有了。Android2010年成功的首要原因是,普通消费者都认为该平台正在迅速进步、越来越好。Android1.x时代的版本已经不错,但仍需作出改进,而Android2.1和Android2.2发布后,其给消费者带来的价值显著提升。即将发布的Android3.0也因此吸引了大量消费者的注意,人们希望它能给移动操作系统带来新篇章。Android2010年成功的首要原因是,普通消费者都认为该平台正在迅速进步、越来越好。Android1.x时代的版本已经不错,但仍需作出改进,而Android2.1和Android2.2发布后,其给消费者带来的价值显著提升。即将发布的Android3.0也因此吸引了大量消费者的注意,人们希望它能给移动操作系统带来新篇章。苹果iPhone在美国市场的最大问题是,从2007年以来它只与AT&T这一家运营商合作,而大量使用Android的设备在全美各种运营商的网络上都可以获得支持。其结果是消费者有更大地可能选择Android设备。传统的股票查询系统只能在PC机上运行,这就在一定程度上限制了出门在外的股民获取股市信息的实时性,可能导致股民的直接损失或间接损失。手机炒股与传统交易方式相比,主要优势是突破时间空间的限制,方便、私密,只要手机在GSM/CDMA网络覆盖的范围内(只要手机可以收到信号)能够进行查看行情、做交易,借助移动网络能真正实现随身、随时、随地进行证券投资。虽然电话委托和网上也能使股民足不出户就完成,但这两种终端的固定性决定了不能随时随地进行。随着手机的发展,一些手机甚至还内置了移动证券的功能,优化了在移动设备上的操作方式,让手机炒股显得更加专业和方便。1.2Android的发展前景Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件成号称是首个为移动终端打造的真正开放和完整的移动软件。目前,最新版本为Android2.4Gingerbread和Android3.0Honeycomb。随着采用Android系统的谷歌手机、平板电脑等产品逐渐扩大市场占有率,Android平台人才的缺口日益显现。据业内统计,目前国内的3G研发人才缺口有三、四百万,其中Android研发人才缺口至少30万。参加android培训,可依据以下两方面好处Android开发人才占总需求的72%。职场专家指出,想要从事Android开发的人员,除了基础的计算机技术知识要扎实之外,要根据各类企业、各类岗位的不同需求,补充与岗位相关的Android技术知识。此外,还要注重项目经验的积累。Android发展前景好据职酷网数据统计显示:目前热招的Android技术相关岗位约有3882个,而一个月内的有效岗位量在2298个。主要热招职位包括Android开发工程师、Android软件工程师、Android应用开发工程师、系统驱动工程师,Android手机游戏开发、Android系统软件开发、Android程序员、Android游戏应用版本管理、人机交互分析工程师、Android中间层开发工程师等。从人才需求类型来看,目前对Android人才需求一类是偏向硬件驱动的Android人才需求,一类是偏向软件应用的Android人才需求。从目前的招聘需求来看,后者的需求最大,包括手机游戏、手机终端应用软件和其他手机应用软件的开发。据职酷网职位搜索库统计显示,目前企业对这类应用软件的Android开发人才占总需求的72%。职业专家分析说,由于目前Android技术较新,无论是相关书籍、培训还是大学教育,都处于初级阶段,因此Android人才短期将供不应求。从长期来看,随着各种移动应用和手机游戏等内容需求日益增加,也将激励大中小型手机应用开发商加大对Android应用的开发力度,因此Android人才的就业前景也非常广泛。1.3本课题研究目标、研究内容和方案股民的生活水平一直在提高,对生活质量的要求也越来越高,对股票信息获得的要求也越来越高,有一种方便快捷,价格低廉的股票查询软件成为了人们的需求,为了解决这一问题,手机版股票查询系统诞生了,它不仅拥有简单的用户交互界面,便捷的操作,而且还具备连接服务器获得信息所需要的所有基本功能。它是集大盘查询,个股查询,自选股查询,公司信息查询于一体的手机股票查询工具。该软件的灵感来源于电脑版的股票查询系统,即:传统的股票查询系统。传统的股票查询系统是一款基于pc机的股票查询软件,虽然方便快捷,但是不便于携带,这使得人们希望能有一款便于携带的股票查询软件,所于就设计了这个软件。本软件是一款基于Android手机平台的非常类似于电脑版股票查询系统的应用软件,它使Android手机用户拥有实时可查询的股票信息查询系统,使手机的功能更加齐全,更能满足股民对股票信息的实时需求,让人们不必每次只能回到家打开电脑才能查询股票,也不必专门跑去证券交易所查看股市最新动态,这个软件只需要安装到一台具有android系统平台的手机上就能实现,只要在wifi覆盖或者2G/3G的网络中,就可随时随地查询大盘行情、个股查询、自选股添加/删除,公司信息查询,你再也不用担心查询股票信息时还要打开电脑或者还要去证券交易所来实现。1.4开发语言的介绍java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE,JavaME,JavaSE)的总称。Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。Java编程语言的风格十分接近C、C++语言。Java是一个纯的面向对象的程序设计语言,它继承了C++语言面向对象技术的核心,Java舍弃了C++语言中容易引起错误的指针(以引用取代)、运算符重载(operatoroverloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在JavaSE1.5版本中,Java又引入了泛型编程(GenericProgramming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。Java不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了Java程序的运行效率。但在J2SE1.4.2发布后,Java的执行速度有了大幅提升。与传统程序不同,Sun公司在推出Java之际就将其作为一种开放的技术。全球数以万计的Java开发公司被要求所设计的Java软件必须相互兼容。“Java语言靠群体的力量而非公司的力量”是Sun公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同。Sun公司对Java编程语言的解释是:Java编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。Java平台是基于Java语言的平台。这样的平台目前非常流行,因此微软公司推出了与之竞争的.NET平台以及模仿Java的C#语言。1.5Android系统特性Android是一个由操作系统、中间架构、应用程序等软件构造出来的堆栈架构。由下而上,其核心为嵌入式linux2.6作业系统,向上搭配Google的Android开发的类库及应用程序架构来开发不同的应用程序。1.5.1Android的功能特性(1)在应用程序架构内具备多种不同的基本组件,在开发应用程序时,可以直接调用这些组件,能节省很多的精力和时间。 (2)Dalvik虚拟机:在Android系统平台上使用的虚拟机不是sun公司的标准的java虚拟机,而是Google开发的代号为Dalvik虚拟机,在保证与API兼容的同时,它针对移动手机进行了大幅度的优化,具体表现在占用资源减少,效率提高等方面。 (3)集成浏览器:集成浏览器指的是Android内建的浏览器,它是以WebKit浏览引擎为基础开发的。WebKit是一个开源的浏览器网页排版引擎,配合Android手机自身的功能,可以在浏览网页时达到更好的效果,如:局部性的缩放网页上的资讯、触控式的操作效果等。 (4)优化的绘图能力:Android绘图功能包含2D和3D两个方面。在2D方面,Android提供了一套特有的类库;而在3D方面则是使用OpenGLES1.0(openGLforEmbeddedsystems)规范的类库。他们属于一种非常快的图形引擎。 (5)SQLite数据库:SQLite是一款轻型的数据库,它占用的内存资源非常低,目前已经在很多的嵌入式产品中使用了它。它能支持包括Windows/Linux/Unix等主流的操作系统,同时能与多种程序语言相结合,如:php、Java和ODBC接口,与Mysql、PostgreSQL相比,它的操作速率更优。作为一个存储在单一磁盘文件中的完整数据库,虽然它的体积很小,但是它支持的SQL语句毫不逊色于其他的开源数据库。同时它还支持事务功能和并发处理等等。SQLite是一套开放的关联式的轻量的资料库,更适合在手机上使用。 (6)支持多媒体功能:主要用于播放多媒体文件。其中包含对音频和视频的播放支持,并支持在网络上直接播放多媒体。 (7)GSM技术:全球移动通信系统,俗称“全球通”,是一种起源于欧洲的移动通信技术标准,其开发的目的是让全球各地能够共同使用一个移动电话网络标准,让用户拥有一部手机就能行遍全球。GSM技术是手机硬件方面的体现。(8)蓝牙及wifi:蓝牙和wifi是一种开放、低成本、短距离的无线连接技术,可取代短距离的电缆,实现话音和数据的无线传输。此次的项目使用的就是wifi技术,利用Android自带的wifi技术实现局域网通信。Wifi:即无线保真技术,与蓝牙技术一样,同属于办公室和家庭中使用的短距离无线技术。该技术使用的是2.4Ghz附近的频段,该频段目前上属没有许可的无线频段。目前可以使用的标准有两个,分别是IEEE802.11a和IEEE802.11b。这些通讯能力也是属于手机硬件方面的展现,也是开发Android应用程序时可以突出的特点之一。 (9)GPS:GlobalPositioningSystem,即全球定位系统,它是一个由覆盖全球的卫星组成的系统。这个系统可以保证在任意时刻、任意地点都可以同时观测到4颗卫星,以保证卫星可以采集到该测试点的经纬度和高度,以便实现导航、定位、授时等功能。这项技术可以用来引导飞机、船舶、车辆以及个人。此功能也是手机硬件方面的体现,也是可以再开发Android应用程序时可以突破的特点之一。1.5.2android的应用架构对于一个Android应用程序来说,是由Activity、IntentReceiver、Service、Content

Provider四部分组成[6]。在应用程序中使用时,需要在配置文件AndroidManifest.xml中进行配置。这个配置文件是每个Android应用程序所必需的,用于定义应用程序的组件、组件的功能以及必要条件等。Android应用的构成和工作流程如图1.1所示。通常由以下四个组件来构建一个完整的Android应用程序[7]。图1.1Android的构成和工作流程图

活动

意图接收器

服务

内容提供者

然而,并不是所有的Android应用程序都必须具备上面的四个组件,可以由上面的一个或几个来组建。当决定使用以上哪些组件来构建Android应用程序时,需要将它们注册在AndroidManifest.xml文件中,这是一个XML配置文件,在这个文件中可以声明应用程序组件以及它们的特性和要求。这个配置文件是每个Android应用程序所必需的。1.6开发工具的介绍1.6.1Eclipse的介绍Eclipse是一个开放的源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentKit,JDK)。Eclipse的发展史,版本代号平台版本主要版本发行日期SR1发行日期SR2发行日期,如表1.1所示:表1.1Eclipse的发展史版本后及发行日期版本代号平台版本主要版本发行日期SR1发行日期SR2发行日期Callisto3.22006年6月26日N/AN/AEuropa3.32007年6月27日2007年9月28日2008年2月29日Ganymede3.42008年6月25日2006年9月24日2009年2月25日Galileo3.52009年6月24日2006年9月25日2010年2月26日Helios3.62006年6月23日2006年9月24日2011年2月25日Indigo3.72006年6月22日2006年9月23日2012年2月24日Juno(预定)3.8及4.22006年6月27日2006年9月28日2013年2月22日Kepler4.32006年6月26日2006年9月27日2014年2月28日Eclipse的主要组成:Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成——EclipsePlatform、JDT、CDT和PDE。JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,EclipsePlatform则是一个开放的可扩展IDE,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。EclipsePlatform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。1.6.2SDK的介绍SDK是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等创建应用软件的开发工具的集合,一般而言SDK即开发Windows平台下的应用程序所使用的SDK。它可以简单的为某个程序设计语言提供应用程序接口API的一些文件,但也可能包括能与某种嵌入式系统通讯的复杂的硬件。一般的工具包括用于调试和其他用途的实用工具。SDK还经常包括示例代码、支持性的技术注解或者其他的为基本参考资料澄清疑点的支持文档。1.6.3Tomcat介绍Tomcat是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应对HTML页面的访问请求。实际上Tomcat部分是Apache服务器的扩展,但它是独立运行的,所以当你运行tomcat时,它实际上作为一个与Apache独立的进程单独运行的。在此程序中对公司信息的服务器的搭建就是靠Tomcat来完成的。1.6.4MyEclipse介绍MyEclipse企业级工作平台(MyEclipseEnterpriseWorkbench,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSP,CSS等。

2可行性分析及环境搭建近些年,移动设备的高速发展,使得手机等移动设备高速智能化,移动网络通信正在以前所未有的惊人速度走入人们的生活、工作和学习中,提高了工作学习的效率,增加了获取信息的渠道,突破了相互交流的时空界限。教学管理系统可以基于移动平台安卓系统进行开发,帮助师生轻松解决教学中工作学习等问题。

可行性分析既不能以偏盖全,也不能过于追求细节,必须为决策提供有价值的证据。软件领域的可行性分析主要考虑四个因素:技术可行性分析,经济、社会效益分析,法律可行性分析,开发人员与进程可行性分析。2.1技术可行性技术可行性要考虑现有的技术条件是否能够顺利完成开发工作,软硬件配置是否满足开发的需求。本软件用的是Java开发语言,在Eclipse中使用AndroidSDK进行编辑调试相对简单,当前的计算机硬件配置也完全能满足开发的需求,且所需要的开发软件均可从网上免费下载,因此技术上是绝对可行的。2.2经济可行性主要进行成本-效益分析。从成本方面看,本系统的实现,计算机和网络硬件已经拥有,由于安卓是个开放的平台,Eclipse与AndroidSDK都是免费提供的,网络客户端所用软件也都已经配备,因此成本很低;从效益方面看,本客户端主要是为广大师生提供便利,暂时还不会带来任何经济收益,不过经过完善后可以考虑作为产品在社会上推广,加上安卓系统的广泛应用,相信产品的盈利空间是很大的。2.3法律可行性从法律角度看,Android是个开放的平台,代码是开放的,加上基于Android的教学管理系统主要为师生提供便利,作为毕业设计,并不以盈利为目的,且是自主开发设计,因此不会在社会上引起侵权或其它责任问题,在法律上是可行的。

2.4

Android开发环境的搭建2.4.1

Android软件开发包下载

(3)

Android

SDK1.5

请到网址

下载。

(4)

APT插件。

2.4.2

其他注意事项

Android的Eclipse插件安装需注意,Eclipse可以对应的网站下载安装,如果通过网络远程安装不成功,可以下载到本地安装。

2.4.3

环境安装与搭配

(1)

安装JDK将下载好的JDK安装好以后,设置环境变量步骤如下:

1)

我的电脑->属性->高级->环境变量->系统变量中添加以后环境变量:2)

JAVA_HOME值为:D:\Program

Files\Java\jdk1.6.0_18

(你安装JDK的目录)

3)在开始追加

%JAVA_HOME%\bin;

安装完成后,可以检查JDK是否安装成功。打开cmd窗口,输入java-version查看JDK版本信息,出现以后画面表示安装成功。如图2.1所示图2.1配置成功信息(2)

安装Eclipse

将根据上面给的地址下载后安装即可,也可以选择下载绿色版,解压即可使用。

(3)

安装Android

JDK

运行SDK

Setup.exe,点击Available

Packages。如果没有出现可安装的包,请点击Settings,选中Misc中的"Force

https://..."这项,再点击Available

Packages。选择希望安装的SDK及其文档或者其它包,点击Installation

Selected、Accept

All、Install

Accepted,开始下载安装所选包。在用户变量中新建PATH值为:Android

SDK中的tools绝对路径(本机为D:\AndroidDevelop\android-sdk-windows\tools)如下图2.2所示:图2.2配置环境点击“确定”重新启动计算机,重启之后进入cmd窗口,检查SDK是不是安装成功,运行android

–h

,如果有类似下面的输出,表示安装成功如下图2.3所示:图2.3jdk安装成功(4)

安装ADT

1)

打开Eclipse

IDE,进入菜单中的”help”->”Install

New

Software”。

2)

点击Add...按钮,弹出对话框要求输入Name和Location:Name自己随便取,Location输入/android/eclipse。如下图2.4所示:图2.4安装ADT3)

确定返回后,在work

with后的下拉列表中选择我们刚才添加的ADT,我们会看到下面出有Developer

Tools,展开它会有Android

DDMS和Android

Development

Tool,勾选他们。

如下图2.5所示:图2.5选择ADT中安装的组件完成之后就按提示一步一步next:

i、选择Window

>

Preferences...

ii、在左边的面板选择Android,然后在右侧点击Browse...并选中SDK路径,本机为:

D:\AndroidDevelop\android-sdk-windows

iii、点击Apply、OK。配置完成。

3需求分析3.1系统设计原则(1)可靠性用软件系统规模越做越大越复杂,其可靠性越来越难保证。应用本身对系统运行的可靠性要求越来越高,软件系统的可靠性也直接关系到设计自身的声誉和生存发展竞争能力。软件可靠性意味着该软件在测试运行过程中避免可能发生故障的能力,且一旦发生故障后,具有解脱和排除故障的能力。(2)健壮性健壮性又称鲁棒性,是指软件对于规范要求以外的输入能够判断出这个输入不符合规范要求,并能有合理的处理方式。软件健壮性是一个比较模糊的概念,但是却是非常重要的软件外部量度标准。软件设计的健壮与否直接反应了分析设计和编码人员的水平。(3)可修改性要求以科学的方法设计软件,使之有良好的结构和完备的文档,系统性能易于调整。(4)容易理解软件的可理解性是其可靠性和可修改性的前提。它并不仅仅是文档清晰可读的问题,更要求软件本身具有简单明了的结构。这在很大程度上取决于设计者的洞察力和创造性,以及对设计对象掌握得透彻程度,当然它还依赖于设计工具和方法的适当运用。(5)程序简便(6)可测试性可测试性就是设计一个适当的数据集合,用来测试所建立的系统,并保证系统得到全面的检验。(7)效率性软件的效率性一般用程序的执行时间和所占用的内存容量来度量。在达到原理要求功能指标的前提下,程序运行所需时间愈短和占用存储容量愈小,则效率愈高。(8)标准化原则在结构上实现开放,基于业界开放式标准,符合国家和信息产业部的规范。(9)先进性满足客户需求,系统性能可靠,易于维护。(10)可扩展性软件设计完要留有升级接口和升级空间。对扩展开放,对修改关闭。股票查询系统从各个方面来看都符合系统设计的基本原则。3.2总体软件的结构设计 将项目工程生成的apk安装到手机上,由于此软件的功能是要实现Internet传输。通过服务器获得xml,然后解析xml获得数据然后显示数据。因此该系统满足以下功能:(1)大盘行情显示:显示大盘的最新信息。(2)涨跌排行的排序:可以按照最新、涨跌、涨幅任意一组数据进行排序。(3)自选股查询:可以添加、删除、查询自选股。(4)个股查询:查询个股的动态信息。(5)K线图查询:可查询该股票的K线图。(6)分时图查询:可查询该股票的分时图。功能模块图如下图3.1所示:KK线图分时图股票查询系统个股查询自选信息大盘行情个股查询图3.1股票查询系统功能模块3.3XML解析此程序用的XML解析方式有两种,一种是SAX解析,一种是DOM解析。在股票信息查询模块上运用SAX解析方式。在公司信息查询和新闻模块上运用DOM解析方式。3.3.1SAX解析SAX,它既是一个接口,也是一个软件包.但作为接口,SAX是事件驱动型XML解析的一个标准接口不会改变SAX的工作原理简单地说就是对文档进行顺序扫描,当扫描到文档(document)开始与结束、元素(element)开始与结束、文档(document)结束等地方时通知事件处理函数,由事件处理函数做相应动作,然后继续同样的扫描,直至文档结束。3.3.2DOM解析DOM(DocumentObjectModel)文档对象模型,很多文档都被组织成了数据结构上的树的形式,DOM解析以后可以将这个文档读到内存中并且以树的形式被组织。DOM解析就是按照树形的顺序一个一个进行解析。3.4Sqlite数据库SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度更快。在自选信息中使用Sqlite数据库进行存储用户自选信息。

4详细设计实现4.1软件功能流程图4.1.1股票行情、涨跌排行的功能流程图获得获得XML文件使用SAX解析XML文件将数据放入MAP集合把适配器放入ListView中显示将ArrayList封装进适配器将集合放入ArrayList图4.1股票行情、涨跌排行的功能流程图4.1.2自选信息的功能流程图在Sqlite中新建一张表将股票代号和名字放入表中在Sqlite中新建一张表将股票代号和名字放入表中将数据库中的数据读出来显示每一行为一支股票信息把数据放入ListView图4.2自选信息的功能流程图4.1.3个股查询的功能流程图获得获得XML文件使用SAX解析XML文件将数据放入对应数组中用TextView进行显示将数组放入对应Text中图4.3个股查询的功能流程图4.2UI界面设计一个Activity应用开发是由一个或者多个Activity组成的,Activity是一个UI的容器,其本身不在用户界面上显示出来。而是通过多种控件组合在一起并以一种view的树形结构在用户界面进行显示。可以说一个界面就是一个Activity。4.2.1大盘行情查询界面大盘行情模块的主要功能是获得指定大盘信息的最新成交价、涨跌、涨幅信息。并可以按照最新、涨幅、涨跌、排序,并有转到其它界面的按钮如图4.4所示。图4.4大盘行情查询界面<Buttonandroid:textSize="@dimen/marketmain_navigation_text_size"android:textColor="#ffffffff"android:gravity="center"android:id="@+id/topmenu0"android:background="@drawable/landmineblackbtn"android:layout_width="fill_parent"android:layout_height="fill_parent"android:text="@string/text2"android:layout_weight="2.0"/>//设置大盘指数按钮<Buttonandroid:textSize="@dimen/marketmain_navigation_text_size"android:textColor="#ffffffff"android:gravity="center"android:id="@+id/topmenu2"android:background="@drawable/landmineblackbtn"android:layout_width="fill_parent"android:layout_height="fill_parent"android:text="@string/text4"android:layout_weight="2.0"/>//设置自选信息按钮<ListViewandroid:id="@+id/mainlist"android:background="#ff000000"android:layout_width="fill_parent"android:layout_height="fill_parent"android:listSelector="@drawable/list_bg"android:cacheColorHint="#ff000000"android:divider="@drawable/listview_divider"android:layout_weight="1.0"/>//设置listview布局文件中整体使用Linearlayout布局方式,局部使用Absolutely绝对布局。使用Button,ImaginButton,TextView,listView,Line等控件组成这个Activity。4.2.2股票查询行情界面设计在此应用程序中,由于此界面为主界面,故设定了menu菜单可以到达其它3个Activity如图4.5和4.6所示图4.5查询界面<!--开始显示--> <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="fill_parent"> <HorizontalScrollView android:layout_width="wrap_content" android:layout_height="fill_parent"> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextViewandroid:id="@+id/priceTime"//行情时间 android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="#FFF5EE" android:textSize="25sp"/> <TextViewandroid:id="@+id/stockName"//股票名称 android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="#FFF5EE" android:textSize="20sp"/> <TextViewandroid:id="@+id/stockId"//股票id android:layout_width="wrap_content" android:layout_height="fill_parent" android:textColor="#FFF5EE" android:textSize="30sp"/> <LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="fill_parent"> <!--第一页面最新价格,今日价格,跌涨额,跌涨幅--> <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="fill_parent"> <TextViewandroid:id="@+id/newPrice" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="20dp" android:textColor="#FFF5EE" android:textSize="18sp"/> <TextViewandroid:id="@+id/openPrice" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="30dp" android:textColor="#FFF5EE" android:textSize="18sp"/> <TextViewandroid:id="@+id/upDownPrice" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="30dp" android:textColor="#FFF5EE" android:textSize="18sp"/> <TextViewandroid:id="@+id/upDown" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="30dp" android:textColor="#FFF5EE" android:textSize="18sp"/> </LinearLayout><!--第二页面委比,昨日收盘,最高,最低--> <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="fill_parent" android:paddingLeft="35dp"> <TextViewandroid:id="@+id/delegation" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="20dp" android:textColor="#FFF5EE" android:textSize="18sp"/> <TextViewandroid:id="@+id/stockIncrease" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="30dp" android:textColor="#FFF5EE" android:textSize="18sp"/> <TextViewandroid:id="@+id/highestPrice" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="30dp" android:textColor="#FFF5EE" android:textSize="18sp"/> <TextViewandroid:id="@+id/lowestPrice" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="30dp" android:textColor="#FFF5EE" android:textSize="18sp"/> </LinearLayout><!--第三页面成交量,成交金,竞买价,竞卖价--> <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="fill_parent" android:paddingLeft="35dp"> <TextViewandroid:id="@+id/transactionVolume" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="20dp" android:textColor="#FFF5EE" android:textSize="18sp"/> <TextViewandroid:id="@+id/transactionVolumePrice" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="30dp" android:textColor="#FFF5EE" android:textSize="18sp"/> <TextViewandroid:id="@+id/raceBuyPrice" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="30dp" android:textColor="#FFF5EE" android:textSize="18sp"/> <TextViewandroid:id="@+id/raceSalePrice" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="30dp" android:textColor="#FFF5EE" android:textSize="18sp"/> </LinearLayout><!--第四页面买1,买2,买3,买4,买5--> <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="fill_parent" android:paddingLeft="35dp"> <TextViewandroid:id="@+id/buy1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="20dp" android:textColor="#FFF5EE" android:textSize="18sp"/> <TextViewandroid:id="@+id/buy2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="30dp" android:textColor="#FFF5EE" android:textSize="18sp"/> <TextViewandroid:id="@+id/buy3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="30dp" android:textColor="#FFF5EE" android:textSize="18sp"/> <TextViewandroid:id="@+id/buy4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="30dp" android:textColor="#FFF5EE" android:textSize="18sp"/> <TextViewandroid:id="@+id/buy5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="30dp" android:textColor="#FFF5EE" android:textSize="18sp"/> </LinearLayout><!--第五页面卖1,卖2,卖3,卖4,卖5--> <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="fill_parent" android:paddingLeft="35dp"> <TextViewandroid:id="@+id/sale1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="20dp" android:textColor="#FFF5EE" android:textSize="18sp"/> <TextViewandroid:id="@+id/sale2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="30dp" android:textColor="#FFF5EE" android:textSize="18sp"/> <TextViewandroid:id="@+id/sale3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="30dp" android:textColor="#FFF5EE" android:textSize="18sp"/> <TextViewandroid:id="@+id/sale4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="30dp" android:textColor="#FFF5EE" android:textSize="18sp"/> <TextViewandroid:id="@+id/sale5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="30dp" android:textColor="#FFF5EE" android:textSize="18sp"/> </LinearLayout> </LinearLayout>图4.6menu按钮Menu实现的具体代码如下所示:publicbooleanonCreateOptionsMenu(Menumenu){ //Inflatethemenu;thisaddsitemstotheactionbarifitispresent. menu.add(1,1,1,"刷新").setIcon(R.drawable.s);//设置第一个按钮 menu.add(1,2,2,"K线图").setIcon(R.drawable.k);//设置第二个按钮 menu.add(1,3,3,"分时图").setIcon(R.drawable.f);//设置第三个按钮 menu.add(1,4,4,"关于").setIcon(R.drawable.about);//设置第四个按钮 menu.add(1,5,5,"帮助").setIcon(R.drawable.h);//设置第五个按钮 menu.add(1,6,6,"退出").setIcon(R.drawable.t);//设置第六个按钮 returnsuper.onCreateOptionsMenu(menu); }整个布局使用的是Linearlayout布局方式,标题栏使用Absolutely绝对布局方式,内容部分的TextView使用嵌套,以便数据显示。整个Activity由Button,ImaginButton,TextView,listView,Line等控件组成。4.2.2K线界面的设计在个股信息中点击menu按钮,弹出提示框进行选择查询K线图、分时图、或公司信息。如图4.7、4.8和4.9及4.10所示图4.7日K线图图4.8周K线图图4.9月K线图<TextView//k线图 android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="K图显示:" android:textColor="#FFF5EE" android:id="@+id/ktu"/> <Spinner//月周日下拉列表 android:layout_height="40dp" android:layout_width="wrap_content" android:id="@+id/Spinner"/> </LinearLayout>图4.10分时线图<TextView//分时线图显示android:layout_height="wrap_content"android:layout_width="wrap_content"android:text="分时图:"android:textColor="#FFF5EE"android:id="@+id/ktu"/>4.2.3自选信息界面的设计自选信息是股民根据个人喜好对个股添加保存的一个版块,如图4.11和4.12所示图4.11自选信息添加界面<ListView//ListView控件android:id="@+id/mystocklist"android:background="#ff000000"android:layout_width="fill_parent"android:layout_height="fill_parent"android:listSelector="@drawable/list_bg"//自定义选中android:cacheColorHint="#ff000000"android:divider="@drawable/listview_divider"//自定义分隔线android:layout_weight="1.0"/><itemandroid:state_window_focused="false"android:drawable="@drawable/transparent"/>//当窗口选中焦点时的样式<itemandroid:state_focused="true"android:state_pressed="true"android:drawable="@drawable/bluebg5"/>//选中焦点按下时的样式<itemandroid:state_focused="false"android:state_pressed="true"android:drawable="@drawable/bluebg5"/>//按下失去焦点的样式<itemandroid:state_selected="true"android:drawable="@drawable/bluebg5"/>//选中的样式<itemandroid:state_focused="true"android:drawable="@drawable/bluebg5"/>//焦点的样式图4.12自选信息界面整个布局使用的是Linearlayout布局方式,标题栏使用Absolutely绝对布局方式,内容部分的TextView使用嵌套,以便数据显示。使用Dialog对话框杜股票信息保存进行友好操作。整个Activity由Button,ImaginButton,TextView,listView,Line等控件组成,具体代码如下所示:privatevoidaddstock(){ finalStringname=stockHandler.str[1]; //创建一个对话框进行友好询问 AlertDialog.Builderbuilder=newAlertDialog.Builder(OneInfoActivity.this); builder.setIcon(R.drawable.icon); builder.setTitle("是否保存该股票?"); builder.setPositiveButton("确定",newDialogInterface.OnClickListener(){ publicvoidonClick(DialogInterfacedialog,intwhichButton){ try { dbAdapter=newDBAdapter(OneInfoActivity.this); //传递参数并调用插入方法 dbAdapter.insertStock(temp,name); dbAdapter.close(); Toast.makeText(OneInfoActivity.this,"保存股票成功",Toast.LENGTH_LONG).show(); Log.v("inserttemp",temp.getBytes().toString()); } catch(Exceptione){ Log.i("tag","insertWordsError"); } finally{ dbAdapter=null; } } }); builder.setNegativeButton("取消",newDialogInterface.OnClickListener(){ publicvoidonClick(DialogInterfacedialog,intwhichButton){ } }); builder.show(); }4.3具体的功能模块Android工程基本结构目录包括:src(源代码)、gen(Android系统自动生成的常量)、Res(资源文件):主要存放程序界面的布局配置(.xml)文件和图片资源。AndroidMainfes.xml是四大组件的驱动配置文件,有它的存在,Android程序的四大组件才可以正常的跳转。设计好界面后,对界面中的控件进行添加事件处理,就到了具体的代码编写阶段,首先应新建一个工程,此工程名为:wdqstock,它的结构如图4.13所示:图4.13wdqstock工程结构图在此工程的com.briup.wdqstock.view包中,所有的类都是Activity类,需要在AndroidManifest.xml文件中配置,其他为辅助界面,此包中具体的类功能的详细情况如下:StockInfo个股信息显示界面SearchActivity个股查询界面FActivity.java分时图界面KActivyt.javaK线图界面MainActivity.java大盘查询界面在工程的com.briup.wdqstock.handler包中,只有一个类StockHandler.java,它用于对获得的xml进行处理。SAX是一个解析速度非常快并且占用内存少的XML解析器,非常适合Android等移动设备。在程序中获得股票信息的核心是通过sax解析来实现的,根据标签名来获得其中的属性,具体实现代码如下:try{ url=newURL(Constant.URL+MainActivity.temp); Log.d("url",Constant.URL+MainActivity.temp); //1.得到一个SAX工厂 SAXParserFactoryspf=SAXParserFactory.newInstance(); //2.通过工厂获取SAX解析器对象 SAXParsersp=spf.newSAXParser(); //3.通过解析器获取XMLReader XMLReaderxr=sp.getXMLReader(); //4.创建Handler对象 StockHandlerstockHandler=newStockHandler(); xr.setContentHandler(stockHandler); //5.解析XML InputStreamReadersi=newInputStreamReader(url.openStream(),"UTF-8"); //创建给定字符集InputStreamReader(url.openStream(打开到此URL的连接并返回一个用于从该连接读入的InputStream)) InputSourceis=newInputSource(si); xr.parse(is);//将给定输入源的内容解析为一个XML文档,并且返回一个新的

温馨提示

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

评论

0/150

提交评论