| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 684 人关注过本帖, 1 人收藏
标题:编程心得
只看楼主 加入收藏
wangchatian
Rank: 2
等 级:论坛游民
帖 子:34
专家分:10
注 册:2011-1-24
结帖率:50%
收藏(1)
已结贴  问题点数:20 回复次数:9 
编程心得
                  
   我在编写财务软件时曾遇到过一些难点和问题,在解决这些问题的过程中有一点,我在里写出来,愿与各位朋友分享,同时也希望得到各位的指点。
   我的一些在中小企业做会计工作的朋友往往会对我说: 他们所用的财务软件不太好用。我问他们是哪家的软件时,而他们告诉我的都是些著名的软件公司。我很纳闷。说实在话,
对财务我并非内行,于是我应邀去了他们公司现场观看了他们操作,结果我发现:
1、    他们所用的软件都是著名财务软件,功能强大,实应性强,技术是不容质疑的。
2、    这些软件面向面宽,功能齐全,自然选项就多,操作复杂。
3、    其实对许多中小企业来说,很多选项是不需要的。
在这些朋友的鼓动和激励下我考虑为中小企业设计一款财务软件。
基本流程我参照了航天信息公司的同类软件,汲取了他们的优点:
在编写凭证录入的模块中比较难的问题有三个:
     1、金额制和金额数量制两中模式的转换;
     2、第二个难点就是显示合计的大写;(这么简单的问题啊,见笑了);
     3、第三个难点是用树形结构显示科目供选择;
这三个问题的解决我贴出来吧,与朋友交流,并希望得到指导。
我是用stringgrid 控件作为父类 增加了几个属性和方法,其中利用了Canvas 对象,来解决第一个问题的。详细的过程我就不多说了,只要有一点Delphi基础应该不难。
解决第二个问题我写了三个函数,我把源码贴出来吧:
var
sdx:string;
begin
if s='1' then
sdx:='壹'
else if s='2'  then
sdx:='贰'
else  if  s='3' then
sdx:='叁'
else if s='4'  then
sdx:='肆'
else  if  s='5' then
sdx:='伍'
else if s='6'  then
sdx:='陆'
else  if  s='7' then
sdx:='柒'
else if s='8'  then
sdx:='捌'
else  if  s='9' then
sdx:='玖'
else if s='0'  then
sdx:='零';
result:=sdx;
end;
//-------------------------------------------
function  TF_publicuse.wz(j:integer):string;
var
swz:string;
begin
if j=0 then
swz:='分'
else if j=1 then
swz:='角'
else if j=2 then
swz:='元'
else if j=4 then
swz:='拾'
else if j=5 then
swz:='百'
else if j=6 then
swz:='千'
else if j=7 then
swz:='万'
else if j=8 then
swz:='拾'
else if j=9 then
swz:='百'
else if j=10 then
swz:='千'
else if j=11 then
swz:='亿';
result:=swz;
end;


function TF_publicuse.DXWZ(s:string):string;
var
s1,s2 :string;
n,j:integer;
strdx:string;
begin
n:=length(s);
for j:=0 to  n-1  do
begin
s1:=midstr(s,n-j,1);
if j>=7 then
begin
if (j=7) and (s1='0') then
strdx:=wz(j)+strdx
else if (j>7) and (s1='0') and (s1=s2) then
strdx:=strdx
else if (j>7) and (s1='0') and (s1<>s2) then
strdx:=dx(s1)+strdx
else
strdx:=dx(s1)+wz(j)+strdx;
end else
begin
if (j=0) and (s1='0')  then
strdx:='整'
else if  (j=3)  and (s1='0') then
strdx:=strdx
else if (s1='0') and (s1=s2) then
strdx:=strdx
else   if (s1='0') and (s1<>s2)   then
strdx:=dx(s1)+strdx
else
strdx:=dx(s1)+wz(j)+strdx;
end;
s2:=s1;
end;
result:=strdx;
end;
今天就交流到此吧,下次再续(下次将交流现金流量表的编写)。


[ 本帖最后由 wangchatian 于 2011-9-10 17:08 编辑 ]
搜索更多相关主题的帖子: 软件 财务软件 技术 
2011-09-10 16:58
yuutian
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:137
专家分:686
注 册:2010-10-27
收藏
得分:10 
顶一下
2011-09-12 21:25
Alar30
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:10
帖 子:988
专家分:1627
注 册:2009-9-8
收藏
得分:10 
Look一下
Delphi确实不太熟悉
2011-09-12 23:25
xh20030402
Rank: 2
等 级:论坛游民
帖 子:2
专家分:10
注 册:2009-9-25
收藏
得分:0 
大小写转换就用一个过程的调用,下面就是该过程的代码
function SmallTOBig(small:real):string;
var
  SmallMonth,BigMonth:string;
  wei1,qianwei1:string[2];
  qianwei,dianweizhi,qian:integer;
begin
  qianwei:=-2;
  Smallmonth:=formatfloat('0.00',small);
  dianweizhi :=pos('.',Smallmonth);
  for qian:=length(Smallmonth) downto 1 do
  begin
    if qian<>dianweizhi then   {如果读到的不是小数点就继续}
    begin
      case strtoint(copy(Smallmonth,qian,1)) of
        1:wei1:='壹'; 2:wei1:='贰';
        3:wei1:='叁'; 4:wei1:='肆';
        5:wei1:='伍'; 6:wei1:='陆';
        7:wei1:='柒'; 8:wei1:='捌';
        9:wei1:='玖'; 0:wei1:='零';
      end;
      case qianwei of
        -3:qianwei1:='厘';
        -2:qianwei1:='分';
        -1:qianwei1:='角';
        0 :qianwei1:='元';
        1 :qianwei1:='拾';
        2 :qianwei1:='佰';
        3 :qianwei1:='仟';
        4 :qianwei1:='万';
        5 :qianwei1:='拾';
        6 :qianwei1:='佰';
        7 :qianwei1:='千';
        8 :qianwei1:='亿';
        9 :qianwei1:='十';
        10:qianwei1:='佰';
        11:qianwei1:='仟';
      end;
      inc(qianwei);
      BigMonth :=wei1+qianwei1+BigMonth;
    end;
  end;
  SmallTOBig:=BigMonth;
end;
2011-09-16 10:16
wangchatian
Rank: 2
等 级:论坛游民
帖 子:34
专家分:10
注 册:2011-1-24
收藏
得分:0 
回复 4楼 xh20030402
代码简洁,很不错,望今后多交流。
2011-09-17 11:30
hhdelphi
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-9-22
收藏
得分:0 
不错很好心得,希望长来,学习中
2011-09-22 09:49
冰蟾子
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:498
专家分:109
注 册:2006-4-14
收藏
得分:0 
不考虑中间连续0的情况么。。

欢迎到我的blog做客。。。。。。。。
2011-09-24 00:58
wangchatian
Rank: 2
等 级:论坛游民
帖 子:34
专家分:10
注 册:2011-1-24
收藏
得分:0 
回复 7楼 冰蟾子
中间连续为零的情况已考虑了啊,谢谢你的光顾。
2011-09-30 08:56
北国蚂蚁
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-12-5
收藏
得分:0 
顶个 颇有心得啊
2011-12-05 18:27
nmgb
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-2-21
收藏
得分:0 
不是我想要的
2013-02-21 17:09
快速回复:编程心得
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015779 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved