⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 monthdao.java

📁 网站流量查询系统 基本上每个网站都会统计访问率。网站访问量是每个网站所有者追求的目标
💻 JAVA
字号:
package com.dao;

import java.awt.*;
import javax.imageio.*;
import java.awt.image.*;
import java.sql.*;
import com.domain.MonthForm;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;

public class MonthDao {
    private JDBConnection connection = null;
    public MonthDao() {
        connection = new JDBConnection();
        this.connection.creatConnection(); //利用构造方法调用类中的对象对数据库创建连接
    }

    public int rate(int month, int number) {
        int rate = 0;
        rate = month * 400 / number;
        return rate;
    }


//计算所有的月份流量的和
    public int sum(int year) {
        int number = 0;
        String sql = "select sum(one+two+three+four+five+six+seven+eight+nine+ten+eleven+twleve) as number from tb_month where years='" +
                     year + "'";
        ResultSet rs = connection.executeQuery(sql);
        try {
            while (rs.next()) {
                number = rs.getInt("number");
            }
        } catch (SQLException ex) {
        }
        return number;

    }

//查询所有的纪录
    public List showMonth(int year) {
        List list = new ArrayList();
        MonthForm form = null;
        String sql = null;
        if (year < 2000) {
            sql = "select * from tb_month order by years";

        } else {
            sql = "select * from tb_month where years=" + year + "";
        }
        ResultSet rs = connection.executeQuery(sql);
        try {
            while (rs.next()) {
                form = new MonthForm();
                form.setYear(rs.getInt(1));
                list.add(form);
            }
        } catch (SQLException ex) {
        }
        connection.closeConnection();
        return list;
    }

    public void draw(int year,HttpServletResponse response) {
        // 清空缓冲区
       response.reset();
       // 注意这里的MIME类型,设置返回客户端的响应数据内容类型为图象,格式为png
       response.setContentType("image/png");

        // 创建一个 600X400 的图像
        int width = 600, height = 400;
        BufferedImage image = new BufferedImage(width, height,
                                                BufferedImage.TYPE_INT_RGB);
        // 创建Java2D对象,Java2D即对二维图表的支持
        Graphics2D g2d = image.createGraphics();
        //设置背景色并填充
        g2d.setPaint(Color.WHITE);
        g2d.fillRect(0, 0, width, height);
        //设置图框色并填充
        g2d.setPaint(Color.ORANGE);
        g2d.fillRoundRect(0, 0, width, height, 50, 50);
        //设置绘图区颜色并填充
        g2d.setPaint(Color.WHITE);
        g2d.fillRect(60, 80, 480, 260);
        //定义标题
        g2d.setColor(Color.RED); //设置字体颜色
        g2d.setFont(new Font("华文隶书", Font.BOLD, 25)); //设置字体及大小
        g2d.drawString(year + "年每个月占全年网站流量统计", 80, 60); //设置文字内容及输出位置
        // 创建虚线笔划,设置线条颜色
        float[] dashes = {3.f};
        BasicStroke bs = new BasicStroke(1.0f, BasicStroke.CAP_ROUND,
                                         BasicStroke.JOIN_ROUND, 10, dashes, 0);
        g2d.setStroke(bs);
        g2d.setPaint(Color.BLACK);
        //绘制标准线
        int x = 100;
        for (int i = 0; i < 11; i++) {
            g2d.drawLine(x, 80, x, 340);
            x = x + 40;
        }
        int y = 106;
        for (int i = 0; i < 9; i++) {
            g2d.drawLine(60, y, 540, y);
            y = y + 26;
        }
        //绘制坐标轴文字
        g2d.setColor(Color.BLACK); //设置字体颜色
        g2d.setFont(new Font("华文隶书", Font.BOLD, 10)); //设置字体及大小
        //x轴
        String[] n = {"  一月", "  二月", "  三月", "  四月", "  五月", "  六月", "  七月",
                     "  八月", "  九月", "  十月", "十一月", "十二月"};
        x = 66;
        for (int i = 0; i < 12; i++) {
            g2d.drawString(n[i], x, 350); //设置文字内容及输出位置
            x = x + 40;
        }
        //y轴
        String[] m = {"100%", " 90%", " 80%", " 70%", " 60%", " 50%", " 40%", " 30%",
                     " 20%", " 10%", "  0%"};
        y = 83;
        for (int i = 0; i < 11; i++) {
            g2d.drawString(m[i], 32, y); //设置文字内容及输出位置
            y = y + 26;
        }
        /*=================================================================*/
        int[] jsp = new int[12];
        int number = this.sum(year); //计算全年的总和
        String sql = "select * from tb_month where years='" + year + "'";
        ResultSet rs = connection.executeQuery(sql);
        try {
            while (rs.next()) {
                jsp[0] = rs.getInt(2) * 100 / number;
                jsp[1] = rs.getInt(3) * 100 / number;
                jsp[2] = rs.getInt(4) * 100 / number;
                jsp[3] = rs.getInt(5) * 100 / number;
                jsp[4] = rs.getInt(6) * 100 / number;
                jsp[5] = rs.getInt(7) * 100 / number;
                jsp[6] = rs.getInt(8) * 100 / number;
                jsp[7] = rs.getInt(9) * 100 / number;
                jsp[8] = rs.getInt(10) * 100 / number;
                jsp[9] = rs.getInt(11) * 100 / number;
                jsp[10] = rs.getInt(12) * 100 / number;
                jsp[11] = rs.getInt(13) * 100 / number;
            }
        } catch (SQLException ex1) {
        }
        g2d.setPaint(Color.GREEN);
        x = 70;
        for (int i = 0; i < 12; i++) {
            g2d.fillRect(x, 340 - jsp[i] * 26 / 10, 20, jsp[i] * 26 / 10);
            x = x + 40;
        }
        // 部署图形
        g2d.dispose();
        // 利用ImageIO类的write方法对图像进行编码,生成png格式的图象
              ServletOutputStream sos = null;
              try {
                  sos = response.getOutputStream();
                  ImageIO.write(image, "PNG", sos);
                  sos.close();
              } catch (Exception ex) {
        }
    }


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -