《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 其他 > 業(yè)界動(dòng)態(tài) > 用Java實(shí)現(xiàn)傳染病信息查詢分析系統(tǒng)

用Java實(shí)現(xiàn)傳染病信息查詢分析系統(tǒng)

2009-01-06
作者:譚廣鋒

一、引言?

??? 今年的SARS給人類一次襲擊。傳染病是一個(gè)普遍存在的問題,如何去利用傳染病數(shù)據(jù)和模型進(jìn)行分析判斷是一個(gè)值得思考的問題。對(duì)于傳染病的分析應(yīng)該是一個(gè)及時(shí)的報(bào)告分析過程,本系統(tǒng)是用JSP寫的一個(gè)MIS,能實(shí)現(xiàn)及時(shí)數(shù)據(jù)自動(dòng)更新、數(shù)據(jù)查詢和分析等功能,能為用戶的決策提供數(shù)據(jù)資料。?

二、編程思想、原理圖?

??? 本系統(tǒng)具有一般MIS的數(shù)據(jù)查詢功能——能對(duì)傳染病種類、病例和病情分別進(jìn)行查詢,而且能用現(xiàn)存的分析模型對(duì)具體情況進(jìn)行分析,以支持用戶的決策。本系統(tǒng)采用B/S結(jié)構(gòu),用戶只需要用瀏覽器就可以對(duì)傳染病種類、病例和病情分別進(jìn)行查詢和分析。系統(tǒng)的重點(diǎn)在于其自動(dòng)更新數(shù)據(jù)功能上。?

??? 這里,我們假設(shè)系統(tǒng)數(shù)據(jù)更新間隔期為一天。當(dāng)服務(wù)器運(yùn)行時(shí),同時(shí)建立自動(dòng)更新線程,對(duì)時(shí)間進(jìn)行監(jiān)視,當(dāng)一天過去時(shí),系統(tǒng)從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)并進(jìn)行更新,重新對(duì)數(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ù)庫(kù)設(shè)計(jì)?

??? 對(duì)于本系統(tǒng)的數(shù)據(jù),分為傳染病信息和傳染病模型兩部分。傳染病信息包括傳染病種類、病例和病情等數(shù)據(jù);傳染病模型則是對(duì)傳染病信息進(jìn)行分析用的模型數(shù)據(jù)。因此在建立數(shù)據(jù)庫(kù)的時(shí)候要同時(shí)考慮信息和模型兩方面。目標(biāo)數(shù)據(jù)庫(kù)腳本如下:?


?

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,?

)?


?

注:病例號(hào)代碼(***********):前三位為國(guó)家地區(qū)編碼,中間五位為疾病編碼,最后為病例編號(hào)。?

五、程序介紹?

??? [在這里主要介紹與系統(tǒng)自動(dòng)更新有關(guān)的類的程序的編寫,其他類從略。由于篇幅有限只列出類的方法和成員。]?

?

自動(dòng)更新監(jiā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ù)庫(kù)Url

String uid;//記錄數(shù)據(jù)庫(kù)用戶

String upw;//記錄數(shù)據(jù)庫(kù)密碼

AutoUpdateThread(){……}//從設(shè)置文件中讀取各成員的初始值

public void run(){

……

FileUpdate FU=new FileUpdate();//數(shù)據(jù)文件更新類對(duì)象

String tablename;

Connection con=null;

DataArray DA=new DataArray();//讀取數(shù)據(jù)信息類對(duì)象

KChart KC=new KChart();//曲線圖繪制類對(duì)象

……

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);//曲線圖重繪

……

}//對(duì)時(shí)間進(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ù)庫(kù)連接對(duì)象

public void Update(String tablename,String tablepath,String Url,String uid,String upw){……}//從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)對(duì)數(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é)束語

通過測(cè)試,本系統(tǒng)能夠自動(dòng)及時(shí)更新數(shù)據(jù)信息,并將數(shù)據(jù)以圖像的方式展現(xiàn)給用戶(如下圖),能建立模型對(duì)病情進(jìn)行分析?,F(xiàn)時(shí)本系統(tǒng)的重點(diǎn)放在及時(shí)反映數(shù)據(jù)和分析數(shù)據(jù),在維護(hù)更新接觸得并不多。本系統(tǒng)是在數(shù)據(jù)的維護(hù)和更新都比較完善的假設(shè)下建立的。假如失去了數(shù)據(jù)的維護(hù)和更新的可靠性,本系統(tǒng)亦將失去可靠性(對(duì)于用戶來說,反映出來的數(shù)據(jù)將是不完整的也并不是及時(shí)的)。所以若要進(jìn)行擴(kuò)展的話,系統(tǒng)的維護(hù)更新則是重點(diǎn)問題。

參考文獻(xiàn)?

1.《Java圖像編程實(shí)例庫(kù)》? Campesato? 電子工業(yè)出版社?

2.《Java完全探索》? Chuck Cavaness Geoff Friesen Brian Keeton 中國(guó)青年出版社?

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。