当前位置:首页 > 网络编程 > 软件语言 > DELPHI > 编写个人Internet上网计费软件

编写个人Internet上网计费软件

点击次数:63 次 发布日期:2008-11-09 08:37:42 作者:源代码网
源代码网推荐
广告载入中
神龙汽车公司组织系统部 黎云华
源代码网推荐 ---- 问题的提出?
源代码网推荐
源代码网推荐 ---- 随着Internet的日益普及,到Internet网上冲浪的人是越来越
源代码网推荐 多了,对于手头并不是很宽裕的网民特别是在家里上网的网民来
源代码网推荐 说,如果能及时知道自己上网已经花了多少钱,那么,每次到ISP那
源代码网推荐 缴纳费用时,至少可以做到心中有数。下面介绍一种非常方便的方
源代码网推荐 法,根据这个方法的原理,用VB、Delphi之类的软件很容易很快编
源代码网推荐 写出一个不错的个人Internet上网计费软件。
源代码网推荐
源代码网推荐 ---- 工作原理
源代码网推荐
源代码网推荐 ---- 现在一般个人上网,都是运行Windows 95/98平台,采用Modem
源代码网推荐 拨号上网方式,在Windows 95/98中,配置“拨号服务器”时,拨号
源代码网推荐 服务器有一个属性,就是是否记录日志文件,其默认值是“否”。
源代码网推荐 对于它,平常我们可能都没太注意。我们把它改成“是”,这样,
源代码网推荐 在每次上网后,Windows 95就会在其安装目录下(通常就是C盘的
源代码网推荐 Windows目录),把上网连通的时间以及上网过程中发生的事件记录
源代码网推荐 在ppplog.txt日志文件中。
源代码网推荐
源代码网推荐 ---- ppplog.txt是一个标准的文本文件,在此文件中,上网发生的每
源代码网推荐 个事件记录占有一行,格式为:
源代码网推荐
源代码网推荐 日期 时间 发生的事件
源代码网推荐 |---------|-----------|-|---------------------|
源代码网推荐 12-19-1998 21:54:31.25
源代码网推荐 - Microsoft 拨号网络适配器日志已打开。
源代码网推荐 12-19-1998 21:54:31.25
源代码网推荐 - 服务器类型是 PPP (点到点协议)。
源代码网推荐 .
源代码网推荐 .
源代码网推荐 .
源代码网推荐 12-19-1998 22:44:49.08
源代码网推荐 - Microsoft 拨号网络适配器日志已关闭。
源代码网推荐 ---- 上述内容是简体中文Windows 98的ppplog.txt文件格式,对于
源代码网推荐 Windows 95,基本格式是一样的,只是事件部分是英文的。
源代码网推荐
源代码网推荐 日期 时间 发生的事件
源代码网推荐 |---------|-----------|-|---------------------|
源代码网推荐 12-15-1998 16:34:27.71
源代码网推荐 - Remote access driver log opened.
源代码网推荐 12-15-1998 16:34:27.71
源代码网推荐 - Installable CP VxD SPAP is loaded
源代码网推荐 12-15-1998 16:34:27.71
源代码网推荐 - Server type is PPP (Point to Point Protocol).
源代码网推荐 .
源代码网推荐 .
源代码网推荐 .
源代码网推荐 12-15-1998 16:58:30.05
源代码网推荐 - Remote access driver log closed.
源代码网推荐 ---- 对应于一次正常的上网过程,Windows 95/98必定会在ppplog.
源代码网推荐 txt文件中记录下包括什么时候日志文件已打开以及什么时候日志文
源代码网推荐 件已关闭的完整过程,这样,我们每次上网后读取ppplog.txt文
源代码网推荐 件,把含有“日志已打开”字符串的事件记录的时间作为我们计时

源代码网推荐 的起点,读取日期、时间,把含有“日志已关闭”字符串的事件记录
源代码网推荐 的时间作为我们计时的结束(对于Windows 95,字符串分别取”log
源代码网推荐 opened”和”log closed”),读取日期、时间,算出其时间差,
源代码网推荐 以该时间差作为时长,按照市话费每三分钟算一次,每次0.24元,
源代码网推荐 Internet费,每一分钟算一次,每次0.10元(我们这的收费标准),便
源代码网推荐 可以算出每次的花费费用了。我们可以把每次计算的结果保存在一
源代码网推荐 个数据库中,那么就可以随时查询自己的花费情况了。
源代码网推荐
源代码网推荐 ---- 具体实现
源代码网推荐
源代码网推荐 ---- 下面是我的具体实现过程,程序用Delphi编程实现。
源代码网推荐
源代码网推荐 ---- 1、配置拨号服务器以便记录日志文件
源代码网推荐
源代码网推荐 ---- 1.1、从任务栏上选取“开始”-〉“设置”-〉“控制面
源代码网推荐 板”。
源代码网推荐
源代码网推荐 ---- 1.2、点击“网络”图标,出现网络配置对话框。
源代码网推荐
源代码网推荐 ---- 1.3、在网络组件中选择“拨号服务器”,按“属性”按钮,
源代码网推荐 出现“拨号服务器”属性对话框。
源代码网推荐
源代码网推荐 ---- 1. 4、选择其“高级”选项,然后选择“记录日志文件”项,
源代码网推荐 在其右边的设置值中选择 “是”。按“确定”按钮,接着系统提示
源代码网推荐 需要重新启动机器,重新启动后,设置就起作用了,以后每次上
源代码网推荐 网,都会把上网时间记录在日志文件ppplog.txt文件中。
源代码网推荐
源代码网推荐 ---- 2、 建立一数据库internet.db
源代码网推荐
源代码网推荐 ---- 数据库用来保存每次的计费数据,方便查询。
源代码网推荐
源代码网推荐 ---- 利用Delphi软件包中的DataBase DeskTop程序建立
源代码网推荐
源代码网推荐 ---- 数据库中包含有下列字段:
源代码网推荐
源代码网推荐 字段名 类型 说明
源代码网推荐 Begindate Date 起始日期
源代码网推荐 Begintime Time 起始时间
源代码网推荐 Enddate Date 结束日期
源代码网推荐 Endtime Time 结束时间
源代码网推荐 Timelen Number 时长
源代码网推荐 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:windowsppplog.bak");
源代码网推荐 if not FileExists("c:windowsppplog.bak") then
源代码网推荐 Rewrite(logbak)
源代码网推荐 else
源代码网推荐 Append(logbak);
源代码网推荐 if not FileExists("c:windowsppplog.txt") then
源代码网推荐 MessageDlg("日志文件不存在",
源代码网推荐 mtInformation,[mbOk],0)
源代码网推荐 else
源代码网推荐 begin
源代码网推荐 AssignFile(logfile, "c:windowsppplog.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; 软件开发网 www.mscto.com
源代码网推荐 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中,我们可以再编一段查询程序,这样便可以清楚地随
源代码网推荐 时知道自己的上网花费了。根据上述思路编写的完整的程序,本人
源代码网推荐 已经试用了一段时间,觉得效果不错。 软件开发网 www.mscto.com


源代码网推荐

源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华