伍迷家园

让编程融入生活
随笔 - 82, 文章 - 0, 评论 - 1516, 引用 - 160
数据加载中……

最新评论

共31页: 1 2 3 4 5 6 7 8 9 下一页 末页 
地图美化以后,反而不是很准确了,许多地方在地图上明显偏离
赶紧增加县级市、重点县乡地标
现有内容太单薄,无法满足需要
谢谢 楼主。是我对多态的理解不够透彻,这回明白了。我是学Delphi的,为了看《大话》,临时抱佛脚学了一些C#语法。可还对一些语法和函数不理解,比如:
一、‘private Double MoneyRetate = 1d’应该是把MoneyRetate初始化为1d,这里的d是什么意思?
二、Convert.ToDouble()和double.Parse()应该是把目标数据转换为浮点数的函数,二者有何区别?
三、
public CashReturn(string MoneyCondition, string MoneyReturn)
{
this.MoneyCondition = double.Parse(MoneyCondition);//可以把字段this.MoneyCondition换成属性吗?变成对属性的读写。MoneyCondition可以声明为Double吗?以省去double.Parse()。
...
}

下面是我用Delphi改写的,请楼主帮忙看看也没有错误的地方?
//业务部分
unit Unit2;

interface

uses
SysUtils;

type
TCashSuper = class(TObject) //现金收费类
public
function AcceptCash(Money: Double): Double; virtual; abstract;
end;

TCashNormal = class(TCashSuper) //正常收费子类
public
function AcceptCash(Money: Double): Double; override;
end;

TCashRebate = class(TCashSuper) //打折收费子类
private
FMoneyRebate: Double;
public
constructor Create(MoneyRebate: string);
function AcceptCash(Money: Double): Double; override;
end;

TCashReturn = class(TCashSuper) //返利收费子类
private
FMoneyCondition: Double;
FMoneyReturn: Double;
public
constructor Create(MoneyCondition, MoneyReturn: string);
function AcceptCash(Money: Double): Double; override;
end;

TCashFactory = class(TObject) //现金收费工厂类
public
function CreateCashAccept(Category{种类}: Integer): TCashSuper;
end;

implementation

{ TCashNormal }

function TCashNormal.AcceptCash(Money: Double): Double;
begin
Result := Money;
end;

{ TCashRebate }

function TCashRebate.AcceptCash(Money: Double): Double;
begin
Result := Money * FMoneyRebate;
end;

constructor TCashRebate.Create(MoneyRebate: string);
begin
FMoneyRebate := StrToFloat(MoneyRebate);
end;

{ TCashReturn }

function TCashReturn.AcceptCash(Money: Double): Double;
begin
Result := Money;
if (Money >= FMoneyCondition) then
Result := Money - Round(Money / FMoneyCondition) * FMoneyReturn;
end;

constructor TCashReturn.Create(MoneyCondition, MoneyReturn: string);
begin
FMoneyCondition := StrToFloat(MoneyCondition);
FMoneyReturn := StrToFloat(MoneyReturn);
end;

{ TCashFactory }

function TCashFactory.CreateCashAccept(Category: Integer): TCashSuper;
var
CashSuper: TCashSuper;
begin
CashSuper := nil;
case (Category) of
0: CashSuper := TCashNormal.Create; //正常收费
1: CashSuper := TCashReturn.Create('300', '100'); //满300百返100
2: CashSuper := TCashRebate.Create('0.8'); //打8折
end;
Result := CashSuper;
end;

end.

//界面部分
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls;

type
TForm1 = class(TForm)
LblPrice: TStaticText;
LblNumber: TStaticText;
EdtPrice: TEdit;
EdtNumber: TEdit;
LblCategory: TStaticText;
CboCategory: TComboBox;
BtnOK: TBitBtn;
BtnClear: TBitBtn;
LstList: TListBox;
StaticText4: TStaticText;
LblResult: TStaticText;
Panel1: TPanel;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure BtnOKClick(Sender: TObject);
procedure BtnClearClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses
Unit2;

var
Total: Double;
aCashSuper: TCashSuper;
aCashFactory: TCashFactory;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
//aCashSuper := TCashSuper.Create;
aCashFactory := TCashFactory.Create;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
//aCashSuper.Free;
aCashFactory.Free;
end;

procedure TForm1.BtnOKClick(Sender: TObject);
var
TotalPrice: Double;
begin
aCashSuper := aCashFactory.CreateCashAccept(CboCategory.ItemIndex);
TotalPrice := aCashSuper.AcceptCash(StrToFloatDef(EdtPrice.Text, 0)) * StrToFloatDef(EdtNumber.Text, 0);
Total := Total + TotalPrice;
LstList.Items.Add('单价:' + EdtPrice.Text + ' 数量:' + EdtNumber.Text + ' '+
CboCategory.Items.Strings[CboCategory.ItemIndex] + ' 合计:' + FloatToStr(TotalPrice));
LblResult.Caption := FormatFloat('0.00', Total);
end;

