背景
本次设计任务是要设计一个校园志愿者管理系统,通过这个系统能够满足管理员和志愿者的校园志愿者信息管理功能。系统的主要功能包括首页、个人中心、志愿者管理、活动类型管理、活动信息管理、活动报名管理、活动通知管理、活动心得管理、交流反馈、系统管理等功能。
管理员可以根据系统给定的账号进行登录,登录后可以进入校园志愿者管理系统对校园志愿者所有模块进行管理。包括查看和修改自己的个人信息以及登录密码。
该系统为每一个用户都分配了一个用户账号,用户通过账号的登录可以在系统中查看校园志愿者信息及对个人信息进行修改等功能。
系统设计
根据校园志愿者管理系统的功能需求,进行系统设计。
前台功能:用户进入系统可以实现首页、活动信息、活动心得、公告信息、交流反馈、个人中心、后台管理等功能进行操作;
后台由管理员和志愿者,主要功能包括首页、个人中心、志愿者管理、活动类型管理、活动信息管理、活动报名管理、活动通知管理、活动心得管理、交流反馈、系统管理等功能;
系统对这些功能进行整合,产生的功能结构图如下:
数据库设计
在每一个系统中数据库有着非常重要的作用,数据库的设计得好将会增加系统的效率以及系统各逻辑功能的实现。所以数据库的设计我们要从系统的实际需要出发,才能使其更为完美的符合系统功能的实现。
系统ER图
数据库的E-R图反映了实体、实体的属性和实体之间的联系。下面是各个实体以及实体的属性。
活动信息实体属性图如下所示:
数据库设计
由于涉及的数据库表较多,此处只展示部分的数据库表。
系统功能的具体实现
系统功能模块
校园志愿者管理系统,用户进入到系统首页,可以查看首页、活动信息、活动心得、公告信息、交流反馈、个人中心、后台管理等内容进行操作,如图:
管理员功能
管理员登录进入校园志愿者管理系统可以查看首页、个人中心、志愿者管理、活动类型管理、活动信息管理、活动报名管理、活动通知管理、活动心得管理、交流反馈、系统管理等功能进行详细操作,如图:
志愿者管理;在志愿者管理页面中可以查看索引、用户名、姓名、性别、头像、年龄、邮箱、手机等内容,并进行详情,修改和删除等操作;如图:
活动类型管理;在活动类型管理页面中可以查看索引、活动类型等内容,并进行修改、删除等操作;如图:
志愿者功能
志愿者登录进入校园志愿者管理系统可以查看首页、个人中心、活动报名管理、活动通知管理、活动心得管理、我的收藏管理、交流反馈等功能进行详细操作,如图:
活动报名管理;在活动报名管理页面中可以查看索引、活动名称、活动类型、人数、报名说明、报名时间、用户名、姓名、手机、审核回复、审核状态等内容,并进行详情、或删除等操作;如图:
系统代码实现
由于涉及到的代码较多,此处只展示部分的代码实现。
活动信息
@RestController
@RequestMapping("/huodongxinxi")
public class HuodongxinxiController {
@Autowired
private HuodongxinxiService huodongxinxiService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,HuodongxinxiEntity huodongxinxi,
HttpServletRequest request){
EntityWrapper<HuodongxinxiEntity> ew = new EntityWrapper<HuodongxinxiEntity>();
PageUtils page = huodongxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, huodongxinxi), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,HuodongxinxiEntity huodongxinxi,
HttpServletRequest request){
EntityWrapper<HuodongxinxiEntity> ew = new EntityWrapper<HuodongxinxiEntity>();
PageUtils page = huodongxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, huodongxinxi), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( HuodongxinxiEntity huodongxinxi){
EntityWrapper<HuodongxinxiEntity> ew = new EntityWrapper<HuodongxinxiEntity>();
ew.allEq(MPUtil.allEQMapPre( huodongxinxi, "huodongxinxi"));
return R.ok().put("data", huodongxinxiService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(HuodongxinxiEntity huodongxinxi){
EntityWrapper< HuodongxinxiEntity> ew = new EntityWrapper< HuodongxinxiEntity>();
ew.allEq(MPUtil.allEQMapPre( huodongxinxi, "huodongxinxi"));
HuodongxinxiView huodongxinxiView = huodongxinxiService.selectView(ew);
return R.ok("查询活动信息成功").put("data", huodongxinxiView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
HuodongxinxiEntity huodongxinxi = huodongxinxiService.selectById(id);
return R.ok().put("data", huodongxinxi);
}
/**
* 前端详情
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
HuodongxinxiEntity huodongxinxi = huodongxinxiService.selectById(id);
return R.ok().put("data", huodongxinxi);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody HuodongxinxiEntity huodongxinxi, HttpServletRequest request){
huodongxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(huodongxinxi);
huodongxinxiService.insert(huodongxinxi);
return R.ok();
}
活动通知代码入口
@RestController
@RequestMapping("/huodongtongzhi")
public class HuodongtongzhiController {
@Autowired
private HuodongtongzhiService huodongtongzhiService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,HuodongtongzhiEntity huodongtongzhi,
HttpServletRequest request){
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("zhiyuanzhe")) {
huodongtongzhi.setXuehao((String)request.getSession().getAttribute("username"));
}
EntityWrapper<HuodongtongzhiEntity> ew = new EntityWrapper<HuodongtongzhiEntity>();
PageUtils page = huodongtongzhiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, huodongtongzhi), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,HuodongtongzhiEntity huodongtongzhi,
HttpServletRequest request){
EntityWrapper<HuodongtongzhiEntity> ew = new EntityWrapper<HuodongtongzhiEntity>();
PageUtils page = huodongtongzhiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, huodongtongzhi), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( HuodongtongzhiEntity huodongtongzhi){
EntityWrapper<HuodongtongzhiEntity> ew = new EntityWrapper<HuodongtongzhiEntity>();
ew.allEq(MPUtil.allEQMapPre( huodongtongzhi, "huodongtongzhi"));
return R.ok().put("data", huodongtongzhiService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(HuodongtongzhiEntity huodongtongzhi){
EntityWrapper< HuodongtongzhiEntity> ew = new EntityWrapper< HuodongtongzhiEntity>();
ew.allEq(MPUtil.allEQMapPre( huodongtongzhi, "huodongtongzhi"));
HuodongtongzhiView huodongtongzhiView = huodongtongzhiService.selectView(ew);
return R.ok("查询活动通知成功").put("data", huodongtongzhiView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
HuodongtongzhiEntity huodongtongzhi = huodongtongzhiService.selectById(id);
return R.ok().put("data", huodongtongzhi);
}