基于javaweb+mysql的ssm+maven大学生创新项目管理系统(java+ssm+bootstrap+jsp+mysql)
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SSM+Maven大学生创新项目管理系统(java+ssm+bootstrap+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版本; 6.是否Maven项目:是;
技术栈
- 后端:Spring+SpringMVC+Mybatis 2. 前端:JSP+CSS+JavaScript+jQuery+bootstrap
使用说明
- 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven; 若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中jdbc.properties配置文件中的数据库配置改为自己的配置; 4. 运行项目,在浏览器中输入http://localhost:8080/ssm_schoolproject_sys 登录
@RequestMapping(value = "/download")
public ResponseEntity<byte[]> download(HttpServletRequest request, ModelMap model, Integer projectid) throws IOException {
Highapply record = highapplyService.getHighapplyByProId(projectid);
String url = "";
String staticPath =
request.getSession().getServletContext().getRealPath("files/highapply.doc");
String filename = record.getProjectid() + "_" + System.currentTimeMillis() + ".doc";
String fileurl = request.getSession().getServletContext().getRealPath("files/" + filename);
PageSearchParam pageSearchParam = new PageSearchParam();
pageSearchParam.setPage(1);
pageSearchParam.setPagesize(20);
Cost cost = new Cost();
cost.setProjectid(record.getProjectid());
cost.setStatus(1);
pageSearchParam.setParams(cost);
PageResult pages = costService.getPages(pageSearchParam);
List<?> data = pages.getData();
int size = data.size();
Class cls = record.getClass();
for (int i = 1; i <= size; i++) {
Cost c = (Cost) data.get(i);
String yszckm = "yszckm" + i;
String zc = "zc" + i;
String zcyy = "zcyy" + i;
try {
Field yszckmField = cls.getDeclaredField(yszckm);
yszckmField.set(record, c.getCate());
Field zcField = cls.getDeclaredField(zc);
zcField.set(record, c.getAmount());
Field zcyyField = cls.getDeclaredField(zcyy);
zcyyField.set(record, c.getName());
} catch (Exception x) {
x.printStackTrace();
}
}
Field[] fields = cls.getDeclaredFields();
HashMap<String, String> map = new HashMap<>();
for (int i = 0; i < fields.length; i++) {
Field f = fields[i];
f.setAccessible(true);
}
planService.update(record);
return "redirect:/admin/plan";
}
//删除
@RequestMapping(value = "/del")
public String del(HttpServletRequest request,ModelMap model,Integer id) {
Plan plan=planService.getPlanById(id);
planService.delete(id);
return "redirect:/admin/plan";
}
}
/**
* @version 1.0
* controller
*/
@Controller
@RequestMapping(value = "/admin/yjslog")
public class AdminYjslogController {
@Resource
private IYjslogService yjslogService;
@Resource
private IProjectService projectService;
@Resource
private IPreuserService preuserService;
Preuser preuser = (Preuser) request.getSession().getAttribute("loginUser");
record.setPreuserid(preuser.getId());
if (record.getPreuserid() != null) {
record.setPreusername(preuserService.getPreuserById(record.getPreuserid()).getName());
}
if (record.getProjectid() != null) {
record.setProjectname(projectService.getProjectById(record.getProjectid()).getName());
}
String msg = costService.save(record);
if (msg.equals("添加成功")) {
return "redirect:/admin/cost?projectid=" + record.getProjectid();
}
request.setAttribute("msg", msg);
}
return "admin/cost/form";
}
//查看
@RequestMapping(value = "/view")
public String view(HttpServletRequest request, ModelMap model, Integer id) {
Cost record = costService.getCostById(id);
model.addAttribute("record", record);
model.addAttribute("edit", false);
model.addAttribute("preusers", preuserService.all());
return "admin/cost/form";
}
//编辑
@RequestMapping(value = "/edit")
public String edit(HttpServletRequest request, ModelMap model, Integer id) {
Cost record = costService.getCostById(id);
model.addAttribute("record", record);
model.addAttribute("edit", true);
model.addAttribute("preusers", preuserService.all());
return "admin/cost/form";
}
//更新
@RequestMapping(value = "/update", method = {RequestMethod.GET, RequestMethod.POST})
public String update(HttpServletRequest request, Cost record, ModelMap model) {
if ("post".equals(request.getMethod().toLowerCase())) {
}
if (record.getPreuserid() != null) {
record.setPreusername(preuserService.getPreuserById(record.getPreuserid()).getName());
}
costService.update(record);
return "redirect:/admin/cost";
}
model.addAttribute("record", record);
model.addAttribute("edit", false);
model.addAttribute("projects", projectService.all());
return "admin/cglog/form";
}
//编辑
@RequestMapping(value = "/edit")
public String edit(HttpServletRequest request, ModelMap model, Integer id) {
Cglog record = cglogService.getCglogById(id);
model.addAttribute("record", record);
model.addAttribute("edit", true);
model.addAttribute("projects", projectService.all());
return "admin/cglog/form";
}
//更新
@RequestMapping(value = "/update", method = {RequestMethod.GET, RequestMethod.POST})
public String update(HttpServletRequest request, Cglog record, ModelMap model) {
if ("post".equals(request.getMethod().toLowerCase())) {
}
if (record.getProjectid() != null) {
record.setProjectname(projectService.getProjectById(record.getProjectid()).getName());
}
cglogService.update(record);
return "redirect:/admin/cglog";
}
//删除
@RequestMapping(value = "/del")
public String del(HttpServletRequest request, ModelMap model, Integer id) {
Cglog cglog = cglogService.getCglogById(id);
cglogService.delete(id);
return "redirect:/admin/cglog?projectid=" + cglog.getProjectid();
}
}
model.addAttribute("record", record);
return "admin/midapply/form";
}
@RequestMapping(value = "/save", method = {RequestMethod.GET, RequestMethod.POST})
public String save(HttpServletRequest request, HttpServletResponse response, Midapply record) {
request.setAttribute("record", record);
if ("post".equals(request.getMethod().toLowerCase())) {
Project project = projectService.getProjectById(record.getProjectid());
project.setStatus(1);
projectService.update(project);
String msg = midapplyService.save(record);
if (msg.equals("添加成功")) {
Preuser preuser = (Preuser) request.getSession().getAttribute("loginUser");
if (preuser.getType() == 0) {
return "redirect:/admin/project";
}
if (preuser.getType() == 1) {
return "redirect:/admin/project?xueyuanid=" + preuser.getXueyuanid();
}
if (preuser.getType() == 2) {
return "redirect:/admin/project?userid=" + preuser.getId();
}
if (preuser.getType() == 3) {
return "redirect:/admin/project?teaid=" + preuser.getId();
}
if (preuser.getType() == 4) {
return "redirect:/admin/project?preuserid=" + preuser.getId();
}
return "redirect:/admin/project";
}
request.setAttribute("msg", msg);
}
return "admin/midapply/form";
}
//查看
@RequestMapping(value = "/view")
public String view(HttpServletRequest request, ModelMap model, Integer id) {
Midapply record = midapplyService.getMidapplyById(id);
model.addAttribute("record", record);
model.addAttribute("edit", false);
return "admin/midapply/form";
}
@RequestMapping(value = "/view")
public String view(HttpServletRequest request, ModelMap model, Integer id) {
Clazz record = clazzService.getClazzById(id);
model.addAttribute("record", record);
model.addAttribute("edit", false);
model.addAttribute("pros", proService.all());
model.addAttribute("xueyuans", xueyuanService.all());
model.addAttribute("pro", proService.getProById(record.getProid()));
return "admin/clazz/form";
}
//编辑
@RequestMapping(value = "/edit")
public String edit(HttpServletRequest request, ModelMap model, Integer id) {
Clazz record = clazzService.getClazzById(id);
model.addAttribute("record", record);
model.addAttribute("edit", true);
model.addAttribute("pros", proService.all());
model.addAttribute("xueyuans", xueyuanService.all());
return "admin/clazz/form";
}
//更新
@RequestMapping(value = "/update", method = {RequestMethod.GET, RequestMethod.POST})
public String update(HttpServletRequest request, Clazz record, ModelMap model) {
if ("post".equals(request.getMethod().toLowerCase())) {
}
if (record.getProid() != null) {
record.setProname(proService.getProById(record.getProid()).getName());
}
clazzService.update(record);
return "redirect:/admin/clazz";
}
//删除
@RequestMapping(value = "/del")
public String del(HttpServletRequest request, ModelMap model, Integer id) {
Clazz clazz = clazzService.getClazzById(id);
clazzService.delete(id);
return "redirect:/admin/clazz";
}
}
long expireTime = System.currentTimeMillis() + 60000;
// 将验证码放到session中
String validateCode = String.valueOf((int)((Math.random()*9+1)*1000));
session.setAttribute(VALIDATE_CODE, validateCode);//将加密后的验证码放到session中,确保安全
session.setAttribute(EXPIRE_TIME, expireTime);
// 输出验证码图片
BufferedImage bufferedImage = captchaProducer.createImage(validateCode);
ServletOutputStream out = response.getOutputStream();
ImageIO.write(bufferedImage, "png", out);
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 后台退出
*/
@RequestMapping(value = "/logout")
public String logout(HttpServletRequest request, HttpServletResponse response) {
request.getSession().removeAttribute("loginUser");
return "redirect:/admin";
}
}
pageSearch.setParams(searchParam);
PageResult pageResult = highapplyService.getPages(pageSearch);
model.addAttribute("datas", pageResult);
model.addAttribute("record", searchParam);
return "admin/highapply/page";
}
//新增
@RequestMapping(value = "/add", method = {RequestMethod.GET, RequestMethod.POST})
public String add(HttpServletRequest request, Highapply record, ModelMap model) {
if ("post".equals(request.getMethod().toLowerCase())) {
String msg = highapplyService.save(record);
if (msg.equals("添加成功")) {
return "redirect:/admin/highapply";
}
model.addAttribute("msg", msg);
}
if (record.getProjectid() != null) {
Project project = projectService.getProjectById(record.getProjectid());
record.setProjectname(project.getName());
record.setProtype(project.getType() + "");
record.setProlevel(project.getType() + "");
record.setPreusername(project.getUsername());
}
model.addAttribute("projects", projectService.all());
if (record.getPreuserid() != null) {
record.setPreusername(preuserService.getPreuserById(record.getPreuserid()).getName());
}
model.addAttribute("preusers", preuserService.all());
model.addAttribute("record", record);
return "admin/highapply/form";
}
@RequestMapping(value = "/save", method = {RequestMethod.GET, RequestMethod.POST})
public String save(HttpServletRequest request, HttpServletResponse response, Highapply record, int status) {
request.setAttribute("record", record);
if ("post".equals(request.getMethod().toLowerCase())) {
if (record.getProjectid() != null) {
Project projectById = projectService.getProjectById(record.getProjectid());
record.setProjectname(projectById.getName());
if (status == 1) {
projectById.setProcess(1);
projectById.setStatus(1);
if (projectById.getTeaid() == null) {
projectById.setStatus(2);
}
projectService.update(projectById);
@Resource
private IProService proService;
@Resource
private IXueyuanService xueyuanService;
/**
*列表
*/
@RequestMapping(value = "", method = { RequestMethod.GET, RequestMethod.POST })
public String index(HttpServletRequest request, ModelMap model, Pro searchParam, Integer page, Integer pageSize) {
PageSearchParam pageSearch = new PageSearchParam();
pageSearch.setPage(page == null ? 1 : page);
pageSearch.setPagesize(pageSize == null ? 20 : pageSize);
pageSearch.setParams(searchParam);
PageResult pageResult = proService.getPages(pageSearch);
model.addAttribute("datas", pageResult);
model.addAttribute("record", searchParam);
model.addAttribute("xueyuans", xueyuanService.all());
return "admin/pro/page";
}
//新增
@RequestMapping(value = "/add", method = { RequestMethod.GET, RequestMethod.POST })
public String add(HttpServletRequest request, Pro record, ModelMap model) {
if ("post".equals(request.getMethod().toLowerCase())) {
String msg = proService.save(record);
if (msg.equals("添加成功")) {
return "redirect:/admin/pro";
}
model.addAttribute("msg", msg);
}
if(record.getXueyuanid()!=null){
record.setXueyuanname(xueyuanService.getXueyuanById(record.getXueyuanid()).getName());
}
model.addAttribute("xueyuans", xueyuanService.all());
model.addAttribute("record", record);
return "admin/pro/form";
}
@RequestMapping(value = "/save", method = { RequestMethod.GET, RequestMethod.POST })
public String save(HttpServletRequest request, HttpServletResponse response, Pro record) {
request.setAttribute("record", record);
if ("post".equals(request.getMethod().toLowerCase())) {
if(record.getXueyuanid()!=null){
record.setXueyuanname(xueyuanService.getXueyuanById(record.getXueyuanid()).getName());
}
String msg = proService.save(record);
headers.setContentDispositionFormData("attachment", filename);
//application/octet-stream : 二进制流数据(最常见的文件下载)。
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
File file = new File(fileurl);
return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),
headers, HttpStatus.CREATED);
}
}
/**
* @version 1.0
* 项目管理 controller
*/
@Controller
@RequestMapping(value = "/admin/project")
public class AdminProjectController {
@Resource
private IProjectService projectService;
@Resource
private IPreuserService preuserService;
@Resource
}
if (record.getTeaid() != null) {
record.setTeaname(preuserService.getPreuserById(record.getTeaid()).getName());
}
if (record.getParentid() != null) {
record.setParentname(projectService.getProjectById(record.getParentid()).getName());
}
Preuser preuser = (Preuser) request.getSession().getAttribute("loginUser");
if (preuser != null) {
record.setUserid(preuser.getId());
record.setUsername(preuser.getName());
}
record.setXueyuanid(preuser.getXueyuanid());
record.setXueyuanname(preuser.getXueyuanname());
String msg = projectService.save(record);
if (msg.equals("添加成功")) {
if (preuser.getType() == 0) {
return "redirect:/admin/project";
}
if (preuser.getType() == 1) {
return "redirect:/admin/project?xueyuanid=" + preuser.getXueyuanid();
}
if (preuser.getType() == 2) {
return "redirect:/admin/project?userid=" + preuser.getId();
}
if (preuser.getType() == 3) {
return "redirect:/admin/project?teaid=" + preuser.getId();
}
if (preuser.getType() == 4) {
return "redirect:/admin/project?preuserid=" + preuser.getId();
}
return "redirect:/admin/project";
}
request.setAttribute("msg", msg);
}
return "admin/project/form";
}
//查看
@RequestMapping(value = "/view")
public String view(HttpServletRequest request, ModelMap model, Integer id) {
Project record = projectService.getProjectById(id);
model.addAttribute("record", record);
model.addAttribute("edit", false);
model.addAttribute("users", preuserService.all());
model.addAttribute("plans", planService.all());
model.addAttribute("changelog", changelogService.getChangelogByProId(id));
model.addAttribute("plan", planService.getPlanById(record.getPlanid()));
model.addAttribute("report", reportService.getReportByProId(id));
model.addAttribute("now", new Date());
return "admin/project/form";
}
//编辑
@RequestMapping(value = "/edit")
public String edit(HttpServletRequest request, ModelMap model, Integer id) {
Project record = projectService.getProjectById(id);
model.addAttribute("record", record);
model.addAttribute("edit", true);
model.addAttribute("users", preuserService.all());
model.addAttribute("plans", planService.all());
List<Preuser> preusers = preuserService.allByType(2);
preusers.addAll(preuserService.allByType(3));
model.addAttribute("teas", preusers);
return "admin/project/form";
}
//更新
@RequestMapping(value = "/update", method = {RequestMethod.GET, RequestMethod.POST})
public String update(HttpServletRequest request, Project record, ModelMap model) {
if ("post".equals(request.getMethod().toLowerCase())) {
}
if (record.getUserid() != null) {
record.setUsername(preuserService.getPreuserById(record.getUserid()).getName());
}
if (record.getPlanid() != null) {
record.setPlanname(planService.getPlanById(record.getPlanid()).getName());
}
if (record.getTeaid() != null) {
record.setTeaname(preuserService.getPreuserById(record.getTeaid()).getName());
}
projectService.update(record);
Preuser preuser = (Preuser) request.getSession().getAttribute("loginUser");
if (preuser.getType() == 0) {
return "redirect:/admin/project";
}
if (preuser.getType() == 1) {
return "redirect:/admin/project?xueyuanid=" + preuser.getXueyuanid();
}
if (preuser.getType() == 2) {
return "redirect:/admin/project?userid=" + preuser.getId();
}
if (preuser.getType() == 3) {
return "redirect:/admin/project?teaid=" + preuser.getId();
return "admin/yjslog/form";
}
//编辑
@RequestMapping(value = "/edit")
public String edit(HttpServletRequest request, ModelMap model, Integer id) {
Yjslog record = yjslogService.getYjslogById(id);
model.addAttribute("record", record);
model.addAttribute("edit", true);
model.addAttribute("projects", projectService.all());
model.addAttribute("preusers", preuserService.all());
return "admin/yjslog/form";
}
//更新
@RequestMapping(value = "/update", method = {RequestMethod.GET, RequestMethod.POST})
public String update(HttpServletRequest request, Yjslog record, ModelMap model) {
if ("post".equals(request.getMethod().toLowerCase())) {
}
if (record.getProjectid() != null) {
record.setProjectname(projectService.getProjectById(record.getProjectid()).getName());
}
if (record.getPreuserid() != null) {
record.setPreusername(preuserService.getPreuserById(record.getPreuserid()).getName());
}
yjslogService.update(record);
return "redirect:/admin/yjslog";
}
//删除
@RequestMapping(value = "/del")
public String del(HttpServletRequest request, ModelMap model, Integer id) {
Yjslog yjslog = yjslogService.getYjslogById(id);
yjslogService.delete(id);
return "redirect:/admin/yjslog?projectid=" + yjslog.getProjectid();
}
}
* @version 1.0
* 变更记录 controller
*/
@Controller
@RequestMapping(value = "/admin/changelog")
public class AdminChangelogController {
@Resource
private IChangelogService changelogService;
@Resource
private IProjectService projectService;
@Resource
private IProjectapplyService projectapplyService;
@Resource
private IPreuserService preuserService;
/**
* 列表
*/
@RequestMapping(value = "", method = {RequestMethod.GET, RequestMethod.POST})
public String index(HttpServletRequest request, ModelMap model, Changelog searchParam, Integer page, Integer pageSize) {
PageSearchParam pageSearch = new PageSearchParam();
pageSearch.setPage(page == null ? 1 : page);
pageSearch.setPagesize(pageSize == null ? 20 : pageSize);
pageSearch.setParams(searchParam);
PageResult pageResult = changelogService.getPages(pageSearch);
model.addAttribute("datas", pageResult);
model.addAttribute("record", searchParam);
return "admin/changelog/page";
}
//新增
@RequestMapping(value = "/add", method = {RequestMethod.GET, RequestMethod.POST})
public String add(HttpServletRequest request, Changelog record, ModelMap model) {
if ("post".equals(request.getMethod().toLowerCase())) {
record.setCreated(new Date());
String msg = changelogService.save(record);
if (msg.equals("添加成功")) {
return "redirect:/admin/changelog";
}
model.addAttribute("msg", msg);
}
if (record.getProjectid() != null) {
Project project = projectService.getProjectById(record.getProjectid());
record.setProjectname(project.getName());
base = base.length() == 0 ? "" : base + "/";
for (int i = 0; i < fl.length; i++) {
zip(out, fl[i], base + fl[i].getName());
}
} else { // 压缩目录中的所有文件
out.putNextEntry(new ZipEntry(base));
FileInputStream in = new FileInputStream(f);
int b;
while ((b = in.read()) != -1) {
out.write(b);
}
in.close();
}
}
private void createdFileOne(String dir, String filePath, HttpServletRequest request, Integer projectid) {
Project project = projectService.getProjectById(projectid);
if (project.getType() > 0) {
Highapply record = highapplyService.getHighapplyByProId(projectid);
if (record != null) {
String url = "";
String staticPath =
request.getSession().getServletContext().getRealPath("files/highapply.doc");
String filename = "apply" + filePath + ".doc";
String fileurl = dir + "/" + filename;
createFile(staticPath, fileurl, dir, record.getClass(), record);
}
} else {
Projectapply record = projectapplyService.getProjectapplyByProjectId(projectid);
if (record != null) {
String url = "";
String staticPath =
request.getSession().getServletContext().getRealPath("files/projectapply.doc");
String filename = "apply" + filePath + ".doc";
String fileurl = dir + "/" + filename;
createFile(staticPath, fileurl, dir, record.getClass(), record);
}
}
Midapply midapplyByProId = midapplyService.getMidapplyByProId(projectid);
if (midapplyByProId != null) {
String filename2 = "mid" + filePath + ".doc";
String fileurl2 = dir + "/" + filename2;
createFile(request.getSession().getServletContext().getRealPath("files/midapply.doc"),
fileurl2,
dir, midapplyByProId.getClass(), midapplyByProId);
}
return "admin/midapply/form";
}
//更新
@RequestMapping(value = "/update", method = {RequestMethod.GET, RequestMethod.POST})
public String update(HttpServletRequest request, Midapply record, ModelMap model) {
if ("post".equals(request.getMethod().toLowerCase())) {
}
midapplyService.update(record);
return "redirect:/admin/midapply";
}
//删除
@RequestMapping(value = "/del")
public String del(HttpServletRequest request, ModelMap model, Integer id) {
Midapply midapply = midapplyService.getMidapplyById(id);
midapplyService.delete(id);
return "redirect:/admin/midapply";
}
}
/**
* @version 1.0
* controller
*/
@Controller
@RequestMapping(value = "/admin/cglog")
public class AdminCglogController {
@Resource
//新增
@RequestMapping(value = "/add", method = {RequestMethod.GET, RequestMethod.POST})
public String add(HttpServletRequest request, Yjslog record, ModelMap model) {
if ("post".equals(request.getMethod().toLowerCase())) {
record.setCreated(new Date());
String msg = yjslogService.save(record);
if (msg.equals("添加成功")) {
return "redirect:/admin/yjslog";
}
model.addAttribute("msg", msg);
}
if (record.getProjectid() != null) {
record.setProjectname(projectService.getProjectById(record.getProjectid()).getName());
}
model.addAttribute("projects", projectService.all());
if (record.getPreuserid() != null) {
record.setPreusername(preuserService.getPreuserById(record.getPreuserid()).getName());
}
model.addAttribute("preusers", preuserService.all());
model.addAttribute("record", record);
return "admin/yjslog/form";
}
@RequestMapping(value = "/save", method = {RequestMethod.GET, RequestMethod.POST})
public String save(HttpServletRequest request, HttpServletResponse response, Yjslog record) {
request.setAttribute("record", record);
if ("post".equals(request.getMethod().toLowerCase())) {
record.setCreated(new Date());
if (record.getProjectid() != null) {
record.setProjectname(projectService.getProjectById(record.getProjectid()).getName());
}
if (record.getPreuserid() != null) {
record.setPreusername(preuserService.getPreuserById(record.getPreuserid()).getName());
}
String msg = yjslogService.save(record);
if (msg.equals("添加成功")) {
return "redirect:/admin/yjslog?projectid=" + record.getProjectid();
}