本选题的意义:
自2015年李克强总理在政府工作报告提出了“全民创业、万众创新”的口号后,社会各个层面都对创新创业给与了很大的支持,相关的大赛也相继出现。近年来,创青春全国大学生创业大赛、中国创新创业大赛、“互联网+”大学生创新创业大赛等创新创业相关大赛受到广泛关注,参赛人数之多和参赛面之广都前所未有,创新创业大赛已成为各高校深化教育改革的新载体。
在信息技术和网络技术迅猛发展和普及的今天,为了保证大赛稳定高效的运作,一个保证管理科学、运行高效且稳定、操作便捷的管理系统成为迫切需求。而为了让大赛有一个可靠可信的结果,评审过程的公平公正起到了莫大的作用。在线评审系统可以充分发挥计算机在信息处理方面的优势,将参赛作品合理分配给评审专家,评审专家在线进行评审,节省了人力、物力、财力,提高了劳动效率,加快了评审进程。
总之,大学生创新创业在线评审系统超越了传统比赛的通过纸质材料进行评审的限制,将给参赛学生和评审专家带来极大的便利。这样使整个评审过程变得更加的科学和公正,保证了大赛能稳定高效地进行。因此,本课题具有较强的现实意义和使用价值。
研究目标:
大学生创新创业参赛作品在线评审系统是基于网络技术进行开发的,旨在提高评审的可靠性、可操作性、客观性、实用性和有效性;以达到加快评审进程,保证大赛稳定进行的目的。该系统具有高效稳定,操作简单,界面美观的特点,主要包括的功能模块有以下几点:
用户管理功能:系统管理员对所有用户进行添加、审核、删除和修改等操作,评审专家对参赛作品进行审核和查询等操作。
参赛作品管理功能:系统管理员可以对参赛作品进行添加、删除、修改和查询等操作。
权限管理功能:系统管理员可以根据评审专家的需要赋予他们相应的使用权限。
参赛作品成绩管理功能:系统管理员和评审专家通过学生的参赛作品进行成绩的统计和查询。
摘要
本文首先研究并介绍国内外目前的背景和现状,在此基础上给出论文的主要研究内容,其次,对大学生创新创业在线评审系统的需求进行了分析。再次,对大学生创新创业在线评审系统进行了总体设计,根据其总体设计、软件架构和总体功能模块进行了详细设计,作出了业务流程图以及数据流程图。总体上把大学生创新创业在线评审系统分为了评审专家、项目管理员、管理员三种角色,其中项目管理员角色主要包括查看公告、项目管理、项目分配、项目查询、查看个人信息、修改密码等;评审专家角色主要包括:查看公告、项目评审、项目查询、查看个人信息、修改密码等;管理员角色主要包括:项目管理员管理、评审专家管理、项目管理、项目查询、公告管理、查看个人信息、修改密码等。在最后根据详细设计的结果,运用JavaEE技术平台,使用更灵活的B/S开发模式和经典的SSM组合框架实现系统的MVC分层架构,并结合MySQL数据库实现了大学生创新创业在线评审系统的信息化管理,并列出核心代码和部分主要页面。还对系统的核心功能就行了压力测试。
关键词:创新创业项目;项目评审;SSM;MySQL
3.2.1功能需求
大学生创新创业参赛作品在线评审系统研究的基本内容有:
1.大学生创新创业参赛作品在线评审系统的设计要求和目标。该系统设计要模块化,使系统具有一定程度的可拓展性。此外,要具有安全性,在设计时需对数据加密。设计时还要保证系统的稳定性,能让系统长时间运行。
2.对系统功能的两大功能模块——系统管理员模块和评审专家模块进行分析描述。其中系统管理员模块需实现的功能有:
(1)系统管理员可以设置等事项创新创业项目的评价指标;
(2)系统管理员可以将大赛相关链接发送给评审专家;
(3)管理员可以分配参赛作品给评审专家。评审专家模块需实现的功能有:
(1)评审专家可以通过给定的用户名和密码登录评审系统;
(2)评审专家可以根据给定的指标对参赛作品进行打分。
3.设计系统总体架构,根据系统管理员和评审专家两大功能模块设计各个子功能模块:用户登录模块、用户激活验证模块、参赛作品管理模块、通知模块、数据统计分析模块等。
4.数据库设计。根据需求对数据实体进行设计,相关的数据库关系表有评审专家库数据表、参赛作品数据表、参赛作品评价指标数据表等。
5.系统功能的实现。根据系统需求和设计目标实现系统功能。
3.3用例分析
大学生创新创业在线评审系统分为了评审专家、项目管理员、管理员三种角色,其中项目管理员角色主要包括查看公告、项目管理、项目查询、查看个人信息、修改密码等。
评审专家角色主要包括:查看公告、项目评审、项目查询、查看个人信息、修改密码等。
管理员角色主要包括:项目管理员管理、评审专家管理、项目管理、项目查询、公告管理、查看个人信息、修改密码等。
4.1系统总体模块设计
根据前面的分析研究,大学生创新创业在线评审系统的功能性需求可大致分为评审专家、项目管理员、管理员三大部分。
4.4.2物理设计
根据本系统主要功能模块需求,大学生创新创业在线评审系统将由多个数据表组成,下面主要介绍数据库中核心的几个数据表内容。
(1)用户表:用于存储系统用户的所有信息,具体内容如下表4-1所示。
表4-1用户user表
列名 | 注释 | 主键 | 外键 | 类型 |
id | 编码 | 是 | 否 | int |
no | 专家号 | 否 | 否 | varchar(255) |
username | 用户名 | 否 | 否 | varchar(255) |
password | 密码 | 否 | 否 | varchar(255) |
name | 姓名 | 否 | 否 | varchar(255) |
birthday | 出身日期 | 否 | 否 | varchar(255) |
tel | 电话 | 否 | 否 | varchar(255) |
sex | 性别 | 否 | 否 | varchar(255) |
post | 职位 | 否 | 否 | varchar(255) |
| 邮箱 | 否 | 否 | varchar(255) |
intime | 入职时间 | 否 | 否 | varchar(255) |
isadmin | 0:管理员 1:项目管理员 2:评审专家 | 否 | 否 | varchar(255) |
(2)公告信息表:用于存储学校中院系的基本信息。
表4-2公告信息news表
列名 | 注释 | 主键 | 外键 | 类型 |
id | 编码 | 是 | 否 | int |
title | 公告标题 | 否 | 否 | varchar(255) |
content | 公告内容 | 否 | 否 | text |
time | 发布时间 | 否 | 否 | varchar(255) |
(3)项目信息表:用于存储系统上项目的基本信息。
表4-3项目信息project表
列名 | 注释 | 主键 | 外键 | 类型 |
id | 编码 | 是 | 否 | int(11) |
name | 项目名 | 否 | 否 | varchar(200) |
content | 项目描述 | 否 | 否 | varchar(200) |
begindate | 开始时间 | 否 | 否 | varchar(200) |
enddate | 结束时间 | 否 | 否 | varchar(200) |
ranges | 项目范围 | 否 | 否 | varchar(200) |
quality | 质量 | 否 | 否 | varchar(200) |
cost | 成本 | 否 | 否 | varchar(200) |
resource | 资源 | 否 | 否 | varchar(200) |
status | 状态 | 否 | 否 | varchar(200) |
charger | 负责人 | 否 | 否 | varchar(200) |
score | 分数 | 否 | 否 | varchar(200) |
(4)项目评审表:用于存储评审专家对项目的评审信息。
表4-4项目评审review表
列名 | 注释 | 主键 | 外键 | 类型 |
id | 编码 | 是 | 否 | int(11) |
projectid | 项目ID | 否 | 是 | int(11) |
userid | 专家ID | 否 | 是 | int(11) |
score | 打分 | 否 | 否 | varchar(200) |
idea | 意见 | 否 | 否 | varchar(200) |
time | 评审时间 | 否 | 否 | varchar(200) |
5 详细设计与实现
5.1用户登录
在用户填写好登录信息后,会先验证非空数据,再验证填写的用户信息和数据库中保存的是否一致,一致后将会登录成功,登录成功后将会在左上角上显示用户信息;否则将会提示相应错误信息。
图5-1 用户登录
主要实现代码如下:
public ModelAndView main(HttpServletRequest request){
Map<String,Object> map = new HashMap<String,Object>();
String username = request.getParameter("username");
String password = request.getParameter("password");
String isadmin = request.getParameter("isadmin");
String yanzhengma1 = request.getParameter("yanzhengma1");
String yzm = request.getParameter("yzm").toUpperCase();
if(yzm.equals(yanzhengma1)){
User user = new User();
user.setUsername(username);
user.setPassword(password);
user.setIsadmin(isadmin);
user = userService.getUserByNameAndPassword(user);
if(user==null){
map.put("msg", "用户名或密码错误!");
map.put("yzm", CommonUtil.getYzm());
return jsp("login", map, request);
}
request.getSession().setAttribute(SessionKeys.LOGIN_USER, user);
map.put("user", user);
return jsp("main", map, request);
}else{
map.put("msg", "验证码填写错误!");
map.put("yzm", CommonUtil.getYzm());
return jsp("login", map, request);
}
}
5.2管理员模块
5.2.1 管理员主界面
登录的用户角色是管理员,将会进入到管理员的主界面中。
图5-2 管理员主界面
5.2.2 项目管理员管理
管理员可以对系统中的项目管理员信息进行维护和管理。
图5-3 项目管理员管理
主要实现代码如下:
public ModelAndView list(HttpServletRequest request){
Map<String,Object> map = new HashMap<String,Object>();
String pagerNum = request.getParameter("pagerNum");
String isadmin = request.getParameter("isadmin");
map.put("isadmin", isadmin);
if(pagerNum==null){
pagerNum = "1";
}
List<User> list = userService.getList(map);
map.put("count", list.size());
list = (List<User>) PagerUtil.getPager(list, Integer.parseInt(pagerNum));
map.put("maxPager", list.size()/PagerUtil.getPagerSize()+1);
map.put("pagerNum", pagerNum);
map.put("list", list);
map.put("list", list);
return jsp("user/teacherlist", map, request);
}
管理员点击右上角的“新增”按钮后可以添加新的项目管理员信息,根据提示输入完整的项目管理员信息并点击“保存”按钮后,首先会验证是否有非空数据,其次验证用户名是否重复,都验证没问题后,将会执行添加项目管理员信息操作。
图5-4 添加项目管理员
主要实现代码如下:
public ModelAndView add(HttpServletRequest request){
Map<String,Object> map = new HashMap<String,Object>();
String no = request.getParameter("no");
String username = request.getParameter("username");
String password = request.getParameter("password");
String name = request.getParameter("name");
String tel = request.getParameter("tel");
String email = request.getParameter("email");
String birthday = request.getParameter("birthday");
String sex = request.getParameter("sex");
String post = request.getParameter("post");
String intime = request.getParameter("intime");
String major = request.getParameter("major");
String classes = request.getParameter("classes");
String isadmin = request.getParameter("isadmin");
String teaching = request.getParameter("teaching");
String status = request.getParameter("status");
User user = new User();
user.setUsername(username);
user.setPassword(password);
user.setName(name);
user.setTel(tel);
user.setEmail(email);
user.setIsadmin(isadmin);
user.setNo(no);
user.setSex(sex);
user.setBirthday(birthday);
user.setPost(post);
user.setIntime(intime);
user.setMajor(major);
user.setClasses(classes);
user.setTeaching(teaching);
user.setStatus(status);
boolean issuc = userService.insert(user);
if(issuc){
map.put("msg", "新增成功");
}else{
map.put("msg", "新增失败,请重新操作");
}
String pagerNum = request.getParameter("pagerNum");
map.put("isadmin", isadmin);
if(pagerNum==null){
pagerNum = "1";
}
List<User> list = userService.getList(map);
map.put("count", list.size());
list = (List<User>) PagerUtil.getPager(list, Integer.parseInt(pagerNum));
map.put("maxPager", list.size()/PagerUtil.getPagerSize()+1);
map.put("pagerNum", pagerNum);
map.put("list", list);
map.put("list", list);
return jsp("user/teacherlist", map, request);
}
5.2.3 项目专家管理
管理员可以对系统中的项目评审专家信息进行维护和管理。
图5-5 项目评审专家管理
主要实现代码如下:
public ModelAndView list(HttpServletRequest request){
Map<String,Object> map = new HashMap<String,Object>();
String pagerNum = request.getParameter("pagerNum");
String isadmin = request.getParameter("isadmin");
map.put("isadmin", isadmin);
if(pagerNum==null){
pagerNum = "1";
}
List<User> list = userService.getList(map);
map.put("count", list.size());
list = (List<User>) PagerUtil.getPager(list, Integer.parseInt(pagerNum));
map.put("maxPager", list.size()/PagerUtil.getPagerSize()+1);
map.put("pagerNum", pagerNum);
map.put("list", list);
map.put("list", list);
return jsp("user/studentlist", map, request);
}
管理员点击右列表后的“修改”按钮后可以显示出当前项目评审专家信息,修改完项目评审专家信息并点击“保存”按钮后,首先会验证是否有非空数据,其次验证用户名是否重复,都验证没问题后,将会执行修改项目管理员信息操作。
图5-6 修改项目评审专家
主要实现代码如下:
public ModelAndView update(HttpServletRequest request){
Map<String,Object> map = new HashMap<String,Object>();
String no = request.getParameter("no");
String username = request.getParameter("username");
String password = request.getParameter("password");
String name = request.getParameter("name");
String tel = request.getParameter("tel");
String email = request.getParameter("email");
String birthday = request.getParameter("birthday");
String sex = request.getParameter("sex");
String post = request.getParameter("post");
String intime = request.getParameter("intime");
String major = request.getParameter("major");
String classes = request.getParameter("classes");
String isadmin = request.getParameter("isadmin");
String teaching = request.getParameter("teaching");
String status = request.getParameter("status");
User user = userService.getUserById(request.getParameter("id"));
user.setUsername(username);
user.setPassword(password);
user.setName(name);
user.setTel(tel);
user.setEmail(email);
user.setIsadmin(isadmin);
user.setNo(no);
user.setSex(sex);
user.setBirthday(birthday);
user.setPost(post);
user.setIntime(intime);
user.setMajor(major);
user.setClasses(classes);
user.setTeaching(teaching);
user.setStatus(status);
boolean issuc = userService.update(user);
if(issuc){
map.put("msg", "修改成功");
}else{
map.put("msg", "修改失败,请重新操作");
}
String pagerNum = request.getParameter("pagerNum");
map.put("isadmin", user.getIsadmin());
if(pagerNum==null){
pagerNum = "1";
}
List<User> list = userService.getList(map);
map.put("count", list.size());
list = (List<User>) PagerUtil.getPager(list, Integer.parseInt(pagerNum));
map.put("maxPager", list.size()/PagerUtil.getPagerSize()+1);
map.put("pagerNum", pagerNum);
map.put("list", list);
map.put("list", list);
return jsp("user/studentlist", map, request);
}
5.2.4 公告管理
管理员可以发布和管理系统内的公告信息。
图5-7公告管理
主要实现代码如下:
public ModelAndView list(HttpServletRequest request){
Map<String,Object> map = new HashMap<String,Object>();
String pagerNum = request.getParameter("pagerNum");
if(pagerNum==null){
pagerNum = "1";
}
List<News> list = newsService.getList(map);
map.put("count", list.size());
list = (List<News>) PagerUtil.getPager(list, Integer.parseInt(pagerNum));
map.put("maxPager", list.size()/PagerUtil.getPagerSize()+1);
map.put("pagerNum", pagerNum);
map.put("list", list);
return jsp("news/list", map, request);
}
点击右上角的“新增”按钮后将会进入添加公告信息的界面,输入上信息点击“保存”按钮后将会先验证是否有非空数据,验证通过后将会执行新增操作。
图5-8添加公告
主要实现代码如下:
public ModelAndView add(HttpServletRequest request){
Map<String,Object> map = new HashMap<String,Object>();
String title = request.getParameter("title");
String content = request.getParameter("content");
String type = request.getParameter("type");
News news = new News();
news.setTitle(title);
news.setTime(DateUtil.format(new Date()));
news.setContent(content);
news.setType(type);
boolean issuc = newsService.insert(news);
if(issuc){
map.put("msg", "新增成功");
}else{
map.put("msg", "新增失败,请重新操作");
}
String pagerNum = request.getParameter("pagerNum");
if(pagerNum==null){
pagerNum = "1";
}
List<News> list = newsService.getList(map);
map.put("count", list.size());
list = (List<News>) PagerUtil.getPager(list, Integer.parseInt(pagerNum));
map.put("maxPager", list.size()/PagerUtil.getPagerSize()+1);
map.put("pagerNum", pagerNum);
map.put("list", list);
return jsp("news/list", map, request);
}
5.3评审专家模块
5.3.1 评审专家主界面
登录的用户角色是评审专家,将会进入到评审专家的主界面中。
图5-9 评审专家主界面
5.3.2 查看公告
可以查看到系统内最新的公告信息,采用列表展示。
图5-10 公告列表
点击后面的查看详细,将会进入到公告详细页面。
图5-11 公告详细
主要实现代码如下:
public ModelAndView checklist(HttpServletRequest request){
Map<String,Object> map = new HashMap<String,Object>();
String pagerNum = request.getParameter("pagerNum");
if(pagerNum==null){
pagerNum = "1";
}
List<News> list = newsService.getList(map);
map.put("count", list.size());
list = (List<News>) PagerUtil.getPager(list, Integer.parseInt(pagerNum));
map.put("maxPager", list.size()/PagerUtil.getPagerSize()+1);
map.put("pagerNum", pagerNum);
map.put("list", list);
return jsp("news/checklist", map, request);
}
5.3.2 项目评审
评审专家可以查看到哪些项目需要自己评审。
图5-12 项目列表
点击“评审”按钮后可以查看到需要评审的项目信息,填写上分数和评审意见后点击“保存”按钮即可提交。
图5-13 项目评审
主要实现代码如下:
public ModelAndView update(HttpServletRequest request){
Map<String,Object> map = new HashMap<String,Object>();
String score = request.getParameter("score");
String idea = request.getParameter("idea");
Review review = reviewService.getReviewById(request.getParameter("id"));
review.setTime(DateUtil.format(new Date()));
review.setScore(score);
review.setIdea(idea);
boolean issuc = reviewService.update(review);
if(issuc){
map.put("msg", "评审成功");
}else{
map.put("msg", "评审失败,请重新操作");
}
//判断是否评审完毕
map.put("projectid", review.getProjectid());
map.put("notnullscore", "notnullscore");
List<Review> reviewlist = reviewService.getList(map);
if(reviewlist.size() == 3){//三个专家全部评审完
double avgscroe = (Integer.parseInt(reviewlist.get(0).getScore())+ Integer.parseInt(reviewlist.get(1).getScore())+ Integer.parseInt(reviewlist.get(2).getScore()))/3;
Project project = projectService.getProjectById(review.getProjectid()+"");
project.setStatus("评审完毕");
project.setScore(avgscroe+"");
projectService.update(project);
}
String pagerNum = request.getParameter("pagerNum");
if(pagerNum==null){
pagerNum = "1";
}
map.put("userid", getSessionUser(request).getId());
List<Review> list = reviewService.getList(map);
map.put("count", list.size());
list = (List<Review>) PagerUtil.getPager(list, Integer.parseInt(pagerNum));
map.put("maxPager", list.size()/PagerUtil.getPagerSize()+1);
map.put("pagerNum", pagerNum);
map.put("list", list);
return jsp("review/list", map, request);
}
5.4项目管理员模块
5.4.1 项目管理员主界面
登录的用户角色是项目管理员时,将会进入到项目管理员的主界面中。
图5-14 项目管理员主界面
5.4.2 项目管理
管理员和项目管理员都可以对系统中的项目管理信息进行维护和管理。
图5-15 项目管理
点击列表后的“分配评审专家”后可以选择哪些专家可以参与该项目的评审工作,支持多选,分配后项目状态将被更新为“评审中”。
图5-16 项目分配
主要实现代码如下:
public ModelAndView chooseuser(HttpServletRequest request){
Map<String,Object> map = new HashMap<String,Object>();
String users = request.getParameter("users");
String projectid = request.getParameter("projectid");
String[] userarr = users.split(",");
for(int i=1; i<userarr.length; i++){
Review review = new Review();
review.setProjectid(Integer.parseInt(projectid));
review.setUserid(Integer.parseInt(userarr[i]));
reviewService.insert(review);
}
Project project = projectService.getProjectById(projectid);
project.setStatus("评审中");
projectService.update(project);
map.put("msg", "设置成功");
String pagerNum = request.getParameter("pagerNum");
if(pagerNum==null){
pagerNum = "1";
}
List<Project> list = projectService.getList(map);
map.put("count", list.size());
list = (List<Project>) PagerUtil.getPager(list, Integer.parseInt(pagerNum));
map.put("maxPager", list.size()/PagerUtil.getPagerSize()+1);
map.put("pagerNum", pagerNum);
map.put("list", list);
return jsp("project/list", map, request);
}
点击右上角的“新增”按钮后可以添加新的项目信息,根据提示输入完整的项目信息并点击“保存”按钮后,首先会验证是否有非空数据,验证没问题后,将会执行添加项目信息操作。
图5-17 添加项目
主要实现代码如下:
public ModelAndView add(HttpServletRequest request){
Map<String,Object> map = new HashMap<String,Object>();
String name = request.getParameter("name");
String content = request.getParameter("content");
String begindate = request.getParameter("begindate");
String enddate = request.getParameter("enddate");
String range = request.getParameter("range");
String quality = request.getParameter("quality");
String cost = request.getParameter("cost");
String resource = request.getParameter("resource");
String charger = request.getParameter("charger");
Project project = new Project();
project.setBegindate(begindate);
project.setContent(content);
project.setCost(cost);
project.setEnddate(enddate);
project.setName(name);
project.setQuality(quality);
project.setRange(range);
project.setResource(resource);
project.setCharger(charger);
project.setStatus("已立项");
boolean issuc = projectService.insert(project);
if(issuc){
map.put("msg", "新增成功");
}else{
map.put("msg", "新增失败,请重新操作");
}
String pagerNum = request.getParameter("pagerNum");
if(pagerNum==null){
pagerNum = "1";
}
List<Project> list = projectService.getList(map);
map.put("count", list.size());
list = (List<Project>) PagerUtil.getPager(list, Integer.parseInt(pagerNum));
map.put("maxPager", list.size()/PagerUtil.getPagerSize()+1);
map.put("pagerNum", pagerNum);
map.put("list", list);
return jsp("project/list", map, request);
}
5.4.3 项目查询
各用户都可以对系统中的项目信息进行关键词的模糊查询。
图5-18 项目查询
主要实现代码如下:
public ModelAndView checklist(HttpServletRequest request){
Map<String,Object> map = new HashMap<String,Object>();
String pagerNum = request.getParameter("pagerNum");
if(pagerNum==null){
pagerNum = "1";
}
map.put("queryname", request.getParameter("queryname"));
map.put("querycharger", request.getParameter("querycharger"));
map.put("status", request.getParameter("status"));
List<Project> list = projectService.getList(map);
map.put("count", list.size());
list = (List<Project>) PagerUtil.getPager(list, Integer.parseInt(pagerNum));
map.put("maxPager", list.size()/PagerUtil.getPagerSize()+1);
map.put("pagerNum", pagerNum);
map.put("list", list);
return jsp("project/checklist", map, request);
}
点击右上角的“导出”后可以把当前项目列表中信息导出到excel表中。
图5-19 导出项目信息
主要实现代码如下:
public static void export(List<Map<String, Object>> list, HttpServletResponse response) {
//创建hssfworkbook对象
HSSFWorkbook wb = new HSSFWorkbook();
//创建sheet
HSSFSheet sheet = wb.createSheet("sheettest");
//创建row(标题栏)
HSSFRow row0 = sheet.createRow(0);
//===============================表头====================================
HSSFCell cell_0_0 = row0.createCell(0);
cell_0_0.setCellValue("项目名称");
HSSFCell cell_0_1 = row0.createCell(1);
cell_0_1.setCellValue("项目描述");
HSSFCell cell_0_2 = row0.createCell(2);
cell_0_2.setCellValue("开始时间");
HSSFCell cell_0_3 = row0.createCell(3);
cell_0_3.setCellValue("结束时间");
HSSFCell cell_0_4 = row0.createCell(4);
cell_0_4.setCellValue("项目范围");
HSSFCell cell_0_5 = row0.createCell(5);
cell_0_5.setCellValue("质量");
HSSFCell cell_0_6 = row0.createCell(6);
cell_0_6.setCellValue("成本");
HSSFCell cell_0_7 = row0.createCell(7);
cell_0_7.setCellValue("资源");
HSSFCell cell_0_8 = row0.createCell(8);
cell_0_8.setCellValue("状态");
HSSFCell cell_0_9 = row0.createCell(9);
cell_0_9.setCellValue("负责人");
HSSFCell cell_0_10 = row0.createCell(10);
cell_0_10.setCellValue("分数");
//===============================内容====================================
//创建row
HSSFRow datarow = null;
for(int i=0; i<list.size(); i++){
Map<String, Object> map = list.get(i);
datarow = sheet.createRow(i+1);
HSSFCell cell_1_0 = datarow.createCell(0);
cell_1_0.setCellValue(map.get("name").toString());
HSSFCell cell_1_1 = datarow.createCell(1);
cell_1_1.setCellValue(map.get("content").toString());
HSSFCell cell_1_2 = datarow.createCell(2);
cell_1_2.setCellValue(map.get("begindate")+"");
HSSFCell cell_1_3 = datarow.createCell(3);
cell_1_3.setCellValue(map.get("enddate")+"");
HSSFCell cell_1_4 = datarow.createCell(4);
cell_1_4.setCellValue(map.get("ranges")+"");
HSSFCell cell_1_5 = datarow.createCell(5);
cell_1_5.setCellValue(map.get("quality")+"");
HSSFCell cell_1_6 = datarow.createCell(6);
cell_1_6.setCellValue(map.get("cost")+"");
HSSFCell cell_1_7 = datarow.createCell(7);
cell_1_7.setCellValue(map.get("resource")+"");
HSSFCell cell_1_8 = datarow.createCell(8);
cell_1_8.setCellValue(map.get("status")+"");
HSSFCell cell_1_9 = datarow.createCell(9);
cell_1_9.setCellValue(map.get("charger")+"");
HSSFCell cell_1_10 = datarow.createCell(10);
cell_1_10.setCellValue(map.get("score")+"");
}
//合并单元格。参数:起始行,截至行,起始列,截至列
//sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 3));
try {
//输出excel文件
OutputStream output = response.getOutputStream();
response.reset();
response.setHeader("Content-disposition", "attachment;filename=project_export.xls");
response.setContentType("application/msexcel");
wb.write(output);
output.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
点击列表后的“查看打分明细”后可以查看到各评审专家对项目的评审打分和意见谢谢。
图5-20 项目评分明细
主要实现代码如下:
public ModelAndView checkdetail(HttpServletRequest request){
Map<String,Object> map = new HashMap<String,Object>();
map.put("projectid", request.getParameter("id"));
List<Review> list = reviewService.getList(map);
map.put("list", list);
return jsp("project/checkreview", map, request);
}
点击右上角的“导出”后可以把当前项目评分明细中信息导出到excel表中。
图5-21 导出项目评分明细
5. 5 修改密码
所有用户登录后都可以点击右上角的“修改密码”来修改自己的个人登录密码。当点击“保存”按钮后,会先验证是否有非空数据,再验证原密码是否正确,最后验证密码和重复密码是否一致,都验证没问题后将执行修改密码操作。
图5-22 修改密码
主要实现代码如下:
public ModelAndView changepsd(HttpServletRequest request){
Map<String,Object> map = new HashMap<String,Object>();
String password = request.getParameter("password");
User user = getSessionUser(request);
user.setPassword(password);
boolean issuc = userService.update(user);
if(issuc){
map.put("msg", "修改密码成功");
}else{
map.put("msg", "修改密码失败,请重新操作");
}
return jsp("changepsd", map, request);
}