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

下载本文档

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

文档简介

基于ANDROID平台的股票查询系统的设计与开发摘要股票至今已有将近400年的历史,它伴随着股份公司的出现而出现。我们国家从1984年开始发行第一支股票到现在的一千四百多支股票,股票的市场日渐壮大,股票行情波动也越来越迅速。但是现代股民由于工作繁忙、或室外没有电脑上网,无法从互联网中及时获取自己所需的股票信息,导致对股票行情的分析预测造成了一定的延时性,产生了不可挽回的损失。因此,我设想开发一款位于ANDROID端的股票信息查询软件,能够让用户不论在哪,不论在干什么,只要有手机、有信号,便能查询其想知道的股票具体信息,股票行情,为股民提供更方便、更快捷、更有利的信息查询服务。ANDROID手机功能强大,界面美观,且价格低廉,成为了当今市场的主打,我的这个软件就是基于此系统开发的。由于它是GOOGLE开发的基于LINUX平台的开源手机操作系统,它不仅拥有基本移动电话开发所需的全部软件,包括操作系统、用户界面和应用程序,而且不存在任何以往阻碍移动产业创新的专有权阻碍。GOOGLE与开放手机联盟合作开发了ANDROID,这个联盟包括中国移动、摩托罗拉、高通、宏达和TMOBILE在内的30多家技术和无限应用的领军企业组成。通过与运营商、设备制造商、开发商和其他有关各方结合成深层次的合作伙伴关系,我们也希望借此建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放的生态系统。本软件经过耗时一个月的设计与实现。目前可将项目工程生成的APK安装到手机上。由于此软件的功能是要实现INTERNET传输,依靠通过服务器获得XML,然后解析XML获得数据然后显示数据。因此该系统满足以下功能大盘行情显示显示大盘的最新信息。涨跌排行的排序可以按照最新、涨跌、涨幅任意一组数据进行排序。自选股查询可以添加、删除、查询自选股。个股查询查询个股的动态信息。K线图查询可查询该股票的K线图。分时图查询可查询该股票的分时图。关键词ANDROID手机应用;服务器;股票查询BASEDONTHEPLATFORMOFANDROIDQUERYSYSTEMOFSTOCKDESIGNANDDEVELOPMENTABSTRACTTHESTOCKHASBEENNEARLY400YEARSOFHISTORY,ITISACCOMPANIEDBYJOINTSTOCKCOMPANYAPPEARSOURCOUNTRYBEGINSFROM1984FIRSTISSUESTOCKSTONOWONETHOUSANDMORETHAN400STOCKS,STOCKMARKETEXPANDSWITHEACHPASSINGDAY,STOCKMARKETVOLATILITYISALSOMOREANDMOREQUICKLYBUTMODERNPEOPLEBECAUSEOFTHATJOBISSOBUSY,OROUTDOORWITHOUTCOMPUTER,CANNOTFROMTHEINTERNETTOOBTAINTHEIRNEEDEDSTOCKINFORMATION,LEADINGTOTHESTOCKMARKETANALYSISANDFORECASTOFCAUSEDSOMEDELAY,CAUSEDIRRETRIEVABLELOSSESTHEREFORE,IIMAGINEALOCATEDATTHEANDROIDENDOFSTOCKINFORMATIONSOFTWARE,CANLETTHEUSERSNOMATTERWHERE,NOMATTERWHAT,ASLONGASTHEREISAMOBILEPHONE,ASIGNAL,THATWECANQUERYTHEWONDEROFSTOCKINFORMATION,STOCKQUOTES,FORSHAREHOLDERSTOPROVIDEMORECONVENIENT,FASTER,MOREFAVORABLEINFORMATIONINQUIRYSERVICEANDROIDMOBILEPHONEFUNCTIONISPOWERFUL,BEAUTIFULINTERFACE,ANDTHEPRICEISLOW,BECOMETHEMARKETSFLAGSHIP,THESOFTWAREISBASEDONTHEDEVELOPMENTOFTHISSYSTEMBECAUSEITISAGOOGLEDEVELOPMENTPLATFORMBASEDONTHELINUXOPENSOURCEMOBILEPHONEOPERATINGSYSTEM,ITNOTONLYHASTHEBASICMOBILEPHONEDEVELOPMENTALLTHEREQUIREDSOFTWARE,INCLUDINGOPERATINGSYSTEM,USERINTERFACEANDAPPLICATIONPROGRAM,ANDDOESNOTHAVEANYHINDEREDMOBILEINNOVATIONEXCLUSIVERIGHTSTOHINDERGOOGLEANDOPENMOBILEPHONEUNIONCOOPERATIONINTHEDEVELOPMENTOFTHEANDROID,THEALLIANCEINCLUDECHINAMOBILE,MOTOROLA,HIGHPASS,HTCANDTMOBILE,MORETHAN30TECHNOLOGYANDUNLIMITEDAPPLICATIONLEADERWITHTHEOPERATORS,EQUIPMENTMANUFACTURERS,DEVELOPERSANDOTHERPARTIESCONCERNEDARECOMBINEDINTOADEEPERPARTNERSHIP,WEALSOHOPETOESTABLISHASTANDARDIZED,OPENMOBILESOFTWAREPLATFORM,INTHEMOBILEINDUSTRYTOFORMANOPENECOSYSTEMKEYWORDSANDROIDMOBILEPHONEAPPLICATION;SERVER;STOCKINQUIRY目录摘要IABSTRACTII1绪论111课题背景112ANDROID的发展前景213本课题研究目标、研究内容和方案214开发语言的介绍315ANDROID系统特性3151ANDROID的功能特性3152ANDROID的应用架构4153ACTIVITY生命周期516开发工具的介绍8161ECLIPSE的介绍8162SDK的介绍9163TOMCAT介绍9164MYECLIPSE介绍92可行性分析及环境搭建1021技术可行性1022经济可行性1023法律可行性1124ANDROID开发环境的搭建11242其他注意事项11243环境安装与搭配1安装JDK113需求分析1331系统设计原则1332总体软件的结构设计1433XML解析15331SAX解析15332DOM解析1534SQLITE数据库154详细设计实现1641软件功能流程图16411股票行情、涨跌排行的功能流程图16412自选信息的功能流程图16413个股查询的功能流程图1742UI界面设计17421大盘行情查询界面17422股票查询行情界面设计18422K线界面的设计24423自选信息界面的设计2543具体的功能模块28431网络连接编程32432大盘行情模块33433K线图、分时图35434INTENT传递对象365系统测试与调试3851程序调试3852系统测试38521系统测试的目的及意义38522系统测试步骤38523系统测试的主要内容3853测试数据39结论40参考文献41致谢42外文资料43对应中文翻译511绪论11课题背景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年成功的首要原因是,普通消费者都认为该平台正在迅速进步、越来越好。ANDROID1X时代的版本已经不错,但仍需作出改进,而ANDROID21和ANDROID22发布后,其给消费者带来的价值显著提升。即将发布的ANDROID30也因此吸引了大量消费者的注意,人们希望它能给移动操作系统带来新篇章。ANDROID2010年成功的首要原因是,普通消费者都认为该平台正在迅速进步、越来越好。ANDROID1X时代的版本已经不错,但仍需作出改进,而ANDROID21和ANDROID22发布后,其给消费者带来的价值显著提升。即将发布的ANDROID30也因此吸引了大量消费者的注意,人们希望它能给移动操作系统带来新篇章。苹果IPHONE在美国市场的最大问题是,从2007年以来它只与ATONPAUSE和ONRESUME中的动作应该互逆,比如说ONPAUSE中释放了相机,那么ONRESUME中就要重新初始化相机。STOPPED状态下,UI对用户完全不可见,此时用户焦点在另一个ACTIVITY或者另一个程序上。ONSTOP中需要释放资源,因为有时候系统会KILL掉STOPPED状态的进程,如果有资源没有被释放,会造成内存泄露。ONSTOP中还应该包括一些关闭操作,比如向数据库写信息。当从STOPPED状态回到前景时,首先需要调用ONRESTART,这个函数做一些恢复工作,恢复停止但是并没有被销毁的ACTIVITY;然后系统会接着调用ONSTART,因为每次ACTIVITY变为可见时都要调用ONSTART。可以把ONSTART和ONSTOP看成一对,因为在一开始启动时和重新启动时都需要做一些初始化工作。ONDESTROY一般都是在ONPAUSE和ONSTOP之后调用,但有一个例外的情况如果在ONCREATE中调用FINISH方法,系统将会立即调用ONDESTROY而不用经过生命周期中的其他阶段。16开发工具的介绍161ECLIPSE的介绍ECLIPSE是一个开放的源代码的、基于JAVA的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,ECLIPSE附带了一个标准的插件集,包括JAVA开发工具(JAVADEVELOPMENTKIT,JDK)。ECLIPSE的发展史,版本代号平台版本主要版本发行日期SR1发行日期SR2发行日期,如表11所示表11ECLIPSE的发展史版本后及发行日期ECLIPSE是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它主要由ECLIPSE项目、ECLIPSE工具项目和ECLIPSE技术项目三个项目组成,具体包括四个部分组成ECLIPSEPLATFORM、JDT、CDT和PDE。JDT支持JAVA开发、CDT支持C开发、PDE用来支持插件开发,ECLIPSEPLATFORM则是一个开放的可扩展IDE,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。ECLIPSEPLATFORM允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。162SDK的介绍SDK是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统版本代号平台版本主要版本发行日期SR1发行日期SR2发行日期CALLISTO322006年6月26日N/AN/AEUROPA332007年6月27日2007年9月28日2008年2月29日GANYMEDE342008年6月25日2006年9月24日2009年2月25日GALILEO352009年6月24日2006年9月25日2010年2月26日HELIOS362006年6月23日2006年9月24日2011年2月25日INDIGO372006年6月22日2006年9月23日2012年2月24日JUNO预定38及422006年6月27日2006年9月28日2013年2月22日KEPLER432006年6月26日2006年9月27日2014年2月28日等创建应用软件的开发工具的集合,一般而言SDK即开发WINDOWS平台下的应用程序所使用的SDK。它可以简单的为某个程序设计语言提供应用程序接口API的一些文件,但也可能包括能与某种嵌入式系统通讯的复杂的硬件。一般的工具包括用于调试和其他用途的实用工具。SDK还经常包括示例代码、支持性的技术注解或者其他的为基本参考资料澄清疑点的支持文档。163TOMCAT介绍TOMCAT是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好APACHE服务器,可利用它响应对HTML页面的访问请求。实际上TOMCAT部分是APACHE服务器的扩展,但它是独立运行的,所以当你运行TOMCAT时,它实际上作为一个与APACHE独立的进程单独运行的。在此程序中对公司信息的服务器的搭建就是靠TOMCAT来完成的。164MYECLIPSE介绍MYECLIPSE企业级工作平台(MYECLIPSEENTERPRISEWORKBENCH,简称MYECLIPSE)是对ECLIPSEIDE的扩展,利用它我们可以在数据库和JAVAEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JAVAEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,STRUTS,JSP,CSS等。2可行性分析及环境搭建近些年,移动设备的高速发展,使得手机等移动设备高速智能化,移动网络通信正在以前所未有的惊人速度走入人们的生活、工作和学习中,提高了工作学习的效率,增加了获取信息的渠道,突破了相互交流的时空界限。教学管理系统可以基于移动平台安卓系统进行开发,帮助师生轻松解决教学中工作学习等问题。可行性分析既不能以偏盖全,也不能过于追求细节,必须为决策提供有价值的证据。软件领域的可行性分析主要考虑四个因素技术可行性分析,经济、社会效益分析,法律可行性分析,开发人员与进程可行性分析。21技术可行性技术可行性要考虑现有的技术条件是否能够顺利完成开发工作,软硬件配置是否满足开发的需求。本软件用的是JAVA开发语言,在ECLIPSE中使用ANDROIDSDK进行编辑调试相对简单,当前的计算机硬件配置也完全能满足开发的需求,且所需要的开发软件均可从网上免费下载,因此技术上是绝对可行的。22经济可行性主要进行成本效益分析。从成本方面看,本系统的实现,计算机和网络硬件已经拥有,由于安卓是个开放的平台,ECLIPSE与ANDROIDSDK都是免费提供的,网络客户端所用软件也都已经配备,因此成本很低;从效益方面看,本客户端主要是为广大师生提供便利,暂时还不会带来任何经济收益,不过经过完善后可以考虑作为产品在社会上推广,加上安卓系统的广泛应用,相信产品的盈利空间是很大的。23法律可行性从法律角度看,ANDROID是个开放的平台,代码是开放的,加上基于ANDROID的教学管理系统主要为师生提供便利,作为毕业设计,并不以盈利为目的,且是自主开发设计,因此不会在社会上引起侵权或其它责任问题,在法律上是可行的。24ANDROID开发环境的搭建241ANDROID软件开发包下载1JDK40请到网址HTTP/JAVASUNCOM/JAVASC/DOWMLOADS/INDEXJSP下载。2ECLIPSE34EUROPE请到网址HTTP/WWWECLIPSEORG/DOWNLOADS/下载。ECLIPSEIDEFORJAVADEVELOPERS。3ANDROIDSDK15请到网址HTTP/DEVELOPERANDROIDCOM下载。4APT插件。242其他注意事项ANDROID的ECLIPSE插件安装需注意,ECLIPSE可以对应的网站下载安装,如果通过网络远程安装不成功,可以下载到本地安装。243环境安装与搭配1安装JDK将下载好的JDK安装好以后,设置环境变量步骤如下1我的电脑属性高级环境变量系统变量中添加以后环境变量2JAVA_HOME值为DPROGRAMFILESJAVAJDK160_18你安装JDK的目录3在开始追加JAVA_HOMEBIN安装完成后,可以检查JDK是否安装成功。打开CMD窗口,输入JAVAVERSION查看JDK版本信息,出现以后画面表示安装成功。如图21所示图21配置成功信息(2安装ECLIPSE将根据上面给的地址下载后安装即可,也可以选择下载绿色版,解压即可使用。3安装ANDROIDJDK运行SDKSETUPEXE,点击AVAILABLEPACKAGES。如果没有出现可安装的包,请点击SETTINGS,选中MISC中的“FORCEHTTPS/“这项,再点击AVAILABLEPACKAGES。选择希望安装的SDK及其文档或者其它包,点击INSTALLATIONSELECTED、ACCEPTALL、INSTALLACCEPTED,开始下载安装所选包。在用户变量中新建PATH值为ANDROIDSDK中的TOOLS绝对路径(本机为DANDROIDDEVELOPANDROIDSDKWINDOWSTOOLS)如下图22所示图22配置环境点击“确定”重新启动计算机,重启之后进入CMD窗口,检查SDK是不是安装成功,运行ANDROIDH,如果有类似下面的输出,表示安装成功如下图23所示图23JDK安装成功4安装ADT1打开ECLIPSEIDE,进入菜单中的”HELP”INSTALLNEWSOFTWARE”。2点击ADD按钮,弹出对话框要求输入NAME和LOCATIONNAME自己随便取,LOCATION输入HTTP/DLSSLGOOGLECOM/ANDROID/ECLIPSE。如下图24所示图24安装ADT3确定返回后,在WORKWITH后的下拉列表中选择我们刚才添加的ADT,我们会看到下面出有DEVELOPERTOOLS,展开它会有ANDROIDDDMS和ANDROIDDEVELOPMENTTOOL,勾选他们。如下图25所示图25选择ADT中安装的组件完成之后就按提示一步一步NEXTI、选择WINDOWPREFERENCESII、在左边的面板选择ANDROID,然后在右侧点击BROWSE并选中SDK路径,本机为DANDROIDDEVELOPANDROIDSDKWINDOWSIII、点击APPLY、OK。配置完成。3需求分析31系统设计原则1可靠性用软件系统规模越做越大越复杂,其可靠性越来越难保证。应用本身对系统运行的可靠性要求越来越高,软件系统的可靠性也直接关系到设计自身的声誉和生存发展竞争能力。软件可靠性意味着该软件在测试运行过程中避免可能发生故障的能力,且一旦发生故障后,具有解脱和排除故障的能力。2健壮性健壮性又称鲁棒性,是指软件对于规范要求以外的输入能够判断出这个输入不符合规范要求,并能有合理的处理方式。软件健壮性是一个比较模糊的概念,但是却是非常重要的软件外部量度标准。软件设计的健壮与否直接反应了分析设计和编码人员的水平。3可修改性要求以科学的方法设计软件,使之有良好的结构和完备的文档,系统性能易于调整。4容易理解软件的可理解性是其可靠性和可修改性的前提。它并不仅仅是文档清晰可读的问题,更要求软件本身具有简单明了的结构。这在很大程度上取决于设计者的洞察力和创造性,以及对设计对象掌握得透彻程度,当然它还依赖于设计工具和方法的适当运用。5程序简便6可测试性可测试性就是设计一个适当的数据集合,用来测试所建立的系统,并保证系统得到全面的检验。7效率性软件的效率性一般用程序的执行时间和所占用的内存容量来度量。在达到原理要求功能指标的前提下,程序运行所需时间愈短和占用存储容量愈小,则效率愈高。8标准化原则在结构上实现开放,基于业界开放式标准,符合国家和信息产业部的规范。9先进性满足客户需求,系统性能可靠,易于维护。10可扩展性软件设计完要留有升级接口和升级空间。对扩展开放,对修改关闭。股票查询系统从各个方面来看都符合系统设计的基本原则。32总体软件的结构设计将项目工程生成的APK安装到手机上,由于此软件的功能是要实现INTERNET传输。通过服务器获得XML,然后解析XML获得数据然后显示数据。因此该系统满足以下功能(1)大盘行情显示显示大盘的最新信息。(2)涨跌排行的排序可以按照最新、涨跌、涨幅任意一组数据进行排序。(3)自选股查询可以添加、删除、查询自选股。(4)个股查询查询个股的动态信息。(5)K线图查询可查询该股票的K线图。(6)分时图查询可查询该股票的分时图。功能模块图如下图31所示图31股票查询系统功能模块33XML解析此程序用的XML解析方式有两种,一种是SAX解析,一种是DOM解析。在股票信息查询模块上运用SAX解析方式。在公司信息查询和新闻模块上运用DOM解析方式。331SAX解析SAX,它既是一个接口,也是一个软件包但作为接口,SAX是事件驱动型XML解析的一个标准接口不会改变SAX的工作原理简单地说就是对文档进行顺序扫描,当扫描到文档(DOCUMENT)开始与结束、元素(ELEMENT)开始与结束、文档(DOCUMENT)结束等地方时通知事件处理函数,由事件处理函数做相应动作,然后继续同样的扫描,直至文档结束。332DOM解析DOMDOCUMENTOBJECTMODEL文档对象模型,很多文档都被组织成了数据结构上的树的形式,DOM解析以后可以将这个文档读到内存中并且以树的形式被组织。DOM解析就是按照树形的顺序一个一个进行解析。34SQLITE数据库SQLITE,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设K线图分时图股票查询系统个股查询自选信息大盘行情个股查询计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持WINDOWS/LINUX/UNIX等等主流的操作系统,同时能够跟很多程序语言相结合,比如TCL、C、PHP、JAVA等,还有ODBC接口,同样比起MYSQL、POSTGRESQL这两款开源世界著名的数据库管理系统来讲,它的处理速度更快。在自选信息中使用SQLITE数据库进行存储用户自选信息。4详细设计实现41软件功能流程图411股票行情、涨跌排行的功能流程图获得XML文件使用SAX解析XML文件将数据放入MAP集合把适配器放入LISTVIEW中显示将ARRAYLIST封装进适配器将集合放入ARRAYLIST图41股票行情、涨跌排行的功能流程图412自选信息的功能流程图在SQLITE中新建一张表将股票代号和名字放入表中将数据库中的数据读出来显示每一行为一支股票信息把数据放入LISTVIEW图42自选信息的功能流程图413个股查询的功能流程图图43个股查询的功能流程图42UI界面设计一个ACTIVITY应用开发是由一个或者多个ACTIVITY组成的,ACTIVITY是一个UI的容器,其本身不在用户界面上显示出来。而是通过多种控件组合在一起并以一种VIEW的树形结构在用户界面进行显示。可以说一个界面就是一个ACTIVITY。421大盘行情查询界面大盘行情模块的主要功能是获得指定大盘信息的最新成交价、涨跌、涨幅信息。并可以按照最新、涨幅、涨跌、排序,并有转到其它界面的按钮如图44所示图44大盘行情查询界面/设置大盘指数按钮/设置自选信息按钮/设置LISTVIEW布局文件中整体使用LINEARLAYOUT布局方式,局部使用ABSOLUTELY绝对布局。使用BUTTON,IMAGINBUTTON,TEXTVIEW,LISTVIEW,LINE等控件组成这个ACTIVITY。422股票查询行情界面设计在此应用程序中,由于此界面为主界面,故设定了MENU菜单可以到达其它3个ACTIVITY如图45和46所示图45查询界面图46MENU按钮MENU实现的具体代码如下所示PUBLICBOOLEANONCREATEOPTIONSMENUMENUMENU/INFLATETHEMENUTHISADDSITEMSTOTHEACTIONBARIFITISPRESENTMENUADD1,1,1,“刷新“SETICONRDRAWABLES/设置第一个按钮MENUADD1,2,2,“K线图“SETICONRDRAWABLEK/设置第二个按钮MENUADD1,3,3,“分时图“SETICONRDRAWABLEF/设置第三个按钮MENUADD1,4,4,“关于“SETICONRDRAWABLEABOUT/设置第四个按钮MENUADD1,5,5,“帮助“SETICONRDRAWABLEH/设置第五个按钮MENUADD1,6,6,“退出“SETICONRDRAWABLET/设置第六个按钮RETURNSUPERONCREATEOPTIONSMENUMENU整个布局使用的是LINEARLAYOUT布局方式,标题栏使用ABSOLUTELY绝对布局方式,内容部分的TEXTVIEW使用嵌套,以便数据显示。整个ACTIVITY由BUTTON,IMAGINBUTTON,TEXTVIEW,LISTVIEW,LINE等控件组成。423K线界面的设计在个股信息中点击MENU按钮,弹出提示框进行选择查询K线图、分时图、或公司信息。如图47、48和49及410所示图47日K线图图48周K线图图49月K线图图410分时线图424自选信息界面的设计自选信息是股民根据个人喜好对个股添加保存的一个版块,如图411和412所示图411自选信息添加界面/当窗口选中焦点时的样式/选中焦点按下时的样式/按下失去焦点的样式/选中的样式/焦点的样式图412自选信息界面整个布局使用的是LINEARLAYOUT布局方式,标题栏使用ABSOLUTELY绝对布局方式,内容部分的TEXTVIEW使用嵌套,以便数据显示。使用DIALOG对话框杜股票信息保存进行友好操作。整个ACTIVITY由BUTTON,IMAGINBUTTON,TEXTVIEW,LISTVIEW,LINE等控件组成,具体代码如下所示PRIVATEVOIDADDSTOCKFINALSTRINGNAMESTOCKHANDLERSTR1/创建一个对话框进行友好询问ALERTDIALOGBUILDERBUILDERNEWALERTDIALOGBUILDERONEINFOACTIVITYTHISBUILDERSETICONRDRAWABLEICONBUILDERSETTITLE“是否保存该股票“BUILDERSETPOSITIVEBUTTON“确定“,NEWDIALOGINTERFACEONCLICKLISTENERPUBLICVOIDONCLICKDIALOGINTERFACEDIALOG,INTWHICHBUTTONTRYDBADAPTERNEWDBADAPTERONEINFOACTIVITYTHIS/传递参数并调用插入方法DBADAPTERINSERTSTOCKTEMP,NAMEDBADAPTERCLOSETOASTMAKETEXTONEINFOACTIVITYTHIS,“保存股票成功“,TOASTLENGTH_LONGSHOWLOGV“INSERTTEMP“,TEMPGETBYTESTOSTRINGCATCHEXCEPTIONELOGI“TAG“,“INSERTWORDSERROR“FINALLYDBADAPTERNULLBUILDERSETNEGATIVEBUTTON“取消“,NEWDIALOGINTERFACEONCLICKLISTENERPUBLICVOIDONCLICKDIALOGINTERFACEDIALOG,INTWHICHBUTTONBUILDERSHOW43具体的功能模块ANDROID工程基本结构目录包括SRC源代码、GEN(ANDROID系统自动生成的常量)、RES(资源文件)主要存放程序界面的布局配置(XML)文件和图片资源。ANDROIDMAINFESXML是四大组件的驱动配置文件,有它的存在,ANDROID程序的四大组件才可以正常的跳转。设计好界面后,对界面中的控件进行添加事件处理,就到了具体的代码编写阶段,首先应新建一个工程,此工程名为WDQSTOCK,它的结构如图413所示图413WDQSTOCK工程结构图1在此工程的COMBRIUPWDQSTOCKVIEW包中,所有的类都是ACTIVITY类,需要在ANDROIDMANIFESTXML文件中配置,其他为辅助界面,此包中具体的类功能的详细情况如下STOCKINFO个股信息显示界面SEARCHACTIVITY个股查询界面FACTIVITYJAVA分时图界面KACTIVYTJAVAK线图界面MAINACTIVITYJAVA大盘查询界面2在工程的COMBRIUPWDQSTOCKHANDLER包中,只有一个类STOCKHANDLERJAVA,它用于对获得的XML进行处理。SAX是一个解析速度非常快并且占用内存少的XML解析器,非常适合ANDROID等移动设备。在程序中获得股票信息的核心是通过SAX解析来实现的,根据标签名来获得其中的属性,具体实现代码如下TRYURLNEWURLCONSTANTURLMAINACTIVITYTEMPLOGD“URL“,CONSTANTURLMAINACTIVITYTEMP/1得到一个SAX工厂SAXPARSERFACTORYSPFSAXPARSERFACTORYNEWINSTANCE/2通过工厂获取SAX解析器对象SAXPARSERSPSPFNEWSAXPARSER/3通过解析器获取XMLREADERXMLREADERXRSPGETXMLREADER/4创建HANDLER对象STOCKHANDLERSTOCKHANDLERNEWSTOCKHANDLERXRSETCONTENTHANDLERSTOCKHANDLER/5解析XMLINPUTSTREAMREADERSINEWINPUTSTREAMREADERURLOPENSTREAM,“UTF8“/创建给定字符集INPUTSTREAMREADER(URLOPENSTREAM打开到此URL的连接并返回一个用于从该连接读入的INPUTSTREAM)INPUTSOURCEISNEWINPUTSOURCESIXRPARSEIS/将给定输入源的内容解析为一个XML文档,并且返回一个新的DOMDOCUMENT对象CATCHMALFORMEDURLEXCEPTIONEEPRINTSTACKTRACECATCHPARSERCONFIGURATIONEXCEPTIONEEPRINTSTACKTRACECATCHSAXEXCEPTIONEEPRINTSTACKTRACECATCHUNSUPPORTEDENCODINGEXCEPTIONEEPRINTSTACKTRACECATCHIOEXCEPTIONEEPRINTSTACKTRACEOVERRIDEPUBLICVOIDSTARTDOCUMENTTHROWSSAXEXCEPTION/遇到文档开头时触发/TODOAUTOGENERATEDMETHODSTUBSUPERSTARTDOCUMENTOVERRIDEPUBLICVOIDSTARTELEMENTSTRINGURI,STRINGLOCALNAME,STRINGQNAME,ATTRIBUTESATTRIBUTESTHROWSSAXEXCEPTION/遇到开始元素时触发/TODOAUTOGENERATEDMETHODSTUBSUPERSTARTELEMENTURI,LOCALNAME,QNAME,ATTRIBUTESOVERRIDEPUBLICVOIDCHARACTERSCHARCH,INTSTART,INTLENGTH/遇到字符数据时触发THROWSSAXEXCEPTION/TODOAUTOGENERATEDMETHODSTUBSUPERCHARACTERSCH,START,LENGTHMAINACTIVITYTEMPNEWSTRINGCH,START,LENGTHOVERRIDEPUBLICVOIDENDELEMENTSTRINGURI,STRINGLOCALNAME,STRINGQNAME/遇到结束元素时触发THROWSSAXEXCEPTION/TODOAUTOGENERATEDMETHODSTUBSUPERENDELEMENTURI,LOCALNAME,QNAMESTRCOUNTMAINACTIVITYTEMPCOUNTIF“ARRAYOFSTRING“EQUALSLOCALNAMEISHANLDEROKTRUEOVERRIDEPUBLICVOIDENDDOCUMENTTHROWSSAXEXCEPTION/遇到文档结尾时触发/TODOAUTOGENERATEDMETHODSTUBSUPERENDDOCUMENT3在工程的COMBRIUPWDQSTOCKTOOLS包中,只有一个类CONSTANTJAVA,它是用于定义程序中的一些URL。4在工程的COMBRIUPSTOCKCONTENTPROVIDER包中,有两个类,它们两个用于和SQLITE数据库交互使用的类,它不会在前台运行,它是专门用来为数据库提供增删改查的操作。数据库支持每个应用程序无论大小的生命线,除非你的应用程序只处理简单的数据,那么就需要一个数据库系统存储你的结构化数据,ANDROID使用SQLITE数据库,它是一个开源的、支持多操作系统的SQL数据库,在许多领域广泛使用,如MOZILLAFIREFOX就是使用SQLITE来存储配置数据的,IPHONE也是使用SQLITE来存储数据的。创建DBADAPTER辅助类是操作数据库的最佳实践是创建一个辅助类,由它封装所有对数据库的复杂访问,对于调用代码而言它是透明的,因此我创建了一个DBADAPTER的辅助类,由它创建、打开、关闭和使用SQLITE数据库。在DBADAPTER类中,可以扩展SQLITEOPENHELPER类,它是一个ANDROID辅助类,主要用于数据库建立和版本管理。注意ANDROID使用CURSOR类返回一个需要的值,CURSOR作为一个指针从数据库查询返回结果集,使用CURSOR允许ANDROID更有效地管理它们需要的行和列,你使用CONTENTVALUES对象存储键/值对,它的PUT方法允许你插入不同数据类型的键值。PUBLICCLASSDBADAPTER/构造一个DBADAPTER类/定义数据库名PUBLICSTATICFINALSTRINGDB_NAME“MYSTOCKDB“/定义数据库版本号PUBLICSTATICFINALINTDB_VERSION2PRIVATECONTEXTCONTEXTPRIVATEDBHELPERDBHELPERPRIVATESQLITEDATABASEDBNULL/定义表名PUBLICSTATICFINALSTRINGDB_TABLE“MYSTOCK_TABLE“PUBLICSTATICFINAL/定义数据库中创建表的语句STRINGCREATE_TABLE“CREATETABLE“DB_TABLE“TEMP“TEXTPRIMARYKEY,“NAME“TEXT“PUBLICDBADAPTERCONTEXTCTHISCONTEXTCOPEN/打开数据库PUBLICVOIDOPENDBHELPERNEWDBHELPERCONTEXT,DB_NAME,NULL,DB_VERSIONDBDBHELPERGETWRITABLEDATABASE/关闭数据库PUBLICVOIDCLOSEDBHELPERCLOSE/获得数据库中的DB_TABLE表的所有数据PUBLICCURSORGETALLRETURNDBQUERYDB_TABLE,NEWSTRING“TEMP“,“NAME“,NULL,NULL,NULL,NULL,NULL/通过游标获得指定的一行数据PUBLICCURSORGETCURSORBYSQLSTRINGSQL,STRINGSELECTIONARGSRETURNDBRAWQUERYSQL,SELECTIONARGS/通过TEMP字符串对指定一行进行删除PUBLICINTDELETESTOCKBYTEMPSTRINGTEMPRETURNDBDELETEDB_TABLE,“TEMP“,NEWSTRINGTEMP/插入对应表的数据PUBLICLONGINSERTSTOCKSTRINGTEMP,STRINGNAMECONTENTVALUESCONTENTNEWCONTENTVALUESCONTENTPUT“TEMP“,TEMPCONTENTPUT“NAME“,NAMERETURNDBINSERTDB_TABLE,NULL,CONTENT431网络连接编程网络连接和SOCKET编程是此软件实现的基础,既然涉及到网络编程首先应到配置文件即ANDROIDMANIFEST中进行网络配置,又由于此软件主要是采用WIFI连接实现的网络编程,因此也要对其进行WIFI权限设置,并对协议中的命令进行初始化处理,具体实现代码如下ANDROID中涉及网络的部分都会在子线程下实现,以避免整个程序的奔溃。具体实现代码如下PUBLICVOIDRUN/实现RUN方法/TODOAUTOGENERATEDMETHODSTUBINTI0WHILETRUEIIFSTOCKHANDLERISHANDLDEROKPROGRESSDIALOGDISMISS/显示进度提示框HANDLERSENDEMPTYMESSAGE0/用HANDLER传递MESSAGE0不重新载入数据STOCKHANDLERISHANDLDEROKFALSELOGD“AAA“,“BREAKLOGD“HERE“,“TRYTHREADSLEEP1000CATCHINTERRUPTEDEXCEPTIONEEPRINTSTACKTRACEIFI5PROGRESSDIALOGDISMISSHANDLERSENDEMPTYMESSAGE1/HANDLER传递MESSAGE1重新加载数据LOGD“WHERE“,“BREAK432大盘行情模块大盘行情模块的主要功能是获得指定大盘信息的最新成交价、涨跌、涨幅信息,如图41。具体的代码实现1首先载入信息,实现代码如下所示PRIVATEVOIDSETINFO/载入数据/TODOAUTOGENERATEDMETHODSTUB/创建一个ARRAYLIST的MAP集合,并将大盘数据解析出来放入ARRAYLISTLISTITEMSNEWARRAYLIST/上证指数MAPMAP1BOARDINFO“SH000001“/深证指数MAPMAP2BOARDINFO“SZ399001“/中小板指MAPMAP3BOARDINFO“SZ399005“/创业板指MAPMAP4BOARDINFO“SZ399006“/上证380MAPMAP5BOARDINFO“SH000009“LISTITEMSADDMAP1LISTITEMSADDMAP2LISTITEMSADDMAP3LISTITEMSADDMAP4LISTITEMSADDMAP5/创建一个SIMPLEADAPTER,将所得到的大盘数据放入SIMPLEADAPTERADAPTERNEWSIMPLEADAPTERMAINLOADACTIVITYTHIS,LISTITEMS,RLAYOUTMAINLIST,NEWSTRING“S_NAME“,“S_NEWS“,“S_UD“,“S_UDS“,“S_ID“,NEWINTRIDLIST_NAME,RIDLIST_NEW,RIDLIST_UD,RIDLIST_UDS,RIDLIST_ID/将适配器方式LISTVIEW中MAINLISTSETADAPTERADAPTER2当点击最新、涨幅、涨跌,都可以进行对LISTVIEW的重新排序,如下图414所示图414股票按最新价格排序实现代码如下/根据涨跌数据进行排序PRIVATEVOIDZDUP/TODOAUTOGENERATEDMETHODSTUBCOMPARESTRING“S_UDS“COLLECTIONSSORTLISTITEMS,NEWMAPCOMPAREMAINLISTSETADAPTERADAPTER/根据涨幅数据进行排序PRIVATEVOIDZFUP/TODOAUTOGENERATEDMETHODSTUBCOMPARESTRING“S_UD“COLLECTIONSSORTLISTITEMS,NEWMAPCOMPAREMAINLISTSETADAPTERADAPTER/对最新交易数据进行排序PRIVATEVOIDNEWUP/TODOAUTOGENERATEDMETHODSTUBCOMPARESTRING“S_NEWS“COLLECTIONSSORTLISTITEMS,NEWMAPCOMPAREMAINLISTSETADAPTERADAPTER/排序所用的MAP对比类,用键值对的值进行比较PRIVATECLASSMAPCOMPAREIMPLEMENTSCOMPARATORPUBLICINTCOMPAREMAPO1,MAPO2FLOATVALUE1FLOATPARSEFLOATSTRINGO1GETCOMPARESTRING1000FLOA

温馨提示

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

评论

0/150

提交评论