资源描述
软件代码开发技术课程设计报告互联网快捷服务平台学 院 计算机学院 专 业 软件工程 年级班别 姓 名 学 号 指导教师 崔 2017年 11月 目录1.问题域的描述11.1问题引言11.2具体问题描述12.问题清单22.1发布任务问题清单22.2接单问题清单23.解题模型33.1业务模型33.1.1角色责任表33.1.2用例图43.1.3用例脚本图43.2数据模型63.2.1类图63.2.2状态图73.3功能模型73.3.1数据流图74.应用场景94.1核心数据结构94.1.1数据结构引言94.1.2 Item数据结构104.1.3具体数据结构列表114.2核心算法124.2.1前言124.2.2核心算法介绍121. 问题域的描述1.1问题引言随着科学技术的高速发展,人们的生活水平越来越高,生活的节奏也越来越快,因此简单快捷的生活方式成为大家的首选。所以在人们紧凑的生活节奏中,难免有一些事情我们可以做,但是因为各种原因,我们没有时间去完成, 特别是身在校园中的我们,总会有时候没有时间去做我们应该及时完成的任务。这个时候我们便想到如果有人在这个时间段帮我们去完成我们要做的事情就好了,所以便有这个快捷服务平台,我们可以把我们要完成的但没时间去做或没有特定能力去做的任务发布到这个快捷服务平台中,让有时间或相关的能力的人去替我们完成这个紧急的任务,发布服务者要给完成服务者适当的费用,这样,有时间或有相关能力的人就可以接收这些任务来更好的利用自己的时间和能力。这样,在我们快节奏的生活中,我们可以更加合理的应用我们的时间和能力来获取更高的经济效益。1.2具体问题描述 这个平台主要是面向高校学生,在高校中的学生高效率利用他们的时间资源和技能能力是非常重要的,这对于他们将来的职业发展也是很重要的。 快捷服务平台,一个兼具O2O与C2C众包模式的校园“共享服务”平台,用户可以发出各种个性化需求任务,自定小费;还可以成为服务者,利用空余的时间参与抢单,赚取报酬;平台采取订单智能推送,高效抢单模式。同时,服务者也可以在平台发布自己的技能服务,供有需求的用户选择购买。 我们的快捷服务平台应该可以应对以下不等的日常生活中的问题。 比如在收快递的问题上,我们并不是所有时间段都可以有时间去领取我们的快递,而在学校中肯定有学生在那个时间段是有时间的,那么我们便可以通过这个快捷服务平台,发布有偿任务,让时间的人去帮我们那快递,而我们在那个时间段就可安心的做正在做的事情,这样就不会两头都个不到了,加快了我们的做事效率。 还有当我们有一份文件要打印而没有时间去打印时,我们同样可以通过这个平台让别人帮我们完成打印,必要的话还可以让对方把文件直接送到我们所在的地方,这样我们就省去了不必要的等待时间,可以更好的完成自己手头上的工作。 因为我们的大学生活是比较繁忙的,所以并不是所有的人都有很多连续的时间段去做兼职,而我们的快捷服务平台就可以提供给这些学生短时间的有偿服务任务,让他们即使在很短的时间内也可以做兼职,当然也有比较长时间的任务,这个主要取决于任务发出的要求,这样,学生有时候在顺路顺手做一些任务就可以得到丰厚的报酬。 当然我们的快捷服务平台远不止可以解决这些问题,还可以解决更多的问题。通过这个平台我们就可以将学生们的技能与时间资源整合起来,将会创造出很高的商业价值。在给一些人创造时间,同时给一些人创造价值。 不仅如此,该平台还致力于让我们更好的融入到这个越来越快生活的节奏,解决我们生活中的各种问题。2. 问题清单2.1发布任务问题清单见表2-1问题序号问题描述备注1在收快递的问题上,我们并不是所有时间段都可以有时间去领取我们的快递,而在学校中肯定有学生在那个时间段是有时间的,那么我们便可以通过这个快捷服务平台,发布有偿任务,让时间的人去帮我们那快递,而我们在那个时间段就可安心的做正在做的事情,这样就不会两头都个不到了,加快了我们的做事效率。代拿快递2在打印的问题上,当我们有一份文件要打印而没有时间去打印时,我们同样可以通过这个平台让别人帮我们完成打印,必要的话还可以让对方把文件直接送到我们所在的地方,这样我们就省去了不必要的等待时间,可以更好的完成自己手头上的工作。代打印3在购买物品的问题上,如果我们没有时间去超市买东西,而刚好很需要需, 我们只需要将要要买的东西发布到快捷服务品台,就会有刚好在超市的或将要去超市的人接单帮忙我们将我们需要的东西买回来,只要我们支付一点跑路费就可以了,不仅省了时间,也不必专门去一趟了。代买4在课程服务问题是上,当我们在课程上遇到困难时,我们可以通过快捷服务平台,让学霸帮助我们解决学习上的问题,提高我们的课程成绩。课程服务5在早餐宵夜的问题上,我们可以通过快捷服务平台让在是食堂的同学帮我们带宵夜早餐,这样就不用上美团等定外卖了,更何况那些平台定外卖都要挺久才能送到。代码宵夜、早餐表2-12.2接单问题清单见表2-2问题序号问题描述备注1在短时间兼职的的问题上,因为我们的大学生活是比较繁忙的,所以并不是所有的人都有很多连续的时间段去做兼职,而我们的快捷服务平台就可以提供给这些学生短时间的有偿服务任务,让他们即使在很短的时间内也可以做兼职短时兼职2在长时间兼职的的问题上,有比较长时间的任务,这个主要取决于任务发出的要求,这样,当接单者有比较长的一段时间时,他就可以接比较需要较长时间的任务,担任相应的报酬也就会比较丰富。长时兼职表2-23. 解题模型3.1业务模型3.1.1角色责任表角色责任协作者任务发布人设定任务内容设定任务时间制定任务费用支付任务服用发布任务与接单人协商任务细节进行售后评价撤回订单订单投诉系统建议登录注册后台管理员接单人接单人浏览任务接收订单与任务发布人协商任务细节完成订单内容得到报酬订单投诉系统建议登录注册后台管理员任务发布人后台管理员显示任务到系统界面维护系统稳定处理投诉处理建议推送任务给接单人登录任务发布人接单人表3.1.1 角色责任表3.1.2用例图图3.1.2 用例图3.1.3用例脚本图1) 用户注册用例脚本图如图3.1.3-1所示图3.1.3-1 用户注册用例脚本图2) 登录用例脚本图如图3.1.3-2所示图3.1.3-2登录用例脚本图如图3) 发布任务用例脚本图如图3.1.3-3所示图3.1.3-3发布任务用例脚本图4) 接收订单用例脚本图如图3.1.3-4所示图3.1.3-4 接收订单用例脚本图3.2数据模型3.2.1类图图3.2.1 类图3.2.2状态图图3.2.2 状态图3.3功能模型3.3.1数据流图1) 初步数据流程图3.3.1-1 初步数据流程2) 最终数据流图图3.3.1-2 最终数据流图4. 应用场景4.1核心数据结构4.1.1数据结构引言数据结构对于一个系统是非常重要的,同样我们的互联网快捷服务平台也拥有一套严谨高效的数据结构,这可以让我们的系统平台更加的稳定高效的运行。数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。数据的逻辑结构:指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后件关系,而与他们在计算机中的存储位置无关。逻辑结构包括:1.集合:数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其他关系;2.线性结构:数据结构中的元素存在一对一的相互关系;3.树形结构:数据结构中的元素存在一对多的相互关系;4.图形结构:数据结构中的元素存在多对多的相互关系。数据的物理结构:指数据的逻辑结构在计算机存储空间的存放形式。数据的物理结构是数据结构在计算机中的表示(又称映像),它包括数据元素的机内表示和关系的机内表示。由于具体实现的方法有顺序、链接、索引、散列等多种,所以,一种数据结构可表示成一种或多种存储结构。一般认为,一个数据结构是由数据元素依据某种逻辑联系组织起来的。对数据元素间逻辑关系的描述称为数据的逻辑结构;数据必须在计算机内存储,数据的存储结构是数据结构的实现形式,是其在计算机内的表示;此外讨论一个数据结构必须同时讨论在该类数据上执行的运算才有意义。一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率。在许多类型的程序的设计中,数据结构的选择是一个基本的设计考虑因素。许多大型系统的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了最优的数据结构。许多时候,确定了数据结构后,算法就容易得到了。有些时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。不论哪种情况,选择合适的数据结构都是非常重要的。可见一个好的数据结构对我们的互联网快捷服务平台是多么重要,接下来我们就讲讲该平台所使用的数据结构。4.1.2 Item数据结构名称类型是否隐私描述iidStringN任务iddetail_urlStringN任务urlnum_iidStringN任务数字idtitleStringN任务标题,不能超过60字节nickStringN任务发布人昵称typeStringN任务类型(fixed:一口 价;auction:拍卖)注:注明任务长度cidStringN任务所属的叶子类目idseller_cidsStringN任务所属的发布人自定义类 目列表propsStringN任务属性 格式:pid:vid;pid:vidinput_pidsStringN用户自行输入的类目属性ID 串。结构:pid1,pid2,pid3,如:20000注:通常一个类目下用户可输入的关键属性不超过1个。input_strStringN用户自行输入的子属性名和属性 值,结构:父属性值;一级子属性名;一级子属性值;二级子属性名;自定义输入值,.,如:“耐克;耐克系列;科比系列;科比系 列;2K5”,input_str需要与input_pids一一对应,注:通常一个类目下用户可输入的关键属性不超过1个。所有属性别名加起来不能超过 3999字节。descStringN任务描述, 字数要大于5个字节,小于25000个字节pic_pathStringN任务主图片地址numStringN任务数量valid_thruStringN有效期,3或者7(默认是3天)list_timeStringN任务发布时间(格式:yyyy- MM-dd HH:mm:ss)delist_timeStringN任务撤回时间(格式:yyyy- MM-dd HH:mm:ss)stuff_statusStringN任务新旧程度(全新:new, 闲置:unused,)locationLocationN任务执行地点priceStringN任务价格,格式:5.00;单 位:元;精确到:分add_feeStringN追加费用,格式:5.00;单 位:元;精确到:分has_discountStringN支持会员打折,true/falsefreight_payerStringN执行任务所需费用,seller(卖家承担),buyer(买家承担)has_invoiceStringN是否有发票,true/falsehas_showcaseStringN系统推送,true/falsemodifiedStringN任务修改时间(格 式:yyyy-MM-dd HH:mm:ss)incrementStringY任务加价幅度。如果为0,代表系统 代理幅度auto_repostStringY任务自动重发,true/falseapprove_statusStringN任务上传后的状态。Onsale发布中,instock推送中product_idStringY任务所属产品的id(可能为 空). 该字段可以通过kjfw.products.search 得到auction_pointStringN返点比例property_aliasStringN属性值别名itemimg.positionItemImgN任务图片列表(包括主图)propimg.positionpropImgN任务属性图片列表sku.modifiedskuNSKU列表outer_idStringN任务发布人外部编码is_virturalStringN虚拟任务的状态字段is_taobaoStringN是否在接单人显示video.modifiedVideoN任务视频列表(目前只支持单个视频关联)4.1.3具体数据结构列表操作名所用数据结构说明显示任务列表队列这里的任务列表是从后台服务器中下载下来的,所以使用队列的数据结构是比较合适的,因为当有新的任务时,可以将新任务插在队列后面,简单得实现更新,完成的任务也可直接出列编辑任务链表任务发布人编辑自己的任务,用链表的数据结构是比较合适和高效的,因为任务发布人可以高效得实现任务的插入和删除。显示订单列表队列这个跟显示任务列表是比较相似的,用的数据结构也是队列,这是显示给接单人看的订单列表,新接的单可以直接插在队列的后面而完成的订单可以直接出列。投诉列表队列这是后台管理人员看的列表,用的数据结构是队列,新接到的投诉可以直接插到队列后面等待处理,而处理完的投诉可以处理。4.2核心算法4.2.1前言 好的算法对一个庞大的系统是非常必要的,好的算法就像这个系统的心脏一样,决定这该系统能不能高效、稳定运行。而我们的互联网快捷服务平台也有一套高效稳定的算法支撑着系统的日常运行。 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。算法中的指令描述的是一个计算,当其运行时能从一个初始状态和(可能为空的)初始输入开始,经过一系列有限而清晰定义的状态,最终产生输出并停止于一个终态。一个状态到另一个状态的转移不一定是确定的。随机化算法在内的一些算法,包含了一些随机输入。所以鉴于算法的在整个系统中的重要性,我们对该系统使用的算法经过了多次的改进,让这套算法运行的更有效率。4.2.2核心算法介绍本系统中最重要的算法是任务搜索算法和任务推送算法,任务搜索算法是接单人搜索适合自己当时去完成的任务,而任务推送算法是系统将任务推送到合适接该任务的接单人的平台上,这样精确的点对点就可以让任务发布人所发布的任务可以更快更高效的完成,节约了任务发布人和接单人的金钱和时间,也可让我们的系统更加高效稳定的运行。1) 任务搜索算法从技术上来说,就是在用户输入关键词匹配到的商品中,把最符合用户需求的任务排到第一位,其它的依次排在后续相应的位置。为了更好的实现这个目标,算法排序系统基本按三个方面来推进:一、算法模型 当用户输入关键词进行搜索的时候,系统依据算法模型来给匹配到的每个任务进 时的计算,并按照分数的大小对任务进行排序。 对于好的算法模型,首先需要考虑我们能够有哪些特征因子可以应用。比如在网页搜索中,算法模型基本就是按网页的重要性和相关性给网页计算一个分数,然后进行排序。这里的相关性,和重要性就是网页排序模型中两个重要的因子。具体来说相关性因子是指搜索关键字在文档中出现的度数,当这个度数越高时,则认为该文档的相关程度越高。重要度因子比如 Google 的 Pagerank,可以理解为一个网页入口超级链接的数目:一个网页被其他网页引用得越多,则该网页就越有价值。特别地,一个网页被越重要的网页所引用,则该网页的重要程度也就越高。搜索的时候,有些特征因子是很容易能想到的,比如:A、 文本的相关性:关键词和商品的匹配,匹配的程度,是否重要词的匹配,匹配词之间的距离等,都可能影响相关性。 B、 类目热点:系统数据的一个重要特质是每个商品都挂靠在类目属性体系下面,每个商品都做了一个很好的分类。在搜索过程中,同一搜索词的大量用户行为数据很容易聚焦到相应的热点类目。C、 任务指标:任务搜索算法中任务指标是扮演者重要角色的,其中包括任务的性质,时间,时限,地点,费用的都是接单人搜索的关键内容,所以搜索算法是在此基础上建立起来的。二、线下评估算法模型的评估一般分为线下的评估和线上的评估,线下的评估很多都体现在搜索中常用的相关性(Relevance)指标。相关性的定义可以分为狭义相关性和广义相关性两方面,狭义相关性一般指检索结果和用户查询的相关程度。而从广义的层面,相关性可以理解为用户查询的综合满意度。当用户在搜索框输入关键词,到需求获得满足,这之间经历的过程越顺畅,越便捷,搜索相关性就越好。三、线上测试为了真实验证一个算法模型的好坏,需要有一个系统能提供真实的流量来检验。系统搜索实现的 BTS(Bucket Testing System)系统就是这样的一个环境,在用户搜索时,由搜索系统根据一定的策略来自动决定用户的分组号(Bucket id),保证自动抽取导入不同分组的流量具有可对比性,然后让不同分组的用户看到的不同算法模型提供的结果。用户在不同模型下的行为将被记录下来,这些行为数据通过数据分析形成一系列指标,而通过这些指标的比较,最后就形成了不同模型之间孰优孰劣的结论。只要分组的流量达到一定的程度,数据指标从统计意义上就具有可比性。2) 任务推送算法关于任务的推送算法,我觉得以下几个因素比较重要:人-用户是一个什么样的人?任务-用户之前执行过什么任务?这三个事情应该是循序渐进的,他们一起才能决定用户可能可以接受什么样的任 务。所以我们从人的角度出发应该做这么一件事情:划分用户群体,从性别,年级,角色等一些特征来划分群体。具体的划分可能要通过分析数据才能得到结论,比如大一和大二的用户,差别可能不大,但大一跟大四的用户,可以接受的任务的差异性则比较大了,这个具体的区间可以对用户可接受的任务来做一个比较,最终的划分可能是大一、大二、大三、大四等等这样的一个年龄复合性别的划分。用户的角色,比如作为普通学生,或是社团的人员或是帮干部,这些应该都是可以分析到的。根据用户的群体划分,结合对应群体的购买行为,推荐群体契合度高的商品。 我们从用户之前执行过什么任务出发,我们可以划分任务的类型,从任务的性质,执行任务的时间段,任务的费用分段等将符合接单人的相关的任务推送给接单人。比如有的接单人他们可以在下午的时间段比较有时间,所以我们就可以将在下午的任务推送给这些人。而有的接单人比较适合做力量型的任务,我们也就可以将力量性质的任务推送给这部分人,实现任务的精确推送。13
展开阅读全文