基于java+jsp+ssh的毕业生就业信息管理系统

🍅文末获取源码联系🍅

👇🏻 精彩项目推荐订阅👇🏻 不然下次找不到哟

感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人

系统介绍

        随着高校教育体制的改革大学生人数的不断增加,毕业生就业制度发生了根本的变化。单位和学生走向人才市场,双向选择,择优录用。因此在这样的情况下,在INTERNET上开发并运行信息管理系统就能够极大地提高工作效率,弥补了用人单位和学生在时间和空间上的不足。

        本毕业设计的内容是设计并且实现一个基于web技术的毕业生就业信息管理系统,故而系统主要以j2EE作为开发基础,主要使用了struts2+spring+hibernate等多种框架的结合使用,用myeclipse作为开发工具,以MYSQL作为数据库,使用JAVA语言开发,页面采取JSP动态页面开发技术。该系统界面简单、操作方便,容易维护。

系统开发的思想与技术

JSP技术与MVC模式以及系统的基本框架

        本系统采用jsp技术,基于MVC模式开发,使用SSH框架(struts2、spring、hibernate)来增加系统的开发速度。所谓的MVC模式是"Model-View-Controller"的缩写,中文翻译为"模式-视图-控制器"。程序就是用struts2和hibernate这两个框架来实现模型层和控制器这两层,jsp实现视图这一层。一般来说程序就是在数据库和页面之间起桥梁作用的,jsp页面请求先到action,再到dao,再回到action,回到jsp页面,action主要处理来自页面的请求,dao主要是和数据库的交互,struts2主要用在action,处理来自页面的请求,处理完请求后跳转回页面。Hibernate主要用在dao,包括对数据库的增、删、改、查的操作,spring控制程序的流程。

 S.S.H框架的优点

        

S.S.H框架是J2EE应用中struts2+spring+hibernate三大免费开源框架的结合使用,它可以看成工具,也是中间件。他是用来提高我们的开发效率,提高我们软件产品的可维护性、可扩展性乃至敏捷性的。他们里面有很多优秀的设计理念及模式应用。比如,struts属于MVC框架,关键是要了解MVC的概念及大致原理;而hibernate属于ORM系统,属于持久层的解决方案,同样需要对ORM的概念及原理有一个总体的了解。而spring属于应用程序框架,其核心是IOC容器以及AOP,Spring中还集成了很多适用东西,比如对JDBC的封装、自己的MVC、对动态语言的简洁访问等,它由以下3个框架构成:

Struts2框架

        Struts2是Apache组织的一个开放源码项目。Struts2是一个比较好的MVC框架,提供了对开发MVC系统的底层支持,它采用的主要技术是Servlet,JSP和Custom tag library。其基本构成如图2.1所示。

Spring框架

        Spring的核心是个轻量级(Lightweight)的容器(Container),它是实现IoC(Inversion of Control)容器、非侵入性(No intrusive)的框架,并提供AOP(Aspect-oriented programming)概念的实现方式,提供对持久层(Persistence)、事务(Transaction)的支持,提供MVC Web框架的实现,并对一些常用的企业服务API(Application Interface)提供一致的模型封装,是一个全方位的应用程序框架(Application framework),除此之外,对于现存的各种框架(Struts、JSF、Hibernate等),Spring也提供了与它们相整合的方案。

Spring框架由图2-2所示的7个部分组成:

Hibernate框架

        Hibernate是一个开放源码的ORM持久层框架。作为优秀的持久层框架实现,Hibernate框架提供了强大、高性能的对象到关系型数据库的持久化服务,开发人员可以使用面向对象的设计进行持久层开发。简单的说,Hibernate只是一个将持久化类与数据库表相映射的工具,每个持久化类实例均对应于数据库表中的一个数据行而已。用户只需直接使用面向对象的方法操作此持久化类实例,即可完成对数据库表数据的插入、删除、修改、读取等操作。

系统总体设计

总体功能模块

本系统分系统管理员,老师用户,企业用户和毕业生用户4个用户角色。

系统管理员功能模块

        系统管理员主要功能有系别管理、专业管理、老师管理员管理、站内新闻管理、企业用户管理、岗位管理、文档管理、公告管理、留言管理、就业查询统计(包括就业情况查询,区域分布统计,性别分布统计,时间分布统计,从事行业统计,工作省份统计,就业月份统计)。

老师用户功能模块

        老师用户的主要功能有毕业生用户管理、站内新闻查询、文档查询、公告查询、留言管理、就业查询统计(包括就业情况查询,区域分布统计,性别分布统计,时间分布统计,从事行业统计,工作省份统计,就业月份统计)。

