java+ssm+sql就业管理系统
系统的功能需求
系统开发的总体任务是实现就业信息管理的系统化、规范化和自动化。系统功能需求分析是在系统开发的总体任务的基础上完成的。需要完成的功能主要有:
代码已经上传github,下载地址:https://github.com/21503882/employment
1、能够完成对学校的专业信息、院系信息等基本信息进行管理,实现基本信息的添加、删除及修改操作。
2、完成对毕业生基本信息的管理操作,实现学生信息的录入、删除、修改及查询的操作。同时对毕业生的就业信息进行登记管理
3、完成学校教师信息的管理,对院校教师情况进行管理。
4、完成学生就业情况的统计操作,分别按院系或专业进行统计。统计出已就业人数、未就业人数、总人数计算出就业率。
本系统的管理员功能模块划分如图4-1所示:
图4-1管理员功能模块
本系统的教师功能模块划分如图4-2所示:
图4-2教师功能模块
本系统的学生功能模块划分如图4-3所示:
图4-3学生功能模块
登录窗口
学生注册窗口
5.3 管理员功能模块详细设计
5.3.1 系统登录模块
本模块完成系统管理员用户的身份验证的功能,为保证系统的安全性,对于用户进行身份验证是非常有必要的,只有合法的用户才可以进入本系统。对应的磁盘文件为login.jsp,身份验证模块的界面设计如图5-4所示:
图5-4系统登录模块
5.3.2 系统主界面
成功经过身份验证之后,进去系统的主界面,在这个界面中,管理员可以进行功能选择,执行本系统的各项功能。系统主界面如图5-5所示:
图5-5 系统主界面
5.3.3 毕业生信息管理模块
1.学生信息管理模块
学生信息管理模块完成学生基本信息的添加、删除及修改的功能。对应的磁盘文件为stmanager.jsp,界面设计如图5-6所示:
图5-6 学生信息管理界面
2.学生信息添加模块
学生信息添加模块完成学生信息的添加功能。对应的磁盘文件为modst.jsp?sid= ,学生信息添加模块的设计如图5-7所示:
图5-7 学生信息添加界面
5.3.4教师信息管理模块
教师信息管理模块,完成教师信息的管理功能。
1.教师信息管理主页面
在主页面中显示所有已经录入的教师信息。对应的磁盘文件为tumanager.jsp,页面设计如图5-8所示:
图5-8教师信息管理模块主界面
2.教师信息修改页面
在主页面中点击某个教师的修改按钮,进入修改教师信息页面。对应的磁盘文件为modtu.jsp?sid= ,页面设计如图5-9所示:
图5-9修改教师信息界面
5.3.5学生信息查询模块
学生信息查询模块完成学生信息的查询操作。在学生信息查询模块中输入姓名进行查询,对应的磁盘文件为stfind.jsp,学生信息查询管理模块的设计如图5-10所示:
图5-10学生信息查询界面
5.3.6就业情况统计模块
学生就业情况统计模块,完成学生就业人数、未就业人数、就业率的统计功能。可以按照院系、专业进行分类统计。对应的磁盘文件为jyltj.jsp,就业情况统计模块的设计如图5-11所示:
图5-11 就业情况统计页面
5.3.7院系管理模块
管理员对学校的院系信息进行管理。
1.院系管理主页面
在主页面中提供了新增和删除院系的功能链接。对应的磁盘文件为yxmanager.jsp,页面设计如图5-12所示:
图5-12 院系管理主页面
2.新增院系管理页面
在主页面中点击新增院系按钮,进入新增院系页面。对应的磁盘文件为addyx.jsp,页面设计如图5-13所示:
图5-13 新增院系管理页面
5.3.8专业管理模块
学校专业管理模块完成学校开设专业信息的添加、删除功能。
1.专业管理主页面
在主页中显示所有已经录入的专业信息。点击删除按钮将删除专业信息。对应的磁盘文件为mzmanager.jsp,专业管理模块的界面设计如图5-14所示:
图5-14专业管理主页面
2.添加专业信息页面
向系统中增加新的专业信息。对应的磁盘文件为addmz.jsp,添加专业管理模块的界面设计如图5-15所示:
图5-15添加专业管理页面
5.3.9修改密码模块
登录系统的管理员修改自己的密码。对应的磁盘文件为modipass.jsp,界面设计如图5-16所示:
图5-16修改密码模块
5.4 教师功能模块详细设计
5.4.1教师登录模块
在登录页面中输入教师的编号作为用户名,选择教师单选框即可登录教师功能模块。对应的磁盘文件为login.jsp,界面设计如图5-17所示:
图5-17 教师登录界面
5.4.2教师功能模块主页面
教师输入正确的用户名和密码后进入教师功能模块的主页面。在主页面中为教师提供了学生信息查询和就业情况统计功能。教师功能模块主界面设计如图5-18所示:
图5-18教师功能模块主界面
5.4.3学生信息查询模块
教师查询学生信息,输入学生姓名可以快速查到该学生信息。对应的磁盘文件为stfind.jsp,界面设计如图5-19所示:
图5-19 学生信息查询模块
5.4.4就业情况统计模块
教师统计学生就业情况。
1.就业统计主页面
可以按院系、专业或统计全部学生的就业信息。对应的磁盘文件为jyltj.jsp,界面设计如图5-20所示:
图5-20就业统计主页面
2.就业统计结果页面
统计已就业人数、未就业人数、总人数和就业率。对应的磁盘文件为jyl.jsp,界面设计如图5-21所示:
图5-21就业统计结果页面
5.5 学生功能模块详细设计
5.5.1学生登录模块
在登录页面中输入学生的编号作为用户名,选择学生单选框即可登录学生功能模块。对应的磁盘文件为login.jsp,界面设计如图5-22所示:
图5-22 学生登录界面
5.5.2学生功能模块主页面
学生输入正确的用户名和密码后进入学生功能模块的主页面。在主页面中为学生提供了浏览个人信息功能。主界面设计如图5-23所示:
图5-23 学生信息查询模块
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.stereotype.Controller;
import com.hdxy.vehicle.base.Pagination;
import com.hdxy.vehicle.entity.User;
import com.hdxy.vehicle.service.UserService;
import com.hdxy.vehicle.util.ActionResult;
/**
* TODO 类描述
*
* @version 0.0.1
* @author generator
* @date 2019-02-18
*/
@Controller
public class UserAction {
@Autowired
private UserService userService;
/**
* 显示所用用户信息并分页
*
* @param entity
* @return
*/
@ResponseBody
@RequestMapping("/isAdmin/findUser")
public Pagination<User> findUser(User entity) {
try {
return userService.findPageByCondition(entity);
} catch (Exception e) {
e.printStackTrace();
}
return new Pagination<>(0, new ArrayList<>());
}
/**
* 删除用户信息
*
* @param id
* @return
*/
@ResponseBody
@RequestMapping("/isAdmin/delUser")
public ActionResult delUser(Integer id) {
ActionResult res = new ActionResult();
try {
userService.deleteById(id);
res.setSuccess(true);
res.setMsg("删除成功");
} catch (Exception e) {
e.printStackTrace();
res.setMsg("出现异常,删除失败");
}
return res;
}
/**
* 跳转编辑页面
*
* @param id
* @return
*/
@RequestMapping("/isAdmin/forwardEditUser")
public ModelAndView forwardEditUser(Integer id) {
ModelAndView model = new ModelAndView();
model.setViewName("backstage/editUser");
try {
User User = userService.findById(id);
model.addObject("userEdit", User);
} catch (Exception e) {
e.printStackTrace();
}
return model;
}
/**
* 修改用户信息
*
* @param entity
* @return
*/
@ResponseBody
@RequestMapping("/isAdmin/upUser")
public ActionResult upUser(User entity) {
ActionResult res = new ActionResult();
try {
userService.updateById(entity);
res.setSuccess(true);
res.setMsg("修改成功");
} catch (Exception e) {
e.printStackTrace();
res.setMsg("出现异常,修改失败");
}
return res;
}
/**
* 异步上传图片
*
* @param image
* @param response
*/
@ResponseBody
@RequestMapping(value = "/isAdmin/upUserPhoto", method = RequestMethod.POST)
public Map<String, Object> upImage(@RequestParam("file") MultipartFile image) {
Map<String, Object> map = new HashMap<>();
String file = "E:/development/apache-tomcat-8.5.15/webapps/hdxy-vehicle/";
String userPhoto = null;
try {
// 获取图片名字,构建路径
userPhoto = "img/user_photo/" + image.getOriginalFilename();
File filepath = new File(file + userPhoto);
image.transferTo(filepath);// 保存文件
Map<String, Object> data = new HashMap<>();
data.put("userPhoto", userPhoto);
map.put("code", 0);
map.put("msg", "上传成功");
map.put("data", data);
} catch (IOException e) {
e.printStackTrace();
}
return map;
}
/**
* 添加人员信息
*
* @param entity
* @return
*/
@ResponseBody
@RequestMapping("/isAdmin/addUser")
public ActionResult addUser(User entity) {
ActionResult res = new ActionResult();
try {
entity.setRegtime(new Date());
if (StringUtils.isEmpty(entity.getUserPhoto())) {
entity.setUserPhoto("img/user_photo/erha.jpg");
}
userService.save(entity);
res.setSuccess(true);
res.setMsg("添加成功");
} catch (Exception e) {
e.printStackTrace();
res.setMsg("出现异常,添加失败");
}
return res;
}
/**
* 登录判断
*
* @param entity
* @param session
* @return
*/
@ResponseBody
@RequestMapping("user/isUserLogin")
public ActionResult isUserLogin(User entity, HttpSession session) {
ActionResult result = new ActionResult();
try {
if (StringUtils.isNotEmpty(entity.getAccount()) && StringUtils.isNotEmpty(entity.getPassword())) {
List<User> isUser = userService.findByCondition(entity);
if (isUser.size() > 0 && isUser != null) {
if(isUser.get(0).getState()==1) {
session.setAttribute("user", isUser.get(0));
isUser.get(0).setLogtime(new Date());
// 更新当前登录时间
userService.updateById(isUser.get(0));
result.setMsg("登录成功!");
result.setSuccess(true);
}else {
result.setMsg("登录失败,账号被冻结!");
}
} else {
result.setMsg("登录失败,账号和密码不一致!");
}
} else {
result.setMsg("登录失败,账号或密码不能为空!");
}
} catch (Exception e) {
e.printStackTrace();
result.setMsg("登录失败,出现异常!");
}
return result;
}
/**
* 退出登录
*
* @param session
* @return
*/
@RequestMapping("/isUser/exitLogin")
public String exitLogin(HttpSession session) {
session.removeAttribute("user");
return "redirect:/index.jsp";
}
/**
* 注册
*
* @param entity
* @param session
* @return
*/
@ResponseBody
@RequestMapping("/user/userReg")
public ActionResult userReg(User entity) {
ActionResult result = new ActionResult();
User isUser = new User();
isUser.setAccount(entity.getAccount());
try {
if (StringUtils.isNotEmpty(entity.getAccount()) && StringUtils.isNotEmpty(entity.getPassword())) {
List<User> users = userService.findByCondition(isUser);
if (users.size() > 0 && users != null) {
result.setMsg("用户已存在,请重新输入登录账号!");
} else {
result.setMsg("注册成功!");
entity.setRegtime(new Date());
entity.setState(1);
entity.setUserPhoto("img/user_photo/erha.jpg");
userService.save(entity);
result.setSuccess(true);
}
} else {
result.setMsg("注册失败,账号或密码不能为空!");
}
} catch (Exception e) {
e.printStackTrace();
result.setMsg("注册失败,出现异常!");
}
return result;
}
}
代码已经上传github,下载地址:https://github.com/21503882/employment