PHP+JAVA的程序 .....................
Java Program: /* PHP Program <?
以下程序为余姚塑料城期货交易数据的定时追踪分析程序
是对数据的初步分析,绘图分析则交给进一步的php程序来完成
本程序完成策划于2005-5-17(友谊日)
本程序可以作为K线图原始数据库
*/
import java.net.*;
import java.io.*;
import java.nio.*;
import java.text.*;
import java.util.*;
import java.util.Date;
import java.util.regex.*;
class suliao
{
final static int LINE=11;
public static void main(String args[])
{
String url="http://www.ex-cp.com//yy_data/quot.txt";
String url1="http://www.51kk7.com/Forum/User/CompanyInfo.aspx?companyId=0";
for(;;)
{
try
{
Thread.sleep(10000);
String ori[][]=new String[LINE][14];
int sta=0;
//
for(;;)
{
Thread.sleep(1000);
Date date;
SimpleDateFormat hua=new SimpleDateFormat("H m s");
String time=hua.format(date=new Date());
String[] hua1=time.split("\s");
int i=Integer.parseInt(hua1[0])*3600+Integer.parseInt(hua1[1])*60+Integer.parseInt(hua1[2]);
if(i<34100)
break;
if(i>39900)
break;
URL hp=new URL(url);
URLConnection hpCon=hp.openConnection();
int len=hpCon.getContentLength();
InputStream input=hpCon.getInputStream();
int c;
StringBuffer hu=new StringBuffer("");
String hu1[]=new String[LINE];
int k=0;
while(((c=input.read())!=-1)&&(--len>0))
{
if(c==10)
{
hu1[k]=hu.toString();
hu=new StringBuffer("");
k++;
}
else
{
char c1=(char)c;
hu.append(c1);
}
}
hu1[LINE-1]=hu.toString();
String hu2[][]=new String[LINE][14];
suliao he=new suliao();
for(int k1=0;k1<LINE;k1++)
hu2[k1]=he.zz(hu1[k1]);
/*
for(int k2=0;k2<10;k2++)
{
for(int k3=0;k3<14;k3++)
System.out.print(hu2[k2][k3]+"\t");
System.out.println("");
}
*/
int k2;
if(sta==0)
{
ori=hu2;
sta=1;
for(k2=0;k2<LINE;k2++)
he.writeinfo(hu2[k2],i);
}
else if(sta==1)
{
//he.writeinfo(hu2[0]);
//let's start the compare program,go go go
for(k2=0;k2<LINE;k2++)
{
//System.out.println(hu2[k2][12]+"-"+ori[k2][12]);
if(true)//he.zv(hu2[k2][12])!=he.zv(ori[k2][12]))
{
he.writeinfo(hu2[k2],i);
}
}
ori=hu2;
}
}
//
}
catch(Exception e)
{
//System.out.println("wrong wrong wrong!!!");
e.printStackTrace();
}
}
}
public String[] zz(String a)
{
String[] hello=a.split("\,");
for(int i=0;i<hello.length;i++)
hello[i]=hello[i].trim();
return hello;
}
public int zv(String a)
{
return Integer.parseInt(a);
}
public void writeinfo(String[] a,int i)//写入文本数据库中
{
Calendar cn=Calendar.getInstance();
int mon=cn.get(Calendar.MONTH)+1;
String dir=cn.get(Calendar.YEAR)+"-"+mon+"-"+cn.get(Calendar.DAY_OF_MONTH);
String file=cn.get(Calendar.YEAR)+"-"+mon+"-"+cn.get(Calendar.DAY_OF_MONTH)+"/"+a[0]+".txt";
File hu=new File(file);
File ha=new File(dir);
try
{
if(!ha.exists())
ha.mkdir();
if(!hu.exists())
hu.createNewFile();
//Date date;
//SimpleDateFormat hua=new SimpleDateFormat("H m s");
//String time=hua.format(date=new Date());
//String[] hua1=time.split("\s");
//int i=Integer.parseInt(hua1[0])*3600+Integer.parseInt(hua1[1])*60+Integer.parseInt(hua1[2]);
int k;
StringBuffer kv=new StringBuffer("");
for(k=0;k<14;k++)
{
kv.append(a[k]+"\t");
}
kv.append(i+"\n");
System.out.println(kv.toString());
FileWriter rar=new FileWriter(hu,true);
rar.write(kv.toString());
rar.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
$GO=$_POST['GO'];
if(!$GO)
$GO=$_GET['GO'];
if($GO==1)
{
$dir=$_POST['time'];
$file1=$_POST['file'];
$handle=opendir('./'.$dir);
print"<form action=index.php method=post>
<input type=hidden name=GO value=1>
时间:<input type=\"text\" value=\"$dir\" readonly name=\"time\" />
品种:<select name=file onChange=\"this.form.submit()\">
<option value=\"\">选择品种</option>";
while ($file = readdir($handle)) {
if(($file!=".")&&($file!=".."))
{
$file=explode(".",$file);
$file=$file[0];
echo "<option value=$file>$file</option>";
}
}
print"</select></form>";
closedir($handle);
if($file1)
{
print"<hr><img src=index.php?GO=2&time=$dir&file=$file1>";
}
}
elseif($GO==2)
{
set_time_limit(10);
$time=$_GET['time'];
$file=$_GET['file'].".txt";
$file1=explode(".",$file);
$str=$file1[0].':'.$time.' 绘制时间('.date("Y-m-d H:i:s").')';
$afile="./".$time."/".$file;
$a=file($afile);
for($i=0;$i<count($a);$i++)
{
$b=explode("\t",$a[$i]);
if($i==0)
{
$p=0;
$hu[$p][0]=$b[12];
$hu[$p][1]=$b[13];
$hu[$p][2]=$b[14];
$p++;
}
else
{
$b1=explode("\t",$a[$i-1]);
if($b[12]!=$b1[12])
{
$dis=$b[12]-$b1[12];
$hu[$p][0]=$dis;
$hu[$p][1]=$b[13];
$hu[$p][2]=$b[14];
$p++;
}
}
}
/*
echo"<table border=1><tr><td>成交量</td><td>报价</td><td>时间</td></tr>";
for($i=0;$i<$p;$i++)
{
$h=floor($hu[$i][2]/3600);
$h1=$hu[$i][2]-$h*3600;
$m=floor($h1/60);
$s=$h1-$m*60;
$TIME=$h.':'.$m.':'.$s;
echo"<tr><td>".$hu[$i][0]."</td><td>".$hu[$i][1]."</td><td>".$TIME."</td></tr>";
}
echo"</table>";
*/
//绘图开始
Header("Content-type: image/gif");
$im=imagecreate(600,400);
$backcolor=ImageColorAllocate($im,236,236,236);
$linecolor1=ImageColorAllocate($im,255,0,0);//涨区间线,红线
$linecolor2=ImageColorAllocate($im,0,255,0);//跌区间线,绿线
$linecolor3=ImageColorAllocate($im,0,0,255);//平区间线,蓝线
$linecolor4=ImageColorAllocate($im,247,198,166);//表格线
$linecolor5=ImageColorAllocate($im,156,54,143);//报价曲线
//$linecolor4=ImageColorAllocate($im,,,);
imagefill($im,0,0,$backcolor);
//标尺线开始(曲线部分)
imageline($im,30,10,30,110,$linecolor1);
imageline($im,30,110,30,210,$linecolor2);
imageline($im,30,110,570,110,$linecolor3);
imageline($im,570,110,570,10,$linecolor1);
imageline($im,570,110,570,210,$linecolor2);
imagestring($im,2,5,105,0,$linecolor3);
imagestring($im,2,572,105,0,$linecolor3);
for($i=0;$i<=4;$i++)
{
$up="+".(5-$i)*40;
$down="-".($i+1)*40;
imageline($im,30,(10+20*$i),570,(10+20*$i),$linecolor4);
imagestring($im,2,5,(5+20*$i),$up,$linecolor1);
imagestring($im,2,572,(5+20*$i),$up,$linecolor1);
imageline($im,30,(130+20*$i),570,(130+20*$i),$linecolor4);
imagestring($im,2,5,(125+20*$i),$down,$linecolor2);
imagestring($im,2,572,(125+20*$i),$down,$linecolor2);
}
$t[0]="9:30";
$t[1]="9:45";
$t[2]="10:00";
$t[3]="10:15";
$t[4]="10:30";
$t[5]="10:45";
$t[6]="11:00";
for($i=0;$i<=6;$i++)
{
if(($i!=0)&&($i!=6))
{
imageline($im,(30+90*$i),10,(30+90*$i),210,$linecolor4);
}
$t1=$t[$i];
imagestring($im,2,(15+90*$i),212,$t1,$linecolor3);
}
//标尺线开始(成交量部分)
for($i=0;$i<=5;$i++)
{
$ii=290+20*$i;
$iii=(5-$i)*10;
imageline($im,30,$ii,570,$ii,$linecolor4);
imagestring($im,2,5,$ii-5,$iii,$linecolor1);
imagestring($im,2,575,$ii-5,($iii*10),$linecolor3);
}
imageline($im,30,290,30,390,$linecolor4);
imageline($im,570,290,570,390,$linecolor4);
for($i=1;$i<=5;$i++)
{
$ii=30+90*$i;
imagedashedline($im,$ii,290,$ii,390,$linecolor4);
}
//标尺线结束
//曲线绘制开始
$a=file($afile);
for($i=0;$i<count($a);$i++)
{
$b=explode("\t",$a[$i]);
$b1=$b[13];
$b2=$b[14];
$x=($b2-34100)/10;
$y=-$b1*0.5+110;
if($i==0)
{
$x1=$x;
$y1=$y;
}
else
{
imageline($im,$x,$y,$x1,$y1,$linecolor5);
$x1=$x;
$y1=$y;
}
}
//成交量绘制开始
$sum=0;
for($i=0;$i<$p;$i++)
{
$y=390-2*$hu[$i][0];
$x=($hu[$i][2]-34100)/10;
imageline($im,$x,390,$x,$y,$linecolor1);
$sum+=$hu[$i][0];
$ysum=390-0.2*$sum;
if($i==0)
{
$x1=$x;
$y1=$ysum;
}
else
{
imageline($im,$x1,$y1,$x,$y1,$linecolor3);
imageline($im,$x,$y1,$x,$ysum,$linecolor3);
$x1=$x;
$y1=$ysum;
}
}
imageline($im,$x1,$y1,570,$y1,$linecolor3);
//结算价格曲线绘制
$sum=0;
$allprice=0;
for($i=0;$i<$p;$i++)
{
$sum+=$hu[$i][0];
$allprice+=$hu[$i][1]*$hu[$i][0];
if($sum==0)$nowprice=0;
else
$nowprice=$allprice/$sum;
$x=($hu[$i][2]-34100)/10;
$y=-$nowprice*0.5+110;
if($i==0)
{
$x1=$x;
$y1=$y;
}
else
{
imageline($im,$x1,$y1,$x,$y1,$linecolor1);
imageline($im,$x,$y1,$x,$y,$linecolor1);
$x1=$x;
$y1=$y;
}
}
imageline($im,$x1,$y1,570,$y1,$linecolor1);
//绘制结束
//************图片解释部分开始*******************//
$str0=iconv("GB2312","UTF-8",$str);
$str1=iconv("GB2312","UTF-8","上图红线表示结算价格线,紫线表示价格曲线,下图红线表示当时成交量,蓝线表示总成交量");
imagettftext($im,10,0,30,240,$linecolor1,"D:/winnt/Fonts/simhei.ttf",$str0);
imagettftext($im,10,0,30,255,$linecolor1,"D:/winnt/Fonts/simhei.ttf",$str1);
//************图片解释部分结束*******************//
ImageGif($im);
ImageDestroy($im);
}
else
{
//时间从2005-05-24开始
print"<form action=index.php method=post>
<input type=hidden name=GO value=1>
选择时间:
<select name=time>";
for($i=0;$i<100;$i++)
{
$time1=date("Y-n-j",mktime(0,0,0,date("m"),date("d")-$i,date("Y")));
$time2=date("Y-m-d",mktime(0,0,0,date("m"),date("d")-$i,date("Y")));
if(is_dir($time1))
print"<option value=\"$time1\">$time2</option>
";
}
print"</select>
<p>
<input type=submit name=submit value=提交>
</form>";
}
?>