企业用户功能模块

        企业用户的主要功能有求职管理(包括岗位管理和查看应聘学生信息)、站内新闻查询、文档查询、公告查询、留言管理、个人信息管理。

毕业生用户功能模块

        毕业生用户的主要功能有简历管理、求职管理(包括查询就业岗位和查看应聘信息,查看招聘单位)、站内新闻查询、文档查询、公告查询、留言管理、个人信息管理。

系统业务描述

        本系统分系统管理员,老师用户,企业用户和毕业生用户4个用户角色。系统管理员主要功能有系别管理、专业管理、老师管理员管理、站内新闻管理、企业用户管理、岗位管理、文档管理、公告管理、留言管理、就业查询统计(包括就业情况查询,区域分布统计,性别分布统计,时间分布统计,从事行业统计,工作省份统计,就业月份统计)。老师用户的主要功能有毕业生用户管理、站内新闻查询、文档查询、公告查询、留言管理、就业查询统计(包括就业情况查询,区域分布统计,性别分布统计,时间分布统计,从事行业统计,工作省份统计,就业月份统计)。企业用户的主要功能有求职管理(包括岗位管理和查看应聘学生信息)、站内新闻查询、文档查询、公告查询、留言管理、个人信息管理。毕业生用户的主要功能有简历管理、求职管理(包括查询就业岗位和查看应聘信息,查看招聘单位)、站内新闻查询、文档查询、公告查询、留言管理、个人信息管理。

系统详细设计与实现

系统和数据库的配置

        系统按通用的B/S(浏览器、服务器)模式进行设计

        数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率,以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。

概念模型设计

        概念模型设计的典型方法是用E-R图方法,即用实体-联系模型表示。E-R方法是用E-R图来描述显示世界,E-R图包含三个基本成分:实体、联系、属性。它直观易懂,能够比较准确地反映现实世界的信息联系,从概念上表示一个数据库的信息组织情况。本系统E-R图如下:

系统配置代码展示

hibernate配置文件

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration><session-factory><!-- Database connection settings --><property name="proxool.pool_alias">DBPool</property><property name="proxool.xml">proxool.xml</property><property name="connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</property><!-- Echo all executed SQL to stdout --><property name="show_sql">true</property><property name="format_sql">true</property><property name="dialect">org.hibernate.dialect.MySQLDialect</property><!-- Enable Hibernate's automatic session context management --><property name="current_session_context_class">thread</property><property name="hibernate.hbm2ddl.auto">update</property><mapping class="model.User"/><mapping class="model.Xinwen"/><mapping class="model.Zhiwei"/><mapping class="model.Jianli"/><mapping class="model.Toudijilu"/><mapping class="model.Wendang"/><mapping class="model.Gonggao"/><mapping class="model.Liuyan"/><mapping class="model.Jiuye"/><mapping class="model.Xi"/><mapping class="model.Zhuanye"/></session-factory>
</hibernate-configuration>

struts配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts><constant name="struts.objectFactory" value="spring" /><constant name="struts.i18n.encoding" value="UTF-8" /><package name="index" namespace="/" extends="struts-default"><action name="index" method="index" class="manageAction" ><result  name="success1">index.jsp</result><result  name="success2">login.jsp</result></action><action name="method" class="manageAction"><result type="dispatcher">${url}</result><result name="redirect" type="redirect">${url}</result></action></package></struts>

