🍅文末获取源码联系🍅
👇🏻 精彩项目推荐订阅👇🏻 不然下次找不到哟
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人哦
系统介绍
随着高校教育体制的改革大学生人数的不断增加,毕业生就业制度发生了根本的变化。单位和学生走向人才市场,双向选择,择优录用。因此在这样的情况下,在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.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://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.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://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.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://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");
response
getWriter()
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 自动回复