procedure TForm1.BtnClearClick(Sender: TObject);
begin
EdtPrice.Text := '0';
EdtNumber.Text := '0';
CboCategory.ItemIndex := 0;
LstList.Items.Clear;
Total := 0;
LblResult.Caption := FormatFloat('0.00', Total);
end;

end.
re: 测试中国地理常识(中文版) 高加索犬 2008-10-11 09:15  
怎么没有株洲,十堰,潮州,阜阳等全国小有名气的二级城市,另外象吐鲁番,格尔木这些城市最好也应该有
@hutu0415
抽象类不可以实例化.
在C#中,抽象类可以实例化吗?
这个网站大部分其实是flash制作的。但是“换乘查询”部分却是实实在在的flex编程。flex 可以控制flash的播放,建议你去网上查查FlexComponentKit相关的说明。
@高加索犬
继续加油呀,前两名应该也是依靠本事得到的分数。
re: 测试中国地理常识(中文版) 高加索犬 2008-10-09 22:02  
我高加索犬可是凭真本事玩到第三的
您的这个网站非常炫、非常实用。
但我想知道的是:
您的各个栏目,比如“首页”、“换乘查询”,应该都是FLASH中的多个帧里的内容吧。
您说把SWC导入的FLEX,但这样的话,因为FLEX只有1帧,你怎么进入到“换乘查询”页面进行编程啊?
所以说,我认为您是不是又把FLEX的什么文件导入到了FLASH吧?
你是怎么实现的啊?我实在很郁闷,谢谢
@啊啊
这是从何谈起?既然如此,建议你还是不要看《大话》的好。以免让垃圾污染你的眼睛。
垃圾 出版前拉拢人心 出版后到处去封电子版
re: 测试中国地理常识(中文版) 陈佳林 2008-10-07 09:00  
呵呵,我玩的简直是一条直线!
哈哈 文章实在很好,不过就我的水平连一半的小菜都比不上,前路漫漫啊~
谢谢楼主~
@伍迷
我终于领会了老师们常教导我们的一句话:“一步一个脚印”!
可惜此时书已经读穿头了!抱憾中 ing ..
有 源代码提供学习下吗?
说得真好!《大话设计模式》写得真好!

希望您能再接再厉,写出更多的好书。

祝你好运!
其实你这是中间层呀..............
有的地方有错误啊
是呀,我是第四次印刷了!
re: 《大话设计模式》勘误 eeee 2008-09-28 18:30  
p25的代码结构图中,CashContex和CashSuper之间是聚合关系,而代码实现上是关联关系,是我理解错误?
re: 《大话设计模式》勘误 eeee 2008-09-28 18:30  
p25的代码结构图中,CashContex和CashSuper直接是聚合关系,而代码实现上是关联关系,是我理解错误?
re: 《大话设计模式》重印公告 毛寅珅 2008-09-28 09:21  
昨天国庆房价第一天我就去上海书城买到了~呵呵
@走累了的猫1
的确是个Bug,我修改好了。谢谢!你将浏览器关闭然后再打开,重新载入flash,应该就是最新版本了。

很佩服你,我自己都玩不到第六关,你可以完全通关。你对中国城市地理实在是太熟悉了吧。牛!
re: 测试中国地理常识(中文版) 走累了的猫1 2008-09-27 12:34  
还是有bug;第六关通过后显示第7关,同时游戏结束;此时无法登录成绩。
@aymi
好难!!!彻底打消了我使用工具的念头。还是让猫来拿第一吧。嘎嘎~
伍迷大哥好样的!!!
1,xml方式也是一種程序的修改,配置文件也是一種弱化的開發語言。
2,反射是不是以前用的動態變量阿?就是可以通過字符串的變量名調用,這個好像是目前的面向對象的語言的不足的地方,就好像瘦客戶端的那些技術繞一個大圈發現還是不能很好的滿足胖客戶的界面操作體驗,結果又搞出來一個富客戶,實質應該是一樣的吧。
这个算是技术人员想出来的鬼主意吧,看起来很美,实际上很不适用。
有时候我取完号会估计一下人数然后会出去办一下别的事情,然后再回来等,相信很多人都像我一样子的。
感觉那个A.Z说话的口气很吊的样子。是不是一个大佬阿。
re: 小菜编程成长记系列 梦涯 2008-09-25 10:15  
同意楼上的观点,等有钱了 一定不看电子版的
@伍迷
原来大哥在厉兵秣马啊,我是说怎么一直几周都不见动静哦~