Spring配置文件

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"><!--           daos          --><bean id="userDao" class="dao.impl.UserDaoImpl" ><property name="sessionFactory"><ref bean="sessionFactory" /></property></bean><bean id="xinwenDao" class="dao.impl.XinwenDaoImpl" ><property name="sessionFactory"><ref bean="sessionFactory" /></property></bean><bean id="zhiweiDao" class="dao.impl.ZhiweiDaoImpl" ><property name="sessionFactory"><ref bean="sessionFactory" /></property></bean><bean id="jianliDao" class="dao.impl.JianliDaoImpl" ><property name="sessionFactory"><ref bean="sessionFactory" /></property></bean><bean id="toudijiluDao" class="dao.impl.ToudijiluDaoImpl" ><property name="sessionFactory"><ref bean="sessionFactory" /></property></bean><bean id="wendangDao" class="dao.impl.WendangDaoImpl" ><property name="sessionFactory"><ref bean="sessionFactory" /></property></bean><bean id="gonggaoDao" class="dao.impl.GonggaoDaoImpl" ><property name="sessionFactory"><ref bean="sessionFactory" /></property></bean><bean id="liuyanDao" class="dao.impl.LiuyanDaoImpl" ><property name="sessionFactory"><ref bean="sessionFactory" /></property></bean><bean id="jiuyeDao" class="dao.impl.JiuyeDaoImpl" ><property name="sessionFactory"><ref bean="sessionFactory" /></property></bean><bean id="xiDao" class="dao.impl.XiDaoImpl" ><property name="sessionFactory"><ref bean="sessionFactory" /></property></bean><bean id="zhuanyeDao" class="dao.impl.ZhuanyeDaoImpl" ><property name="sessionFactory"><ref bean="sessionFactory" /></property></bean></beans>
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"><bean id="manageAction" class="action.ManageAction" scope="prototype"><property name="userDao"><ref bean="userDao" /></property><property name="xinwenDao"><ref bean="xinwenDao" /></property><property name="zhiweiDao"><ref bean="zhiweiDao" /></property><property name="jianliDao"><ref bean="jianliDao" /></property><property name="toudijiluDao"><ref bean="toudijiluDao" /></property><property name="wendangDao"><ref bean="wendangDao" /></property><property name="gonggaoDao"><ref bean="gonggaoDao" /></property><property name="liuyanDao"><ref bean="liuyanDao" /></property><property name="jiuyeDao"><ref bean="jiuyeDao" /></property><property name="xiDao"><ref bean="xiDao" /></property><property name="zhuanyeDao"><ref bean="zhuanyeDao" /></property></bean></beans>
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"><!-- 配置sessionFactory --><bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"><property name="configLocation"><value>classpath:hibernate.cfg.xml</value></property>	</bean>           <!-- 配置事务管理器 --><bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory"><ref bean="sessionFactory"/></property>	</bean><!-- 配置事务的传播特性 --><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><tx:method name="insert*" propagation="REQUIRED"/><tx:method name="delete*" propagation="REQUIRED"/><tx:method name="update*" propagation="REQUIRED"/><tx:method name="*" read-only="true"/></tx:attributes></tx:advice><!-- 那些类的哪些方法参与事务 --><aop:config><aop:pointcut id="allManagerMethod" expression="execution(* dao.*.*(..))"/><aop:advisor pointcut-ref="allManagerMethod" advice-ref="txAdvice"/></aop:config></beans>

系统功能实现的主要模块

登录页面

public String login()throws IOException{HttpServletRequest request=ServletActionContext.getRequest();String username=request.getParameter("username");String password=request.getParameter("password");String role=request.getParameter("role");User user=userDao.selectBean("where username='"+username+"'and								password='"+password+"'and userlock=0 and role="+role);if(user!=null){HttpSession session=request.getSession();session.setAttribute("user",user);this.setUrl("index");return"redirect";}else{HttpServletResponse response=ServletActionContext.getResponse();response.setCharacterEncoding("gbk");responsegetWriter()print(
"<script language=javascript>alert('用户名或者密码错误');window.location.href='login.jsp';</script>");}return null;}

        本段代码是程序的登陆代码,首先从获取从页面输入的用户名和密码还有用户的登陆角色,然后调用userDao.selectBean方法,从数据库里取出该条记录进行判断,如果该条记录存在,则说明用户登陆成功,同时把用户信息存在session里面方便调用,如果记录为空,则跳转到登陆页面,同时提醒用户错误信息。

注册页面

//企业用户注册操作public void register()throws Exception{HttpServletRequest request=ServletActionContext.getRequest();	HttpServletResponse response=ServletActionContext.getResponse();	String username=java.net.URLDecoder.decode(request.getParameter("username"),"utf-8");User user=userDao.selectBean("where username='"+username+"'and userlock=0");if(user==null){user=new User();user.setUsername(username);user.setPassword(request.getParameter("password"));user.setTruename(java.net.URLDecoder.decode(request.getParameter("truename"),"utf-8"));user.setQiyedizhi(java.net.URLDecoder.decode(request.getParameter("qiyedizhi"),"utf-8"));		user.setQiyelianxidianhua(java.net.URLDecoder.decode(request.getParameter("qiyelianxidianhua"),"utf-8"));
user.setQiyemingchen(java.net.URLDecoder.decode(request.getParameter("qiyemingchen"),"utf-8"));	user.setFarendaibiao(java.net.URLDecoder.decode(request.getParameter("farendaibiao"),"utf-8"));		user.setCongshihangye(java.net.URLDecoder.decode(request.getParameter("congshihangye"),"utf-8"));			user.setQiyequyu(java.net.URLDecoder.decode(request.getParameter("qiyequyu"),"utf-8"));user.setCreatetime(new Date());user.setRole(1);userDao.insertBean(user);	response.setCharacterEncoding("utf-8");response.getWriter().write("注册新用户成功!您的用户名"+user.getUsername()+",请妥善保管!");}else{response.setCharacterEncoding("utf-8");response.getWriter().write("该用户名已经存在,请重新注册!");}}

        本段代码是程序的注册代码,首先从获取从页面获取注册的信息,同时新建一个User对象,把从页面获取的信息都写在USER对象里面。同时在插入到数据库之前先调用userDao.selectBean("where username='"+username+"'and userlock=0");方法,验证下该用户名在数据库中是否存在,如果不存在,则调用userDao.insertBean(bean);方法,把该条记录写入数据库,如果该条记录存在,则返回到注册页面,同时提醒用户该用户已经注册,请不要重复注册。

