简易的网上投票系统(Struts2+JFreeChart)

2024-01-18 03:40

本文主要是介绍简易的网上投票系统(Struts2+JFreeChart),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、该系统所用到的技术有:

(1)Struts2.x

(2)JFreeChart

2、该系统的文件结构如下图所示:


3、源码如下:

(1)JSP页面源码

SelectVote.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title></title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"></head><body style="background-color: #6FBACD; width: 50%; height: 50%;"><h1><font color="blue">请选择自己的兴趣爱好:</font></h1><s:form action="chartResult"><s:checkbox name="interest" label="篮球" fieldValue="basketball" labelposition="center"></s:checkbox><s:checkbox name="interest" label="足球" fieldValue="football" labelposition="center"></s:checkbox><s:checkbox name="interest" label="网球" fieldValue="tennis" labelposition="center"></s:checkbox><s:checkbox name="interest" label="羽毛球" fieldValue="yumiaoqiu" labelposition="center"></s:checkbox><s:checkbox name="interest" label="登山" fieldValue="dengshan" labelposition="center"></s:checkbox><s:checkbox name="interest" label="游泳" fieldValue="swim" labelposition="center"></s:checkbox><s:checkbox name="interest" label="围棋" fieldValue="weiqi" labelposition="center"></s:checkbox><s:submit value="提交" labelposition="center"></s:submit></s:form></body>
</html>

(2)Action源码

ChartResultAction.java:

/*** @Title:ChartResultAction.java* @Package:com.you.action* @Description:* @author:Youhaidong(游海东)* @date:2013-7-28 上午10:55:26* @version V1.0*/
package com.you.action;import java.awt.Color;
import java.awt.Font;
import java.util.List;
import java.util.Map;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.title.LegendTitle;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;/*** 类功能说明* 类修改者 修改日期* 修改说明* <p>Title:ChartResultAction.java</p>* <p>Description:游海东个人开发</p>* <p>Copyright:Copyright(c)2013</p>* @author:游海东* @date:2013-7-28 上午10:55:26* @version V1.0*/
public class ChartResultAction extends ActionSupport {/*** @Fields  serialVersionUID:序列化*/private static final long serialVersionUID = 1L;//创建chart属性private JFreeChart chart;//创建interest属性private List<String> interest;public JFreeChart getChart(){//创建JFreeChart对象chart = ChartFactory.createBarChart("兴趣爱好统计分布图", "兴趣爱好", "统计次数", this.getDataset(), PlotOrientation.VERTICAL, true, true, false);//设置标题chart.setTitle(new TextTitle("兴趣爱好统计", new Font("黑体",Font.BOLD,20)));//获取CategoryPlot对象CategoryPlot categoryPlot = (CategoryPlot)chart.getPlot();//设置X,Y轴围起来的面板的颜色categoryPlot.setBackgroundPaint(Color.LIGHT_GRAY);//获取水平轴CategoryAxis categoryAxis = categoryPlot.getDomainAxis();//设置水平轴标签的字体categoryAxis.setLabelFont(new Font("宋体",Font.BOLD,20));//设置水平轴标签的倾斜度categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.STANDARD);//设置X轴的标题文字categoryAxis.setLabelFont(new Font("宋体",Font.BOLD,20));  //设置X轴坐标上的文字categoryAxis.setTickLabelFont(new Font("宋体",Font.BOLD,20));//设置水平轴标签的背景色categoryPlot.setDomainGridlinePaint(Color.BLUE);//获取竖直轴NumberAxis numberAxis = (NumberAxis)categoryPlot.getRangeAxis();//设置Y轴坐标上的文字numberAxis.setTickLabelFont(new Font("宋体",Font.BOLD,20)); //设置Y轴的标题文字numberAxis.setLabelFont(new Font("宋体",Font.BOLD,20));//解决Legend乱码问题  LegendTitle legendTitle = chart.getLegend(0);//设置Legend的字体legendTitle.setItemFont(new Font("宋体",Font.BOLD,20));  return chart;}/* (non-Javadoc)* <p>Title:execute</p>* <p>Description:</p>* @return* @throws Exception* @see com.opensymphony.xwork2.ActionSupport#execute()*/@Overridepublic String execute() throws Exception {return SUCCESS;}//创建实现每次请求的increaseResult()方法@SuppressWarnings({ "rawtypes", "unchecked" })private void increaseResult(List<String> list){//返回ActionContext实例ActionContext content = ActionContext.getContext();//获取ApplicationMap map = content.getApplication();//遍历传入的请求参数listfor(String str : list){//判断选中的选项if(null == map.get(str)){map.put(str, 1);}else{map.put(str, (Integer)map.get(str) + 1);}}}//创建图像的数据集@SuppressWarnings("rawtypes")private CategoryDataset getDataset(){//创建数据集DefaultCategoryDataset dataset = new DefaultCategoryDataset();//处理当前的请求this.increaseResult(this.getInterest());//获取ActionContext实例ActionContext content = ActionContext.getContext();//获取Application对象Map map = content.getApplication();//为数据集中添加数值dataset.setValue((Integer)map.get("basketball"), "篮球", "篮球");dataset.setValue((Integer)map.get("football"), "足球", "足球");dataset.setValue((Integer)map.get("tennis"), "网球", "网球");dataset.setValue((Integer)map.get("yumiaoqiu"), "羽毛球", "羽毛球");dataset.setValue((Integer)map.get("dengshan"), "登山", "登山");dataset.setValue((Integer)map.get("swim"), "游泳", "游泳");dataset.setValue((Integer)map.get("weiqi"), "围棋", "围棋");return dataset;}/*** @return the interest*/public List<String> getInterest() {return interest;}/*** @param interest the interest to set*/public void setInterest(List<String> interest) {this.interest = interest;}/*** @param chart the chart to set*/public void setChart(JFreeChart chart) {this.chart = chart;}}

(3)struts.xml配置文件

<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""http://struts.apache.org/dtds/struts-2.0.dtd">
<struts><package name="struts2" extends="jfreechart-default"><action name="chartResult" class="com.you.action.ChartResultAction"><result name="success" type="chart"><param name="width">1300</param><param name="height">600</param></result></action></package></struts>

4、运行结果如下

(1)在浏览器地址栏输入:http://localhost:8080/votesystem/SelectVote.jsp,运行结果如下图:

         

(2)选择自己的兴趣爱好,点“提交”按钮

   

(3)当第二个人进入该系统,选择了自己的兴趣爱好,点击提交(以后进入系统的人都依次这样选择)

