网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
编写个人Internet上网计费软件
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
下载{$ArticleTitle}原创论文样式

TelCost Currency 电话费用
Ispcost Currency Internet费用
---- 3、从日志文件ppplog.txt文件中读取数据

---- 为了避免重复读取数据,可以每次从ppplog.txt文件中读完数
据后,把ppplog.txt中的内容复制到ppplog.bak文件中,以便想查
看日志文件时可以查看,然后,把ppplog.txt文件置空。读取的数
据存放到数据库中。具体程序如下:

procedure TForm1.readlogExecute(Sender: TObject);
var
logfile: TextFile;
logbak: TextFile;
Str1: string;
datestr,timestr:string;
begin
AssignFile(logbak,''c:\windows\ppplog.bak'');
if not FileExists(''c:\windows\ppplog.bak'') then
Rewrite(logbak)
else
Append(logbak);
if not FileExists(''c:\windows\ppplog.txt'') then
MessageDlg(''日志文件不存在'',
mtInformation,[mbOk],0)
else
begin
AssignFile(logfile, ''c:\windows\ppplog.txt'');
Reset(logfile);
if Eof(logfile) then
begin
ShowMessage(''日志文件已为空'');
Exit;
end;
Table1.Open;
while not Eof(logfile) do
begin
Readln(logfile, Str1);
{‘log opened’作为计时的起点}
if Pos(''log opened'',Str1)< >0 then
begin
datestr:=copy(str1,1,10);
timestr:=copy(str1,12,8);
Table1.Append;
Table1.FieldValues[''begindate'']
:= StrToDate(datestr);
Table1.FieldValues[''begintime'']
:= StrToTime(timestr);
Table1.Post;
end;
{‘log closed’作为计时的结束}
if Pos(''log closed'',str1)< >0 then
begin
datestr:=copy(str1,1,10);
timestr:=copy(str1,12,8);
table1.Last;
table1.Edit;
Table1.FieldValues[''enddate'']
:= StrToDate(datestr);
Table1.FieldValues[''endtime'']
:= StrToTime(timestr);
Table1.Post;
end;
Writeln(logbak,str1);
end;
Table1.close;
Rewrite(logfile);
CloseFile(logfile);
CloseFile(logbak);
end;
end;
---- 4、计算费用的过程

---- 在该过程中,对于Internet计费的半价问题(市话没有半
价),只考虑到了晚上九点以后早上七点以前,对于节假日、星期
六、星期天没有考虑,有兴趣的朋友可自我完善此程序

procedure TForm1.calcostExecute(Sender: TObject);
var
Year, Month, Day, Hour,
Min, Sec, MSec: Word;
Year1, Month1, Day1, Hour1,
Min1, Sec1, MSec1: Word;
tlen : integer;
tcost : Real;
begin
Table1.open;
while not Table1.Eof do
begin
{计算时长,以分钟为单位}
if Table1Enddate.IsNull then
tlen:=1
else
begin
DecodeDate(Table1.FieldValues
[''begindate''],year,month,day);
DecodeDate(Table1.FieldValues
[''enddate''],year1,month1,day1);
DecodeTime(Table1.FieldValues
[''begintime''],hour,min,sec,msec);
DecodeTime(Table1.FieldValues
[''endtime''],hour1,min1,sec1,msec1);
tlen:=((((((day1-day)*24+hour1)
-hour)*60+min1)-min)*60+sec1)-sec;
end;
if (tlen mod 60) > 0 then
tlen:=tlen div 60 +1
else
tlen := tlen div 60;
Table1.edit;
Table1.FieldValues[''timelen''] := tlen;
{市话三分钟算一次}
if (tlen mod 3) > 0 then
tcost := (tlen div 3 + 1)*0.24
else
tcost := (tlen div 3)*0.24;
Table1.FieldValues[''telcost''] := tcost;
if (hour >=21) or (hour< =7) then
Table1.FieldValues[''ispcost''] := tlen*0.05
else
Table1.FieldValues[''ispcost''] := tlen*0.1;
Table1.Next ;
end;
DbGrid1.Visible := True;
end;
---- 结束语

---- 通过上述过程,每次上网的费用都计算保存在数据库
internet.db中,我们可以再编一段查询程序,这样便可以清楚地随
时知道自己的上网花费了。根据上述思路编写的完整的程序,本人
已经试用了一段时间,觉得效果不错。 

  • 上一篇资讯: Delphi中的SendKeys函数
  • 下一篇资讯: Delphi4的窗口融合技术
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号