系统管理员主页面

//程序入口界面public String index(){HttpServletRequest request=ServletActionContext.getRequest();HttpSession session=request.getSession();User user=(User)session.getAttribute("user");if(user==null){return"success2";}else{return"success1";}}

        本段代码是主页面代码,判断用户的session的值是否为空,为空则跳转到登陆界面,不为空则根据session的值的不同跳转到不同的主页。

教师用户管理主页面

//老师管理员列表public String userlist(){HttpServletRequest request=ServletActionContext.getRequest();String username=request.getParameter("username");String truename=request.getParameter("truename");StringBuffer sb=new StringBuffer();sb.append("where");if(username!=null&&!"".equals(username)){sb.append("username like'%"+username+"%'");sb.append("and");request.setAttribute("username",username);}if(truename!=null&&!"".equals(truename)){sb.append("truename like'%"+truename+"%'");sb.append("and");request.setAttribute("truename",truename);}		sb.append("userlock=0 and role=3 order by id desc");String where=sb.toString();int currentpage=1;int pagesize=10;if(request.getParameter("pagenum")!=null){currentpage=Integer.parseInt(request.getParameter("pagenum"));}int total=userDao.selectBeanCount(where);request.setAttribute("list",userDao.selectBeanList((currentpage-1)*pagesize,pagesize,where));request.setAttribute("pagerinfo",Pager.getPagerNormal(total,pagesize,currentpage,"method!userlist","共有"+total+"条记录"));request.setAttribute("url","method!userlist");request.setAttribute("url2","method!user");request.setAttribute("title","老师管理员管理");this.setUrl("user/userlist.jsp");return SUCCESS;}

        首先通过String username=request.getParameter("username")Stringtruename=request.getParameter("truename");这句代码从页面获取查询的选项,然后通过if(username!=null&&!"".equals(username))和if(truename!=null&&!"".equals(truename))语句,通过这句条件语句分别判断下这个值是否为空,当不为空时则通过StingBuffer来叠加组装查询的sql语句,最后当sql语句组装好了之后,通过userDao.selectBeanList方法来调用数据库的查询方法来查到符合条件的记录,在通过request.setAttribute方法把查询到的记录传到显示的页面。同时通过this.setUrl("user/userlist.jsp");方法指定传回到具体指定的是哪个JSP页面。通过这样实现对数据查询功能的实现,同时在该老师用户列表页面定义了对老师信息的增加,修改,删除等操作。

就业情况查询管理主页面

