0007Java程序设计-jsp问卷调查系统设计与实现

news2024/9/17 8:57:27

摘 要

随着社会不断进步与发展,生活节奏不断加快,信息已经成为我们生活中不可缺少的一部分,很多企业需要掌握大量的信息来了解特定用户的需求,传统的做法是组织大量的人力物力对用户散发调查表,然后对收集的信息进行统计并得到想要的调查结果,但是这种传统的做法浪费大、效率低、周期长,为了改变这种现象,我们设计了这套基于J2EE的问卷调查系统。

本系统前台主要使用J2EE作为开发语言,后台使用SQServer作为数据库管理系统,开发环境是MyEclipse,服务器采用tomcat。系统的主要功能包括:管理登陆、问卷调查题目及内容选项的添加、修改和查询,调查结果统计等。分为管理员用户、普通用户这二种用户平台。

目 录

摘 要… I

ABSTRACT… II

第一章 绪论… 1

1.1课题背景… 1

1.2目的和意义… 1

1.3开发工具及技术… 1

1.3.1开发工具… 1

1.3.2 J2EE… 2

1.3.3 JavaScript… 3

1.3.4 Struts 2简介… 3

1.3.5 Hibernate简介… 4

1.4软硬件需求… 4

第二章 需求分析… 5

2.1可行性分析… 5

2.1.1技术的可行性… 5

2.1.2经济的可行性… 5

2.1.3操作可行性… 5

2.1.4法律的可行性… 5

2.2系统用户用例图… 6

2.2.1管理员用例图… 6

2.2.2普通用户用例图… 6

2.3功能模块需求分析… 7

2.4设计的基本思想… 8

2.5性能需求… 8

2.5.1系统的安全性… 8

2.5.2数据的完整性… 8

2.6界面需求… 8

第三章 系统分析与设计… 10

3.1数据库的分析与设计… 10

3.1.1数据库的概念结构设计… 10

3.1.2数据库的逻辑结构设计… 13

3.1.3数据库的连接原理… 15

3.2中文乱码问题处理… 15

第四章 系统功能实现… 18

4.1系统登陆页面实现… 18

4.2总体功能模块… 19

4.2.1问卷信息管理… 20

4.2.2问卷题目管理… 22

4.2.3调查结果统计… 24

4.2.4系统公告管理… 27

4.2.5修改个人密码… 29

4.2.6安全退出系统… 29

4.3普通用户模块… 30

4.3.1系统主页面实现… 30

4.3.2问卷信息查询… 30

4.3.3用户注册… 30

4.3.4参与问卷调查… 32

第五章 系统测试… 34

5.1系统测试目的与意义… 34

5.2测试过程… 34

5.2.1主页面的登录模块测试… 34

5.3其他错误… 35

结 论… 36

参考文献… 37

致 谢… 38

系统功能实现

在管理信息系统的生命周期中,经过了需求分析、系统设计等阶段之后,便开始了系统实施阶段。在系统分析和设计阶段,系统开发工作主要是集中在逻辑、功能和技术设计上,系统实施阶段要继承此前面各个阶段的工作成果,将技术设计转化为物理实现,因此系统实施的成果是系统分析和设计阶段的结晶。

系统登陆页面实现

1.描述:为了保证系统的安全性,要先使用本系统必须先登陆到系统中,用户需要正确的账号和密码登录本系统。

2.程序运行效果图如图4.1所示:

img

3.在登陆页面输入用户名和密码以,点击提交按钮,跳转到登陆的service中,在该service中会对用户名,密码,验证码进行判断,验证通过进入对应的页面,loginservice关键代码:

