一、引言?
??? 今年的SARS給人類一次襲擊。傳染病是一個普遍存在的問題,如何去利用傳染病數(shù)據(jù)和模型進(jìn)行分析判斷是一個值得思考的問題。對于傳染病的分析應(yīng)該是一個及時的報告分析過程,本系統(tǒng)是用JSP寫的一個MIS,能實(shí)現(xiàn)及時數(shù)據(jù)自動更新、數(shù)據(jù)查詢和分析等功能,能為用戶的決策提供數(shù)據(jù)資料。?
二、編程思想、原理圖?
??? 本系統(tǒng)具有一般MIS的數(shù)據(jù)查詢功能——能對傳染病種類、病例和病情分別進(jìn)行查詢,而且能用現(xiàn)存的分析模型對具體情況進(jìn)行分析,以支持用戶的決策。本系統(tǒng)采用B/S結(jié)構(gòu),用戶只需要用瀏覽器就可以對傳染病種類、病例和病情分別進(jìn)行查詢和分析。系統(tǒng)的重點(diǎn)在于其自動更新數(shù)據(jù)功能上。?

??? 這里,我們假設(shè)系統(tǒng)數(shù)據(jù)更新間隔期為一天。當(dāng)服務(wù)器運(yùn)行時,同時建立自動更新線程,對時間進(jìn)行監(jiān)視,當(dāng)一天過去時,系統(tǒng)從數(shù)據(jù)庫中讀取數(shù)據(jù)并進(jìn)行更新,重新對數(shù)據(jù)文件進(jìn)行分析更新。用戶瀏覽到的總是最新的資料。在這里,我們的用戶主要瀏覽的是服務(wù)器端的數(shù)據(jù)文件(包括變化曲線,具體病情等)。?
三、開發(fā)環(huán)境和工具?
??? Windows 2000 Professional?? J-Creator?? DreamWeaver MX?
??? Resin-2.0.2?? Miscrosoft SQL Server 2000?? Rational Rose?
四、數(shù)據(jù)庫設(shè)計(jì)?
??? 對于本系統(tǒng)的數(shù)據(jù),分為傳染病信息和傳染病模型兩部分。傳染病信息包括傳染病種類、病例和病情等數(shù)據(jù);傳染病模型則是對傳染病信息進(jìn)行分析用的模型數(shù)據(jù)。因此在建立數(shù)據(jù)庫的時候要同時考慮信息和模型兩方面。目標(biāo)數(shù)據(jù)庫腳本如下:?
?
create database contagion?
傳染病種類列表?
create table diseaselist(?
??? dname varchar(200),?
??? descript varchar(255),?
??? dno varchar(5),?
??? firsttime datetime,?
??? headstream varchar(60),?
??? primary key(dno)?
??? )?
模型列表?
create table modellist(?
??? mname varchar(200),?
??? mno varchar(3),?
??? dno varchar(5) references diseaselist(dno),?
??? interface varchar(255),?
??? primary key(mno,dno)?
??? )?
病例列表?
create table cases(?
??? cno varchar(11),?
??? zip varchar(3),?
??? dno varchar(5) references diseaselist(dno),?
??? soai_name varchar(24),?
??? primary key(cno)?
??? )?
地區(qū)數(shù)據(jù)表?
create table place(?
??? pname varchar(60),?
??? zip varchar(3),?
??? population int,?
??? unit int,?
??? primary key(zip,pname)?
??? )?
病情表?
create table soai_table***********(?
soai_date datetime primary key,?
new int,?
total int?
cure int,?
totalcure int,?
death int,?
totaldeath int,?
patient int,?
)?
?
注:病例號代碼(***********):前三位為國家地區(qū)編碼,中間五位為疾病編碼,最后為病例編號。?
五、程序介紹?
??? [在這里主要介紹與系統(tǒng)自動更新有關(guān)的類的程序的編寫,其他類從略。由于篇幅有限只列出類的方法和成員。]?

//AutoUpdateThread
//Herroy Tan
//2003.6.27.
import java.io.*;
import java.util.Date;
import java.sql.*;
public class AutoUpdateThread extends Thread{
Date nowdate;//記錄當(dāng)前日期
String path;//記錄路徑
String Url;//記錄數(shù)據(jù)庫Url
String uid;//記錄數(shù)據(jù)庫用戶
String upw;//記錄數(shù)據(jù)庫密碼
AutoUpdateThread(){……}//從設(shè)置文件中讀取各成員的初始值
public void run(){
……
FileUpdate FU=new FileUpdate();//數(shù)據(jù)文件更新類對象
String tablename;
Connection con=null;
DataArray DA=new DataArray();//讀取數(shù)據(jù)信息類對象
KChart KC=new KChart();//曲線圖繪制類對象
……
FU.Update(tablename,path,Url,uid,upw);//更新數(shù)據(jù)文件
DA.getDataArray(Url,uid,upw,tablename);//讀取數(shù)據(jù)信息
KC.graphicsGeneration(DA.x,DA.y,DA.z,DA.length,path + "/" + tablename);//曲線圖重繪
……
}//對時間進(jìn)行監(jiān)控
}
數(shù)據(jù)文件更新類:
//FileUpdate
//Herroy Tan
//2003.6.28.
import java.io.*;
import java.sql.*;
public class FileUpdate{
Connection con=null;//數(shù)據(jù)庫連接對象
public void Update(String tablename,String tablepath,String Url,String uid,String upw){……}//從數(shù)據(jù)庫中讀取數(shù)據(jù)對數(shù)據(jù)文檔進(jìn)行更新
}
曲線圖繪制類:
//KChart
//Herroy Tan
//2003.6.20.
import java.io.*;
import java.util.*;
import com.sun.image.codec.jpeg.*;
import java.awt.image.*;
import java.awt.*;
public class KChart {
BufferedImage image;
public void createImage(String fileLocation){
try{
FileOutputStream fos = new FileOutputStream(fileLocation);
BufferedOutputStream bos = new BufferedOutputStream(fos);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos);
encoder.encode(image);
bos.close();
}
catch(Exception e){
System.out.println(e);
}
}
public void graphicsGeneration(int x[],int y[],int z[],int length,String fileLocation) {
……//繪制曲線圖過程略
chartGraphics.createImage(fileLocation + ".jpg");
}
}
六、結(jié)束語
通過測試,本系統(tǒng)能夠自動及時更新數(shù)據(jù)信息,并將數(shù)據(jù)以圖像的方式展現(xiàn)給用戶(如下圖),能建立模型對病情進(jìn)行分析?,F(xiàn)時本系統(tǒng)的重點(diǎn)放在及時反映數(shù)據(jù)和分析數(shù)據(jù),在維護(hù)更新接觸得并不多。本系統(tǒng)是在數(shù)據(jù)的維護(hù)和更新都比較完善的假設(shè)下建立的。假如失去了數(shù)據(jù)的維護(hù)和更新的可靠性,本系統(tǒng)亦將失去可靠性(對于用戶來說,反映出來的數(shù)據(jù)將是不完整的也并不是及時的)。所以若要進(jìn)行擴(kuò)展的話,系統(tǒng)的維護(hù)更新則是重點(diǎn)問題。

參考文獻(xiàn)?
1.《Java圖像編程實(shí)例庫》? Campesato? 電子工業(yè)出版社?
2.《Java完全探索》? Chuck Cavaness Geoff Friesen Brian Keeton 中國青年出版社?