//就业情况查询public String jiuyelist(){HttpServletRequest request=ServletActionContext.getRequest();String truename=request.getParameter("truename");String jiuyefenbu=request.getParameter("jiuyefenbu");String xingbie=request.getParameter("xingbie");String congshihangye=request.getParameter("congshihangye");String zhuanye=request.getParameter("zhuanye");StringBuffer sb=new StringBuffer();sb.append("where");StringBuffer sb2=new StringBuffer();sb2.append("where");if(truename!=null&&!"".equals(truename)){sb.append("user.truename like'%"+truename+"%'");sb.append("and");sb2.append("user.truename like'%"+truename+"%'");sb2.append("and");request.setAttribute("truename",truename);}if(jiuyefenbu!=null&&!"".equals(jiuyefenbu)){sb.append("jiuyefenbu like'%"+jiuyefenbu+"%'");sb.append("and");sb2.append("jiuyefenbu like'%"+jiuyefenbu+"%'");sb2.append("and");request.setAttribute("jiuyefenbu",jiuyefenbu);}if(xingbie!=null&&!"".equals(xingbie)){sb.append("xingbie like'%"+xingbie+"%'");sb.append("and");sb2.append("xingbie like'%"+xingbie+"%'");sb2.append("and");request.setAttribute("xingbie",xingbie);}if(congshihangye!=null&&!"".equals(congshihangye)){sb.append("congshihangye like'%"+congshihangye+"%'");sb.append("and");sb2.append("congshihangye like'%"+congshihangye+"%'");sb2.append("and");request.setAttribute("congshihangye",congshihangye);}	if(zhuanye!=null&&!"".equals(zhuanye)){sb.append("user.zhuanye like'%"+zhuanye+"%'");sb.append("and");sb2.append("user.zhuanye like'%"+zhuanye+"%'");sb2.append("and");request.setAttribute("zhuanye",zhuanye);}HttpSession session=request.getSession();User user=(User)session.getAttribute("user");if("admin".equals(user.getUsername())){sb.append("1=1 order by id desc");sb2.append("1=1");}else{sb.append("laoshi.id="+user.getId()+"order by id desc");sb2.append("laoshi.id="+user.getId());}	String where=sb.toString();	String where2=sb2.toString();	int currentpage=1;int pagesize=10;if(request.getParameter("pagenum")!=null){currentpage=Integer.parseInt(request.getParameter("pagenum"));}int total=jiuyeDao.selectBeanCount(where2);request.setAttribute("list",jiuyeDao.selectBeanList((currentpage-1)*pagesize,pagesize,where));request.setAttribute("pagerinfo",Pager.getPagerNormal(total,pagesize,currentpage,"method!jiuyelist","共有"+total+"条记录"));request.setAttribute("url","method!jiuyelist");this.setUrl("jiuye/jiuyelist.jsp");return SUCCESS;}

首先通过以下语句:

String truename=request.getParameter("truename");

String jiuyefenbu=request.getParameter("jiuyefenbu");

String xingbie=request.getParameter("xingbie");

String congshihangye=request.getParameter("congshihangye");

String zhuanye=request.getParameter("zhuanye");

这些代码从页面获取查询的选项,然后通过

