緒論
----目前Internet發展迅速,隨著網絡技術不斷提高,網上內容極大豐富,從高科技到衣食住行應有盡有,網上用戶也從當初的科研人員發展到了各行各業的人士,甚至平常百姓、家庭主婦。有關專家推測,到2000年Internet的用戶將超過億。可以說,Internet是一個廣闊的市場。如何充分利用這個工具,加速信息的流通、發布,是許多商業人士思考的問題。目前許多出版社,雜志社紛紛出台在網上發布、刊登信息。
----總的看來,根據這些信息發布的特點可以分為三類:
----(1)站點成熟,功能強大,具備多種查詢方式。它們一般利用大型數據庫軟件,如MSSQLServer、Oracle、sybase。這是目前一些大的信息發布商所采取的方案。一般造價比較高,光這些軟件的費用就由10,000~45,000,另外還得專門配備系統治理員。這遠是一些小單位、小企業所能承受的。
----(2)站點簡單,具有簡單查詢功能。通常是由軟件公司編寫建立的數據庫,性能不一定很成熟,而且價格約20,000左右。一般小企業也不能承受。另外程序開發需要時間,不能馬上進行運轉。
----(3)站點簡單,沒有數據庫,無或極少具有查詢功能,一般是信息羅列,一般信息更新周期長。維護麻煩,每次更新的工作量大。
----如何找到一種簡單、迅速、便宜的信息發布方式。我在建設"中國改革"網站的時候,也碰到過這個問題,經過一些嘗試,建立了一一個解決方案。
方案背景:
----信息發布《每日財經信息》,共有26個欄目,每個欄目10~40條信息,每條信息200~600字。每日信息量100K,需要每個工作日更新。由於單位經費緊張,任務要求的時間較緊。短時間內不可能找公司編輯數據庫軟件或上大型數據庫。但領導要求該信息得能夠按照日期查詢,並能夠提供訪問權限,實行收費。
方案考慮:
----1.原文件格式的處理
----由於信息源為純文本文件按照各個欄目存放在相應的子目錄內,要將它轉換為Html文件格式以便能以更好的方式在網絡上顯示。
----2.每日信息目錄索引的建立
----為方便訪問者的查閱,有必要建立一個信息的索引。提供顯示每條信息的標題或簡介。並且訪問者可以直接通過索引查閱到相應文章。這就要求索引上必須有與相應信息文本的超連接。
----3.日期查詢的實現
----對於信息的日期查詢,考慮到信息存儲空間的限制,只提供一定時間段的信息。由於這些時間段是動態的,為了不使查詢工作繁瑣,以及保持顯示界面的簡潔明了,動態更新日期列表。並使其與相應的信息目錄索引進行聯結。
----4.信息的訪問權限
----使用最簡單的加密方法,將信息文本放在固定的子目錄中,對服務器進行設置,設制對該目錄的訪問權限以實現對信息的訪問控制。
解決方法(以九月七日的信息處理為例):
----編寫程序html.exe。其功能是:
----(1),讀取當日信息日期。
----(2),查找相應日期的源文件存放目錄,讀取目錄下相應的文件。
----(3),提出文件的標題字符串,放入當日的目錄索引文件中。(例如index907.html)在放入的時候對它進行處理建立相應的超連接。另外對目錄索引文件進行處理,加入背景、及書簽方便閱讀。
----(4),對信息的原純文本文件進行處理,加入背景、字體等修飾,使之成為標准的HTML文件。
----(5),生成當日的日期查詢列表:修改上次的列表,刪除最早的日期,增加當日日期,保證以一個固定的時間段的信息量。這樣卻保有一個穩定的存儲空間,並且避免出現由於非工作日無信息而導致的用戶連接找不到相應地址的情況。
----通過程序html.exe的運行對原信息進行相應處理,生成三組文件:
----1-信息文本,2-目錄索引,3-日期索引。
----每日將生成的三組文件上載到相應的子目錄即實現了對信息的每日更新。
方案的優點:
每日的維護簡單,操作輕易,一般操作員都能很快上手。
整個操作安全穩定,不會出現連接中斷網址找不到的情況。
費用很低,不需要購買大型數據庫軟件和編寫專業的查詢軟件。
實現時間短,能夠在較短的時間裡實現信息的動態網上發布。
程 序 清 單:
#include < stdio.h >
#include < string.h >
#include < conio.h >
#define LANXMAX 150
FILE *FileR,*FileW,*FileWIndex;
char Path1[]="c:htmlmrcj";
char Path2[]="c:htmlmrcj xt";
char Path3[50];
char Path4[]="c:htmlccrindex.htm";
char Path5[]="c:htmlhtml.ini";
char Path6[]="c:htmlhtml-1";
char Path7[]="c:htmlhtml-2";
char Month[10],Date[10];
char FileName[50];
char FileNameIndex[20];
char FilePath1[50]; //...08
char FilePath2[50]; //...08jxxta
char WriteFileName[50];
char IndexFileName[50];
char FileBak[5];
char LanMu;
char Time[20];
char YEAR;
char IndexLANMU[6][19]={"中外財經要聞","法律法規政策","經濟形勢分析",
"企業改革透視","社會保障制度","改革發展研究"};
int FileNum;
int Yea,Mon,Dat;
void FileIni()
{
switch(Yea)
{
case 98:
case 1998:
YEAR='B';
break;
case 99:
case 1999:
YEAR='J';
break;
default: YEAR='B';
}
if(Yea< 100) Yea+=1900;
FileNum=0;
sprintf(FilePath1,"c:fl\%02d",Dat);
sprintf(FileBak,".%1X%02d",Mon,Dat);
}
void AddFileProc(int num)
{
char FLanRead[LANXMAX];
char MainLan[LANXMAX];
char FENLEI[50];
char IndexLan[150];
int i;
sprintf(FENLEI,".中國改革.每日財經信息.%02d月%02d日
<br>
<br>
",Mon,Dat);
printf("*");
sprintf(FileName,"%sjxxt%c%03d%s",FilePath2,LanMu,num,FileBak);
if(!(FileR=fopen(FileName,"rb")))
{
printf("cannot open this file
");
return;
}
//-------------add htmlhead------------
fputs("< html >
< body background="../../../../images/bk_creform.jpg">
",FileW);
//-------------add htmlhead------------
fputs(FENLEI,FileW);
fgets(FLanRead,LANXMAX-5,FileR);
//---------add index procedure---------
sprintf(IndexLan,"< a href="txt/%02d/%s" target="new">%s<br>
",Dat,FileNameIndex,FLanRead);
//fputs("< br >",FileWIndex);
fputs(IndexLan,FileWIndex);
//---------add index procedure---------
while(!feof(FileR))
{
fputs("< br >",FileW);
fputs(FLanRead,FileW);
strcpy(FLanRead,"");
fgets(FLanRead,LANXMAX-5,FileR);
}
FLanRead[strlen(FLanRead)-1]='