学生宿舍管理系统的用户有宿管和学生,宿管有最高的权限,学生只有部分权限,
宿舍楼管理员:
信息要求:
宿舍楼管理员能查询上面提到的宿舍楼的所有相关信息,包括某一学号的学生在宿舍楼中住宿的详细信息,快件收发的所有信息,报修的所有信息,夜归的详细信息和学生离返校的信息。以利于对整个宿舍楼的全面管理。
处理要求:
当学生基本信息发生变化时,宿舍楼管理员能对其进行修改。比如,某些同学搬到其他的宿舍中去,他们在本宿舍楼中相应的记录就应该删去;或者学生转换专业,他们记录中院系的信息也要作相应的修改等等。
当宿舍楼的电话号码发生变更时,宿舍楼管理员能根据有关证明做出修改。
当快件到达本宿舍楼时,宿舍楼管理员应依据到达快件的相关信息在快件信息中插入一条记录,当同学们接收快件后,管理员应登记快件的接收时间,表明该信件已成功到达收信人的手中。
当宿舍财产报修及时解决后,管理员应登记解决时间,表明该报修问题已成功解决。
信息要求:
本宿舍楼的学生能查询其所在的宿舍的所有信息,能查询本楼的指定宿舍的电话号码以利于同楼宿舍间的通信。能查询自己的快件信息。能查询自己的夜归记录和离返校记录。
处理要求:
本宿舍楼的学生能在报修信息表中插入报修信息,表示本宿舍的财产发生了损毁需要学校派人维修。·
学生离校时,能在离返校记录表中插入离校时间;学生返校后,能在离返校记录表中插入返校时间,表示已经回校。
代码已经上传github,下载地址: https://github.com/21503882/sushe
图1.1 系统功能模块图
宿舍管理系统有超级用户,普通用户共2类用户。具有九大功能模块。系统用例图,如图4.1所示:
系统用例图
图1.2 用户登陆界面
新增寝室信息
新增学生
学生信息管理
图1.4 寝室使用状态界面
图1.5 床位查询界面
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import com.zsga.kbms.entity.Article;
import com.zsga.kbms.entity.User;
import com.zsga.kbms.lucene.ArticleIndex;
import com.zsga.kbms.service.ArticleService;
import com.zsga.kbms.service.CommentService;
import com.zsga.kbms.utils.StringUtil;
/** 上一篇:没有了 上一篇:"+lastArticle.getTitle()+" 下一篇:没有了 下一篇:"+nextArticle.getTitle()+"
* 文章Controller
* @author admin
*
*/
@Controller
@RequestMapping("/article")
public class ArticleController {
@Autowired
private ArticleService articleService;
@Autowired
private CommentService commentService;
//文章索引
private ArticleIndex articleIndex = new ArticleIndex();
/**
* 请求文章信息
* @param id
* @param request
* @return
* @throws Exception
*/
@RequestMapping("/articles/{id}")
public ModelAndView details(@PathVariable("id")Integer id,HttpServletRequest request) throws Exception {
ModelAndView mav=new ModelAndView();
Article article = articleService.findArticleById(id);
//获取文章类型ID
Integer articleTypeId = article.getArticleType().getId();
User currentUser = (User) request.getSession().getAttribute("currentUser");
String role = currentUser.getRole();
if (role.contains(Integer.toString(articleTypeId))) { //有权查看
String keyWords=article.getKeyWord();
if(StringUtil.isNotEmpty(keyWords)){
String arr[]=keyWords.split(" ");
mav.addObject("keyWords",StringUtil.filterWhite(Arrays.asList(arr)));
}else{
mav.addObject("keyWords",null);
}
mav.addObject("article", article);
article.setClickHit(article.getClickHit()+1); // 文章点击次数加1
articleService.editArticle(article);
Map
map.put("articleId", article.getId());
//map.put("state", 1); // 查询审核通过的评论
mav.addObject("commentList", commentService.list(map));
mav.addObject("pageCode", this.genUpAndDownPageCode(articleService.getLastArticle(id),articleService.getNextArticle(id),request.getServletContext().getContextPath()));
mav.addObject("mainPage", "foreground/article/view.jsp");
mav.addObject("pageTitle",article.getTitle()+"_知识库系统");
mav.setViewName("mainTemp");
} else { //无权限查看
mav.setViewName("noaccess");
}
return mav;
}
/**
* 获取下一篇文章和下一篇文章代码
* @param lastArticle
* @param nextArticle
* @param projectContext
* @return
*/
private String genUpAndDownPageCode(Article lastArticle,Article nextArticle,String projectContext){
StringBuffer pageCode = new StringBuffer();
if(lastArticle == null || lastArticle.getId() == null){
pageCode.append("
}else{
pageCode.append("
}
if(nextArticle == null || nextArticle.getId() == null){
pageCode.append("
}else{
pageCode.append("
}
return pageCode.toString();
}
/**
* 根据关键字查询相关文章信息
* @param q
* @param page
* @param request
* @return
* @throws Exception
*/
@RequestMapping("/q")
public ModelAndView search(@RequestParam(value="q", required=false)String q, @RequestParam(value="page", required=false)String page,
HttpServletRequest request) throws Exception {
if(StringUtil.isEmpty(page)){
page="1";
}
ModelAndView mav=new ModelAndView();
mav.addObject("mainPage", "foreground/article/result.jsp");
List
Integer toIndex=articleList.size()>=Integer.parseInt(page)*10?Integer.parseInt(page)*10:articleList.size();
mav.addObject("articleList",articleList.subList((Integer.parseInt(page)-1)*10, toIndex));
mav.addObject("pageCode",this.genUpAndDownPageCode(Integer.parseInt(page), articleList.size(), q,10,request.getServletContext().getContextPath()));
mav.addObject("q",q);
mav.addObject("resultTotal",articleList.size());
mav.addObject("pageTitle","搜索关键字'"+q+"'结果页面_知识库系统");
mav.setViewName("mainTemp");
return mav;
}
/**
* 获取上一页,下一页代码 查询文章用到
* @param page 当前页
* @param totalNum 总记录数
* @param q 查询关键字
* @param pageSize 每页大小
* @param projectContext
* @return
*/
private String genUpAndDownPageCode(Integer page,Integer totalNum,String q,Integer pageSize,String projectContext){
long totalPage=totalNum%pageSize==0?totalNum/pageSize:totalNum/pageSize+1;
StringBuffer pageCode=new StringBuffer();
if(totalPage==0){
return "";
}else{
pageCode.append("");
}
return pageCode.toString();
}
}
代码已经上传github,下载地址: https://github.com/21503882/sushe
其他的操作都跟上面介绍的那个差不多,只是实现的功能不同,但界面都是相同的,我就不一一介绍了,有需要的就去我GitHub看看吧