if(truename!=null&&!"".equals(truename)){

if(jiuyefenbu!=null&&!"".equals(jiuyefenbu)){

if(xingbie!=null&&!"".equals(xingbie)){

if(congshihangye!=null&&!"".equals(congshihangye)){

if(zhuanye!=null&&!"".equals(zhuanye)){

通过这句条件语句分别判断下这个值是否为空,当不为空时则通过StingBuffer来叠加组装查询的sql语句,最后当sql语句组装好了之后,通过jiuyeDao.selectBeanList方法来调用数据库的查询方法来查到符合条件的记录,在通过request.setAttribute方法把查询到的记录传到显示的页面。同时通过this.setUrl("jiuye/jiuyelist.jsp");方法指定传回到具体指定的是哪个JSP页面。通过这样实现对数据查询功能的实现,同时在该就业信息列表了对就业的打印,导出excel等操作。

区域分布统计主页面

//统计列表(区域分布统计)public String jiuyelist4()throws IOException{HttpServletRequest request=ServletActionContext.getRequest();request.setAttribute("xilist",xiDao.selectBeanList(0,999,"where xilock=0"));	String banji=request.getParameter("banji");String xi=request.getParameter("xi");String zhuanye=request.getParameter("zhuanye");String nianji=request.getParameter("nianji");StringBuffer sb=new StringBuffer();sb.append("where");StringBuffer sb2=new StringBuffer();sb2.append("where");if(banji!=null&&!"".equals(banji)){sb.append("user.banji like'%"+banji+"%'");sb.append("and");sb2.append("user.banji like'%"+banji+"%'");sb2.append("and");request.setAttribute("banji",banji);}		if(xi!=null&&!"0".equals(xi)){Xi x=xiDao.selectBean("where id="+xi);sb.append("user.xi like'%"+x.getName()+"%'");sb.append("and");sb2.append("user.xi like'%"+x.getName()+"%'");sb2.append("and");request.setAttribute("xi",x.getName());}if(zhuanye!=null&&!"0".equals(zhuanye)){Zhuanye z=zhuanyeDao.selectBean("where id="+zhuanye);sb.append("user.zhuanye like'%"+z.getName()+"%'");sb.append("and");sb2.append("user.zhuanye like'%"+z.getName()+"%'");sb2.append("and");request.setAttribute("zhuanye",z.getName());}	if(nianji!=null&&!"".equals(nianji)){sb.append("user.nianji like'%"+nianji+"%'");sb.append("and");sb2.append("user.nianji like'%"+nianji+"%'");sb2.append("and");request.setAttribute("nianji",nianji);}HttpSession session=request.getSession();User user=(User)session.getAttribute("user");if("admin".equals(user.getUsername())){sb.append("jiuyefenbu='南方'");sb2.append("jiuyefenbu='北方'");		}else{sb.append("jiuyefenbu='南方'and laoshi.id="+user.getId());sb2.append("jiuyefenbu='北方'and laoshi.id="+user.getId());}		int count1=jiuyeDao.selectBeanCount(sb.toString());int count2=jiuyeDao.selectBeanCount(sb2.toString());		int count3=count1+count2;		DefaultCategoryDataset dataset=new DefaultCategoryDataset();dataset.addValue(((double)count1/count3)*100,"南方就业","南方就业"+count1+"人");dataset.addValue(((double)count2/count3)*100,"北方就业","北方就业"+count2+"人");JFreeChart chart=ChartFactory.createBarChart3D(null,"区域分布","百分比(%)",dataset,PlotOrientation.VERTICAL,true,false,false);		//柱状图(CategoryPlot):CategoryPlot plot=chart.getCategoryPlot();//获取图表区域对象CategoryAxis domainAxis=plot.getDomainAxis();//水平底部列表domainAxis.setLabelFont(new Font("黑体",Font.BOLD,14));//水平底部标题domainAxis.setTickLabelFont(new Font("宋体",Font.BOLD,12));//垂直标题ValueAxis rangeAxis=plot.getRangeAxis();//获取柱状rangeAxis.setLabelFont(new Font("黑体",Font.BOLD,15));chart.getLegend().setItemFont(new Font("黑体",Font.BOLD,15));		String s=new Date().getTime()+"";request.setAttribute("time",s);	String savaPath=ServletActionContext.getServletContext().getRealPath("/")+"/uploadfiles/"+s+".png";		ChartUtilities.saveChartAsPNG(new File(savaPath),chart,600,400);this.setUrl("jiuye/jiuyelist4.jsp");return SUCCESS;}

统计的图标表示主要通过jfreechart组件来完成的。首先通过以下方法:

String banji=request.getParameter("banji");

String xi=request.getParameter("xi");

String zhuanye=request.getParameter("zhuanye");

String nianji=request.getParameter("nianji");

这句代码从页面获取查询的选项,,然后通过:

if(banji!=null&&!"".equals(banji)){

if(xi!=null&&!"".equals(xi)){

if(zhuanye!=null&&!"".equals(zhuanye)){

if(nianji!=null&&!"".equals(nianji)){

通过这句条件语句分别判断下这个值是否为空,当不为空时则通过StingBuffer来叠加组装查询的sql语句,最后当sql语句组装好了之后,通过jiuyeDao.selectBeanList方法来调用数据库的查询方法来查到符合条件的记录,在把取出来得数据库通过jfreechart组件生成对应的图片,通过this.setUrl("jiuye/jiuyelist4.jsp");方法指定传回到具体指定的是哪个JSP页面。通过这样实现对数据统计功能的实现。

岗位管理主页面

//岗位列表public String zhiweilist(){HttpServletRequest request=ServletActionContext.getRequest();String zhiweimingchen=request.getParameter("zhiweimingchen");String zhiweileibie=request.getParameter("zhiweileibie");StringBuffer sb=new StringBuffer();sb.append("where");StringBuffer sb2=new StringBuffer();sb2.append("where");if(zhiweimingchen!=null&&!"".equals(zhiweimingchen)){sb.append("zhiweimingchen like'%"+zhiweimingchen+"%'");sb.append("and");sb2.append("zhiweimingchen like'%"+zhiweimingchen+"%'");sb2.append("and");request.setAttribute("zhiweimingchen",zhiweimingchen);}		if(zhiweileibie!=null&&!"".equals(zhiweileibie)){sb.append("zhiweileibie like'%"+zhiweileibie+"%'");sb.append("and");sb2.append("zhiweileibie like'%"+zhiweileibie+"%'");sb2.append("and");request.setAttribute("zhiweileibie",zhiweileibie);}HttpSession session=request.getSession();User user=(User)session.getAttribute("user");	sb.append("zhiweilock=0 and zhiweifaburen.id="+user.getId()+"order by id desc");String where=sb.toString();sb2.append("zhiweilock=0 and zhiweifaburen.id="+user.getId());String where2=sb2.toString();		int currentpage=1;int pagesize=10;if(request.getParameter("pagenum")!=null){currentpage=Integer.parseInt(request.getParameter("pagenum"));}int total=zhiweiDao.selectBeanCount(where2);request.setAttribute("list",zhiweiDao.selectBeanList((currentpage-1)*pagesize,pagesize,where));request.setAttribute("pagerinfo",Pager.getPagerNormal(total,pagesize,currentpage,"method!zhiweilist","共有"+total+"条记录"));request.setAttribute("url","method!zhiweilist");request.setAttribute("url2","method!zhiwei");		this.setUrl("zhiwei/zhiweilist.jsp");return SUCCESS;}

        首先通过String zhiweimingchen=request.getParameter("zhiweimingchen")和String zhiweileibie=request.getParameter("zhiweileibie");这句代码从页面获取查询的选项,再用if(zhiweimingchen!=null&&!"".equals(zhiweimingchen))if(zhiweileibie!=null&&!"".equals(zhiweileibie)),通过这句条件语句分别判断下这个值是否为空,当不为空时则通过StingBuffer来叠加组装查询的sql语句,最后当sql语句组装好了之后,通过zhiweiDao.selectBeanList方法来调用数据库的查询方法来查到符合条件的记录,在通过request.setAttribute方法把查询到的记录传到显示的页面。同时通过this.setUrl("zhiwei/zhiweilist.jsp");方法指定传回到具体指定的是哪个JSP页面。通过这样实现对数据查询功能的实现,同时在该岗位列表页面定义了对岗位信息的增加,修改,删除等操作。

总结

        毕业生就业问题是大学毕业生至关重要的问题,每个合格的大学毕业生都都将就业途径视为命脉,而“毕业生就业信息管理系统”正是提供这种途径的最佳方式之一,具有极度的应用价值与实用性。

源码获取

大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻

关注公众号《编程乐学》,后台回复:24012721 自动回复

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

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

相关文章

ShardingSphere之ShardingJDBC客户端分库分表下

目录 ShardingJDBC实战 STANDARD标准分片策略 COMPLEX_INLINE复杂分片策略 CLASS_BASED自定义分片策略 HINT_INLINE强制分片策略 ShardingJDBC实战 上篇已经将需要用到的类、数据库表都准备好了&#xff0c;本篇主要介绍分片配置文件。 STANDARD标准分片策略 如果按照上篇文…

纳斯达克户外大屏背景配什么颜色效果最好-大舍传媒

纳斯达克户外大屏背景配什么颜色效果最好 引言 纳斯达克大屏是世界闻名的户外广告媒体之一&#xff0c;通过高清大屏呈现的广告内容吸引了众多目光。大舍传媒作为纳斯达克大屏的提供商和运营商之一&#xff0c;致力于创造最佳的视觉效果来吸引观众的注意力。在纳斯达克大屏投…

HCIA学习作业四

要求&#xff1a; 1、AR3还回为3.3.3.0/24 2、其他基于192.168.1.0/24进行合理划分 3、AR1和AR2均存在两个环回 4、整个网络运行RIP v2 但是不能直接宣告AR3的环回 5、全网可达&#xff0c;保障更新安全&#xff0c;尽量减少路由条目&#xff0c;避免环路 拓扑图&#xf…

EXP脚本编写

EXP脚本的编写与POC脚本编写一样&#xff0c;只需要修改_attack部分&#xff0c;替换成漏洞 利用的脚本即可。要利用Flask漏洞&#xff0c;需要用到Python的特性。关于如何在Jinja2模 板中执行Python代码&#xff0c;官方给出的方法是在模板环境中注册函数就可以进行调 用。 J…

java servlet运输公司管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web运输公司管理系统是一套完善的java web信息管理系统 serlvetdaobean mvc 模式开发 &#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主 要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5…

Multi-label classification复现

摘要 存在 theoretical results show that SA and HL are conflicting measures 1 介绍 an algorithm usually performs well on some measures while poorly on others.There are a few works studying the behavior of various measures.Although they provide valuable i…

【网站项目】基于SSM的246品牌手机销售信息系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

cmake工具的安装

1、简介 CMake 是一个开源的、跨平台的自动化建构系统。它用配置文件控制编译过程的方式和Unix的make相似&#xff0c;只是CMake并不依赖特定的编译器。CMake并不直接建构出最终的软件&#xff0c;而是产生标准的建构文件&#xff08;如 Unix 的 Makefile 或 Windows Visual C …

使用Apache POI 创建和读取excel表

目录 1. Apache POI 中文使用手册 1.1 Apache POI 项目介绍 1.2 处理组件 1.2.1 Excel 文件处理组件 1.2.2 Word 文件处理组件 1.2.3 PPT 文件处理组件 1.2.4 文档属性组件 1.2.5 Visio 文件处理组件 1.2.6 Microsoft Publisher 98&#xff08;-2007&#xff09;文件处…

mac配置L2TP连接公司内网

1. 打开系统设置 2. 打开网络 3. 点击网络页面其他服务右下角三个点&#xff0c;添加VPN配置中的L2TP 4. 配置VPN&#xff0c;服务器填写公司的服务器ip&#xff0c;共享密钥没有可以随便填写 5. 打开终端编辑文件 sudo vim /etc/ppp/opt…

机电制造ERP软件有哪些品牌?哪家的机电制造ERP系统比较好

机电制造过程比较复杂&#xff0c;涵盖零配件、采购、图纸设计、工艺派工、生产计划、物料需求计划、委外加工等诸多环节。而供应链涉及供应商的选择、材料采购价格波动分析、材料交货、品质检验等过程&#xff0c;其中某个环节出现问题都可能会影响产品交期和经营效益。 近些…

概念抽取:构建认知基础的关键步骤

目录 前言1 概念抽取任务定义1.1 概念知识图谱的关系定义1.2 实体与概念的紧密关联1.3 多样的概念关系 2 概念在认知中的重要角色2.1 语言理解的基础2.2 上下位关系的深化理解 3 概念抽取方法3.1 基于模板的抽取3.2 基于百科的抽取3.3 基于机器学习的方法 4 应用4.1 自然语言理…

【论文笔记】GPT,GPT-2,GPT-3

参考&#xff1a;GPT&#xff0c;GPT-2&#xff0c;GPT-3【论文精读】 GPT Transformer的解码器&#xff0c;仅已知"过去"&#xff0c;推导"未来" 论文地址&#xff1a;Improving Language Understanding by Generative Pre-Training 半监督学习&#xff1…

HPE ProLiant MicroServer Gen8更新固件

前几天因为没有shutdown OMV NAS便关了电源&#xff0c;导致其中一个硬盘损坏&#xff08;用DG检查有9个坏区&#xff09;&#xff0c;从而整个硬盘数据都没法读取&#xff0c;于是想着装个windows server会不会更好点&#xff0c;至少对windows熟悉点&#xff0c;硬盘扫描恢复…

代码随想录算法刷题训练营day16

代码随想录算法刷题训练营day16&#xff1a;LeetCode(104)二叉树的最大深度 、LeetCode(559)n叉树的最大深度、LeetCode(111)二叉树的最小深度、LeetCode(222)完全二叉树的节点个数 LeetCode(104)二叉树的最大深度 题目 代码 /*** Definition for a binary tree node.* publ…

Linux常见指令汇总

目录 pwd√ ls√ cd√ 对文件的理解√ which√ alias√ touch√ linux系统目录结构√ mkdir / tree √ rmdir / rm √ man√ nano√ cp√ mv√ cat√ echo√ linux设计理念和三种重定向总结√ more/less√ head/tail√ wc√ uniq√ date / cal√ find√…

PHP伪协议使用姿势

php支持的伪协议 1 file:// — 访问本地文件系统 2 http:// — 访问 HTTP(s) 网址 3 ftp:// — 访问 FTP(s) URLs 4 php:// — 访问各个输入/输出流&#xff08;I/O streams&#xff09; 5 zlib:// — 压缩流 6 data:// — 数据&#xff08;RFC 2397&#xff09; 7 glob:// —…

我的软件测试内卷之路

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 现在的大环境下&#xff0c;各行各业都开始内卷起来&#xff0c;测试也不例外&#xff0c;企业要…

分布式数据实现跨设备数据同步的N个秘密 | 分布式数据管理解析(二)

上期我们给大家带来分布式数据管理如何完成数据存储&#xff0c;数据同步&#xff0c;数据跨端访问&#xff0c;并保证整个过程中跨设备数据安全的解读。 这都得益于分布式数据管理平台抽象出的三大关键技术——分布式数据库&#xff0c;分布式文件系统和融合搜索。 那么这三…

IS-IS:10 ISIS路由渗透

ISIS的非骨干区域&#xff0c;无明细路由&#xff0c;容易导致次优路径问题。可以引入明细路由。 在IS-IS 网络中&#xff0c;所有的 level-2 和 level-1-2 路由器构成了一个连续的骨干区域。 level-1区域必须且只能与骨干区域相连&#xff0c;不同 level-1 区域之间不能直接…