摘 要
随着社会不断进步与发展,生活节奏不断加快,信息已经成为我们生活中不可缺少的一部分,很多企业需要掌握大量的信息来了解特定用户的需求,传统的做法是组织大量的人力物力对用户散发调查表,然后对收集的信息进行统计并得到想要的调查结果,但是这种传统的做法浪费大、效率低、周期长,为了改变这种现象,我们设计了这套基于J2EE的问卷调查系统。
本系统前台主要使用J2EE作为开发语言,后台使用SQServer作为数据库管理系统,开发环境是MyEclipse,服务器采用tomcat。系统的主要功能包括:管理登陆、问卷调查题目及内容选项的添加、修改和查询,调查结果统计等。分为管理员用户、普通用户这二种用户平台。
系统功能实现
在管理信息系统的生命周期中,经过了需求分析、系统设计等阶段之后,便开始了系统实施阶段。在系统分析和设计阶段,系统开发工作主要是集中在逻辑、功能和技术设计上,系统实施阶段要继承此前面各个阶段的工作成果,将技术设计转化为物理实现,因此系统实施的成果是系统分析和设计阶段的结晶。
系统登陆页面实现
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