基于javaweb+mysql的ssm考试在线报名管理系统(java+ssm+js+jsp+mysql)
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SSM考试在线报名管理系统(java+ssm+js+jsp+mysql)
项目介绍
考务管理员角色包含以下功能: 考务管理员登录,教务办公室管理,考场管理,考试管理,考场分配管理,报名管理等功能。
管理员角色包含以下功能: 管理员登录,学院管理,班级管理,学生管理,考务管理员管理,管理员管理等功能。
学生角色包含以下功能: 学生登录,查看我的报名,报名考试,密码修改,缴费等功能。
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.数据库:MySql 5.7版本;
技术栈
- 后端:Spring+SpringMVC+Mybatis 2. 前端:HTML+CSS+JavaScript+jsp
使用说明
- 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中application.yml配置文件中的数据库配置改为自己的配置; 4. 运行项目,输入localhost:8080/ 登录
/**
* unixbox 局部刷新中提交后刷新父页面
* @param scope
* @param message
* @param rel
*/
public static void addRelMessage(Map<String, Object> scope, String message,
String rel) {
scope.put(messageKey, message);
scope.put("rel", rel);
}
public static void addForwardUrl(Map<String, Object> scope, String url) {
if (StringUtil.notEmpty(url)) {
scope.put(forwardUrlKey, url);
scope.put(callbackType, "forward");
}
}
public static void addMessages(Map<String, Object> scope, String message,
String url) {
scope.put(messageKey, message);
addForwardUrl(scope, url);
}
/**
* 关闭当前标签
*
* @param scope
* @param message
* @param url
*/
public static void addCloseMessages(Map<String, Object> scope,
String message, String url) {
scope.put(messageKey, message);
if (StringUtil.notEmpty(url)) {
scope.put(forwardUrlKey, url);
scope.put(callbackType, "closeCurrent");
}
}
public static void addMessage(HttpServletRequest scope, String message) {
scope.setAttribute(messageKey, message);
}
String url,String rel) {
scope.put(confirmMsg, message);
scope.put(forwardUrlKey, url);
scope.put(callbackType, "forwardConfirm");
if (StringUtil.isEmpty(rel)) {
scope.put(navTabId, "navTab");
} else {
scope.put(navTabId, rel);
}
}
}
@Controller
@RequestMapping("/sys")
public class ExamRoomAction extends BaseAction {
private String actionname = "考场分配";
private String actionclass = "ExamRoom";
@Autowired
private ExamRoomService service;
@Autowired
private ExamService examService;
@Autowired
private RoomService roomService;
@RequestMapping(value = "/add2ExamRoom.do")
public String add2() {
putRequestValue("list1", examService.selectAll());
putRequestValue("list2", roomService.selectAll());
request.setAttribute("actionname", actionname);
request.setAttribute("actionclass", actionclass);
if (!user.getUserPassword().equals(oldpassword)) {
MessageUtil.addMessage(request, "旧密码错误.");
return ERROR;
}
password = md.getMD5ofStr(password);
user.setUserPassword(password);
sysUserService.updateAll(user);
MessageUtil.addMessage(request, "修改成功.");
return SUCCESS;
}
@RequestMapping(value = "/updateSimpleUserPassword.do")
public String updateSimpleUserPassword(String oldpassword, String password) {
SimpleUser user = getSimpleUser();
user = simpleUserService.get(user.getId());
MD5 md = new MD5();
oldpassword = md.getMD5ofStr(oldpassword);
if (!user.getUserPassword().equals(oldpassword)) {
MessageUtil.addMessage(request, "旧密码错误.");
return ERROR;
}
password = md.getMD5ofStr(password);
user.setUserPassword(password);
simpleUserService.updateAll(user);
MessageUtil.addMessage(request, "修改成功.");
return SUCCESS;
}
@RequestMapping(value = "/updateTeacherPassword.do")
public String updateTeacherPassword(String oldpassword, String password) {
Teacher user = getTeacher();
user = teacherService.get(user.getId());
MD5 md = new MD5();
oldpassword = md.getMD5ofStr(oldpassword);
if (!user.getUserPassword().equals(oldpassword)) {
MessageUtil.addMessage(request, "旧密码错误.");
return ERROR;
}
password = md.getMD5ofStr(password);
user.setUserPassword(password);
LinkedList<String> parmnames = new LinkedList<String>();
// 字段值集合
LinkedList<Object> parmvalues = new LinkedList<Object>();
Page p = FieldUtil.createPage(request, Dept.class, parmnames, parmvalues);
// if (parmnames.contains("type")) {
// actionname1 = (String) parmvalues.get(parmnames.indexOf("type"));
// }
Page page = service.selectPage(p, Dept.class);
session.setAttribute(Constant.SESSION_PAGE, page);
request.setAttribute("actionname", actionname);
request.setAttribute("actionclass", actionclass);
return "listDept";
} catch (Exception e) {
e.printStackTrace();
return ERROR;
}
}
}
@Controller
@RequestMapping("/sys")
}
}
@RequestMapping(value = "/addOffice.do")
public String add(Office bean) {
try {
service.add(bean);
MessageUtil.addMessage(request, "添加成功.");
return SUCCESS;
} catch (Exception e) {
e.printStackTrace();
MessageUtil.addMessage(request, "添加失败.");
return ERROR;
}
}
@RequestMapping(value = "/updateOffice.do")
public String update(Office bean) {
try {
service.update(bean);
MessageUtil.addMessage(request, "更新成功.");
return SUCCESS;
} catch (Exception e) {
e.printStackTrace();
MessageUtil.addMessage(request, "更新失败.");
return ERROR;
}
}
@RequestMapping(value = "/queryOffice.do")
public String query() {
try {
// 字段名称集合
LinkedList<String> parmnames = new LinkedList<String>();
// 字段值集合
LinkedList<Object> parmvalues = new LinkedList<Object>();
Page p = FieldUtil.createPage(request, Office.class, parmnames, parmvalues);
// if (parmnames.contains("type")) {
// actionname1 = (String) parmvalues.get(parmnames.indexOf("type"));
// }
Page page = service.selectPage(p, Office.class);
session.setAttribute(Constant.SESSION_PAGE, page);
public String get(int uid) {
try {
Teacher bean = service.get(uid);
request.setAttribute("modifybean", bean);
request.setAttribute("actionname", actionname);
request.setAttribute("actionclass", actionclass);
return "modifyTeacher";
} catch (Exception e) {
e.printStackTrace();
MessageUtil.addMessage(request, "获取信息失败.");
return ERROR;
}
}
@RequestMapping(value = "/deleteTeacher.do")
public String delete(String ids) {
try {
service.deleteTeacher(ids);
MessageUtil.addRelMessage(request, "删除信息成功.", "mainquery");
return SUCCESS;
} catch (Exception e) {
e.printStackTrace();
MessageUtil.addMessage(request, "删除信息失败.");
return ERROR;
}
}
@RequestMapping(value = "/addTeacher.do")
public String add(Teacher bean) {
try {
service.addTeacher(bean);
MessageUtil.addMessage(request, "添加成功.");
return SUCCESS;
} catch (Exception e) {
e.printStackTrace();
MessageUtil.addMessage(request, "添加失败.");
return ERROR;
}
}
@RequestMapping(value = "/updateTeacher.do")
public String update(Teacher bean) {
try {
service.updateTeacher(bean);
MessageUtil.addMessage(request, "更新成功.");
return SUCCESS;
} catch (Exception e) {
e.printStackTrace();
MessageUtil.addMessage(request, "更新失败.");
return ERROR;
}
@Controller
@RequestMapping("/sys")
public class SimpleUserAction extends BaseAction {
private String actionname = "学生";
private String actionclass = "SimpleUser";
@Autowired
private SimpleUserService service;
@Autowired
private DeptService deptService;
@Autowired
private ClazzService clazzService;
@RequestMapping(value = "/add2SimpleUser.do")
public String add2() {
putRequestValue("list1", deptService.selectAll());
putRequestValue("list2", clazzService.selectAll());
request.setAttribute("actionname", actionname);
request.setAttribute("actionclass", actionclass);
return "addSimpleUser";
}
@RequestMapping(value = "/getSimpleUser.do")
public String get(int uid) {
try {
putRequestValue("list1", deptService.selectAll());
putRequestValue("list2", clazzService.selectAll());
SimpleUser bean = service.get(uid);
request.setAttribute("modifybean", bean);
request.setAttribute("actionname", actionname);
request.setAttribute("actionclass", actionclass);
putRequestValue("list1", examService.selectAll());
return "listExamRoom";
} catch (Exception e) {
e.printStackTrace();
return ERROR;
}
}
}
@Controller
@RequestMapping("/sys")
public class RoomAction extends BaseAction {
private String actionname = "考场";
private String actionclass = "Room";
@Autowired
private RoomService service;
@Autowired
private OfficeService officeService;
@RequestMapping(value = "/add2Room.do")
public String add2() {
putRequestValue("list", officeService.selectAll());
request.setAttribute("actionname", actionname);
request.setAttribute("actionclass", actionclass);
return "addRoom";
}
@RequestMapping(value = "/getRoom.do")
public String get(int uid) {
try {
putRequestValue("list", officeService.selectAll());
public class FileUtil {
private static List<String> exts = new ArrayList<String>();
static {
exts.add("image/jpeg");
}
public static String readFile(String filepath, String encoding) {
String ret = "";
//File file = new File(filepath);
BufferedReader reader = null;
try {
reader = new BufferedReader(new InputStreamReader(new FileInputStream(filepath), encoding));
String tempString = null;
while ((tempString = reader.readLine()) != null) {
ret += tempString;
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
}
return ret;
}
public static boolean fileUploadAble(String ext) {
// return exts.contains(ext);
return true;
}
fieldMap.put("性别", "userGender");
fieldMap.put("联系电话", "userPhone");
fieldMap.put("邮箱", "userEmail");
fieldMap.put("联系地址", "userAddress");
fieldMap.put("出生日期", "userBirth");
File storageFile = new File(getResourceFile() + File.separator + filename);
List<UserBean> list = ExcelUtil.excelToList(new FileInputStream(storageFile), sheetName, UserBean.class, fieldMap, null);
service.addStudent(list);
MessageUtil.addMessage(request, "导入成功.");
return SUCCESS;
} catch (Exception e) {
e.printStackTrace();
MessageUtil.addMessage(request, "导入失败.");
return ERROR;
}
}
@RequestMapping(value = "/updateSimpleUser.do")
public String update(SimpleUser bean) {
try {
service.updateSimpleUser(bean);
MessageUtil.addMessage(request, "更新成功.");
return SUCCESS;
} catch (Exception e) {
e.printStackTrace();
MessageUtil.addMessage(request, "更新失败.");
return ERROR;
}
}
@RequestMapping(value = "/querySimpleUser.do")
public String query() {
try {
// 字段名称集合
LinkedList<String> parmnames = new LinkedList<String>();
// 字段值集合
LinkedList<Object> parmvalues = new LinkedList<Object>();
Page p = FieldUtil.createPage(request, SimpleUser.class, parmnames, parmvalues);
// if (parmnames.contains("type")) {
// actionname1 = (String) parmvalues.get(parmnames.indexOf("type"));
// }
Page page = service.selectPage(p, SimpleUser.class);
session.setAttribute(Constant.SESSION_PAGE, page);
/**
* @MethodName : excelToList
* @Description : 将Excel转化为List
* @param in
* :承载着Excel的输入流
* @param sheetIndex
* :要导入的工作表序号
* @param entityClass
* :List中对象的类型(Excel中的每一行都要转化为该类型的对象)
* @param fieldMap
* :Excel中的中文列头和类的英文属性的对应关系Map
* @param uniqueFields
* :指定业务主键组合(即复合主键),这些列的组合不能重复
* @return :List
* @throws ExcelException
*/
public static <T> List<T> excelToList(InputStream in, String sheetName, Class<T> entityClass, LinkedHashMap<String, String> fieldMap, String[] uniqueFields)
throws ExcelException {
// 定义要返回的list
List<T> resultList = new ArrayList<T>();
try {
// 根据Excel数据源创建WorkBook
Workbook wb = Workbook.getWorkbook(in);
// 获取工作表
Sheet sheet = wb.getSheet(sheetName);
// 获取工作表的有效行数
int realRows = 0;
for (int i = 0; i < sheet.getRows(); i++) {
int nullCols = 0;
for (int j = 0; j < sheet.getColumns(); j++) {
Cell currentCell = sheet.getCell(j, i);
if (currentCell == null || "".equals(currentCell.getContents().toString())) {
nullCols++;
}
}
if (nullCols == sheet.getColumns()) {
break;
} else {
realRows++;
}
}
// 如果Excel中没有数据则提示错误
if (realRows <= 1) {
}
} catch (Exception e) {
e.printStackTrace();
throw e;
} finally {
if (bis != null)
bis.close();
if (bos != null)
bos.close();
}
}
}
@Controller
@RequestMapping("/sys")
public class ExamStudentAction extends BaseAction {
private String actionname = "报名";
private String actionclass = "ExamStudent";
@Autowired
public String add(Teacher bean) {
try {
service.addTeacher(bean);
MessageUtil.addMessage(request, "添加成功.");
return SUCCESS;
} catch (Exception e) {
e.printStackTrace();
MessageUtil.addMessage(request, "添加失败.");
return ERROR;
}
}
@RequestMapping(value = "/updateTeacher.do")
public String update(Teacher bean) {
try {
service.updateTeacher(bean);
MessageUtil.addMessage(request, "更新成功.");
return SUCCESS;
} catch (Exception e) {
e.printStackTrace();
MessageUtil.addMessage(request, "更新失败.");
return ERROR;
}
}
@RequestMapping(value = "/queryTeacher.do")
public String query() {
try {
// 字段名称集合
LinkedList<String> parmnames = new LinkedList<String>();
// 字段值集合
LinkedList<Object> parmvalues = new LinkedList<Object>();
Page p = FieldUtil.createPage(request, Teacher.class, parmnames, parmvalues);
// if (parmnames.contains("type")) {
// actionname1 = (String) parmvalues.get(parmnames.indexOf("type"));
// }
Page page = service.selectPage(p, Teacher.class);
password = md.getMD5ofStr(password);
user.setUserPassword(password);
sysUserService.updateAll(user);
MessageUtil.addMessage(request, "修改成功.");
return SUCCESS;
}
@RequestMapping(value = "/updateSimpleUserPassword.do")
public String updateSimpleUserPassword(String oldpassword, String password) {
SimpleUser user = getSimpleUser();
user = simpleUserService.get(user.getId());
MD5 md = new MD5();
oldpassword = md.getMD5ofStr(oldpassword);
if (!user.getUserPassword().equals(oldpassword)) {
MessageUtil.addMessage(request, "旧密码错误.");
return ERROR;
}
password = md.getMD5ofStr(password);
user.setUserPassword(password);
simpleUserService.updateAll(user);
MessageUtil.addMessage(request, "修改成功.");
return SUCCESS;
}
@RequestMapping(value = "/updateTeacherPassword.do")
public String updateTeacherPassword(String oldpassword, String password) {
Teacher user = getTeacher();
user = teacherService.get(user.getId());
MD5 md = new MD5();
oldpassword = md.getMD5ofStr(oldpassword);
if (!user.getUserPassword().equals(oldpassword)) {
MessageUtil.addMessage(request, "旧密码错误.");
return ERROR;
}
password = md.getMD5ofStr(password);
user.setUserPassword(password);
teacherService.updateAll(user);
MessageUtil.addMessage(request, "修改成功.");
return SUCCESS;
}
@RequestMapping(value = "/logout.do")
protected double getDouble(String name) {
return Double.valueOf(getHttpServletRequest().getParameter(name));
}
protected float getFloat(String name) {
return Float.valueOf(getHttpServletRequest().getParameter(name));
}
protected void print(String message) {
try {
getHttpServletResponse().setCharacterEncoding("UTF-8");
getHttpServletResponse().getWriter().print(message);
getHttpServletResponse().getWriter().flush();
} catch (Exception e) {
e.printStackTrace();
}
}
protected Object getSessionUser() {
SessionBean sb = (SessionBean) session.getAttribute(Constant.SESSION_BEAN);
return sb.getUser();
}
protected SimpleUser getSimpleUser() {
SessionBean sb = (SessionBean) session.getAttribute(Constant.SESSION_BEAN);
return (SimpleUser) sb.getUser();
}
protected Teacher getTeacher() {
SessionBean sb = (SessionBean) session.getAttribute(Constant.SESSION_BEAN);
return (Teacher) sb.getUser();
}
protected SysUser getSysUser() {
SessionBean sb = (SessionBean) session.getAttribute(Constant.SESSION_BEAN);
return (SysUser) sb.getUser();
}
//bean.setImgFile(getUpdateFileField("imgFile"));
m1.addChild(new SubMenu("navtab" + (index++), "考试管理", "navtab", request.getContextPath() + "/sys/queryExam.do"));
m1.addChild(new SubMenu("navtab" + (index++), "考场分配管理", "navtab", request.getContextPath() + "/sys/queryExamRoom.do"));
m1.addChild(new SubMenu("navtab" + (index++), "报名管理", "navtab", request.getContextPath() + "/sys/queryExamStudentAll.do"));
list.add(m1);
}
if (getSessionUser() instanceof SimpleUser) {
MenuBean m1 = new MenuBean("系统管理");
m1.addChild(new SubMenu("navtab" + (index++), "我的报名", "navtab", request.getContextPath() + "/sys/queryExamStudent.do"));
list.add(m1);
}
return list;
}
@RequestMapping(value = "/login.do")
public String login(String username, String password, String loginType, String checkcode) throws Exception {
log.info(username + " " + password + " " + loginType);
String errorMessage = "登录失败,请稍候重试";
try {
String code = (String) session.getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);
if (code == null) {
request.getSession(false).invalidate();
return "redirect:/index.jsp";
} else {
}
checkcode = StringUtil.stringVerification(checkcode);
do {
if (!code.toLowerCase().equals(checkcode.toLowerCase())) {
errorMessage = "验证码错误";
break;
}
username = StringUtil.stringVerification(username).toLowerCase();
MD5 md = new MD5();
password = md.getMD5ofStr(password);
Object bean = sysUserService.login(username, password, loginType);
if (bean == null) {
errorMessage = "账号或者密码错误";
break;
}
SessionBean sb = new SessionBean();
sb.setUser(bean);
session.setAttribute(Constant.SESSION_BEAN, sb);
if (loginType.equals(SysUser.class.getSimpleName())) {
return "main";
putRequestValue("list1", examService.selectAll());
return "queryExamStudentAll";
} catch (Exception e) {
e.printStackTrace();
return ERROR;
}
}
}
@Controller
@RequestMapping("/sys")
public class SimpleUserAction extends BaseAction {
private String actionname = "学生";
private String actionclass = "SimpleUser";
@Autowired
private SimpleUserService service;
@Autowired
private DeptService deptService;
@Autowired
private ClazzService clazzService;
@RequestMapping(value = "/add2SimpleUser.do")
public String add2() {
putRequestValue("list1", deptService.selectAll());
putRequestValue("list2", clazzService.selectAll());
request.setAttribute("actionname", actionname);
request.setAttribute("actionclass", actionclass);
return "addSimpleUser";
}
@RequestMapping(value = "/getSimpleUser.do")
return "listClazz";
} catch (Exception e) {
e.printStackTrace();
return ERROR;
}
}
}
@Controller
@RequestMapping("/sys")
public class DeptAction extends BaseAction {
private String actionname = "学部";
private String actionclass = "Dept";
@Autowired
private DeptService service;
@RequestMapping(value = "/add2Dept.do")
public String add2() {
request.setAttribute("actionname", actionname);
request.setAttribute("actionclass", actionclass);
return "addDept";
}
@RequestMapping(value = "/getDept.do")
public String get(int uid) {
try {
Dept bean = service.get(uid);
request.setAttribute("modifybean", bean);
request.setAttribute("actionname", actionname);
request.setAttribute("actionclass", actionclass);