我等着!
那就要用到复杂工厂模式了@金色海洋(jyk)
喜欢程序和生活融合到一起的感觉
生活程序,程序生活
re: 测试中国地理常识(中文版) 冰の酷龙 2008-09-23 12:02  
很有意思的一个游戏,第一次得分4000多=。=不敢注册。
想和armi一样找出bug。
另外,我是学.net的,我有个朋友是学flash的,正在转向flex3.0,我会推荐他来看看的,看我们能不能也弄个简单的出来。
我和他用flas和.net做过一个简单的留言本,一般的功能都实现了。
还有,我也看了一下flex的介绍,他也是一门面向对象的编程,也有他的ide,和控件,你说“因为flex是富客户端技术,它本质上还是要有服务端,并在浏览器上运行的技术. ”,能不能具体点介绍下用flex需要.net的哪个方面支持?
re: 小菜编程成长记系列 azziporah 2008-09-22 20:44  
出了书还提供pdf下载 让人敬佩! 拜读中...
坚持看完博主的小菜系列 写的太精彩了 明白了很多ooa的东东 让我有了一定的基础 非常感谢~不知还有没有后续呢?
@aymi
哈,没时间玩呀,争取在国庆前出地理常识游戏的下一个版本(增加了几倍的城市和地名,分级积分)

什么叫镜子游戏?
伍迷大哥,我觉得你有必要到开心网来接受我和阿猫的“镜子游戏”挑战!
@leechzhao3
如果不严重,不手术也不要紧。如果严重,还是去看看,比如我得的肛瘘就算是比较严重的那种,我是找了上海肛肠科最好的曙光医院去手术的。手术很成功,7年了,没有什么问题。
这个手术据说很恐怖,可能造成大便失禁。。。所以我现在一直不敢开。。。。拖着。。。
re: 《大话设计模式》勘误 伍迷 2008-09-18 20:59  
@AstarNoLogin
这一段代码没有问题,就应该是这样的。
re: 《大话设计模式》勘误 伍迷 2008-09-18 20:58  
@cqchi
P360 “HelloWorld是字符型”应为“字符串型”
“还有就是ArrayList对于存放值类型的数据,比如int型、string型”,string实际上不是值类型。

的确是问题,已经修正

p362 "委托是对函数的封装,可以当作给方法的特征指定一个名称。而事件则是委托的一种特殊形式,当发生有意义的事情时,事件对象处理通知过程。"

这一句没有问题,就应该是"事件对象处理通知过程"
@伍迷
很显然,你的第四个版本相当出色!
@伍迷
555555555555555555555me
@aymi

你的确得了第一了,不过一来不是在中秋节,晚了一天,二来,成绩也不够好,至少应该进100才是你的水平嘛.哈哈,继续加油呀.
@走累了的猫
Flex不能直接连接Access,它是B/S架构的技术,显然这不可能行得通.

通过asp应该是可以.不过让你失望了,如果你想通过asp/asp.net/java/php等来连接数据库,你不用web服务器的应用程序是不行的.比如IIS,Apache,或者基于Apache的tomcat才可以.因为flex是富客户端技术,它本质上还是要有服务端,并在浏览器上运行的技术.

php方面一定是行得通的,不过我没有研究过,不算是很懂.需要你自己去研究.

我地图与DB交互的这一块是用asp.net,当中用到了Linq(.net访问DB的技术),用到了fluorine(.net与flex交互的技术).比较复杂,如果你熟悉.net,可以去研究一下fluorine,我可以给你一个学习的网站,我基本就是照这个学习的.
http://fluorine.thesilentgroup.com/fluorine/index.html
@伍迷
好 那我今晚就试试 当作明天给你的中秋礼物!
@走累了的猫
搞得我也想做了 猫做会了什么 我是一定要超越他的 我做会了什么 我也一定要告诉你的 让你晚我一步
这两种感觉都很爽
re: 测试中国地理常识(中文版) 走累了的猫 2008-09-13 10:41  
@伍迷
昨晚也用Flex做了个小东西 http://www.cnblogs.com/xihu/archive/2008/09/13/1290274.html
没有什么经验,连DB连接都有困惑,特来请教:
1.Flex可不可以直接连接Access,或者中间通过ASP(而非ASP.Net);网上据说HttpServer一类的还要启动Tomcat,太复杂,不想用。
2.网上的教程说可以连接本地的phpMyAdmin,那是否可以远程连接phpMyAdmin呢?(比如购买的虚拟主机)如果可以,Flex工程里WebRoot和RootUrl等相关参数如何设置呢?
3,可否把你的这个地图游戏尤其是DB交互那块的sourse提供给我参考下呢?
@aymi
你这样会让我很难有动力进行下去。至少你应该考虑把现在的第一名给拿下呀,始终让“猫”在第一好像不是你的风格。你应该是要保证这个游戏的每个榜单里都是第一名才对。
@伍迷
基于你每日更新频繁,我不打算完全配合你一步一跟的走。
等你走得老远,我一大步跨过去即可。
共31页: 1 2 3 4 5 6 7 8 9 下一页 末页