图5-6总体类图5.5系统流程对象设计系统流程设计是对系统分析阶段成果的进一步完善和补充,从物理实现的角度对系统设计进行新的分解和扩展。系统流程对象设计按照以下两个步骤进行:1、换名。系统分析阶段产生的类和类的方法都是中文,这是为了方便分析人员和用户的交流,但大多数程序设计语言和开发工具都不能很好地支持中文的类名和方法名,因此把文档中的类和方法改为英文是很重要的设计步骤。2、对类中的方法进行处理。这类处理包括的内容很多,主要有以下几种:1)去除不可实现的方法。2)增加功能实现必须的方法。3)改变方法作用域。4)为方法增加参数。5)改名[25]。系统流程对象设计是对分析阶段产生的所有流程对象完成上面两个步骤,但这里篇幅有限,选取系统中客户管理功能模块的流程对象进行详细描述,如图5-7所示。图5-7“客户卡管理”流程对象设计5.6系统界面设计人机交互体验感决定了用户对系统的印象。设计良好的界面能够引导用户自己完成相应操作,起到向导作用。界面设计主要是为了达到以下目的,应按照下表中的规则进行设计。(1).以用户为中心设计。由用户控制的界面,而不是界面控制用户。(2).清楚一致的设计所有界面。其风格保持一致,所有具有相同含义的术语保持一致,且易于理解和使用。(3).拥有良好的直觉特征。以用户所熟悉的现实世界事务的抽象来给用户暗示和隐喻,来帮助用户能迅速学会软件的使用。(4).较快的响应速度(5).简洁、美观5.6.1界面显示设计一级界面:34二级界面:三级界面:5.6.2界面流转逻辑设计图5-8页面流转逻辑设计图login.jspindex.jspMembershipManageme如图5-8所示,首先,用户打开,输入用户名和密码进行登录。用户进入系统后,logon_user对象生成,该对象的有效时间将跨越整个会话,同时页面转到系统主菜单页面ConsumptionManagem()。用户在系统主菜单页面选择希望执行的功能后,若权限满足则转向用户所选择的功能Dispatcher(Servle页面,如(客户管理),随后用户开始进行相应的操作。QueryStatisticManagemt)5.7代码设计原则?\开放-封闭\原则(OCP)ActivitiesManagementlogon_user(session)Open-ClosedPrinciple原则讲的是:一个软件实体应当对扩展开放,对修改关闭。优点:通过扩展已有软件系统,可以提供新的行为,以满足对软件的新的需求,使变化中的软件有一定的适应性和灵活性。已有软件模块,特别是最重要的抽象层模块不能再修改,这使变化中的软件系统有一定的稳定性和延续性。?里氏代换原则(LSP)LiskovSubstitutionPrinciple(里氏代换原则):子类型(subtype)必须能够替换它们的基类型。?依赖倒置原则(DIP)依赖倒置(DependenceInversionPrinciple)原则讲的是:要依赖于抽象,不要依赖于具体。简单的说,依赖倒置原则要求客户端依赖于抽象耦合。原则表述:抽象不应当依赖于细节;细节应当依赖于抽象;要针对接口编程,不针对实现编程。?接口隔离原则(ISP)接口隔离原则(InterfaceSegregationPrinciple)讲的是:使用多个专门的接口比使用单一的总接口要好。换而言之,从一个客户类的角度来讲:一个类对另外一个类的依赖性应当是建立在最小接口上的。过于臃肿的接口是对接口的污染。不应该强迫客户依赖于它们不用的方法。?合成/聚合复用原则(CARP)合成/聚合复用原则(Composite/AggregateReusePrinciple或CARP)经常又叫做合成复用35原则(CompositeReusePrinciple或CRP),就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新对象通过向这些对象委派达到复用已有功能的目的。简而言之,要尽量使用合成/聚合,尽量不要使用继承[26]。?
迪米特法则(LoD)
迪米特法则(LawofDemeter或简写LoD)又叫最少知识原则(LeastKnowledgePrinciple或简写为LKP),也就是说,一个对象应当对其它对象有尽可能少的了解。其它表述:只与你直接的朋友们通信,不要跟\陌生人\说话。
5.8面向对象的优化设计
5.8.1业务逻辑优化
业务逻辑优化需要考虑两件事情:
(1)怎样将所有业务逻辑中的子事务尽可能均匀地分配到在建系统中去,让系统中各个部分充分发挥各自特有的功能,不要出现“越俎代庖”现象;
(2)如何找到被分解业务的共同部分。业务逻辑在计算机系统中的分解可能使得原本两个貌似没有太多共同之处的业务出现了共同点,找到这些共同点,就找到了系统优化的关键。
对于第一个问题,基本方法就是参照选定的系统架构层次进行分层分配,将业务逻辑中的每个事务分别在所适合的层中实现;第二个问题,一方面可以通过分析时序图找到逻辑上相同的部分,另一方面可以将该任务向后推,留待静态类优化时再加以解决。
5.8.2静态类优化
静态类的优化是指抛开业务逻辑,单纯从编程语言本身对系统进行的优化。面向对象的程序是不断迭代的过程,随着迭代的深入,系统逐渐变得更加丰富和完善。当开发工作从系统分析转入系统设计后,会出现和业务逻辑无关的代码优化问题,这就是静态类优化。它的基本方法和程序设计语言有一定的联系,和面向对象程序原则高度相关。而静态优化完成后,可能会对业务逻辑优化产生新的提示,从而导致更进一步的业务逻辑优化。这样的迭代持续进行,直到业务逻辑在实现层面完全清晰,所有类的设计符合或基本符合面向对象的设计原则。
(1)初始类图
User类和Admin类作为系统一般使用者和系统管理者,在使用系统的过程中,例如登录、退出等操作。将两者之间出现的相同操作的程序代码合并在一起,并推送到共同的父类中,生成EntityBean、PersistObject、BaseAction这3个父类。接下来将方法从原来的实体类转移到抽象类中去,在此过程中将能设定为私有的类一定要私有化,如图5-8,、5-9、5-10、5-11所示。
图5-8初始类图
36
(2)静态类初步优化:将两者之间的重复代码合并并推送到父类
图5-9静态类的初步优化设计结果
(3)将共同方法转移到抽象类:将原来类中的共同方法转移到抽象类中
图5-10将共同方法转移到抽象类的结果
(4)静态类最终优化结果
图5-11静态类优化设计最终结果
5.8.3程序代码结构优化
程序代码结构定义了程序代码应该怎样被组织成文件、目录怎样分组为库,这种组织的优劣对于计算机系统而言没有什么意义,因为无论程序代码组织的多么杂乱无章,只要它是正确的,编译程序就一定能够正确且高效地找到所需的文件并完成工作;但对于人而言,组织结构混乱的程序代码难以理解,有时为了读懂这些代码所花费的时间和精力更甚,因此程序代码结构的优化是以方便人特别是非程序设计者阅读而做的工作。
程序代码组织的基本形式是树状结构,其组织层次从大到小依次为:工作环境—项目—包—文件—类—方法—程序代码行。
第6章邮政储蓄银行客户营销积分管理系统的实现与测试
系统实现是设计工作的最后一步,在此阶段中,首先要根据系统设计方案对系统进行配置,设定相关参数,从而搭建系统运行的软硬件平台,然后将测试完的系统程序及相关文件部署到平台上。
6.1系统实现
6.1.1系统登录界面
用户输入用户名、密码和系统角色后进入客户卡信息管理系统主界面。在该界面左侧部分列该系统的主要功能模块,中间界面提供日常常规操作的快捷处理方式,如图6-1、6-2所示。
图6-1系统登录界面
6.1.2客户管理模块
顾客到门店提出客户卡申请,并填写客户资本资料。客户服务中信人员审核客户顾客是否满足客户卡申办条什。为顾客办理客户卡,客户基本信息必须填写完整。系统应自动控制:必填信息空项,则无法进行下以步操作。直至客户资料填写完整后,才能激活客户卡,使客户卡得以投入使用,如图6-3所示。
图6-3客户管理界面
单击客户卡开通按钮,进入客户卡单据明细页面。此表中的发卡门店为系统自动填写,
37
除此之外表中的客户卡生效日期根据实际情况选择(如果不选择,则系统默认生效日期为当天),其他必填栏位如:顾客姓名、性别、客户生日、所在城市、电话、地址等,可根据实际情况来进行填写。
客户领取客户卡后,在购物时可以刷卡营销积分,系统自动记录和更新客户的营销积分信息。当客户信息需要修改时,登录客户卡资料维护界面进行信息修改。要修改表中内容可以单击客户修改按钮,输入查询条件,单击查询按钮,切换到待修改客户信息列表页面,修改完完毕后需要执行保存操作,如图6-4所示。
图6-4开通客户卡界面
6.1.3客户营销积分模块
图6-5客户营销积分管理页面
6.1.4查询统计模块
根据现代营销法则,企业的80%的利润来自于那20%的忠诚客户,因此市场营销的关键问题在于在大量客户的前提下,确定出谁是20%的高价值客户,如何发现甚至是如何随时地发现客户的价值,准确地定义出超市的优质顾客,这正是数据挖掘作用所在。数据挖掘一般是指从大量的数据中自动搜索隐藏于其中的有着特殊关系性(属于Associationrulelearning)的信息的过程。数据挖掘本质上就是建模,即发现客观事物的规律。针对零售企业中已经获取的顾客数据进行分析,利用数据挖掘算法,建立客户价值预测模型,发掘不同客户群体的不同价值,针对新的客户数据资料进行预测,发掘潜在盈利客户,使其可以成为企业创造利润的价值客户,通过提供符合客户需求的服务使其成为企业的忠实客户,以期大大减少日常促销活动的盲目性,从而降低销售成本,提高效率,增强企业核心竞争力。客户卡信息管理系统的查询统计模块主要针对客户持卡基本信息和客户持卡营销积分信息进行数据挖掘[27]。
数据挖掘在本系统的查询统计模块应包括:(1)销售、顾客、产品、时间和地区的多维分析;(2)对促销活动的有效分析;(3)对顾客忠诚度的分析;
(4)挖掘关联信息,以形成购买推荐和商品参照,以帮助顾客选择商品。1、基于数据挖掘的多维分析(1)数据挖掘的过程
图6-6数据挖掘过程
数据挖掘的步骤会随不同领域的应用而有所变化,每一种数据挖掘技术也会有各自的特性和使用步骤,针对不同问题和需求所制定的数据挖掘过程也会存在差异。
38