《遇见旅行社管理系统:技术路线及实现方案.docx》由会员分享,可在线阅读,更多相关《遇见旅行社管理系统:技术路线及实现方案.docx(52页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、深蓝软件外包服务公司s h i ny项目组遇见旅行社管理系统技术路线及实施方案Shiny保证原创精品已受版权保护公司管理系统使用PHP编程语言,采用了 Yii、DWZ框架和Ajax页面无刷新等 技术,在减少开发成本的同时,带来了更好的用户体验。公司员工登陆后台,根据需 求定制信息,以Json格式封装直接从Application Server发出,向服务器发出推送请 求,并显示结果。移动端采用Java编程语言,门户网站采用PHP、CSS、HTML和丰富的jQuery库 技术来弥补B/S架构中用户体验的不足。3.2.2 业务逻辑层业务逻辑层完成旅行社管理系统业务功能的模块,它接收系统的指令,完成业
2、务 的处理。业务逻辑层实现全部的业务逻辑,业务逻辑层是整个系统的引擎,接受表现层传 来的请求,完成各种业务逻辑的判断和处理。此外,业务逻辑层还提供了对后台业务 数据的访问控制,也就是说,只有通过客户端的相关指令才能实现对数据库的操作, 这样就确保了业务数据的安全性。独立的业务逻辑层方便了系统的功能扩展和变更。3.2.3 数据访问层数据库系统实现旅行社管理系统数据的永久存储,提供快捷的工具便于数据的查 询和更新;提供备份和恢复机制确保数据存储的安全性;提供访问身份和权限管理确 保数据访问的安全性。3.3网络拓扑架构下图5是系统的网络拓扑图。保证原创精品已受版权保护/11、)0:崎3 1 办公室
3、财务部 计调部 导游部总公司j、,图5网络拓扑架构图3.4业务架构/ |飞谕;办公室外联部 分社保证原创精品已受版权保护卜图6是系统的业务架构图。卜图6是系统的业务架构图。图6业务架构图公司管理系统门户网站4 ,功能实现方案4.1 关键技术YiiYii是一个基于组件的高性能PHP框架,用于开发大型Web应用。Yii采用严格 的OOP编写,并有着完善的库引用以及全面的教程。从MVC、DAO/ActiveRecord widgets caching.等级式RBAC、Web服务到主题化、I18N和LION, Yii提供了今 日Web 2.()应用开发所需要的几乎-切功能。Yii是一个高性能的PHP5
4、的web应用程序开发框架,是最有效率的PHP框架之 -0通过一个简单的命令行工具yiic可以快速创建一个web应用程序的代码框架, 开发者可以在生成的代码框架基础上添加业务逻辑,以快速完成应用程序的开发。Yii执行原理见图7o保证原创精品已受版权保护应用执行流程:浏览器向月艮务器发送Http Request控制器(protected/controllers)II ActionI创建模型(Model)检查S_POST输入I渲染视图render ()第二个参数作为控制器与视图接口参数I| View (protected/views)I使用Sthis访问控制器的变里(包括layout, fidget
5、)杈图值染流程: render(Sview, Sdata, Sreturn)beforeRender()范染View文件,调用renderPartial 0,要求处理输出结果根据$ y i ew得至卜1 ewF i 1 e文件名I renderFileO.要求返回渲染结果,做下一步处理I 获取:idget的数目I 从Yii:app()获得render ClebApplication:getViewRenderer 查询component viewRenderer,默认没有雷孟Then,调用renderlnternal 0 I require Vie文件,;宣染,根据需要返回范染结果I 11I
6、|1I 处理输出结果processOutput ()I 按照caller参数,返回输出,而不是echo输出I yii. phpIrequire(YiiBase. php)I|YiiBase. phpIDefine YII.XXX global variableIDefine Class YiiBaseIAutload Class YiiBase (自动加载类机制)I require interface, php I l1I define null Class Yii I l |I createVebApplxcatxon (Sconf xg) I YxxSase:createApplicati
7、on(*CTebApplxcationt Sconfxg) I Create Instance of CTebApplxcation I I Cl,ebAppl icat ion I CApplication (Jconfig)构 I I1setBasePath sex path alias I preinit 0空方法 I initSysteaKandlers0 I configure(Sconfig)将6?置文件信息保存到Application I flttchBehaviors0 prelcadCcoponents0 一 芸我在configure($confxg)中配2s番要preloa
8、d的components xnit 0 lrun ()II CWebApplxcatxon: :processRequest ()II CVebApplxcatxon:runController($route)I-creat eController (Sroute)如果 $ route 是空,摩加默认0::101101,对于“ebApplxcatxo:)的Controller类是SiteController,require该类文件如果该类是CControll”的子类,修改xd:O:为大写侬建该类的实例II-CSxteControllerIextends fros Controller这是客户化
9、拄制2s的5S本类,存在于ccaponent%下 定义了页面琏通用布局I使用CControll”构造函教创建对象CSiteC6nsi1” 具体初拈化更据见pngI1_c ont roller$this-.controller = Scontroller调用控制看我的方法,It认为空调用控制及我的run。方法,If认为CCo*roll”B5riin()createAction()I -createAction()Iif (SactionID=* * ) SactionlD设置为$this-default (index)II Yes- return CInlineAction(Sthis, Sac
10、tionlD)I No从Map创建执行当前类CInlineAct ion的父类CAct ion的构造函数设置.controller 和SidIIIIII这里得到一个CAction的实例ISthis-getModule()作为 par ent,为空则使用 Yii: :apISparent-beforeControllerAction() ?ISthis-runActionIithFilters(Sactionf Sthis-fliters();ISparent-afterControllerAction(Sthis.Saction):l1恢复假来的SoldControllerlrun ()出SJ
11、W肌器&其方治, 程拷rste信息.宾当亚控制器 I扪皓化当的&a器.CController:initO.长认为空I 1MT当前控制器.CCoatroller: :nm() I I创建action.为空则IR以为indexI JlCInlineActionPijiWI 雨父乃象独行EforControIlerAct;OBi是CTebArpHc.tion.直磅返叵TKUEI 执行act ion I备份原来的actionI ffbeforeAction()I runlithParans() 上除上是吱杼CInliiieAutioR-runfithParaa::)I 在实例O. f?SiteCont
12、roller-ctionIndeK()It renderC indi!)IlauthManager;8auth-createOperationC createPostJ5 create a post);Sauth-createOperationC readPost,5 read a post);Sauth-createOperation(? updatePost, update a post);Sauth-createOperationC deletePostJ,5 delete a post);3bizRule=,return Yii::app()-user-id=Sparamspost_a
13、uthID;* ;Stask=Sauth-createTaskC update(hmPost, update a post by author himself5, SbizRule); $task-addChild(, updatePost* );$role=Sauth-createRoleaddChild(, readPost1);$role=Sauth-createRole C author);Srole-addChild C reader);$role-addChild C createPost?);Srole-addChildC updateOwnPost*);$role=Sauth-
14、createRole C editor);Srole-addChild C reader1);Srole-addChild C updatePost1);$role=Sauth-createRole C admin7);Srole-addChiId C editor);Srole-addChild(,author,);Srole-addChiId C deletePost?);$auth-assign(,reader1, readerA5 );Sauth-assignC author1,3 authorB1 );$auth-assign(,editor5, editorCJ );$auth-a
15、ssignC admin,J adminD1 );图9授权等级图15保证原创精品已受版权保护4.2数据库建模下图10是系统数据库模型。16保证原创精品已受版权保护目录1 概述技术路线1.1 开发工具和相关技术1.1.1 开发工具1.1.2 编程语言1.1.3 开发框架1.1.4 框架模式21.1.5 数据交换格式21.2 技术亮点31.2.1 可拷贝性31.2.2 前后台数据相对分离41.2.3 RBAC用户访问控制4224后台Ajax数据交互41.3 运行环境4系统架构51.4 系统全局框架51.5 系统三层详细架构61.5.1 表示层61.5.2 业务逻辑层71.5.3 数据访问层71.6
16、 网络拓扑架构71.7 业务架构8功能实现方案91.8 关键技术91.8.1 Yii9H 三一三三r.JJf 二三 ZJK三I 工三 J一rrJ保证原创精品已受版权保护y 二 1 二 一 图10数据库模型17保证原创精品已受版权保护4.3数据库设计数据库名:tour,包含了 57张表,如下表2-12-57所示。表2-1线路主表(Route)名称类型可为空注释idInt(lO)NIDnameVARCHAR(20)Y线路名codeVARCHAR(20)Y线路编码statusInt(l)Y状态startVARCHAR(20)Y出发地endVARCHAR(20)Y目的地routekindVARCHAR
17、(20)Y线路类型routelevelVARCHAR(20)Y线路等级dateInt(3)Y天数表2-2记录主表中“游”的信息(Visit)名称类型可为空注释idInt(lO)NIDrouteidInt(lO)Y线路iddatesInt(3)Y第几天的行程viewsVARCHAR(300)Y景点priceInt(lO)Y价totalInt(IO)Y总价moneykindVARCHAR(20)Y币种表23记录主表中“行”的信息(Trans)名称类型可为空注释idInt(IO)NIDstartVARCHAR(50)Y出发点18保证原创精品已受版权保护endVARCHAR(50)Y终点bywayVA
18、RCHAR(20)Y交通方式ticketVARCHAR(20)Y票类priceInt(IO)Y价totalInt(lO)Y总价money kindVARCHAR(20)Y币种routeidInt(IO)Y主表iddatesInt(3)Y第几天表24记录主表中“食”的信息(Food)名称类型可为空注释idInt(lO)NIDbreakfastInt(5)Y早饭lunchInt(5)Y中饭dinnerIn(5)Y晚饭totalInt(6)Y总价moneykindVARCHAR(20)Y币种routeidInt(IO)Y主表iddatesInt(3)Y天数表2-5记录主表中“住”的信息(House)
19、名称类型可为空注释idInt(IO)NIDnameVARCHAR(20)Y酒店/旅馆名levelVARCHAR(20)Y等级bedkindVARCHAR(20)Y床类型priceInt(5)Y价totalInt(IO)Y总价moneykindVARCHAR(20)Y币种19保证原创精品已受版权保护routeidInt(IO)Y主表iddatesInt(3)Y第几天表26记录主表中“导”的信息(Guide)名称类型可为空注释idInt(IO)NIDtotalInt(IO)Y总价priceInt(lO)Y单价routeidInt(IO)Y主表idmoneykindVARCHAR(20)Y币种表27
20、记录主表中“另”的信息(Extra)名称类型可为空注释idInt(iO)NIDrouteidInt(IO)Y主表idtextVARCHAR(300)Y内容totalInt(IO)Y总价moneykindVARCHAR(20)Y币种表28记录主表中“地”的信息(Locality)名称类型可为空注释idInt(IO)NIDnameVARCHAR(30)Y地接社servicesVARCHAR(300)Y提供服务priceInt(lO)Y价totalInt(IO)Y总价moneykindVARCHAR(20)Y币种routeidInt(lO)Y主表id表2-9记录主表中“保”的信息(Insure)名称
21、类型可为空注释20保证原创精品已受版权保护idInt(IO)NIDkindVARCHAR(20)Y保险类型daleInt(3)Y保险天数routeidInt(IO)Y主表idpriceInt(lO)Y价totalInt(IO)Y总价moneykindVARCHAR(20)Y币种表210线路报价单(Quote)名称类型可为空注释idInt(IO)NIDrouteidInt(iO)Y主表idnameVARCHAR(20)Y单名zkadullInt(IO)Y直客成人价zkchildIn(iO)Y直客儿童价thadultInt(lO)Y同行成人价thchildInt(lO)Y同行儿童价includeV
22、ARCHAR(300)Y报价包含notinckideVARCHAR(300)Y报价不包含extraVARCHAR(300)Y额外说明表2-11团队订单(TeamBook)名称类型可为空注释idInt(lO)NIDcodeVARCHAR(20)Y订单编号routecodeInt(IO)Y线路idtimeVARCHAR(20)Y下单时间operatorVARCHAR(20)Y接待员21保证原创精品已受版权保护opecodeVARCHAR(20)Y接待员编号customerVARCHAR(20)Y客户contactVARCHAR(20)Y人callVARCHAR(20)YphoneVARCHAR(2
23、0)Y手机identityVARCHAR(20)Y有效证件号码addressVARCHAR(50)Y地址adultInt(IO)Y成人数childInt(lO)Y儿童数adultpriceInt(iO)Y成人价childpriceInt(IO)Y儿童价insurenameVARCHAR(20)Y保险类insureInt(lO)Y保险价elsetxtVARCHAR(200)Y其他说明elsepriceInt(IO)Y其他价totalIn(IO)Y应付oweInt(IO)Y已付flagInt(l)Y标志leamcodeVARCHAR(20)Y队伍编号表212个人订单(PersonalBook)名称
24、类型可为空注释idInt(lO)NIDcodeVARCHAR(20)Y订单编号routecodeInt(lO)Y线路idtimeVARCHAR(20)Y下单时间operatorVARCHAR(20)Y接待员opecodeVARCHAR(20)Y接待员编号22保证原创精品已受版权保护contactVARCHAR(20)Y人callVARCHAR(20)YphoneVARCHAR(20)Y手机identityVARCHAR(20)Y有效证件号码adultInt(10)Y成人数childInt(IO)Y儿童数insurenameVARCHAR(20)Y保险类insureInt(IO)Y保险价else
25、txtVARCHAR(200)Y其他说明elsepriceInt(iO)Y其他价totalInt(IO)Y应付oweInt(lO)Y已付flagInt(l)Y标志teamcodeVARCHAR(20)Y队伍编号表 2-13 收款单(Noticecode)名称类型可为空注释idInt(lO)NIDbookcodeVARCHAR(20)Y订单idlistkindVARCHAR(20)Y订单类型customesourceVARCHAR(20)Y客户来源contactVARCHAR(20)Y人bookpriceInt(IO)Y预订价paiedInt(IO)Y已付nowpayInt(lO)Y本次支付pr
26、ocessorVARCHAR(20)Y处理员listcodeVARCHAR(20)Y款单编码moneykindVARCHAR(20)Y币种23保证原创精品已受版权保护flagInt(l)Y标志financerVARCHAR(20)Y财务员表2-14旅游团队(Team)名称类型可为空注释idInt(IO)NIDstatusInt(l)Y状态teamcodeVARCHAR(20)Y团队编码teamnameVARCHAR(20)Y团队名称routecodeInt(lO)Y团队所属线路idteamlevelVARCHAR(20)Y团队等级teamkindVARCHAR(20)Y团队类型dateInt(
27、3)Y天数starttimeVARCHAR(20)Y出发时间backtimeVARCHAR(20)Y回程时间jhareaVARCHAR(50)Y整合地点jhflagVARCHAR(50)Y整合标志team infoVARCHAR(300)Y团队信息adultInt(5)Y成人数childInt(5)Y儿童数guideInt(IO)Y导游费表215记录团队“游的信息”(TcamVisit)名称类型可为空注群idInt(IO)NIDteam idInt(iO)Y队伍iddatesInt(3)Y天数viewsVARCHAR(300)Y景点adultnumInt(5)Y成人数24保证原创精品已受版权保
28、护childnumInt(5)Y儿童数adultpriceInt(lO)Y成人价childpriceInt(IO)Y儿童价totalInt(IO)Y总价accounterVARCHAR(20)Y结算单位money kindVARCHAR(20Y币种表216记录团队“行”的信息(TeamTrans)名称类型可为空注释idInt(IO)NIDstartVARCHAR(20)Y出发地endVARCHAR(20)Y目的地bywayVARCHAR(20)Y交通工具ticketVARCHAR(20)Y票类adultnumIn(iO)Y成人数childnumInt(lO)Y儿童数adultpriceInt(
29、lO)Y成人价childpriceInt(IO)Y儿童价totalInt(lO)Y总价moneykindVARCHAR(20)Y币种teamidInt(IO)Y队伍iddatesInt(3)Y第几天accoutncrVARCHAR(20)Y结算单位表2-17记录团队“食”的信息(TeamFood)名称类型可为空注释idInt(lO)NIDbreakfastInt(5)Y早饭lunchInt(5)Y中饭25保证原创精品已受版权保护dinnerInt(5)Y晚饭numInt(5)Y人数totalInt(IO)Y总价moneykindVARCHAR(20)Y币种teamidInt(lO)Y团队idd
30、atesIntY第几天accounterVARCHAR(20)Y结算单位表218记录团队“住”的信息(TcamHouse)名称类型可为空注释idInt(IO)NIDnameVARCHAR(30)Y酒店名levelVARCHAR(IO)Y星级bedkindVARCHAR(20)Y床类型bednumIn(5)Y床数priceInt(lO)Y价totalInt(lO)Y总价moneykindVARCHAR(20)Y币种datesInt(3)Y第几天teamidInt(IO)Y队伍idaccounterVARCHAR(20)Y结算单位表2-19记录团队“地”的信息(TeamLocality)名称类型可
31、为空注群idInt(IO)NIDnameVARCHAR(20)Y地接社servicesVARCHAR(300)Y提供服务numInt(IO)Y人数priceInt(lO)Y价26保证原创精品已受版权保护1.8.2 Ajax 技术93RBAC 访问控制1341.9 数据库建模1861.10 数据库设计3082 测试过程393 实施方案46前期准备4663.1 第一阶段技术实现内容463.2 第二阶段技术实现内容4773.3 第三阶段技术实现内容4773.4 第四阶段技术实现内容4783.5 第五阶段技术实现内容483.6 第六阶段技术实现内容错误!未定义书签。4 售后服务494.1 系统维护与支
32、持4694.2 用户培训50保证原创精品已受版权保护totalInt(IO)Y总价moneykindVARCHAR(20)Y币种teamidInt(IO)Y队伍idaccounterVARCHAR(20)Y结算单位表220记录团队“导”的信息(TeamGuide)名称类型可为空注料idInt(IO)NIDnumInt(IO)Y人数totalInt(lO)Y总价moneykindVARCHAR(20)Y币种teamidInt(iO)Y队伍idaccounterVARCHAR(20)Y结算单位表221记录团队“保”的信息(Teamlnsure)名称类型可为空注释idInt(lO)NIDkindVA
33、RCHAR(20)Y保险类型dateInt(3)Y保险天数numInt(IO)Y人数priceInt(5)Y价totalIn(10)Y总价moneykindVARCHAR(20)Y币种teamidInt(lO)Y队伍idaccounterVARCHAR(20)Y结算单位表2-22记录团队“另”的信息(TeamExtra)名称类型可为空注释idInt(IO)NIDtextVARCHAR(300)Y说明27保证原创精品已受版权保护totalInt(IO)Y总价moneykindVARCHAR(20)Y币种teamidInt(IO)Y队伍idaccounterVARCHAR(20)Y结算单位表223
34、款项支付单(Prepay)名称类型可为空注释idInt(lO)NIDteamcodeVARCHAR(20)Y队伍idpaytoVARCHAR(20)Y结算单位premoneyInt(IO)Y预付款cwpayInt(IO)Y财务预付borrowInt(lO)Y借款accountwayVARCHAR(20)Y结算方式paywayVARCHAR(20)Y支付方式statusInt(l)Y状态reportVARCHAR(200)Y情况说明mnexamineInt(IO)Y金额变化mnchangeInt(lO)Y核算金额txtVARCHAR(IOO)Y审核意见moneykindVARCHAR(20)Y币
35、种表 2-24 报销单(Baoxiao)名称类型可为空注释idInt(lO)NIDteamidInt(IO)Y队伍idtotalInt(lO)Y总价txtVARCHAR(300)Y内容28保证原创精品已受版权保护txtbackVARCHAR(IOO)Y审核意见hasdoInt(l)YHasdo表2-25额外支出(Addional)名称类型可为空注释idInt(IO)NIDtcamidInt(IO)Y队伍idtotalInt(lO)Y总价txtVARCHAR(300)Y内容txtbackVARCHAR(IOO)Y审核意见hasdoInt(I)YHasdo表2-26借贷款(Borrow)名称类型可
36、为空注释idInt(lO)NIDteamcodeInt(IO)Y队伍idamountInt(IO)Y金额borrowtxtVARCHAR(300)Y内容reportVARCHAR(IOO)Y反馈mnexamineInt(IO)Y金额变化timeVARCHAR(20)Y时间txtVARCHAR(IOO)Y审核意见ownerVARCHAR(20)Y审核人moneykindVARCHAR(20)Y币种表227客户消费历史单(CustomerList)名称类型可为空注释idInt(IO)NIDlislcodeInt(IO)Y订单idnameVARCHAR(20)Y名字29保证原创精品已受版权保护identityVARCHAR(20)Y身份证ageInt(3)Y年龄sexVARCHAR(4)Y性别isadultInt(l)Y成人birthVARCHAR(20)Y生日costInt(IO)Y花费callVARCHAR(20)YphoneVARCHAR(20)Y手机remarkVARCHAR(200)Y备注bo