1、 本科生毕业论文基于 Android 的同城交易系统的设计与实现The Design and Implementation of Trade Between Cities Based on Android 所在院(系):信息工程学院学生姓名: 指导老师: 研究起止日期:二XX 年十月至二XX 年十月【摘要】自第一款智能手机 Simon 的诞生,人类的生活中已经离不开智能手机。而在智能手机背后多种强大的操作系统中,Android 无疑是发展最快的操作系统,在用户不断提升的生活品质的背景中,基于 Android 系统的 App 也越来越多,因此,通过 App 完成一些个人需求已经成为潮流。基于这样
2、的背景,本次设计就围绕百姓日常需求开发了一款同城交易 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
3、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 bac
4、kground, 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 enhanc
5、e the efficiency. In the writings, readers can acquaintance the development process of this App detailed.【Key words】Android; trade between cities; development technology; system function目录1 引言 11.1 Android 简介 .11.2 开发背景 .11.3 现状分析 .21.4 开发意义 .22 系统开发工具及开发技术 42.1 开发工具及平台 .42.1.1 Eclipse.42.1.2 SQLyog
6、42.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 系统详细设计 .16
7、5.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致谢 .3111 引言时代变迁,人类的生活方式越来越智能,这也促使了智能手机这一领域的迅猛发展,如今,
8、手机已经超越了电脑电视在人们心中的地位。2007 年谷歌发布 Android 操作系统之后使智能手机越来越受欢迎,基于 Android 平台的 App 越来越多,它们正在慢慢地融入到人们的生活中。通过这些 App,人们可以网上购物,在线导航,在线阅读,好友互动等。1.1 Android 简介Android 是一种基于 Linux 系统的移动技术平台。Android 系统的特点是自由且开放源代码,所以对于蜂窝技术和移动计算机来说,Android 系统给它们提供了 Linux 操作系统的能力和可移植性,以及标准高级语言和 API 的可靠性和可移植性,外界评论说 Android是“开放源码的革命”
9、,是革命的一部分 1。Android 最早是由 Andy Rubin 开发出来,后来被谷歌收购,再由谷歌在 2007 年与多个制造商共同发布,随着安卓版本的不断更新,它的市场份额也越来越高,世界采用这一系统的移动设备已达到数十亿台。1.2 开发背景很多年前的手机除了打电话发短信几乎没有什么新功能,手机上能有计算器,电子书,音乐播放器这类东西已经很稀奇了。如今,Android 系统的已被各行业广泛使用,智能手机的 App 使用率也达到了空前的高度,人们的生活也逐步电子化,现在学者不用背着各种书面资料,我们有电子书;出门在外不用再担心找不到路,我们有掌上地图;购买物品不用再特地跑去市场,我们可以网
10、上购物这种生活方式给人们的生活带来了极大的方便,人们也越来越以来这种方式。在未来,我们的生活只会越来越智能。根据人们当下对生活的所需我开发了这一款同城交易 App。首先,现在外出打工的年轻人很多,他们需要租房子住,然而想找到一个自己心仪的住处并不容易,这款 App 就为这类人群提供了方便,随时随地看房,无需到处奔波。其次,有很多想要找工作的人找不到工作时会选择中介所为自己推荐工作,然而在找到工作后会想自己索要不低的中介费用,同样在这款 App 中这类人群可以找到适合自己的岗位,方便快捷。另外,还可以为人们提供二手物品,宠物,家政服务,买房买车等一系列的服务,从人力物力的节省角度来讲还是一款很有
11、价值的交易软件。21.3 现状分析由于人类生活节奏越来越快,为了某一件物品花费大量的时间去寻找、比对是不可能的。在这种背景下,越来越多的在线交易软件出现。为人所知的有淘宝、京东、苏宁易购等交易系统,为了客观、准确的描述当前在线交易系统的研究现状,简要分析一下这些交易系统。不管是淘宝还是京东,这些网站都有其强大的用户群,只要是能访问互联网的机器都能访问到这些系统,区域分布广泛。同时,这些系统中所涉及到的交易物品的种类非常多,就淘宝来讲,它本身就融入了很多个体商家,每个商家经营的物品种类都有所差别。这些系统为人类的生活带来了极大的方便,不用为了自然因素或者地域差别而担心买不到商品,只要能登录到这些
12、交易系统就能满足需求。另外,在支付宝的支持下,这些交易软件都可以以网银转账的方式完成付款,快捷方便,支付完成后再由卖家以快递的方式邮寄到用户手中。整个过程不需要花费太多的时间,满足了当下众多用户的需求。然而这些系统也存在一些弊端,客户只能通过图片的形式了解物品,很少能达到实物鉴定的要求,尤其是一些奢侈品,用户对商品质量就很难辨别,有很多用户会收到假冒伪劣产品,消费者的利益得不到保障,虽然可以退货或者换货,但是这样就违反了节约交易时间,提高交易效率的初衷。通过对当前存在的交易系统的研究与剖析,我们能更加深刻了解当前市场所存在的交易系统发展形势和在一些功能方面存在的问题。因此,在本系统的设计过程中
13、,设计者对同城交易系统需求进行认真的分析和设计,遵循传统在线交易的原则,使用当前主流技术对其进行优化。特别对在功能方面做了改进,使该系统更符合当前用户需求,比如说着重同城交易,用户可以选择在自己所处的城市中选择交易对象,这样就实现了交易双方面对面验货的需求。1.4 开发意义社会的发展速度也带动着人类的生活节奏,从对人类的生活影响来说,这款软件有以下几个方面值得深入研究:(1)通过在线交易的方式可以节省大量时间和金钱,这是最大的优势。时间方面主要是相对于获取需求的人群,他们可以节约四处寻找自己所需的时间,不用再像无头苍蝇,这款软件将需求进行了分类,简洁明了,可以供人群快速找到自己的目标。金钱方面
14、主要相对于提供需求的人群,他们可以将自己需要出售或出借的物品直接发布到网络上,免去3了找中介等其他方式所需要支付的服务费。(2)这个 App 安装使用也很简单,只要是一款智能手机,符合版本等级,下载后就能安装,安装后连入互联网就可以登录使用。(3)工作效率高,所有数据都通过数据库获取,简洁明了。(4)安全性高,所有用户都是通过手机号注册,登录时需要验证密码,密码丢失的情况下可以通过手机号找回密码,然后修改密码。(5)可用范围广,App 中提供的交易种类较多,适合各类人群。相对于传统的交易模式来看,这款 App 是存在优势的。但为了更好的让此系统服务大众还需要更多了解人们生活需求和市场需求。42
15、 系统开发工具及开发技术软件一般的产生是建立在某种程序设计语言的基础上,这些程序语言一般是借助软件开发工具进行编写的。本章主要介绍这款同城交易软件所涉及到的开发工具以及相关技术。2.1 开发工具及平台本系统采用的开发工具为 Eclipse 和数据库 SQLyog 以及编辑器 SharpDevelop。通过在 SharpDevelop 中编写数据库语句,增删改查等操作来实现交易系统的各个功能。2.1.1 EclipseEclipse 是 Java 的集成开发环境。它包括了插件开发环境 PDE,这个组件的目的是扩展 Eclipse 的开发人员,因为开发人员可以用它来构建与 Eclipse 环境无缝
16、集成的工具。每个开发者都有同等的发挥场所给 Eclipse 提供插件以及给用户提供统一的集成环境。当然 Eclipse 最突出的优点是它支持当前几乎所有的主流平台,包括Windows,Linux,Solaris,HP-UX 和 AIX,这大大减低了开发跨平台的软件的难度 2。2.1.2 SQLyogSQLyog 由 Webyog 出品,这是一款使用方便、快速简洁的图形化管理 SQL 数据库的产品,通过它可以更方便的管理数据库。相对于其他数据库 SQLyog 有它特点:编程方式是基于 C+和 MySQLAPI;使数据库以及数据库同步更快捷;可以快速备份和还原数据;支持的数据格式较多,比如 XML
17、、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 框架5MVC 全名 Model View Contr
18、oller,它把一个应用输入,处理,输出的过程分离成三种方式:Model、View、Controller,也就是说,将一个应用分为三个层面:模型层,视图层,控制层 。如图 2-1 MVC 框架:图 2-1 MVC 框架模型用来表示应用程序核心,是应用状态及业务功能的封装,通常是用于处理程序中数据逻辑的部分,比如在数据库中存取数据;视图则是负责应用程序中处理数据显示的部分,一般来说是根据模型数据创建的;控制器通常处理用户交互这一部分,用来从视图将数据提取,控制用户输入,然后把数据发送给模型。View 与 Model 有直接联系,View 可以直接调用 Model 查询其状态信息,当 Model
19、的状态发生改变时,它就会直接通知 View3。2.2.2 Activity 生命周期Activity 生命周期流程图如图 2-2 生命周期:6图 2-2 生命周期(1)启动 Activity 之后,系统会先调用 onCreate()创建进程,然后调用 onStart()开始执行进程,最后调用 onResume()获得用户焦点,Activity 开始运行。(2)如果当前 Activity 被另一个透明或者 dialog 样式的进程覆盖时,系统会调用onPause 方法,暂停当前 Activity 的执行。(3)当前 Activity 恢复到前台之后,系统会调用 onResume 方法,再次进入运
20、行状态。(4)如果当前 Activity 跳转到另外一个 Activity 界面之后,当前 Activity 并不会销毁,在系统调用 onPause 方法后会调用 onStop 方法,使进程进入停滞状态。(5)当用户退出当前 Activity 回到先前的 Activity 时,系统会先调用 onRestart 方法重启进程,然后调用 onStart 方法执行进程,最后调用 onResume 方法再次运行。(6)如果当前 Activity 正处于上方第二种和第四种状态,但是系统内存不足,此时当前的 Activity 将会被 kill,当用户再次回到当前 Activity 的时候将再次调用 onC
21、reate7方法,onStart 方法以及 onResume 方法,重新进入运行状态。(7)用户结束当前进程时,系统先调用 onPause()方法,再调用 onStop()方法停止进程,最后调用 onDestory()方法销毁进程,关闭当前 Activity。2.2.3 Android 的四大组件Android 四大组件有 Activity,Service,Content Provider,Broadcast Receiver。(1)Activity:应用与用户交互是通过 Activity 实现的,Activity 为系统提供可视化界面,在新建了 xml 布局之后需在 java 文件中通过 s
22、etContentView()方法来绑定布局。Android 应用中可以包含多个 Activity,组成 Activity 栈,当前运行的 Activity 位于栈顶。最重要的是,所有 Activity 都必须在 Manifest 中注册才能运行。(2)Service:Service 是一个单独的组件,在主线程中运行。Service 不需要图形界面,因为它一般在后台运行,不需要与用户进行交互。它有自己独立的生命周期:创建服务,开始服务,销毁服务。Service 调用 startService()启动,调用 stopService()结束服务。可以为其他组件提供后台服务或者监控其他组件的运行状态
23、,,比如说播放歌曲的时候,虽然播放歌曲的界面被关闭了,但是歌曲还是在后台播放;被关闭界面的 App 依然可以接收到推送消息。所有 Service 都必须在 Manifest 中进行声明。(3)Content Provider:Android 中的 Content Provider 是一个传输数据的中间者,这个组件可以用来保存和获取数据,并公开给其他应用程序,因为 Android 没有提供存储区域,所以这是不同应用程序间共享数据的唯一方式。它可以将一个应用程序的指定数据集传送给其他应用程序,同时其他应用也可以通过 ContentResolver 对象从内容提供者中提取或存入数据。(4)Broad
24、cast Receiver:书面上来讲就是广播接收者。可以用来过滤外部事件,只响应需要的外部事件或者数据。这个事件是没有界面,可以通过启动 activity 或者service 来响应接收到的信息,也可以通过 NotificationManager 方法以灯光闪烁、震动、声音等形式通知用户有信息,比如说我们的手机收到短信等方面的处理。广播接收者需要注册,注册有两种方式:动态注册,当注册广播的 activity 被关闭后,广播就会停止;静态注册,只要设备是处于被开启的状态,广播就不会被关闭。83 系统需求分析本章节主要从系统的需求分析方面展开陈述。3.1 系统及需求分析3.1.1 系统功能分析为
25、了是这款 App 能更好的贴近人们的生活,提高交易效率,保证系统质量。通过对传统交易步骤的分析,以及对在线交易各流程的优化,认为在线交易系统应具备以下功能。(1)用户注册:用户可以通过填写用户昵称,真实姓名,注册手机号码等信息进行系统注册。(2)用户登录:用户输入用户名和密码之后,通过数据库验证后登录系统。(3)列表获取:这是系统的核心所在,系统会根据种类自动调用数据库中的数据,将数据以列表的形式显示在界面上,这样用户就可以根据自己的需要看到自己可以选择的物品。(4)获取物品详情:但是将物品以列表的形式展现出来并不能让用户对物品了解详细,点开列表之后需要将物品的详细信息展现出来,让用户更好了解
26、详情。(5)打电话,发短信:当物品的详细信息被获取之后,如果满足用户要求,用户可以直接点击打电话或者发短信的按钮联系卖家,快捷方便。(6)发布信息:这个功能模块在整个系统中也非常重要,用户可以根据类型选择要发布的种类,在发布界面中发布物品的详情,图片和价钱。(7)用户个人信息查看及头像修改:在这个系统中由于不能在数据库直接添加头像,所以在用户登录成功之后可以在前台修改,修改成功之后数据库中会有显示。(8)用户个人动态获取:在这个系统中,用户可以看到一些跟自己有关的信息,比如留言列表,个人发布的消息,个人收藏的消息,个人订阅。(9)账户密码修改和找回:在登录的过程中,用户难免会出现忘记密码的情况
27、,在这种情况下可以通过当时注册时的手机号找回密码,找回密码后也可以修改密码。(10)APP 详情获取:在个人中心,用户可以看到这款 APP 的版本信息,用户也可以给这款系统提意见。3.1.2 系统性能分析9系统功能分析是软件系统开发的基础要求,而系统性能分析可以判定产品的质量。现实中,人们一般会对系统功能比较关注,比较关心系统可以实现什么需求,很少关注性能分析。但是性能分析是系统功能的拓展,它包含了系统响应速率,处理请求的能力,数据安全等方面,通过对在线交易系统的性能分析和实际中会遇到的问题,系统应该满足以下方面的性能要求:(1)并行处理用户请求:这个系统中用户通过账户密码登录对服务器进行访问
28、。因此,系统需要响应多个用户的请求,支持多人访问。(2)响应速度:对用户的请求做出响应的速度是衡量系统行呢呢过好坏的标准之一。在线交易系统对响应速度的要求很高,最好不要超过五秒。(3)数据安全:因为这款系统涉及到个人的交易情况,个人中心有一些用户信息,要求系统有较好的保密功能,安全性要求极高。3.2 系统可行性研究可行性研究的展开主要有两个目的:研究项目“做还是不做”以及制定项目的“初步方案” ,它主要是对问题的定义进行分析,研究过程中需要初步确立项目的目标和规模,问题定义之后要导出系统的逻辑模型,然后才能确定可选的系统方案。3.2.1 技术可行性技术可行性是可行性分析中最关键并且也是最难决断
29、的问题 4。用户通过 WebService的数据传递实现登录,并获取动态列表以及发布消息,这些是这个系统的关键所在。用户登录之后,系统会从数据库调用相应的数据,通过前台界面展现在用户的面前,从而实现用户选择交易物品的功能。该系统工作核心就是 WebService 负责后台,将数据库中的数据传递给前台;前台就是提供功能,显示界面;数据库用来存储数据。这些操作就是都过 SharpDevelop,Eclipse和数据库 SQLyog 完成,在此方面这些技术都是成熟而且可行的。3.2.2 经济可行性从技术可行性来看,这款 App 的开发周期在一个月左右。开发成本并不高,一般计算机的硬件和软件都是能承受
30、的。通俗的来讲,只要具备一台高性能的计算机和畅通的网络就可以实现,在 App 的安装,维护成本也不会很高。3.2.3 操作可行性10如今,手机已经是一种很普遍的通讯设施,只要是一款智能手机就可以安装这款App,只要是会使用手机的人就能使用这款 App,操作很方便。3.3 系统流程图如图 3-1 系统流程图图 3-1 系统流程图用户开启 App 后,如果没有账号就注册账号,如果有账号可以登陆。登录过程中如果忘记密码,可以通过找回密码将密码找回,如果不能找回密码可以重新注册账号。用户也可以在登录界面修改密码,如果修改密码成功就可以登录,如果修改密码不成功就可以找回密码。登录成功之后就可以在系统中进
31、行一系列的操作。操作成功之后可以退出登录。114 系统总体分析4.1 系统功能设计为了更好地提高系统的性能,必须先将系统功能模块进行分类,比如说这款 App 的主要功能模块分为三种:登录模块,列表获取模块,消息发布模块,个人中心模块。每个模块下有它详细的功能,如图 4-1 系统功能图:图 4-1 系统功能图登录模块:(1)用户注册:用户安装 App 后就会显示登录界面,当没有账号密码的时候用户就需要进行注册,根据界面输入要求完成注册信息,用户需记住用户名和密码方便登录。(2)用户登录:用户有账号之后就可以输入账号和密码进行登录,登录之后就可以看到一些物品的信息发布。(3)密码找回和修改:在这个
32、模块中如果忘记密码就可以通过注册时的手机号找回密码,在指导原密码的前提下可以修改密码。同城交易系统登录模块列表获取模块消息发布模块用户注册用户登录密码找回和修改物品信息列表用户留言列表用户收藏列表用户个人发布列表个人信息查看用户头像修改查看系统版本信息意见反馈12列表获取模块:(1)物品信息列表:在登陆成功进入首页之后可以看到有八个类型的交易。用户点进去之后可以选择自己想要的类型,点击类型之后就会跳出响应的物品列表。(2)用户留言列表:在物品详细信息中,用户可以给对卖家留言,在留言列表中用户可以看到自己给他人的留言,也可以看到他人给自己的留言。(3)用户收藏列表:同样,对于自己中意的物品可以收
33、藏,以免日后再次查找。(4)用户个人发布列表:在个人中心,可以点击我的发布查看自己所发布的信息,并对这些信息进行删除操作。消息发布模块:消息发布模块一共有 12 种类型的消息可以发布,用户取所需进行消息发布。个人中心模块:(1)个人信息查看:用户可以查看到自己的信息。(2)用户头像修改:登录成功之后,用户可以修改自己的头像。(3)查看系统版本信息:在更多中,可以获取 App 版本信息。(4)反馈意见:用户可以对 App 提出自己的见解。4.2 数据库设计4.2.1 数据库概念设计数据库库设计也是系统开发的核心工作。在这个系统中,数据库中主要的实体有 4 种。用户实体:(用户 ID,账户名称,密
34、码,姓名,年龄,性别,手机号,头像) 。消息实体:(消息 ID,用户 ID,发表的时间,创建时长,消息内容,图片,价格,类型) 。消息收藏实体:(消息收藏事件的 ID,用户 ID,被收藏的信息 ID,收藏时间) 。保洁申请的实体:(申请信息的 ID,用户 ID,保洁时间,保洁地址,用户手机号) 。4.2.2 系统实体图在线交易系统主要由用户,消息,消息收藏,保洁申请等实体组成。下面介绍用户,消息和消息收藏,保洁申请的主要属性,和介绍个实体之间的联系。13需求者实体图如图 4-2 用户实体图 4-2 用户实体消息实体图如图 4-3 消息实体图 4-3 消息实体消息收藏实体图如图 4-4 消息收藏
35、实体图 4-4 消息收藏实体14保洁申请实体图如图 4-5 保洁申请实体图 4-5 保洁申请实体各实体之间的联系如图 4-6 实体图 4-6 实体联系4.2.3 数据字典数据字典中列出的表格只是取四个典型的例子,并未完全列举。15表 4-1 用户信息表 (t_people)字段名称 数据类型 字符长度 NULL 字段描述ID INT 100 NO 主键loginName VARCHAR 100 NO 用户名password VARCHAR 100 NO 密码Name VARCHAR 255 YES 姓名Age INT 100 YES 年龄Sex VARCHAR 255 YES 性别Phone
36、VARCHAR 255 YES 电话headUrl VARCHAR 255 YES 头像表 4-2 家政信息表 (t_jiazhen)字段名称 数据类型 字符长度 NULL 字段描述ID INT 100 NO 主键useId INT 100 NO 用户主键createTime DATETIME - NO 创建时间createTimelongDATETIME - YES 编辑时间Content VARCHAR 100 YES 内容imageURl VARCHAR 255 YES 图片Money VARCHAR 255 NO 金额Type VARCHAR 255 NO 类型表 4-3 信息收藏表
37、(t_shoucang)字段名称 数据类型 字符长度 NULL 字段描述ID INT 100 NO 主键selfId INT 100 NO 用户主键16careId INT 100 NO 关注人编码createTime DATETIME - NO 创建时间5 系统详细设计系统详细设计阶段是确定怎样具体展现所要求的系统,通过各种设计工具准确地描述目标系统,从而把这种描述直接转述成用程序语言书写的程序的阶段。在线交易系统根据各个模块功能的划分更准确的实现了所需要的功能,下面详细介绍各个模块实现过程。5.1 登录模块的设计与实现5.1.1 注册功能的实现主要实现用户注册的功能,用户输入相关信息之后进
38、行注册,注册成功之后才可以登录,完成消息发布,查看,删除等操作。如图 5-1 用户注册。(1)在注册过程中用户输入账户之后可以点击姓名查看此账户是否被注册过,如果被注册过就会有吐司弹出,显示该账户已被注册过。主要代码如下:这边先简要介绍一下 Handle 的使用:由于 Android 平台中,activity 新启动的线程是不可以访问这个 activity 的组件的,否则新启动的线程会无法动态改变组建的属性值,所以这个时候就需要借助 handle 来传递消息,实现子线程和主线程的通信。Handle 有两个作用:(1)向新启动的线程中发送消息。 (2)在主线程中获取、处理消息 5。为了让主线程能
39、及时处理新进程发送的消息,handle 类中处理消息的方法就会被自动回调。17这段代码就是Handle执行阶段,向用户返回注册名称是否重复的信息。首先是在 activity 中创建一个进程,从 dotNetManager 获取 isUserExist()方法,并将界面输入的注册名称传给接口。这段代码是向 WebService 的 isUserExist 方法传一个 loginname 的参数。WebService 通过 SQL 语句匹配前台传回来的注册名与数据库中的注册名,给出一个isExist 结果。DataSet ds = dbMysql.seleDB(“select * from t_p
40、eople where loginName = “ + loginName+ “);if(ds.Tables0.Rows.Count 0)allMap.Add(“result“, “0“);18allMap.Add(“isExist“, “1“);return JsonHelper.ToJson(allMap);elseallMap.Add(“result“, “0“);allMap.Add(“isExist“, “0“);return JsonHelper.ToJson(allMap);这段代码是在 WebService 中实现,通过获取 dotNetManager 中传来的参数loginn
41、ame,与数据库中的 loginname 相对比,0 表示用户不存在,1 表示用户存在。在 activity 中会获取需要解析的 JSONObject,0 表示成功,1 表示失败,如果成功将获取到由 WebService 传回来的 isExist 的结果,并将结果传给 Handle,最后由 Toast 告诉用户是否已经被注册过。(2)通过验证的账户就会被同步到数据库中的用户信息表中,用户通过此账户和密码就可以进行后续的一些操作。19图 5-1 用户注册 图 5-2 找回密码5.1.2 登录功能的实现该功能主要实现用户登录,系统会根据登录名和密码,检查与数据库中的登录名密码是否匹配。登录成功之后
42、就会跳转系统首页。5.1.3 密码找回与修改的功能实现当用户登录时发现忘记密码,可以通过点击找回密码进入找回密码界面,通过输入注册时的手机号码找回密码,通过 SQL 语句找到此 ID 的用户信息,然后比较输入的手机号是否与注册时的手机号相同,若相同则会显示注册密码。如图 5-2 找回密码。找回密码之后可以修改密码,修改密码的时候需要输入先前的密码和修改后的密码,系统会比较数据库中原有的密码,如果匹配,会将新的密码同步到数据库。5.2 系统列表获取模块的设计与实现这是本次设计的核心模块,用户登陆成功之后就可以根据自己的需求选择想要浏览的物品的列表。如图 5-3 房产列表, 5-4 我的发布列表。
43、20图 5-3 房产列表 5-4 我的发布列表以获取房产列表为例,详细解析一下获取的过程,主要代码如下:21首先从 dotNetManager 获取 getfangchanList()方法,同时传入参数,获得需要解析的 JSONObject,如果返回的 result 为 0,表示解析成功,获取 webservice 中的fileList,fileList 代表的是数据库中 t_fangchan 表中的数据。定义一个 weiboList 实体对象,获取到数据之后就开始遍历数据,将 ja 中的第 i 个 JSONObject 赋给weiboJO,gso 自动解析(String对象) ,将 file
44、List 中的每一行对应添加到 weiboList中,用 msg.obj 将 weiboList 传到 handle 中。Handle 获取到数据后,绑定适配器,按照 adapter 中规定的方法,将每一条数据放到相应的控件中。如果解析 JSONObject 出错,也会将携带的错误信息传给 Handle,以 Toast 的方式将错误原因告知用户。5.3 详细信息中打电话发短信功能的设计与实现为了更好地方便用户交易,我们实现了用手机号注册的功能,这一功能的实现就是方便交易时的双方联系,当买家中意物品后可以直接在物品详情的界面中联系卖家,在卖家手机出现停机或关机的情况下,用户还可以选择留言的方式联
45、系卖家,这解决了传统交易一些不便之处。获取到物品详细信息后,如图图 5-5 物品详情 1,图 5-6 物品详情 2,会显示出卖家的姓名和手机号,手机号旁边的打电话发短信以及留言功能都已经实现。22图 5-5 物品详情 1 图 5-6 物品详情 2首先,号码的获取是通过 Intent 将所需要获取到详细信息的这条消息的发布者的 ID传递到显示详细信息的这个界面,核心代码:intent.putExtra(“OtherId“, tongChenItem.getUserId();上一个界面的值传递过来之后需要在详细信息的界面接收值才可以使用,核心代码:otherid=getIntent().getSt
46、ringExtra(“OtherId“);在获取到发布者 ID 之后依旧可以使用访问网络接口,通过查找语句找到此 ID 号的用户的详细信息,当然,包括该用户的姓名和联系方式,解析之后的数据会绑定到相应的控件,再显示出来。5.3.1 打电话功能的实现打电话的功能是调用系统的打电话功能,需要先给系统一个权限,在 MainFest 中获取,有了权限之后直接回跳转系统打电话界面,代码如下:Intent intent=new Intent(Intent.ACTION_CALL,Uri.parse(“tel:“+phone);5.3.2 发短信功能的实现23发短信是跳转到自定义的发短信界面进行发送如图 5
47、-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 消息发布
48、 2。24图 5-8 消息发布 1 图 5-9 消息发布 2本节中,就家政消息发布为例进行分析,类型的选择框是采用了 Spinner 控件,在activity 文件中绑定 arrylist,将种类显示出来,选取好种类之后会以 string 类型产生一个常量 leixing,这个类型就是数据库中的 type。输入的标题也会被读取转换成 string字符串,费用也是如此。这边的难点在于如何将图片上传到数据库,点击上传图片的按钮会弹出一个 Dialog 选择框,选择框中给出了两种选取图片的方式,本地图片和拍照,就这两种方式来进行详细分析:(1)选取本地图片:如果在对话框中选择相册,系统会自动调转到手
49、机系统的相册,代码: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)。拍完照图片会存入手机系统25SD 卡中,这时交易系统会先通过手机 sd 卡的根路径 savePicPath :“/mnt/sdcard/download/pic/“找到当时以当前时间+“.png”格式保存的图片,然后调用 startPhotoZoom 方法进行剪切,最后上传。在以上内容都实现