资源描述:
《基于android平台的手机商城的设计论文》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
基于Android平台的手机商城的设计毕业论文目录目次摘要I目次III1引言11.1研究背景11.1.1电子商务11.1.2Android平台21.1.3SSH框架21.2国内外应用现状31.2.1电子商务应用现状31.2.2Android应用现状31.3研究的目的和主要内容41.3.1研究的目的41.3.2研究的主要内容42系统需求分析52.1功能需求分析52.2数据库需求分析52.3开发环境及硬件需求53系统概要设计63.1总体功能63.2E-R图73.3数据库设计74详细设计74.1总体流程设计74.2系统逻辑结构设计74.2.1Android客户端逻辑结构设计74.2.2后台系统逻辑结构75系统实现75.1前台android端主要功能实现75.2后台web端主要功能实现76小结7参考文献7致谢7I 1引言基于移动互联网这个全新的时代背景,甚至有业内人士预测随着无线互联蚕食有线互联市场,未来可能70%都是无线互联市场,人们日常上网的主要通道将是手机。正是预见到手机用户的无线市场的巨大发展空间,各行各业纷纷加速无线战略布局以抢占先机。移动电子商务未来的巨大发展潜力是吸引京东、当当、卓越以及淘宝等电子商务企业进入这一领域的主要诱因。程善宝指出,淘宝、京东等传统电子商务进入移动电子商务,依附商品渠道、运营经验等方面的优势,在移动电子商务领域会比电信运营商、software提供商以及新兴的移动电子商务企业具备更好远景。随着移动通信的发展以及互联网向移动终端的普及,网络和用户对移动终端的要求越来越高,而Symbian,WindowsMobile,PalmOS等手机平台过于封闭,不能很好的满足用户的需求,因此市场迫切需要一个开放性很强的平台。经过多年的发展,第三代数字通信(3G)技术获得了广泛的接受,它为移动终端用户带来了更快的数据传输速率。随着3G网络的使用,移动终端不再仅是通讯网络的终端,还将成为互联网的终端。因此,移动终端的应用软件和需要的服务将会有很大的发展空间。Google为此于2007年11月推出了一个专为移动设备设计的软件平台——Android。Android是一套真正意义上的开放性的移动设备综合平台,它包括操作系统、中间件和一些关键的平台应用。Android是由Linux+Java构成的开源软件,允许所有厂商和个人在其基础上进行开发。Android平台的开放性等特点既能促进技术(包括平台自身)的创新,又有助于降低开发成本,还可以使运营商能非常方便地制定自己的特色化的产品。因此,它具有很大的市场发展潜力。1.1研究背景1.1.1电子商务电子商务是以计算机网络为基础。以电子化方式为手段,以商务活动为主体,在法律许可范围内所进行的商务活动过程。电子商务是运用数字信息技术,对企业的各项活动进行持续优化的过程。电子商务涵盖的范围很广,一般可分为企业对企业(Business-to-Business),或企业对消费者(Business-to-Consumer)两种。另外还有消费者对消费者(Consumer-to-Consumer)这种大步增长的模式。随着国内Internet使用人数的增加,利用Internet进行网络购物并以银行卡付款的消费方式已日渐流行,市场份额也在迅速增长,电子商务网站也层出不穷。电子商务最常见之安全机制有SSL(安全套接层协议)及SET(安全电子交易协议)两种。电子商务是一个不断发展的概念,电子商务的先驱IBM公司于1996年提出ElectronicCommerce(E-Commerce)的概念,到了1997年,该公司又提出了ElectronicBusiness(E-Business)的概念。但我国在引进这些概念的时候都翻译成电子商务,很多人对这两者的概念产生了混淆。事实上这两个概念及内容是有区别的,E-Commerce应翻译成电子商业,有人将E-Commerce称为狭义的电子商务。将E-Business称为广义的电子商务。E-Commerce是指实现整个贸易过程中各阶段贸易活动的电子化。E-Business是利用网络实现所有商务活动业务流程 的电子化。E-Commerce集中于电子交易,强调企业与外部的交易与合作,而E-Business则把涵盖范围扩大了很多。广义上指使用各种电子工具从事商务或活动。狭义上指利用Internet从事商务或活动。其对社会的影响,不亚于蒸汽机的发明给整个社会带来的影响。因此,对于网上购物技术的研究和实现,以及搭建一个实用的网上商店是很重要的。1.1.2Android平台Android是基于Linux内核的软件平台和操作系统,是Google在2007年11月5日公布的手机系统平台,早期由Google开发,后由开放手机联盟(OpenHandsetAlliance)开发。它采用软件堆层(softwarestack,又名以软件叠层)的架构,主要分为3部分。低层以Linux内核工作为基础,只提供基本功能;其他的应用软件则由各公司自行开发,以Java作为编写程序的一部分。[1]其大优势特色:1)开放性:在优势方面,Android平台首先就是其开放性,开发的平台允许任何移动终端厂商加入到Android联盟中来。[2,3]2)丰富的硬件选择:这一点还是与Android平台的开放性相关,由于Android的开放性,使其硬件的支持较多,故拥有了更多的硬件选择。3)不受任何限制的开发商:Android平台提供较广的平台给第三方开发商,因此不受框架束缚。4)无缝结合的Google应用:Google公司本身拥有的应用能够完美无缝的与Android平台结合。[4]1.1.3SSH框架典型的J2EE三层结构,分为表现层、中间层(业务逻辑层)和数据服务层。三层体系将业务规则、数据访问及合法性校验等工作放在中间层处理。客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与数据库交互。[5,6]表现层是传统的JSP技术,自1999年问世以来,经过多年的发展,其广泛的应用和稳定的表现,为其作为表现层技术打下了坚实的基础。中间层采用的是流行的Spring+Hibernate,为了将控制层与业务逻辑层分离,又细分为以下几种。[12,13]Web层,就是MVC模式里面的“C”(controller),负责控制业务逻辑层与表现层的交互,调用业务逻辑层,并将业务数据返回给表现层作组织表现,该系统的MVC框架采用Struts。[10,11]Service层(就是业务逻辑层),负责实现业务逻辑。业务逻辑层以DAO层为基础,通过对DAO组件的正面模式包装,完成系统所要求的业务逻辑。[9,15]DAO层,负责与持久化对象交互。该层封装了数据的增、删、查、改的操作。PO,持久化对象。通过实体关系映射工具将关系型数据库的数据映射成对象,很方便地实现以面向对象方式操作数据库,该系统采用Hibernate作为ORM框架。[14] Spring的作用贯穿了整个中间层,将Web层、Service层、DAO层及PO无缝整合,其数据服务层用来存放数据。[7,8]1.2国内外应用现状1.2.1电子商务应用现状无论在国内还是在国外,电子商务都还处于起步阶段。最近几年电子商务得到了迅速的发展。尽管各个国家具体情况不同,但是基于对国家经济发展的预测,各国政府都很重视电子商务,并且积极地发展电子商务[5]。在发达国家,电子商务的发展非常迅速,通过Internet进行交易己成为一种潮流。基于电子商务所连带出的商品交易方案、电子结账方案和信息安全方案等,已逐步成为国际信息技术市场竞争的焦点。随着电子商务的日益发展,产生了虚拟银行、网络营销、网上购物、网络广告等新兴信息产业,从侧面反应了电子商务正在对社会和经济产生着深刻的影响。手机淘宝、手机京东、新浪微博、Twitter……这些2010年的热门词汇正为业界所津津乐道,移动互联网、新媒介正在发起对传统媒体、传统产业的新一轮冲击。而这一次,要变革的可能不只是传统的电视、报纸、实体店,更还有PC(电脑)。现在主流的智能机配置已经远远超过10年前家用电脑的配置,3G网络技术的应用和智能机的大幅降价普及,使移动互联网开始大面积转入到生活、工作等多方面应用领域。手机不再是单一的通讯工具,手机的功能已经覆盖到生活、娱乐、工作、通讯等多个层面[6],在功能应用和软件安装丝毫不比笔记本差,相比笔记本电脑,手机携带方便、小巧时尚、待机时间长等优势无可代替。移动电子商务未来的巨大发展潜力是吸引京东、当当、卓越以及淘宝等电子商务企业进入这一领域的主要诱因。程善宝指出,淘宝、京东等传统电子商务进入移动电子商务,依附商品渠道、运营经验等方面的优势,在移动电子商务领域会比电信运营商、software提供商以及新兴的移动电子商务企业具备更好远景。1.2.2Android应用现状许多厂商也看到了Android的优势,于是从国外到国内,都开始采用android,生产平板电脑。戴尔已经上市了的streak,就是一款采用了android的产品。对比起苹果的iPad,它同样采用了一款主频高达1GHz的ARM处理器,在运行速度上,理论上应该差不了多少。而且,这款产品还拥有iPad所没有的优点,它的屏幕更小,便携性更加的突出,可更换电池,更加的方便,支持手机通话功能等。再加上它采用了比iPhoneOS逊色不了多少的android操作平台,在市场上也会拥有很强的竞争力。在国内,MP4厂商最近在高清视频播放能力达到了极致的情况下,纷纷开始寻找新的发展方向,虽然有很多的厂商选择了在电子书领域披荆斩棘一番,但是,更多的选择了开发智能的MID,而且,它们在操作平台上,几乎所有的都选择了android,而且,最新产品据说会采用android2.1版本。蓝魔W7以及智器的SmartQ T7就是两款已经上市了的产品。而且,蓝魔W9有已经快要上市。除了它们两家企业以外,别的厂商的产品也在酝酿当中,马上就要上市。如,原道的N5,蓝晨的BM-999,台电的C520I/C430I,以及酷比魔方的U3等。虽然它们大部分采用的是瑞芯微的主控方案,较苹果的A4还有差距,但是,它们拥有价格优势,一款产品只需要几百元。在山寨Ipad领域,它们在外观上完全是模仿苹果IPad的设计,模仿达到了1:1程度,如果不开机,很难将它们与真正的IPad的区分开来。这些山寨为了尽可能的接近IPad,纷纷开始采用android操作平台,这样,它们的产品在软件的扩展性上,就能够较为简单的情况下达到几乎与苹果IPad相媲美的程度。价格在五百多元左右。1.3研究的目的和主要内容1.3.1研究的目的课题要求设计并实现一个基于Android平台的网上购物商城,以手机商城为例。用户可以通过Android系统手机,登录该商城。并可进行对商品的查询,购买等功能。与淘宝等购物网站一样,提供对商品的基本操作。该购物系统使得用户不必被限制在电脑前购物;也使得用户不必刻意找时间去上网查询商品,或者消费。只要拥有Android手机,用户就可以随时随地的购买商品。不仅解放了时间空间的限制,更使得用户更加高效率的使用时间,可以把在公交车上的时间,地铁里的时间,等很多等待的时间用来购物。总之,基于Android平台的网上购物商城是根据社会发展应运而生的。在高节奏生活的现代社会,如何节约时间,如何高效率的应用时间,已经成为所有人都会去思考的问题。基于Android平台的网上购物商城正好使得人们节约下了购物的时间,而且使得人们更好的利用一些在等待的时间。没有了时间和空间的限制,购物就变得更加便捷,更加人性化了。1.3.2研究的主要内容基于Android平台的网上购物商城,主要实现通过移动客户端实现网上购物的功能。类似于一般的购物网站,该网站也提供商品搜索查询,购物车管理等功能。文本查询:顾名思义,就是通过在文本框内输入你所要查询的商品名称进行查询,或者也可以通过输入一些关键字进行模糊查询,查询出与所输入的字符相关的产品及其信息。购物车管理:类似于商场的购物车,先将所需要购买的商品放入购物车中,等购物结束,再对所购买的商品进行统一付款。如不想购买其中的某种或几种商品,可以从购物车中将其删除。除此之外,系统还提供普通账号注册,登录功能。当登录之后,可以对商品进行其他操作。每个用户会有自己的购物车,来更好的实现对品的操作。 2系统需求分析2.1功能需求分析系统主要功能分为:客户端功能,后台管理功能两大模块。客户端功能:1)系统为用户提供账号注册功能,用户输入合法信息,即可注册成功。2)系统登陆功能,用户输入正确的用户名与密码,即可登陆客户端。3)商品搜索功能,用户输入关键字,搜索出名称相关的商品。4)商品分类功能,商品按品牌分类,用户可根据分类搜索商品。5)购物车功能,用户对于想购买的商品,可以选择加入购物车。6)订单操作,用户登陆之后,可查看历史订单记录及其情况。后台管理功能:商城管理员专用管理平台,提供管理员登陆,商品信息管理、订单信息管理、主要用于平常商城维护及商品统计功能。1)管理员登陆功能,管理员输入正确的账号密码开始登陆。2)商品信息管理功能,管理商品的基本信息,可以对商品进行查询、添加、修改、删除等功能,对库存商品做出相应调整。3)单信息管理功能,管理订单的基本信息,可以对订单进行查询、添加、修改、删除等功能。2.2数据库需求分析基于功能需求中的各项功能,总结出数据库需要的主要有四张表。分别是:用户表,商品表,订单表。用户表需要包含用户昵称,密码,性别等较为详细的信息;商品表则需要包含商品名称,数量,价格等商品所应具备的基本信息;订单表需要包含订单编号,用户昵称,用户地址,订单状态等详细信息。2.3开发环境及硬件需求软件类需求:1)操作系统:windowsXP及其以上操作系统。2)数据库:Mysql5.03)后台管理服务器:Tomcat6.0.294)客户端请求服务器:Tomcat6.0.295)后台管理开发平台:MyEclipseforSpring8.6。6)客户端开发平台:EclipseIndigo3.7.27)后台管理开发语言包:JDK1.6。8)客户端开发语言包:AndroidSDK+JDK1.6。 硬件类需求1)电脑内存:2G以上。2)电脑CPU:双核及其以上。3)其他硬件需求。Windowsxp较好的兼容性,内存资源占用少的特点是我选择作为本次开发的主系统的重要依据。考虑到机器的性能方面,在数据库的选择上,选用相对小型的Mysql5.0,更有利于系统的开发。Tomcat是一个轻量级应用服务器,占用系统资源少,扩展性好,性能稳定,是现在比较流行的Web应用服务器MyEclipseforSpring8.6集成了很多eclipse没有的插件,对于Web的开发有很好的帮助。EclipseIndigo3.7.2是开发Android系统的相对较好,稳定的开发工具。此次java开发环境沿用的是一直很熟悉的JDK1.6,在android方面用的是最先版本SDK。自身电脑完全可以支持本次系统的开发,硬件支持较好。 3系统概要设计3.1总体功能该系统分为前台客户端和后台管理端:前台主要是用户的注册、登录、购物,后台主要是管理员对、商品、订单的管理,在整个系统中他们具有不同的功能和权限。如图3.1所示。用户注册登陆商品搜索客户端商品分类购物车订单查询购物系统管理员登陆商品信息管理后台管理订单信息管理图3.1总体功能图客户端的主要使用对象是普通用户,分为用户登陆,用户注册,商品搜索,商品分类,购物车;后台管理模块的主要使用对象是管理员,分为管理员登陆,商品信息管理,订单信息管理。 3.2E-R图系统管理员主要管理用户,商品,订单,商品类型四个方面。用户主要包含了,ID,昵称,密码等属性;商品主要包含ID,名称,价格等属性;订单主要包含ID,订单状态等属性;商品类型主要包含ID,类型名称等属性。如下图3.2所示:用户昵称用户ID管理员用户时间商品订单管理管理管理密码电话等级手机号码性别余额商品ID规格价格图片数量描述商品名称用户姓名订单ID用户电话总价订单日期收货地址订单状态管理商品类型类型ID类型名mmm1111m图3.2E-R图3.3数据库设计本系统采用的是Mysql数据库,为了将在系统页面中显示的动态数据存放在后台数据库中,便于修改、更新和信息隐藏,因此,将E-R图转换成关系模型,即在数据库中建立实体关系表。 (1)用户表用户表具有用户昵称、密码、电话、等基本信息。设置uid为主键,主键的生成策略采用自动生成方式。用户的属性图如图3.3所示:用户用户ID密码用户昵称等级性别余额手机号码图3.3用户属性图根据图3.3可定义出用户的数据表user,用户表用来保存所有用户的信息。结构如表3-1:表3-1用户表列名数据类型说明useridIntprimarykeyauto_increment用户IDusernamevarchar用户昵称pwdvarchar密码phonevarchar用户手机号码Power1varchar等级sexvarchar性别Yu_eInt余额(2)商品表商品表具有商品名称、数量、价格、图片等基本信息。设置pid为主键,主键的生成策略采用自动生成方式。商品的属性图如图3.4所示: 商品商品ID数量商品名称规格价格描述图片图3.4商品属性图根据图3.4可定义出商品的数据表product,商品表用来保存所有商品的信息。结构如表3-2:表3-2商品表列名数据类型说明idIntprimarykeyauto_increment商品IDNamevarchar名称fujiavarchar规格jiaqianInt价格shuliangvarchar数量tupianvarchar图片miaoshuvarchar描述(1)订单表订单表具有用户昵称、用户姓名、商品名称、电话、地址、订单日期、订单处理状态等基本信息。设置sid为主键,主键的生成策略采用自动生成方式。订单的属性图如图3.5所示: 用户订单ID用户姓名时间总价收获地址订单明细电话订单处理状态图3.5订单属性图根据图3.5可定义出订单的数据表salesorder,订单表用来保存所有订单的信息。结构如表3-3:表3-3订单表列名数据类型说明IdIntprimarykeyauto_increment订单IDshijianvarchar订单时间kewuvarchar客户shouhuodizhivarchar收获地址Jin_eint总价mingxivarchar订单明细zhuangtaivarchar状态phonevarchar电话 4详细设计4.1总体流程设计用户通过登录进入系统,可以进行修改自己的信息,浏览、订购商品,查看、取消订单等操作。通过管理员的权限可以进入后台管理系统分别对商品信息管理、订单信息管理、进行添加、删除、修改和查看等操作。系统工作流程图如图4.1所示。管理员用户登入后台登入客户端订单管理商品管理注册、登录浏览商品数据库购物车图4.1系统工作流程图 4.2系统逻辑结构设计4.2.1Android客户端逻辑结构设计1.登陆功能,如图4.2所示:客户端将输入内容以字节流发送至客户端服务器输入用户名,密码用户名,密码判断TrueFalse客户端接收数据,做相应跳转图4.2客户端登陆流程图调用HttpClient这个类,实现与后台数据库的连接。运用sql语句查询数据库中用户的信息,与登入界面中输入的信息相匹配,如果匹配错误,则提示错误,如匹配正确,便可实例化一个Intent对象,并调用其方法,实现登录界面的成功跳转。2.注册功能,如图4.3所示:密码判断客户端将输入内容以字节流发送至客户端服务器输入注册信息truefalse客户端接收数据,做相应的跳转图4.3客户端注册流程图同样是调用HttpClient这个类,连接到数据库,将输入的信息插入到后台数据库中,两次密码输入一致便可实现注册,如不一样,需重新输入。信息输入正确后实例化Intent对象,调用其方法,并跳转到登入界面。 3.商品搜索,如图4.4所示:客户端将输入内容以字节流发送至服务器输入搜索信息服务器处理逻辑,将搜索结果列表造型,发送信息至客户端客户端将所得结果在客户端界面显示在客户端选择具体商品显示商品详细信息选择数量,加入购物车,并购买图4.4客户端商品搜索流程图封装商品搜索的sql语句在ListInfo类中,调用这个类的方法,实例一个List>集合,将搜索出来的商品保存在这个集合中,实例SimpleAdapter对象,List集合中的商品,以列表的形式显示在页面中。4.商品分类搜索,如图4.5所示:服务器响应请求,将搜索结果列表造型,发送信息至客户端点击分类Tab在客户端选择具体商品显示商品详细信息将分类请求发送至客户端服务器选择数量,加入购物车,并购买图4.5客户端商品分类搜索流程图 商品的分类搜索主要是按品牌来搜索,在以上商品搜索中,是输入商品信息实现单个查询,在分类搜索中,选择一个商品的品牌并可实现多重查询,实现原理与上文一样5.购物车,如图4.6所示:客户端本地请求,读取本地文件,造型为对象点击购物车Tab将列表中元素在客户端显示点击结算,将数据写成字节流,发送至服务器服务器读取数据,写入数据库图4.6客户端购物车流程图在搜索的商品添加一个监听器,实现onListItemClick方法,在点击商品,实例Intent对象,将画面跳转到购物车的画面,同理用onListItemClick方法,实现商品的购买功能的实现。6.订单,如图4.7所示:将订单请求发送至客户端服务器点击订单Tab服务器响应请求,将搜索结果列表造型,发送信息至客户端将列表中元素在客户端显示图4.7客户端订单流程图连接到后台数据库,将填写的订单信息插入到数据库中,通过后台来实现对订单的管理,管理员在发货后,数据库中将订单状态更改为已发,前台页面中,返回数据库中订单状态。 4.2.2后台系统逻辑结构后台采用SSH框架设计,数据库由Hibernate管理,其中action方法交给Spring管理,页面跳转交给Struts管理。后台系统主要有用户信息管理,商品信息管理,订单管理,销售统计。其中用户信息管理,商品信息管理,订单管理功能基本相似。以用户信息管理为例。1.管理员登入管理,如图4.8所示:falsetrue管理员登入向服务器发送请求,校验密码登入重新登入图4.8后台管理员登入流程图管理员在后台进行登入,输入的账号密码,将发送到数据库进行验证,如果正确,将直接登入到主界面中,如果错误,将进行重新登入。2.商品管理,如图4.9所示:商品列表查询删除修改增加向数据库发送请求,将数据显示到页面中图4.9后台商品管理图在管理员点击商品列表的时候,数据库将所有商品信息显示在页面中,管理员可对商品进行增加,修改,删除,查询的功能。 3.订单管理,如图4.10所示:订单列表向数据库发送请求,将数据显示到页面中发货关闭交易图4.10后台订单管理图管理员点击订单列表,页面显示出所有客户的订单,而管理员可以操作这些订单,实现订单状态的修改,发货或关闭交易。 5系统实现5.1前台android主要功能的实现登入界面,如图5.1所示图5.1前台登入输入账号密码,便可登入到主界面,代码如下:b1.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewv){if(!e1.getText().toString().equals("")||!e2.getText().toString().equals("")){httpclienthc=newhttpclient("l=1&sql=select@*@from@user1@where@username='"+e1.getText().toString()+"';");Stringstr=hc.getshuju();if(str.equals("")){Toast.makeText(login.this,"用户名不存在!",Toast.LENGTH_LONG).show();return;}else{String[]str1=str.split(",");if(e2.getText().toString().equals(str1[2])){e.putString("id",str1[0]);e.putString("name",str1[1]);e.putString("yu_e",str1[6]);e.commit();Intenti=newIntent(login.this,ShoppingActivity.class); startActivity(i);login.this.finish();}else{Toast.makeText(login.this,"密码错误!",Toast.LENGTH_LONG).show();}}}else{Toast.makeText(login.this,"您是不是有点东西没填啊!",Toast.LENGTH_LONG).show();}}});这段代码,主要是判断了用户输入的信息,并对其进行验证,如果正确,可直接登入到主界面,如果错误,或者有些内容没填,会出现相应的提示。注册界面,如图5.2所示图5.2前台注册新用户注册,填写相关信息,便可获得登入账号,代码如下:b1.setOnClickListener(newOnClickListener(){ publicvoidonClick(Viewv){if(!e1.getText().toString().equals("")&&!e2.getText().toString().equals("")&&!e3.getText().toString().equals("")&&!e4.getText().toString().equals("")){if(e2.getText().toString().equals(e3.getText().toString())){if(r1.getCheckedRadioButtonId()==R.id.radio0)sex="男";elsesex="女";httpclienthc=newhttpclient("l=2&sql=insert@into@user1(username,pwd,phone,power1,sex)@values('"+e1.getText().toString()+"','"+e2.getText().toString()+"','"+e4.getText().toString()+"',2,'"+sex+"');");Stringstr=hc.getshuju();if(str.equals("1")){Toast.makeText(zhuce.this,"注册成功!",Toast.LENGTH_LONG).show();Intenti=newIntent(zhuce.this,login.class);startActivity(i);zhuce.this.finish();}}else{Toast.makeText(zhuce.this,"两次密码没填对!",Toast.LENGTH_LONG).show();}}else{Toast.makeText(zhuce.this,"您是不是有点东西没填啊!",Toast.LENGTH_LONG).show();}}});这段代码主要解释了在用户注册时,读取用户所填写的信息,并将这些信息插入到后台数据库中。用户在密码填写时必须保持前后一致,如果不一致并会出现提示。 主界面,如图5.3所示:图5.3前台主界面点击其中一类商品(诺基亚),可跳转到相关商品的浏览信息,如图5.4所示:图5.4商品浏览列表关键代码 classibocl1implementsOnClickListener{publicvoidonClick(Viewv){listinfol=newlistinfo("nuojiya");l.list1();Intenti=newIntent(ShoppingActivity.this,show.class);i.putExtra("show","nuojiya");startActivityForResult(i,0);}}这段代码实现了鼠标的监听,在点击一类商品的时候如诺基亚,会自动跳转到诺基亚商品的浏览画面。点击选中的商品(Lumia800),可进行购买,如图5.5所示:图5.5商品详细信息关键代码publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.show);Intenti=getIntent(); listinfol=newlistinfo(i.getStringExtra("show"));List>list=l.list1();SimpleAdaptersa=newImageSimpleAdapter(this,list,R.layout.show_list_item,newString[]{"product_item_image","text1","text2","text3","list_idex","yin_miaoshu","yin_shuliang","yin_lujing","yin_id","yin_biaoming"},newint[]{R.id.product_item_image,R.id.text1,R.id.text2,R.id.text3,R.id.list_idex,R.id.yin_miaoshu,R.id.yin_shuliang,R.id.yin_lujing,R.id.yin_id,R.id.yin_biaoming});setListAdapter(sa);}这段代码,是在界面中显示出商品的具体信息,有价格,描述,库存等等。商品搜索可根据品牌来搜索(诺基亚),如图5.6所示:图5.6搜索界面输入价格,可实现双条件搜索,如图5.7所示: 图5.7条件搜索关键代码publiclistinfo(Stringstr){this.str=str;this.str1="l=1&sql=select@*@from@"+str+";";//按商品名查询}publiclistinfo(Stringstr,Stringstr1){this.str=str;this.str1="l=1&sql=select@*@from@"+str+"@where@jiaqian=@"+str1+";";//按商品名和价格查询}这段代码是数据库查询语句,根据不同的条件,查询不同的结果。 购物车,如图5.8,图5.9所示:图5.8主界面中的选项图5.9购物车点击商品可对商品实现修改,如图5.10,图5.11所示:图5.10商品修改提示图5.11商品修改 关键代码if(which==0){LayoutInflaterfactory=LayoutInflater.from(car.this);finalViewview=factory.inflate(R.layout.dialog,null);AlertDialog.Builderdialog07=newAlertDialog.Builder(car.this){@OverridepublicAlertDialogcreate(){TextViewname=(TextView)view.findViewById(R.id.dialog_name);TextViewjiage=(TextView)view.findViewById(R.id.dialog_jiage1);TextViewkucun=(TextView)view.findViewById(R.id.dialog_kucun1);TextViewt1=(TextView)v1.findViewById(R.id.car_list_item_textView1);TextViewt2=(TextView)v1.findViewById(R.id.car_list_item_textView2);TextViewt3=(TextView)v1.findViewById(R.id.car_list_item_textView3);TextViewt4=(TextView)v1.findViewById(R.id.car_list_item_kucun);name.setText(t1.getText());kucun.setText(t4.getText());inta=Integer.parseInt(t2.getText().toString());intb=Integer.parseInt(t3.getText().toString());intc=b/a;jiage.setText(c+"");returnsuper.create();}};dialog07.setIcon(R.drawable.ic_launcher);dialog07.setTitle("修改");dialog07.setView(view);dialog07.setPositiveButton("确定",newDialogInterface.OnClickListener(){publicvoidonClick(DialogInterfacedialog,intwhichButton){EditTextshuliang=(EditText)view.findViewById(R.id.dialog_shuliang1);if(!shuliang.getText().toString().equals("")){TextViewname=(TextView)view.findViewById(R.id.dialog_name);TextViewjiage=(TextView)view.findViewById(R.id.dialog_jiage1);TextViewkucun=(TextView)view.findViewById(R.id.dialog_kucun1);TextViewt=(TextView)v1.findViewById(R.id.car_list_item_id);Stringstr1=shuliang.getText().toString();inta=Integer.parseInt(str1);intb=Integer.parseInt(kucun.getText().toString());if(a>b){Toast.makeText(car.this,"库存量不够啊!亲!",Toast.LENGTH_LONG).show();} Stringd=Integer.parseInt(str1)*Integer.parseInt(jiage.getText().toString())+"";dialog1(name.getText().toString(),str1,d,kucun.getText().toString(),t.getText().toString());}else{Toast.makeText(car.this,"请输入数量!",Toast.LENGTH_LONG).show();}}});dialog07.setNegativeButton("取消",newDialogInterface.OnClickListener(){publicvoidonClick(DialogInterfacedialog,intwhichButton){}});dialog07.create().show();}//删除else{TextViewt=(TextView)v1.findViewById(R.id.car_list_item_id);sqlsql3=newsql(car.this,"shangpin");SQLiteDatabasedb=sql3.getdb();db.delete("shangpin",shangpinBean.ID+"="+t.getText().toString(),null);SimpleAdaptersa=list1();setListAdapter(sa);zong();}}});这一段代码,是在购物车中,对购买的商品信息的修改,主要是对购买数量的修改,如果所购买数量大于商品本身库存,就会出现提示,库存不足。如果客户不想购买这件商品,也可进行删除操作。 购买,如图5.12所示:图5.12购买界面在付款页面中,填入相关信息,便可生产订单,代码如下publicvoidonClick(Viewv){Strings1=sp.getString("id",null);Httpclienthc=newhttpclient("l=3&sql=select@pwd@from@user1@where@userid="+s1+";");Strings2=hc.getshuju();if(s2.equals(e3.getText().toString())){httpclienthc1=newhttpclient("l=4&sql=update@user1@set@yu_e=yu_e-"+i.getStringExtra("qian")+"@where@userid="+s1+";");hc1.getshuju();httpclienthc2=newhttpclient("l=2&sql=insert@into@dingdang(shijian,kehu,shouhuodizhi,jin_e,zhuangtai,phone)@values(now(),'"+sp.getString("name",null)+"','"+e1.getText().toString()+"',"+t1.getText().toString()+",'已付款','"+e2.getText().toString()+"');");Strings5=hc2.getshuju();Log.d("Jersey",s5);sqlsql3=newsql(jiesuan.this,"shangpin");Cursorc=sql3.select("");SQLiteDatabasedb=sql3.getdb();c.moveToFirst();while(!c.isAfterLast()&&(c.getString(1)!=null)){ Stringshangid=c.getString(1);Stringbm=c.getString(2);Stringshuliang=c.getString(4);httpclienthc3=newhttpclient("l=4&sql=update@"+bm+"@set@shuliang=shuliang-"+shuliang+"@where@id="+shangid+";");Strings=hc3.getshuju();db.delete("shangpin",shangpinBean.ID+"="+c.getString(0),null);c.moveToNext();}Toast.makeText(jiesuan.this,"购买成功!",Toast.LENGTH_LONG).show();Intenti=newIntent(jiesuan.this,ShoppingActivity.class);startActivity(i);jiesuan.this.finish();}else{Toast.makeText(jiesuan.this,"密码错误!",Toast.LENGTH_LONG).show();}}});这段代码主要是读取用户填写的订单信息,并插入到数据库中生成订单表,最后一项要填写密码,是用户的登入密码,填写错误会出现提示并重新填写,正确后会有个提示信息,购买成功。 订单,如图5.13,图5.14,图5.15,图5.16所示:图5.13订单图5.14显示已发货后的订单图5.15收货提示图5.16确认收货后的订单 在订单中点击所要处理的订单,确认收货,在这个订单整个交易过程中,需后台同时进行,管理员在后台发货,前台会自动更新订单状态,确认收货后,后台则会显示交易完成。代码如下:protectedvoidonListItemClick(ListViewl,Viewv,intposition,longid){TextViewt1=(TextView)v.findViewById(R.id.dingdang_item_textView1);TextViewt2=(TextView)v.findViewById(R.id.dingdang_item_textView4);finalStringstr=t1.getText().toString().substring(4);Stringstr1=t2.getText().toString();Log.d("Jersey",str+"-------"+str1);if(str1.equals("已付款"))Toast.makeText(dingdang.this,"请等待商家发货",Toast.LENGTH_LONG).show();elseif(str1.equals("关闭")||str1.equals("已确认"))Toast.makeText(dingdang.this,"交易已关闭",Toast.LENGTH_LONG).show();else{AlertDialog.Builderdialog02=newAlertDialog.Builder(dingdang.this);dialog02.setTitle("提示");dialog02.setIcon(R.drawable.ic_launcher);dialog02.setMessage("确认收货?");dialog02.setPositiveButton("确定",newDialogInterface.OnClickListener(){publicvoidonClick(DialogInterfacedialoginterface,intwhich){httpclienthc=newhttpclient("l=4&sql=update@dingdang@set@zhuangtai='已确认'@where@id="+str+";");shuju=hc.getshuju();if(shuju.equals("1"))Toast.makeText(dingdang.this,"确认成功!",Toast.LENGTH_LONG).show();upload();}});dialog02.setNegativeButton("取消",newDialogInterface.OnClickListener(){publicvoidonClick(DialogInterfacedialoginterface,intwhich){return;}});dialog02.create().show();}}@Override publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.dingdang);sp=PreferenceManager.getDefaultSharedPreferences(this);upload();}privatevoidupload(){httpclienthc=newhttpclient("l=1&sql=select@*@from@dingdang@where@kehu='"+sp.getString("name",null)+"';");shuju=hc.getshuju();Log.d("Jersey",shuju);str1=shuju.split("&");List>list=newArrayList>();for(intj=0;jmap=newHashMap();map.put("dingdang_item_textView1","订单号:"+str2[0]);map.put("dingdang_item_textView2","金额:"+str2[4]);map.put("dingdang_item_textView3","下单时间:"+str2[1]);map.put("dingdang_item_textView4",str2[6]);//Log.d("Jersey",str2[0]+"--"+str2[1]+"--"+str2[2]+"--");list.add(map);}SimpleAdaptersa=newSimpleAdapter(this,list,R.layout.dingdang_item,newString[]{"dingdang_item_textView1","dingdang_item_textView2","dingdang_item_textView3","dingdang_item_textView4"},newint[]{R.id.dingdang_item_textView1,R.id.dingdang_item_textView2,R.id.dingdang_item_textView3,R.id.dingdang_item_textView4});setListAdapter(sa);}}这段代码主要是将数据库中订单的详细信息显示到界面中,例如订单号,时间,金额,状态等等。在后台管理员处理订单的时候,前台界面的订单状态也会相应的进行改变。 5.2后台web端主要功能实现登入界面,如图5.17所示:图5.17后台登入界面输入账号,密码,实现登入,代码如下:publicStringadminLogin()throwsException{BaseDaobaseDao=newBaseDao();this.adminMap=baseDao.selectOne("user1","userid,username,pwd,phone,power1,sex,yu_e","username='"+this.loginName+"'andpwd='"+this.loginPass+"'andpower1=1");if((this.adminMap!=null)&&(this.adminMap.size()>0)){getHttpSession().setAttribute("admin",this.adminMap);return"adminLogin";}this.info="登录失败!!!";return"adminLoginFalse";}这段代码主要是对用户账户,密码的判定。主界面,如图5.18所示 图5.18后台主界面商品列表,如图5.19所示:图5.19商品信息关键代码publicList