      a、选择自己的兴趣爱好

            

    b、点击提交之后

     


这篇关于简易的网上投票系统(Struts2+JFreeChart)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/617999

相关文章

使用Python实现一个简易计算器的新手指南

《使用Python实现一个简易计算器的新手指南》计算器是编程入门的经典项目,它涵盖了变量、输入输出、条件判断等核心编程概念,通过这个小项目,可以快速掌握Python的基础语法,并为后续更复杂的项目打下... 目录准备工作基础概念解析分步实现计算器第一步:获取用户输入第二步:实现基本运算第三步:显示计算结果进

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块

基于Python实现简易视频剪辑工具

《基于Python实现简易视频剪辑工具》这篇文章主要为大家详细介绍了如何用Python打造一个功能完备的简易视频剪辑工具,包括视频文件导入与格式转换,基础剪辑操作,音频处理等功能,感兴趣的小伙伴可以了... 目录一、技术选型与环境搭建二、核心功能模块实现1. 视频基础操作2. 音频处理3. 特效与转场三、高

Python结合Flask框架构建一个简易的远程控制系统

《Python结合Flask框架构建一个简易的远程控制系统》这篇文章主要为大家详细介绍了如何使用Python与Flask框架构建一个简易的远程控制系统,能够远程执行操作命令(如关机、重启、锁屏等),还... 目录1.概述2.功能使用系统命令执行实时屏幕监控3. BUG修复过程1. Authorization

python实现简易SSL的项目实践

《python实现简易SSL的项目实践》本文主要介绍了python实现简易SSL的项目实践,包括CA.py、server.py和client.py三个模块,文中通过示例代码介绍的非常详细,对大家的学习... 目录运行环境运行前准备程序实现与流程说明运行截图代码CA.pyclient.pyserver.py参

Java使用POI-TL和JFreeChart动态生成Word报告

《Java使用POI-TL和JFreeChart动态生成Word报告》本文介绍了使用POI-TL和JFreeChart生成包含动态数据和图表的Word报告的方法,并分享了实际开发中的踩坑经验,通过代码... 目录前言一、需求背景二、方案分析三、 POI-TL + JFreeChart 实现3.1 Maven

使用PyQt实现简易文本编辑器

《使用PyQt实现简易文本编辑器》这篇文章主要为大家详细介绍了如何使用PyQt5框架构建一个简单的文本编辑器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录分析主窗口类 (MyWindow)菜单操作语法高亮 (SyntaxHighlighter)运行程序主要组件代码图示分析实现

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加

用Java打造简易计算器的实现步骤

《用Java打造简易计算器的实现步骤》:本文主要介绍如何设计和实现一个简单的Java命令行计算器程序,该程序能够执行基本的数学运算(加、减、乘、除),文中通过代码介绍的非常详细,需要的朋友可以参考... 目录目标:一、项目概述与功能规划二、代码实现步骤三、测试与优化四、总结与收获总结目标:简单计算器,设计

详解Java中如何使用JFreeChart生成甘特图

《详解Java中如何使用JFreeChart生成甘特图》甘特图是一种流行的项目管理工具,用于显示项目的进度和任务分配,在Java开发中,JFreeChart是一个强大的开源图表库,能够生成各种类型的图... 目录引言一、JFreeChart简介二、准备工作三、创建甘特图1. 定义数据集2. 创建甘特图3.