摘 要
随着社会不断进步与发展,生活节奏不断加快,信息已经成为我们生活中不可缺少的一部分,很多企业需要掌握大量的信息来了解特定用户的需求,传统的做法是组织大量的人力物力对用户散发调查表,然后对收集的信息进行统计并得到想要的调查结果,但是这种传统的做法浪费大、效率低、周期长,为了改变这种现象,我们设计了这套基于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所示:
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所示:
1.描述:管理员点击左侧的菜单“问卷信息管理”,页面跳转到问卷信息管理界面,调用后台的action类查询出所有的问卷信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的J2EE,显示出问卷信息。
2.程序效果图如下图4.4所示
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所示
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所示:
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