public String login(String userName,String userPw,int userType)
	{
		String result="no";
		if(userType==0)//系统管理员登陆
		{
			String sql="from TAdmin where userName=? and userPw=?";
			Object[] con={userName,userPw};
			List adminList=adminDAO.getHibernateTemplate().find(sql,con);
			if(adminList.size()==0)
			{
				 result="no";
			}
			else
			{
				 WebContext ctx = WebContextFactory.get(); 
				 HttpSession session=ctx.getSession(); 
				 TAdmin admin=(TAdmin)adminList.get(0);
				 session.setAttribute("userType", 0);
	             session.setAttribute("admin", admin);
	             result="yes";
			}
		}
		if(userType==1)//putongyuangong
		{
			
	}

1.描述:系统主页面:左方页面展示了管理员可操作的六大功能,进入相关的管理页面可以链接到子菜单,并且高亮显示,每个管理模块下面都有相应的子菜单。

2.程序运行效果图如图4.2所示:

img

1.描述:管理员点击左侧的菜单“问卷信息管理”,页面跳转到问卷信息管理界面,调用后台的action类查询出所有的问卷信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的J2EE,显示出问卷信息。

2.程序效果图如下图4.4所示

img

public String wenjuanAdd()
{
		TWenjuan wenjuan=new TWenjuan();
		
		wenjuan.setId(String.valueOf(new Date().getTime()));
		wenjuan.setMingcheng(mingcheng);
		wenjuan.setShijian(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
		
		wenjuanDAO.save(wenjuan);
		this.setMessage("添加完毕");
		this.setPath("wenjuanMana.action");
		return "succeed";
	}
	
	
	public String wenjuanMana()
	{
		String sql="from TWenjuan";
		List wenjuanList =wenjuanDAO.getHibernateTemplate().find(sql);
		Map request=(Map)ServletActionContext.getContext().get("request");
		request.put("wenjuanList", wenjuanList);
		return ActionSupport.SUCCESS;
	}
	
	public String wenjuanDel()
	{
		TWenjuan wenjuan=wenjuanDAO.findById(id);
		wenjuanDAO.delete(wenjuan);
		this.setMessage("删除完毕");
		this.setPath("wenjuanMana.action");
		return "succeed";
	}

1.描述:点击问卷预览按钮,系统自动显示改问卷的题目信息。

2.程序效果图如下图4.8所示

img

public String toupiaoAdd()
{
		HttpServletRequest request=ServletActionContext.getRequest();
		
		String id=String.valueOf(new Date().getTime());
		String title=request.getParameter("title");
		String wenjuan_id=request.getParameter("wenjuan_id");
		TToupiao toupiao=new TToupiao();
		
		toupiao.setId(id);
		toupiao.setTitle(title);
		toupiao.setWenjuan_id(wenjuan_id);
		
		toupiaoDAO.save(toupiao);
		
		String[] xuanxiangneirong=request.getParameterValues("xuanxiangneirong");
		for(int i=0;i<xuanxiangneirong.length;i++)
		{
			try
			{
				Thread.sleep(100);
			} 
			catch (InterruptedException e)
			{
				e.printStackTrace();
			}
			System.out.println(xuanxiangneirong[i]+"%%");
			toupiaoxuanxiangSave(xuanxiangneirong[i], id);//这个地方的id是投票的id
		}
		
		request.setAttribute("msg", "添加完毕");
		return "msg";
	}
	
	
	public void toupiaoxuanxiangSave(String xuanxiangneirong,String toupiao_id)
	{
		TToupiaoxuanxiang toupiaoxuanxiang=new TToupiaoxuanxiang();
		
		toupiaoxuanxiang.setId(String.valueOf(new Date().getTime()));
		toupiaoxuanxiang.setXuanxiangneirong(xuanxiangneirong);
		toupiaoxuanxiang.setPiaoshu(0);
		toupiaoxuanxiang.setToupiao_id(toupiao_id);
		
		toupiaoxuanxiangDAO.save(toupiaoxuanxiang);
	}

调查结果统计

1.描述:选择一条问卷信息,点击“结果统计”,系统调转到统计页面。

2.程序效果图如下图4.9所示:

img

img

String path = request.getContextPath();
    List xuanxiangList=(List)request.getAttribute("xuanxiangList");
			
    DefaultCategoryDataset categoryDataset=new DefaultCategoryDataset();
    for(int i=0;i<xuanxiangList.size();i++)
    {
        TToupiaoxuanxiang toupiaoxuanxiang=(TToupiaoxuanxiang)xuanxiangList.get(i);
        categoryDataset.setValue(toupiaoxuanxiang.getPiaoshu(),"",toupiaoxuanxiang.getXuanxiangneirong()+"("+toupiaoxuanxiang.getPiaoshu()+")" );
    }
	
	
	JFreeChart freeChart=ChartFactory.createBarChart("投票结果柱状图", "", "", categoryDataset, PlotOrientation.VERTICAL, false, false, false);
       

    TextTitle title=freeChart.getTitle();
	title.setFont(new Font("宋体", Font.BOLD, 20));
	
	CategoryPlot plot=(CategoryPlot)freeChart.getPlot();
	CategoryAxis categoryAxis=plot.getDomainAxis();//横轴
	categoryAxis.setLabelFont(new Font("宋体", Font.BOLD, 11));
    categoryAxis.setTickLabelFont(new Font("宋体" , Font.BOLD , 11));
	
	NumberAxis numberAxis=(NumberAxis)plot.getRangeAxis();
	numberAxis.setLabelFont(new Font("宋体", Font.BOLD, 20));//纵轴
       
	
	
	String tu_mingzi=String.valueOf(new Date().getTime())+".jpg";
    String url = request.getSession().getServletContext().getRealPath("tutu")+"\\"+tu_mingzi;
	
	OutputStream os=new FileOutputStream(url);
	ChartUtilities.writeChartAsJPEG(os, freeChart, 900, 700);
	os.close();

开发环境

开发工具:idea、Navicat

数据库:MySQL8.0

环境配置:jdk1.8 、Tomcat8.5

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/910127.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python 基础篇 day 1 初识变量和数据类型

文章目录 变量变量作用——用于存储和表示数据。变量命名规则命名法大驼峰小驼峰下划体n j i a x 通常作为临时变量使用 建议 变量种类全局变量&#xff08;Global Variables&#xff09;局部变量&#xff08;Local Variables&#xff09;静态变量&#xff08;Static Variables…

linux常用基础命令与文件结构汇总

1 学习目标 说出Linux下的目录结构和常见目录的作用熟练使用Linux下的相对路径和绝对路径熟练使用Linux下常用文件和目录操作相关的命令熟练使用修改用户权限、用户和用户组相关的命令熟练使用文件的查找和检索相关的命令熟练掌握Ubuntu下的软件安装和卸载熟练使用压缩工具完成…

七夕节日表白:七大网页风格与其适用人群

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

YOLOv5源码中的参数超详细解析(5)— 验证部分val(test).py

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。YOLOv5项目代码中&#xff0c;val.py 是一个代表验证&#xff08;validation&#xff09;的 Python 脚本文件名。通常在机器学习或深度学习的任务中&#xff0c;我们会将数据集分为训练集和验证集&#xff0c;使用训练集来…

请说人话!如何理解基本分页存储管理

一、默认设定 &#xff08;一&#xff09;按字节编制一个房间可以装8只猪猪 现在的计算机一般都是按字节编址的。这个不理解的话&#xff0c;可以看我的文章为什么20位地址总线决定寻址空间是1MB“http://t.csdn.cn/Eo2nE” &#xff08;二&#xff09;内存采用非连续分配方…

法线矩阵推导

法线矩阵推导 https://zhuanlan.zhihu.com/p/72734738 https://juejin.cn/post/7113952418613690382 https://blog.csdn.net/wangjianxin97?typeblog 1、为什么需要法线矩阵 vec3 normalEyeSpace modelViewMatrix * normal;如果模型矩阵执行了非等比缩放, 顶点的改变会导致法…

基于蝴蝶算法优化的BP神经网络(预测应用) - 附代码

基于蝴蝶算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码 文章目录 基于蝴蝶算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码1.数据介绍2.蝴蝶优化BP神经网络2.1 BP神经网络参数设置2.2 蝴蝶算法应用 4.测试结果&#xff1a;5.Matlab代码 摘要…

sNMFcross-entropyK

0.简单介绍 稀疏非负矩阵&#xff08;sNMF&#xff09;和最小二乘优化来产生祖先比例估计数的祖先推断算法&#xff0c;这个算法呢与admixture来说差别不是很大&#xff0c;但是优点就是快&#xff0c;运算速度可以快到10-30倍左右。 1.安装 这一步不必多说&#xff0c;下载…

tailscale使用教程(远程连接服务器)

tailscale&#xff1a;将多个设备放在同一局域网下&#xff0c;实现异地组网。 首先进入tailscale官网&#xff0c;根据系统需求进行下载 需要远程的设备和被远程的设备都需要下载。 然后两个设备均登录同一账号即可 注&#xff1a;这里重点讲一下linux操作系统上的操作&…

PID输出PWM温度控制(PID输出PWM的各种方法介绍)

这篇博客主要介绍PID的输出如何和PWM输出进行绑定,PID控制算法和源代码大家自行查看PID专栏,这里不再赘述。常用链接如下: 位置式PID(S7-200SMART 单自由度、双自由度梯形图源代码)_RXXW_Dor的博客-CSDN博客有关位置型PID和增量型PID的更多详细介绍请参看PID专栏的相关文章…

读SQL学习指南(第3版)笔记02_数据类型

1. 命令行工具 1.1. mysql -u root -p; 1.2. mysql&#xff1e; show databases; 1.3. mysql&#xff1e; use sakila; 1.4. mysql&#xff1e; SELECT now(); 1.4.1. now()是MySQL的内建函数 1.4.2. 返回当前日期和时间 1.5. mysql&#xff1e; SELECT now() FROM dual…

DFT计算入门新手坑:能带不连续

新手在学习DFT计算时&#xff0c;在熟悉了基本的操作和VASP输入文件后&#xff0c;首先就会学习到结构优化、自洽计算和能带的计算。 而笔者学习DFT计算这些年来看到太多新手学者踩到大大小小的坑&#xff0c;其中能带看起来不连续或者能带不连续则是几乎必踩的坑之一。 这些初…

【HCIP】04.VRRP与BFD

VRRP VRRP基本概念 VRRP路由器 运行VRRP协议的路由器&#xff0c;VRRP是配置在路由器的接口上的&#xff0c;而且也是基于接口来工作的。 VRID 一个VRRP组由多台协同工作的路由器&#xff08;的接口&#xff09;组成&#xff0c;使用相同的VRID&#xff08;Virtual Router…

Spring统一功能处理

1. AOP存在的问题 获取参数复杂AOP的规则相对简单 2. 拦截器 2.1. 应用(以登录为例) 2.1.1. 自定义拦截器 新建interceptor文件夹 import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest; import javax.servlet.http…

Blend for Visual Studio:提升用户界面设计的专业工具

随着软件行业的迅速发展&#xff0c;用户界面设计变得越来越重要。一个好的用户界面能够吸引用户的注意力&#xff0c;提供良好的用户体验&#xff0c;并增加应用程序的成功率。在这个背景下&#xff0c;Blend for Visual Studio作为一款专业的用户界面设计工具&#xff0c;为开…

SpringCloud学习笔记(二)_Eureka注册中心

一、Eureka简介 Eureka是一项基于REST&#xff08;代表性状态转移&#xff09;的服务&#xff0c;主要在AWS云中用于定位服务&#xff0c;以实现负载均衡和中间层服务器的故障转移。我们称此服务为Eureka Server。Eureka还带有一个基于Java的客户端组件Eureka Client&#xff…

从电子表格到纸张:Excel转PDF的神奇变身之旅!

当你需要将Excel文件转换为PDF时&#xff0c;可以使用Python编程语言和一些流行的库来实现这个任务。在本篇博客中&#xff0c;我将介绍如何使用wxPython、pandas和PyMuPDF库创建一个简单易用的图形用户界面(GUI)工具来完成这项工作。 C:\pythoncode\new\excelexportpdf.py …

SCCB与IIC的异同及FPGA实现的注意事项

文章目录 前言一、信号线二、SCCB数据传输格式三、SCCB写&#xff08;与IIC完全一致&#xff09;四、SCCB读五、SCCB和IIC的区别 前言 IIC接口有比较广泛的应用&#xff0c;而SCCB&#xff08;Serial Camera Control Bus&#xff0c;串行摄像头控制总线&#xff09;是由OV&…

发现一款免费WEB在线使用的AI对话+绘画

这是一个优秀的golang开发作者 免费开放给大家使用的 简单上手 注册就能使用 多个AI角色多模型自由选择 下面是使用效果 链接地址在文末链接地址:目前免费体验

基于51单片机无线温度报警控制器 NRF24L01 多路温度报警系统设计

一、系统方案 1、本设计默认采用STC89C52单片机&#xff0c;如需更换单片机请联系客服。 2、接收板LCD1602液晶实时显示当前检测的2点温度值以及对应的上下限报警值。发射板由DS18B20采集温度值&#xff0c;通过无线模块NRF24L01传给接收板。 3、按键可以设置温度上下限值&…