烈士简单数据统计

 Response对象:使用 `response` 对象实现简单的数据统计与分析。

inputamounts.jsp

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %> 
<HTML><body  background =../image/back.gif>
<style>
   #textStyle{
      font-family:宋体;font-size:18;color:blue 
   }
</style>
<p id="textStyle">
<form action="dataAnalysis.jsp"  method=post >
输入对烈士信息了解有关数据:<br>
烈士信息了解程度调查总人数:<input type="text" name="totalAmounts" value=1 size=12 /><br>
不了解也不知道:<input type="text" name="amount0"   value=1 size=12 /><br>
知道一些但不多:<input type="text" name="amount1"    value=1 size=12 /><br>
知道许多:<input type="text" name="amount2"    value=1 size=12 /><br>
愿意花时间去了解他(她)们:<input type="text" name="amount3"    value=1 size=12 /><br>
以他(她)们为榜样学习:<input type="text" name="amount4"     value=1 size=12 /><br>
<input type="submit" name="submit" id="textStyle" value="看数据分析"/><br>
<input type="submit" name="submit" id="textStyle" value="看数据饼图"/>
</form> 
</p></body></HTML>
 

dataanalysis.jsp

<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %> 
<%@ page import="java.awt.*" %>
<%@ page import="java.io.OutputStream" %>
<%@ page import="java.awt.image.BufferedImage" %>
<%@ page import="java.awt.geom.*" %>  
<%@ page import="javax.imageio.ImageIO" %>
<%  request.setCharacterEncoding("utf-8"); 
    String submitValue = request.getParameter("submit");
    String totalAmounts = request.getParameter("totalAmounts"); 
    String amounts0 = request.getParameter("amount0");
    String amounts1 = request.getParameter("amount1");
    String amounts2 = request.getParameter("amount2");
    String amounts3 = request.getParameter("amount3");
    String amounts4 = request.getParameter("amount4");
    int amounts0_number = Integer.parseInt(amounts0); 
    int amounts1_number = Integer.parseInt(amounts1); 
    int amounts2_number = Integer.parseInt(amounts2); 
    int amounts3_number = Integer.parseInt(amounts3);
    int amounts4_number = Integer.parseInt(amounts4); 
    int totalAmounts_number = Integer.parseInt(totalAmounts);  
    boolean isRight = totalAmounts_number == amounts0_number+amounts1_number+
                            amounts2_number+amounts3_number+amounts4_number ;
    if(isRight == false) {
        response.sendRedirect(" inputamount.jsp"); 
        return;
    }
    double percent0 = (double)amounts0_number/totalAmounts_number;
    double percent1 = (double)amounts1_number/totalAmounts_number;
    double percent2 = (double)amounts2_number/totalAmounts_number;
    double percent3 = (double)amounts3_number/totalAmounts_number;
    double percent4 = (double)amounts4_number/totalAmounts_number;
    double angSt = 0;
    double angExt = 0;
    int x = 450,y =50;
    if(submitValue.equals("看数据饼图")){
        response.setContentType("image/jpeg");//response更改相应用户的MIME类型
        int width=1000, height=500;
        BufferedImage image = 
        new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
        Graphics g = image.getGraphics();
        g.fillRect(0, 0, width, height);
        Graphics2D g_2d=(Graphics2D)g; 
        Arc2D arc=new  Arc2D.Double(0,0,400,400,0,360,Arc2D.PIE);
        arc.setAngleStart(angSt);     //设置饼弧的开始角度
        angExt = -percent4*360;
        arc.setAngleExtent(angExt);  //设置饼弧度数
        g_2d.setFont(new Font("",Font.PLAIN,22));
        g_2d.setColor(Color.black);
        g_2d.drawString("黑色以他(她)们为榜样学习",x,y);
        g_2d.fillRect(x+150,35,30,15);
        g_2d.fill(arc);              //绘制不及格的饼图
        angSt = -percent4*360;
        angExt = -percent3*360;
        arc.setAngleStart(angSt);     //设置饼弧的开始角度
        arc.setAngleExtent(angExt);  设置饼弧度数
        g_2d.setColor(Color.green);
        g_2d.drawString("绿色 愿意花时间去了解他(她)们",x,y=y+30);
        g_2d.fillRect(x+150,65,30,15);
        g_2d.fill(arc);              //绘制60-69分的饼图
        angSt = -(percent4*360+percent3*360);
        angExt = -percent2*360;
        arc.setAngleStart(angSt);     //设置饼弧的开始角度
        arc.setAngleExtent(angExt);  设置饼弧度数
        g_2d.setColor(Color.yellow);
        g_2d.drawString("黄色 知道许多",x,y=y+30);
        g_2d.fillRect(x+150,95,30,15);
        g_2d.fill(arc);              //绘制70-79分的饼图
        angSt = -(percent4*360+percent3*360+percent2*360);
        angExt = -percent1*360;
        arc.setAngleStart(angSt);     //设置饼弧的开始角度
        arc.setAngleExtent(angExt);  设置饼弧度数
        g_2d.setColor(Color.blue);
        g_2d.drawString("蓝色 知道一些但不多",x,y=y+30);
        g_2d.fillRect(x+150,125,30,15);
        g_2d.fill(arc);              //绘制80-89分的饼图
        angSt = -(percent4*360+percent3*360+percent2*360+percent1*360);
        angExt = -percent0*360;
        arc.setAngleStart(angSt);     //设置饼弧的开始角度
        arc.setAngleExtent(angExt);  设置饼弧度数
        g_2d.setColor(Color.pink);
        g_2d.drawString("粉色 不了解也不知道",x,y=y+30);
        g_2d.fillRect(x+150,155,30,15);
        g_2d.fill(arc);              //绘制90-100分的饼图
        try {
          OutputStream outClient= response.getOutputStream();//指向用户端的输出流
          boolean boo =ImageIO.write(image,"jpeg",outClient);
        }
        catch(Exception exp){}
      
    }
%>
<HTML><body  background =../image/back.gif>
<p style="font-family:宋体;font-size:18;color:blue">
<%  
    String percent0Result = String.format("%.3f%%",percent0*100);
    String percent1Result = String.format("%.3f%%",percent1*100);
    String percent2Result = String.format("%.3f%%",percent2*100);
    String percent3Result = String.format("%.3f%%",percent3*100);
    String percent4Result = String.format("%.3f%%",percent4*100);
%> 
<b>成绩百分比分布(保留3位小数)<br>
不了解也不知道:<%=percent0Result %><br>
知道一些但不多:<%=percent1Result %><br>
知道许多:<%=percent2Result %><br>
愿意花时间去了解他(她)们:<%=percent3Result %><br>
以他(她)们为榜样学习:<%=percent4Result %><br>
</p></body></HTML>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值