博文

POS前台OO分析之_项目规划(2010-02-10 00:03:00)

摘要:   项目规划作为项目开始阶段第一个要生成的内容,它的重要性不可低估。在重要的软件项目中还应该整合进项目管理方面的内容来,应该明白变更管理、风险管理及培训是和需求一样重要的内容。   项目规划包含的议题主要有软件的商业效用及目的、软件特性限制及风险、活动者、事件列表、用例及事件用例过程、软件体系结构、项目发布方式等等。在这里我们只讨论与软件开发相关的特性、活动者、事件列表这三个要素。 在这里我们整理出来POS前台程序应该包含以下特性: 1、支持离线销售 2、录单相应时间在0.5秒以内。 3、全键盘操作。 4、支持挂单及挂起系统操作。 5、支持收银员交接班。 6、支持时段促销、活动促销、赠品、批发、团队销售多种销售方式。 7、支持现金、磁卡、优惠劵及混合收款多种收款方式。 在POS前台程序出现的活动者: 1、客户 2、收银员 3、读卡器 4、扫描仪 5、后台程序   事件列表: 收银员 录入 订单 顾客      付      货款 后台程序  ......

阅读全文(1585) | 评论:0

POS前台OO分析之_前言(2010-02-09 23:24:00)

摘要:  POS前台程序是非常有意思并且值得分析的软件项目,原因有以下几点:   1、零售业是目前国内除金融行业外管理软件普及范围最广应用程度最深的行业,而POS前台程序作为零售管理软件最具代表性且倍受关注的组成部分,它的成功与否甚至直接影响到整套零售软件的成败。   2、POS前台程序的实时性要求非常强。比如实时性要求扫描枪从扫描一个商品到这个商品的信息显示出来的这段时间一般要控制在0.5秒内,最好是0.2秒内。   3、POS前台程序可操作性要求也很强。POS前台程序代码量虽然不多,但是要求却一点不少。如全键盘操作、离线销售、挂单挂起、多种付款方式这些都已经是它不可或缺的功能。......

阅读全文(1766) | 评论:0

简单工厂模式分析与实践(2008-11-03 15:08:00)

摘要:type  TSimpleFactory = Class    class function CreateForm(FormName: string): TForm;  end; implementation  class function TSimpleFactory.CreateForm(FormName: string): TForm;begin  Result := nil;  if FormName = '销售订单' then    Result := TfmSalesOrder.Create(Application)  else if FormName = '生产单' then    Result := TfmManufacturingOrder.Create(Application)  else if FormName = '生产入库单' then    Result := TfmProductToStock.Create(Application)  else if FormName = '送货单' then    Result := TfmDeliveryOrder.Create(Application);end;   也许有人认为上面的代码过于画蛇添足了,同样的功能完全可以用一个函数实现。如下: function CreateForm(FormName: String): TForm;begin  Result := nil;  if FormName = '销售订单' then    Result := TfmSalesOrder.Create(Application)  else if FormName = '生产单' then    Result := TfmManufacturingOrder.Create(Application)  else if FormName = '生产入库单' then&n......

阅读全文(2413) | 评论:0

结合编译指令巧妙实现“单例模式”(2008-10-30 16:48:00)

摘要:type TMyClass = Class  procedure myProcedure; stdcall;  function myFunction: string; stdcall;end; {  技巧在于通过编译指令FInstance可以被赋值,且同时FInstance又具有常量的性质不会象变量每次进入其作用域就会重新分配初值。  用变量来实现相同的功能则该变量必须被定义成全局变量,而编程守则则要求少使用全局变量。}function FindInstance(Request: Boolean = True): TMyClass;{$j+}//该编译指令功能为使常量可以被赋值  Const FInstance: TMyClass = nil;{$j-}begin  if not Assigned(FInstance) then    FInstance := TMyClass.Create;  if not Request then    FInstance := nil;  Result := FInstance;end;......

阅读全文(2413) | 评论:0