java项目开发团队分配软件
项目目标
该软件实现的功能
- 启动软件时,首先进入登录界面进行登录和注册。
- 登录成功后,进入菜单,首先可以对开发人员账户和密码进行修改。
- 然后可以对开发人员进行增删改等操作。 人员添加成功后,根据菜单提示,基于现有的公司成员,组建一个开发团队以开发一个新的项目。
- 组建过程中包括将成员插入到团队中,或从当前团队中删除成员,并且能列出当前团队中的现有成员,开发团队包括架构师、设计师和程序员,一个团队最多5人。
- 团队组建成功后,进入项目模块,添加项目,分配团队进行项目的开发。
我们需要用到的知识点大概有下面几点
系统功能结构图
系统流程图
软件设计结构
主要是由三个模块组成
com.team.view 模块为主控模快,负责菜单的显示和处理用户操作
com.team.service 模块为实体对象的管理模块
com.team.domain 模块为Employee及其子类等类所在的包
各模块的实际内容和注意事项
用户注册和登录模块
注意事项:
这个模块主要需要注意的是登录时的判断和注册时是否有该账户名,和密码输入错误时的判断登录次数。
判断登录代码
for (int i=0;i<array.size();i++) {
if (username.equals(array.get(i).getUsername()) && password.equals(array.get(i).getPassword())) {
TSUtility.loadSpecialEffects();
System.out.println("登陆成功!欢迎您:" + username);
this.username = username;
this.password = password;
flag = false;
break;
} else if (count == 0) {
System.out.println("登录次数已用完,退出!");
return false;
} else if (username.equals(array.get(i).getUsername()) || password.equals(array.get(i).getPassword())) {
count--;
if (count != 0) {
System.out.println("登录失败!用户名或密码不匹配!");
System.out.println("登录次数还剩" + count + "次,请重新输入:");
}
}
}
开发人员管理模块
1.domain模块中创建实体类
2.在NameLIstService类中完成功能操作
注意: 主要注意添加员工时的ID需要自动更新,用集合时需要注意用静态static来修饰,才能进行数据共享
private static ArrayList<Employee> employees =new ArrayList<Employee>();
开发团队调度模块
TeamService类的设计
TeamView类的设计
注意: 删除成员和删除团队时的空指针异常,不然一不注意就会导致程序异常结束
删除时可用try…catch处理,也可以直接用throw抛出异常然后结束回到调用方法处输出,这里代码就是用的throw来解决的
System.out.print("请输入要删除团队员工的TID:");
int tid = TSUtility.readInt();
System.out.println("请确认是否删除(Y/N)");
char select = TSUtility.readConfirmSelection();
if (select=='Y'){
try {
teamSvc.removeMember(tid);
System.out.println("删除成功");
} catch (TeamException e) {
System.out.println("删除失败,原因:" + e.getMessage());
}
}
public void removeMember(int memberId) throws TeamException {
int j,i;
if (total==0){//判断空指针异常
throw new TeamException("现团队里还没有成员,无法删除!");
}
else {
for (i=0;i<team.length;i++){
if (team[i].getMemberId()==memberId){
team[i].setStatus(true);
// j=i;
for (j=i+1;j<team.length;j++){
if (team[j]!=null){
counter=team[j].getMemberId();
team[j].setMemberId(--counter);
team[j-1]=team[j];
}
else {
break;
}
}
counter++;
total--;
break;
}
}
if (i==team.length){
throw new TeamException("该团队中没有该成员!");
}
}
}
开发项目管理模块
domain包中完成项目实体类的创建
service包中创建项目操作类ProjectService
注意: 主要注意添加项目时项目名称相同不可以以重复添加,并且删除项目时也要注意空指针异常,并且正在被开发的项目不能被删除
ublic void delProject(int id){
boolean fagl=false;
int num=1;
for (int i=0;i<project.size();i++){
if (id==project.get(i).getProId()){
if (project.get(i).getStatus()){
try{
num=0;
fagl=true;
throw new TeamException("删除失败!当前项目正在被开发中!");
}catch (TeamException e){
System.out.println(e.getMessage());
}
}else {
project.remove(i);
for (i=id-1;i<project.size();i++){
project.get(i).setProId(project.get(i).getProId()-1);
}
fagl=true;
}
}
}
if (fagl&&num==1){
System.out.println("删除成功!");
count--;
}
else if (num==1){
try {
throw new TeamException("该项目不存在!");
} catch (TeamException e) {
System.out.println(e.getMessage());
}
}
}
IndexView类的设计
IndexView只要是项目的运行主界面,将前面几个模块的内容装在一起,并运行软件,操作基本功能,调试bug,最后开发完成。
完成以上所有步骤后我们的包内应该有如下的类
当我们编写项目时尽量一个模块做完后先进性调试,最后在将所有模块联系起来然后在进行整个程序的调试。