根据业务层的方法,绘制流程图转化为控制流图后,通过3种环路复杂度的计算方法得出结果不同
1:流图中区域的数量对应于环型的复杂性。
得出复杂度为V(G)=3;
2:给定流图G的圈复杂度V(G),定义为
V(G)=E-N+2,E是流图中边的数量,N是
流图中节点的数量。
得出复杂度为V(G)=15-14+2=3
3:给定流图G的圈复杂度V(G),定义为.
V(G)=P+1,P是流图G中判定节点的数量。
得出为V(G)=4+1=5
大佬们是图画错了吗??
后面贴了图可显示行号
程序代码:
public Result vote(Vote_detail vote_detail) {/*如果该用户身份标识不是1,0不可进行投票*/
Result result=null;
/*校验*/
User_Type user_type=new User_Type(vote_detail.getU_id(),vote_detail.getD_id(),null);
Integer type = userMapper.showSelfInfo(user_type).getType();//拿到身份标识方便后续判断
if(!(type==1||type==0)){//只有选民和负责人身份可以投票
result=new Result(false,"只有选民和负责人身份可以投票!!!",null);
return result;
}
List vote_detailList = vote_detailMapper.getAllByVote(vote_detail);//拿到当前职位投票记录
if (vote_detailList.size()>0){
result=new Result(false,"您已在当前职位投过票",vote_detailList.get(0));
return result;
}else {
Candidates candidates=new Candidates();
candidates.setU_id(vote_detail.getU_id2());
candidates.setP_id(vote_detail.getP_id());
if (type==1){ /*判断投票用户身份0负责人,1普通学生*/
candidatesMapper.SiUpdateTicket(candidates);
}else if (type==0){
System.out.println("candidates数据:"+candidates);
candidatesMapper.SuUpdateTicket(candidates);
}
vote_detailMapper.save(vote_detail);//生成投票记录
SearchCandidate searchCandidate=new SearchCandidate();
searchCandidate.setU_id2(vote_detail.getU_id2());
searchCandidate.setP_id(vote_detail.getP_id());
List candidateModelList = candidatesMapper.getAllByAny(searchCandidate);//查询候选人当前职位信息
System.out.println(candidateModelList);
CadidateModel cadidateModel = (CadidateModel) candidateModelList.get(0);//查询票数,将其返回主页
result=new Result(true,"投票成功",cadidateModel.getTicket_num());
}
return result;
}
绘制的流程图和数据流图