资源描述
本科生毕业论文基于Android的同城交易系统的设计与实现 The Design and Implementation of TradeBetweenCities Based on Android 所在院(系):信息工程学院 学生姓名: 指导老师: 研究起止日期:二XX年十月至二XX年十月 【摘要】自第一款智能手机Simon的诞生,人类的生活中已经离不开智能手机。而在智能手机背后多种强大的操作系统中,Android无疑是发展最快的操作系统,在用户不断提升的生活品质的背景中,基于Android系统的App也越来越多,因此,通过App完成一些个人需求已经成为潮流。基于这样的背景,本次设计就围绕百姓日常需求开发了一款同城交易App,在这款App中用户可以将需求发布出去,也可以搜寻自己想要的东西在线交易,通过这样一个交易平台可以免去日常的四处奔波,简化传统的交易过程,提高了交易效率。在本文中读者可以详细了解到此款App的开发过程。【关键词】 Android; 同城交易; 开发技术; 系统功能【Abstract】When Simon, the first smart phone, came into the world, smart phone is closely bound up with our life. In smart phone, there are a variety of powerful operating systems. Android is undoubtedly one of the fastest growing operating system. The quality of life is getting better, at the same time; the more Apps (application) are developed. So, complete some of the personal needs have become the trend through Apps.With the background, the design is a local transaction APP that based on peoples daily life. People can use the APP to release their demands out and seek for things that they need. It is online trading. The trading platform will bring us convenience and simplify the traditional trading progress, also can enhance the efficiency. In the writings, readers can acquaintance the development process of this App detailed.【Key words】Android; tradebetweencities; development technology; system function目录1 引言11.1 Android简介11.2 开发背景11.3 现状分析21.4 开发意义22 系统开发工具及开发技术42.1 开发工具及平台42.1.1 Eclipse42.1.2 SQLyog42.1.3 SharpDevelop42.2 开发技术42.2.1 MVC框架42.2.2 Activity生命周期52.2.3 Android的四大组件73 系统需求分析83.1系统及需求分析83.1.1 系统功能分析83.1.2 系统性能分析83.2 系统可行性研究93.2.1 技术可行性93.2.2 经济可行性93.2.3 操作可行性93.3 系统流程图104 系统总体分析114.1 系统功能设计114.2 数据库设计124.2.1 数据库概念设计124.2.2 系统实体图124.2.3 数据字典145 系统详细设计165.1 登录模块的设计与实现165.1.1注册功能的实现165.1.2 登录功能的实现195.1.3 密码找回与修改的功能实现195.2 系统列表获取模块的设计与实现195.3 详细信息中打电话发短信功能的设计与实现215.3.1 打电话功能的实现225.3.2 发短信功能的实现225.4 消息发布模块的设计与实现235.5 个人中心模块的设计与实现256 系统测试276.1 软件测试原则和技术276.2 测试用例设计277 总结29参考文献30致谢311 引言时代变迁,人类的生活方式越来越智能,这也促使了智能手机这一领域的迅猛发展,如今,手机已经超越了电脑电视在人们心中的地位。2007年谷歌发布Android操作系统之后使智能手机越来越受欢迎,基于Android平台的App越来越多,它们正在慢慢地融入到人们的生活中。通过这些App,人们可以网上购物,在线导航,在线阅读,好友互动等。1.1 Android简介Android是一种基于Linux系统的移动技术平台。Android系统的特点是自由且开放源代码,所以对于蜂窝技术和移动计算机来说,Android系统给它们提供了Linux操作系统的能力和可移植性,以及标准高级语言和API的可靠性和可移植性,外界评论说Android是“开放源码的革命”,是革命的一部分1。Android最早是由Andy Rubin开发出来,后来被谷歌收购,再由谷歌在2007年与多个制造商共同发布,随着安卓版本的不断更新,它的市场份额也越来越高,世界采用这一系统的移动设备已达到数十亿台。1.2 开发背景很多年前的手机除了打电话发短信几乎没有什么新功能,手机上能有计算器,电子书,音乐播放器这类东西已经很稀奇了。如今,Android系统的已被各行业广泛使用,智能手机的App使用率也达到了空前的高度,人们的生活也逐步电子化,现在学者不用背着各种书面资料,我们有电子书;出门在外不用再担心找不到路,我们有掌上地图;购买物品不用再特地跑去市场,我们可以网上购物这种生活方式给人们的生活带来了极大的方便,人们也越来越以来这种方式。在未来,我们的生活只会越来越智能。根据人们当下对生活的所需我开发了这一款同城交易App。首先,现在外出打工的年轻人很多,他们需要租房子住,然而想找到一个自己心仪的住处并不容易,这款App就为这类人群提供了方便,随时随地看房,无需到处奔波。其次,有很多想要找工作的人找不到工作时会选择中介所为自己推荐工作,然而在找到工作后会想自己索要不低的中介费用,同样在这款App中这类人群可以找到适合自己的岗位,方便快捷。另外,还可以为人们提供二手物品,宠物,家政服务,买房买车等一系列的服务,从人力物力的节省角度来讲还是一款很有价值的交易软件。1.3 现状分析由于人类生活节奏越来越快,为了某一件物品花费大量的时间去寻找、比对是不可能的。在这种背景下,越来越多的在线交易软件出现。为人所知的有淘宝、京东、苏宁易购等交易系统,为了客观、准确的描述当前在线交易系统的研究现状,简要分析一下这些交易系统。不管是淘宝还是京东,这些网站都有其强大的用户群,只要是能访问互联网的机器都能访问到这些系统,区域分布广泛。同时,这些系统中所涉及到的交易物品的种类非常多,就淘宝来讲,它本身就融入了很多个体商家,每个商家经营的物品种类都有所差别。这些系统为人类的生活带来了极大的方便,不用为了自然因素或者地域差别而担心买不到商品,只要能登录到这些交易系统就能满足需求。另外,在支付宝的支持下,这些交易软件都可以以网银转账的方式完成付款,快捷方便,支付完成后再由卖家以快递的方式邮寄到用户手中。整个过程不需要花费太多的时间,满足了当下众多用户的需求。然而这些系统也存在一些弊端,客户只能通过图片的形式了解物品,很少能达到实物鉴定的要求,尤其是一些奢侈品,用户对商品质量就很难辨别,有很多用户会收到假冒伪劣产品,消费者的利益得不到保障,虽然可以退货或者换货,但是这样就违反了节约交易时间,提高交易效率的初衷。通过对当前存在的交易系统的研究与剖析,我们能更加深刻了解当前市场所存在的交易系统发展形势和在一些功能方面存在的问题。因此,在本系统的设计过程中,设计者对同城交易系统需求进行认真的分析和设计,遵循传统在线交易的原则,使用当前主流技术对其进行优化。特别对在功能方面做了改进,使该系统更符合当前用户需求,比如说着重同城交易,用户可以选择在自己所处的城市中选择交易对象,这样就实现了交易双方面对面验货的需求。1.4 开发意义社会的发展速度也带动着人类的生活节奏,从对人类的生活影响来说,这款软件有以下几个方面值得深入研究:(1)通过在线交易的方式可以节省大量时间和金钱,这是最大的优势。时间方面主要是相对于获取需求的人群,他们可以节约四处寻找自己所需的时间,不用再像无头苍蝇,这款软件将需求进行了分类,简洁明了,可以供人群快速找到自己的目标。金钱方面主要相对于提供需求的人群,他们可以将自己需要出售或出借的物品直接发布到网络上,免去了找中介等其他方式所需要支付的服务费。(2)这个App安装使用也很简单,只要是一款智能手机,符合版本等级,下载后就能安装,安装后连入互联网就可以登录使用。(3)工作效率高,所有数据都通过数据库获取,简洁明了。(4)安全性高,所有用户都是通过手机号注册,登录时需要验证密码,密码丢失的情况下可以通过手机号找回密码,然后修改密码。(5)可用范围广,App中提供的交易种类较多,适合各类人群。相对于传统的交易模式来看,这款App是存在优势的。但为了更好的让此系统服务大众还需要更多了解人们生活需求和市场需求。2 系统开发工具及开发技术软件一般的产生是建立在某种程序设计语言的基础上,这些程序语言一般是借助软件开发工具进行编写的。本章主要介绍这款同城交易软件所涉及到的开发工具以及相关技术。2.1 开发工具及平台本系统采用的开发工具为Eclipse和数据库SQLyog以及编辑器SharpDevelop。通过在SharpDevelop中编写数据库语句,增删改查等操作来实现交易系统的各个功能。2.1.1 EclipseEclipse是Java的集成开发环境。它包括了插件开发环境PDE,这个组件的目的是扩展Eclipse的开发人员,因为开发人员可以用它来构建与Eclipse环境无缝集成的工具。每个开发者都有同等的发挥场所给Eclipse提供插件以及给用户提供统一的集成环境。当然Eclipse最突出的优点是它支持当前几乎所有的主流平台,包括Windows,Linux,Solaris,HP-UX和AIX,这大大减低了开发跨平台的软件的难度2。2.1.2 SQLyogSQLyog由Webyog出品,这是一款使用方便、快速简洁的图形化管理SQL数据库的产品,通过它可以更方便的管理数据库。相对于其他数据库SQLyog有它特点:编程方式是基于C+和MySQLAPI;使数据库以及数据库同步更快捷;可以快速备份和还原数据;支持的数据格式较多,比如XML、CSV、HTML等;可以批量运行SQL脚本,节省时间。2.1.3 SharpDevelopSharpDevelop 给多种程序语言开发提供了平台,包括C#、VB.NET和java,并且还支持多种语言界面。这个开发工具的界面风格与Office XP和VS.NET很相似,支持书写的代码类型有C#,XML,HTML等,还可以对这些语言提供彩色语法显示,同时还能把彩色的代码以HTML格式文件输出。SharpDevelop向外开放的所有源代码,这一点对学习C#及规范软件开发很有帮助。2.2 开发技术2.2.1 MVC框架MVC全名Model View Controller,它把一个应用输入,处理,输出的过程分离成三种方式:Model、View、Controller,也就是说,将一个应用分为三个层面:模型层,视图层,控制层 。如图2-1 MVC框架:图2-1 MVC框架模型用来表示应用程序核心,是应用状态及业务功能的封装,通常是用于处理程序中数据逻辑的部分,比如在数据库中存取数据;视图则是负责应用程序中处理数据显示的部分,一般来说是根据模型数据创建的;控制器通常处理用户交互这一部分,用来从视图将数据提取,控制用户输入,然后把数据发送给模型。View与Model有直接联系,View可以直接调用Model查询其状态信息,当Model的状态发生改变时,它就会直接通知View3。2.2.2 Activity生命周期Activity生命周期流程图如图2-2 生命周期:图2-2 生命周期(1)启动Activity之后,系统会先调用onCreate()创建进程,然后调用onStart()开始执行进程,最后调用onResume()获得用户焦点,Activity开始运行。(2)如果当前Activity被另一个透明或者dialog样式的进程覆盖时,系统会调用onPause方法,暂停当前Activity的执行。(3)当前Activity恢复到前台之后,系统会调用onResume方法,再次进入运行状态。(4)如果当前Activity跳转到另外一个Activity界面之后,当前Activity并不会销毁,在系统调用onPause方法后会调用onStop方法,使进程进入停滞状态。(5)当用户退出当前Activity回到先前的Activity时,系统会先调用onRestart方法重启进程,然后调用onStart方法执行进程,最后调用onResume方法再次运行。(6)如果当前Activity正处于上方第二种和第四种状态,但是系统内存不足,此时当前的Activity将会被kill,当用户再次回到当前Activity的时候将再次调用onCreate方法,onStart方法以及onResume方法,重新进入运行状态。(7)用户结束当前进程时,系统先调用onPause()方法,再调用onStop()方法停止进程,最后调用onDestory()方法销毁进程,关闭当前Activity。2.2.3 Android的四大组件Android四大组件有Activity,Service,Content Provider,Broadcast Receiver。(1)Activity:应用与用户交互是通过Activity实现的,Activity为系统提供可视化界面,在新建了xml布局之后需在java文件中通过setContentView()方法来绑定布局。Android应用中可以包含多个Activity,组成Activity栈,当前运行的Activity位于栈顶。最重要的是,所有Activity都必须在Manifest中注册才能运行。(2)Service:Service是一个单独的组件,在主线程中运行。Service不需要图形界面,因为它一般在后台运行,不需要与用户进行交互。它有自己独立的生命周期:创建服务,开始服务,销毁服务。Service调用startService()启动,调用stopService()结束服务。可以为其他组件提供后台服务或者监控其他组件的运行状态,,比如说播放歌曲的时候,虽然播放歌曲的界面被关闭了,但是歌曲还是在后台播放;被关闭界面的App依然可以接收到推送消息。所有Service都必须在Manifest中进行声明。(3)Content Provider:Android中的Content Provider是一个传输数据的中间者,这个组件可以用来保存和获取数据,并公开给其他应用程序,因为Android没有提供存储区域,所以这是不同应用程序间共享数据的唯一方式。它可以将一个应用程序的指定数据集传送给其他应用程序,同时其他应用也可以通过ContentResolver对象从内容提供者中提取或存入数据。(4)Broadcast Receiver:书面上来讲就是广播接收者。可以用来过滤外部事件,只响应需要的外部事件或者数据。这个事件是没有界面,可以通过启动activity或者service来响应接收到的信息,也可以通过NotificationManager方法以灯光闪烁、震动、声音等形式通知用户有信息,比如说我们的手机收到短信等方面的处理。广播接收者需要注册,注册有两种方式:动态注册,当注册广播的activity被关闭后,广播就会停止;静态注册,只要设备是处于被开启的状态,广播就不会被关闭。3 系统需求分析本章节主要从系统的需求分析方面展开陈述。3.1系统及需求分析3.1.1 系统功能分析为了是这款App能更好的贴近人们的生活,提高交易效率,保证系统质量。通过对传统交易步骤的分析,以及对在线交易各流程的优化,认为在线交易系统应具备以下功能。(1)用户注册:用户可以通过填写用户昵称,真实姓名,注册手机号码等信息进行系统注册。(2)用户登录:用户输入用户名和密码之后,通过数据库验证后登录系统。(3)列表获取:这是系统的核心所在,系统会根据种类自动调用数据库中的数据,将数据以列表的形式显示在界面上,这样用户就可以根据自己的需要看到自己可以选择的物品。(4)获取物品详情:但是将物品以列表的形式展现出来并不能让用户对物品了解详细,点开列表之后需要将物品的详细信息展现出来,让用户更好了解详情。(5)打电话,发短信:当物品的详细信息被获取之后,如果满足用户要求,用户可以直接点击打电话或者发短信的按钮联系卖家,快捷方便。(6)发布信息:这个功能模块在整个系统中也非常重要,用户可以根据类型选择要发布的种类,在发布界面中发布物品的详情,图片和价钱。(7)用户个人信息查看及头像修改:在这个系统中由于不能在数据库直接添加头像,所以在用户登录成功之后可以在前台修改,修改成功之后数据库中会有显示。(8)用户个人动态获取:在这个系统中,用户可以看到一些跟自己有关的信息,比如留言列表,个人发布的消息,个人收藏的消息,个人订阅。(9)账户密码修改和找回:在登录的过程中,用户难免会出现忘记密码的情况,在这种情况下可以通过当时注册时的手机号找回密码,找回密码后也可以修改密码。(10)APP详情获取:在个人中心,用户可以看到这款APP的版本信息,用户也可以给这款系统提意见。3.1.2 系统性能分析系统功能分析是软件系统开发的基础要求,而系统性能分析可以判定产品的质量。现实中,人们一般会对系统功能比较关注,比较关心系统可以实现什么需求,很少关注性能分析。但是性能分析是系统功能的拓展,它包含了系统响应速率,处理请求的能力,数据安全等方面,通过对在线交易系统的性能分析和实际中会遇到的问题,系统应该满足以下方面的性能要求:(1)并行处理用户请求:这个系统中用户通过账户密码登录对服务器进行访问。因此,系统需要响应多个用户的请求,支持多人访问。(2)响应速度:对用户的请求做出响应的速度是衡量系统行呢呢过好坏的标准之一。在线交易系统对响应速度的要求很高,最好不要超过五秒。(3)数据安全:因为这款系统涉及到个人的交易情况,个人中心有一些用户信息,要求系统有较好的保密功能,安全性要求极高。3.2 系统可行性研究可行性研究的展开主要有两个目的:研究项目“做还是不做”以及制定项目的“初步方案”,它主要是对问题的定义进行分析,研究过程中需要初步确立项目的目标和规模,问题定义之后要导出系统的逻辑模型,然后才能确定可选的系统方案。3.2.1 技术可行性技术可行性是可行性分析中最关键并且也是最难决断的问题4。用户通过WebService的数据传递实现登录,并获取动态列表以及发布消息,这些是这个系统的关键所在。用户登录之后,系统会从数据库调用相应的数据,通过前台界面展现在用户的面前,从而实现用户选择交易物品的功能。该系统工作核心就是WebService负责后台,将数据库中的数据传递给前台;前台就是提供功能,显示界面;数据库用来存储数据。这些操作就是都过SharpDevelop,Eclipse和数据库SQLyog完成,在此方面这些技术都是成熟而且可行的。3.2.2 经济可行性从技术可行性来看,这款App的开发周期在一个月左右。开发成本并不高,一般计算机的硬件和软件都是能承受的。通俗的来讲,只要具备一台高性能的计算机和畅通的网络就可以实现,在App的安装,维护成本也不会很高。3.2.3 操作可行性如今,手机已经是一种很普遍的通讯设施,只要是一款智能手机就可以安装这款App,只要是会使用手机的人就能使用这款App,操作很方便。3.3 系统流程图如图3-1 系统流程图图3-1 系统流程图用户开启App后,如果没有账号就注册账号,如果有账号可以登陆。登录过程中如果忘记密码,可以通过找回密码将密码找回,如果不能找回密码可以重新注册账号。用户也可以在登录界面修改密码,如果修改密码成功就可以登录,如果修改密码不成功就可以找回密码。登录成功之后就可以在系统中进行一系列的操作。操作成功之后可以退出登录。4 系统总体分析4.1 系统功能设计为了更好地提高系统的性能,必须先将系统功能模块进行分类,比如说这款App的主要功能模块分为三种:登录模块,列表获取模块,消息发布模块,个人中心模块。每个模块下有它详细的功能,如图4-1 系统功能图:同城交易系统消息发布模块登录模块列表获取模块意见反馈查看系统版本信息用户头像修改个人信息查看用户个人发布列表用户登录用户注册密码找回和修改物品信息列表用户留言列表用户收藏列表图4-1 系统功能图登录模块:(1)用户注册:用户安装App后就会显示登录界面,当没有账号密码的时候用户就需要进行注册,根据界面输入要求完成注册信息,用户需记住用户名和密码方便登录。(2)用户登录:用户有账号之后就可以输入账号和密码进行登录,登录之后就可以看到一些物品的信息发布。(3)密码找回和修改:在这个模块中如果忘记密码就可以通过注册时的手机号找回密码,在指导原密码的前提下可以修改密码。列表获取模块:(1)物品信息列表:在登陆成功进入首页之后可以看到有八个类型的交易。用户点进去之后可以选择自己想要的类型,点击类型之后就会跳出响应的物品列表。(2)用户留言列表:在物品详细信息中,用户可以给对卖家留言,在留言列表中用户可以看到自己给他人的留言,也可以看到他人给自己的留言。(3)用户收藏列表:同样,对于自己中意的物品可以收藏,以免日后再次查找。(4)用户个人发布列表:在个人中心,可以点击我的发布查看自己所发布的信息,并对这些信息进行删除操作。消息发布模块:消息发布模块一共有12种类型的消息可以发布,用户取所需进行消息发布。个人中心模块:(1)个人信息查看:用户可以查看到自己的信息。(2)用户头像修改:登录成功之后,用户可以修改自己的头像。(3)查看系统版本信息:在更多中,可以获取App版本信息。(4)反馈意见:用户可以对App提出自己的见解。4.2 数据库设计4.2.1 数据库概念设计数据库库设计也是系统开发的核心工作。在这个系统中,数据库中主要的实体有4种。用户实体:(用户ID,账户名称,密码,姓名,年龄,性别,手机号,头像)。消息实体:(消息ID,用户ID,发表的时间,创建时长,消息内容,图片,价格,类型)。消息收藏实体:(消息收藏事件的ID,用户ID,被收藏的信息ID,收藏时间)。保洁申请的实体:(申请信息的ID,用户ID,保洁时间,保洁地址,用户手机号)。4.2.2 系统实体图在线交易系统主要由用户,消息,消息收藏,保洁申请等实体组成。下面介绍用户,消息和消息收藏,保洁申请的主要属性,和介绍个实体之间的联系。需求者实体图如图4-2用户实体图4-2用户实体消息实体图如图4-3 消息实体图4-3消息实体消息收藏实体图如图4-4 消息收藏实体图4-4 消息收藏实体保洁申请实体图如图4-5保洁申请实体图4-5 保洁申请实体各实体之间的联系如图4-6实体 图4-6 实体联系4.2.3 数据字典数据字典中列出的表格只是取四个典型的例子,并未完全列举。表4-1 用户信息表 (t_people)字段名称数据类型字符长度NULL字段描述IDINT100NO主键loginNameVARCHAR100NO用户名passwordVARCHAR100NO密码NameVARCHAR255YES姓名AgeINT100YES年龄SexVARCHAR255YES性别PhoneVARCHAR255YES电话headUrlVARCHAR255YES头像表4-2 家政信息表 (t_jiazhen)字段名称数据类型字符长度NULL字段描述IDINT100NO主键useIdINT100NO用户主键createTimeDATETIME-NO创建时间createTimelongDATETIME-YES编辑时间ContentVARCHAR100YES内容imageURlVARCHAR255YES图片MoneyVARCHAR255NO金额TypeVARCHAR255NO类型表4-3 信息收藏表 (t_shoucang)字段名称数据类型字符长度NULL字段描述IDINT100NO主键selfIdINT100NO用户主键careIdINT100NO关注人编码createTimeDATETIME-NO创建时间5 系统详细设计系统详细设计阶段是确定怎样具体展现所要求的系统,通过各种设计工具准确地描述目标系统,从而把这种描述直接转述成用程序语言书写的程序的阶段。在线交易系统根据各个模块功能的划分更准确的实现了所需要的功能,下面详细介绍各个模块实现过程。5.1 登录模块的设计与实现5.1.1注册功能的实现主要实现用户注册的功能,用户输入相关信息之后进行注册,注册成功之后才可以登录,完成消息发布,查看,删除等操作。如图5-1 用户注册。(1)在注册过程中用户输入账户之后可以点击姓名查看此账户是否被注册过,如果被注册过就会有吐司弹出,显示该账户已被注册过。主要代码如下:这边先简要介绍一下Handle的使用:由于Android平台中,activity新启动的线程是不可以访问这个activity的组件的,否则新启动的线程会无法动态改变组建的属性值,所以这个时候就需要借助handle来传递消息,实现子线程和主线程的通信。Handle有两个作用:(1)向新启动的线程中发送消息。(2)在主线程中获取、处理消息。为了让主线程能及时处理新进程发送的消息,handle类中处理消息的方法就会被自动回调。这段代码就是Handle执行阶段,向用户返回注册名称是否重复的信息。首先是在activity中创建一个进程,从dotNetManager获取isUserExist()方法,并将界面输入的注册名称传给接口。这段代码是向WebService的isUserExist方法传一个loginname的参数。WebService通过SQL语句匹配前台传回来的注册名与数据库中的注册名,给出一个isExist结果。DataSet ds = dbMysql.seleDB(select * from t_people where loginName = +loginName+);if(ds.Tables0.Rows.Count0)allMap.Add(result,0);allMap.Add(isExist,1);returnJsonHelper.ToJson(allMap);elseallMap.Add(result,0);allMap.Add(isExist,0);returnJsonHelper.ToJson(allMap); 这段代码是在WebService中实现,通过获取dotNetManager中传来的参数loginname,与数据库中的loginname相对比,0表示用户不存在,1表示用户存在。在activity中会获取需要解析的JSONObject,0表示成功,1表示失败,如果成功将获取到由WebService传回来的isExist的结果,并将结果传给Handle,最后由Toast告诉用户是否已经被注册过。(2)通过验证的账户就会被同步到数据库中的用户信息表中,用户通过此账户和密码就可以进行后续的一些操作。 图5-1 用户注册 图5-2 找回密码5.1.2 登录功能的实现该功能主要实现用户登录,系统会根据登录名和密码,检查与数据库中的登录名密码是否匹配。登录成功之后就会跳转系统首页。5.1.3 密码找回与修改的功能实现当用户登录时发现忘记密码,可以通过点击找回密码进入找回密码界面,通过输入注册时的手机号码找回密码,通过SQL语句找到此ID的用户信息,然后比较输入的手机号是否与注册时的手机号相同,若相同则会显示注册密码。如图5-2 找回密码。找回密码之后可以修改密码,修改密码的时候需要输入先前的密码和修改后的密码,系统会比较数据库中原有的密码,如果匹配,会将新的密码同步到数据库。5.2 系统列表获取模块的设计与实现这是本次设计的核心模块,用户登陆成功之后就可以根据自己的需求选择想要浏览的物品的列表。如图5-3 房产列表, 5-4 我的发布列表。 图5-3 房产列表 5-4 我的发布列表以获取房产列表为例,详细解析一下获取的过程,主要代码如下:首先从dotNetManager获取getfangchanList()方法,同时传入参数,获得需要解析的JSONObject,如果返回的result为0,表示解析成功,获取webservice中的fileList,fileList代表的是数据库中t_fangchan表中的数据。定义一个weiboList实体对象,获取到数据之后就开始遍历数据,将ja中的第i个JSONObject赋给weiboJO,gso自动解析(String-对象),将fileList中的每一行对应添加到weiboList中,用msg.obj将weiboList传到handle中。Handle获取到数据后,绑定适配器,按照adapter中规定的方法,将每一条数据放到相应的控件中。如果解析JSONObject出错,也会将携带的错误信息传给Handle,以Toast的方式将错误原因告知用户。5.3 详细信息中打电话发短信功能的设计与实现为了更好地方便用户交易,我们实现了用手机号注册的功能,这一功能的实现就是方便交易时的双方联系,当买家中意物品后可以直接在物品详情的界面中联系卖家,在卖家手机出现停机或关机的情况下,用户还可以选择留言的方式联系卖家,这解决了传统交易一些不便之处。获取到物品详细信息后,如图图5-5物品详情1,图5-6物品详情2,会显示出卖家的姓名和手机号,手机号旁边的打电话发短信以及留言功能都已经实现。 图5-5物品详情1 图5-6物品详情2首先,号码的获取是通过Intent将所需要获取到详细信息的这条消息的发布者的ID传递到显示详细信息的这个界面,核心代码:intent.putExtra(OtherId, tongChenItem.getUserId();上一个界面的值传递过来之后需要在详细信息的界面接收值才可以使用,核心代码:otherid=getIntent().getStringExtra(OtherId);在获取到发布者ID之后依旧可以使用访问网络接口,通过查找语句找到此ID号的用户的详细信息,当然,包括该用户的姓名和联系方式,解析之后的数据会绑定到相应的控件,再显示出来。5.3.1 打电话功能的实现打电话的功能是调用系统的打电话功能,需要先给系统一个权限,在MainFest中获取,有了权限之后直接回跳转系统打电话界面,代码如下:Intent intent=new Intent(Intent.ACTION_CALL,Uri.parse(tel:+phone);5.3.2 发短信功能的实现发短信是跳转到自定义的发短信界面进行发送如图5-7 短信发送,代码如下:List divideContents=smsManager.divideMessage(msg);for (String text:divideContents)smsManager.sendTextMessage(num, null, text, null, null);图5-7 短信发送5.4 消息发布模块的设计与实现除了列表的获取,消息发布模块也非常重要,在这个模块中一共有12中发布类型,用户可以选择自己需要的类型。在消息发布中,用户需要选择物品类型,输入物品描述,上传物品图片,最后需写上该物品的交易价格,如图5-8消息发布1,图5-9 消息发布2。 图5-8消息发布1 图5-9 消息发布2本节中,就家政消息发布为例进行分析,类型的选择框是采用了Spinner控件,在activity文件中绑定arrylist,将种类显示出来,选取好种类之后会以string类型产生一个常量leixing,这个类型就是数据库中的type。输入的标题也会被读取转换成string字符串,费用也是如此。这边的难点在于如何将图片上传到数据库,点击上传图片的按钮会弹出一个Dialog选择框,选择框中给出了两种选取图片的方式,本地图片和拍照,就这两种方式来进行详细分析:(1)选取本地图片:如果在对话框中选择相册,系统会自动调转到手机系统的相册,代码:Intent intent = new Intent(Intent.ACTION_PICK, null)。在取到系统自带图片的uri之后,调用startPhotoZoom方法,设置自定义剪切图片,图片剪切成功之后会返回PhotoResult,这个方法会将图片与控件绑定显示到界面上,并以当前时间+“.png”的格式自动保存到本地,Dialog对话框会消失。然后再调用dotNetManager接口中的writejiazheng方法通过webservice将图片上传到数据库。(2)拍照:如果在对话框中选择拍照,系统会自动调用系统摄像头,代码:Intent intent2 = new Intent(MediaStore.ACTION_IMAGE_CAPTURE)。拍完照图片会存入手机系统SD卡中,这时交易系统会先通过手机sd卡的根路径savePicPath :/mnt/sdcard/download/pic/找到当时以当前时间+“.png”格式保存的图片,然后调用startPhotoZoom方法进行剪切,最后上传。在以上内容都实现之后由activity调用接口中相应的方法将数据传出,通过webservice中的SQL语句将消息添加到数据库中,最后在列表中显示出来。5.5 个人中心模块的设计与实现(1)用户可以获取到个人信息:如图5-10 个人消息。用户登录之后直接通过setText设置对应的textview中的值,setText方法中的值是从UserItem中获取,用户的基本信息都被存放在UserItem中,比如:public int getId() return id;public void setId(int id) this.id = id;而在activity中就可以通过setText(userItem.getId ()直接获取Id值,然后绑定到控件中。头像是通过异步加载的方式从网络接口获取到相应名称的图片,主要代码如下:(2)用户可以修改个人头像:修改头像的原理和5.4中提到的上传图片是一个原理,通过选择Dialog中的提示,相册还是拍照实现图片的上传。(3)用户反馈:每一款App都有它的缺陷,不能只通过后期维护来发现这些问题,在这款App中用户可以根据自己的见解提意见,后台管理员在数据库中可以看到反馈的内容,如图5-11 意见反馈数据库。 图5-10 个人消息 图5-12 添加订阅图5-11 意见反馈数据库(4)用户可以获取到这款App的版本信息:通过调用接口中checkVersionUpdate()及getAboutUs()两种方法可以获取到想要看到的信息。(5)个人模块中还有一项添加订阅,主要是针对房产一类的消息订阅,将自己想要看到的信息种类,如图5-12 添加订阅,通过Spinner控件将可供选择的种类展现出来,用户根据喜好添加订阅。添加订阅完成后,可以在个人中心获取我的订阅列表。6 系统测试6.1 软件测试原则和技术软件测试是为了发现程序中的错误而执行程序的过程,好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案,成功的测试方案是发现了至今为止尚未发现的错误的测试6。软件测试需要遵循的原则:所有测试都要以用户需求为主;应在测试之前就制定好测试计划;把Pareto原理应用到软件中;从小规模测试开始执行再执行大规模测试;不可能穷举测试;为了保证测试结果,应该由第三方测试独立完成。软件测试主要有两种技术,黑盒测试技术和白盒测试技术。黑盒测试技术就是将整个系统看成一个黑盒子,要求测试者不使用与被测系统有关的技术进行检测,适用于对系统的功能进行检测;白盒测试技术在测试的时候可以知道北侧程序的内部结构和具体程序,可以测试代码内容提高代码质量。6.2 测试用例设计本系统主要采用黑盒测试。主要测试功能点如表6-1:表6-1 同城交易系统测试用例测试内容测试步骤预期结果实际结果测试是否登录成功输入正确的账号和密码登录成功与预期结果相符测试是否可以获取物品列表在首页中点击可以获取列表的按钮获取成功与预期结果相符测试是否可以发布交易信息在发布消息界面中,对12种类型逐步测试消息发送成功与预期结果相符测试是否可以获取个人信息在个人中心界面点击获取个人消息的按钮获取成功与预期结果相符测试是否可以收藏消息在详情界面点击收藏,并在个人中心点击我的收藏查看收藏成功与预期结果相符测试是否可以删除个人发布的消息在我的发布中点击删除按钮,并查看数据库删除成功与预期结果相符测试是否可以修改头像在个人中心点击头像,进行修改修改头像成功与预期结果相符测试是否可以反馈意见在更多中,发布反馈意见,并到数据库中查看意见反馈发布成功与预期结果相符测试是否可以打电话发短信在详细信息界面,点击打电话发短信的按钮,并确认是否接到来电,收到短信可以接到电话,收到短信与预期结果相符7 总结为了给用户提供更多的交易类型,为用户提供更快的交易速度,这是一个完善的同城交易App必须要做到的事情,用户可以通过登录同城交易软件选择自己想要而身边有很难找到的东西,让自己的生活更有效率。在同城交易系统中的需求提供者可以在线发布信息,需求获得者在线浏览这些信息。这样不管是哪一方都可以更快让自己的需求得到满足,不用花大把的时间精力花在去寻找中间商,或者等待买家出现。这从根本上减轻了人力物力,降低了成本,所以说这款App具有相当的经济性。为了适应当前社会在线交易的发展,作者对这一系统进行了一次比较全面的研究和分析。在本论文中详细介绍了在线交易系统的设计与实现,作者也基本实现了需求分析中提到的功能,用户通过注册再登录系统,获取不同类别的物品的类别,点开列表中的信息可以查看物品的详细信息,如果满意就可以直接拨打卖家的电话与之联系。同时用户本人可以对自己的各类信息进行删除操作。但是,系统完成之后再参照市场实际需求,作者发现系统中也有不少缺陷。比如:(1)该系统未能实现在线支付功能,对于一些小商品而言,可以在交易双方都满意的条件下直接完成支付,卖家可以以快递的形式将物品寄予买家,从而就没有必要再面对面交易。(2)由于技术限制,该系统并没有实现定位功能,希望在以后的研究中,该项功能可以实现,不需要每次都手动选择。(3)浏览足迹还不能保存到后台,我的足迹功能还不能实现。(4)用户添加订阅之后不能自动给用户推送消息。在这些缺陷的激励下,作者会一直学习研究下去,在完善这些缺陷的基础上做出更多功能。参考文献1谢晓芳.Android应用开发攻略M.北京:机械工业出版社,2013.2林建素,孟康.Eclipse开发学习笔记M.北京:电子工业出版社,2008.3蒋金楠.ASP.NET MVC 4框架揭秘M.北京:电子工业出版社,2013.4贾铁军,甘泉.软件工程与实践M.北京:清华大学出版社,2012.5李刚.疯狂Android讲义M.北京:电子工业出版社,2011.6张海藩,牟永敏.软件工程导论M.北京:清华大学出版社,2013.7陈刚Eclipse从入门到精通M.北京:清华大学出版社. 2008.8王珊,萨师煊.数据库系统概论(第四版)M.北京:高等教育出版社.2008.9靳岩,姚尚朗. Google Android开发入门与实践M.北京:人民邮电出版社. 2009.10赵亮,张维. 基于Android技术的界面设计与研究D .徐州:徐州建筑职业技术学院,2001.致谢毕业论文的完成也就意义这我将结束大学四年的生活,心中难免有些不舍。回顾四年宝贵的时光,在南京晓庄学院优良的学习风气、严谨的科研氛围中我逐步成长;在那么多学识渊博的老师的教导下我受益匪浅,从一个计算机小白到现在可以独立完成一个系统的编写,有说不出的感激,每一条代码都是老师们手把手教出来的。值此论文完成之际,我向所有关心、帮助我的人们表示最真诚的感谢。同时,我很感谢学校这次到江苏微软实训的安排,在公司我学会了安卓开发,不仅从理论还是实践能力上我都得到了很大的提升。很感谢苏微老师耐心的解析,从布局开始,到后台,老师对我的每个错误都进行的分析。同时,很感谢班级同学对我的帮助,他们没有觉得不耐烦,大家彼此之间还会共享一些开发技巧,所以说,这次毕业设计的完成也少不了他们的帮忙。不管在哪里,我都会陶行知老先生的一句话:捧着一颗心来,不带半根草去!31
展开阅读全文