<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 24  文章 - 6  trackbacks - 0
    <2005年3月>
    272812345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    常用鏈接

    隨筆分類(23)

    積分與排名

    • 積分 - 13833
    • 排名 - 2083

    最新評論

    使用JFreeChart制作圖形報表

    Bromon原創(chuàng) 請尊重版權(quán)

    一、需求分析

    我家領(lǐng)導(dǎo)認(rèn)為,在是否嫁給我做老婆的問題上,應(yīng)該有更加科學(xué)的決策模型。如果能夠?qū)⒚刻斓母星樯盍炕乙詴r間為X軸,生成數(shù)據(jù)報表,就可以為她的決策提供數(shù)據(jù)支持。秉著以領(lǐng)導(dǎo)意志為導(dǎo)向的基本原則,開發(fā)了本軟件,為家庭信息化建設(shè)提供新的思路。

    二、系統(tǒng)概述

    本系統(tǒng)的基本功能是,接收用戶每天的輸入并保存,月/季度/年度末生成數(shù)據(jù)折線圖、周期環(huán)比柱狀圖。由于投入資金有限(不讓我往外掏錢就已經(jīng)很不錯了),所以本軟件的1.0版采用單機應(yīng)用程序,使用Access數(shù)據(jù)庫。如果市場推廣情況良好,不排除推出大型FRP軟件(Family  Resource  Project)的可能,屆時將包含KRMKin Relation Manage,家族關(guān)系管理)、HAHouse Automatization,家庭自動化)等模塊,利用強大的J2EE框架,為家庭信息化建設(shè)提供完整解決方案。

           程序生成的目標(biāo)圖片效果如下:

          

    三、系統(tǒng)要求

    1、  開源工具包jfreechart-1.0.0-pre1.jar和它自己要使用的工具包jcommon-1.0.0-pre1.jar

    下載地址:http://sourceforge.net/projects/jfreechart/

    2、  女朋友一個。

    請自行準(zhǔn)備,暫不提供下載

    下面主要講述系統(tǒng)是如何從數(shù)據(jù)庫中提取數(shù)據(jù),然后生成圖形報表的。(終于進入正題了。)

    數(shù)據(jù)表結(jié)構(gòu):

           curve_id                流水號                  自動增長

           curve_owner         varchar(30)           區(qū)分是老公的數(shù)據(jù)還是老婆的數(shù)據(jù)

           curve_cent            double                   當(dāng)天分?jǐn)?shù)

           curve_year            int                        

           curve_month         int                        

           curve_day             int                       

           note                      text                       備注

           用于封裝每個分?jǐn)?shù)的值對象如下:

    package org.bromon.fiona.curve.dao;

    import java.util.
    *
    ;

    public class
     CurveVo

    {
           
    private  int
      year;

           
    private  int
      month;

           
    private  int
      day;

        
    private  double
      cent;

        
    private
      String  note;

    private
      String  owner;

    //get/set方法

    }


    生成圖片的關(guān)鍵代碼如下:

    package org.bromon.fiona.curve.util;

    //一大堆import


    public class DrawPic

    {

           
    /**

    *根據(jù)時間查詢數(shù)據(jù),將所得到的數(shù)據(jù)封裝成TimeSeriesCollection對象

    *TimeSeriesCollection是JfreeChart中定義的類的對象

    *本方法將被后面的draw方法調(diào)用

    *@param int 要查詢哪一年

    *@param int 要查詢哪一月

    *@return TimeSeriesCollection

    */


           
    public TimeSeriesCollection getData(int year,int month)

           
    {

                  
    //
    fiona的數(shù)據(jù)集合,其中存放的是上面定義過的CurveVo值對象

    //這些值對象的值來自于數(shù)據(jù)庫,相關(guān)代碼是最常見的jdbc內(nèi)容,請自行完成


                  List dataOfFiona
    =new ArrayList();

                  
    //Bromon的數(shù)據(jù)集合


    List dataOfBromon
    =new ArrayList();

    //構(gòu)造要返回的對象


    TimeSeriesCollection result
    =new TimeSeriesCollection();

    //這兩個對象,分別對應(yīng)一條曲線,構(gòu)造函數(shù)的參數(shù),將顯示在圖片的下方


    TimeSeries fiona
    =new TimeSeries("fiona");

    TimeSeries bromon
    =new TimeSeries("bromon"
    );

    CurveVo cv
    =null
    ;

    //遍歷Fiona的數(shù)據(jù)集,填充fiona對象


    for(int i=0;i<dataOfFiona.size();i++)

    {

    cv
    =(CurveVo)dataOfFiona.get
    (i);

    fiona.add(
    new TimeSeriesDataItem(new Day(cv.getDay(),cv.getMonth(),cv.getYear()), new
     Double(cv.getCent())));

    }


    result.addSeries(fiona);

    for(int i=0;i<dataOfBromon.size();i++)

    {

    cv
    =(CurveVo)dataOfBromon.get
    (i);

    bromon.add(
    new TimeSeriesDataItem(new Day(cv.getDay(),cv.getMonth(),cv.getYear()),new
     Double(cv.getCent())));

    }


    result.addSeries(bromon);

           }


           
    //生成圖表的方法,圖表數(shù)據(jù)來自上面的getData方法

           
    public String draw(int y,int m)

        
    {

            String result
    =null
    ;

            String title
    ="Bromon & Fiona的愛情走勢圖"
    ;

            String subTitle
    =y+""+m+""
    ;

            String domain
    ="時間";//x軸


            String range
    ="分值";//y軸

            TimeSeriesCollection data 
    =this.getData(y,m);

            JFreeChart chart 
    =ChartFactory.createTimeSeriesChart(title,domain,range,data,true,true,false
    );

            TextTitle subtitle 
    =new TextTitle(subTitle, new Font("宋體", Font.BOLD, 20
    ));

            chart.addSubtitle(subtitle);

            chart.setTitle(
    new TextTitle(title, new Font("宋體", Font.ITALIC, 20
    )));

            chart.setBackgroundPaint(
    new GradientPaint(00, Color.white, 01000
    , Color.white));

            c.setTime(
    new
     Date());

            String fileName
    ="c:\\pics\\"+y+""+m+".jpg";//保存為位置


            
    try

            
    {

                File f
    =new File("c:\\pics"
    );

                
    if(!
    f.exists())

                
    {

                    f.mkdir();

                }


                ChartUtilities.saveChartAsJPEG(
    new File(fileName), 100, chart, 1000600);//寬1000,高600

            }
     catch (Exception e)

            
    {

                e.printStackTrace();

            }


            result
    =fileName;

            
    return
     result;

    }


    //ok,測試一下

    public static void main(String args[])

    {

    new DrawPic().draw(2005,3
    );

    }


    }

      生成環(huán)比柱狀圖的相關(guān)內(nèi)容,整理后放出。

       JfreeChart的繪圖功能很強大,但是API的編寫有些地方讓人很不舒服,很多元素要定制不容易。如果有更好的API的話,我很愿意使用,當(dāng)然,免費是個很重要的前提。

    posted on 2005-03-28 14:05 Sometimes Java 閱讀(1925) 評論(0)  編輯  收藏 所屬分類: Tech Flow
    主站蜘蛛池模板: 久久亚洲国产中v天仙www| 亚洲免费无码在线| 久久笫一福利免费导航| 天天天欲色欲色WWW免费| 日韩视频免费一区二区三区| 国产一区二区三区在线免费 | 亚洲美女中文字幕| 亚洲国产精品无码久久九九大片| 一道本不卡免费视频| 永久免费A∨片在线观看| 日韩精品成人无码专区免费 | 亚洲一区二区三区香蕉| 久久精品国产亚洲av麻豆图片 | 成年人免费观看视频网站| 亚洲成AV人片在线观看无码| 久久99毛片免费观看不卡| 国产最新凸凹视频免费| 亚洲性色高清完整版在线观看| yellow免费网站| 久久亚洲高清观看| 5g影院5g天天爽永久免费影院| 免费国产人做人视频在线观看| 亚洲天堂一区二区| GOGOGO免费观看国语| 午夜老司机免费视频| 老司机午夜精品视频在线观看免费| 国产国产人免费视频成69堂| 亚洲综合伊人久久大杳蕉| 99亚洲乱人伦aⅴ精品| 十九岁在线观看免费完整版电影| 亚洲精品国产电影| 99re热精品视频国产免费| 亚洲不卡av不卡一区二区| 中文字幕乱码免费视频| 国产精品自拍亚洲| 国产男女猛烈无遮挡免费视频网站 | 久久久精品国产亚洲成人满18免费网站 | 亚洲精品第五页中文字幕| 久操免费在线观看| 久久亚洲免费视频| 久久精品电影免费动漫|